컴퓨터 프로그래밍 2 Week 1: C 프로그래밍의 구성요소

80
컴컴컴 컴컴컴컴컴 2 Week 1: C 컴컴컴컴컴컴 컴컴컴컴 건건건건건 건건건건건건 건건건건 : 건 건 건 1

description

컴퓨터 프로그래밍 2 Week 1: C 프로그래밍의 구성요소. 건국대학교 컴퓨터공학과 담당교수 : 최 윤 정. 이번 장에서 학습할 내용. 이번 장에서는 C 프로그램을 이루는 구성요소 들을 살펴봅니다 . * 주석 * 변수 , 상수 * 함수 * 문장 * 출력 함수 printf () * 입력 함수 scanf () * 산술 연산 * 대입 연산 . 일반적인 프로그램의 형태. - PowerPoint PPT Presentation

Transcript of 컴퓨터 프로그래밍 2 Week 1: C 프로그래밍의 구성요소

Page 1: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

컴퓨터 프로그래밍 2

Week 1: C 프로그래밍의 구성요소

건국대학교 컴퓨터공학과담당교수 : 최 윤 정

1

Page 2: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

이번 장에서 학습할 내용

2

* 주석* 변수 , 상수* 함수* 문장* 출력 함수 printf()* 입력 함수 scanf()* 산술 연산* 대입 연산

Page 3: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

일반적인 프로그램의 형태

데이터를 받아서 ( 입력단계 ), 데이터를 처리한 후에 ( 처리단계 ), 결과를 화면에 출력 ( 출력단계 ) 한다 .

3

데이터처리데이터입력 결과출력

Page 4: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

덧셈 프로그램 #1

4

/* 두개의 숫자의 합을 계산하는 프로그램 */#include <stdio.h>

int main(void){

int x; // 첫번째 정수를 저장할 변수int y; // 두번째 정수를 저장할 변수int sum; // 두 정수의 합을 저장하는 변수

x = 100;y = 200;

sum = x + y;printf(" 두수의합 : %d", sum);

return 0;}

주석

전처리기 지시어

함수

변수선언

문장

연산

Page 5: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

프로그램의 실행 화면

두수의 합 : 300

Page 6: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석 (comment)Q) 주석 (comment) 이란 무엇인가 ?

6

A) 프로그램이 하는 작업을 설명하는 글

Q) 주석은 반드시 있어야 하는가 ?A) 컴파일러는 주석을 무시한다

Q) 주석은 누구를 위한 것인가 ?A) 주석은 프로그램을 읽는 사람을 위한 것이다

Q) 주석의 역할은 무엇인가 ?A) 주석은 프로그램의 가독성을 높인다 .

Q) 좋은 주석은 어떤 것인가 ?A) 코드를 반복하거나 코드를 설명하기 보다는 코드를 작성한 의도를

나타내는 것이 좋다 .

Page 7: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석 (comment)

/* 두개의 숫자의 합을 계산하는 프로그램 */ #include <stdio.h>

int main(void){ ... ... ...}

주석

주석은 코드를 설명하는 글입니다 .

Page 8: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

3 가지 방법의 주석

/* 한줄로 된 주석 */ /* ------------------------

저자 : 홍길동날짜 : 2013.3.4여러 줄로 이루어진 주석-------------------------- */

// 여기서부터 줄의 끝까지 주석

Page 9: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석의 예

• 주석

/* This program accepts an array of N elements and a key. ** Then it searches for the desired element. If the search ** is successful, it displays "SUCCESSFUL SEARCH". ** Otherwise, a message "UNSUCCESSFUL SEARCH" is displayed. */

#include <stdio.h>void main(){…}

Page 10: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

들여쓰기

들여쓰기 (indentation): 같은 수준에 있는 문장들을 왼쪽 끝에서 몇 자 안으로 들여쓰는 것

Page 11: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석과 들여 쓰기가 없다면 ..

#include <stdio.h>int main(void) { int x; int y; int sum; x = 100; y = 200; sum = x + y; printf(" 두수의 합 : %d", sum); return 0; }

