420 likes | 1.05k Views
최신 C 프로그래밍 언어 문제해결에서 프로그래밍까지. 개정판. 5 장 : 선택 제어 구조 도서출판 - 인터비젼. 5 장 선택 제어 구조. 학습목표 1. 선택 제어구조의 문법을 이해한다 . 2. if-else 제어구조 이해 3. switch case 제어구조의 이해 4. 선택 구조 활용 방법을 이해한다. 목차. 5 장 선택 제어 구조 예습시간 1. 선택 제어 구조 - if else 구조 [ 기초다지기 ] if else 구조 익히기
E N D
최신 C프로그래밍 언어문제해결에서 프로그래밍까지 개정판 5장 : 선택 제어 구조 도서출판 - 인터비젼
5장 선택 제어 구조 • 학습목표 • 1. 선택 제어구조의 문법을 이해한다. • 2. if-else 제어구조 이해 • 3. switch case 제어구조의 이해 • 4. 선택 구조 활용 방법을 이해한다.
목차 • 5장 선택 제어 구조 • 예습시간 • 1. 선택 제어 구조 - if else 구조 • [기초다지기] if else 구조 익히기 • 2. 선택 제어 구조 - switch case 구조 • [기초다지기] switch 구조 익히기 • 실습시간 • if else 구조 활용 • switch case 구조 활용 • 연습시간 • 선택 제어문 분석
선택 제어 구조 – if else 구조 예습시간 – 1 교시
선택 제어 구조 – if else 구조 • 학습 개요 • 선택 제어 구조 중 if 구문에 대해 알아본다. • 기본 if 문 및 if else 구조의 이해 • 중첩 if 구문의 이해 • 다중 선택 구조 (if ~ else if 구조)의 이해
선택 제어 구조 – if else 구조 • 제어구조의 종류 • 순차 구조 • 한 문장 수행 후 순차적으로 다음 문장 수행 (일반적 프로그램 흐름) • 선택 구조 • 조건에 따른 분기 처리 • 반복 구조 • 일정 구간의 반복 처리 • if 선택 구조 기본 • if 문은 조건에 따른 제어 흐름을 결정 • if 문에서 사용되는 조건 식은 논리와 관계 연산자를 포함 • if 구조는 단지 참인 경우만을 처리
선택 제어 구조 – if else 구조 • if 선택 구조 예
선택 제어 구조 – if else 구조 • if else 구조 • 참과 거짓인 경우를 나누어 처리
선택 제어 구조 – if else 구조 • 중첩 if 구조 • if문 안에 다른 if 문이 포함되어 표현되는 구조 • 조건에 의해 만족되는 결과에 대한 조건 비교 • 모든 조건 구조는 다른 조건 구조를 포함할 수 있다. • 중첩 if 문 사용 예 • 01 #include <stdio.h> • 02 void main(){ • 03 int x, y; • 04 scanf("%d", &x); • 05 if(x > 0){ • 06 y = scanf("%d", &y); • 07 if(y > 0){ • 08 printf(" x 와 y는 모두 양수이다.“); • 09 }else{ • 10 printf(" x는 양수 y는 0이나 음수이다."); • 11 }else{ • 12 printf("x는 음수입니다."); • 13 } • 14 }
선택 제어 구조 – if else 구조 • 다중 선택 구조 (if ~ else if 구조) • if else 구조의 확장 • 조건에 맞지 않을 경우 다시 비교가 이루어짐 • 비교 및 판단의 조건이 여러 개 일 경우 else 절 이하에 다시 if문 포함 시키는 구조 • 사용 형식
선택 제어 구조 – if else 구조 • 다중 선택 구조 활용 예 • 조건에 만족하는 등급 계산 프로그램 • 01 #include<stdio.h> • 02 void main(){ • 03 int score; • 04 char grade; • 05 // 성적 입력 • 07 printf("성적을 입력하세요 : “); • 06 scanf(“%d", &grade); • 07 if(score >= 90) { // 90~ 100 사이 • 08 grade = 'A'; • 09 }else if(score >= 80){ // 80 ~ 89 사이 • 10 grade = 'B'; • 11 }else if(score >= 70){ // 70 ~ 79 사이 • 12 grade = 'C'; • 13 }else if(score >= 60){ // 60 ~ 69 사이 • 14 grade = 'D'; • 15 }else{ // 60 미만 • 16 grade = 'F'; • 17 } • 18 printf(" 성적 %d 의 등급은 %c 입니다. \n", score, grade); • 19 } 등급 조건 성적 : 90 ~ 100 등급 : ‘A' 성적 : 80 ~ 89 등급 : ‘B' 성적 : 70 ~ 79 등급 : ‘C' 성적 : 60 ~ 69 등급 : ‘D' 성적 : 60 미만 등급 : ‘F'
[기초다지기] if else 구조 익히기 • 1. if문을 이용한 프로그램 (덧셈/뺄셈) 선택 구문 • 분석 • 입력(A/S) 값에 의해 선택적으로 수행하는 구문 • 입력 문자에 대해 처음 if 문에서 A를, 두 번째 if 문에서 B를 비교하고 A일 경우 덧셈을, B일 경우 뺄셈을 수행하는 if 선택 구조 • 이프로그램은 if-else구조로 변경 가능 • <다음장>
[기초다지기] if else 구조 익히기 • 1. if문을 이용한 프로그램 선택 구문 <계속> • 분석 • if 문을 else if 구문으로 변경 • 처음 if문의 비교가 만족할 때 그 다음의 if 문을 비교하지 않는 구조 • 입력은 A 또는 S로 두 작업을 모두 수행하는 것이 아니라 단지 하나만 수행 • 하나의 조건 만족 시 더 이상의 비교는 필요하지 않는 경우에 사용
[기초다지기] if else 구조 익히기 • 2. 1번에서 곱셈,나눗셈, 다른 입력 처리 작업 추가 • 분석 • 나눗셈 결과는 실수 값을 나타내야 하므로 입력과 출력 결과 모두 실수 형으로 변경 • (A,S,M,D) 작업 중 하나의 입력을 통해 if조건에서 이 4개의 작업 중 하나가 선택되었는지를 확인한 후 두 수의 입력을 통해 덧셈, 뺄셈, 곱셈 나눗셈을 수행 • 나눗셈일 경우 분모가 0인지를 비교하여 0일 경우 에러메시지 출력 후 종료
선택 제어 구조 – switch case 구조 예습시간 – 2 교시
선택 제어 구조 – switch case 구조 • 학습 개요 • 선택 구조의 다른 형태인 switch case 구조를 이해한다. • if 구조와의 차이점과 switch 문의 특징에 대해 알아본다. • break 문을 다룬다.
선택 제어 구조 – switch case 구조 • switch 구조 • if문은 참과 거짓이라는 두 조건에 대한 분기 제공 • 3개 이상의 조건에 대해 중첩된 if나 다중 if문 사용으로 인해 프로그램의 복잡성 증가 • 이러한 문제 해결을 위해 switch 구조 사용 • 다중 조건에 대한 분기 구조 제공 switch case 구조
선택 제어 구조 – switch case 구조 • switch 구문의 특징 • 1. switch문에서 비교 식은 정수형 상수 값이어야 한다. • 2. case 문의 label 값은 정수나 문자 상수 또는 정수를 나타내는 식이다. • 정확한 표기 : • case 1 : // label 1은 정수 상수 이므로 적합 • case 'A' : // label 값이 문자 상수 ‘A'이므로 적합 • case 'B'*2 : // label 값이 정수를 만드는 식이므로 적합 • 잘못된 표기 : • case 3.14 : // label은 실수 값이 올 수 없다. • case a > b && b< c : // label에 관계나 논리 연산을 할 수 없다. • case "Sunday" : // label에 문자열이 올 수 없다. • 3. default : 문장은 생략될 수 있다.
선택 제어 구조 – switch case 구조 • switch case 활용 예 • 두 개의 값과 하나의 연산자 입력을 통한 계산 결과 출력 • 01 #include <stdio.h> • 02 void main(){ • 03 int x, y; • 04 char op; • 05 printf("두값과 연산자를 입력하여라 (예 10 + 4 ) \n"); • 06 printf("연산자의 종류는 ("+,-,*,/)이다. \n"); • 07 scanf("%d %c %d", &x, &op, &y); • 08 switch(op){ • 09 case '+' : printf(" x + y = %d \n", x+y); • 10 case '-' : printf(" x - y = %d \n", x-y); • 11 case '*' : printf(" x * y = %d \n", x*y); • 12 case '/' : printf(" x / y = %d \n", x/y); • 13 } • 14 } • 입력 데이터 : 4 – 2 출력 결과 : ? 4 – 2 = 2 4 * 2 = 8 4 / 2 = 2
선택 제어 구조 – switch case 구조 • break 문 • 해당 지점에 속한 블록을 빠져 나오는 역할을 수행 • 자신이 속한 하나의 블록("{ }")만을 빠져 나온다. • break문을 포함하여 이전 프로그램 수정 • 01 #include <stdio.h> • 02 void main(){ • 03 int x, y; • 04 char op; • 05 printf("두값과 연산자를 입력하여라 (예 10 + 4 ) \n"); • 06 printf("연산자의 종류는 ("+,-,*,/)이다. \n"); • 07 scanf("%d %c %d", &x, &op, &y); • 08 switch(op){ • 09 case '+' : printf(" x + y = %d \n", x+y); • 11 break; • 12 case '-' : printf(" x - y = %d \n", x-y); • 13 break; • 14 case '*' : printf(" x * y = %d \n", x*y); • 15 break; • 16 case '/' : printf(" x / y = %d \n", x/y); • 17 } • 18 }
[기초다지기] switch 구조 익히기 • 1. 예습 1교시 문제 2번을 Switch 구조로 변경
[기초다지기] switch 구조 익히기 • 1. 예습 1교시 문제 2번을 Switch 구조로 변경 • 분석 • 다중 if 구조는 switch case 구조로 변경 가능 • switch(input)에서 input 값은 정수형(문자) 상수 값이어야 한다 • 이 프로그램에서 input는 문자 상수로 조건을 만족 • 하나의 case 문이 끝나는 지점에 break 문을 작성 • case 구문에 break 문이 존재하지 않을 경우 다음 case 구문을 계속해서 실행
if else 구조 활용 실습시간 – 1 교시
if else 구조 활용 • 학습개요 • 예제를 통한 if else 구조 학습 • 개인 수입에 대한 세금을 차등 적용하여 수입에 따른 세금 계산 프로그램
if else 구조 활용 • 개인 수입에 대한 세금 계산 프로그램 • 문제 정의 • 개인에 대한 소득세를 계산하는 프로그램이다. 개인의 수입금액에 따라 세금이 차등 부가 되어진다. 또한 개인의 생활등급 역시 세금 계산에 포함된다. 세금 부가에 대한 조건식은 관련 함수 및 식 부분에 기술된다. 이때 각 개인의 소득에 대한 세금을 계산하여라. • 입/출력 조건 • 입력 조건 • 1) 월 수입액 • 2) 등급( 1: 생활 보호 대상자, 2: 국가 유공자, 3 : 일반 ) • 출력 조건 • 1) 수입에 대한 총 세금 영수증 • 2) 출력 형식 : (예 : 월 수입액 : 2200,000, 등급 : 일반) • (다음 장 계속)
if else 구조 활용 • 개인 수입에 대한 세금 계산 프로그램 • 출력 조건 • 2) 출력 형식 : • 예 : 월 수입액 : 2200,000, • 등급 : 일반 • 관련 함수 및 식 • 세금 계산 조건식 ********************************* 월 수입액 : 2200000 등 급 : 3 ********************************* 금액 세율 세금 --------------------------- 500000 2% 10000 500000 5% 25000 1000000 7% 70000 200000 10% 20000 --------------------------- 총 세금 : 125000원 ===========================
if else 구조 활용 • 개인 수입에 대한 세금 계산 알고리즘 (플로우차트)
if else 구조 활용 • 프로그램 작성 • 1 단계 • 115페이지의 프로그램을 빈 칸을 포함하여 작성하자. • 2 단계 • 아래의 입력 결과에 대한 출력 값을 작성하자. • 입력 조건 • 등급 1, 월 수입액 : 670000 • 등급 2, 월 수입액 : 1700000 • 등급 3, 월 수입액 : 2850000 ①. income < RANGE_5 ②. if(grade == 1 || grade == 2) ③. (int)(remainder * (RATE_5 / 100.0)); ④. else if(income < RANGE_20) ⑤. else ⑥. grade ==1 ⑦. (int)((RANGE_20 - RANGE_10) * (RATE_5 / 100.0));
switch case 구조 활용 실습시간 – 2 교시
switch case 구조 활용 • 학습개요 • 다중 조건에 대한 처리 • switch 구조를 이용한 해당 년도에 대한 띠(동물이름) 알아 맞히기 프로그램 작성
switch case 구조 활용 • 해당 년도에 대한 띠(동물이름) 알아 맞히기 • 문제 정의 • 음력으로 모든 해는 상징하는 동물 이름이 존재한다. 12지간이라 불러지는 이것은 12년 주기로 반복되고 이 동물은 자(쥐), 축(소), 인(호랑이), 묘(토끼), 진(용), 사(뱀), 오(말), 미(양), 신(원숭이), 유(닭), 술(개), 해(돼지)로 이루어져 있다. 년도를 입력하면 그 해의 동물이름을 출력하는 프로그램을 작성하여라. • 입/출력 조건 • 입력 조건 • 1) 년도 (예 :2004) • 출력 조건 • 1) 해당 년도에 해당되는 동물 이름 • 관련 함수 및 식 • 1) 년도의 입력은 1900년 이후의 값으로 한다. • 2) 1900년을 상징하는 동물은 자(쥐)이다. • 1900 % 12 = 4 (쥐의 해) • 3) 동물은 12년의 주기로 반복된다.
switch case 구조 활용 • 알고리즘 (플로우차트)
switch case 구조 활용 • 프로그램 작성 • 1 단계 • 121페이지의 프로그램을 빈 공간을 포함하여 작성한 후 animal.c 이름을 저장한다. • 2 단계 • 프로그램이 정상적으로 동작할 경우 다음과 같은 입력에 대한 출력 결과를 작성하여라. • 입력 조건 • 입력 년도 : 1990, 입력년도 : 1850, 입력년도 : 1968 ①. year < 1900 ②. switch(gap) ③. break ④. case 1 ⑤. default:
The End. 선택 제어 구조