쉽게풀어쓴 C 언어 Express 이번장에서학습할내용 제 6 장조건문 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실

Similar documents
쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-06.pptx

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

untitled

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - ch03 - 조건문과 반복문 pm0215

C 언어 프로그래밊 과제 풀이

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

중간고사

Infinity(∞) Strategy

untitled

PowerPoint 프레젠테이션

OCW_C언어 기초

Microsoft PowerPoint - chap-07.pptx

Microsoft PowerPoint - Lesson6.pptx

Chapter_06

Microsoft PowerPoint - chap04-연산자.pptx

PowerPoint 프레젠테이션

1.1.1 컴퓨터의 구성 p.19

Microsoft PowerPoint - 5장 조건문 pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - gnu-w10-c-chap11

쉽게 풀어쓴 C 프로그래밍

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

Microsoft PowerPoint - [2009] 02.pptx

슬라이드 1

PowerPoint 프레젠테이션

Java ...

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

윈도우즈프로그래밍(1)

untitled

Microsoft PowerPoint - gnu-w10-c-chap12

11장 포인터

Microsoft PowerPoint - chap-11.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션


<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - 제11장 포인터

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

C 언어와 프로그래밍 개요

C프로-3장c03逞풚

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ch07 - 포인터 pm0415

ch15

Microsoft PowerPoint - 제11장 포인터(강의)

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - 7장 배열 pptx

슬라이드 1

슬라이드 1

ch08

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Visual Basic 반복문

Microsoft PowerPoint - Lesson2.pptx

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

컴파일러

쉽게 풀어쓴 C 프로그래밍

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

K&R2 Reference Manual 번역본

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Chapter_08.pptx

1.1.1 컴퓨터의 구성 p.19

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

C 프로그래밊 개요

슬라이드 1

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

Microsoft PowerPoint - 2장 변수와 자료형 pptx

PowerPoint 프레젠테이션

06 세상을 변화시키는 연산자

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

4장.문장

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

ABC 2장

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

JAVA PROGRAMMING 실습 02. 표준 입출력

슬라이드 1

Tcl의 문법

14 주차구조체와공용체

RYWKVGWKJOFY.hwp

슬라이드 1

Transcription:

쉽게풀어쓴 C 언어 Express 이번장에서학습할내용 제 6 장조건문 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 일상생활에서의조건문의예 조건에따라서여러개의실행경로가운데하나를선택 만약비가오지않으면테니스를친다. 만약결석이 1/3 이상이면 F 학점을받는다. 만약시간이없는경우에는택시를탄다. 만약날씨가좋고공휴일이면공원에산책을간다. 점수가 60 점이상이면합격이고그렇지않으면불합격이다. 문장이실행되는순서에영향을주는문장 조건문은프로그램의흐름을변경합니다. 조건에따라서여러개의같은처리를반복 1

if 문 if 문 조건에따라서결정을내리는경우에사용 if( 조건식 ) 문장 ; 조건식이참으로계산되면 문장이실행된다. number 가 0 보다크면 if( number > 0 ) printf(" 양수입니다 \n"); if 문의예 복합문 복합문 (compound statement) 중괄호를사용하여문장들을그룹핑하는것, 블록 (block) 이라고도한다. 단일문대신들어갈수있다. if 문이끝나면 if 문다음문장이실행된다. if ( temperature < 0 ) printf(" 현재영하입니다.\n"); 양수입니다 를출력한다. // 조건이참일때만실행 if( score >= 60 ) printf(" 합격입니다.\n"); printf(" 장학금도받을수있습니다.\n"); 조건식이참이면 2 개의문장이묶여서실행된다. printf(" 현재온도는 % 도입니다.\n", temperature); // 항상실행 2

