Presentation is loading. Please wait.

Presentation is loading. Please wait.

개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.

Similar presentations


Presentation on theme: "개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay."— Presentation transcript:

1 개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay

2 이번 장에서 학습할 내용 변수와 상수의 개념을 이해한다. C에서 사용가능한 변수의 종류를 알고 있다.
정수형 변수와 상수를 선언하고 사용할 수 있다. 부동 소수점형 변수와 상수를 선언하고 사용할 수 있다. 기호 상수를 사용할 수 있다. 오버플로우와 언더플로우를 이해한다.

3 이번 장에서 만들 프로그램

4 변수 프로그램에서 값들이 저장되는 공간을 변수(variable)라고 한다.

5 변수가 만들어지는 곳 변수는 메인 메모리에 만들어진다.

6 변수가 필요한 이유 (Q) 만약 메모리를 변수처럼 이름을 가지고 사용하자 않고 주소로 사용하다면?
“219번지에 0을 대입하라” (A) 충분히 가능하지만 불편하다. 인간은 숫자보다는 기호를 더 잘 기억한다.

7 변수 선언 변수는 사용하기 전에 반드시 미리 선언(declare)하여야 한다.

8 자료형이 다양한 이유는 커피 전문점에 다양한 컵의 사이즈가 있는 것과 같습니다.
자료형(data type): 데이터의 타입(종류) 정수형 데이터(100) 실수형 데이터( ) 문자형 데이터(‘A’)

9 자료형 char c; // 문자형 변수 c 선언 int i; // 정수형 변수 i 선언
double interest_rate; // 부동소수점형 변수 interest_rate 선언

10 변수의 초기화

11 변수의 이름 알파벳 문자와 숫자, 밑줄 문자 _로 이루어진다. 이름의 중간에 공백이 들어가면 안 된다.
첫 번째 문자는 반드시 알파벳 또는 밑줄 문자 _이여야 한다. 따라 서 이름은 숫자로 시 작할 수 없다. 대문자와 소문자를 구별하여 서로 다른 것으로 취급한다. 따라서 변 수 index와 Index, INDEX은 모두 서로 다른 변수이다. C언어에서 사용하고 있는 키워드와 똑같은 이름은 허용되지 않는다.

12 변수의 이름 sum // 영문 알파벳 문자로 시작 _count // 밑줄 문자로 시작할 수 있다.
number_of_pictures // 중간에 밑줄 문자를 넣을 수 있다. King3 // 맨 처음이 아니라면 숫자도 넣을 수 있다. 2nd_base(☓) // 숫자로 시작할 수 없다. money# // #과 같은 기호는 사용할 수 없다. double // double은 C 언어의 키워드이다.

13 자료형의 종류 자료형 바이트수 범위 정수형 short 2 -32768~32767 int 4
long  long long 8 –9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 문자형 char 1 -128~127 부동소수점형 float 1.2E-38~3.4E38 double 2.2E-308~1.8E308 long double

14 왜 다양한 자료형을 사용할까?

15 자료형과 형식 지정자 int x; “%d” long x; “%ld” long long x; “%lld” float x;
double x; “%lf”

16 상수 area = 3.14 * radius * radius;

17 정수형 가장 기본이 되는 것은 int CPU에 따라서 크기가 달라진다. 16비트, 32비트, 64비트
(Q) 왜 여러 개의 정수형이 필요한가? (A) 용도에 따라 프로그래머가 선택하여 사용할 수 있게 하기 위하여

18 정수 표현 방법 음수 보통은 첫 번째 비트를 부호 비트로 사용한다. 문제점이 발생한다.

19 정수형이 나타내는 정수의 범위 -32768에서 까지의 정수

20 unsigned unsigned는 변수가 음수가 아닌 값만을 나타낸다는 것을 의미한다.

21 unsigned 수식자 #include <stdio.h> int main(void) {
unsigned int speed; // 부호없는 int형 unsigned distance; // unsigned int distance와 같다. unsigned short players; // 부호없는 short형 unsigned long seconds; // 부호없는 long형 return 0; }