실행은 되지만 무슨

처리를 하고 있는

프로그램인지 알기가

힘들고 또한 들여쓰기가

안 되어 있어서 같은

수준에 있는 문장들을

구분하기 힘듭니다 .

Page 12: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석을 붙이는 방법/* 한줄로 된 주석 */

int x; /* 줄의 일부분인 주석 */

/* 여러 줄로 된 주석 */

12

// 이 줄은 전체가 주석이다 .int x; // 변수 x 선언

/* * 파일 이름 : add.c * 설명 : 두수를 더하는 프로그램 * 작성자 : In-Gook Chun *//************************************* * 파일 이름 : add.c * 설명 : 두수를 더하는 프로그램 * 작성자 : In-Gook Chun *************************************/

Page 13: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

프로그램 유지 보수

프로그램 유지 보수 (maintenance) 는 숨겨진 버그를 찾아내어 없애

고 , 바뀌어가는 환경에 따라 거기에 맞춰서 프로그램을 바꾸어가는

과정

이때 주석이 있다면 , 프로그램을 빠르게 읽을 수 있고 , 따라서

변경해야 하는 곳을 빠르게 찾을 수 있다 .

Page 14: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석의 힘

다음과 같은 문장을 살펴보자 .

주석이 있다면

return ((s1 < s2) ? s1 : s2);

return ((s1 < s2) ? s1 : s2); /* 두 개의 값 중에서 작은 쪽을 취한다 . */

Page 15: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주의사항

주석은 C 명령어가 아니다 . 컴파일러는 프로그램 안의 모든 주석을 무시한다 . 주석은 사람을 위한 것이고 , 주석의 외부에 있는

프로그래밍 문장이 컴퓨터를 위한 것이다 .

Page 16: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석을 붙인 예제

/* C 완전 초보자 가이드의첫 번째 코드 리스팅1994 년부터 새로운 프로그래머들을 교육하고 있음 ! *//* 딘 밀러 *//* 파일 이름 Chapter3ex1.c */

/* 명절 선물에 들어가는 돈의 합계 */#include <stdio.h>

main(){

int gift1, gift2, gift3, gift4, gift5; /* 비용을 저장하는 변수들 */int total; /* 합계를 저장하는 변수 */

/* 각 선물의 비용을 묻는다 . */printf(" 엄마를 위하여 얼마나 돈을 쓸 것인가요 ?");scanf(" %d", &gift1);

Page 17: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주석을 붙인 예제

scanf(" %d", &gift2);printf(" 동생을 위하여 얼마나 돈을 쓸 것인가요 ?");scanf(" %d", &gift3);printf(" 형을 위하여 얼마나 돈을 쓸 것인가요 ?");scanf(" %d", &gift4);printf(" 가장 좋아하는 C 프로그래밍 저자를 ");printf(" 위하여 얼마나 돈을 쓸 것인가요 ?");scanf(" %d", &gift5);

/* 선물에 쓰이는 비용의 합계를 계산한다 . */total = gift1 + gift2 + gift3 + gift4 + gift5;

printf(" 선물 비용의 합계는 $%d 입니다 .", total);return 0; /* 프로그램을 종료한다 . */

}

Page 18: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

여백 추가하기

여백 (white space) 은 화면상으로는 표시되지 않지만 가독성을

위해서는 소스 코드에 추가되는 스페이스나 빈 줄을 뜻한다 . 여백을 이용하여서 가독성을 높이는 것이 중요하다 .

#include <stdio.h>main() {

float a, b; printf(" 보너스를 얼마나 받았습니까 ?"); scanf(" %f",

&a); b = .85 * a; printf(" 만약 15% 를 자선단체에 기부하더라도 당신은 아직 %.2f 를 가지고 있습니다 .", b); return 0;}

Page 19: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

여백 추가하기

#include <stdio.h>main(){

float a, b;

printf(" 보너스를 얼마나 받았습니까 ? ");scanf(" %f", &a);

b = .85 * a;printf(" 만약 15% 를 자선단체에 기부하더라도 당신은 ");printf(" 아직 %.2f 을 가지고 있습니다 .", b);return 0;

}

