국기3기 정규수업 8일차 메모

2015. 3. 9. 17:19창고

728x90
728x90

조건문, 반복문, 형변환


조건문 - 참과 거짓을 판별하기 위한 문법.

논리 - 명제 자체를 (프로그램적으로) 명확하게 세워야한다.
ex) 0은 거짓이다.(프로그램적으로 명제를 참으로 정의함.) 1도 참이다. 2도 참이다. 0이 아닌 것은 모두 참이다.


if, if~else, if~else if~else
else는 if가 아닌 모든 경우
if는 생략할 수 없다.


분기문
switch(조건)
{
case 1:
// 실행
break;
...
default:
break;
}

조건 - 정수형이 되어야한다. 실수, 문자열은 안됨!

dafault와 else는 에러처리를 위해 사용.
case lable 에러 - 스위치와 케이스의 변수의 애매함으로 인해 생기는 문제.
괄호를 해주는 습관!

if else 문장은 -> switch문으로 변경할 수 있을까? 99.9% 조건을 어거지로 만들어야 그 경우를 만들 수 있음.

2개 문일 때, if else가 삼항과 switch보다 빠르다.
3개 문일 때, if else if else보단 switch가 쪼끔 빠르다.

goto문 - 라벨을 찾아간다. 편하긴 하지만 코드의 가독성이 떨어진다.


제어문

퍼어문 와일문 두알문
세 글자로 어거지로 만들어서 조건을 만들어줌.

예 - 인벤토리 창 격자 거리


공식을 일반화, 조건과 규칙을 찾는다! 그러면 쉽다!

더미 - 게임용어로 많이 쓰임. 움직임이 없거나 임시로 사용하거나, 의미가 없거나, 동적인 것.


for문

for(초기값;반복조건;증감식) // 교수님이 탈출문이 아니라 반복조건문이라고 파워 강조하셨다!
{ } // 이 블럭문이 반복적으로 생성했다가 소멸한다.
루프가 여러개인 것을 다중루프문
반복조건이 참!일때까지
선조후실! 먼저 조건문을 확인하고 실행! for while
선실후조! 먼저 실행하고 나중에 조건을 체크! 


do~while

초기식

while(반복조건)
{
증감식
}


for VS while

for는 초기값이나 반복조건이 명확할때, 증감조건도 정확하게 보이는것!

while은 무한하게 돌다가 탈출 하는것

필자같은 경우 보통 배열이나 일반 반복문은 for로 포인터 연산은 while로 돌리는 경향이 있다.


while(반복조건)은 반복조건을 생략할 수 없다.

do~ while(반복조건);


형변환(Type Casting, type conversion)

(type) type
(float)int -> int를 잠시 float으로 취급.

