1 장. C 의개요 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2017-1 st 프로그래밍입문 (1)
2 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, 객체지향프로그램 ) 의개념추가
3 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)
4 프로그래밍예 "from sea to shining C" 를출력하는프로그램작성 문자편집기를사용하여다음과같은내용을가지는파일을작성하고파일확장자가.c 인파일이름을줌 ( 예, sea.c) #include <stdio.h> int main(void){ printf("from sea to shining C\n"); return 0; } ( 참고 ) 파일이름은프로그램성격에맞는것으로선택해야함
5 sea 프로그램분석 (2) { } 중괄호는여러문장들을그룹화하기위해사용됨 즉, 중괄호를둘러싸인것은하나의단위로취급됨 "from sea to shining C\n" 큰따옴표로둘러싸인일련의문자들을문자열상수라고함 문자열상수를이루는단어들은그본래의의미를잃어버림 \n 은개행문자를나타냄 프로그램상에서일반문자로표현할수없는것을표현하고싶을때역슬래시 \ 와결합된문자를사용함
6 sea 프로그램분석 (3) printf("from sea to shining C\n"); printf 뒤에괄호가있기때문에 printf() 는함수임. 제일뒤에세미콜론 ; 이있기때문에이것은문장임. 즉, C 에서모든문장은세미콜론으로끝남.
7 printf() 화면에출력하는함수 연속적으로 printf() 가있을경우, 뒤에나오는 printf() 의출력은바로앞 printf() 의마지막출력위치에서부터시작하여출력한다. 즉, 다음 printf() 는 printf("from sea to shining C\n"); 다음과같이사용해도같은출력을낸다. printf("from sea to "); printf("shining C"); printf("\n");
8 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; }
9 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.
프로그램을작성하는순서 데이터를입력하기전에반드시입력할데이터를저장할기억공간이있어야한다. 즉, 변수선언이입력문전에있어야한다!! 일반적인프로그램의작성순서
11 /* The distance of a marathon in kilometers. */ 주석문은 /* 와 */ 로둘러싼다 int miles, 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
12 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 */
13 1.5 printf() 와 scanf() 의사용 printf( ) : 화면출력 printf( " 서식지정문자열 ", " 변수 "); 서식지정문자열 일반문자열, 변환문자열 (%), 확장문자열 ( ) printf( ) 의변환문자열 printf( "% 변환문자 "," 변수 "); 변수 를변환형식에맞추어화면출력
14 변환문자 (Conversion Character) - printf() c: as a character ( 문자 ) d: as a decimal integer (10 진정수 ) ld: as a long type decimal integer (long 형 10 진정수 ) e: as a floating point number in scientific naotation f: ( 지수형..) g: as a floating point number (float, double) s: 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');
printf() 의옵션지정 % 필드폭자리수변환문자 %d ->123 %5d-> 123 %10d-> _123 %2d ->123 ( 지정폭이작아도필요한폭은확보 ) %f ->654.321000( 표준폭으로출력 ) %12f -> 654.321000 ( 소수점넣어 12 자리로출력, 이하는표준폭으로출력 ) %9.2f -> _ 654.32 ( 소수점넣어 9 자리로출력, 이하는 2 자리로출력 ) 15
scanf( ) : 키보드입력 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 ( 문자열 ) 16
17 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 실행
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 출력
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;
20 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; }
21