Page 20: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

Lab: 주석을 추가해보자

#include <stdio.h>

main(){

printf(" 빛의 속도는 %fkm/s 입니다 . ", 300000);printf(" 중력 가속도는 %fm/s 제곱입니다 . ", 9.8);

printf(" 나는 %d 살이고 키는 %f 입니다 . ", 20, 175.5);printf(" 나의 이름은 %s 입니다 . ", " 김철수 ");printf(" 나는 현재 %d 장까지 학습을 끝냈습니다 . ", 4);

return 0;}

Page 21: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

Solution/** 파일 이름 : comment.c* 작성자 : 김철수* 작성날짜 : 2015.1.10*/

#include <stdio.h> // 해더 프로그램 포함

int main() { // 메인 프로그램

// 실수는 %f 를 사용하여서 출력한다 . 소수점 6 자리까지 출력된다 . printf(" 빛의 속도는 %fkm/s 입니다 . ", 300000);

// 실수는 %f 를 사용하여서 출력한다 . 소수점 6 자리까지 출력된다 . printf(" 중력 가속도는 %fm/s 제곱입니다 . ", 9.8);

// 정수는 %d 를 사용하여서 출력한다 . printf(" 나는 %d 살이고 키는 %f 입니다 . ", 20, 175.5);

// 문자열은 %s 를 사용하여서 출력한다 . printf(" 나의 이름은 %s 입니다 . ", " 김철수 ");

// 정수는 %d 를 사용하여서 출력한다 . printf(" 나는 현재 %d 장까지 학습을 끝냈습니다 . ", 4);

return 0;}

Page 22: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

들여쓰기

22

/* 두개의 숫자의 합을 계산하는 프로그램 */#include <stdio.h>

int main(void){

int x; // 첫번째 정수를 저장할 변수int y; // 두번째 정수를 저장할 변수int sum; // 두 정수의 합을 저장하는 변수

x = 100;y = 200;

sum = x + y;printf(" 두수의합 : %d", sum);

return 0;}

프로그램의 시작부분에는 파일이름이나 작성자 , 작성일자 , 프로그램의 내용등을 적는다

문장들의 의미 ( 의도 ) 를 주석으로 설명한다 .

빈줄을 넣어서 의미별로 구분을 한다 .

같은 내용의 처리이면 탭이나 공백을 넣어 들여쓰기를 한다 .

Page 23: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

전처리기

#include #define

23

프로그램이 컴파일 되기 직전에 #include 문장은 지정된 파일의 내용으로 대체된다 .

#include <filename>#include “filename”

Page 24: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

전처리기

# 기호로 시작 헤더 파일 stdio.h 를 소스 코드 안에 포함 stdio.h 는 표준 입출력에 대한 라이브러리 함수의 정의가 들어 있다 .

24

#include <st-dio.h>

#include <stdio.h>

int main(void){ printf(“Hi!\n”); return 0;}

...int printf(char *,...);int scanf(char *,...);...

int main(void){ printf(“Hi!\n”); return 0;}소스 파일 전처리된 소스 파일 오브젝트 파일

전처리기 컴파일러

기본 입출력 함수를 위한 #include 파일 (standard I/O 를 의미한다 )

Page 25: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

전처리기 : 상수 정의하기 #define CONSTANT constantDefinition

#define MAX 21#define MYNAME " 홍길동 "#define PI 3.14159

if (employeeAge < MAX)if (employeeAge < 21)

위에서 상수로 정의한 이후에는 코드내에서 변경할 수 없다 .PI = 544.34; /* 허용되지 않는다 ! */

상수는 프로그램이 실행될 때마다 변경될 필요가 있는 값들에게 대해서도 사용하면 좋다 .

프로그램에서 CONSTANT 가 나타나는 위치를 찾아서 constantDefinition 으로 교체한다 .

Page 26: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

연습 : 나만의 설정 파일 만들기

// 이 파일의 이름은 my_def.h 로 합니다 .

