C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.

Slides:



Advertisements
Similar presentations
C 언어 컴퓨터학과 C 언어 ( STS ) (Chap5. Selection-Making Decisions ) C 언어.
Advertisements

제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
2007 1학기 12 배열.
제 3 장 변수와 자료형.
프로그래밍실습 제 7 강.
제 1장 C 언어의 소개.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
7. while 문의 흐름 제어.
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
변수와 자료형.
내용 프로그래밍 언어(programming language) C 언어란?? C 언어 역사 C 언어 특징 C 프로그램의 구조
Chapter 3 Flow of Control
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
4주차: Data Types and Functions
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
처음으로 배우는 C 프로그래밍 제2부 기초 제4장 선택문.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 08 조건문.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
-Part2- 제2장 다차원 배열이란 무엇인가.
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
제5장 디버깅과 추적 문봉근.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
배열, 포인터, 함수 Review & 과제 1, 2.
프로그래밍 기법 최적화 프로그래밍.
Presentation transcript:

C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의

목차 5.1 선택문 5.2 분기문 5.3 반복문 5.4 블록문 if 문 ? 문 switch 문 return 문 break 문 continue 문 goto 문 5.3 반복문 for 문 while 문 do-while 문 5.4 블록문 Hominidae.: 진원류 2

Ch05. 명령문 5.1 선택문 if문 if문의 일반 형식 statement는 하나의 명령문, 명령문들의 블록, 또는 (비어 있는 명령문일 때) 아무 것도 없이 구성될 수 있으며, else절은 선택사항 만일 expression이 참이라면, 특정 명령문 또는 명령 블록이 실행되고, else절의 특정 명령문 또는 명령 블록이 실행 실행은 if문에만 연관된 코드 또는 else문에만 연관된 코드 중 하나가 실행되며, 이들 모두가 실행되는 것은 아님 if (expression) statement; else statement; Hominidae.: 진원류 3

5.1 선택문 [따라하기1] Ch05. 명령문 121 Enter #include <stdio.h> int main(void) { int number; printf("숫자를 입력하세요 : "); scanf("%d", &number); if(number%2 ==1) /* number를 나눈 나머지가 1일 때만 다음 문장이 실행 */ printf("입력하신 숫자는 홀수 입니다.\n"); if(number%2 == 0) /* number를 나눈 나머지가 0일 때만 다음 문장이 실행 */ printf("입력하신 숫자는 짝수 입니다.\n"); return 0; } Hominidae.: 진원류 121 Enter 4

5.1 선택문 [따라하기2] Ch05. 명령문 122 Enter #include <stdio.h> int main(void) { int number; printf("숫자를 입력하세요 : "); scanf("%d", &number); if(number%2 ==1) /* number를 나눈 나머지가 1일 때만 다음 문장이 실행 */ printf("입력하신 숫자는 홀수 입니다.\n"); else /* number를 나눈 나머지가 0일 때만 다음 문장이 실행 */ printf("입력하신 숫자는 짝수 입니다.\n"); return 0; } Hominidae.: 진원류 122 Enter 5

5.1 선택문 중첩 if문 if문 또는 else문 내에 다시 포함된 또 다른 if문 Ch05. 명령문 5.1 선택문 중첩 if문 if문 또는 else문 내에 다시 포함된 또 다른 if문 중첩 if문은 프로그램 작성시 매우 일반적인 것 중첩 if에서, else문은 항상 else문과 같은 블록에 존재하는 가장 가까운 if문과 연관 ANSI C 표준은 15개까지의 중첩을 허용 실제 대부분의 컴파일러들은 그 이상을 제공하나, 과다한 중첩은 프로그램의 의미에 혼동을 가져올 수 있음 if(i) { if(j) statement 1; if(k) statement 2; /* 이 if문은 */ else statement 3; /* 바로 다음의 else문과 연관된다. */ } else statement 4; /* if(i)와 연관된다. */ Hominidae.: 진원류 6

Ch05. 명령문 5.1 선택문 중첩 if문 Hominidae.: 진원류 7

5.1 선택문 [따라하기3] Ch05. 명령문 15 Enter #include <stdio.h> int main(void) { int age; printf("나이를 입력하세요 : "); scanf("%d", &age); if(age < 18) { printf("당신은 미성년자로서, 청소년 요금을 적용 받습니다.\n"); } else { printf("당신은 성년으로서, "); if(age < 65) printf("일반 요금을 적용 받습니다.\n"); else printf("경로우대 요금을 적용 받습니다.\n"); return 0; Hominidae.: 진원류 15 Enter 8

