쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express
이번 장에서 학습할 내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력 함수 printf() * 입력 함수 scanf() * 산술 연산 * 대입 연산
일반적인 프로그램의 형태 데이터를 받아서(입력단계), 데이터를 처리한 후에(처리단계), 결과를 화면에 출력(출력단계)한다.
덧셈 프로그램 #1 주석 변수선언 함수 문장 연산 /* 두개의 숫자의 합을 계산하는 프로그램*/ 전처리기 지시어 #include <stdio.h> int main(void) { } 변수선언 int x; // 첫번째 정수를 저장할 변수 int y; // 두번째 정수를 저장할 변수 int sum; // 두 정수의 합을 저장하는 변수 함수 x = 100; y = 200; sum = x + y; printf("두수의합: %d", sum); return 0; 문장 연산
프로그램의 실행 화면 두수의 합: 300
주석(comment) /* 두개의 숫자의 합을 계산하는 프로그램 */ #include <stdio.h> 주석은 코드를 설명하는 글입니다. /* 두개의 숫자의 합을 계산하는 프로그램 */ #include <stdio.h> int main(void) { ... } 주석
3가지 방법의 주석 /* 한줄로 된 주석 */ /* 여러 줄로 된 주석 */ // 여기서부터 줄의 끝까지 주석
들여쓰기 들여쓰기(indentation): 같은 수준에 있는 문장들을 왼쪽 끝에서 몇 자 안으로 들여쓰는 것
주석과 들여 쓰기가 없다면.. #include <stdio.h> 실행은 되지만 무슨 처리를 하고 있는 프로그램인지 알기가 힘들고 또한 들여쓰기가 안 되어 있어서 같은 수준에 있는 문장들을 구분하기 힘듭니다. #include <stdio.h> int main(void) { int x; int y; int sum; x = 100; y = 200; sum = x + y; printf("두수의 합: %d", sum); return 0; }
전처리기 #include <stdio.h> #기호로 시작 헤더 파일 stdio.h를 소스 코드 안에 포함
전처리기 /* 첫번째 프로그램 */ // stdio.h … int printf(char *,…); int main(void) { printf("Hello World!"); return 0; } // stdio.h … int printf(char *,…); #include <stdio.h> stdio.h hello.c
함수 함수(function): 특정 기능을 수행하는 처리 단계들을 괄호로 묶어서 이름을 붙인 것 함수는 프로그램을 구성하는 기본적인 단위(부품) 입력 함수 출력
함수의 구조
함수안에 들어 있는 것 Q) 그렇다면 함수 안에 들어 있는 것은 무엇인가? 입력 출력 문장 1; 문장 2; 문장 3; ... 위에서 아래로 순차적으로 실행된다. Q) 그렇다면 함수 안에 들어 있는 것은 무엇인가? A) 함수 안에는 함수가 처리하는 처리 단계(문장)들이 중괄호 안에 나열
함수 작업을 수행하는 문장은 함수 안에 들어가야 함
함수 호출 Q) 함수 안에 있는 문장들은 언제 실행되는가? A) 함수가 호출되면 실행된다. Q) 함수 호출은 어떻게 하는가? 함수B(); 함수A 문장 1; 문장 2; 문장 3; ... 함수C 문장 1; 문장 2; 문장 3; ... 함수B 문장 1; 문장 2; 문장 3; ... 프로그램
함수 호출 Q) 많은 함수 중에서 가장 먼저 실행되는 것은? A) main() 함수이다. 다른 함수들은 main()으로부터 직간접적으로 호출된다. input() 문장 1; 문장 2; 문장 3; ... output() process() main() input(); process(); output();
문장 함수는 여러 개의 문장으로 이루어진다. 문장들은 순차적으로 실행된다. 문장은 ;(세미콜른)으로 끝나야 한다.
return 문장
main()은 누가 호출할까?
변수 Q) 변수란 무엇인가? int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수 Q) 변수란 무엇인가? 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간
변수의 종류 2 int x; x 변수는 데이터를 담는 상자로 생각할 수 있다. 자료형 변수의 이름 변수의 이름 변수에는 데이터의 종류에 따라 여러 가지 타입이 존재한다.
변수의 이름 식별자(identifier): 변수나 함수의 이름 식별자를 만드는 규칙 식별자는 영어의 대소문자, 숫자, 밑줄 문자 _로 이루어진다. 식별자는 숫자로 시작할 수 없다. 대문자와 소문자를 구별하며 C 언어의 키워드와 똑같은 이름은 허용되지 않는다. 식별자의 예: s, s1, student_number: 올바른 식별자 $s, 2nd_student , int: 잘못된 식별자
변수 선언 변수 선언: 컴파일러에게 어떤 타입의 변수가 사용되는지를 미리 알리는 것 int x; 자료형 변수의 이름
자료형 자료형(data type): 변수가 저장할 데이터가 정수인지 실수인지, 아니면 또 다른 어떤 데이터인지를 지정하는 것
변수 선언 int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수 각 변수는 정수를 저장 할 수 있다. x y sum 메모리 공간에 변수 가 만들어지고 이름이 붙여진다.
값을 변경할 수 있으나 상수는 한번 값이 정해지면 변경이 불가능합니다. x = 100; y = 200; 상수 상수(constant): 그 값이 프로그램이 실행하는 동안 변하지 않는 수 변수는 실행도중에 값을 변경할 수 있으나 상수는 한번 값이 정해지면 변경이 불가능합니다. 12 12 변수 상수
수식 수식(expression): 피연산자와 연산자로 구성된 식 수식은 결과값을 가진다. sum = x + y; x2 - 5x + 6의 값을 계산하라. int x, y; x = 3; y = x * x - 5 * x + 6; printf(“%d\n”, y);
산술 연산 연산 연산자 C 수식 수학에서의 기호 덧셈 + x + y 뺄셈 - x - y 곱셈 * x * y xy 나눗셈 / 나머지 % x % y x mod y
산술 연산 sum = x + y; 5 2 3 = + sum x y
= ; 대입 연산 100 100 대입 연산(assignment operation): 변수에 값을 저장하는 연산 x = 100; 대입 연산(assignment operation): 변수에 값을 저장하는 연산 대입 연산 = 배정 연산 = 할당 연산 = 연산자는 변수에 값을 저장합니다. = ; 100 100 x
정리
printf() printf(): 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수
문자열 출력 문자열(string): “Hello World!\n”와 같이 문자들을 여러 개 나열한 것 printf("Hello World!\n"); 문자열(string): “Hello World!\n”와 같이 문자들을 여러 개 나열한 것 Hello World! H e l l o W o 실행결과 printf()
변수값 출력 printf("두수의 합: %d", sum); 형식 지정자 의 개수와 변수의 개수와 순서는 같아야 한다. 두수의 합: 30
형식 지정자 형식 지정자: printf()에서 값을 출력하는 형식을 지정한다. 형식 지정자 의미 예 실행 결과 %d 10진 정수로 출력 printf(“%d \n”, 10); 10 %f 실수로 출력 printf(“%f \n”, 3.14); 3.140000 %c 문자로 출력 printf(“%c \n”, ‘a’); a %s 문자열로 출력 printf(“%s \n”, “Hello”); Hello
여러 개의 변수값 출력 printf( , number , height ); “학번 %d 의 성적은 %f \n” 형식 제어 문자열 printf( , number , height ); “학번 %d 의 성적은 %f \n” 형식 지정자 의 개수와 변수의 개수와 순서는 같아야 한다. 학번 23의 성적은 3.990000
주의!
덧셈 프로그램 #2 사용자로부터 입력을 받아보자. 시 작 입력단계 처리단계 출력단계 종 료 두 정수를 더하여 합을 구한다. 두 정수를 읽음 입력단계 두 정수를 더하여 합을 구한다. 처리단계 합을 출력 출력단계 종 료
덧셈 프로그램 #2 2 5 + 3 x y // 사용자로부터 입력받은 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을 외부로 반환 } 2 x 5 sum + 3 y 첫번째 숫자를 입력하시오: 2 두번째 숫자를 입력하시오: 3 두수의 합: 5
scanf(“ %d %f ” , &number , &height ); 형식 제어 문자열 scanf(“ %d %f ” , &number , &height ); 형식 지정자의 개수와 변수의 개수와 순서는 같아야 한다. 23 45.7
scanf()의 동작 키보드로부터 값을 받아서 변수에 저장한다. 변수의 주소를 필요로 한다.
형식지정자 형식 지정자 의미 예 %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);
실수 입력 float ratio = 0.0; scanf("%f", &ratio); double scale = 0.0; scanf("%lf", &scale); 주의!!!
= 연봉 계산 프로그램 * * 200 10 12 24000 salary deposit /* 저축액을 계산하는 프로그램 */ #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; } 10 * 12 * salary = 24000 deposit 월급을 입력하시오: 200 10년 동안의 저축액 : 24000
원의 면적 프로그램 5.0 5.0 5.0 = 3.14 * * radius area /* 원의 면적을 계산하는 프로그램*/ #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; } 5.0 5.0 3.14 78.500000 * * = 5.0 radius area 반지름을 입력하시오: 5.0 원의 면적:78.500000
= 환율 계산 프로그램 928.78 rate 1076. 681204 / usd 1000000 krw /* 환율을 계산하는 프로그램*/ #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; } 928.78 rate 1076. 681204 = usd / 1000000 krw 달러에 대한 원화 환율을 입력하시오: 928.78 원화 금액을 입력하시오: 1000000 원화 1000000원은 1076.681204달러입니다.