Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
2014 가을학기 계산 입문 연습 #4 지도교수 : 박성우 조교 : 이다훈. Python 을 설치합시다.
1 제 5 장 제어문. 목차목차 if ~ else switch while do ~ while for continue, break, return goto 연습문제.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
누구나 즐기는 C언어 콘서트 제5장 조건문.
Power Java 제6장 조건과 반복.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 07. 반복실행을 명령하는 반복문.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
6장 명령문.
제 4 장 프로그램 제어문 C 프로그래밍.
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
Chapter09 JavaScript 구구단표 만들기
10장 함수.
어서와 Java는 처음이지! 제3장선택과 반복.
6 반복문의 기본 for 문 여러 번 반복하는 작업은 for 문으로!.
7 while 문의 흐름 제어 조건만 만족한다면 무조건 무한 반복!.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.
2주차: 변수, 수식, Control Flow.
Tail-recursive Function, High-order Function
예제로 배우는 Visual Basic 구구단 작성기로 익히는 반복문
순서도.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
3. while문 반복문의 종류 while 문 while( 조건식 )        문장;.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 09 반복문.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
MATLAB
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
C 언어 교육 02 주차 – scanf & 반복문과 조건문 교육부장 조하정.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
Chapter 03. 주석문과 제어문.
제 5장 제어문 Hello!! C 언어 강성호 김학배 최우영.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
2007 1학기 08 반복문.
복습.
Control Flow 요약.
8장. 조건에 따른 흐름의 분기. 8장. 조건에 따른 흐름의 분기 8-1 흐름의 분기가 필요한 이유 상황에 따른 프로그램의 유연성 부여 그림 8-1.
Fucntion 요약.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
[ 단원 04 ] 반복과 배열.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
SPL3D Printer If 조건문.
Flow Diagram IV While.
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
제 22 강 논리식 및 논리 값 shcho.pe.kr.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
제어문Control Statements
어서와 C언어는 처음이지 제21장.
adopted from KNK C Programming : A Modern Approach
개정판 누구나 즐기는 C언어 콘서트 제5장 조건문 출처: pixabay.
Presentation transcript:

Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모

이 장의 내용 제어 흐름 If 문 switch 문 while 문 do-while 문 for 문 중첩 루프, 무한 루프, 기타2 © 우균, 창병모

7.1 제어 흐름 © 우균, 창병모

제어 흐름(flow of control) 제어 흐름이란 ? 제어 구조(control construct) 프로그램에서 실행되는 문장들의 실행 순서 특별히 지정하지 않으면, 프로그램의 실행은  첫 번째 문장에서 시작하여 한 번에 한 문장씩 순차적으로 실행된다 제어 구조(control construct) 프로그램에서 실행되는 문장들의 실행 순서를 제어하는 문장 © 우균, 창병모

제어 구조(control construct) 조건문, 루프, 분기문, 함수 호출 등은 제어 흐름, 즉 실행 순서를 변경한다. 조건문(conditional statement) if 문, if-else 문, switch 문 if 문은 조건에 따라 실행할 문장을 선택한다. 반복문(repetition statement) 혹은 루프(loop) while 문, for 문, do-while 문 루프는 특정 문장을 여러 번 반복해서 실행하게 한다. 분기문(branching statement) goto 문, return 문, break 문, continue 문 함수 호출(function call) © 우균, 창병모

7.2 if 문 © 우균, 창병모

if 문 형식 if (조건식) 제어 흐름 문장1; 조건식이 참이면 문장1을 실행하고, 다음 문장으로 진행        문장1; 제어 흐름 조건식이 참이면 문장1을 실행하고, 다음 문장으로 진행 조건식이 거짓이면 문장1을 실행하지 않고, 다음 문장으로 진행 조건식 참 문장 1 거짓 © 우균, 창병모

