쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.

Slides:



Advertisements
Similar presentations
연천 새둥지마을 체재형 주말농장 준공식 초청장 오시는 길 주제 일시 장소 21C 경기농촌희망심기 2005년 제1기 교육수료마을
Advertisements

SPARCS Wheel Seminar Mango X Sugoi
출석수업 자료 교과서 범위: 제1장-4장.
10월 충북노회 남선교회 순회 헌신예배 묵 도 기 도 성 경 봉 독 특 송 찬 양 설 교 찬양 / 봉헌 봉 헌 기 도
글에 나타난 시대적 사회적 배경을 파악할 수 있다. 배경 지식과 의미 해석의 관련성을 이해할 수 있다.
패널자료 분석
라오디게아 교회의 교훈 본문 계 3: ○라오디게아 교회의 사자에게 편지하라 아멘이시요 충성되고 참된 증인이시요 하나님의 창조의 근본이신 이가 이르시되 15. 내가 네 행위를 아노니 네가 차지도 아니하고 뜨겁지도 아니하도다 네가 차든지 뜨겁든지 하기를 원하노라.
한알Ⅱ「더불어 살기」전국대회 일정표 날짜 시간 7월 26일(목) 7월 27일(금) 7월 28일(토) 7월 29일(일)
2013학년도 전라북도고등학교신입생 입학전형 기본계획
선거관리위원회 위원 공개모집 4차 공고 제4기 선거관리위원회를 구성하는 위원 모집의
2015학년도 1학기 버디 프로그램 오리엔테이션 (목) 16:00.
열왕기하 1장을 읽고 묵상으로 예배를 준비합시다..
오늘의 학습 주제 Ⅱ. 근대 사회의 전개 4. 개항 이후의 경제와 사회 4-1. 열강의 경제 침탈 4-2. 경제적 구국 운동의 전개 4-3. 사회 구조와 의식의 변화 4-4. 생활 모습의 변화.
전도축제 계획서 *일시 : 2013년 4월 21, 28일 주일 (연속 2주)
2009학년도 가톨릭대학교 입학안내.
한국 상속세 및 증여세 과세제도 한국 국세공무원교육원 교 수 최 성 일.
중세시대의 의복 학번 & 이름.
다문화가정의 가정폭력의 문제점 연세대학교 행정대학원 정치행정리더십 2학기 학번 이름 홍 진옥.
이공계의 현실과 미래 제조업 立國 / 이공계 대학생의 미래 준비
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
◆ 지난주 반별 출석 보기 ◆ 제 56 권 26호 년 6월 26일 반 선생님 친구들 재적 출석 5세 화평 김성희 선생님
第1篇 자치입법 개론.
교직원 성희롱·성폭력·성매매 예방교육 벌교중앙초등학교 박명희
제5장 새로운 거버넌스와 사회복지정책 사회복지정책이 어떤 행위자에 의해 형성되고 집행되는지, 어떤 과정에서 그러한 일들이 이루어지는지, 효과적인 정책을 위해서는 어떤 일들이 필요한지 등을 본 장에서 알아본다 개인들이 생활을 개선하는 가장 효과적인고 궁극적인 방법은 개별적.
임상시험 규정 (최근 변경 사항 중심으로) -QCRC 보수 교육 과정 전달 교육
서울특별시 특별사법경찰 수사 송치서류 유의사항 서울특별시 특별사법경찰과 북부수사팀장 안   진.
특수학교용 아동학대! 제대로 알고 대처합시다..
사회복지현장의 이해 Generalist Social Worker 사회복지입문자기초과정 반포종합사회복지관 김한욱 관장
학교보건 운영의 실제 한천초등학교 이 채 금.
제 출 문 고용노동부 귀중 본 보고서를 ’ ~ ‘ 까지 실시한 “근로감독관 직무분석 및 교육프로그램 개발에 관한 연구”의 최종보고서로 제출합니다  연구기관 : 중앙경영연구소  프로젝트 총괄책임자 : 고병인 대표.
학습센터란? 기도에 관해 배울 수 있는 다양한 학습 코너를 통하여 어린이들이 보다 더 쉽게 기도를 알게 하고, 기도할 수 있게 하며, 기도의 사람으로 변화될 수 있도록 하는 체험학습 프로그램이다. 따라서 주입식이지 않으며 어린이들이 참여할 수 있는 역동적인 프로그램으로.
Digital BibleⅢ 폰속의 성경 디지털 바이블 2008년 12월 ㈜씨엔커뮤니케이션 ㈜씨엔엠브이엔오.
후에 70인역(LXX)을 좇아 영어 성경은 본서의 중심 주제인 “엑소도스”(출애굽기)라 하였다.
성 김대건 피츠버그 한인 성당 그리스도왕 대축일 공지사항
예배에 대하여.
말씀 듣는 시간입니다..
하나님은 영이시니 예배하는 자가 신령과 진정으로 예배할지니라.
지금 나에게 주신 레마인 말씀 히브리서 13장 8절.
예수의 제자들 담당교수 : 김동욱.
Lecture Part IV: Ecclesiology
KAINOS 날마다 더하여지는 Kainos News 이번 주 찬양 20 / 300 – 20개의 셀, 300명의 영혼
예배의 외부적인 틀II - 예배 음악 조광현.
영성기도회 렉시오 디비나와 묵상기도 2.
성인 1부 성경 공부 지도목사: 신정우 목사 부 장: 오중환 집사 2010년. 5월 9일
남북 탑승객 150명을 태운 디젤기관차가 2007년 5월 17일 오전 경의선 철길을 따라 남측 최북단 역인 도라산역 인근 통문을 통과하고 있다. /문산=사진공동취재단.
성경 암송 대회 한일교회 고등부 (일).
천주교 의정부교구 주엽동본당 사목협의회 사목활동 보고서
III. 노동조합과 경영자조직 노동조합의 이데올로기, 역할 및 기능 노동조합의 조직형태 노동조합의 설립과 운영
여수시 MICE 산업 활성화 전략 ( 중간보고 )
1. 단위사업 관리, 예산관리 사업설정 (교직원협의/의견수렴) 정책 사업 학교 정책 사업 등록 사업 기본정보 목표 설정
※과정 수료자에 한하여 수강료의 80~100% 차등 환급함
평생학습중심대학 프로그램 수강지원서 접수안내 오시는 길 관악구&구로구민을 위한 서울대학교 -- 접수 일정 및 방법 안내--
서비스산업의 선진화, 무엇이 필요한가? 김 주 훈 한 국 개 발 연 구 원.
기존에 없던 창업을 하고 싶은데, 누구의 도움을 받아야 할지 모르겠어요
전시회 개요 Ⅰ. 전시명칭 개최기간 개최장소 개최규모 주 최 참 관 객 현 지 파 트 너 General Information
Homeplus 일 家 양 득 프로그램 소개 2015년 12월.
Home Network 유동관.
통신이론 제 1 장 : 신호의 표현 2015 (1학기).
I. 기업과 혁신.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법