5.1 선택문 if-else if 구조 조건들은 하향식으로 평가 Ch05. 명령문 5.1 선택문 if-else if 구조 조건들은 하향식으로 평가 참인 조건을 만나면, 그것과 연관된 명령문이 수행되고 나머지들은 그냥 지나침 만일 어떤 조건도 참이 되지 않는다면, 마지막 else문이 수행 만일 마지막 else문이 존재하지 않으면, 어떠한 행위도 일어나지 않음 if(expression) statement; else if(expression) . else Hominidae.: 진원류 9

5.1 선택문 [따라하기4] Ch05. 명령문 32 Enter #include <stdio.h> int main(void) { int age; printf("나이를 입력하세요 : "); scanf("%d", &age); if(age < 18) printf("당신은 미성년자로서, 청소년 요금을 적용 받습니다.\n"); else if(age < 65) printf("당신은 성년으로서, 일반 요금을 적용 받습니다.\n"); else printf("당신은 성년으로서, 경로우대 요금을 적용 받습니다.\n"); return 0; } Hominidae.: 진원류 32 Enter 10

5.1 선택문 [따라하기5] Ch05. 명령문 10 Enter #include <stdio.h> int main(void) { int month; printf("달을 입력하세요 : "); scanf("%d", &month); if(month == 12 || month == 1 || month == 2) printf("%d월은 겨울 입니다.\n", month); else if(month == 3 || month == 4 || month == 5) printf("%d월은 봄 입니다.\n", month); else if(month == 6 || month == 7 || month == 8) printf("%d월은 여름 입니다.\n", month); else if(month == 9 || month == 10 || month == 11) printf("%d월은 가을 입니다.\n", month); else printf("잘못 입력하셨습니다.\n"); return 0; } Hominidae.: 진원류 10 Enter 11

5.1 선택문 ? 선택 ? 연산자는 다음의 하나의 if-else문의 일반 형식을 축약하는데 사용 Ch05. 명령문 5.1 선택문 ? 선택 ? 연산자는 다음의 하나의 if-else문의 일반 형식을 축약하는데 사용 ?는 피연산자가 3개이므로 3항 연산자라 함 if(Exp1) Exp2; else Exp3; Exp1 ? Exp2 : Exp3 Hominidae.: 진원류 if(x>9) y = 100; else y = 200; y = x>9 ? 100 : 200; 12

5.1 선택문 [따라하기6] Ch05. 명령문 70 Enter #include <stdio.h> int main(void) { int age; printf("나이를 입력하세요 : "); scanf("%d", &age); if(age < 18) { printf("당신은 미성년자로서, 청소년 요금을 적용 받습니다.\n"); } else { printf("당신은 성년으로서, "); age < 65 ? printf("일반 요금을 적용 받습니다.\n") : printf("경로우대 요금을 적용 받습니다.\n"); return 0; Hominidae.: 진원류 70 Enter 13

5.1 선택문 switch 문 정수 또는 문자 상수들에 대한 연산문의 값을 시험하는 내장된 복수 분기 선택문 여러개의 if-else문이 필요할 때 사용되는 다중 조건문 연산문의 시험 후에 일치하는 것이 있으면, 그 상수와 연관된 명령문을 실행 연산문과 일치하는 어떤 case문의 상수도 없을 때 default문의 명령문열이 실행 switch문에서 break문을 만날 때, 프로그램의 제어는 그 switch문 전체를 빠지고 다음 문장으로 점프 switch (expression) { case constant1: statement sequence break; case constant2: case constant3: . default: } Hominidae.: 진원류 14

5.1 선택문 switch 문 switch문의 세 가지 특성 switch문은 단지 같은지의 여부에 대해서만 시험한다는 점에서 if문과 다름 switch문 expression(연산문)은 동시에 두 개의 case문이 같은 상수값을 가질 수 없음 문자 상수가 switch문에 사용될 때, 이것은 자동적으로 정수로 변환 Hominidae.: 진원류 15

5.1 선택문 [따라하기7] Ch05. 명령문 #include <stdio.h> int main(void) { int toss; printf("1부터 3사이의 숫자를 입력하세요 : "); scanf("%d", &toss); switch(toss) { case 1: printf("가위~!!\n"); break; case 2: printf("바위~!!\n"); case 3: printf("보~!!\n"); Hominidae.: 진원류 16

