• 검색 결과가 없습니다.

정수 다루기의 기초

N/A
N/A
Protected

Academic year: 2022

Share "정수 다루기의 기초"

Copied!
44
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

::

정수 다루기의 기초

: 변수, 연산, 출력

27

(2)

학습 목표

정수의 선언 방법, 연산, 출력을 이용,

간단한 계산 프로그램을 만들어본다.

출력 방법

(정수)변수의 개념, 선언문

간단한 4칙 연산 방법

assignment

해당 교재: 5장

(3)

3

MJU CE C Language Programming

CFL 과의 차이

괄호를 사용한다.

어떤 타입의 변수인지 지정해 주어야 한다.

(4)

정수 상수의 출력

printf("128\n");

 출력 결과: 128

printf("%d", 128 );

 출력 결과: 128

Format String

출력의 형태를 결정 출력할 수식

값을 결정

"format 한다"라는 말은 틀에 (format에) 짜맞춘다는 뜻.

(5)

5

MJU CE C Language Programming

정수 수식 값의 출력

printf("12*12");

 출력 결과: 12*12

printf("%d", 12*12);

 출력 결과: 144

Format String

출력의 형태를 결정

출력할 수식

값을 결정

(6)

printf의 역할

포맷 스트링을 출력하는 것이 기본 임무.

스트링 내부에 %d 로 시작하는 것들은 뒤에 오는 파 라메터의 값을 포맷에 끼워 넣어 하나의 스트링으로 만 든다음 출력한다.

printf("답은 %d", 12*12);

1. 12*12를 계산, 144를 얻어낸다.

2. %d 자리에 144를 끼워 넣어 "답은 144"로 만든다.

3. "답은 144"를 출력한다.

(7)

7

MJU CE C Language Programming

실습(lab09_01/괄호 넣기)

128

3

의 값을 출력하는 프로그램

(8)

수식의 출력

printf("x=%d\n", 12*12+2*1);