22 오버플로우 정수형이 나타낼 수 있는 범위를 넘어가는 것

23 오버플로우 #include <stdio.h> int main(void) {
short s_money = 32767; // 최대값으로 초기화한다. s_money = s_money + 1; printf("s_money = %d\n", s_money); return 0; }

24 정수형 상수

25 16진수

26 10진수, 16진수, 8진수 출력 #include <stdio.h> int main(void) {
printf("%d %#x %#o \n", 128, 128, 128); return 0; }

27 기호 상수 기호 상수(symbolic constant)는 상수에 이름을 붙인 것 리터럴 상수(literal)라고도 한다.
#define EXCHANGE_RATE 1120 기호 상수의 장점 프로그램을 읽기가 쉬워진다. 변경을 쉽게 할 수 있다

28 기호 상수

29 Lab: 달러를 원화로 계산하기 변수를 선언하고 사용하는 예제로 달러화를 원화로 계산하는 프로 그램은 작성하여 보자.

30 Sol: 달러를 원화로 계산하기 #include <stdio.h>
#define EXCHANGE_RATE // 기호 상수 정의 int main(void) { int usd; // 달러화 int krw; // 원화 printf("달러화 금액을 입력하시오: "); // 입력 안내 메시지 scanf("%d", &usd); // 달러화 금액 입력 krw = EXCHANGE_RATE * usd; // 원화로 환산 printf("달러화 %d달러는 %d원입니다.\n", usd, krw); // 계산 결과 출력 return 0; // 함수 결과값 반환 }

31 Lab: 재산 계산하기 한 달에 500만원씩 30년 동안 저금하면 얼마가 될까?

32 Sol: 재산 계산하기 #include <stdio.h> int main(void) { int property;
int saving; printf("매달 저축 금액을 입력하시오: "); scanf("%d", &saving); property = saving * 12 * 30; printf("30년 후의 재산 = %d원 \n", property); return 0; }

33 Lab: 변수의 값 교환하기 변수 x 와 변수 y의 값을 서로 바꾸는 코드를 작성하여 보자. int a = 100;
int b = 200; int tmp; tmp = a; // ① a = b; // ② b = tmp; // ③

34 Lab: 16진수로 하드웨어 제어하기 첫 번째 LED를 빛나게 하려면 어떤 값을 16진수로 하드웨어에 써야 하는가?

35 Sol: 16진수로 하드웨어 제어하기

36 부동소수점형 컴퓨터에서 실수는 부동소수점형으로 표현 소수점이 떠서 움직인다는 의미
과학자들이 많이 사용하는 과학적 표기법과 유사

37 부동소수점형

38 부동 소수점 상수

39 형식 지정자 float형의 값을 출력하거나 입력하려면 형식 지정자로 “%f”를 사용 한다.
double형의 값을 입출력하려면 “%lf”을 사용한다. double radius; printf("반지름 값을 입력하시오: "); scanf("%lf", &radius); // 반드시 “%lf"을 사용하여야 한다.

40 예제 #include <stdio.h> int main(void) {
float fvalue = ; double dvalue = ; printf("float형 변수=%30.25f\n", fvalue); printf("double형 변수=%30.25lf\n", dvalue); return 0; }

41 오버플로우와 언더플로우 #include <stdio.h> int main(void) { float x = 1e39;
float y = e-46; printf("x=%e\n", x); printf("y=%e\n", y); return 0; }

42 Lab: 태양빛 도달 시간 태양에서 오는 빛이 몇 분 만에 지구에 도착하는 지를 컴퓨터로 계 산해보고자 한다.
빛의 속도는 1초에 30만 km를 이동한다. 태양과 지구 사이의 거리는 약 1억 4960만 km이다.

43 실행 결과 빛의 속도는 300000.000000km/s 태양과 지구와의 거리 149600000.000000km
도달 시간은 초

