7. while
Download
1 / 39

7. while ?? ?? ?? - PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on

7. while 문의 흐름 제어. while 문. 기타 제어문. 1. 3. 이 장에서 다룰 내용. do ~ while 문. 2. 01_while 문. while 문의 실행 순서 조건식이 참인 동안 반복할 문장 수행 중괄호가 끝나는 곳에서 조건식으로 돌아와 같은 동작 반복. 01_while 문. for 문과 while 문의 사용 형식 비교 0~9 까지 출력하는 예. int i; for(i=0; i<10; i++) { printf(“%d \n”, i); }.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '7. while ?? ?? ??' - yvonne-gilliam


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
7 while

7. while 문의 흐름 제어


7 while

while

기타 제어문

1.

3.

이 장에서 다룰 내용

do ~ while 문

2.


01 while
01_while

  • while 문의 실행 순서

    • 조건식이 참인 동안 반복할 문장 수행

    • 중괄호가 끝나는 곳에서 조건식으로 돌아와 같은 동작 반복


01 while1
01_while

  • for 문과 while 문의 사용 형식 비교

    • 0~9까지 출력하는 예

int i;

for(i=0; i<10; i++)

{

printf(“%d \n”, i);

}

  • 초기값을 for 문 밖으로 이동

  • 증감식을 for 문의 끝으로 이동

  • for를 while로

int i;

i = 0;

while(i<10)

{

printf(“%d \n”, i);

i++;

}


7 1 for while

01 #include <stdio.h>

02

03 int main()

04 {

05 int i;

06 i=0;

07

08 while ( i < 5 ){

09 printf("while 문을 공부합니다.\n");

10 i++;

11 }

12 }

[기본예제 7-1] for 문을 while 문으로 바꾸기 ①

초기값 지정

조건식

증감식


01 while2
01_while

  • for 문을 while 문으로 변환하는 방법


7 2 for while

01 #include <stdio.h>

02

03 int main()

04 {

05 int hap=0;

06 int i;

07

08 [ ① ]

09 while ( i<=10 ) {

10 hap = hap + i;

11 [ ② ]

12 }

13

14 printf(" 1에서 10까지의 합: %d \n", hap);

15 }

[기본예제 7-2] for 문을 while 문으로 바꾸기 ②

i = 1;

초기값 지정

조건식

i ++;

증감식


01 while3
01_while

  • 무한루프를 위한 while 문

    • 조건식이 무조건 참이어야 함

    • for( ; ; )와 동일한 역할

    • while(1) 로 표현


7 3 while

01 #include <stdio.h>

02

03 int main()

04 {

05 int a, b;

06

07 while ( 1 )

08 {

09 printf ("더할 두 수 입력 (멈추려면 Ctrl+C) : ") ;

10 scanf("%d %d", &a, &b);

11

12 printf("%d + %d = %d \n", a, b, a+b);

13 }

14 }

[기본예제 7-3] while 문의 무한루프 만들기

무한루프

입력 값을 공백으로 분리

출력


7 while

01 #include <stdio.h>

02

03 int main()

04 {

05 int a, b;

06 char ch;

07

08 [ ① ]

09 {

10 printf ("계산할 두 수를 입력 (멈추려면 Ctrl+C) : ") ;

11 scanf("%d %d", &a, &b);

12

13 printf("계산할 연산자를 입력하세요 : ");

14 scanf("%*c%c", &ch);

15

16 [ ② ](ch)

17 {

[응용예제 7-4] 무한루프를 활용한 계산기

while(1)

무한루프

키보드로 숫자 2개를 입력받음

연산자 입력

switch


7 while

18 case '+' :

19 printf("%d + %d = %d 입니다. \n", a, b, a+b);

20 break;

21 case '-' :

22 printf("%d - %d = %d 입니다. \n", a, b, a-b);

23 break;

24 case '*' :

25 printf("%d * %d = %d 입니다. \n", a, b, a*b);

26 break;

27 case '/' :

28 printf("%d / %d = %f 입니다. \n", a, b, a/(float)b);

29 break;

30 case '%' :

31 printf("%d %% %d = %d 입니다. \n", a, b, a%b);

32 break;

[응용예제 7-4] 무한루프를 활용한 계산기


7 while

33 default :

34 printf("연산자를 잘못 입력했습니다. \n");

35 }

36 }

37 }

