C 언어 컴퓨터학과 5 - 1 C 언어 ( STS2008-04 ) (Chap5. Selection-Making Decisions ) C 언어.

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
제6장 조건문.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
제 1장 C 언어의 소개.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
시스템 생명 주기(System Life Cycle)(1/2)
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
4장: 자료형과 수식.
시스템 생명 주기(System Life Cycle)(1/2)
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
7. while 문의 흐름 제어.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 06. 선택문.
변수와 자료형.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
Chapter 3 Flow of Control
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
쉽게 풀어쓴 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;
Chapter 2 Lexical Elements, Operators, and the C System
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
[INA470] Java Programming Youn-Hee Han
연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>
누구나 즐기는 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 조건문.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
DataScience Lab. 박사과정 김희찬 (화)
어서와 C언어는 처음이지 제23장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제22장.
배열, 포인터, 함수 Review & 과제 1, 2.
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

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

컴퓨터학과 Chapter 5. Overview Logical Data And Operators Two – Way selection Multiway Selection

C 언어 컴퓨터학과 Logical Data and Operator(*) 지금까지 배운 제어 (control) 흐름은 순서대로 (sequential) 정상적 흐름을 벗어나 어떤 상황에서 판단을 하여 다른 흐름을 만드는 방법이 선택 (selection) 이다. 선택은 논리적 판단에 기반한다. 그러나 전통적으로 C 에는 논리 형 (logical type) 이 없었다. 이에 따라 모든 비트가 ‘0’ 이면 ‘false’, 아니면 ‘true’ 로 보는 방법을 취한다. Boolean 타입이 생겼으므로 Boolean 타입을 사용하는 것이 좋음 정수, 실수 등에서는 0, 문자에서는 ‘\0’ 가 false 에 해당한다.

C 언어 컴퓨터학과 (*) &&(and), ||(or), !(not) not(!) > and (&&) > or(||) 논리 연산자는 두 개 또는 하나의 논리값을 0 이나 1 의 논리값 으로 평가하기 위한 연산자 연산자 && 는 수학에서의 and 를 의미 연산자 || 은 or 를 의미 연산자 &, | 는 and 와 or 로 사용하나 정확히 말하자면 연산 자 & 와 | 는 비트 연산자 연산자 의미연산 기호의미 AND OR NOT op1 && op2 op1 || op2 !op1 연산자의 왼쪽 값 (op1) 과 오른쪽 값 (op2) 의 AND 연산 수행 연산자의 왼쪽 값 (op1) 과 오른쪽 값 (op2) 의 OR 연산 수행 단일 연산자로서 연산자 오른쪽 값 (op1) 의 NOT 연산 수행

C 언어 컴퓨터학과 (*) 논리 연산자의 연산 방법 연산에 참여하는 자료 값은 0 은 거짓 (false) 을 의미하며, 1(0 이 아닌 값 ) 은 참 (true) 을 의미 정수 만을 이용하는 것은 아니고 실수나 다른 유형의 자료 값도 이용이 가능 다만 평가의 결과는 반드시 0(false) 이거나 1(true) xy And 연산자 결과 Or 연산자 결과 Not 연산자 결과 x && yx || y!x (nonzero)

C 언어 컴퓨터학과 (*) 수식평가 결과이유 (5 > 2) && (3 == 2) (5 > 2) || (3 == 2) !(3 == 2) 오른쪽 (3 == 2) 의 결과가 0 이기 때문에 왼쪽 (5 > 2) 의 결과가 1 이기 때문에 연산식 (3 == 2) 이 0 이므로 논리 연산자는 수식에 포함된 그들의 피연산자의 0 이 아닌 값 (true) 과 0 인 값 (false) 에 따라 1 이나 0 으로 평가 결과가 도출 수식평가 결과이유 3 && && 4 1 && 1 (3 > 4) || !(4==1) 0.3 || || 과 4 모두 0 이 아니므로 참인 의미의 1 임 소수 0.0 도 거짓을 의미하는 0 임 !(4==1) 이 1 임 0 이 아닌 것은 모두 참인 의미의 1 임