44 힌트 문제를 해결하기 위해서는 먼저 필요한 변수를 생성하여야 한다. 여 기서는 빛의 속도, 태양과 지구 사이의 거리, 도달 시간을 나타내는 변수가 필요하다. 변수의 자료형은 모두 실수형이어야 한다. 왜냐하면 매우 큰 수들이 기 때문이다. 빛이 도달하는 시간은 (도달 시간 = 거리/ (빛의 속도))으로 계산할 수 있다. 실수형을 printf()로 출력할 때는 %f나 %lf를 사용한다.

45 소스 #include <stdio.h> int main(void) {
double light_speed = ; // 빛의 속도 저장하는 변수 double distance = ; // 태양과 지구 사이 거리 저장하는 변수 // km로 초기화한다. double time; // 시간을 나타내는 변수 time = distance / light_speed; // 거리를 빛의 속도로 나눈다. time = time / 60.0; // 초를 분으로 변환한다. printf("빛의 속도는 %fkm/s \n", light_speed); printf("태양과 지구와의 거리 %fkm \n", distance); printf("도달 시간은 %f초\n", time); // 시간을 출력한다. return 0; } 빛의 속도는 km/s 태양과 지구와의 거리 km 도달 시간은 초

46 Lab: 온도 변환하기 사용자로부터 화씨온도를 받아서 섭씨온도로 바꾸는 프로그램을 작 성해보자.

47 Sol: 재산 계산하기 #include<stdio.h> int main(void) {
double celsius, fahrenheit; // 변수 선언 printf("화씨온도="); scanf("%lf", &fahrenheit); // 부동소수점형으로 입력받는다. celsius = (fahrenheit ) * 5.0 / 9.0; printf("섭씨온도=%lf \n", celsius); return 0; }

48 Lab: 원의 면적 계산하기 사용자로부터 원의 반지름을 받아서 원의 면적을 계산하는 프로그 램을 작성해보자.

49 Sol: 원의 면적 계산하기 /* 원의 면적을 계산하는 프로그램*/ #include <stdio.h>
#define PI int main(void) { double radius; // 원의 반지름 double area; // 원의 면적 printf("원의 반지름을 입력하시요:"); scanf("%lf", &radius); area = PI * radius * radius; printf("원의 면적: %f \n", area); return 0; }

50 문자형 문자는 컴퓨터보다는 인간에게 중요 문자도 숫자를 이용하여 표현

51 문자형 문자는 컴퓨터보다는 인간에게 중요 문자도 숫자를 이용하여 표현 공통적인 규격이 필요하다.
아스키 코드(ASCII: American Standard Code for Information Interchange) 8비트를 사용하여 영어 알파벳 표현 (예) !는 33, ‘A’는 65, ‘B’는 66, ‘a’는 97, ‘b’는 98 !"#$%&'()*+,-./ :;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{|}~

52 아스키 코드

53 예제 #include <stdio.h> int main(void) { char c; // 변수 선언
printf("문자를 입력하시오: "); // 입력 안내문 scanf("%c", &c); printf("입력된 문자는 %c입니다\n", c); return 0; }

54 Quiz (Q) 1과 ‘1’의 차이점은? (A) 1은 정수이고 ‘1’은 문자 ‘1’을 나타내는 아스키코드이다. 1 49

55 제어 문자 인쇄 목적이 아니라 제어 목적으로 사용되는 문자들 (예) 줄바꿈 문자, 탭 문자, 벨소리 문자, 백스페이스 문자

56 제어 문자를 나타내는 방법 아스키 코드를 직접 사용 이스케이프 시퀀스 사용 char beep = 7;
printf("%c", beep); char beep = ‘\a’; printf("%c", beep);

57 이스케이프 시퀀스

58 예제 #include <stdio.h> int main() { int id, pass;
printf("아이디와 패스워드를 4개의 숫자로 입력하세요:"); printf("id: ____ \b\b\b\b"); scanf("%d", &id); printf("pass: ____ \b\b\b\b"); scanf("%d", &pass); printf(“\a입력된 아이디는 \”%d\”이고 패스워드는 \”%d\”입니다.", id, pass); return 0; }

59 Q & A


Download ppt "개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay."

Similar presentations


Ads by Google