- 암묵적 : 프로그래머가 지시하지 않아도 컴파일러가 알아서 처리하는 것.
- 명시적 : 프로그래머가 직접 형변환을 해서 사용하겠다고 명시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
void main()
{
 // if-else문으로
 /*
 int inputNum = 0;
 //  질의1
 printf("연인과 데이트 중 친구가 사진을 찍어주는데 어떤 포즈로 찍을 건가요?\n");
 printf("1. 남자가 여자 어깨를 감싸는 포즈\n");
 printf("2. 서로의 허리를 껴안은 포즈\n");
 printf("3. 재미있는 포즈\n");
 printf("4. 여자가 남자의 팔짱을 끼고 어깨에 기대는 포즈\n");
 printf("당신은 어떤 타입이세요? 번호를 적어주세요!(1~4) : ");
 // 입력
 scanf_s("%d", &inputNum);
 printf("============해석 시작!=============\n");
 if (inputNum == 1)
 {
 printf("1. 남자가 여자 어깨를 감싸는 포즈\n");
 printf("상대가 강하게 밀어붙이면 확 끌려가는 타입으로\n  상대가 적극적으로 대쉬하면 끌려가는 타입\n");
 }
 else if(inputNum == 2)
 {
 printf("2. 서로의 허리를 껴안은 포즈\n");
 printf("상대가 내 사람이다 생각되면\n 애정표현을 잘 안하는 타입\n  상대에게 꾸준히 노력이 필요합니다.\n");
 }
 else if(inputNum == 3)
 {
 printf("3. 재미있는 포즈\n");
 printf("자유분방한 연애스타일로 누군가를 좋아했다가\n  단점이 보이면 쉽게 마음을 돌리는 타입입니다.\n");
 }
 else if(inputNum == 4)
 {
 printf("4. 여자가 남자의 팔짱을 끼고 어깨에 기대는 포즈\n");
 printf("안정적이고 친근한 사랑을 하는 스타일입니다.\n  이성과 편하게 지내는 걸 좋아하는 타입이에요.\n");
 }
 else
 {
 printf("잘못된 번호를 입력하셨습니다.\n");
 }
 printf("============해석 끝!=============\n");
 */
 /*
 // 위의 else if문 switch case로 바꾸기
 int inputNum = 0;
 //  질의1
 printf("연인과 데이트 중 친구가 사진을 찍어주는데 어떤 포즈로 찍을 건가요?\n");
 printf("1. 남자가 여자 어깨를 감싸는 포즈\n");
 printf("2. 서로의 허리를 껴안은 포즈\n");
 printf("3. 재미있는 포즈\n");
 printf("4. 여자가 남자의 팔짱을 끼고 어깨에 기대는 포즈\n");
 printf("당신은 어떤 타입이세요? 번호를 적어주세요!(1~4) : ");
 // 입력
 scanf_s("%d", &inputNum);
 printf("============해석 시작!=============\n");
 switch(inputNum)
 {
 case 1:
 {
 printf("1. 남자가 여자 어깨를 감싸는 포즈\n");
 printf("상대가 강하게 밀어붙이면 확 끌려가는 타입으로\n  상대가 적극적으로 대쉬하면 끌려가는 타입\n");
 break;
 }
 case 2:
 {
 printf("2. 서로의 허리를 껴안은 포즈\n");
 printf("상대가 내 사람이다 생각되면\n  애정표현을 잘 안하는 타입\n    상대에게 꾸준히 노력이 필요합니다.\n");
 break;
 }
 case 3:
 {
 printf("3. 재미있는 포즈\n");
 printf("자유분방한 연애스타일로 누군가를 좋아했다가\n  단점이 보이면 쉽게 마음을 돌리는 타입입니다.\n");
 break;
 }
 case 4:
 {
 printf("4. 여자가 남자의 팔짱을 끼고 어깨에 기대는 포즈\n");
 printf("안정적이고 친근한 사랑을 하는 스타일입니다.\n  이성과 편하게 지내는 걸 좋아하는 타입이에요.\n");
 break;
 }
 default:
 {
 printf("잘못된 번호를 입력하셨습니다.\n");
 break;
 }
 }
 */
 // 정수형
 {
  int inumber = 1000000;
  short snumber = 32767;
  char cnumber = 127;
  long lnumber = 100000;
  // 암묵적(묵시적) 형변환
  // int = short
  inumber = snumber;
  // short = int
  snumber = inumber;
  // char = int
  cnumber = inumber;
 }
 // 실수형
 {
  float fnumber = 10.2f;
  double dnumber = 5.3;
  // double = float
  dnumber = fnumber;
  
  // float = double
  fnumber = dnumber;
  // warning C4244: '=' : 'double'에서 'float'(으)로 변환하면서 데이터가 손실될 수 있습니다.
  // 명시적인 형변환
  fnumber = (float)dnumber;
 }
}
cs

 

 

 


728x90
반응형

'창고' 카테고리의 다른 글

국기3기 정규수업 12일차 메모  (2) 2015.03.15
국기3기 정규수업 11일차 메모  (0) 2015.03.12
국기3기 정규수업 9&10일차 메모  (0) 2015.03.11
20150308 토론정리  (0) 2015.03.08
혼자 연구하는 C/C++ 13장 정리(구조체)  (0) 2015.03.07
20150307 토론정리  (0) 2015.03.07
20150306 토론정리  (2) 2015.03.07