printf("2pi 값은

%lf

입니다.\n ", 3.14*2);

decimal - 십진수(정수)

long floating point - 부동 (浮動)소수점

부동소수점은 나중에 다루자.

(9)

9

MJU CE C Language Programming

여러개의 format

printf("%d + %d 는 %d입니다.\n", 3, 4, 3+4);

출력 결과: 3 + 4

7입니다.

(10)

Compiler messages

printf("%d + %d = %d.\n", 3 + 4 + 5);

printf("%d + %d 는 입니다.\n", 3, 4, 3+4);

num_format.c:3: warning: too few arguments for format

num_format.c:4: warning: too

many arguments for format

(11)

11

MJU CE C Language Programming

예외: % 기호의 출력

printf("답은 3.4 % 입니다.\n");

 오류

printf("답은 3.4 %% 입니다.\n");

 출력: 답은 3.4 % 입니다.

기호의 출력은 \\ \" 등으로 쓰지만 퍼센트는 \% 가 아니고 %%이다.

(12)

lab09_02 / 괄호 넣기

여러 개의 데이터 출력 연습

(13)

:: C언어의 변수

(14)

CFL 과의 차이

미리 정해진 변수가 없다.

"선언"을 해줘야 사용할 수 있다.

int, float 말고도 다른 유형도 있다.

(15)

15

MJU CE C Language Programming

변수란?

변수/變數/variable (cf. 常數) – 수시로 값이 변할 수 있다

이진수를 담는 그릇

선언되어 있어야 사용 가능

변수의 이름은 identifier

sum

CFL의 변수

변수 상수

연산자(operator)

(16)

CFL의 변수

미리 정해짐

바꿀 수도 있음

없는 변수는 못씀

정수 (integer)

실수(float)

선언된 변수

선언 안된 변수!

변수의 선언

(17)

17

MJU CE C Language Programming

C 언어의 변수의 선언과 사용

#include <stdio.h>

int main(){

int sum; // 선언문. 반드시 명시적 선언 필요.

sum = 128 ; // 실행문

printf("%d\n", sum); // 실행문

}

(18)

정수 변수의 선언문

int sum;

변수 이름은 sum , 담을 내용은 정수 (integer)

int i, j, k; // 여러개를 선언할 때

int _this, that;

int -value; // incorrect

identifier 만들기? 제 7강 참조

(19)

19

MJU CE C Language Programming

흔한 실수

int number; sum; average; (Wrong)

int number, sum, average; (Right)

int number; int sum; int average; (Right)

int number; // 이번에 더할 수

int sum; // 지금까지의 합계

int average; // 평균 값

Better!

(20)

변수의 선언 연습 09_03

(21)

21

MJU CE C Language Programming

실행 문: 정수 연산

+ - * / % =

정수 연산의 결과는 정수 (5, 123, 0)

나눗셈(/)연산의 결과는 몫

나머지(%) 연산의 결과는 나머지

(22)

복제(Assignment) 연산

'=' 우측의 수식을 먼저 계산 (evaluation)

결과 값을 좌측 변수에 저장(즉, 복제)

예:

a = 123 ; // 상수

b = a + 45; // 수식의 결과(임시 메모리) 를 b 에 복사

수학의 = 기호는 좌우가 같다는 '선언'의 의미 C언어의 = 기호는 우측 값을 좌측 변수에

복사하는 '실행'의 의미

(23)

23

MJU CE C Language Programming

lab09_04 / div.c

int big, small;

big = 18753;

small = 17;

위와 같은 경우에 big을 small로 나눈 몫과 나머지를 줄바꿈으로 구분하여 출력하라.

(두 수가 붙어나오면 어느 부분이 몫인지 구분이 안되 므로)

(24)

자기 자신도 우변에 가능

k = 90;

 k = k + 5;

우변 먼저 계산:

1. sum의 현재값(즉, 90) + 5 가 임시 저장된다.

2. 임시 저장 값이 sum에 저장된다.

결과: 95가 저장됨.

(25)

25

MJU CE C Language Programming

선언문과 실행문

선언문 없이 변수 사용 불가

#include <stdio.h>

int main(){

sum = 128 ;

printf("%d\n", sum); // 실행문

}

(26)

lab09_05/no_dcl.c 배포

배포된 파일을 컴파일 해보고 컴파일 결과 에러 메시지 를 한글로 번역하여 vi로 error.txt 파일에 작성하여

submit로 제출한다.

(27)

27

MJU CE C Language Programming

선언문과 실행문

선언문 먼저, 실행문 나중

int main(){

 sum

= 128 * 128 ; // 아차차!

int sum;

printf("%d\n", sum);

}

(28)

선언문과 실행문

선언문 먼저, 실행문 나중

int main(){

int sum1;

sum1 = 128 * 128 ;

int sum2;

sum2 = 129 + 12345;

}

(29)

29

MJU CE C Language Programming

좋은 변수 이름

이름은 변수의 역할을 반영!!!

int num_of_students; // 학생 수 int sum;

int average;

또다른 스타일

int numOfStudents;

// 첫 글자 제외, 각 단어의 시작 글자를 대문자로

(30)

나쁜 변수 이름

Too short:

int a; int s; // Bad

Too long:

int

the_number_of_students_in_the_class_where_t he_professor_is_a_female;

// 편집에 불편. 상세한 내용은 코멘트로 처리

int nStudentFP; // 여자교수가 담당한 반의 학생수

int nStudentMP; // 남자교수가 담당한 반의 학생수

코딩 표준 참조

(31)

31

MJU CE C Language Programming

변수의 초기 값(CFL)

초기 값을 주지 않은 변수는

 쓰레기 값 (garbage)

(32)

변수의 초기 값 (C언어)

#include <stdio.h>

int main(){

int sum; // 선언은 되었는데...

printf("%d\n", sum);

// garbage

}

(33)

33

MJU CE C Language Programming

Compiler 경고 메시지

(34)

초기 값: 두 방법

#include <stdio.h>

int main(){

int sum;

sum = 0;

printf("%d\n",

sum); // 0

}

#include <stdio.h>

int main(){

int sum = 0;

printf("%d\n",

sum); // 0

}

Assignment Initialization

(35)

35

MJU CE C Language Programming

선언문의 위치

int value; // External variable.

// 전역변수. 절대로 쓰지말것

int main(){

int sum; // auto (Local, 지역) 변수

...

}

정식 명칭

속칭

(36)

숙제: lab09_06 local.c

주어진 프로그램은 전역변수를 사용하고 있다. 이를 지역변수로 바꾸어라.

Vim 힌트:

삭제할 줄에 가서 dd 하고

붙여 넣을 곳의 윗줄에서 p 한다.

(37)

37

MJU CE C Language Programming

섭씨/화씨의 변환

int main(){

int c, f;

9/5*c + 32 = f;

c = 10;

printf("%d\n", f);

// 잘 될까?

}

:

c f

.

c = 10 f ?

f c

 32 5

9

(38)

1. syntax error 수정

int main(){

int c, f;

// 9/5*c + 32 = f;

f = 9/5*c + 32 ;

c = 10;

printf("%d\n", f);

}

:

c f

.

c = 10 f ?

f c

 32 5

9

(39)

39

MJU CE C Language Programming

2. 순서의 문제

int main(){

int c, f

f = 9/5*c + 32 ;

c = 10;

printf("%d\n", f);

}

:

c f

.

c = 10 f ?

f c

 32 5

9

(40)

실습 lab09_07 /degree.c

섭씨 온도를 화씨로 바꾸어 출력하는 프로그램을 작성 하되 다음의 수식에서 곱셈과 나눗셈을 재배치하여 오 류가 최소화 되도록 하라.

int c, f;

c = 10; // 섭씨 10도.

f = 9/5*c + 32; // 순서를 재배치

printf("%d\n", f);

(41)

41

MJU CE C Language Programming

화씨를 섭씨로

f = 212; // 물 끓는 온도.

c = 5/9*(f-32); ( 32)

9

5

f

c

(42)

lab09_08 /f2c.c

화씨 온도를 섭씨로 바꾸어 출력하는 프로그램에서 ( 배포)

곱셈과 나눗셈을 재배치하여 오류가 최소화 되도록 하 라.

f = 212; // 물 끓는 온도.

c = 5/9*(f-32);

(43)

43

MJU CE C Language Programming

정밀한 계산은 float 또는 double로

Ch. 13

(44)

단원 요구사항

정수 변수의 선언을 하고 4칙 연산을 할 수 있어야 한다.

변수의 이름(identifier)을 만드는 규칙을 이해하고 있어야 하며 좋은 변수이름과 나쁜 변수 이름을 구분할 수 있어야 한다.

정수 변수의 초기값이 의미를 이해하고 초기값을 주는 방법을 알고 프로그램을 작성할 수 있어야 한다.

정수 수식의 값을 정수형으로 출력할 수 있어야 한다.

수학적으로 표시된 수식을 C언어의 계산식으로 옮길 수 있어야 한다.

참조

관련 문서

본 연구에서는 다중이용시설 8개 시설군의 실내공 기의 미세먼지(PM 2.5 ) 중 입자상 및 가스상 PAHs의 농도분포 특성을 파악하고, 실내 PAHs

이 때 ASTER 영상을 이 용하여 작성된 토지피복도에 대한 정확도 검증은 흑백영상의 경우 1 m 공간해상도를 제공하는 KOMPSAT2(Korean Multi-purpose Satellite