int number; printf(" 정수를입력하시오 :"); scanf("%d", &number); if( number > 0 ) printf(" 양수입니다."); 예제 printf(" 입력된값은 %d 입니다.", number); // if 문을사용하여절대값을구하는프로그램 int number; printf(" 정수를입력하시오 :"); scanf("%d", &number); if( number < 0 ) number = -number; 예제 printf(" 절대값은 %d 입니다.\n", number); 만약사용자가 -5 를입력하였다면 -5 < 0 이므로해당조건문실행 정수를입력하시오 :25 양수입니다. 입력된값은 25 입니다. 정수를입력하시오 :-5 절대값은 5 입니다. 중간점검 if- 문 1. 중괄호로묶은여러개의문장을무엇이라고하는가? 2. C 에서참과거짓은어떤정수로표시되는가? 3. if 문안의조건식으로많이사용되는수식의종류는무엇인가? 4. if 문이끝나면어떤문장이실행되는가? 5. 조건에따라서실행되어야하는문장이두개이상이면어떻게하여야하는가? 날씨가좋은가? 참 테니스를친다. 거짓 공부를한다. if( 조건식 ) 문장 1; 문장 2; 조건식이참이면실행된다. 조건식이거짓이면실행된다. 3

if- 문 if- 문 if ( score >= 60 ) printf(" 합격입니다.\n"); printf(" 불합격입니다.\n"); if ( score >= 60 ) printf(" 합격입니다.\n"); printf(" 장학금도받을수있습니다.\n"); printf(" 불합격입니다.\n"); printf(" 공부하세요.\n"); score가 60이상이면실행 score가 60미만이면실행 score가 60이상이면실행 score가 60미만이면실행 학점결정코드 if( score >= 80 && score < 90 ) grade = 'B'; 복잡한조건식도가능 // if- 문을이용하여홀수와짝수를구분한다. int number; printf(" 정수를입력하시오 :"); scanf("%d", &number); 예제 #1 2 로나누어서나머지가 0 이면짝수이다. 공백문자들의개수를세는코드 if( ch == ch == \n ch == \t ) white_space++; if( number % 2 == 0 ) printf(" 입력된정수는짝수입니다.\n"); printf(" 입력된정수는홀수입니다.\n"); 정수를입력하시오 : 23 입력된정수는홀수입니다. 4

int n1, n2, n3; printf(" 정수를입력하시오 : "); scanf("%d", &n1); printf(" 정수를입력하시오 : "); scanf("%d", &n2); if( n2 == 0 ) // 분모가 0인지검사 printf("0으로나눌수는없습니다.\n"); n3 = n1 / n2; 분자를입력하시오 // 나눗셈: 5실행 printf(" 결과는 %d입니다.\n", n3); 분모를입력하시오 : 4 결과는 1입니다. 예제 #2 // 윤년판단프로그램 int year; printf(" 연도를입력하시오 : "); scanf("%d", &year); if((year % 4 == 0 && year % 100!= 0) year % 400 == 0) printf("%d 년은윤년입니다.\n", year); printf("%d 년은윤년이아닙니다.\n", year); 예제 #3 연도를입력하시오 : 2012 2012 년은윤년입니다. 중간점검 1. 변수 n 의값이 100 보다크거나같으면 large", 100 보다작으면 small" 을출력하는 if- 문을작성하라. if 문에다시 if 문이포함 if( 조건식 1 ) if( 조건식 2 ) 문장 ; 중첩 if 5

중첩 if if( score >= 80 ) if( score >= 90 ) printf(" 당신의학점은 A 입니다.\n"); if 문안의문장자리에 if 문이들어간경우 if 와 의매칭문제 절은가장가까운 if 절과매치된다. if(score > 80) if( score >= 90) printf( 당신의학점은 A입니다 \n ); X O printf( 당신의학점은 B입니다 \n ) if( score >= 80 ) if( score >= 90 ) printf(" 당신의학점은 A 입니다.\n"); printf(" 당신의학점은 B 입니다.\n"); if 문안의문장자리에 if- 문이들어간경우 if( score >= 80 ) if( score >= 90 ) printf(" 당신의학점은 A입니다.\n"); 만약다른 if절과 절을매치시키려면중괄호를사용하여블록으로묶는다. printf(" 당신의학점은 A나 B가아닙니다.\n"); 중첩 if 연속적인 if if( score > 80 ) if( score > 90 ) printf(" 당신의학점은 A 입니다.\n"); printf(" 당신의학점은 B 입니다.\n"); if( score > 70 ) printf(" 당신의학점은 C 입니다.\n"); printf(" 당신의학점은 D 또는 F 입니다.\n"); if- 절안에다른 if- 절이포함수있다. if( 조건식 1 ) 문장 1; if( 조건식 2 ) 문장 2; if( 조건식 3 ) 문장 3; 문장 4; 6