ESOCOM – IPIX 고정IP서비스 제안서 Proposer ㈜이소컴.
화장품 CGMP 한국콜마㈜.
초화류 종자 시장 규모 100억원 이상(추정, 생산액의 10%정도 차지)
COMPUTER ARCHITECTIRE
[ 한옥 실측 ] 1. 약실측 2. 정밀실측 조선건축사사무소.
14. 컴파일러 자동화 도구 스캐너 생성기 파서 생성기 코드 생성의 자동화
A제조용수/B환경관리/C시설관리 ㈜ 에이플러스 코리아
Introduction to Network Security
Presentation transcript:

쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express

이번 장에서 학습할 내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 5장까지는 문장들이 순차적으로 실행된다고 하였다. 하지만 필요에 따라서 조건이 만족되면 문장의 실행 순서를 변경할 수 있는 기능이 제공된다. 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 goto문

조건문 조건에 따라서 여러 개의 실행 경로 가운데 하나를 선택 문장이 실행되는 순서에 영향을 주는 문장 조건에 따라서 여러 개의 같은 처리를 반복

일상 생활에서의 조건문의 예 만약 비가 오지 않으면 테니스를 친다. 만약 결석이 1/3이상이면 F학점을 받는다. 만약 시간이 없는 경우에는 택시를 탄다. 만약 날씨가 좋고 공휴일이면 공원에 산책을 간다. 점수가 60점 이상이면 합격이고 그렇지 않으면 불합격이다. 조건문은 프로그램의 흐름을 변경합니다.

