23
© 2015 천인국 All rights reserved 어서와 C언어는 처음이지 11

어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

어서와 C언어는 처음이지어서와 C언어는 처음이지

제11장

Page 2: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

경로선택을위한데이터검사

if문장 관계연산자(relational operator)

Page 3: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

데이터검사하기

만약내가충분한돈을벌면, 우리는이태리로간다. 만약구두가맞지않으면, 환불한다. 만약외부기온이높으면, 잔디에물을준다.

Page 4: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

관계연산자

Page 5: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

관계연산자의예

int i = 5;int j = 10;int k = 15;int l = 5;

i == lj < kk > ij != l

i > jk < jk == l

참거짓

Page 6: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

관계연산자의결과값

C가관계연산자를계산할때마다, 1 또는 0의값이생성된다.

a = (4 < 10); // (4 < 10)가참이므로변수 a에 1이저장된다. b = (8 == 9); // (8 == 9)가거짓이므로변수 b에 0이저장된다.

Page 7: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

if문장if (condition){ 하나이상문장들의블록; }

Page 8: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

// 완전 초보자 가이드 3판 11장 예제 #1// 파일 Chapter11ex1.c

/* 이 프로그램은 사용자에게 탄생 연도를 질문하여 현재의 나이를 계산한다.또 날짜가 잘못 입력되어서 미래의 날짜가 입력됐는지도 검사한다.사용자가 윤년에 태어났으면 이를 알려준다. */

#include <stdio.h>#define CURRENTYEAR 2014

main(){

int yearBorn, age;

printf("몇 년에 태어나셨습니까?");scanf(" %d", &yearBorn);

Page 9: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

// if 문장은 데이터 검증을 하는 데 사용된다.// 사용자가 입력한 탄생 연도가 올바른지를 검사한다.// 이 문장은 yearBorn이 2013년 이후일 경우에만 실행된다.

if (yearBorn > CURRENTYEAR){

printf("진짜요? 아직 태어나지 않으셨다고요?");printf("다른 연도를 입력하시겠습니까?");printf("몇 년에 태어나셨습니까?");scanf(" %d", &yearBorn);

}age = CURRENTYEAR – yearBorn;

printf("따라서 금년 생일이 지나면 %d살이 되시는군요!",age);

Page 10: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

// 두 번째 if 문장은 사용자가 태어난 연도가 윤년인지를 검사한다.// 윤년일 경우에만 if의 몸체가 실행된다.

if ((yearBorn % 4) == 0){

printf("윤년에 태어나셨군요--쿨하시네요!");}

return 0;}

Page 11: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

if-else 문장if (condition) { 하나이상문장의블록; } else{ 하나이상문장의블록; }

Page 12: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

// 완전 초보자 가이드 3판 11장 예제 #2// 파일 Chapter11ex2.c

/* 이 프로그램은 사용자에게 탄생 연도를 질문하여 현재의 나이를 계산한다.또 날짜가 잘못 입력되어서 미래의 날짜가 입력됐는지도 검사한다.사용자가 윤년에 태어났으면 이를 알려준다. */

#include <stdio.h>#define CURRENTYEAR 2014

main(){

int yearBorn, age;

printf("몇 년에 태어나셨습니까?");scanf(" %d", &yearBorn);

// if 문장은 데이터 검증을 하는 데 사용된다.// 사용자가 입력한 탄생 연도가 올바른지를 검사한다.// 이 문장은 yearBorn이 2013년 이후일 경우에만 실행된다.if (yearBorn > CURRENTYEAR){

printf("진짜요? 아직 태어나지 않으셨다고요?");printf("시간 여행을 축하합니다!");

}

Page 13: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

else{

age = CURRENTYEAR - yearBorn;printf("따라서 금년 생일이 지나면 %d살이 되시는군요!",

age);

// 두 번째 if 문장은 사용자가 태어난 연도가 윤년인지를검사한다.

// 윤년일 경우에만 if의 몸체가 실행된다.

if ((yearBorn % 4) == 0){

printf("윤년에 태어나셨군요--쿨하시네요!");}

}return 0;

}