[응용예제 7-4] 무한루프를 활용한 계산기


02 do while
02_do~while

  • do~while 문

    • 조건식을 확인하기 전에 ‘반복할 문장’을 수행  무조건 한 번은 실행됨

    • 형식은 while 문과 동일하지만, 조건식이 아래에 위치


7 5 do while

01 #include <stdio.h>

02

03 int main()

04 {

05 int a = 100;

06

07 while ( a == 200 )

08 {

09 printf ("while 문 내부에 들어 왔습니다.\n") ;

10 }

11

12 do {

13 printf ("do ~ while 문 내부에 들어 왔습니다.\n") ;

14 } while ( a == 200 ) ;

15 }

[기본예제 7-5] do~while 문의 사용 예 ①

while 문 실행 :

조건식 먼저 판단

do~while 문 실행 :먼저 실행한 후에 조건식 판단


7 6 do while

01 #include <stdio.h>

02

03 int main()

04 {

05 int menu;

06

07 [ ① ]{

08 printf("\n손님 주문하시겠습니까 ? \n");

09 printf("<1> 스테이크 <2> 스파게티 <3> 물 ");

10 printf("<4> 빵 <5> 그만 시킬래요 ==> ");

11 scanf("%d", &menu);

12

13 switch(menu)

14 {

15 case 1 : printf("#스테이크 알겠습니다.\n"); break;

[응용예제 7-6] do~while 문의 사용 예 ②

do 문이므로 한번은 꼭 수행

do

메뉴 출력

메뉴 선택

선택한 메뉴에 따라 주문을 접수


7 6 do while1

16 case 2 : printf("#스파게티 알겠습니다.\n"); break;

17 case 3 : printf("#물 알겠습니다.\n"); break;

18 case 4 : printf("#빵 알겠습니다.\n"); break;

19 case 5 : printf("안녕히 가세요.\n"); break;

20 default : printf("잘못 주문하셨습니다.\n");

21 }

22 } [ ② ](menu != 5);

23 }

[응용예제 7-6] do~while 문의 사용 예 ②

while

선택한 메뉴가 5가 아닌 동안 계속 수행


7 while
03_기타 제어문

  • break 문

    • for, while, do~while과 같은 반복문을 탈출할 때 사용

    • if 문과 결합하여 무한루프 안에 사용

      • 무한루프를 돌다 특정 조건을 만족하면 프로그램을 종료하는 역할


7 7 break

01 #include <stdio.h>

02

03 int main()

04 {

05 int i;

06

07 for( i=1 ; i<=100 ; i++)

08 {

09 printf("for 문을 %d 회 실행했습니다.\n", i);

10 break;

11 }

12

13 printf("for 문을 종료했습니다.\n");

14 }

[기본예제 7-7] break 문의 사용 예 ①

100번 반복

출력

무조건 for 문을 빠져나감


7 8 break

01 #include <stdio.h>

02

03 int main()

04 {

05 int a, b;

06

07 while ( 1 )

08 {

09 printf ("더할 두 수 입력(멈추려면 0을 입력) : ") ;

10 scanf("%d %d", &a, &b);

11

12 if (a == 0)

13 break;

14

15 printf("%d + %d = %d \n", a, b, a+b);

16 }

[기본예제 7-8] break 문의사용 예 ②

무한 루프

키보드로 숫자 두 개를 입력받음

입력값이 0이면 무조건 for 문을 빠져나감


7 8 break1

17

18 printf("0을 입력해서 for 문을 탈출했습니다.\n");

19 }

[기본예제 7-8] break 문의사용 예 ②


7 9 break

01 #include <stdio.h>

02

03 int main()

04 {

05 int i;

06 i = 0;

07 for ( ; ; )

08 {

09 printf (" %d \n", i) ;

10 i ++ ;

11 if (i < 10)

12 { break; }

13 }

14

15 }

[기본예제 7-9] break 문의 사용 예 ③

무한루프

i 값 출력 후 1을 더해줌