C 언어 컴퓨터학과 관계연산자 (Relation operator) 두 값의 관계를 비교하여 논리적 결과를 생성하는 연산자로서 다음 의 6 가지 operator 가 존재한다. 다음은 관계연산자로 표현된 expression 의 보완관계 예제들이다. !(x = y !(x >= y)  x < y !(x != y)  x == y !(x == y)  x != y (*)

C 언어 컴퓨터학과 Two-Way Selection 조건문의 결과에 따라 제어 흐름이 바뀌게 된다. 다음은 two-way decision 의 로직이다. Decision condition 이 true 이면 true action 을 취하고 false 이면 false action 을 취한다.

C 언어 컴퓨터학과 (*) if…else 이용 조건문 if 에서 키워드 else 를 사용하여 조건 표현식이 거짓인 경우, else 이 후의 문장을 실행하는 구문을 구성 if…else 문의 statement 는 들여쓰기를 한다. 들여쓰기는 conditional expression 이 true 일 때, 관련되는 statement 를 분류하 고, false 일 때 또한 관련된 statement 를 분류하여, 사람이 코드를 인식하기 쉽게 하여 준다. 컴퓨터는 들여쓰기를 인식하지 못한다.

C 언어 컴퓨터학과 Conditional expression 을 수행 후에 수행하는 statement 가 두 개 이상 일 때는 { } 로 묶어준다.

C 언어 컴퓨터학과 (*) 예제 프로그램 ( 코드 1) – if…else 문의 예 #include int main(void) { int number = 0; printf(" 양의 정수 하나를 입력하세요. "); scanf("%d", &number);// 사용자로부터 임의의 값을 입력 받는다. printf("---> 입력한 수 %d 는 ( 은 ) ", number); if (number % 2 == 0) { // 입력 받은 수를 2 로 나누어 나머지가 0 이면 짝 수 printf(" 짝수 입니다.\n"); } else { printf(" 홀수 입니다.\n"); } return 0; }

C 언어 컴퓨터학과 예제 프로그램 1( 결과 ) 위 예제 프로그램을 컴파일 후, 실행시키면 사용자로부터 입력 받은 값이 2( 짝수 ) 이면 짝수 사용자로부터 입력 받은 값이 3( 홀수 ) 이면 홀수라고 나온다.

C 언어 컴퓨터학과 Nested if Statements if 문장 내부에 다른 if 문이 나오는 문장을 중첩 (nested) 된 if 문이라고 한다. 즉 조건 내에 다른 조건을 넣고 싶을 때 유용한 표현이다. 다음은 nested if 문의 Logic 흐름과 실제 표기법이다.

C 언어 컴퓨터학과 예제 프로그램 ( 코드 2) – Nested if statement 문의 예 #include int main(void) { int number1, number2 = 0; printf(" 양의 정수 두 개를 입력하세요. "); scanf("%d %d", &number1, &number2); // 사용자로부터 임의의 값을 입력 받는다. if (number1 % 2 == 0) // 입력 받은 수를 2 로 나누어 나머지가 0 이면 짝수 if(number2 % 2 == 0) printf(“ 두 수 모두 짝수 입니다.\n"); else printf(“number1 은 짝수, number2 는 홀수 입니다.\n"); else printf(“number1 은 홀수가 확실합니다 !!!\n”); return 0; }

C 언어 컴퓨터학과 예제 프로그램 2( 결과 ) 위 예제 프로그램을 컴파일 후, 실행시키면 사용자로부터 입력 받은 두 수가 모두 짝수, 첫수가 짝수 두 번째 수는 홀수일 때, 그리고 첫수가 홀수일 때 각각 아래와 같이 출력된 다.

C 언어 컴퓨터학과 if…else 구문에서 여러 개의 if 문이 나타난 경우에 else 문이 생 략되면 의미가 불분명해 질 수 있다. 이런 else 는 가장 가까운 if 문의 else 로 생각함으로써 명확히 구별할 수 있다. 이러한 문제 (Dangling else problem) 을 해결하기 위하여 의도 한 if 문을 {} 로 처리해주면 좋다. 또한 들여쓰기를 잘 하면 훨씬 이해하기 쉬워진다.

C 언어 컴퓨터학과 Compiler 는 else 를 가장 가까운 if 문과의 짝으로 생각한다. if(alpha=3) 과 쌍을 이루게 하려면 ….. if(alpha == 3) if(beta ==4) printf(“alpha = 3, beta = 4\n”); else printf(“alpha beta not valid \n”); if(alpha == 3){ if(beta ==4) printf(“alpha = 3, beta = 4\n”); } else printf(“alpha beta not valid \n”);

C 언어 컴퓨터학과 Multiway Selection Multiway selection 에는 크게 switch 문과 else if 문이 존재한다. Switch 문 Expression 과 value 는 반드시 정수나 정수수식이어야 한다. switch 문은 여러 개의 선택을 처리하는 구문으로 switch 이후의 괄 호 () 사이의 표현 식의 값 중에서 case 의 값과 일치하는 것을 처리 하는 문장 Default : 반드시 있어야 하지는 않지만 선택되지 않은 모든 경우를 나타낸다. 다음은 switch 문의 로직이다.

C 언어 컴퓨터학과 switch 문의 실행순서 1. switch 문의 표현식 (expression) 을 평가한다. 2. 위 표현식에서 계산된 값과 일치 하는 상수 값 (constant) 을 갖는 case 의 값을 위에서부터 찾는다. 일치 된 case 값을 만나면 case 내부의 문 장을 실행한다. 3. break 를 만나면 switch 문을 종료한 다. 또는 switch 몸체의 마지막 문 장을 수행하면 switch 문을 종료한 다. 4. 일치된 case 문을 만나지 못하여 default 를 만나면 default 내부의 문 장을 실행한다.

C 언어 컴퓨터학과 (*) 예제 프로그램 ( 코드 3) – switch 문의 예 #include int main(void) { int invalid_operator = 0; char operator; float number1, number2, result; printf(" 두 수를 다음과 같은 형태로 입력하세요.\n"); printf(" 연산자는 네 가지 (+, -, *, /) 중의 하나여야 합니다.\n"); printf("number1 연산자 number2\n"); scanf("%f %c %f", &number1, &operator, &number2);

C 언어 컴퓨터학과 (*) switch( operator ) { case '*' : result = number1 * number2; break; case '/' :result = number1 / number2; break; case '+' : result = number1 + number2;break; case '-' : result = number1 - number2; break; default :invalid_operator = 1; } switch( invalid_operator ) { case 1 : printf(" 연산자가 잘못 입력되었습니다.\n"); break; default : printf("\n>>>>>>>>> 결과는 \n"); printf("%5.2f %c %5.2f = %5.2f\n", number1, operator, number2, result); break; } return 0; }

