프로그래밍실습 제 5 강.

Slides:



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

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
누구나 즐기는 C언어 콘서트 제5장 조건문.
제6장 조건문.
Power Java 제6장 조건과 반복.
재료수치해석 HW # 박재혁.
6장 명령문.
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
프로그래밍실습 전체 강의 목록.
Chapter 04 C 연산자의 이해.
어서와 Java는 처음이지! 제3장선택과 반복.
프로그래밍실습 제 11 강.
고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 06. 선택문.
For/While Syntax & Practice!!
프로그래밍실습 제 4 강.
2주차: 변수, 수식, Control Flow.
Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
두근두근 파이썬 수업 3장 계산해봅시다..
KIM HEESANG PL/SQL 2 KIM HEESANG
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 09 반복문.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
MATLAB
C 언어 교육 02 주차 – scanf & 반복문과 조건문 교육부장 조하정.
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
연산자 (Operator).
제어문 & 반복문 C스터디 2주차.
에어 조건문.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
제 5장 제어문 Hello!! C 언어 강성호 김학배 최우영.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
제3장 연산자(Operators) 문봉근.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
2007 1학기 08 반복문.
Chapter 08. 함수.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
이차방정식과 이차함수의 관계 이차함수의 그래프와 축의 위치 관계 이차방정식 의 그래프와 축이 만나는 점의 좌표는 이차방정식
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Homework #8 (실습 #7) [1/2] 다음을 수행하는 PHP 프로그램을 작성하여 프로그램과 결과물을 프린트하여 제출한다. sin(45º), cos(45º), tan(45º)를 출력하는 프로그램을 작성하시오. 피보나치 수를 구하는 함수 fib($n)을 작성하고,
제 22 강 논리식 및 논리 값 shcho.pe.kr.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
I. 수와 식 1. 유리수와 순환소수.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제5장 조건문 출처: pixabay.
5. 1 두 수를 입력받아 큰 수를 구하는 순서도를 작성하시오
Presentation transcript:

프로그래밍실습 제 5 강

강의 내용 최댓값의 계산 논리연산자 두 양의 정수의 평균을 구하여 출력하는 프로그램 거스름돈 계산 제어문 if … else if … else 의 사용 배수 판정 조건문의 중첩 C언어 에서의 참과 거짓 실수끼리 비교하는 것은 매우 위험 이차방정식의 실근을 구하는 예 거스름돈 지폐 및 동전의 수 계산 제어문 switch의 사용 switch 문 사용시 주의 사항 break를 의도적으로 생략한 switch문 물음표연산자

(최댓값의 계산) 4개의 정수를 입력받아 그 중 최댓값을 출력하는 프로그램을 작성하여보자. 입출력 예: 4개의 정수를 입력하시오: 12 36 77 -98 최댓값: 77 #include<stdio.h> main() { int a,b,c,d,max; printf("4개의 정수를 입력하시오: "); scanf("%d %d %d %d",&a,&b,&c,&d); if(a>b) max=a; else max=b; if(c>max) max=c; if(d>max) max=d; printf("최댓값: %d\n",max); }

논리연산자 && : “그리고(and)”의 의미. &&의 앞 뒤가 모두 참이어야 참이 된다. || : “또는(or)”의 의미. ||의 앞 뒤 식중 하나라도 참이면 참이 된다. ! : “부정(not)”의 의미. ! 뒤에 나오는 식의 참, 거짓을 바꾼다. #include<stdio.h> main() { int a,r,s; printf("양의 정수를 입력하십시오: "); scanf("%d",&a); r=a%2; s=a%3; if(r==0 || s==0) // 논리연산자의 사용 printf("입력한 수는 2의 배수이거나 3의 배수입니다.\n"); else printf("입력한 수는 2의 배수도 아니고 3의 배수도 아닙니다.\n"); }

다음 프로그램은 어떤 일을 하는지 생각해 보자. #include<stdio.h> main() { int num1,num2,sum; double average; printf("두 양의 정수를 입력하십시오: "); scanf("%d %d",&num1,&num2); if(num1>0 && num2>0){ sum=num1+num2; average=(double)sum/2.; printf("두 수의 평균: %.1f\n",average); } else printf("오류: 입력이 잘못 되었습니다.\n");  두 양의 정수의 평균을 구하여 출력하는 프로그램

(거스름돈 계산) 100원짜리 동전 하나를 가지고 1원부터 100원까지의 범위에 있는 물건을 하나 구입하는 경우 거스름돈이 얼마인지 계산하는 프로그램을 작성하여 보자. 몇 가지 입출력 예를 보면 다음과 같다. 물건 가격을 입력하십시오.(1-100): 46 거스름돈: 54원 물건 가격을 입력하십시오.(1-100): 100 거스름돈: 0원 물건 가격을 입력하십시오.(1-100): 110 입력 오류.

