Download presentation
Presentation is loading. Please wait.
1
제 16 강 변수의 선언, 배정, 수식 shcho.pe.kr
2
변수? 常數가 아님. Variable 값을 가진다 “값을 담은 그릇” 타입(形)을 가진다. 이름(identifier)에 의해 지명할 수 있다.
3
변수의 내용도 여러 얼굴 OI 숫자로 보면 01 영문자로 보면 OI 한글로 보면 이
4
내용물의 종류를 제한하면 혼돈의 소지가 없어짐 OI OI B (영문자임) A (숫자임)
5
실습 lab16_01/int.c 변수 x를 정수형으로 선언하고 값을 3.14로 주어보라. if (x > 3) printf("3보다 크다.\n"); else printf("3보다 크지않다\n"); 를 이용하여 실제 값이 3보다 큰지 보고 또 x 값을 출력해 보라.
6
C언어의 변수 정수, 실수 크게 두 가지 타입 정수: 실수: int: 4 bytes short : 2 bytes
char : 1 byte 실수: float: 4 bytes double: 8 bytes 기종에 따라 다르다.
7
lab16_02 (int2.c) #include <stdio.h> main(){ int i; float f;
printf(“%d %d \n”, i, f); } 거짓말 했음
8
size sizeof() operator 함수가 아님 함수와 사용법이 꼭 같음 사용 예: sizeof(int), sizeof(i) 등
9
실습 lab16_03 int, char, double, float의 크기를 출력해 보라. sizeof 연산자를 이용한다. 출력 예: “int는 4바이트입니다.” 등 파일: size.c
10
사칙 연산 +, -, *, / 괄호 ( ) 배정 (assignment) = 변수와 상수 예: a+b/3*2-1
수식의 계산 사칙 연산 +, -, *, / 괄호 ( ) 배정 (assignment) = 변수와 상수 예: a+b/3*2-1 b = (a+b)*2 우에서 좌로 복사!!
11
“=“ 의 좌변은 반드시 하나의 변수 a = 9; 9 = a; a+b = 10; a = b = c = 100; a = ( b = (c = 100));
12
4 5 5 5 변수의 두 얼굴 값을 가진 그릇 (기억장소) l-value 그릇에 담긴 값 r-value a = b ;
Before: a b a라는 자리에 복제되어 들어간다. 5 5 After: left right a b
13
Quiz16_01
14
섭씨/화씨의 변환 수학적 정의: c * 9/5 + 32 = f f가 32도라면 c는 0도이다. int main(){
float c, f; c * 9/ = f; f = 32; printf(“%f\n”, c); // Do you expect to print 0 ? }
15
그렇다면 이것은? 수학적 정의: f = c * 9/5 + 32 f가 32도라면 c는 0도이다. int main(){
float c, f; f = c * 9/5 + 32; f = 32; printf(“%f\n”, c); // Do you expect to print 0 ? }
16
Why not? 수학의 “=“ 양쪽이 값이 같다는 명제. 즉, 방정식이다. C언어의 “=“는 등호가 아닌 복제, 즉
우측의 값을 계산하여 좌측의 변수에 복사하라는 뜻. 따라서 수학에서는 f = c * 9/5 + 32와 c * 9/ = f가 같은 뜻이지만 C언어에서는 후자는 문법 오류임.
17
실습 lab16_04/c2f.c 섭씨 온도를 입력하면 화씨 온도를 계산하여 출력하는 프로그램을 작성하여 수행하여 보라. 수식은 f = c * 9 / ;를 이용한다. f와 c는 둘 다 int 변수이다. 여러 온도에서 테스트하여 보고 결과가 맞는지 아니면 어떻게 틀리는지를 코멘트로 적어 넣는다.
18
실습 lab16_05/c2f2.c 앞의 프로그램에서 int로 된 정수를 float로 바꾸어보라. 출력 시에는 %d 대신에 %f를 사용하여야 한다. 수식은 f = c * (9 / 5) + 32;를 이용한다. 여러 온도에서 테스트하여 보고 결과가 맞는지 아니면 어떻게 틀리는지를 코멘트로 적어 넣는다.
19
실습 lab16_06 FCL 을 이용하여 c = 10으로 두고 c * 9 / 를 계산하여 f에 넣는 프로그램을 작성하라.
20
실습 lab16_07 FCL 을 이용하여 c = 10으로 두고 9 / 5 * c + 32를 계산하여 f에 넣는 프로그램을 작성하라. 이 수식은 앞의 c * 9 / 와 "수학적으로는" 같은 수식임을 기억하자.
21
CFL 해설
22
연산 수식(expression)에 의해 계산 배정(=)에 의하여 계산 값 저장 사칙 연산 +, -, *, /
우선 순위 { *, / } > { +, - } 정수 연산과 실수 연산: operand에 의하여 결정됨
23
모든 수식은 순서에 의해 평가(evaluation)됨 평가된 값은 다음 순서의 연산에 사용됨
수식의 값 모든 수식은 순서에 의해 평가(evaluation)됨 평가된 값은 다음 순서의 연산에 사용됨 sum = count = 0 ; ‘=‘ 의 평가 결과는 우변의 값과 같아짐
24
값의 변화 (side effect) 있는 수식 a = a + 1; a++; 없는 수식 a + 1;
25
증/감 연산 a++ 또는 ++a 1 증가 b––또는 ––b 1 감소 연산자가 뒤에 있으면 postfix (후치-後置) 연산, 앞에 있으면 prefix(전치) 연산이라 함 단독으로 사용시는 prefix, postfix 차이 없음 a = b++; a = ++b; // 이 둘의 결과는 다름.
26
lab16_08 a = b++;와 a = ++b;이 둘이 어떻게 다른지 C 프로그램을 이용하여 확인하여보고 결과와 원인을 설명하라.
27
각종 배정 연산 a += b; a = a + b; a -= 1; a = a – 1; a *= c; a = a * c;
b = b / 2; a == x; 배정 연산이 아님!
28
주의 +=은 하나의 토큰: 중간에 띄어 쓰면 안됨
29
lab16_09 += 연산과 -= 연산, 그리고 while을 이용하여 100부터 1까지의 합을 구하여 출력하는 프로그램을 작성하라. while 문의 반복 조건과 초기 값에 유의할 것. sum.c
30
나머지 연산 x % y의 결과: x를 y로 나눈 나머지 x 가 양수이면 나머지는 0~ y-1 사이
31
실습 lab16_10 주어진 정수(scanf를 이용하여 읽어들인다)가 짝수인지 홀수인지를 알아내는 프로그램을 작성하라. 파일 even_odd.c
32
16 강 끝. 변수의 선언, 배정 shcho.pe.kr
Similar presentations