#define KIDS 2#define PI 3.14#define MAX 100

#include <stdio.h>#include “my_def.h” // 사용자 헤더화일은 “ “로 !

int mian(){

……………………..}

Page 27: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수 (function): 특정 기능을 수행하는 처리 단계들을 괄호로 묶어서 이름을 붙인 것

함수는 프로그램을 구성하는 기본적인 단위 ( 부품 )

함수의 종류 사용자 정의 함수 : 직접 작성하는 함수 라이브러리 함수 : 컴파일러가 제공하는 함수

함수

27

함수

입력

출력

Page 28: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수의 구조

함수의 출력 타입

함수의 시작

함수의 몸체

함수가 수행하는 작업에 해당하는 문장들이 들어간다.

함수의 종료

int main(void){… … … … …

}

함수의 입력 타입, void는 입력이 없다는 의미이다.

함수의 이름

Page 29: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수안에 들어 있는 것Q) 그렇다면 함수 안에 들어 있는 것은 무엇인가 ?

29

함수

입력

출력

문장 1; 문장 2; 문장 3; ...

위에서 아래로 순차적으로 실행된다 .

A) 함수 안에는 함수가 처리하는 처리 단계 (문장 ) 들이 중괄호 안에 나열

Page 30: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수 호출Q) 함수 안에 있는 문장들은 언제 실행되는가 ?

30

A) 함수가 호출되면 실행된다 . Q) 함수 호출은 어떻게 하는가 ?

A) 함수의 이름을 적어주면 된다 .

함수 A 문장 1; 문장 2; 문장 3; ...

함수 B 문장 1; 문장 2; 문장 3; ...

함수 C 문장 1; 문장 2; 문장 3; ...

함수B();

프로그램

Page 31: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수 작업을 수행하는 문장은 함수 안에 들어가야 함

int main(void){

}

• 여기에 작업을 넣을 것 .

Page 32: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수 호출Q) 많은 함수 중에서 가장 먼저 실행되는 것은 ?

32

A) main() 함수이다 . 다른 함수들은 main() 으로부터 직간접적으로 호출된다 .

input() 문장 1; 문장 2; 문장 3; ...

output() 문장 1; 문장 2; 문장 3; ...

process() 문장 1; 문장 2; 문장 3; ...

main()

input();process();output();

Page 33: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수의 구조 함수 = 함수 헤더 + 함수 몸체

33

int main(void){ int x; int y; int sum;

x = 100; y = 200;

sum = x + y; printf(" 두수의 합 : %d", sum);

return 0;}

함수헤더

함수의 몸체 시작

함수의 몸체

함수의 몸체 끝

Page 34: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

함수 헤더와 몸체

34

int main(void)· int: 함수가 반환하는 값의 형태· main: 함수 이름· (void): 입력이 없다는 의미

함수 헤더

{......return 0;

}함수 몸체

· 함수가 하는 작업에 해당· 문장들로 구성된다 .· 문장이 하나도 없을 수도 있다 .

return 문장

· 함수를 종료하면서 값을 반환· 일반적으로 main 함수의 경우 , 0

값은 성공 , 1 은 실패를 의미

Page 35: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

return 문장

Page 36: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

main() 은 누가 호출할까 ?

printf()문장 1;문장 2;문장 3;...

main()

printf(“..”);

함수를 실행하려면 함수를

호출하면 됩니다.

운영체제

Page 37: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

중간 점검 모든 C 프로그램에 반드시 있어야 되는 함수는 무엇인가 ? 함수의 시작과 끝을 나타내는 기호는 무엇인가 ? 모든 문장은 어떤 기호로 끝나는가 ?

Page 38: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

문장 문장 (statement): 컴퓨터에게 작업을 지시하는 단위 문장의 끝은 ; 으로 끝난다 .

38

Page 39: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수

39

int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수

Q) 변수란 무엇인가 ?A) 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간

Page 40: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수의 종류 변수는 데이터를 담는 상자로 생각할 수 있다 .

2데이터

x

변수의 이름

변수의 이름자료형

int x;