#include<stdio.h> main() { int price,change; printf("물건 가격을 입력하십시오.(1-100): "); scanf("%d",&price); if(price>100 || price<0) printf("입력 오류.\n"); else{ change=100-price; printf("거스름돈: %d원\n",change); }

제어문 if … else if … else 의 사용 #include<stdio.h> main() { int score; char grade; printf("점수를 입력하십시오: "); scanf("%d",&score); if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else grade='F'; printf("학점은 %c입니다.\n",grade); }

(배수 판정) 정수 하나를 입력 받아 입력된 정수가 2의 배수인지, 3의 배수인지, 6의 배수인지 판별하는 프로그램을 작성해 보자. 다음은 입출력의 다양한 예이다. 정수 입력: 12 6의 배수 정수 입력: 9 3의 배수 정수 입력: 14 2의 배수 정수 입력: 23 => 2의 배수도 아니고 3의 배수도 아님

#include<stdio.h> main() { int a,r1,r2; printf("정수 입력: "); scanf("%d",&a); r1=a%2; r2=a%3; if(r1==0 && r2==0) printf("=> 6의 배수\n"); else if(r1==0) printf("=> 2의 배수\n"); else if(r2==0) printf("=> 3의 배수\n"); else printf("=> 2의 배수도 아니고 3의 배수도 아님\n"); }

(조건문의 중첩) 앞의 예는 조건문을 중첩 사용하여 다음과 같이 바꿀 수도 있다. #include<stdio.h> main() { int a,r1,r2; printf("정수 입력: "); scanf("%d",&a); r1=a%2; r2=a%3; if(r1==0) if(r2==0) // if문의 중첩 사용 printf("=> 6의 배수\n"); else printf("=> 2의 배수\n"); else if(r2==0) printf("=> 3의 배수\n"); printf("=> 2의 배수도 아니고 3의 배수도 아님\n"); }

(C언어 에서의 참과 거짓) C언어에서 0은 거짓을 나타내며, 0이 아닌 모든 수는 참을 나타낸다. #include<stdio.h> main() { int a=3,b=0; if(a==3) printf("출력1\n"); if(!a==3) printf("출력2\n"); // ! :참, 거짓을 반대로 바꿈 if(1) printf("출력3\n"); // 0이 아닌 수는 참을 나타냄 if(0) printf("출력4\n"); // 0은 거짓을 나타냄 if(3) printf("출력5\n"); // 0이 아닌 수는 참을 나타냄 if(b=0) printf("출력6\n"); // b에 저장된 0은 거짓을 나타냄 if(a=3) printf("출력7\n"); // a에 저장된 3은 참을 나타냄 } 실행 결과: 출력1 출력3 출력5 출력7

주의: C언어에서 실수끼리 비교하는 것은 매우 위험하다. #include<stdio.h> main() { double a; a=0.1+0.7; if(a==0.8) // 실수끼리 비교하는 것은 위험하다. printf("0.1+0.7은 0.8입니다.\n"); else printf("0.1+0.7은 0.8이 아닙니다.\n"); } 출력: 0.1+0.7은 0.8이 아닙니다. 이유: C언어는 내부적으로 2진수를 사용한다. 10진수에서 유한소수인 실수가 2진수에서는 무한소수가 될 수 있다. 이 경우 반올림 오차가 발생한다.

이차방정식의 실근을 구하는 예 아래 예는 이차방정식 ax2 + bx + c = 0 의 실근을 구하는 프로그램이다. #include<stdio.h> #include<math.h> main() { double a, b, c, D, r1, r2; printf("a, b, c 입력: "); scanf("%lf %lf %lf",&a,&b,&c); D=b*b-4.*a*c; //판별식 if(D>0.){ r1=(-b+sqrt(D))/(2.*a); r2=(-b-sqrt(D))/(2.*a); printf("두 실근: %g, %g\n",r1, r2); } else if(D==0.){ // 실수끼리 등호(==)로 비교하는 것은 좋지 않음 r1=-b/(2.*a); printf("중근: %g\n",r1); else printf("실근이 존재하지 않습니다.\n");

앞의 C코드를 다음과 같이 개선해 보자. #include<stdio.h> #include<math.h> main() { double a, b, c, D, r1, r2, epsilon=1.e-10, sqD; printf("a, b, c 입력: "); scanf("%lf %lf %lf",&a,&b,&c); D=b*b-4.*a*c; if(D>=epsilon){ sqD=sqrt(D); // 반복되는 복잡한 식은 한 번만 계산 r1=(-b+sqD)/(2.*a); r2=(-b-sqD)/(2.*a); printf("두 실근: %g, %g\n",r1, r2); } else if(fabs(D)<epsilon){ //등호(==)로 실수를 비교하는 것을 피함 r1=-b/(2.*a); printf("중근: %g\n",r1); else printf("실근이 존재하지 않습니다.\n");