5.1 선택문 [따라하기7] Ch05. 명령문 2 Enter 4 Enter default: printf("1부터 3사이의 숫자가 아닙니다~!!\n"); } return 0; 2 Enter 4 Enter Hominidae.: 진원류 17

5.1 선택문 switch 문 switch문 내부에 사용된 break문도 선택사항 만일 break문이 없다면, 실행은 다음의 break문 또는 switch문의 끝에 도달할 때까지 계속해서 다른 case문들을 수행 case문들이 break문 없이 사용될 때, 불필요한 중복을 피할 수 있고 좀더 효율적인 코드를 만들 수 있음 Hominidae.: 진원류 18

5.1 선택문 [따라하기8] Ch05. 명령문 #include <stdio.h> int main(void) { int month; printf("달을 입력하세요 : "); scanf("%d", &month); switch(month) { case 12: case 1: case 2: printf("%d월은 겨울 입니다.\n", month); break; case 3: case 4: case 5: printf("%d월은 봄 입니다.\n", month); Hominidae.: 진원류 19

5.1 선택문 [따라하기8] Ch05. 명령문 break; case 6: case 7: case 8: printf("%d월은 여름 입니다.\n", month); case 9: case 10: case 11: printf("%d월은 가을 입니다.\n", month); default: printf("잘못 입력하셨습니다.\n"); } return 0; Hominidae.: 진원류 20

Ch05. 명령문 5.1 선택문 [따라하기8] 2 Enter 10 Enter 17 Enter Hominidae.: 진원류 21

5.1 선택문 중첩된 switch 문 case문에 해당되는 명령문열에 포함된 또 다른 switch문 switch (x) { switch(y) { case 0: printf("divide by zero error"); break; case 1: process(x,y); } case 2: . Hominidae.: 진원류 22

5.2 분기문 분기문 일련의 절차지향적 명령문들의 제어를 무조건적으로 바꾸기 위한 명령문 Ch05. 명령문 5.2 분기문 분기문 일련의 절차지향적 명령문들의 제어를 무조건적으로 바꾸기 위한 명령문 C에서는 무조건 분기를 수행하는 4개의 명령문들을 제공 return, goto, break, continue return문과 goto문은 프로그램의 어디서나 사용 break문과 continue문은 반복문의 본체 문장들과 함께 사용 Hominidae.: 진원류 23

5.2 분기문 return 문 특정 함수로부터 리턴하기 위해서 사용 Ch05. 명령문 5.2 분기문 return 문 특정 함수로부터 리턴하기 위해서 사용 이때 return문은 함수를 호출한 다음 지점으로 (다시 되돌아가) 분기 return문은 특정 함수에서 필요한 만큼 사용할 수 있다. 그러나, 함수에서 첫 번째 return문을 만나면 그 함수에 대한 실행을 바로 중지 함수의 끝인 닫는 중괄호(})도 역시 그 함수의 실행을 끝내고 (리턴값이 없는) return문과 같은 효과 return expression; Hominidae.: 진원류 24

5.2 분기문 break문의 사용 경우 switch문내의 case문을 종료하기 위해서 사용 정상적인 루프 조건 시험을 무시하고 강제로 루프 반복 중에 반복을 종료하기 위해서 사용 break문이 루프 내부에서 발견되면, 루프는 그 즉시 종료되며 프로그램 제어는 반복 루프 다음 문장으로 이동 #include <stdio.h> void main(void) { int t; for(t=0; t<100; t++) { printf("%d ", t); if(t==10) break; } break문이 반복 루프의 조건 t<100을 무시 t=10 이면, 루프는 종료 0부터 10까지 출력 Hominidae.: 진원류 25