if 문 예 if (x > 0) printf ("x가 양수이다."); if (a < min) min = a; 주의! C 언어에서는 0은 거짓으로 0 이외의 값은 모두 참으로 간주한다. if (x)    printf("x가 0이 아님“); © 우균, 창병모

if-else 문 if-else 문은 조건에 따라 실행할 문장을 선택할 수 있다. 구문 형식 if (조건식) 제어 흐름      문장1; else      문장2; 제어 흐름 조건식이 참이면 문장1을 실행하고, 거짓이면 문장 2 실행 조건식 문장 2 거짓 참 문장 1 © 우균, 창병모

if-else 문 예 a, b 값 중 작은 값을 min에 대입하는 문장 if (a < b) min = a; else      min = b; © 우균, 창병모

복합문(compound statement) 중괄호로 둘러싸인 문장들의 집합 필요하면 변수 혹은 상수들을 먼저 선언할 수 있다. 구문 형식 {      선언들;      문장 1;      문장 2;      . . .      문장 n; } 주의! 복합문도 하나의 문장처럼 사용될 수 있다 © 우균, 창병모

minmax.c 실행결과: 입력 1: 20 입력 2: 35 작은 값: 20 큰 값: 35 © 우균, 창병모

중첩된 if(nested if) if 문 내에 또 다른 if 문을 포함할 수 있다. 예 이미 결정한 사항에 기초하여 또 다른 결정을 할 수 있다. 예 if (num1 < num2)    if (num1 < num3)         min = num1;     else         min = num3; © 우균, 창병모

min.c 실행결과: 입력 1: 20 입력 2: 35 작은 값: 20 큰 값: 35 © 우균, 창병모

중첩된 if 문 중첩된 if 문에서, else 절은 짝이 없는 가장 가까운 if와 짝이 된다. if (num1 < num2)    if (num1 < num3)         min = num1;     else         min = num3; vs {     if (num1 < num3)        min = num1; } else min = num3; © 우균, 창병모

중첩된 if 문을 이용한 다중선택 형식 if (조건식1) 문장1; else if (조건식2) 문장2; ...     문장1; else if (조건식2)      문장2;      ... else if (조건식n)     문장n;   조건식1 참 거짓 문장 1 참 조건식2 문장 2 거짓 조건식n 참 문장 n 거짓 © 우균, 창병모

grade.c 실행결과: 점수 입력: 85 점수: 85           학점: B © 우균, 창병모

7.3 switch 문 © 우균, 창병모

switch 문 switch 문 switch 문의 구문 형식 정수 수식 값에 따라 여러 경로 중에서 한 경로를 선택할 수 있다. switch 문의 구문 형식 switch ( 수식 ) {     case 상수1: 문장들1     case 상수2: 문장들2             ...     case 상수n: 문장들n     default   : 문장들n+1 } © 우균, 창병모

switch 문 switch 문의 실행 흐름 . . . (1) 수식의 값을 계산한다. 값==상수1 참 수식 문장들1 거짓 값==상수2 문장들2 값==상수n 문장들n . . . 문장들n+1 switch 문의 실행 흐름 (1) 수식의 값을 계산한다. (2) 수식의 값을 각 case의 상수 값과 비교한다. (3) 일치된 case 값이 있으면 그 case 절의 문장들을 실행한다.     (3.1) 그 case 절의 마지막 문장이 break이면 switch 문을 빠져 나온다.     (3.2) 그렇지 않은 경우에는 다음 case 절의 문장들을 실행한다. (4) 일치된 case 값이 없으면 default 절의 문장들을 실행한다. © 우균, 창병모

switch 문 이용한 학점 수 계산 switch (grade) { case 'A': ACount = ACount + 1;         break;     case 'B':         BCount = BCount +1;        break;     case 'C':        CCount = CCount + 1;         break;     case 'D':        DCount = DCount + 1;     case 'F':        FCount = FCount + 1;        break;     default:        printf ("오류: %c 학점은 없습니다.", grade); } © 우균, 창병모

switch 문 이용한 학점 수 계산 char 형 변수 grade에 따라 해당 학점의 수 증가하는 코드 ACount부터 FCount는 int 변수 보통 switch 문을 벗어나기 위해 각 case 절의 마지막에 break 문을 사용한다. © 우균, 창병모

실행결과: 점수 입력 (0 ~ 100): 86 점수: 86        학점: B © 우균, 창병모

7.4 while 문 © 우균, 창병모

while 문 while 문 구문 형식 제어 흐름 조건이 거짓이 될 때까지 동일한 문장을 반복해서 실행한다.     문장1; 제어 흐름 조건식을 계산하고, 그 값이 참(0이 아닌 값)인 동안 문장 1를 반복해서 실행한다. 조건이 거짓이 되면 while 문을 종료하고 다음 문장을 실행한다. 조건식 문장 참 거짓 © 우균, 창병모

odd.c 실행결과: 1부터 100까지 홀수의 합은 2500 입니다. © 우균, 창병모

Average1.c 실행결과: 점수 입력 (0은 끝): 85 90 75 99 64 총점: 413 평균: 82.60 총점: 413 평균: 82.60 © 우균, 창병모

7.5 do-while 문 © 우균, 창병모

do-while 문 do-while 문 구문 형식 . . . 루프 본체를 먼저 실행하고 조건을 검사하고 그 값이 참인 동안 반복한다 루프 본체를 적어도 한 번 실행 구문 형식 do {     문장1;      ...     문장n; } while (조건식); 조건식 문장1 참 거짓 문장n . . . © 우균, 창병모

max.c 실행결과: 점수 입력 (0은 끝): 수를 입력하세요 85 170 88 192 가장 큰 수는 192 입니다. 가장 큰 수는 192 입니다. © 우균, 창병모

7.6 for 문 © 우균, 창병모

for 문 for 문 구문 형식 제어 흐름 보통 정해진 회수만큼 반복할 때 사용된다.     문장1; 제어 흐름 수식1: 초기화를 위한 수식 루프를 시작하기 전에 한번 계산 수식2: 부울 조건식 문장1 실행 전에 계산 값이 참(0이 아닌 값)이면 문장1 실행 거짓(값이 0)이면 루프를 벗어남 수식3: 수식2의 변수 증가/감소 위한 식 문장1 실행 후에 계산 수식2 문장1 참 거짓 수식1 수식3 © 우균, 창병모

for 문 예 for 루프를 사용해서 1부터 100까지의 자연수의 합 계산 for (count = 1; count <= 100; count++)     total = total + count; for (count = 100; count > 0; count--)     total = total + count; © 우균, 창병모

for 문과 while 문 vs for ( 수식1 ; 수식2 ; 수식3 ) 문장1; 수식1 ; while ( 수식2 ) {     문장1; vs 수식1 ; while ( 수식2 ) {        문장1;       수식3 ; } © 우균, 창병모

three.c 실행결과: 3의 배수를 몇 개 프린트할까요? 10 3 6 9 12 15 18 21 24 27 30 3  6  9  12  15  18  21  24  27  30 © 우균, 창병모

tempTable.c 실행결과: 0.00 도 F = -17.78 도 C 10.00 도 F = -12.22 도 C © 우균, 창병모

Average2.c © 우균, 창병모

7.7 중첩루프, 무한루프, 기타 © 우균, 창병모

중첩 루프(nested loop) 루프의 본체 내에 다른 루프를 포함할 수 있다. 예를 들어 while 루프 내에 다시 while 루프가 포함될 수 있다. for 루프 내에 다시 for 루프가 포함될 수 있다. while 루프 내에 for 루프가 포함될 수 있다. … 바깥 루프의 각 반복에 대해서 안쪽 루프가 완전히 실행되므로 이차원의 반복적인 일을 수행할 수 있다. © 우균, 창병모

multiply.c © 우균, 창병모

실행결과 실행결과: 1 단 1 X 1 = 1 1 X 2 = 2 1 X 3 = 3 1 X 4 = 4 1 X 5 = 5  1 단 1 X 1 = 1 1 X 2 = 2 1 X 3 = 3 1 X 4 = 4 1 X 5 = 5 1 X 6 = 6 1 X 7 = 7 1 X 8 = 8 1 X 9 = 9 2 단 2 X 1 = 2 2 X 2 = 4 2 X 3 = 6 2 X 4 = 8 2 X 5 = 10 2 X 6 = 12 2 X 7 = 14 2 X 8 = 16 2 X 9 = 18 실행결과: ...        9 단 9 X 1 = 9 9 X 2 = 18 9 X 3 = 27 9 X 4 = 36 9 X 5 = 45 9 X 6 = 54 9 X 7 = 63 9 X 8 = 72 9 X 9 = 81 © 우균, 창병모

무한 루프(infinite loop) 루프의 조건이 항상 참이면 루프는 무한히 반복된다. 예 while (1)  // 경고: 무한 루프이다!     printf (“무한 루프”); int count = 1; while (count != 100)      count += 2; while (count <= 100) {  //경고: 이것이 무한 루프이다!     printf(“%d\n", count);     count--; } © 우균, 창병모

무한 루프(infinite loop) 프로그래머는 무한 루프를 피하기 위해서 프로그램을 주의 깊게 설계해야 한다 ! for (i = 0; ;i++)    printf("루프 반복: %d\n", i); 프로그래머는 무한 루프를 피하기 위해서 프로그램을 주의 깊게 설계해야 한다 ! © 우균, 창병모

break 문 루프 내에서 break 문 루프의 실행이 중단되고 루프 다음에 위치한 문장이 실행된다. while (1) {     scanf("%d",&j)    if (j == 0)         break;     result = i/j; } © 우균, 창병모

continue 문 루프 내에서 continue 문 루프 조건을 다시 계산하고, 그 조건이 참이면 루프 본체를 다시 실행한다. for (i = 0, sum = 0; i <= n; i++) {     if (i % 2 == 0)         continue;     sum += i; } © 우균, 창병모

Key Point © 우균, 창병모

Key Point 1 if 문은 조건에 따라 실행할 문장을 선택한다. 루프는 특정 문장을 여러 번 반복해서 실행하게 한다. C 언어에서 조건문, 루프, 분기문, 함수 호출 등은 제어 흐름, 즉 실행 순서를 변경한다. if-else 문은 조건에 따라 실행할 문장을 선택할 수 있다. 중첩된 if 문에서, else 절은 짝이 없는 가장 가까운 if와 짝이 된다. © 우균, 창병모

Key Point 2 switch 문은 한 개의 정수 값에 따라서 여러 개의 경로 중에서 한 경로를 선택할 수 있다. 보통 switch 문을 벗어나기 위해 각 case 절의 마지막에 break 문을 사용한다. while 문은 그 조건이 거짓이 될 때까지 동일한 문장을 반복해서 실행한다. for 문은 보통 루프가 정해진 회수만큼 실행될 때 사용된다. do-while 문은 루프 본체를 적어도 한 번 실행한다. 프로그래머는 무한 루프를 피하기 위해서 프로그램을 주의 깊게 설계해야 한다. © 우균, 창병모

프로그래밍 실습 © 우균, 창병모

▶ 프로그래밍 실습 1. 프로그램 7.5는 (0보다 작거나 100보다 큰) 잘못된 점수가 입력되어도 전혀 오류 메시지를 내지 못한다. 이 프로그램을 0부터 100까지의 유효한 점수만을 입력 받을 수 있도록 확장해보자.  잘못된 점수가 입력되면 유효한 점수가 입력될 때까지 반복해서 다시 입력받도록 한다. © 우균, 창병모

▶ 프로그래밍 실습 2. 실습 1의 프로그램을 확장하여 3. 실습 2의 프로그램을 확장하여 입력된 각 점수에 대해서 학점을 결정하여 출력하고 모든 점수의 합과 평균도 출력하도록 확장하라.  프로그램 7.4를 참조하여 입력 점수에 대해서 학점을 결정한다. 3. 실습 2의 프로그램을 확장하여 학점, 점수의 합, 평균뿐만 아니라 각 학점의 수를 계산하는 프로그램을 작성하라. switch 문을 이용하여 해당 학점을 결정하고 해당 학점의 수를 증가시키도록 한다. © 우균, 창병모