i 가 10보다 작으면 반복문의 블록을 무조건 빠져나감


7 while
03_기타 제어문

  • break 문의 탈출 범위

    • 현재 실행중인 반복문 블록을 무조건 빠져나오는 명령문

    • [기본예제 7-9]의 수정

      • i 값이 0부터 시작하므로 첫번째 루프를 돌 때 프로그램 종료

      • 1~9까지 출력하려면 부등호를 수정해야 함

if (i >= 10)

for( ; ; )

{

...

if(i < 10)

{ break; }

}


7 10 break

01 #include <stdio.h>

02

03 int main()

04 {

05 int hap = 0;

06 int i;

07

08 for ( i=1 ; i<=100 ; i++)

09 {

10 hap = hap + i;

11

12 if ( )

13 break;

14 }

15

16 printf(" 1~100의 합에서 최초로 1000이 넘는 위치는? : %d\n", i);

17 }

[응용예제 7-10] break 문의 사용 예 ④

100번 반복 실행

i 값을 hap에 누적

hap이 100보다 크거나 같으면 블록을 빠져나감

블록을 빠져나간 순간의 i 값


7 while
03_기타 제어문

  • 블록의 끝으로 가는 continue 문

    • 블록의 끝으로 이동한 후 반복문을 처음부터 다시 수행


7 11 continue

01 #include <stdio.h>

02

03 int main()

04 {

05 int hap = 0;

06 int i;

07

08 for ( i=1 ; i<=100 ; i++ )

09 {

10 if ( i % 3 == 0 )

11 continue;

12

13 hap += i;

14 }

15

16 printf(" 1~100까지의 합(3의 배수 제외): %d\n", hap);

17 }

[기본예제 7-11] continue 문의 사용 예

1부터 100까지 반복

나머지 값이 0일 때(3의 배수) 블록의 끝으로 이동

3의 배수가 아닌 i 값 누적

누적된 값 출력


7 while
03_기타 제어문

  • 지정한 위치로 이동하는 goto 문

    • 지정된 레이블(label)로 건너뛰게 하는 명령문

    • 프로그램의 흐름을 복잡하게 만드는 단점이 있음


7 12 goto

01 #include <stdio.h>

02

03 int main()

04 {

05 int hap = 0;

06 int i;

07

08 for( i=1 ; i<=100 ; i++)

09 {

10 hap += i;

11

12 if (hap > 2000)

13 goto mygoto;

14 }

15

16 mygoto :

17 printf ("1부터 %d까지 합하면 2000이 넘어요.\n", i);

18 }

[기본예제 7-12] goto 문의 사용 예

1부터 100까지 반복

합계 누적

누적된 값이 2000이 넘으면 mygoto로 무조건 이동

mygoto 레이블


7 while
03_기타 제어문

  • 호출한 곳으로 돌아가는 return 문

    • 현재 실행중인 함수를 끝내고, 해당 함수를 호출한 곳으로 돌아가게 함

    • return 문을 만나면 프로그램이 종료되는 효과


7 13 return

01 #include <stdio.h>

02

03 int main()

04 {

05 int hap = 0;

06 int i;

07

08 for( i=1 ; i<=100 ; i++)

09 hap += i;

10

11 printf("1부터 100까지의 합은 %d 입니다.\n", hap);

12 return 0;

13

14 printf("프로그램의 끝입니다.");

15 }

[기본예제 7-13] return 문의 사용 예

1부터 100까지 반복

합계 누적

출력

현재 함수를 호출한 곳으로 복귀

한 번도 출력되지 않음


7 while
[예제모음_16] 원하는 배수의 합계를 구하는 계산기

  • 예제설명

  • 입력한 두 수 사이의 합계를 구하되, 원하는 배수를 선택하여 합계를 구하는 프로그램이다.

    • 100~200 사이의 수 중에서 4의 배수들의 합계를 구함

실행결과


7 while

01 #include <stdio.h>

02

03 int main()

