고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문

Slides:



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

누구나 즐기는 C언어 콘서트 제5장 조건문.
Power C++ 제3장 선택과 반복.
제6장 조건문.
Power Java 제6장 조건과 반복.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 07. 반복실행을 명령하는 반복문.
6장 명령문.
제 4 장 프로그램 제어문 C 프로그래밍.
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
Chapter 6 Repetition.
Chapter09 JavaScript 구구단표 만들기
제5장 제어명령
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
C언어 콘서트 제6장 반복문.
어서와 Java는 처음이지! 제3장선택과 반복.
6 반복문의 기본 for 문 여러 번 반복하는 작업은 for 문으로!.
7 while 문의 흐름 제어 조건만 만족한다면 무조건 무한 반복!.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
2주차: 변수, 수식, Control Flow.
Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
순서도.
4장 제어문 선택문: if 문, if – else 문, switch 문
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
13. 연산자 오버로딩.
3. while문 반복문의 종류 while 문 while( 조건식 )        문장;.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 09 반복문.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
MATLAB
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
제어문 & 반복문 C스터디 2주차.
2장. 변수와 타입.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
제 5장 제어문 Hello!! C 언어 강성호 김학배 최우영.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
17장. 제어문과 내장 함수 제어문 내장 함수 제어문 내장 함수.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
[ 단원 04 ] 반복과 배열.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
7주차: Functions and Arrays
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
어서와 C언어는 처음이지 제16장.
제어문Control Statements
어서와 C언어는 처음이지 제21장.
Report #2 (기한: 3/16) 데이터 구조 과목의 수강생이 50명이라고 가정한다. 이 학생(학번은 2016????으로 표현됨)들의 중간 시험(0~100), 기말 시험(0~100) 성적을 성적 파일에 작성하라(프로그램을 통해서 또는 수작업으로). 성적 파일을 읽어들여서.
Presentation transcript:

고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문 후 검사 반복 구조와 do-while 문 카운터 제어 루프, sentinel 제어 루프, 중첩 루프 4장의 강의 자료 참고할 것!!

복합 서술문(complex predicates) 필요한 경우 : 간단한 논리식이 아닌 중첩된 if 문이 필요 사례 1: 변수 semester_average의 값이 80~89 사이에 있는지 검사 사례 2: 재학생(student_status의 값이 ‘u’)이고 성적 우수자(grade_point_average의 값이 3.5 이상)인 학생 사례 3: 재학생이거나 성적 우수자인 학생 논리식 : 식이 계산 결과가 참(0이외의 값)이나 거짓(0)을 갖는 식 논리 연산자 : && (AND), || (OR), ! (NOT) 사례 1: (semester_average >= 80) && (semester_average >= 89) 사례 2: (student_status==‘u’)&&(grade_point_average>=3.5) 사례 3: (student_status==‘u’)||(grade_point_average>=3.5) 논리 연산자의 우선순위 NOT 연산자, 단항 산술 연산자  이항 산술 연산자  관계 연산자  AND 연산자  OR 연산자 예제 9.6 : x + y >= && ! (x – y) || x * y – 16 == 4         

논리식과 평가 결과의 예 int var1 = 15, var2 = 5, is_done = 1; double var3 = 3.5; char var4 = 'c'; (var1 <= 10) && (var2 == 5)  0 (var1 <= 10) || (var2 == 5)  1 ! var1 || ! (! var2)  1 ! var1 || var2  1 var1 && var2 && var3  1 var1 && (var2 - 5) && var3  0 (var3 == 3.5) || (var4 == 'c')  1 ! is _done  0 is_done || (var4 != 'c')  1 ! var3 && var2  0 !(var3 || var2)  0

if 문을 이용한 다중 선택 제어 예제 9.8 90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 60점 이상은 D, 나머지 점수는 F 학점을 주는 다섯 개의 단일 if 문 if (semester_average >= 90) letter_grade = 'A'; /* end if */ if (semester_average < 90 && semester_average >= 80) letter_grade = 'B'; /* end if */ if (semester_average < 80 && semester_average >= 70) letter_grade = 'C'; if (semester_average < 70 && semester_average >= 60) letter_grade = 'D'; if (semester_average < 60 ) letter_grade = 'F';

switch-break 다중 선택 제어 switch 문의 문법 CaseClause DefaultCluase switch (ControllingExpression) { CaseClause-1 CaseClause-2 . CaseClause-n DefaultClause } /* end switch */ CaseClause case Constant-1; case Constant-2; case Constant-m; statement DefaultCluase default : Statement

switch를 이용한 다중 선택의 예 예제 9.11 : 예제 9.8의 semester_average를 switch 문의 조건식에서 바로 사용하지 않고 semester_average/10을 이용 9 이상이면 A, 8이상이면 B, 7 이상이면 C, 6 이상이면 D, 나머지는 F 학점을 각각 부여 switch (semester_average / 10) { case 10 : case 9 : letter_grade = 'A'; break; case 8 : letter_grade = 'B'; case 7 : letter_grade = 'C'; case 6 : letter_grade = 'D'; default : letter_grade = 'F'; } /* end switch */

선 검사 반복 구조 for 문의 문법 for (InitializationExpression; LoopControlExpression; UpdateExpression) LoopBody /* end for */ for 문의 의미 구조

