제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린
목 차 제 0장. 선행학습 C 언어의 역사 C 언어의 특징 C 언어 컴파일러 C 프로그램 구조
선행학습-1 Terminologies 1. 프로그램(program) 정의 : set of sequence instructions ▷ 함수(function) 정의 : like Program ▷ 기타 : routine, module, package, (program) 등의 의미 ▷ 프로그램과 함수의 차이점 비교. ▷ script 언어, visual 언어의 특징과 해당 제품 조사. 2. instruction(명령어)과 command(코맨드) 차이 이해 3. 매개변수(parameter, argument)와 변수(變數, variable)의 의미와 사용사례 조사 ① 형식 매개변수(formal parameter) : called program ② 실 매개변수(actual parameter) : calling program
선행학습-2 5. 폰 노이만(Von Neumann)의 저장 프로그램구조(방법)(stored program architecture (method))란? - stored program architecture - Serial Processing(직렬처리) - stored Program method(저장 프로그램 방식) 6. 레코드지향 개념(Record-oriented Concepts)과 객체지향 개념(Object-oriented Concepts) 비교 조사하기 [개념]- variable(변수), data type, parameter - program, routine, software, module, cluster, macro, micro-program - system(H/W, S/W, firm-ware[F/W])
선행학습-3 4. 언어 변환기(language translator) : 비교 조사 및 이해하기 ① 컴파일러(compiler) : HLL ⇒ object program ⇒ LLL ② 해석기(interpreter) : HLL ⇒ not OM ⇒ HLL ③ 어셈블러(assembler): assembly어 ⇒ OM ⇒ LLL(ML) ④ pre-processor(전-처리기) : HLL ⇒ HLL : C언어 ⑤ pre-compiler : HLL ⇒ HLL : Fortran-77 cf. object program = OM(object module), HLL(high level lang.) LLL(low level lang.), ML(machine lang. /code)
선행학습-4 부-프로그램(sub-program) ⓞ why subprogram?(필요성) - frequency used routine.(고 빈도) - frequency modified routine.(수정 빈도) ① 개방 부프로그램(open subprogram) - 매크로(macro) 프로그램 : 확장(expansion) ② 폐쇄 부프로그램(closed subprogram) - 일반 부프로그램(sub-routine 포함) : control 이동
선행학습-5 1. macro Processing 2. subprogram processsing Program Program call macro end macro Program call Sub-P end Sub-P return
선행학습-6 프로그램 기술(description)방법: 제어구조(4장) 참조 [1] 종래의 방법(초기방법) - 비구조화 방법(un-structuring method) - program : like "art' [2] 현대 방법 - 구조화 기법(structured techniques) - Dijkstra 원칙 : “프로그램의 질(質)은 GOTO문의 사용 빈도에 반비례한다” ,<‘61> - program : "science(科學)" [3] 프로그램 제어구조(control structure) ① 순차구조(sequence structure) - 단순 구조(simple structure) 처리1 처리2 처리n
선행학습-7 ② 선택구조(selective structure) - 의사결정 구조 ③ 반복구조(iterative structure) ⓐ 사후평가 구조 ⓑ 사전평가 구조 (post-evaluation structure) (pre-evaluation structure) - 최소 1회 회전 - X 처리1 처리2 처리3 처리n 조건? 처리1 조건? 처리2 처리n 처리1 처리n 조건?
C 언어의 역사 P15 ↓ Ken Thomson(Bell 연구소) Algol60(Algorithmic Language, 1960) ↓ CPL(Combined Programming Language, 1963) ↓ Cambridge & London 대학 BCPL(basic CPL) (1967) ↓ Martin Richards(London 대학) B (1970) ↓ Ken Thomson(Bell 연구소) C (1972) ↓ Dennis Ritchie(Bell 연구소) ☞ C++(1980) : Bjarne Stroustrup(Bell 연구소) ↓ ☞ Java ANSI C(1989) (ANSI Committee) ANSI/ISO C(1990) (ISO Committee)
C 언어의 특징 범용 프로그램 언어 : 고수준 언어(HLL) 호환성(portable)이 강한 언어 : 이식성(Portability) 컴파일러 언어 : 구조화 프로그래밍언어(Structured ) 모듈화 언어(modularity) 고급 언어/중급언어/저급언어 다양한 내장 함수와 연산자(operator) 변수 적용범위 설정 가능 : storage class 자료 주소 직접 사용 : 포인터 ⇒ 중간언어적 성격 현대적인 제어 구조 제공 : 프로그램 개발 도구 간결한(terse) 언어- 풍부한 연산자 제공 전처리기(preprocessor)의 기능 지원 입출력 기능 무 : 함수<함수 정의형 프로그램>
C 언어 컴파일러(1) P16 컴파일러
C 언어 컴파일러(2) 다양한 C 언어 컴파일러 터보 C++3.1 Borland 사에서 제공하는 컴파일러
C 언어 컴파일러(3) 다양한 C 언어 컴파일러 Visual C++6.0 MS 사에서 배포하는 Windows 전용 유료 컴파일러 Visual C++ 6.0 기본 구성 화면
C 언어 컴파일러(4) 다양한 C 언어 컴파일러 Visual C++6.0
C 언어 컴파일러(5) 다양한 C 언어 컴파일러 GCC GNU 프로젝트에서 제공하는 컴파일러 주로 UNIX 와 LINUX OS에서 사용
C 프로그램의 구조(1) P29 [기본 구조] #헤더(header) // 선행처리기 (pre-processor)명령어 void main() { /* 함수 명(메인 함수) */ /* 함수(프로그램)의 시작 */ ...... /* 함수(프로그램)의 ...... 몸체(body, 내용) */ a() ..... 또 다른 함수 n() ..... } /* 함수의 종료 */
C 프로그램의 구조(2) 주석문(Comments) ① /* 내용 */ ② // 이 후 주석 프로그램의 작성과 운영에 관한 정보를 기입. ① /* 내용 */ ② // 이 후 주석 ○ 프로그램의 문서화에 도움을 주는 기능(Documentation). ○ 주석문의 사용은 프로그램의 독해성(readability)을 높여 주며, 결국엔 프로그램의 사후 유지보수에 필요한 주요 정보를 제공. ○ 주석문은 중요한 기능에 비하여 컴파일은 되지 않음.
C 프로그램의 구조(3) 기본 입출력 함수와 제어문자 출력함수 : printf() 기본형식 : printf(“제어문”, arg1, arg2, ... ); (예) printf("%d + %d = %d/n", a, b, c); 제어문자 (P32) 제어문자 의 미 /b backspace : 역으로 한 줄 이동한다. /' single quote /" double quote // backslash /r carriable return /t tab : 줄 위에서 커서 위치를 일정한 값만큼 이동한다. /n 한 줄을 개행 한다. %d 뒤에 있는 정수형 값을 출력한다. %c 뒤에 있는 문자형 값을 출력한다. %s 뒤에 있는 문자열 값을 출력한다. %f 뒤에 있는 소수형 값을 출력한다.
C 프로그램의 구조(4) 기본 입출력 함수와 제어문자 입력함수 : scanf() 소스 예 (P33) 기본형식 : scanf(“제어문”, arg1, arg2, ... ); (예) scanf("%d %f %c", &a, &b, &c); 소스 예 (P33) 1. // 입출력 함수 사용 예 2. 3. #include <stdio.h> 4. void main() 5. { 6. int data; 7. printf("숫자를 입력하세요/n"); 8. scanf("%d", &data); 9. printf("입력한 값은 %d이다./n", data); 10. }