04 {

05 int start, end;

06 int basu, i;

07 int hap = 0;

08

09 printf("합계의 시작값 ==> ");

10 scanf("%d", &start);

11 printf("합계의 끝값 ==> ");

12 scanf("%d", &end);

13 printf("배수 ==> ");

14 scanf("%d", &basu);

15

예제모음_16 소스

변수 선언과 초기화

시작값, 끝값, 배수값 입력


7 while

16 i = start;

17 while (i <= end)

18 {

19 if (i % basu == 0)

20 hap = hap + i;

21

22 i++;

23 }

24 printf("%d부터 %d까지의 %d배수의 합계 ==> %d\n", start, end, basu, hap);

25 }

예제모음_16 소스

i 값이 끝값보다 작은 동안 반복

입력한 값이 배수라면 합계에 누적

출력


7 while
[예제모음_17] 입력한 문자열의 종류 구분하기

  • 예제설명

  • 입력한 문자열에 대문자와 소문자 그리고 숫자가 각각 몇 개 입력되었는 지 세는 프로그램이다.

실행결과


7 while

01 #include <stdio.h>

02

03 int main()

04 {

05 char str[100];

06 char ch;

07

08 int da_cnt = 0, so_cnt=0, digit_cnt=0;

09 int i;

10

11 printf("문자열을 입력(100자 이내) : ");

12 scanf("%s", str);

13

14 i = 0;

15 do {

16 ch = str[i];

예제모음_17 소스

문자열 배열과 문자형 변수 선언

대소문자, 숫자 개수 초기화

문자열 입력받기

입력받은 문자열에서 공백이 나오기 전까지 각 문자의 종류를 구분

문자열에서 한 글자 추출


7 while

17

18 if(ch >= 'A' && ch <= 'Z')

19 da_cnt++;

20 if(ch >= 'a' && ch <= 'z')

21 so_cnt++;

22 if(ch >= '0' && ch <= '9')

23 digit_cnt++;

24

25 i++;

26 } while (ch != '\0');

27

28 printf("대문자 %d개, 소문자 %d개, 숫자 %d개\n", da_cnt, so_cnt, digit_cnt);

29 }

예제모음_17 소스

A~Z면 대문자 개수 1개 증가

a~z면 소문자 개수 1개 증가

0~9면 숫자 1개 증가

다음 문자를 위해 i 값 증가(+1)

출력


7 while
[예제모음_18] 입력한 숫자만큼 별표 출력

  • 예제설명

  • 0~9까지 입력한 숫자만큼의 별 모양을 출력하는 프로그램이다.

    • 5914를 입력하면 각 줄에 별을 5개, 9개, 1개, 4개를 출력한다.

실행결과


7 while

01 #include <stdio.h>

02

03 int main()

04 {

05 char str[100];

06 char ch;

07

08 int i, k;

09 int star;

10

11 printf("숫자를 여러 개 입력 : ");

12 scanf("%s", str);

13

14 i = 0;

15 ch = str[i];

예제모음_18 소스

문자열 배열과 문자형 변수 선언

정수형 변수 선언

문자열 입력

첫 문자 추출


7 while

16 while (ch != '\0') {

17 star = (int)ch - 48;

18

19 for(k=0 ; k<star ; k++)

20 printf("*");

21

22 printf("\n");

23 i = i + 1;

24 ch = str[i];

25 }

26 }

예제모음_18 소스

문자가 있는 동안 실행 반복

문자를 숫자로 변환(문자 5는 아스키값 53이므로 숫자 4로 만들려면 48을 빼야한다)

별의 개수만큼 * 기호 출력

다음 줄로 넘어감

다음 문자를 알아내기 위해 i 값을 증가시킴


7 while
요약

  • for 문과 같이 특정 동작의 반복을 위해 사용

  • while 문의 형식

while 문

while ( 초기값)

{

반복할 문장들;

}

  • while 문과 거의 동일하지만, 조건과 상관없이 무조건 반복할 문장을 한 번은 수행

  • do~while 문의 형식

do ~ while 문

do

{

반복할 문장들;

} while (조건식);

  • break 문 : 현재의 반복문을 무조건 탈출

  • continue 문 : 무조건 블록의 끝으로 이동한 후 다시 반복문의 처음으로 돌아감

  • return 문 : 현재 함수를 호출한 곳으로 돌아감.

    • main() 함수에서 return을 만나면 프로그램을 종료

기타 제어문


ad