for 문을 이용한 카운터 제어 루프 예제 9.13 int number, sum, counter; ············ for (counter = 1; counter <= number; counter = counter + 1) sum = sum + counter; /* end for */ 예제 9.14 sum = 0; for (counter = number; counter >= 1; counter = counter - 1) 예제 9.15 for (counter = 1; counter <= number; counter = counter + 2)

for 문과 while 문의 동질성 for 문 for (InitializationExpression; LoopControlExpression; UpdateExpression) LoopBody /* end for */ 이와 동등한 while 문 InitializationExpression while (LoopControlExpression) UpdateExpression; /* end while */ 예제 9.16 : Factorial 구하기 counter = 1; factorial = 1; while (counter <= number) { factorial = factorial * counter; counter = counter + 1; } /* end while */ for (counter = 1; counter <= number; counter = counter + 1) { } /* end for */

카운터 제어 루프와 sentinel 제어 루프 비교 카운터 제어 루프 (이제까지의 for 문에 해당) 1. 루프 제어 변수 선언 2. 루프 제어 변수에 초기값 할당 3. 루프 제어 변수가 마지막 값인지 루프 제어식 안에서 비교 4. 루프 제어 변수를 증감시킴 Sentinel 제어 루프 1. Sentinel 변수 선언하고 루프를 종료 시킬 값을 결정 2. Sentinel 변수에 값을 할당하기 위해 초기식 사용 3. Sentinel 변수를 사용하는 루프 제어식 작성 4. 루프가 종료되도록 Sentinel 변수를 변경시키는 증감식 포함

for 문을 이용한 sentinel 제어 루프 예제 9.17 : 문자 y나 n의 대문자나 소문자만이 answer의 값으로 합당하고 다른 문자에 대해서는 올바른 값을 입력하도록 하는 프로그램 char answer; printf("Do you want to continue? (y/n): "); for (scanf("%c", &answer); answer != 'y' && answer != 'Y' && answer != 'n' && answer != 'N'; scanf("%c", &answer)) printf("Please type y or n: ")"; /*end for */ 예제 9.18 : 잔고(balance)와 거래액(transaction) 입금, 거래액으로 0.0을 입력하면 계산 종료 #include <stdio.h> int main(void) { double balance, transaction; printf("Enter beginning account balance: "); scanf("%lf", &balance); printf("Enter transaction amount: "); for (scanf("%lf", &transaction); transaction != 0.0; scanf("%lf", &transaction)) { balance = balance + transaction; } /* end for */ printf("Ending account balance is: %8.2f", balance); return 0; } /* end function main */

오류 데이터 검사 및 continue 문 예제 9.19 : 시험 점수를 입력하고 반 평균 점수와 시험을 치른 학생의 수를 계산하고 출력하는 프로그램을 작성한다고 하자. 적절한 시험 점수는 1에서 100사이의 정수이다. 범위 밖의 값을 입력하면 프로그램은 올바른 값을 입력하도록 경고해야 하고, 반 평균을 계산하는 데에는 이 잘못된 값을 무시해야 하지만 프로그램의 수행은 계속되어야 한다. 프로그램은 시험 점수로 0을 입력할 때 종료가 되어야 한다. printf("Enter a test score. Enter 0 to stop: "); for (scanf("%d", &test_score); test_score != 0; scanf("%d", &test_score)) { if (test_score < 0 || test_score > 100) { printf("Incorrect test score! Enter a correct value: "); continue; } /* end if */ sum = sum + test_score; number_of_students = number_of_students + 1; } /* end for */ if (number_of_students != 0) class_average = (double) sum / number_of_students; else class_average = 0.0; /* end if */

후 검사 반복 구조 do-while 문의 문법 do LoopBody while ( LoopControlExpression ); /* end do - while */ do-while 문의 의미 구조

do-while 문을 이용한 카운터 제어 루프와 sentinel 제어 루프 예제 9.20 : 정수 1 부터 number 까지의 합 (비교 : 예제 9.13) int number, sum = 0, counter = 0; ············ do { sum = sum + counter; counter = counter + 1; } while (counter <= number); /* end do-while 예제 9.21 : sentinel 변수는 transaction이고 그 값은 0.0 (비교 : 예제 9.18) scanf("%lf", &balance); do { printf("Enter transaction amount: "); scanf("%lf", &transaction); balance = balance + transaction; } while (transaction != 0.0); /* end do-while */

중첩된 루프 루프의 몸체 안에 하나 이상의 루프를 가지는 구조로 외부 루프가 매번 반복할 때마다 내부 루프들이 전부 실행 예제 9.23 int control_var1, control_var2; for (control_var1 = 1; control_var1 <= 8; control_var1 +=2) for (control_var2 = control_var1; control_var2 <= 10; control_var2 += 3) printf("control_var1 = %d control_var2 = %d", control_var1, control_var2); /* end for */ 결과 control_var1 = 1 control_var2 = 1 control_var1 = 1 control_var2 = 4 control_var1 = 1 control_var2 = 7 control_var1 = 1 control_var2 = 10 control_var1 = 3 control_var2 = 3 control_var1 = 3 control_var2 = 6 control_var1 = 3 control_var2 = 9 control_var1 = 5 control_var2 = 5 control_var1 = 5 control_var2 = 8 control_var1 = 7 control_var2 = 7 control_var1 = 7 control_var2 = 10