::
정수 다루기의 기초
: 변수, 연산, 출력
27
학습 목표
정수의 선언 방법, 연산, 출력을 이용,
간단한 계산 프로그램을 만들어본다.
출력 방법
(정수)변수의 개념, 선언문
간단한 4칙 연산 방법
assignment해당 교재: 5장
3
MJU CE C Language ProgrammingCFL 과의 차이
괄호를 사용한다.
어떤 타입의 변수인지 지정해 주어야 한다.정수 상수의 출력
printf("128\n"); 출력 결과: 128
printf("%d", 128 ); 출력 결과: 128
Format String
출력의 형태를 결정 출력할 수식
값을 결정
"format 한다"라는 말은 틀에 (format에) 짜맞춘다는 뜻.
5
MJU CE C Language Programming정수 수식 값의 출력
printf("12*12"); 출력 결과: 12*12
printf("%d", 12*12); 출력 결과: 144
Format String
출력의 형태를 결정
출력할 수식
값을 결정
printf의 역할
포맷 스트링을 출력하는 것이 기본 임무.
스트링 내부에 %d 로 시작하는 것들은 뒤에 오는 파 라메터의 값을 포맷에 끼워 넣어 하나의 스트링으로 만 든다음 출력한다.printf("답은 %d", 12*12);
1. 12*12를 계산, 144를 얻어낸다.
2. %d 자리에 144를 끼워 넣어 "답은 144"로 만든다.
3. "답은 144"를 출력한다.
7
MJU CE C Language Programming실습(lab09_01/괄호 넣기)
1283
의 값을 출력하는 프로그램수식의 출력
printf("x=%d\n", 12*12+2*1);
printf("2pi 값은%lf
입니다.\n ", 3.14*2);decimal - 십진수(정수)
long floating point - 부동 (浮動)소수점
부동소수점은 나중에 다루자.
9
MJU CE C Language Programming여러개의 format
printf("%d + %d 는 %d입니다.\n", 3, 4, 3+4);
출력 결과: 3 + 4 는7입니다.
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
MJU CE C Language Programming예외: % 기호의 출력
printf("답은 3.4 % 입니다.\n"); 오류
printf("답은 3.4 %% 입니다.\n"); 출력: 답은 3.4 % 입니다.
기호의 출력은 \\ \" 등으로 쓰지만 퍼센트는 \% 가 아니고 %%이다.
lab09_02 / 괄호 넣기
여러 개의 데이터 출력 연습:: C언어의 변수
CFL 과의 차이
미리 정해진 변수가 없다.
"선언"을 해줘야 사용할 수 있다.
int, float 말고도 다른 유형도 있다.15
MJU CE C Language Programming변수란?
변수/變數/variable (cf. 常數) – 수시로 값이 변할 수 있다
이진수를 담는 그릇
선언되어 있어야 사용 가능
변수의 이름은 identifiersum
CFL의 변수
변수 상수
연산자(operator)
CFL의 변수
미리 정해짐
바꿀 수도 있음
없는 변수는 못씀정수 (integer)
실수(float)
선언된 변수
선언 안된 변수!
변수의 선언
17
MJU CE C Language ProgrammingC 언어의 변수의 선언과 사용
#include <stdio.h>
int main(){
int sum; // 선언문. 반드시 명시적 선언 필요.
sum = 128 ; // 실행문
printf("%d\n", sum); // 실행문
}정수 변수의 선언문
int sum;변수 이름은 sum , 담을 내용은 정수 (integer)
int i, j, k; // 여러개를 선언할 때
int _this, that;
int -value; // incorrectidentifier 만들기? 제 7강 참조
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!
변수의 선언 연습 09_03
21
MJU CE C Language Programming실행 문: 정수 연산
+ - * / % =
정수 연산의 결과는 정수 (5, 123, 0)
나눗셈(/)연산의 결과는 몫
나머지(%) 연산의 결과는 나머지복제(Assignment) 연산
'=' 우측의 수식을 먼저 계산 (evaluation)
결과 값을 좌측 변수에 저장(즉, 복제)
예:a = 123 ; // 상수
b = a + 45; // 수식의 결과(임시 메모리) 를 b 에 복사
수학의 = 기호는 좌우가 같다는 '선언'의 의미 C언어의 = 기호는 우측 값을 좌측 변수에
복사하는 '실행'의 의미
23
MJU CE C Language Programminglab09_04 / div.c
int big, small;
big = 18753;
small = 17;
위와 같은 경우에 big을 small로 나눈 몫과 나머지를 줄바꿈으로 구분하여 출력하라.(두 수가 붙어나오면 어느 부분이 몫인지 구분이 안되 므로)
자기 자신도 우변에 가능
k = 90; k = k + 5;
우변 먼저 계산:
1. sum의 현재값(즉, 90) + 5 가 임시 저장된다.
2. 임시 저장 값이 sum에 저장된다.
결과: 95가 저장됨.25
MJU CE C Language Programming선언문과 실행문
선언문 없이 변수 사용 불가
#include <stdio.h>
int main(){
sum = 128 ;
printf("%d\n", sum); // 실행문
}lab09_05/no_dcl.c 배포
배포된 파일을 컴파일 해보고 컴파일 결과 에러 메시지 를 한글로 번역하여 vi로 error.txt 파일에 작성하여submit로 제출한다.
27
MJU CE C Language Programming선언문과 실행문
선언문 먼저, 실행문 나중
int main(){ sum
= 128 * 128 ; // 아차차!
int sum;
printf("%d\n", sum);
}선언문과 실행문
선언문 먼저, 실행문 나중
int main(){
int sum1;
sum1 = 128 * 128 ;
int sum2;
sum2 = 129 + 12345;
}29
MJU CE C Language Programming좋은 변수 이름
이름은 변수의 역할을 반영!!!int num_of_students; // 학생 수 int sum;
int average;
또다른 스타일int numOfStudents;
// 첫 글자 제외, 각 단어의 시작 글자를 대문자로
나쁜 변수 이름
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
MJU CE C Language Programming변수의 초기 값(CFL)
초기 값을 주지 않은 변수는 쓰레기 값 (garbage)
변수의 초기 값 (C언어)
#include <stdio.h>
int main(){
int sum; // 선언은 되었는데...
printf("%d\n", sum);// garbage
}33
MJU CE C Language ProgrammingCompiler 경고 메시지
초기 값: 두 방법
#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
MJU CE C Language Programming선언문의 위치
int value; // External variable.// 전역변수. 절대로 쓰지말것
int main(){
int sum; // auto (Local, 지역) 변수
...
}정식 명칭
속칭
숙제: lab09_06 local.c
주어진 프로그램은 전역변수를 사용하고 있다. 이를 지역변수로 바꾸어라.Vim 힌트:
삭제할 줄에 가서 dd 하고
붙여 넣을 곳의 윗줄에서 p 한다.
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 59
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 59
39
MJU CE C Language Programming2. 순서의 문제
int main(){
int c, f
f = 9/5*c + 32 ;
c = 10;
printf("%d\n", f);
}:
c f
.
c = 10 f ?
f c
32 59
실습 lab09_07 /degree.c
섭씨 온도를 화씨로 바꾸어 출력하는 프로그램을 작성 하되 다음의 수식에서 곱셈과 나눗셈을 재배치하여 오 류가 최소화 되도록 하라.
int c, f;
c = 10; // 섭씨 10도.f = 9/5*c + 32; // 순서를 재배치
printf("%d\n", f);41
MJU CE C Language Programming화씨를 섭씨로
f = 212; // 물 끓는 온도.
c = 5/9*(f-32); ( 32)9
5