Page 42: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수의 이름 식별자 (identifier): 변수나 함수의 이름 식별자를 만드는 규칙

식별자는 영어의 대소문자 , 숫자 , 밑줄 문자 _ 로 이루어진다 .

식별자는 숫자로 시작할 수 없다 . 대문자와 소문자를 구별하며 C 언어의 키워드와 똑같은

이름은 허용되지 않는다 .

식별자의 예 : s, s1, student_number: 올바른 식별자 $s, 2nd_student , int: 잘못된 식별자

42

‘A ’ 12 123.456ch i fvalue

Page 43: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수 선언 변수 선언 : 컴파일러에게 어떤 타입의 변수가

사용되는지를 미리 알리는 것

43

int x;

자료형

변수의 이름

Page 44: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

자료형 자료형 (data type): 변수가 저장할 데이터가 정수인지

실수인지 , 아니면 또 다른 어떤 데이터인지를 지정하는 것

44

Page 45: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수 선언

45

int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수

x y sum

각 변수는 정수를 저장 할 수 있다 .

메모리 공간에 변수 가 만들어지고이름이 붙여진다 .

Page 46: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

상수 상수 (constant): 그 값이 프로그램이 실행하는 동안 변하지 않는

46

x = 100;y = 200; 상수

12 12

변수 상수

변수는 실행도중에값을 변경할 수 있으나 상수는

한번 값이 정해지면 변경이 불가능합니다 .

Page 47: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

수식 수식 (expression): 변수 , 상수 , 연산자 등으로 구성된 식 수식은 결과값을 가진다 .

47

Page 48: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

중간 점검 int 형 변수 i 를 선언하는 문장을 작성하여 보자 . double 형 변수 f 를 선언하는 문장을 작성하여 보자 . 변수 선언은 함수의 어떤 위치에서 하여야 하는가 ?

Page 49: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

수식

수식 (expression): 피연산자와 연산자로 구성된 식 수식은 결과값을 가진다 .

sum = x + y;

x 가 3 일때 수식 x2 - 5x + 6 의 값을 계산하라 .

int x, y;

x = 3;y = x * x - 5 * x + 6;printf(“%d\n”, y);

Page 50: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

대입 연산 대입 연산 (assignment

operation): 변수에 값을 저장하는 연산

대입 연산 = 배정 연산 = 할당 연산

50

x = 100;y = 200;

다음과 같은 연산은 변수 x 의 값을 하나 증가시킨다 .

수학적인 의미와는 다름

x = x + 1;

Page 51: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

산술 연산

연산 연산자 C 수식 수학에서의 기호

덧셈 + x + y x + y

뺄셈 - x - y x - y

곱셈 * x * y xy

나눗셈 / x / y x / y

나머지 % x % y x mod y

Page 52: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

산술 연산

= +

5

sum3

y

2x

sum = x + y;

Page 53: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

정리

x y sum

100x

200y sum

100x

200y

300sum

#include <stdio.h>int main(void){int x;int y;int sum;

x = 100;y = 200;

sum = x + y;

printf("두수의 합: %d", sum);

return 0;}

컴퓨터 내부프로그램

변수가 생성된다.

변수에 값이 대입된다.

덧셈 연산이 수행된다.

Page 54: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

printf() printf(): 모니터에 출력을 하기 위한 표준 출력 라이브러리

함수

54

sprintf() ?

fprintf() ?

Page 55: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

문자열 출력

인수 (argument): 함수에게 전달하는 데이터 문자열 (string): 문자들을 여러 개 나열한 것

55

printf("Hello World!\n");

H e l l o W o

Hello Wo

printf()

Page 56: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

문자열 출력하기

printf(" 코드를 작성한다 ");printf("C 를 학습한다 ");

코드를 작성한다 C 를 학습한다

Page 57: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

이스케이프 시퀀스

Page 58: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

변수값 출력

58

Page 59: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

형식 지정자

형식 지정자 : printf() 에서 값을 출력하는 형식을 지정한다 .

형식 지정자 의미 예 실행 결과

%d 10 진 정수로 출력 printf(“%d \n”, 10); 10

