201-1 학기프로그래밍입문 (1) 1 장. C 의개요 박종혁 Tel: 970-6702 Email: jhpark1@s.ac.kr 0
C 의개요 C-Language 란? - 원하는결과를얻어내기위한 Program 작성시필요한일종의언어 - Unix 운영체제하에서시스템프로그래밍을하기위해개발된언어 - 구조적인언어, 강력한기능, 빠른속도 C 언어의역사 - ALGOL60 (ALGOrithmic Language): 1960 년국제위원회에서발표 - CPL (Combined Programing Language) :1963 년영국캠브리지런던대학 - BCLP (Basic CLP) : 영국캠브리지런던대학 - B : 미국 AT&T Bell 연구소의 Ken Tompson, 1970 년발표 - C : 미국 AT&T Bell 연구소의 Dennis Ritche, 1972 - C++ : 표준 C 에서 OOP(Object Oriented Programing, 객체지향프로그램 ) 의개념추가 A Book on C, 4ed. 1-1
C 언어의종류 - ANSI C (American National Standard Institute) : 표준화작업, Standard C" - Visual C : Microsoft 사에서개발 - Borland C : Microsoft 사에서개발 프로그램이만들어지는절차 - Source Code --> Sorce File ( *.c) --> 선행처리지시어가번역 - Sorce File --> Object File (*.obj) --> Executable File (*.exe) A Book on C, 4ed. 1-2
프로그래밍예 from sea to shining C 를출력하는프로그램작성 1. 문자편집기를사용하여다음과같은내용을가지는파일을 작성하고파일확장자가.c 인파일이름을줌 ( 예, sea.c) #include <stdio.h> int main(void){ printf("from sea to shining C\n"); return 0; } ( 참고 ) 파일이름은프로그램성격에맞는것으로선택해야함 A Book on C, 4ed. 1-3
sea 프로그램분석 (1) /* In file sea.c */ - /* */ 은주석을나타내며컴파일러는이것을무시함 #include <stdio.h> - # 으로시작하는행은전처리기에의해처리됨 - 프로그램을컴파일하면컴파일전에전처리기가먼저동작됨. int main(void) - 식별자다음에괄호 ( ) 가오면그식별자는함수라는것을나타냄 - 모든 C 프로그램은반드시 main() 함수를포함함 - 프로그램의수행은항상 main() 함수로부터시작함 A Book on C, 4ed. 1-4
sea 프로그램분석 (2) { } - 중괄호는여러문장들을그룹화하기위해사용됨 - 즉, 중괄호를둘러싸인것은하나의단위로취급됨 "from sea to shining C\n" - 큰따옴표로둘러싸인일련의문자들을문자열상수라고함 - 문자열상수를이루는단어들은그본래의의미를잃어버림 - \n은개행문자를나타냄 - 프로그램상에서일반문자로표현할수없는것을표현하고싶을때역슬래시 \ 와결합된문자를사용함 A Book on C, 4ed. 1-5
sea 프로그램분석 (3) printf("from sea to shining C\n"); - printf 뒤에괄호가있기때문에 printf() 는함수임. - 제일뒤에세미콜론 ; 이있기때문에이것은문장임. - 즉, C에서모든문장은세미콜론으로끝남. A Book on C, 4ed. 1-6
화면에출력하는함수 printf() 연속적으로 printf() 가있을경우, 뒤에나오는 printf() 의출력은바로앞 printf() 의마지막출력위치에서부터시작하여출력한다. 즉, 다음 printf() 는 printf("from sea to shining C\n"); 다음과같이사용해도같은출력을낸다. printf("from sea to "); printf("shining C"); printf("\n"); A Book on C, 4ed. 1-7
printf() 예제 #include <stdio.h> int main(void){ printf("\n\n\n\n\n\n\n\n\n\n"); printf(" **************************\n"); printf(" * from sea *\n"); printf(" * to shining C *\n"); printf(" **************************\n"); printf("\n\n\n\n\n\n\n\n\n\n"); return 0; } A Book on C, 4ed. 1-8
1.3 변수, 수식, 배정 /* The distance of a marathon in kilometers. */ #include <stdio.h> int main(void) { int miles, yards; float kilometers; miles=26; yards=385; kilometers=1.609*(miles + yards / 1760.0 ); printf(" n A marathon is %f kilometers. n n", kilometers); return 0; } ==> A marathon is 42.185970 kilometers. A Book on C, 4ed. 1-9
/* The distance of a marathon in kilometers. */ 주석문은 /* 와 */ 로둘러싼다 intmiles, yards; 선언문, 변수 miles, yards 가정수값을가지는변수 // 선언문과문장은세미콜론으로끝남. float kilometers; 선언문, 변수 kilometers 가실수값을가지는변수변수는선언하고나서사용한다 miles=26; yards=385; 배정문, 정수형상수 26 과 385 가변수 miles 과 yards 에각각배정된다. kilometers=1.609*(miles + yards / 1760.0 ); 배정문 /, *, + : 연산자 (-, %,... ) printf(" n A marathon is %f kilometers. n n", kilometers); 변환형식 %f 과인자 kilometers 는짝을이루며, kilometers 의값이부동소수점 (float) 형식 %f 의위치에출력됨. 변수의값을출력하려면서식지정이필요하다. 수식의변환규칙 (Conversion rule) 7/2 --> 3, 7.0/2 --> 3.5 A Book on C, 4ed. 1-10
1.4 #define 과 #include 의사용 #define LIMIT 100 #define PI 3.14159 #define C 299792.458 /* speed of light in km/sec */ # : 전처리기지시자 (Preprocessing Directive) 이문장이포함된파일을컴파일하면, 전처리기는문자열상수나주석을제외한곳에서대체함. #include"my_file.h" file 에 my_file.h 파일의사본포함 C 에서제공하는표준헤더파일 : stdio.h, string,h, math.h,... <xxx.h> 15 페이지예제 ) /*In file pacific_sea.h */ A Book on C, 4ed. 1-11
1.5 printf() 와 scanf() 의사용 printf( ) : 화면출력 -printf( 서식지정문자열, 변수 ); 서식지정문자열 - 일반문자열, 변환문자열 (%), 확장문자열 ( ) printf( ) 의변환문자열 -printf( % 변환문자, 변수 ); 변수 를변환형식에맞추어화면출력 A Book on C, 4ed. 1-12
변환문자 (Conversion Character) - printf() 변환문자 c d ld e f g s 대응되는인자가출력되는형식 as a character ( 문자 ) as a decimal integer (10 진정수 ) as a long type decimal integer (long 형 10 진정수 ) as a floating point number in scientific naotation ( 지수형..) as a floating point number (float, double) in the e-format or f-format, whichever is shorter as a string ( 문자열 ) 화면에 abc 출력하는방법 printf("abc"); printf("%s", "abc"); printf("%c%c%c", 'a','b','c'); A Book on C, 4ed. 1-13
printf() 의옵션지정 % 필드폭자리수변환문자 %d ->123 %5d-> 123 %10d-> _123 %2d ->123 ( 지정폭이작아도필요한폭은확보 ) %f ->654.321000( 표준폭으로출력 ) %12f -> 654.321000 ( 소수점넣어 12자리로출력, 이하는표준폭으로출력 ) %9.2f -> _ 654.32 ( 소수점넣어 9자리로출력, 이하는 2자리로출력 ) A Book on C, 4ed. 1-14
scanf( ) : 키보드입력 scanf( ) 의변환문자열 - % 변환문자 & 변수 ); 변환문자형식으로입력받아들임. 변환문자 (Conversion Character) - scanf() 변환문자입력스트림의문자가변환되는형식 c to a character ( 문자 ) d to a decimal integer (10진정수 ) ld to a long type decimal integer (long형 10진정수 ) f to a floating point number (float) lf to a floating point number (double) LF to a floating point number (long double) s to a string ( 문자열 ) A Book on C, 4ed. 1-15
실습 #include <stdio.h> int main(void) { charc1,c2,c3; inti; floatx; doubley; printf(" n%s n%s", "Input three character," "an int, a float, and a double: "); scanf("%c%c%c%d%f%lf", &c1, &c2, &c3, &i, &x, &y); printf(" nhere is the data that you typed in: n"); printf("%3c%3c%3c%5d%17e%17e n n", c1,c2,c3,i,x,y); } 입력 : ABC 3 55 77.7?? A Book on C, 4ed. 1-16
출력 Input three character, an int, a float, and a double: ABC 3 55 77.7 Here is the data that you typed in: A B C 3 _ 5.500000e+01 _ 7.770000e+01 A Book on C, 4ed. 1-17
선택 : if, if-else 반복 : for, while, do-while 1.6 제어의흐름 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 실행 A Book on C, 4ed. 1-18
예 ) 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 출력 A Book on C, 4ed. 1-19
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; A Book on C, 4ed. 1-20
while 루프 일반적인형태 : for ( 조건식 ) { 문장 } #include<stdio.h> int main(void) { int sum=0 ; for (i=1; i<=5; ++i ) { sum+=i; } printf("sum= %d n", sum); return 0; } A Book on C, 4ed. 1-21
질의및응답 - 끝 - A Book on C, 4ed. 1-22