Page 14: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

// 완전 초보자 가이드 3판 11장 예제 #2// 파일 Chapter11ex2.c

/* 이 프로그램은 사용자에게 1에서 10까지의 척도를 사용하여 행복의 정도를질문한다.그리고 구간에 따라서 2줄로 된 메시지를 출력한다.1-2, 3-4, 5-7, 8-10과 같은 구간을 사용한다. */

#include <stdio.h>

main(){

int prefer;printf("지금 얼마나 행복한지 1부터 10까지의 숫자 중 어떤 것으로 표현할

수 있나요?");scanf(" %d", &prefer);

// 사용자의 행복 수준이 입력되면 연속된 if 문장이 이 행복 수준을 검사하게 된다.// 행복 수준이 감소하는 순서로 검사한다. 4개의 경우 중에서 하나가 실행된다.

if (prefer >= 8){

printf("좋군요!");printf("모든 일들이 잘 되고 있군요!");

}

Page 15: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

else if (prefer >= 5){

printf("평균보다는 높으시네요, 그렇죠?");printf("곧 더 좋아지실 겁니다!");

}else if (prefer >= 3){

printf("좋다고 느끼지 못해서 안타깝네요.");printf("곧 모든 일이 좋아지기를 빕니다...");

}else{

printf("조금만 참으세요—좋아질 겁니다, 그렇죠?");printf("해뜨기 전이 가장 어두운법이죠.");

}

return 0;}

Page 16: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

행복의정도를 1부터 10까지의숫자중어떤것으로표현할수있나요?5평균보다는높으시네요, 그렇죠?곧더좋아지실겁니다!

실행결과

Page 17: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

Lab: 짝수 or 홀수 사용자로부터정수를받아서짝수인지홀수인지를판별해주는프로그램을작성하여보자.

정수를입력하시오: 2323은홀수입니다.

Page 18: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

#include <stdio.h>

main(){

int num;

printf("정수를 입력하시오: ");scanf("%d", &num);

if ((num % 2) == 0) //나머지가 0인지를 검사한다.printf("%d은 짝수입니다. ", num);

elseprintf("%d은 홀수입니다. ", num);

return 0;}

Page 19: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

Lab: 시각에따른인사출력 사용자로부터현재시각을입력받는다. 현재시각이 10시이전이면“Good morning”을출력한다. 현재시각이 20시이전이면 “Good day”를출력한다. 나머지시각에는 “Good evening”을출력한다.

현재시각을입력하시오: 23Good evening

Page 20: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

#include <stdio.h>

main(){

int time;

printf("현재 시각을 입력하시오: ");scanf("%d", &time);

if (time < 10)printf("Good morning");

else if (time < 20)printf("Good day");

elseprintf("Good evening");

return 0;}

Page 21: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

학습정리

데이터를비교할때는관계연산자를사용한다. 관계연산자의결과가참이면 1이생성되고거짓이면 0이생성된다. 데이터를비교하기위해 if를사용하고 if 검사가실패하면 else를이용해서무엇을해야되는지를지정한다.

if 코드와 else 코드를될수있으면중괄호로감싸도록하자. 중괄호안의코드는관계연산자의결과에따라서실행되거나실행되지않는다.

if나 else 다음에세미콜론을찍으면안된다. 세미콜론은 if 문이나else 문안에들어있는문장들의끝에만붙여야한다.

Page 22: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

Q & A

Page 23: 어서와C언어는처음이지 - gnu.ac.krrts.gnu.ac.kr › class › 2016fall › prog_intro › week10 › gnu-w10-c... · 2016-11-03 · © 2015 천인국All rights reserved 어서와C언어는처음이지

© 2015 천인국 All rights reserved

LAB1. 연도를입력받아윤년인지평년인지를판단하는프로그램을작성하시오. 윤년의조건은다음과같다.

4년에한번씩윤년이다. 100년째되는해는윤년이아니다. 400년째되는해는윤년이다.

예를들어, 2008을입력하면 “윤년”이라고출력해야하고, 2011을입력하면 “평년”이라고출력한다.