연속적인 if 학점결정예제 int score; printf(" 성적을입력하시오 : "); scanf("%d", &score); if (score >= 90) printf(" 합격 : 학점 A\n"); if (score >= 80) printf(" 합격 : 학점 B\n"); if (score >= 70) printf(" 합격 : 학점 C\n"); if (score >= 60) printf(" 합격 : 학점 D\n"); printf(" 불합격 : 학점 F\n"); 성적을입력하시오 : 88 학점 B // 문자들을분류하는프로그램 문자분류예제 실습 : 이차방정식 char ch; printf(" 문자를입력하시오 : "); scanf("%c", &ch); if( ch >= 'A' && ch <= 'Z' ) printf("%c 는대문자입니다.\n", ch); if( ch >= 'a' && ch <= 'z' ) printf("%c 는소문자입니다.\n", ch); if( ch >= '0' && ch <= '9' ) printf("%c 는숫자입니다.\n", ch); printf("%c 는기타문자입니다.\n", ch); 문자를입력하시오 : c c 는소문자입니다. 7

실행결과 알고리즘 계수 a 를입력하시오 : 1 계수 b 를입력하시오 : -4 계수 c 를입력하시오 : 3 방정식의근은 3.000000 입니다. 방정식의근은 1.000000 입니다. 사용자로부터 a, b, c 를읽는다. if a == 0 이면일차방정식의근을구한다. 실근을출력한다. 판별식을계산한다. if 판별식 >= 0 근의공식을이용하여실근을구한다. 실근을출력한다. 실근은없다는메시지출력 소스 소스 #include <math.h> double a, b, c, dis; printf(" 계수 a 를입력하시오 : "); scanf("%lf", &a); printf(" 계수 b 를입력하시오 : "); scanf("%lf", &b); printf(" 계수 c 를입력하시오 : "); scanf("%lf", &c); if( a == 0 ) printf(" 방정식의근은 %f 입니다.", -c/b); dis = (b*b - 4.0*a*c); if( dis >= 0 ) printf(" 방정식의근은 %f 입니다. \n", (-b+sqrt(dis))/(2.0*a)); printf(" 방정식의근은 %f 입니다. \n", (-b-sqrt(dis))/(2.0*a)); printf(" 실근이존재하지않습니다 "); 계수 a 를입력하시오 : 1 계수 b 를입력하시오 : -4 계수 c 를입력하시오 : 3 방정식의근은 3.000000 입니다. 방정식의근은 1.000000 입니다. 8

실습 : 산술계산기 char op; int x, y, result; 소스 수식을입력하시오 ( 예 : 2 + 5) >>2 + 5 2 + 5 = 7 printf(" 수식을입력하시오 "); printf("( 예 : 2 + 5) "); printf(">>"); scanf("%d %c %d", &x, &op, &y); 소스 if( op == '+' ) result = x + y; if( op == '-' ) result = x - y; if( op == '*' ) result = x * y; if( op == '/' ) result = x / y; if( op == '%' ) result = x % y; printf(" 지원되지않는연산자입니다. "); printf("%d %c %d = %d ", x, op, y, result); 중간점검 1. n 의값이각각 -1, 0, 5 인경우에다음의코드에의하여생성되는출력은무엇인가? if( n == 0 ) printf("a"); if( n > 3 ) printf("b"); printf("c"); 2. 컵의사이즈를받아서 100ml 미만은 small, 100ml 이상 200ml 미만은 medium, 200ml 이상은 large 라고출력하는연속적인 if- 문을작성하시오. 수식을입력하시오 ( 예 : 2 + 5) >>2 + 5 2 + 5 = 7 9

