쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초
이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2
일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력 ( 출력단계 ) 한다. 데이터입력 데이터처리 결과출력 컴퓨터프로그래밍기초 3
덧셈프로그램 #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; 문장 연산 컴퓨터프로그래밍기초 4
주석 Q) 주석 (comment) 이란무엇인가? A) 프로그램이하는작업을설명하는글 Q) 주석은반드시있어야하는가? A) 컴파일러는주석을무시한다 Q) 주석은누구를위한것인가? A) 주석은프로그램을읽는사람을위한것이다 Q) 주석의역할은무엇인가? A) 주석은프로그램의가독성을높인다. Q) 좋은주석은어떤것인가? A) 코드를반복하거나코드를설명하기보다는코드를작성한의도를나타내는것이좋다. 컴퓨터프로그래밍기초 5
주석을붙이는방법 /* 한줄로된주석 */ int x; /* 줄의일부분인주석 */ /* 여러줄로된주석 */ // 이줄은전체가주석이다. int x; // 변수 x 선언 /* * 파일이름 : add.c * 설명 : 두수를더하는프로그램 * 작성자 : In-Gook Chun */ /************************************* * 파일이름 : add.c * 설명 : 두수를더하는프로그램 * 작성자 : In-Gook Chun *************************************/ 컴퓨터프로그래밍기초 6
들여쓰기 빈줄을넣어서의미별로구분을한다. /* 두개의숫자의합을계산하는프로그램 */ #include <stdio.h> 프로그램의시작부분에는파일이름이나작성자, 작성일자, 프로그램의내용등을적는다 int main(void) { int x; int y; int sum; // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 두정수의합을저장하는변수 문장들의의미 ( 의도 ) 를주석으로설명한다. 같은내용의처리이면탭이나공백을넣어들여쓰기를한다. } x = 100; y = 200; sum = x + y; printf(" 두수의합 : %d", sum); return 0; 컴퓨터프로그래밍기초 7
주석과들여쓰기가없다면.. #include <stdio.h> int main(void) { int x; int y; int sum; x = 100; y = 200; sum = x + y; printf(" 두수의합 : %d", sum); return 0; } 컴퓨터프로그래밍기초 8
전처리기 #include <stdio.h> # 기호로시작헤더파일 stdio.h를소스코드안에포함 stdio.h는표준입출력에대한라이브러리함수의정의가들어있전처리기다. 컴파일러 #include <stdio.h> int main(void) id) { printf( Hi!\n );... int printf(char *,...); int scanf(char *,...);... int main(void) id) { printf( Hi!\n ); } return 0; } return 0; 소스파일컴퓨터프로그래밍기초 전처리된소스파일 오브젝트파일 9
함수 함수 (function): 특정기능을수행하는처리단계들을괄호로묶어서이름을붙인것 입력 함수는프로그램을구성하는기본적인단위 ( 부품 ) 함수 함수의종류 사용자정의함수 : 직접작성하는함수 라이브러리함수 : 컴파일러가제공하는함수 출력 컴퓨터프로그래밍기초 10
함수안에들어있는것 Q) 그렇다면함수안에들어있는것은무엇인가? 입력 A) 함수안에는함수가처리하는처리단계 ( 문장 ) 들이중괄호안에나열 문장 1; 문장 2; 문장 3;... 함수 위에서아래로순차적으로실행된다. 출력 컴퓨터프로그래밍기초 11
함수호출 Q) 함수안에있는문장들은언제실행되는가? A) 함수가호출되면실행된다. Q) 함수호출은어떻게하는가? A) 함수의이름을적어주면된다. 함수 B(); 함수 A 함수 B 문장 1; 문장 2; 문장 3;... 문장 1; 문장 2; 문장 3;... 함수 C 문장 1; 문장 2; 문장 3;... 컴퓨터프로그래밍기초 프로그램 12
함수호출 Q) 많은함수중에서가장먼저실행되는것은? A) main() 함수이다. 다른함수들은 main() 으로부터직간접적으로호출된다. input() main() 문장 1; 문장 2; 문장 3;... process() input(); process(); output(); output() 문장 1; 문장 2; 문장 3;... 문장 1; 문장 2; 문장 3;... 컴퓨터프로그래밍기초 13
함수의구조 함수 = 함수헤더 + 함수몸체 int main(void) { int x; int y; int sum; x = 100; y = 200; 함수헤더 함수의몸체시작 함수의몸체 sum = x + y; printf(" 두수의합 : %d", sum); return 0; } 함수의몸체끝 컴퓨터프로그래밍기초 14
함수헤더와몸체 int main(void) { }...... return 0; 함수헤더 int: 함수가반환하는값의형태 main: 함수이름 (void): 입력이없다는의미함수몸체 return 문장 함수를종료하면서값을반환 일반적으로 main 함수의경우, 0 값은성공, 1 은실패를의미 함수가하는작업에해당 문장들로구성된다. 문장이하나도없을수도있다. 컴퓨터프로그래밍기초 15
문장 문장 (statement): 컴퓨터에게작업을지시하는단위 문장의끝은 ; 으로끝난다. 컴퓨터프로그래밍기초 16
변수 int x; // 첫번째정수를저장하는변수 int y; // 두번째정수를저장하는변수 int sum; // 두정수의합을저장하는변수 Q) 변수란무엇인가? A) 프로그램이사용하는데이터를일시적으로저장할목적으로사용하는메모리공간 컴퓨터프로그래밍기초 17
변수의종류 변수는데이터를담는상자로생각할수있다. 변수에는데이터의종류에따라여러가지타입이존재한다. 컴퓨터프로그래밍기초 18
변수의이름 식별자 (identifier): 변수나함수의이름 식별자를만드는규칙 식별자는영어의대소문자, 숫자, 밑줄문자 _ 로이루어진다. 식별자는숫자로시작할수없다. 대문자와소문자를구별하며 C 언어의키워드와똑같은이름은허용되지않는다. 식별자의예 : s, s1, student_number: 올바른식별자 $s, 2nd_student, int: 잘못된식별자 A 12 123.456 ch i fvalue 컴퓨터프로그래밍기초 19
변수선언 변수선언 : 컴파일러에게어떤타입의변수가사용되는지를미리알리는것 int x; 자료형 변수의이름 컴퓨터프로그래밍기초 20
자료형 자료형 (data type): 변수가저장할데이터가정수인지실수인지, 아니면또다른어떤데이터인지를지정하는것 컴퓨터프로그래밍기초 21
변수선언 int x; // 첫번째정수를저장하는변수 int y; // 두번째정수를저장하는변수 int sum; // 두정수의합을저장하는변수 컴퓨터프로그래밍기초 22
상수 x = 100; y = 200; 상수 상수 (constant): 그값이프로그램이실행하는동안변하지않는수 컴퓨터프로그래밍기초 23
수식 수식 (expression): 변수, 상수, 연산자등으로구성된식 수식은결과값을가진다. x=10 10, y=20이라고가정 컴퓨터프로그래밍기초 24
대입연산 대입연산 (assignment operation): 변수에값을저장하는연산 대입연산 = 배정연산 = 할당연산 x = 100; y = 200; 컴퓨터프로그래밍기초 25
대입연산 (cont.) 다음과같은연산은변수 x 의값을하나증가시킨다. 수학적인의미와는다름 x=x+1; x 컴퓨터프로그래밍기초 26
산술연산 연산연산자 C 수식수학에서의기호 덧셈 + x + y x + y 뺄셈 - x -y x -y 곱셈 * x * y xy 나눗셈 / x / y x/y 또는또는 x y 나머지 % x % y x mod y sum = x + y; 컴퓨터프로그래밍기초 27
printf() printf(): 모니터에출력을하기위한표준출력라이브러리함수 컴퓨터프로그래밍기초 28
문자열출력 printf("hello World!\n"); 인수 (argument): 함수에게전달하는데이터 문자열 (string): 문자들을여러개나열한것 Hello Wo H e l l o W o printf() 컴퓨터프로그래밍기초 29
변수값출력 컴퓨터프로그래밍기초 30
덧셈프로그램 #2 사용자로부터입력을받아보자. 컴퓨터프로그래밍기초 31
두번째덧셈프로그램 // 사용자로부터입력받은 2 개의정수의합을계산하여출력 #include <stdio.h> int main(void) { int x; int y; int sum; printf(" 첫번째숫자를입력하시오 :"); scanf("%d", &x); printf(" 두번째숫자를입력하시오 :"); scanf("%d", &y); // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 2개의정수의합을저장할변수 // 입력안내메시지출력 // 하나의정수를받아서 x 에저장 // 입력안내메시지출력 // 하나의정수를받아서 x에저장 sum = x + y; // 변수 2개를더한다. printf(" 두수의합 : %d", sum); // sum의값을10진수형태로출력 } return 0; // 0 을외부로반환 첫번째숫자를입력하시오 :10 두번째숫자를입력하시오 :20 두수의합 : 30 컴퓨터프로그래밍기초 32
scanf() scanf(): 키보드로부터입력을하기위한라이브러리함수 scanf("% %...", & 변수 1, & 변수 2,...); 컴퓨터프로그래밍기초 33
/* 저축액을계산하는프로그램 */ #include <stdio.h> 연봉계산프로그램 int main(void) { int salary; // 월급 int deposit; // 저축액 printf(" 월급을입력하시오 : "); scanf("%d", &salary); deposit = 10 * 12 * salary; 사용자로부터월급을입력받는다. 월급에 10*12를곱하여 10년동안의저축액을계산한다. 결과를출력한다. printf("10 년동안의저축액 : %d\n", deposit); } return 0; 월급을입력하시오 : 200 10 년동안의저축액 : 24000 컴퓨터프로그래밍기초 34
/* 원의면적을계산하는프로그램 */ #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 원의면적 : 78.500000 35
/* 환율을계산하는프로그램 */ #include <stdio.h> 환율계산프로그램 int main(void) id) { 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 원화금액을입력하시오 : 1000000 원화 1000000원은 1076.681204달러입니다. 36
Q & A 컴퓨터프로그래밍기초 37