(학생용)+프로그래밍+및+실습 Chap4 3

1,169 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,169
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

(학생용)+프로그래밍+및+실습 Chap4 3

  1. 1. 2009년 1학기 프로그래밍 및 실습Chap. 4-3 조건문 (while & do~while)<br />Bo-Kug Seo (sbk8941@mms.ssu.ac.kr)<br />Soongsil Univ. MMS Lab.<br />
  2. 2. 이 장에서 다룰 내용<br />while문<br />do ~ while문<br />기타 제어문<br />
  3. 3. while 문<br />while 문의 실행 순서<br />조건식이 참인 동안 반복할 문장 수행<br />중괄호가 끝나는 곳에서 조건식으로 돌아와 같은 동작 반복<br />
  4. 4. while 문<br />for 문과 while 문의 사용 형식 비교<br />0~9까지 출력하는 예<br />int i;<br />for(i=0; i<10; i++)<br />{<br /> printf(“%d ”, i);<br />}<br /> 초기값을 for 문 밖으로 이동<br /> 증감식을 for 문의 끝으로 이동<br />for를 while로 <br />int i;<br />i = 0;<br />while(i<10)<br />{<br /> printf(“%d ”, i);<br /> i++;<br />}<br />
  5. 5. [기본예제 4-19] for 문을 while 문으로 바꾸기<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int i;<br />06 i=0;<br />07<br />08 while ( i < 5 ){<br />09 printf("while 문을 공부합니다. ");<br />10 i++;<br />11 }<br />12 }<br />초기값 지정<br />조건식<br />증감식<br />
  6. 6. while 문<br />for 문을 while 문으로 변환하는 방법<br />
  7. 7. [기본예제 4-20] for 문을 while 문으로 바꾸기<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int hap=0;<br />06 int i;<br />07<br />08 [ ① ]<br />09 while ( i<=10 ) {<br />10 hap = hap + i;<br />11 [ ② ]<br />12 }<br />13<br />14 printf(" 1에서 10까지의 합: %d ", hap);<br />15 }<br />i = 1;<br />초기값 지정<br />조건식<br />i ++;<br />증감식<br />
  8. 8. while 문<br />무한루프를 위한 while 문<br />조건식이 무조건 참이어야 함<br />for( ; ; )와 동일한 역할<br />while(1) 로 표현<br />
  9. 9. [기본예제 4-21] while 문의 무한루프 만들기<br />무한루프<br />입력 값을 공백으로 분리<br />출력<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int a, b;<br />06<br />07 while ( 1 )<br />08 {<br />09 printf ("더할 두 수 입력 (멈추려면 Ctrl+C) : ") ;<br />10 scanf("%d %d", &a, &b);<br />11<br />12 printf("%d + %d = %d ", a, b, a+b);<br />13 }<br />14 }<br />
  10. 10. [응용예제] 무한루프를 활용한 계산기 -1<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int a, b;<br />06 char ch;<br />07<br />08 [ ① ]<br />09 {<br />10 printf ("계산할 두 수를 입력 (멈추려면 Ctrl+C) : ") ;<br />11 scanf("%d %d", &a, &b);<br />12<br />13 printf("계산할 연산자를 입력하세요 : ");<br />14 scanf("%*c%c", &ch);<br />15<br />16 [ ② ](ch)<br />17 {<br />while(1)<br />무한루프<br />키보드로 숫자 2개를 입력받음<br />연산자 입력<br />switch<br />
  11. 11. [응용예제] 무한루프를 활용한 계산기 -2<br />18 case '+' :<br />19 printf("%d + %d = %d 입니다. ", a, b, a+b);<br />20 break;<br />21 case '-' :<br />22 printf("%d - %d = %d 입니다. ", a, b, a-b);<br />23 break;<br />24 case '*' :<br />25 printf("%d * %d = %d 입니다. ", a, b, a*b);<br />26 break;<br />27 case '/' :<br />28 printf("%d / %d = %f 입니다. ", a, b, a/(float)b);<br />29 break;<br />30 case '%' :<br />31 printf("%d %% %d = %d 입니다. ", a, b, a%b);<br />32 break;<br />
  12. 12. [응용예제] 무한루프를 활용한 계산기 -3<br />33 default :<br />34 printf("연산자를 잘못 입력했습니다. ");<br />35 }<br />36 }<br />37 }<br />
  13. 13. do~while 문<br />do~while 문<br />조건식을 확인하기 전에 ‘반복할 문장’을 수행  무조건 한 번은 실행됨<br />형식은 while 문과 동일하지만, 조건식이 아래에 위치<br />
  14. 14. [기본예제 4-22] do~while 문의 사용 예<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int a = 100;<br />06<br />07 while ( a == 200 )<br />08 {<br />09 printf ("while 문 내부에 들어 왔습니다. ") ;<br />10 }<br />11<br />12 do {<br />13 printf ("do ~ while 문 내부에 들어 왔습니다. ") ;<br />14 } while ( a == 200 ) ;<br />15 }<br />while 문 실행 : <br />조건식 먼저 판단<br />do~while 문 실행 :먼저 실행한 후에 조건식 판단<br />
  15. 15. [응용예제] do~while 문의 사용 예 -1<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int menu;<br />06<br />07 [ ① ]{<br />08 printf(" 손님 주문하시겠습니까 ? ");<br />09 printf("<1> 스테이크 <2> 스파게티 <3> 물 ");<br />10 printf("<4> 빵 <5> 그만 시킬래요 ==> ");<br />11 scanf("%d", &menu);<br />12<br />13 switch(menu)<br />14 {<br />15 case 1 : printf("#스테이크 알겠습니다. "); break;<br />do 문이므로 한번은 꼭 수행<br />do<br />메뉴 출력<br />메뉴 선택<br />선택한 메뉴에 따라 주문을 접수<br />
  16. 16. [응용예제] do~while 문의 사용 예 -2<br />16 case 2 : printf("#스파게티 알겠습니다. "); break;<br />17 case 3 : printf("#물 알겠습니다. "); break;<br />18 case 4 : printf("#빵 알겠습니다. "); break;<br />19 case 5 : printf("안녕히 가세요. "); break;<br />20 default : printf("잘못 주문하셨습니다. ");<br />21 }<br />22 } [ ② ](menu != 5);<br />23 }<br />[위의 응용예제]<br />선택한 메뉴가 5가 아닌 동안 계속 수행<br />while<br />
  17. 17. 기타 제어문<br />break 문<br />for, while, do~while과 같은 반복문을 탈출할 때 사용<br />if 문과 결합하여 무한루프 안에 사용<br />무한루프를 돌다 특정 조건을 만족하면 프로그램을 종료하는 역할<br />
  18. 18. [기본예제 4-23] break 문의 사용 예 <br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int i;<br />06<br />07 for( i=1 ; i<=100 ; i++)<br />08 {<br />09 printf("for 문을 %d 회 실행했습니다. ", i);<br />10 break;<br />11 }<br />12<br />13 printf("for 문을 종료했습니다. ");<br />14 }<br />100번 반복<br />출력<br />무조건 for 문을 빠져나감<br />
  19. 19. [기본예제 4-24] break 문의사용 예 <br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int a, b;<br />06<br />07 while ( 1 )<br />08 {<br />09 printf ("더할 두 수 입력(멈추려면 0을 입력) : ") ;<br />10 scanf("%d %d", &a, &b);<br />11<br />12 if (a == 0)<br />13 break;<br />14<br />15 printf("%d + %d = %d ", a, b, a+b);<br />16 }<br />무한 루프<br />키보드로 숫자 두 개를 입력받음<br />입력값이 0이면 무조건 for 문을 빠져나감<br />
  20. 20. [기본예제 4-24] break 문의사용 예<br />17<br />18 printf("0을 입력해서 for 문을 탈출했습니다. ");<br />19 }<br />
  21. 21. [기본예제 4-25] break 문의 사용 예 <br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int i;<br />06 i = 0;<br />07 for ( ; ; )<br />08 {<br />09 printf (" %d ", i) ;<br />10 i ++ ;<br />11 if (i < 10)<br />12 { break; }<br />13 }<br />14<br />15 }<br />무한루프<br />i 값 출력 후 1을 더해줌<br />i 가 10보다 작으면 반복문의 블록을 무조건 빠져나감<br />
  22. 22. 기타 제어문<br />break 문의 탈출 범위<br />현재 실행중인 반복문 블록을 무조건 빠져나오는 명령문<br />[기본예제 7-9]의 수정<br />i 값이 0부터 시작하므로 첫번째 루프를 돌 때 프로그램 종료<br />1~9까지 출력하려면 부등호를 수정해야 함<br />for( ; ; )<br />{<br /> ...<br /> if(i < 10)<br /> { break; }<br />}<br />??<br />
  23. 23. [응용예제] break 문의 사용 예<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int hap = 0;<br />06 int i;<br />07<br />08 for ( i=1 ; i<=100 ; i++)<br />09 {<br />10 hap = hap + i;<br />11<br />12 if (hap>=100)<br />13 break;<br />14 }<br />15<br />16 printf(" 1~100의 합에서 최초로 1000이 넘는 위치는? : %d ", i);<br />17 }<br />100번 반복 실행<br />i 값을 hap에 누적<br />hap이 100보다 크거나 같으면 블록을 빠져나감<br />블록을 빠져나간 순간의 i 값<br />
  24. 24. 기타 제어문<br />블록의 끝으로 가는 continue 문<br />블록의 끝으로 이동한 후 반복문을 처음부터 다시 수행<br />
  25. 25. [기본예제 4-26] continue 문의 사용 예<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int hap = 0;<br />06 int i;<br />07<br />08 for ( i=1 ; i<=100 ; i++ )<br />09 {<br />10 if ( i % 3 == 0 )<br />11 continue;<br />12<br />13 hap += i;<br />14 }<br />15<br />16 printf(" 1~100까지의 합(3의 배수 제외): %d ", hap);<br />17 }<br />1부터 100까지 반복<br />나머지 값이 0일 때(3의 배수) 블록의 끝으로 이동<br />3의 배수가 아닌 i 값 누적<br />누적된 값 출력<br />
  26. 26. 기타 제어문<br />지정한 위치로 이동하는 goto 문<br />지정된 레이블(label)로 건너뛰게 하는 명령문<br />프로그램의 흐름을 복잡하게 만드는 단점이 있음<br />
  27. 27. [기본예제 4-27] goto 문의 사용 예<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int hap = 0;<br />06 int i;<br />07<br />08 for( i=1 ; i<=100 ; i++)<br />09 {<br />10 hap += i;<br />11<br />12 if (hap > 2000)<br />13 goto mygoto;<br />14 }<br />15<br />16 mygoto :<br />17 printf ("1부터 %d까지 합하면 2000이 넘어요. ", i);<br />18 }<br />1부터 100까지 반복<br />합계 누적<br />누적된 값이 2000이 넘으면 mygoto로 무조건 이동<br />mygoto 레이블<br />
  28. 28. 기타 제어문<br />호출한 곳으로 돌아가는 return 문<br />현재 실행중인 함수를 끝내고, 해당 함수를 호출한 곳으로 돌아가게 함<br />return 문을 만나면 프로그램이 종료되는 효과<br />
  29. 29. [기본예제 4-28] return 문의 사용 예<br />01 #include <stdio.h><br />02<br />03 int main()<br />04 {<br />05 int hap = 0;<br />06 int i;<br />07<br />08 for( i=1 ; i<=100 ; i++)<br />09 hap += i;<br />10<br />11 printf("1부터 100까지의 합은 %d 입니다. ", hap);<br />12 return 0;<br />13<br />14 printf("프로그램의 끝입니다.");<br />15 }<br />1부터 100까지 반복<br />합계 누적<br />출력<br />현재 함수를 호출한 곳으로 복귀<br />한 번도 출력되지 않음<br />
  30. 30. [예제모음 1] 원하는 배수의 합계를 구하는 계산기<br />예제설명<br />입력한 두 수 사이의 합계를 구하되, 원하는 배수를 선택하여 합계를 구하는 프로그램이다.<br /><ul><li>100~200 사이의 수 중에서 4의 배수들의 합계를 구함</li></ul>실행결과<br />
  31. 31. 요약<br />for 문과 같이 특정 동작의 반복을 위해 사용<br />while 문의 형식<br />while 문<br />while ( 초기값)<br />{<br /> 반복할 문장들;<br />}<br />while 문과 거의 동일하지만, 조건과 상관없이 무조건 반복할 문장을 한 번은 수행<br />do~while 문의 형식<br />do ~ while 문<br />do<br />{<br />반복할 문장들;<br />} while (조건식);<br />break 문 : 현재의 반복문을 무조건 탈출<br />continue 문 : 무조건 블록의 끝으로 이동한 후 다시 반복문의 처음으로 돌아감<br />return 문 : 현재 함수를 호출한 곳으로 돌아감.<br /><ul><li>main() 함수에서 return을 만나면 프로그램을 종료</li></ul>기타 제어문<br />

×