2.2.1. 제어문의 종류 ¶
문장들의 실행 순서
특별히 지정 안하면 첫 문장부터 시작하여 한 번에 한 문장씩 순차적으로 실행된다.
제어문을 사용하면 이 문장이 실행 되는 순서를 내 맘대로 제어할 수 있다.
종류
조건문 : if문, if-else문, switch 문
반복문 : while문, for문, do-while문
분기문 : goto문, return문, break문, continue문
함수호출
제어문을 사용하면 이 문장이 실행 되는 순서를 내 맘대로 제어할 수 있다.
종류
조건문 : if문, if-else문, switch 문
반복문 : while문, for문, do-while문
분기문 : goto문, return문, break문, continue문
함수호출
2.2.2. 조건문 if ¶
조건문 - 조건식의 결과(부울)에 따라 조건을 수행할 것인지 아닌지를 판단.
if(a < min)
if(a < min){
min = a;
orif(a < min){
min = a;
printf("%d", min);
}printf("%d", min);
if 안에 들어가는 조건에 대해서 참이 나오면 수행하고, 거짓이 나오면 수행하지 않는다.
2.2.3. 조건문 if - else문 ¶
if - else문
if문에 else 절을 추가한 if-else문을 이용해서 여러 가지 조건을 처리할 수 있다.
기본 형식
if (조건식)
e.g.
if(a < b)
if(a < b){ min = a;
}else { min = b;}
기본 형식
if (조건식)
문장 1;
else 문장 2;
조건식이 참이면 문장 1을 실행하고, 거짓이면 문장 2를 실행한다.e.g.
if(a < b)
min = a;
else min = b;
orif(a < b){ min = a;
}else { min = b;}
2.2.4. if - else if ¶
다중 선택을 위한 if문
if(조건식 1)
else if(조건식 n)
if( score >= 90)
else if(score >= 80)
else if(score >= 70)
else if(score >= 60)
else
if(조건식 1)
문장 1;
else if(조건식 2)문장 2;
...else if(조건식 n)
문장 n;
예)if( score >= 90)
else if(score >= 80)
else if(score >= 70)
else if(score >= 60)
else
2.2.6. dangling else problem ¶
중첩된 if문과 관련해서 한 가지 주의해야 할 점은 중첩된 if문 다음에 오는 else절이 어느 if문과 짝이 되는가 하는 것이다,
if(num1 < num2)
if(num1 < num3)
else 절은 항상 그 전에 오는 가장 가까운 작이 없는 if문과 짝이 된다.min = num1;
elsemin = num3;
2.2.7. switch ¶
switch문 - 다중 선택 방법을 제공한다.(정수 값에 따라 여러 경로 중에서 한 경로를 선택할 수 있다.)
문자형을 포함하여 정수형 수식만 사용할 수 있다.
switch(수식){
case 상수 1: 문장들 1
case 상수 2: 문장들 2
...
case 상수 n: 문장들 n
default : 문장들 n+1
}case 상수 2: 문장들 2
...
case 상수 n: 문장들 n
default : 문장들 n+1
(1) 수식의 값을 계산한다.
(2) 수식의 값이 각 case의 상수 값과 같은지 차례대로 검사한다.
(3) 일치된 case값이 있으면 그 case 절의 문장들을 실행한다.
(2) 수식의 값이 각 case의 상수 값과 같은지 차례대로 검사한다.
(3) 일치된 case값이 있으면 그 case 절의 문장들을 실행한다.
(3.1) case 절의 마지막 문장이 break 이면 switch 문을 빠져나온다.
(3.2) 그렇지 않은 경우에는 다음 case 절의 문장들을 실행한다.
(4) 일치된 case 값이 없으면 default 절의 문장들을 실행한다.(3.2) 그렇지 않은 경우에는 다음 case 절의 문장들을 실행한다.
2.2.8. 반복문(루프) while ¶
while문
while(조건식)
문장 1;
조건식이 참이면 본체를 다시 실행, 거짓이면 while문을 종료while(count <= 100){
total = total + count;
count = count + 2;
}count = count + 2;
2.2.9. do while ¶
do while문
do{ 문장 1;
...
문장 n;
}while(조건식);문장 n;
조건이 루프의 끝에 위치하므로, 루프 본체를 먼저 실행하고, 조건을 검사하여 그 값이 참인 동안 반복한다.
do - while은 적어도 한 번 실행된다.
do - while은 적어도 한 번 실행된다.
do{
}while()
}while()
2.2.10. for ¶
for문 - 루프의 반복 횟루를 알고 있을 때 적합한 반복문이다.
for(수식 1; 수식 2; 수식 3)
수식 2 - 부울 조건식/ 루프 본체를 실행하기 전에 조건이 참이면 본체를 실행, 거짓이면 루프를 벗어난다.
수식 3 - 조건식에 사용된 변수를 증가시키거나 감소시키기 위한 식으로 루프의 각 반복후 실행
for(수식 1; 수식 2; 수식 3)
문장
수식 1 - 초기화를 위한 수식/ 루프를 시작하기 전에 실행한다.수식 2 - 부울 조건식/ 루프 본체를 실행하기 전에 조건이 참이면 본체를 실행, 거짓이면 루프를 벗어난다.
수식 3 - 조건식에 사용된 변수를 증가시키거나 감소시키기 위한 식으로 루프의 각 반복후 실행
* 초기화 부분은 처음에 한 번만 실행하고, 수식 2,3 은 루프의 반복 전후에 실행된다,
2.2.11. nested loop ¶
오늘 실습한 별로 사각형 찍기.
#include<stdio.h> int main(){ int n, i, j; scanf("%d", &n); for(i = 0; i<n; i++){ for(j = 0; j<n; j++){ printf("*"); } printf("\n"); } return 0; }
2.3.1. 1번 ¶
숫자 n을 입력받고, 입력 받은 n 값에 대응하는 삼각형을 출력하시오. 5 //n * ** *** **** ***** // 대응하는 삼각형 3 * ** ***
2.3.2. 2번 ¶
숫자 n을 입력받고, 입력 받은 n 값에 대응하는 사각형을 출력하시오. 5 // n 00000* 0000** 000*** 00**** 0***** // 출력 3 000* 00** 0***
2.3.3. 3번 ¶
숫자 n을 입력받고, 입력 받은 n 값에 대응하는 삼각형을 출력하시오 5 //n * ** *** **** ***** //출력 3 * ** ***
힌트 : 공백도 문자입니다. (스페이스)
2.3.4. 4번 ¶
숫자 key와 n을 입력받고, 입력 받은 두 값에 대응하는 도형을 출력하시오.
key값이 1이면 * ** *** 모양 key값이 2이면 000* 00** 0*** 모양 key값이 3이면 * ** *** 모양을 출력합니다. 2 // key 3 // n @@@* @@** @*** //출력 1 4 * ** *** ****
3. 후기 작성 요령 ¶
후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
관련 페이지 : ThreeFs, ThreeFs(노스모크), FiveFs(노스모크)
링크를 눌러보기조차 귀찮은 당신을 위한 간단한 설명
Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
관련 페이지 : ThreeFs, ThreeFs(노스모크), FiveFs(노스모크)
링크를 눌러보기조차 귀찮은 당신을 위한 간단한 설명
Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
4.1. 권영기 ¶
오늘은 제어문에 대해서 배워봤습니다. 지난 시간에 제가 새싹들에게 잘못된 지식을 알려줬는데 의정이형이 그 것을 알려주어서 불상사를 피했습니다.(의정이형 고마워요) 이번 시간은 실습도 많이 많이 시키려고 했는데 시간 배분이 잘 안되서 그런지 실습도 많이 하지 못하고, 수업도 늦게 끝나서 후기를 여유있게 작성하지 못했네요. 5분 전에 끝내서 여유 있게 후기를 작성하려는 시도가 실패했습니다. (...) 그리고 for문을 설명하면서, 설명 예제로는 구구단을 말해 놓고, 실습은 *로 사각형을 찍으라고 했는데 이 시도는 실패한 것 같습니다. 실습도 설명 예제와 연관된 것으로 해야 이해가 더 잘될 거라는 것을 깨달았네요. 다음에는 설명 예제와 실습 예제를 더욱 충실히 준비해와야 할 것 같습니다. 그리고 시간 안배도 잘 해야겠네요.