if문 조건에 따라서 결정을 내리는 경우에 사용 조건식이 참으로 계산되면 if( 조건식 )        문장; 문장이 실행된다.

if문

if문의 예 if( number > 0 ) printf("양수입니다\n"); “양수입니다”를 출력한다. if 문이 끝나면 if 문 다음 문장이 실행된다. if ( temperature < 0 )   printf("현재 영하입니다.\n");           // 조건이 참일 때만 실행 printf("현재 온도는 %도 입니다.\n", temperature); // 항상 실행

복합문 복합문(compound statement) 중괄호를 사용하여 문장들을 그룹핑하는 것, 블록(block)이라고도 한다. 단일문 대신 들어 갈 수 있다. if( score >= 60 )          {       printf("합격입니다.\n");       printf("장학금도 받을 수 있습니다.\n");   } 조건식이 참이면 2개의 문장이 묶여서 실행된다.

예제 #include <stdio.h> int main(void) { int number; printf("정수를 입력하시오:"); scanf("%d", &number); if( number > 0 ) printf("양수입니다."); printf("입력된 값은 %d입니다.", number); return 0; } 정수를 입력하시오:25 양수입니다. 입력된 값은 25입니다.

예제 // if 문을 사용하여 절대값을 구하는 프로그램 #include <stdio.h> int main(void) {         int number;         printf("정수를 입력하시오:");         scanf("%d", &number);         if( number < 0 )                 number = -number;                  printf("절대값은 %d 입니다.\n", number);         return 0; } 만약 사용자가 -5를 입력하였다면 -5 < 0이므로 해당 조건문 실행 정수를 입력하시오:-5 절대값은 5입니다.

중간 점검 1. 중괄호로 묶은 여러 개의 문장을 무엇이라고 하는가? 2. C에서 참과 거짓은 어떤 정수로 표시되는가? 3. if 문안의 조건식으로 많이 사용되는 수식의 종류는 무엇인가? 4. if 문이 끝나면 어떤 문장이 실행되는가? 5. 조건에 따라서 실행되어야 하는 문장이 두개 이상이면 어떻게 하여야 하는가?

if-else 문 if( 조건식 ) 문장1; else 문장2; 날씨가 좋은가? 테니스를 친다. 공부를 한다. 거짓 참 조건식이 참이면 실행된다. if( 조건식 )        문장1; else         문장2; 조건식이 거짓이면 실행된다.

if-else 문

if-else 문 if ( score >= 60 ) printf("합격입니다.\n"); else {       printf("합격입니다.\n");       printf("장학금도 받을 수 있습니다.\n"); } else       printf("불합격입니다.\n");       printf("공부하세요.\n"); score가 60이상이면 실행 score가 60미만이면 실행

복잡한 조건식도 가능 학점 결정 코드 if( score >= 80 && score < 90 ) grade = 'B'; 공백 문자들의 개수를 세는 코드 if( ch == ‘ ‘ || ch == ‘\n’ || ch == ‘\t’ ) white_space++;