거스름돈 지폐 및 동전의 수 계산 10,000원짜리 지폐 하나로 가격이 500원부터 10,000원까지의 범위에 있는 물건을 하나 구입하는 경우, 거스름돈이 얼마인지 계산하고 거스름돈의 1,000원짜리 지폐의 수와 500원짜리 동전의 수가 각각 몇 개인지도 계산하는 프로그램을 작성하여 보자. (단, 물건 가격은 500의 배수이며, 거스름돈은 1,000원짜리지폐와 500원 짜리 동전만 사용한다. ) 입출력 예를 보면 다음과 같다. 물건값을 입력하십시오.(500~10000, 500의배수): 3500 거스름돈: 6500원 1000원짜리 지폐: 6장 500원짜리 동전: 1개

힌트: int price,change,n1000,n500; price: 물건 가격 change: 거스름돈 n1000: 거슬러 줄 1000원짜리 지폐의 수 n500: 거슬러 줄 500원 동전의 수 change=10000-price; n1000=change/1000; n500=change%1000/500;

완성된(?) C코드 #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); }

개선된 C코드 #include<stdio 개선된 C코드 #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); if(price>10000 || price<0) printf("입력 오류.\n"); else if(price%500!=0) else{ change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); }

앞의 예는 다음과 같이 바꿔도 된다. #include<stdio 앞의 예는 다음과 같이 바꿔도 된다. #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); if(price>=500 && price <=10000 && price%500==0){ change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); } else printf("입력 오류.\n");

제어문 switch의 사용 #include<stdio.h> main() { int score; char grade; printf("점수를 입력하십시오: "); scanf("%d",&score); score/=10; switch(score){ case 10: grade='A'; break; case 9: case 8: grade='B'; case 7: grade='C'; default: // score가 9, 8, 7이 아닌 모든 경우 grade='F'; } printf("학점은 %c입니다.\n",grade);

switch 문 사용시 주의 사항 switch(정수식){ ……… } 의 형태이며 switch 다음 괄호 ( ) 안에는 정수식만 가능하다. 전체의 ……… 은 반드시 중괄호{ } 로 둘러싼다. 각각의 case는 정수식의 값에 따라 수행하며 해당되는 값이 없을 때는 default의 내용을 수행한다. 또한 각 case는 case 정수: 와 같이 끝에 콜론 : 을 붙여준다. 선택된 case를 수행한 뒤 switch를 벗어나려면 break;를 사용한다. break;가 없는 경우 break;를 만나기 전까지 나타나는 모든 내용을 수행하게 되므로 주의해야 한다. 각 case마다 수행해야 할 내용이 여러 줄이라도 중괄호{ }로 묶어줄 필요는 없다.

다음 프로그램의 내용이 무엇인지 이해해 보자. #include<stdio.h> main() { int a,r; printf("양의 정수를 입력하십시오: "); scanf("%d",&a); r=a%3; switch(r){ case 1: printf("a를 3으로 나눈 나머지는 1입니다..\n"); printf("a에 2를 더하면 3의 배수가 됩니다.\n"); break; case 2: printf("a를 3으로 나눈 나머지는 2입니다..\n"); printf("a에 1를 더하면 3의 배수가 됩니다.\n"); default: printf("a는 3의 배수 입니다..\n"); }

break를 의도적으로 생략한 switch문 #include<stdio.h> main() { int point,a; printf("보너스 포인트를 입력하십시오.\n"); scanf("%d",&point); if(point>=10000) a=3; else if(point>=5000) a=2; else if(point>=1000) a=1; else a=0; printf("사은품 내역:\n"); switch(a){ case 3: printf("김치 냉장고\n"); case 2: printf("전자레인지\n"); case 1: printf("주방 세제 및 비누, 치약 세트\n"); break; default: printf("없음(포인트가 부족합니다.)\n"); }

물음표연산자 x = (조건식) ? y : z의 형태 조건식이 참이면 y값을 x에 저장 조건식이 거짓이면 z값을 x에 저장 예: 두 수의 최댓값을 구하는 예 #include<stdio.h> main() { int a, b, max; scanf("%d%d",&a,&b); max=(a>b)?a:b; printf("a=%d b=%d max=%d\n",a,b,max); } C코드: 04_01.c ~ 04_09b.c