%f 실수로 출력 printf(“%f \n”, 3.14); 3.14

%c 문자로 출력 printf(“%c \n”, ‘a’); a

%s 문자열로 출력 printf(“%s \n”,

“Hello”);Hello

입력문에서도 같은 형식으로 사용합니다 .위 기본 형식지정자 외에 다른 형식들에 대해서도 알아보세요

Page 60: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

여러 개의 변수값 출력

Page 61: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

주의 !

Page 62: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

printf() printf() 는 문자 , 숫자 , 단어들을 화면으로 출력한다 .

Page 63: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

예제

printf("%s %d %f %c", " 철수 ", 14, -8.76, 'X');철수 14 –8.760000 X

printf("%f %.3f %.2f %.1f", 4.5678, 4.5678, 4.5678, 4.5678);

4.567800 4.568 4.57 4.6

Page 64: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

Lab: 출력

빛의 속도는 "0.000000km/s" 입니다 .중력 가속도는 '9.800000m/s 제곱 ' 입니다 .정수는 %d 로 표시하고 실수는 %f 로 표시한다 .컴퓨터가 삑소리를 내게 하려면 \a 를 출력한다

Page 65: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

통합 예제

#include <stdio.h>

int main(){

printf(" 빛의 속도는 \”%fkm/s\” 입니다 . ", 300000.0);printf(" 중력 가속도는 \’m/s 제곱 \’ 입니다 . ", 9.8);

printf(" 정수는 %%d 로 표시하고 실수는 %%f 로 표시한다 . ");printf(" 컴퓨터가 삑소리를 내게 하려면 \a 를 출력한다 . ");

return 0;}

Page 66: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

학습 정리 : printf() printf() 는 데이터를 어떻게 출력할 것인지를 결정하는 제어 문자열이 필요하다 . C 는 데이터를 출력하는 방법을 지정해주지 않으면 절대 모른다 . 여러분이 변환

문자를 이용하여서 구체적으로 지정하여야 한다 . 줄바꿈 문자나 탭 , 따옴표 , 백슬래시 등을 출력할 때는 이스케이프 시퀀스를

사용한다 . 이것은 컴퓨터 벨을 울릴 때도 마찬가지이다 . 부동소수점 숫자를 출력할 때 %f 변환 문자의 사이에 숫자를 넣으면 소수점 이하

자리수를 제어할 수 있다 . 기본적으로 6 자리의 소수점 이하 자리수를 출력한다 .

Page 67: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

덧셈 프로그램 #2 사용자로부터 입력을 받아보자 .

67

Page 68: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

두번째 덧셈 프로그램 : long / double 으로 수정하세요// 사용자로부터 입력받은 2 개의 정수의 합을 계산하여 출력#include <stdio.h>