예제 #1 // if-else 문을 이용하여 홀수와 짝수를구분한다. #include <stdio.h> int main(void) {         int number;         printf("정수를 입력하시오:");         scanf("%d", &number);         if( number % 2 == 0 )                 printf("입력된 정수는 짝수입니다.\n");         else                 printf("입력된 정수는 홀수입니다.\n");         return 0; } 2로 나누어서 나머지가 0이면 짝수이다. 정수를 입력하시오: 23 입력된 정수는 홀수입니다.

예제 #2 #include <stdio.h> int main(void) { int n1, n2, n3;         printf("정수를 입력하시오: ");         scanf("%d", &n1);         scanf("%d", &n2);         if( n2 == 0 ) // 분모가 0인지 검사         {                 printf("0으로 나눌 수는 없습니다.\n");         }         else                 n3 = n1 / n2; // 나눗셈 실행                 printf("결과는 %d입니다.\n", n3);        return 0; } 분자를 입력하시오: 5 분모를 입력하시오: 4 결과는 1입니다.

예제 #3 // 윤년 판단 프로그램 #include <stdio.h> int main(void) {         int year;                  printf("연도를 입력하시오: ");         scanf("%d", &year);         if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)                 printf("%d년은 윤년입니다.\n", year);         else                 printf("%d년은 윤년이 아닙니다.\n", year);         return 0; } 연도를 입력하시오: 2012 2012년은 윤년입니다.

중간 점검 1. 변수 n의 값이 100보다 크거나 같으면 “large", 100보다 작으면 ”small"을 출력하는 if-else 문을 작성하라.

중첩 if if 문에 다시 if 문이 포함 if( 조건식1 )       if( 조건식2 )               문장;

중첩 if if( score >= 80 ) if( score >= 90 ) printf("당신의 학점은 A입니다.\n"); if 문안의 문장 자리에 if문이 들어간 경우 if( score >= 80 ) if( score >= 90 ) printf("당신의 학점은 A입니다.\n"); else printf("당신의 학점은 B입니다.\n"); if 문안의 문장 자리에 if-else 문이 들어간 경우

만약 다른 if절과 else 절을 매치시키려면 중괄호를 사용하여 블록으로 묶는다. else 절은 가장 가까운 if절과 매치된다. if(score > 80) if( score >= 90) printf(“당신의 학점은 A입니다\n”); else printf(“당신의 학점은 B입니다\n”) X O if( score >= 80 ) {    if( score >= 90 )       printf("당신의 학점은 A입니다.\n"); } else    printf("당신의 학점은 A나 B가 아닙니다.\n"); 만약 다른 if절과 else 절을 매치시키려면 중괄호를 사용하여 블록으로 묶는다.

