7. while 문의 흐름 제어.

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

데이터의 표현과 연산 (1) (Chapter 3)
프로그래밍실습 제 7 강.
제 1장 C 언어의 소개.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
C언어: 배열 (Arrays).
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
6장. printf와 scanf 함수에 대한 고찰
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
7 while 문의 흐름 제어 조건만 만족한다면 무조건 무한 반복!.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
Chapter 06. 선택문.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
adopted from KNK C Programming : A Modern Approach
13. 포인터와 배열! 함께 이해하기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
자바 5.0 프로그래밍.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
Lecture 03 제어문과 메소드 Kwang-Man Ko
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제23장.
printf("Global Korea\n");
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
배열, 포인터, 함수 Review & 과제 1, 2.
프로그래밍 기법 최적화 프로그래밍.
배열.
11장. 1차원 배열.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

7. while 문의 흐름 제어

이 장에서 다룰 내용 while 문 1. 2. do ~ while 문 기타 제어문 3.

01_while 문 while 문의 실행 순서 조건식이 참인 동안 반복할 문장 수행 중괄호가 끝나는 곳에서 조건식으로 돌아와 같은 동작 반복

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 } 초기값 지정 조건식 증감식

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 } i = 1; 초기값 지정 조건식 i ++; 증감식

01_while 문 무한루프를 위한 while 문 조건식이 무조건 참이어야 함 for( ; ; )와 동일한 역할

[기본예제 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-4] 무한루프를 활용한 계산기 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 { while(1) 무한루프 키보드로 숫자 2개를 입력받음 연산자 입력 switch

[응용예제 7-4] 무한루프를 활용한 계산기 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] 무한루프를 활용한 계산기 33 default : 34 printf("연산자를 잘못 입력했습니다. \n"); 35 } 36 } 37 }

02_do~while 문 do~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 } 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; do 문이므로 한번은 꼭 수행 do 메뉴 출력 메뉴 선택 선택한 메뉴에 따라 주문을 접수

[응용예제 7-6] do~while 문의 사용 예 ② 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 } while 선택한 메뉴가 5가 아닌 동안 계속 수행

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 } 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 } 무한 루프 키보드로 숫자 두 개를 입력받음 입력값이 0이면 무조건 for 문을 빠져나감

[기본예제 7-8] break 문의 사용 예 ② 17 18 printf("0을 입력해서 for 문을 탈출했습니다.\n"); 19 }

[기본예제 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 } 무한루프 i 값 출력 후 1을 더해줌 i 가 10보다 작으면 반복문의 블록을 무조건 빠져나감

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 } 100번 반복 실행 i 값을 hap에 누적 hap이 100보다 크거나 같으면 블록을 빠져나감 블록을 빠져나간 순간의 i 값

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 } 1부터 100까지 반복 나머지 값이 0일 때(3의 배수) 블록의 끝으로 이동 3의 배수가 아닌 i 값 누적 누적된 값 출력

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 } 1부터 100까지 반복 합계 누적 누적된 값이 2000이 넘으면 mygoto로 무조건 이동 mygoto 레이블

03_기타 제어문 호출한 곳으로 돌아가는 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 } 1부터 100까지 반복 합계 누적 출력 현재 함수를 호출한 곳으로 복귀 한 번도 출력되지 않음

[예제모음_16] 원하는 배수의 합계를 구하는 계산기 예제설명 입력한 두 수 사이의 합계를 구하되, 원하는 배수를 선택하여 합계를 구하는 프로그램이다. 100~200 사이의 수 중에서 4의 배수들의 합계를 구함 실행결과

예제모음_16 소스 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 소스 16 i = start; 17 while (i <= end) 18 { 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 } i 값이 끝값보다 작은 동안 반복 입력한 값이 배수라면 합계에 누적 출력

[예제모음_17] 입력한 문자열의 종류 구분하기 예제설명 입력한 문자열에 대문자와 소문자 그리고 숫자가 각각 몇 개 입력되었는 지 세는 프로그램이다. 실행결과

예제모음_17 소스 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 소스 17 18 if(ch >= 'A' && ch <= 'Z') 19 da_cnt++; 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 } A~Z면 대문자 개수 1개 증가 a~z면 소문자 개수 1개 증가 0~9면 숫자 1개 증가 다음 문자를 위해 i 값 증가(+1) 출력

[예제모음_18] 입력한 숫자만큼 별표 출력 실행결과 예제설명 0~9까지 입력한 숫자만큼의 별 모양을 출력하는 프로그램이다. 5914를 입력하면 각 줄에 별을 5개, 9개, 1개, 4개를 출력한다. 실행결과

예제모음_18 소스 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 소스 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 } 문자가 있는 동안 실행 반복 문자를 숫자로 변환(문자 5는 아스키값 53이므로 숫자 4로 만들려면 48을 빼야한다) 별의 개수만큼 * 기호 출력 다음 줄로 넘어감 다음 문자를 알아내기 위해 i 값을 증가시킴

요약 while 문 do ~ while 문 기타 제어문 for 문과 같이 특정 동작의 반복을 위해 사용 while 문의 형식 { 반복할 문장들; } while 문과 거의 동일하지만, 조건과 상관없이 무조건 반복할 문장을 한 번은 수행 do~while 문의 형식 do ~ while 문 do { 반복할 문장들; } while (조건식); break 문 : 현재의 반복문을 무조건 탈출 continue 문 : 무조건 블록의 끝으로 이동한 후 다시 반복문의 처음으로 돌아감 return 문 : 현재 함수를 호출한 곳으로 돌아감. main() 함수에서 return을 만나면 프로그램을 종료 기타 제어문