int main(void){

int x; // 첫번째 정수를 저장할 변수int y; // 두번째 정수를 저장할 변수int sum; // 2 개의 정수의 합을 저장할 변수

printf(" 첫번째 숫자를 입력하시오 :"); // 입력 안내 메시지 출력scanf("%d", &x); // 하나의 정수를 받아서 x 에 저장

printf(" 두번째 숫자를 입력하시오 :"); // 입력 안내 메시지 출력scanf("%d", &y); // 하나의 정수를 받아서 x 에 저장

sum = x + y; // 변수 2 개를 더한다 .printf(" 두수의 합 : %d", sum); // sum 의 값을 10 진수 형태로 출력

return 0; // 0 을 외부로 반환}

68

첫번째 숫자를 입력하시오 :10 두번째 숫자를 입력하시오 :20 두수의 합 : 30

Page 69: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

scanf() scanf(): 키보드로부터 입력을 하기 위한 라이브러리

함수

69

scanf("%○ %○...", & 변수 1, & 변수 2, ...);

Page 70: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

형식지정자

형식 지정자 의미 예

%d 정수를 10 진수로 입력한다 scanf(“%d”, &i);

%f float 형의 실수로 입력한다 . scanf(“%f”, &f);

%lf double 형의 실수로 입력한다 . scanf(“%lf”, &d);

%c 문자 형태로 입력한다 . scanf(“%c”, &ch);

%s 문자열 형태로 입력한다 . char s[10]; scanf(“%s”, &s);

Page 71: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

실수 입력시 주의할 점

float ratio = 0.0;scanf("%f", &ratio);

double scale = 0.0;scanf("%lf", &scale);

• float 형은 %f 사용

• double 형은 %lf 사용

Page 72: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

중간 점검 scanf() 를 시용하여서 사용자로부터 실수값을 받아서

double 형의 변수 value 에 저장하는 문장을 작성하여 보자 .

Page 73: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

연봉 계산 프로그램/* 저축액을 계산하는 프로그램 */#include <stdio.h>

int main(void){

int salary; // 월급int deposit; // 저축액

printf("월급을 입력하시오 : ");scanf("%d", &salary);

deposit = 10 * 12 * salary;

printf("10 년 동안의 저축액 : %d\n", deposit);

return 0;}

73

월급을 입력하시오 : 200 10 년 동안의 저축액 : 24000

사용자로부터 월급을 입력받는다 .

월급에 10*12 를 곱하여 10 년동안의 저축액을 계산한다 .

결과를 출력한다 .

Page 74: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

원의 면적 프로그램/* 원의 면적을 계산하는 프로그램 */#include <stdio.h>

int main(void){

float radius; // 원의 반지름float area; // 면적

printf(" 반지름을 입력하시오 : ");scanf("%f", &radius);

area = 3.14 * radius * radius;

printf("원의 면적 : %f\n", area);

return 0;}

74

반지름을 입력하시오 : 5.0 원의 면적 : 78.500000

원의 면적 계산

Page 75: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

환율 계산 프로그램/* 환율을 계산하는 프로그램 */ #include <stdio.h>

int main(void) {         float rate;   // 원 /달러 환율         float usd;    // 달러화         int krw;       // 원화                  printf("달러에 대한 원화 환율을 입력하시오 : "); // 입력 안내 메시지         scanf("%f", &rate);                          // 사용자로부터 환율입력

  printf("원화 금액을 입력하시오 : ");           // 입력 안내 메시지         scanf("%d", &krw);                           // 원화 금액 입력

 usd = krw / rate;                             // 달러화로 환산                  printf("원화 %d원은 %f달러입니다 .\n", krw, usd);  // 계산 결과 출력

  return 0;                                      // 함수 결과값 반환 }

75

달러에 대한 원화 환율을 입력하시오 : 928.78 원화 금액을 입력하시오 : 1000000 원화 1000000원은 1076.681204달러입니다 .

Page 76: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

실습 : 사각형의 둘레와 면적

필요한 변수는 w, h, area, perimeter 라고 하자 . 변수의 자료형은 실수를 저장할 수 있는 double 형으로

하자 . area = w*h; perimeter = 2*(w+h); w

h

Page 77: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

프로그램의 실행 화면

사각형의 넓이 : 50.000000사각형의 둘레 : 30.000000

Page 78: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

코딩#include <stdio.h>int main(void){

double w; double h; double area;double perimeter;

w = 10.0;h = 5.0;area = w*h;perimeter = 2*(w+h);

printf(" 사각형의 넓이 : %lf", area); printf(" 사각형의 둘레 : %lf", perimeter);return 0;

}

사각형의 넓이 : 50.000000사각형의 둘레 : 30.000000

Page 79: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

도전문제

1. 한번의 printf() 호출로 변수 perimeter와 area 의 값이 동시에 출력되도록 변경하라 .

2. 변수들을 한 줄에 모두 선언하여 보자 . 3. w와 h 의 값을 사용자로부터 받도록 변경하여 보자 . %lf

를 사용한다 .

* 정수를 입력받아 해당사이즈의 삼각형을 출력합니다 .1) 직각삼각형2) 정삼각형3) * , ★ , ☆ 등의 기호로 출력하기

Page 80: 컴퓨터 프로그래밍  2  Week 1: C  프로그래밍의 구성요소

Q & A

80