2019-1 st 프로그래밍입문 (1) 2 장. C 프로그램기본 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr
목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2
예제 2-1 : 첫번째 C 프로그램 3
주석 (Comment) 주석을다는방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 주석처리 (comment out) 4
주석예제 C 스타일주석 /* a comment */ /* * A comment can be written in this fashion * to set it off from the surrounding code. */ /**************************** * If you wish, you can * * put comments in a box. * ****************************/ C++ 스타일주석 // This is a comment in C++ 5
어휘원소, 연산자, C 시스템 구문 올바른프로그램을만들수있게하는규칙 컴파일러 C 프로그램이구문에맞는지검사 오류가있다면, 오류메시지출력 오류가없다면, 목적코드생성 컴파일과정 C 프로그램 토큰으로분리 토큰을목적코드로변환 토큰종류 : 키워드, 식별자, 상수, 문자열상수, 연산자, 구두점 6
문자와어휘원소 프로그램에서사용할수있는문자 소문자 : a b c... z 대문자 : A B C... Z 숫자 : 0 1 2 3 4 5 6 7 8 9 특수문자 : + - * / = ( ) [ ] < > '! @ # $ % & _., ; :? 여백문자 : 공백, 개행, 탭 컴파일러는이러한문자들을구문단위인토큰으로모은다 7
어휘분석 /* Read in two integers and print their sum. */ 주석문 : /* 부터 */ 까지는공백으로대치 #include<stdio.h> 전처리지시자 : 전처리기가처리 int main(void){ int a, b, sum; 키워드 : int, void 식별자 : main, a, b, sum 연산자 : ( ) 구두점 : {,,, ; inta, b, sum; -> (X) int absum -->absum 을하나의식별자 8
키워드 키워드 C 언어에서고유한의미를가지는토큰 예약된단어 C 키워드 9
식별자 식별자는문자, 숫자, 그리고특수문자인밑줄문자 (_) 로 구성된토큰으로, 문자또는밑줄문자로시작해야함 C 시스템은소문자와대문자를구별함 식별자의선택은의미를생각하여함 10
문장 (statement) C 프로그램을이루는기본단위 각문장은세미콜론 (;) 으로끝난다 ~ 문 : 선언문, 입력문, 출력문, 조건문, 반복문등 11
콘솔프로그램과 main 함수 콘솔프로그램에는반드시 main 함수가필요하다 12
함수의구성요소 함수를만들때는리턴형, 함수이름, 매개변수가필요하다 13
진입점 (entry-point) 함수 C 프로그램이처음시작될때호출되는함수 main 함수는콘솔프로그램의진입점함수이다 C 프로그램에는 main 함수가반드시필요하다 14
main 함수의리턴값 프로그램의종료코드 (exit code) 를리턴한다 main 함수의리턴값은운영체제로전달 0 이면, 정상종료이고 0 이아니면비정상종료 main 함수의 return 문은생략할수있다 프로그램종료시 0 리턴 15
들여쓰기 알아보기쉽도록한줄에한문장씩작성한다 블록 (block) : { } 로묶인문장들 Visual Studio 의들여쓰기단축키 Ctrl+K, Ctrl+D 또는블록선택후 Ctrl+K, Ctrl+F 16
입출력 콘솔프로그램 콘솔 ( 명령프롬프트 ) 에서실행되는프로그램 키보드로부터입력을받아서처리결과를콘솔에텍스트로출력 17
입출력라이브러리를사용하기위한준비 <stdio.h> 를포함한다 헤더파일 (.h) 라이브러리함수의이름, 리턴형, 매개변수에대한정보를담고있는파일 18
콘솔출력 콘솔에텍스트를출력하려면 printf 함수를이용한다 출력할내용을 " " 로묶어서 printf 함수의 ( ) 안에써준다 19
#define 과 #include 의사용 # : 전처리기지시자 (Preprocessing Directive) 전처리기 (Preprocessor) - 컴파일전에전처리지시자로먼저정의되어있는것들을프로세서에등록하는것 전처리지시자 (Preprocessor Directives) - #include 와같이앞에 # 이붙는명령어들 예 ) #include"my_file.h" my_file.h 파일의사본포함 C 에서제공하는표준헤더파일 : stdio.h, string,h, math.h,... <xxx.h> #define LIMIT 100 #define PI 3.14159 #define C 299792.458 20
프로그램작성순서 프로그램을작성하는순서 데이터를입력하기전에반드시입력할데이터를저장할기억공간이있어야한다 ( 변수선언이입력문전에있어야한다 ) 일반적인프로그램의작성순서 21
변수 어떤값을저장하기위한공간 변수를사용하려면변수명과데이터형 (data type) 이필요하다 변수는선언후사용해야한다. 22
변수의선언및사용 변수의선언 변수명은영문자와숫자, 밑줄기호 (_) 를사용해서만든다 첫글자로는반드시영문자나밑줄기호가와야한다 변수의사용 변수에값을대입하려면 = 을이용한다 23
입력과출력 : printf() 와 scanf() printf() : 화면출력 printf(" 서식지정문자열 ", " 변수 "); 서식지정문자열 일반문자열, 변환문자열 (%), 확장문자열 ( ) printf() 의변환문자열 printf( "% 변환문자 "," 변수 "); 변수 를변환형식에맞추어화면출력 scanf() : 키보드입력 scanf() 의변환문자열 scanf( % 변환문자, & 변수 ); 변환문자형식으로입력받아들임 24
입력과출력 : printf() 와 scanf() 25
printf 함수의형식문자열 (1/3) 서식지정자의미사용예실행결과 %d 정수를 10진수로출력 int num = 123; printf( %d, num); %x 정수를 16 진수로출력 (0~6, a~f 이용 ) %X 정수를 16 진수로출력 (0~9, A~F 이용 ) %f, %F 실수를부동소수점표기방식으로출력 int num = 123; printf( %x, num); int num = 123; printf( %X, num); float x = 1.23; printf( %f, x); %e, %E 실수를지수표기방식으로출력 float x = 1.23; printf( %e, x); %c 문자출력 char ch = A ; printf( %c, ch); %s 문자열출력 char name[20] = abc ; printf( %s, name); 123 7b 7B 1.230000 1.230000e+00 A abc 26
printf 함수의형식문자열 (2/3) 서식지정자의개수와출력할값의개수가일치해야한다 16 진수정수출력 27
예제 2-2 : 형식문자열을이용해서출력하기 28
printf 함수의형식문자열 (3/3) 문자폭지정 정밀도지정 실수의정밀도 - 소수점이하자릿수 정수의정밀도 - 출력할숫자의자릿수 29
printf() 옵션 printf() 의옵션지정 % 필드폭자리수변환문자 %d ->123 %5d-> 123 %10d-> _123 %2d ->123 ( 지정폭이작아도필요한폭은확보 ) %f ->654.321000( 표준폭으로출력 ) %12f -> 654.321000 ( 소수점넣어 12 자리로출력, 이하는표준폭으로출력 ) %9.2f -> _ 654.32 ( 소수점넣어 9 자리로출력, 이하는 2 자리로출력 ) 30
예제 2-3 : 문자폭지정하기 31
예제 2-4 : 정밀도지정하기 32
scanf 함수의형식문자열 (1/3) 33
예제 2-5 : 입력받은 10 진수정수를 16 진수로변환해서출력하기 34
scanf 함수의형식문자열 (2/3) 문자배열에입력받을때는 & 를지정하지않는다 서식지정자를여러개사용할수도있다 서식지정자와입력받을변수의개수가같아야한다 scanf("%s %d %c", name, &age, &gender); 실수형변수입력 %f : float 입력 %lf : double 입력 3 개 3 개 35
scanf 함수의형식문자열 (3/3) 형식문자열의공백문자 이전입력이후의공백을모두무시하고다음입력을읽어오게한다 36
예제 2-6 : 여러개의서식지정자사용하기 37
제어의흐름 if 문 일반적인형태 : if ( 조건식 ) { 문장 1 } 조건식이참 (true) 이면 (0 이아니면 ) 문장 1 실행, 단문이면 {} 생략 a=1 if (b==3) a=5; /* == : -- 와같다 연산자 ) */ printf("%d", a); - b 가 3 이면 a=5 - b 가 3 이아니면문장 (a=5) 실행안함, printf() 문실행 1 출력 if-else 문 일반적인형태 : if ( 조건식 ) { 문장 1 } else { 문장 2 } 조건식이참 (true) 이면 (0 이아니면 ) 문장 1 실행그렇지않으면문장 2 실행 38
제어의흐름 - 예시 예 ) if(cnt==0){ a=2; b=3; c=5; } else { a=-1; b=-2; c=-3; } printf("%d", a+b+c); cnt 가 0 값을가지면 10 출력, 그렇지않으면 -6 출력 39
반복문 while while 루프 일반적인형태 : while ( 조건식 ) { 문장 } #include<stdio.h> int main(void){ int i=1, sum=0; while (i<=5) { sum+=i; ++i; } printf("sum= %d n", sum); return 0; } 참고 ++i, i++; 증가 --i, i--; 감소 i=i+1; i=i-1; 40
반복문 - for for 루프 일반적인형태 : for ( 조건식 ) { 문장 } #include <stdio.h> int main(void) { int sum=0,i; for (i=1;i<=5;++i){ sum+=i; } printf( sum= %d \n,sum); return 0; } 41
42
참고문헌 천정아, Core C Programming, 연두에디션 (2019) C 가보이는그림책, ANK Co., Ltd., 성안당 (2018) Greg Perry, Dean Miller 어서와 C 언어는처음이지, 천인국옮김, 인피니티북스 (2015) KELLEY ( 역 : 김명호외 ), A Book on C, 홍릉과학출판사 (2003) 윤성우, 열혈 C 프로그래밍, 오렌지미디어 천인국, 쉽게풀어쓴 C 언어 Express, 생능출판사 서현우, 뇌를자극하는 C 프로그래밍, 한빛미디어 강성수, 쾌도난마 C 프로그래밍, 북스홀릭 고응남, C 프로그래밍기초와응용실습, 정익사 43