C 언어 컴퓨터학과 예제 프로그램 3( 결과 ) 위 예제 프로그램을 컴파일 후, 실행시키면 입력 받은 가운데 연산자가 ‘ * ’ 와 ‘ - ’ 일 때 각자 해당되는 연산의 결 과를 출력한다.

C 언어 컴퓨터학과 (*) break 문 switch 문에서 break 문을 만나면 무조건 switch 문을 종료 그러나 switch 문의 case 문 내부에 break 문이 없다면 일치하는 case 문을 실행하고, 계속해서 break 문을 만나기 전까지 무조건 다음 case 문 내부의 문장을 실행 break 이후 실행되는 곳은 지금 빠져 나온 structure 의 바로 뒷 부분 이다. break 문을 주로 사용하는 용도 Loop 으로부터의 탈출 switch structure 에서 나머지 실행문장을 건너 뛰기 위해

C 언어 컴퓨터학과 구문 예 아래 구문에서 변수 month 의 값이 1 이거나 3, 10, 12 중 의 하나이면 case 12: 의 내부 문장 두 개를 실행하고, break 문장을 만나 switch 문 이 종료 month 의 값이 4 이거나 6, 9, 11 중의 하나이면 case 11: 의 내부 문장 두 개를 실행하고, break 문장을 만나 switch 문 이 종료