5.2 분기문 break문은 단지 자신이 포함된 가장 안쪽 루프만을 중지 Ch05. 명령문 5.2 분기문 break문은 단지 자신이 포함된 가장 안쪽 루프만을 중지 표준 라이브러리 함수 exit()는 전체 프로그램을 끝냄 for(t=0; t <100; ++t) { count = 1; for(;;) { printf("%d ", count); count++; if(count==10) break; } 화면에 1부터 10까지를 100번 출력 컴파일러가 break문을 만날 때마다, 제어는 바깥쪽 루프로 넘어감 Hominidae.: 진원류 26

5.2 분기문 [따라하기9] Ch05. 명령문 #include <stdio.h> int main(void) { int i, sum = 0; for ( i = 1 ; i <= 10; i++ ){ if ( i == 5 ) break; /* i 값이 5가 되면 루프를 빠져 나간다. */ sum += i; } printf("Sum=%d\n", sum); /* 1+2+3+4 의 결과 출력 */ return 0; Hominidae.: 진원류 27

5.2 분기문 continue 문 continue문은 강제로 반복 루프를 종료하는 것이 아니라 루프의 다음 반복을 계속 실행 Ch05. 명령문 5.2 분기문 continue 문 continue문은 강제로 반복 루프를 종료하는 것이 아니라 루프의 다음 반복을 계속 실행 해당 루프의 continue문에서 루프의 끝까지의 문장들은 그냥 지나침 Hominidae.: 진원류 28

5.2 분기문 [따라하기10] Ch05. 명령문 #include <stdio.h> int main(void) { int i, sum = 0; for ( i = 1 ; i <= 10; i++ ){ if ( i == 5 ) continue; /* i 값이 5가 루프의 나머지 부분을 지나치고 다음 조건을 수행 */ sum += i; } printf("Sum=%d\n", sum); /* 1+2+3+4+6+7+8+9+10의 결과 출력 */ /* 5는 계산되지 않음 */ return 0; Hominidae.: 진원류 29

5.2 분기문 goto 문 goto 문은 무조건 분기문, goto 문은 특정 라벨문으로 이동 Ch05. 명령문 5.2 분기문 goto 문 goto 문은 무조건 분기문, goto 문은 특정 라벨문으로 이동 goto문을 이용한 1에서 100까지를 반복하는 루프의 예 goto 문은 되도록 사용하지 않기를 권장 대부분의 프로그래머들은 goto문을 사용하면 프로그램을 읽는데 상당한 문제가 있다고 생각 많은 goto 문의 사용은 프로그램의 제어를 매우 복잡하게 할 수 있는 부작용 goto label; …. label; x =1; loop1: x++; if(x<100) goto loop1; Hominidae.: 진원류 30

실습 과제<5.1> <1>따라하기 1번 ~ 10번 실습 Ch05. 명령문 실습 과제<5.1> <1>따라하기 1번 ~ 10번 실습 <2>다음을 참고로 표준입력으로 받은 년도의 윤년을 판단하는 프로그램을 if 문을 사용하여 작성하시오. <3>다음을 참고로 년도를 입력 받아 그 해의 띠를 출력하는 프로그램을 switch 문을 이용하여 작성하시오. ① 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고, ② 1번 중에서 100으로 나누어 떨어지는 해는 평년으로 하며, ③ 다만 400으로 나누어 떨어지는 해는 윤년으로 정한다. Hominidae.: 진원류 2008 년 쥐(자)띠이며, 다음 해는 소(축)띠, 그 다음 해는 호랑이(인)띠, 계속해서 토기(묘)띠, 용(진)띠, 뱀(사)띠, 말(오)띠, 양(미)띠, 원숭이(신)띠, 닭(유)띠, 개(술)띠, 돼지(해)띠이다. 이와 같이 12 개의 띠가 돌아가며 계속된다. 31

5.3 반복문 반복문 (또는 루프(loop)) for 문 어떤 조건에 도달할 때까지 특정 명령문들의 집합을 반복적으로 실행 Ch05. 명령문 5.3 반복문 반복문 (또는 루프(loop)) 어떤 조건에 도달할 때까지 특정 명령문들의 집합을 반복적으로 실행 for 문 반복조건이 미리 정해져 있거나, 알려진 경우에 사용 initialization(초기화)는 일반적으로 루프 제어 변수를 설정하기 위해서 사용된 치환문 형식 condition(조건)은 루프의 끝나는 시점을 결정하는 관계 연산문 increment(증가분)은 루프가 반복될 때마다 루프 제어 변수가 어떻게 변하는지를 정의 Hominidae.: 진원류 for(initialization; condition; increment) statement; 32

5.3 반복문 for 문 condition(조건)이 참인 동안에는 실행을 계속 Ch05. 명령문 5.3 반복문 for 문 condition(조건)이 참인 동안에는 실행을 계속 조건이 거짓이 되면, 프로그램 실행은 for문 다음의 문장으로 이동 #include <stdio.h> void main(void) { int x; for(x=1; x <= 100; x++) printf("%d ", x); } Hominidae.: 진원류 33

5.3 반복문 [따라하기11] Ch05. 명령문 #include <stdio.h> int main(void) { int i, n; printf("숫자를 입력하세요 : "); scanf("%d", &n); for ( i = 1; i <= n; i++ ) printf("%10d%10d\n", i, i * i ); return 0; } Hominidae.: 진원류 34

5.3 반복문 [따라하기12] Ch05. 명령문 #include <stdio.h> int main(void) { int i=1,j=0; for ( i = 1; i <= 100; i++ ){ if( (i % 5) == 0 ) /* 5의 배수만 출력해주는 조건 */ printf("%d ",i ); j++; if( (j % 4) == 0 ) /* 하나의 라인에 4개의 숫자 출력 */ printf("\n"); } return 0; Hominidae.: 진원류 35

Ch05. 명령문 5.3 반복문 향상된 for 문 for 루프는 어떤 프로그래밍 환경에서도 그 기능, 융통성 및 응용성을 향상시킬 수 있도록 하기 위해서 다양한 형식을 제공 for 루프를 제어하기 위해서 하나 이상의 변수들을 콤마 연산자를 사용하는 것 for 루프문을 구성하는 세 가지 부분 각각은 어떠한 타당한 연산문도 사용할 수 있음 for(x=0, y=0; x+y<10; ++x) { y = getchar(); y = y - '0'; /* y에서 0의 ASCII 코드값을 빼기 */ …. } Hominidae.: 진원류 36

5.3 반복문 [따라하기13] Ch05. 명령문 #include <stdio.h> int sqrnum(int num); int readnum(void); int prompt(void); void main(void) { int t; for(prompt(); t=readnum(); prompt()) /* 0이 입력되면 루프 종료*/ sqrnum(t); } prompt(void) printf("숫자를 입력하세요 : "); return 0; Hominidae.: 진원류 37

5.3 반복문 [따라하기13] Ch05. 명령문 7 Enter 5 Enter 6 Enter 4 Enter 0 Enter readnum(void) { int t; scanf("%d", &t); return t; } sqrnum(int num) printf("%d\n", num*num); return num*num; 7 Enter 5 Enter 6 Enter 4 Enter 0 Enter Hominidae.: 진원류 38

5.3 반복문 (초기화; 조건; 증가분)의 형식에서 어떤 부분들은 없어도 됨 Ch05. 명령문 5.3 반복문 (초기화; 조건; 증가분)의 형식에서 어떤 부분들은 없어도 됨 for (x=0; x != 123;) scanf("%d", &x); /* 증가분 없음, 키보드에서 123입력 시 루프 종료*/ gets(s); /* 문자열을 s로 읽기 */ if(*s) x = strlen(s); /* 문자열의 길이 */ else x = 10; for( ; x<10; ) { printf("%d", x); ++x; } Hominidae.: 진원류 39

5.3 반복문 무한 루프 무한루프는 반복문을 끝내지 않고 무한으로 실행하는 것을 의미 Ch05. 명령문 5.3 반복문 무한 루프 무한루프는 반복문을 끝내지 않고 무한으로 실행하는 것을 의미 의도적으로 무한 루프가 필요한 경우에 어떤 루프문을 사용하든 상관없지만, 대개는 for문을 사용 다음과 같이 for 루프의 세 가지 부분을 모두 비우면, 끊임없이 반복 실행하는 루프가 됨 조건 연산문이 비어 있으면, 항상 참인 것으로 가정 break를 이용하여 무한루프를 나올 수 있음 Hominidae.: 진원류 for( ; ; ) printf(" This loop will run forever.\n); for( ; ; ) { ch = getchar(); /* 문자 읽기 */ if(ch=='A') break; /* 루프 종료 */ } 루프는 A가 입력될 때까지 계속 실행된다 40

5.3 반복문 본체 없는 for 루프 for문의 본체 부분에 명령문이 없을 수도 있음 Ch05. 명령문 5.3 반복문 본체 없는 for 루프 for문의 본체 부분에 명령문이 없을 수도 있음 이것은 어떤 알고리즘의 효율성을 증진시키고 시간 지연을 위해서 사용될 수 있음 for( ; *str == ' '; str++); for(t=0; t<SOME_VALUE; t++); Hominidae.: 진원류 41

5.3 반복문 while 문 일반형식 statement(명령문)는 빈 문장, 하나의 문장, 또는 문장들의 블록 등이 될 수 음 Ch05. 명령문 5.3 반복문 while 문 일반형식 statement(명령문)는 빈 문장, 하나의 문장, 또는 문장들의 블록 등이 될 수 음 condition(조건)은 어떤 조건 연산문 while 루프도 for문처럼 이 조건이 참인 동안 반복 조건이 거짓이면, 프로그램의 제어는 while루프 바로 다음의 문장으로 이동 while(condition) statement; Hominidae.: 진원류 42

5.3 반복문 while 문 사용자가 A를 입력할 때까지 단순히 반복하는 키보드 입력 루틴 wait_for_char(void) { char ch; ch = '\0'; /* ch 초기화 */ while(ch != 'A') ch = getchar(); return ch; } Hominidae.: 진원류 43

5.3 반복문 [따라하기14] Ch05. 명령문 /* n 개의 정수 중에 최대값을 계산 */ #include <stdio.h> int main(void) { int cnt = 0, n; float max, x; printf("최대값을 계산 합니다.\n"); printf("얼마나 많은 숫자의 계산을 원하십니까?"); scanf("%d", &n); while( n <= 0 ) { printf("\n에러: 양수를 입력하세요.\n\n"); } printf("\n%d개의 정수를 입력하세요 : ", n); scanf("%f", &x); Hominidae.: 진원류 44

5.3 반복문 [따라하기14] Ch05. 명령문 max = x; while (++cnt < n) { scanf("%f", &x); if (max < x) } printf("\n최대값은 %g입니다.\n", max); return 0; Hominidae.: 진원류 45

Ch05. 명령문 5.3 반복문 while 문 while 루프를 종료하는데 여러 개의 조건들이 필요하다면, 하나의 변수가 공통적으로 조건 연산문을 형성 다음에서 3개의 루틴들 중 어떤 것이든 거짓을 리턴하면 루프를 종료할 수 있음 void func1(void) { int working; working = 1; /* 참 값 */ while(working) { working = process1(); if(working) working = process2(); working = process3(); } Hominidae.: 진원류 46

5.3 반복문 while 문 do-while문 while 루프의 본체에 어떤 문장도 포함하지 않을 수 있음 Ch05. 명령문 5.3 반복문 while 문 while 루프의 본체에 어떤 문장도 포함하지 않을 수 있음 do-while문 루프의 시작 부분에 루프 조건이 있는 for와 while 루프와는 달리, 루프의 끝 부분에서 조건을 검사 do-while 루프에서는 최소한 한 번은 본체를 실행한다는 것을 의미 while((ch=getchar()) != 'A'); /*A를 입력할때까지 무한 반복*/ Hominidae.: 진원류 do{ statement; } while(condition); 47

5.3 반복문 [따라하기15] Ch05. 명령문 /* n 개의 정수중에 최대값을 계산 do-while 버전 */ #include <stdio.h> int main(void) { int cnt = 0, n; float max, x; printf("최대값을 계산 합니다.\n"); do{ printf("얼마나 많은 숫자의 계산을 원하십니까?"); scanf("%d", &n); if (n <= 0 ) printf("\n에러: 양수를 입력하세요.\n\n"); }while( n <= 0 ); printf("\n%d개의 정수를 입력하세요 : ", n); scanf("%f", &x); Hominidae.: 진원류 48

5.3 반복문 [따라하기15] Ch05. 명령문 max = x; while (++cnt < n) { scanf("%f", &x); if (max < x) } printf("\n최대값은 %g입니다.\n", max); return 0; Hominidae.: 진원류 49

5.4 블록문 블록문(block statement) 특정 단위로 다루려고 하는 관련된 문장들의 집합 Ch05. 명령문 5.4 블록문 블록문(block statement) 특정 단위로 다루려고 하는 관련된 문장들의 집합 블록을 구성하는 문장들은 논리적으로 한 울타리에 놓는다. 블록은 여는 중괄호({)로 시작하여 닫는 중괄호(})로 종료 if문과 같은 어떤 다른 문장으로 인해 요구되는 복수 개의 문장들이 필요할 때 사용 #include <stdio.h> void main(void) { int i; { /* 블록문 */ i = 120; printf("%d", i); } Hominidae.: 진원류 50

실습 과제<5.2> <1>따라하기11번 ~ 15번 실습 Ch05. 명령문 실습 과제<5.2> <1>따라하기11번 ~ 15번 실습 <2>문자열을 입력 받아 문자열의 길이를 출력하는 프로그램 작성 (Page 197) <3>차례대로 3명의 나이를 입력 받고, for()문을 사용해 3명의 나이를 평균을 구하는 프로그램을 작성 (page 198) <4>1에서 100까지의 정수 중에서 3, 5, 7의 배수를 제외한 수를 한 행에 10개씩 출력하는 프로그램 작성 Hominidae.: 진원류 51

Q&A 52