if-else 절 안에 다른 if-else절이 포함될 수 있다. if( score > 80 ) {    if( score > 90 )       printf("당신의 학점은 A입니다.\n");   else        printf("당신의 학점은 B입니다.\n"); } else  {   if( score > 70 )       printf("당신의 학점은 C입니다.\n");       printf("당신의 학점은 D 또는 F입니다.\n"); if-else 절 안에 다른 if-else절이 포함될 수 있다.

연속적인 if if( 조건식1 ) 문장1; else if( 조건식2 ) 문장2; else if( 조건식3 ) 문장3; else       문장1; else if( 조건식2 )       문장2; else if( 조건식3 )       문장3; else       문장4;

연속적인 if

학점 결정 예제 #include <stdio.h> int main(void) { int score;                  printf("성적을 입력하시오: ");         scanf("%d", &score);         if (score >= 90)                 printf("합격: 학점A\n");         else if (score >= 80)                 printf("합격: 학점B\n");         else if (score >= 70)                 printf("합격: 학점C\n");         else if (score >= 60)                 printf("합격: 학점D\n");         else                 printf("불합격: 학점F\n");        return 0; } 성적을 입력하시오: 88 학점 B

문자 분류 예제 // 문자들을 분류하는 프로그램 #include <stdio.h> int main(void) {         char ch;                  printf("문자를 입력하시오: ");         scanf("%c", &ch);   if( ch >= 'A' && ch <= 'Z' )                        printf("%c는 대문자입니다.\n", ch);         else if( ch >= 'a' && ch <= 'z' )                   printf("%c는 소문자입니다.\n", ch);         else if( ch >= '0' && ch <= '9' )                   printf("%c는 숫자입니다.\n", ch);         else                 printf("%c는 기타문자입니다.\n", ch);   return 0; } 문자를 입력하시오: c c는 소문자입니다.

실습: 이차 방정식 사용자에게 이차 방정식의 계수 a, b, c를 입력하도록 한다. 만약 a가 0이면 근은 -c/b이다. 판별식 (𝑏 2 −4𝑎𝑐)가 음수이면 실근은 존재하지 않는다. 위의 조건에 해당되지 않으면 다음과 같은 공식을 이용하여 실근을 구한다. 𝑥= −𝑏± 𝑏 2 −4𝑎𝑐 2𝑎

실행 결과 계수 a를 입력하시오: 1 계수 b를 입력하시오: -4 계수 c를 입력하시오: 3 방정식의 근은 3.000000입니다. 방정식의 근은 1.000000입니다.

알고리즘 사용자로부터 a, b, c를 읽는다. if a == 0이면 일차 방정식의 근을 구한다. 실근을 출력한다. else 판별식을 계산한다. if 판별식 >= 0 근의 공식을 이용하여 실근을 구한다. 실근은 없다는 메시지 출력

소스 #include <stdio.h> #include <math.h> int main(void) { 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); else { 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("실근이 존재하지 않습니다"); return 0; 계수 a를 입력하시오: 1 계수 b를 입력하시오: -4 계수 c를 입력하시오: 3 방정식의 근은 3.000000입니다. 방정식의 근은 1.000000입니다.

실습: 산술 계산기 수식을 입력하시오 (예: 2 + 5) >>2 + 5 2 + 5 = 7

소스 #include <stdio.h> int main(void) { char op; int x, y, result; printf("수식을 입력하시오"); printf("(예: 2 + 5) "); printf(">>"); scanf("%d %c %d", &x, &op, &y);

소스 if( op == '+' ) result = x + y; else if( op == '-' ) printf("지원되지 않는 연산자입니다. "); printf("%d %c %d = %d ", x, op, y, result); return 0; } 수식을 입력하시오 (예: 2 + 5) >>2 + 5 2 + 5 = 7

중간 점검 n의 값이 각각 -1, 0, 5인 경우에 다음의 코드에 의하여 생성되는 출력은 무엇인가? 2. 컵의 사이즈를 받아서 100ml미만은 small, 100ml이상 200ml미만은 medium, 200ml 이상은 large라고 출력하는 연속적인 if-else 문을 작성하시오. if( n == 0 ) printf("A"); else if( n > 3 ) printf("B"); else printf("C");

switch 문 여러 가지 경우 중에서 하나를 선택하는데 사용 switch(조건식) { case c1: 문장1; break;       문장1;       break; case c2:       문장2;   ... case cn:       문장n; default:       문장d; } 제어식의 값이 c1이면 실행된다. 제어식의 값이 c2이면 실행된다. 일치하는 값이 없으면 실행된다.

switch 문의 순서도

예제 int main(void) { int number; printf("정수를 입력하시오:");         scanf("%d", &number);         switch(number) {                 case 0:                         printf("없음\n");                         break ;                 case 1:                         printf("하나\n");                 case 2:                         printf("둘\n");                 default:                         printf("많음\n");                         break;         } } 정수를 입력하시오: 1 하나

사용자가 1을 입력하는 경우 1 switch(number) { case 0: printf("없음\n"); break ;                 default:                         printf("많음\n");                         break;         } }