switch 문 switch 문의순서도 여러가지경우중에서하나를선택하는데사용 switch( 조건식 ) case c1: 문장 1; case c2: 문장 2;...... case cn: 문장 n; 문장 d; 제어식의값이 c1 이면실행된다. 제어식의값이 c2 이면실행된다. 일치하는값이없으면실행된다. case case c1 c1 case case c2 c2... 거짓 거짓 case case cn cn 거짓 default default 참 참 참 문장문장 1 1 문장2 문장2 문장문장 n n break break break break break break 예제 사용자가 1 을입력하는경우 int number; printf(" 정수를입력하시오 :"); scanf("%d", &number); switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); printf(" 둘 \n"); printf(" 많음 \n"); 2007 생능출판사 All rights reserved 정수를입력하시오 : 1 하나 1 switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); printf(" 둘 \n"); printf(" 많음 \n"); 10

1 break 가생략되는경우 switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); printf(" 둘 \n"); printf(" 많음 \n"); break 를만날때까지계속문장을실행합니다. switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); case 3: printf(" 두서너개 \n"); printf(" 많음 \n"); 의도적인 break 생략 2 개의경우를하나로묶어서처리하기위하여이러한기법을사용 default 문 switch 문과 if- 문 5 switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); printf(" 둘 \n"); printf(" 많음 \n"); 어떤 case 문과도일치되지않는경우에선택 int number; scanf("%d", &number); if( number == 0 ) printf(" 없음 \n"); if( number == 1 ) printf(" 하나 \n"); if( number == 2 ) printf(" 둘 \n"); printf(" 많음 \n"); switch(number) case 0: printf(" 없음 \n"); case 1: printf(" 하나 \n"); printf( 둘 \n"); printf(" 많음 \n"); 11

switch 문에서주의할점 switch(number) case x: // 변수는사용할수없다. printf("x 와일치합니다. "); case (x+2): // 변수가들어간수식은사용할수없다. printf(" 수식과일치합니다. "); case 0.001: // 실수는사용할수없다. printf(" 실수 "); case 001 : // 문자열은사용할수없다. printf(" 문자열 "); // 달의일수를계산하는프로그램 int month, days; printf(" 달을입력하시오 : "); scanf("%d", &month); 예제 예제 switch(month) days = 28; case 4: case 6: case 9: case 11: days = 30; days = 31; printf("%d 월의일수는 %d 입니다.\n", month, days); 달을입력하시오 : 12 12 월의일수는 31 입니다. char op; int x, y, result; 실습 : 산술계산기 printf(" 수식을입력하시오 "); printf("( 예 : 2 + 5) "); printf(">>"); scanf("%d %c %d", &x, &op, &y); 12

실습 : 산술계산기 switch(op) case '+': result = x + y; case '-': result = x - y; printf(" 지원되지않는연산자입니다. "); printf("%d %c %d = %d ", x, op, y, result); 도전문제 위의프로그램은단순히산술연산자만을처리한다. 비트연산자 (&,, ^) 을추가하여보자. 비트연산자인경우에는 16 진수로입력값과결과값을출력하여보자. 수식을입력하시오 ( 예 : 2 + 5) >>2 + 5 2 + 5 = 7 중간점검 Goto 문 1. case 절에서 break 문을생략하면어떻게되는가? 2. 변수 fruit 의값이각각 1, 2, 5 일때, 다음의코드의출력을쓰시오. switch(fruit) case 1: printf(" 사과 ); printf( 배 ); case 3: printf(" 바나나 ); printf( 과일 ); 조건없이어떤위치로점프 사용하지않는것이좋음 13

예제 Q & A // 구구단출력프로그램 int i = 1; loop: printf("%d * %d = %d \n", 3, i, 3 * i); i++; if( i == 10 ) goto end; goto loop; end: 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 14