C 언어 컴퓨터학과 (*) 예제 프로그램 ( 코드 4) – break 문의 예 #include int main(void) { int year = 0, month = 0, maxDay = 30, validinput = 0; printf(" 년과 월을 다음과 같이 입력하면 그 달의 말일을 알려드립니다.\n"); printf("2003 2\n 입력 >"); scanf("%d %d", &year, &month); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:maxDay = 31; // 한 달이 31 일인 달들 validinput = 1; break; case 4: case 6: case 9: case 11:maxDay = 30; // 한 달이 30 일인 달들 validinput = 1; break;

C 언어 컴퓨터학과 (*) case 2: if ((year%4 == 0) && (year%100 != 0) || (year%400 == 0)) // 윤년 계산을 위한 문장 maxDay = 29; else maxDay = 28; validinput = 1; break; default: validinput = 0; } if (validinput) printf("%d 년 %d 월의 말일은 %d 일 입니다.\n", year, month, maxDay); else printf(" 입력이 잘못되었습니다.\n"); return 0; }

C 언어 컴퓨터학과 예제 프로그램 4( 결과 ) 위 예제 프로그램을 컴파일 후, 실행시키면 입력된 연과 달에 해당되는 말일을 출력해준다. 31 일인 1,3,5,7,8,10,12 월과 30 일인 4,6,9,11 월은 break 가 없어 같은 결과 값을 가지게 된다.

C 언어 컴퓨터학과 (*) Else-if 문 If(expression) statement else if(expression) statement else if(expression) statement else statement 이 형태의 if 문은 다중판단을 할 경우에 사용 되는 전형적인 문장이다. Expression 은 순서에 의해 계산되며 만일 수식이 참일 경우 그 바로 밑에 있는 statement 가 수행되고, 구문을 끝낸다. 그렇지 않을 경우 다음 수식으로 넘어가는 과정을 반복한다. 마지막 else 는 위쪽 수식이 참일 경우가 하나도 없는 경우 수행되는 statement 를 포함하고 있으며 필요 없으면 생략도 가능하고, 우발적인 실수를 검사하기 위해 사용된다.

C 언어 컴퓨터학과 (*) if (score >= 90) grade = ‘A’; else if (score >= 80) grade = ‘B’; else if (score >= 70) grade = ‘C’; else if (score >= 60) grade = ‘D’; else grade = ‘F’; 다음은 점수 매기는 부분을 if -else 문을 사용한 예제이다.

C 언어 컴퓨터학과 (*) 예제 프로그램 ( 코드 5) – else if 문의 예 #include int main(void) { int score = 0; char grade; printf(“ 점수를 입력하세요. "); scanf("%d", &score); // 사용자로부터 임의의 값을 입력 받는다. if (score >= 90 ) grade = ‘A’; else if( score >= 80 ) grade = ‘B’; else if( score >=70 ) grade = ‘C’; else if( score >= 60 ) grade = ‘D’; else grade = ‘F’; printf(“ 당신의 학점은 %c 입니다 \n”, grade ); return 0; }

C 언어 컴퓨터학과 (*) 예제 프로그램 5( 결과 ) 위 예제 프로그램을 컴파일 후, 실행시키면 입력 받은 점수에 해당되는 Grade 를 출력해준다. 90 점 이상은 A, 80 점 이상은 B, 70 점 이상은 C, 60 점 이상은 D 학 점이고 나머지는 F 학점이다.