break가 생략되는 경우 1 break를 만날 때까지 계속 문장을 실행합니다. switch(number) { case 0:                         printf("없음\n");                         break ;                 case 1:                         printf("하나\n");                 case 2:                         printf("둘\n");                 default:                         printf("많음\n");                         break;         } } break를 만날 때까지 계속 문장을 실행합니다.

의도적인 break생략 2개의 경우를 하나로 묶어서 처리하기 위하여 이러한 기법을 사용 switch(number) {         {                 case 0:                         printf("없음\n");                         break;                 case 1:                         printf("하나\n");                 case 2:                 case 3:                         printf("두서너개\n");                 default:                         printf("많음\n");         } 2개의 경우를 하나로 묶어서 처리하기 위하여 이러한 기법을 사용

default 문 5 어떤 case문과도 일치되지 않는 경우에 선택 switch(number) { case 0:                         printf("없음\n");                         break ;                 case 1:                         printf("하나\n");                 case 2:                         printf("둘\n");                 default:                         printf("많음\n");                         break;         } } 어떤 case문과도 일치되지 않는 경우에 선택

switch 문과 if-else 문 int main(void) { int number; scanf("%d", &number);   if( number == 0 )       printf("없음\n");   else if( number == 1 )       printf("하나\n");   else if( number == 2 )       printf("둘\n");   else        printf("많음\n"); } switch(number)         {                 case 0:                         printf("없음\n");                         break;                 case 1:                         printf("하나\n");                 case 2:                         printf(“둘\n");                 default:                         printf("많음\n");         }

switch 문에서 주의할 점 switch(number) { case x: // 변수는 사용할 수 없다. printf("x와 일치합니다. "); break; case (x+2): // 변수가 들어간 수식은 사용할 수 없다. printf("수식과 일치합니다. "); case 0.001: // 실수는 사용할 수 없다. printf("실수"); case “001”: // 문자열은 사용할 수 없다. printf("문자열"); }

예제 // 달의 일수를 계산하는 프로그램 #include <stdio.h> int main(void) {         int month, days;                  printf("달을 입력하시오: ");         scanf("%d", &month);        

예제 switch(month) { case 2: days = 28; break; case 4: case 6: case 9:         {                 case 2:                         days = 28;                         break;                 case 4:                 case 6:                 case 9:                 case 11:                         days = 30;                 default:                         days = 31;         }         printf("%d월의 일수는 %d입니다.\n", month, days);         return 0; } 달을 입력하시오: 12 12월의 일수는 31입니다.

실습: 산술 계산기 #include <stdio.h> int main(void) { char op; int x, y, result; printf("수식을 입력하시오"); printf("(예: 2 + 5) "); printf(">>"); scanf("%d %c %d", &x, &op, &y);

실습: 산술 계산기 switch(op) { case '+': result = x + y; break; case '-': … default: printf("지원되지 않는 연산자입니다. "); } printf("%d %c %d = %d ", x, op, y, result); return 0; 수식을 입력하시오 (예: 2 + 5) >>2 + 5 2 + 5 = 7

도전문제 위의 프로그램은 단순히 산술 연산자만을 처리한다. 비트 연산자(&, |, ^)을 추가하여 보자. 비트 연산자인 경우에는 16진수로 입력값과 결과값을 출력하여 보자.

중간 점검 1. case 절에서 break 문을 생략하면 어떻게 되는가? 2. 변수 fruit의 값이 각각 1, 2, 5일 때, 다음의 코드의 출력을 쓰시오. switch(fruit) { case 1: printf("사과“); break; case 2: printf(“배“); case 3: printf("바나나“); default: printf(“과일“); }

Goto문 조건없이 어떤 위치로 점프 사용하지 않는 것이 좋음

예제 // 구구단출력프로그램 #include <stdio.h> int main(void) { int i = 1; loop:         printf("%d * %d = %d \n", 3, i, 3 * i);         i++;         if( i == 10 ) goto end;         goto loop; end:         return 0; } 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

Q & A