0 CHAPTER 0 C언어 들어가기 전
1 1 What is the Programming Language? Ghost in the Shell, 1995
2 2 What is the Programming Language? Ghost in the Shell, 1995
3 What is the Programming Language? 3 Ghost in the Shell, 1995
4 Robot, Computer ? 4 Star Wars Robot LEGO MindStorm ASIMO BigDog
5 What is the Computer? 5
6 6
7 Smart Phones, Computer ? 7
8 Smart Phone + Robot Example Car controlled by iPhone = ?
9 What Is a Computer and What Does It Do? Computer: A programmable, electronic device that accepts data, performs operations on that data, and stores the data or results as needed Computers follow instructions, called programs, which determine the tasks the computer will perform Basic operations Input: Entering data into the computer Processing: Performing operations on the data Output: Presenting the results Storage: Saving data, programs, or output for future use Communications: Sending or receiving data
10 What Is a Computer and What Does It Do?
11 C Programming
12 Algorithm
13 Syntax
14 Data Design
15 Hardware Hardware: The physical parts of a computer Internal hardware Located inside the main box (system unit) of the computer External hardware Located outside the system unit and plug into ports located on the exterior of the system unit Hardware associated with all five computer operations
16 Hardware
17 Input devices Used to input data into the computer Keyboards, mice, scanners, cameras, microphones, joysticks, etc. Processing devices Perform calculations and control computer’s operation Central processing unit (CPU) and memory Output devices Present results to the user Monitors, printers, speakers, projectors, etc. Hardware
18 Storage devices Used to store data on or access data from storage media Hard drives, DVD disks and drives, USB flash drives, etc. Communications devices Allow users to communicate with others and to electronically access information Modems, network adapters, etc. Hardware
19 Software Software: The programs or instructions used to tell the computer hardware what to do System software: Operating system allows a computer to operate Boots the computer and launches programs at the user’s direction Most use a GUI to interact with the user via windows, icons, menus, buttons, etc. Windows, Mac OS, Linux, etc.
20 Application Software Application software: Performs specific tasks or applications Creating letters, budgets, etc. Managing inventory and customer databases Editing photographs Scheduling appointments Viewing Web pages Sending and receiving Recording / playing CDs Designing homes Playing games
21 Data vs. Information Data Raw, unorganized facts Can be in the form of text, graphics, audio, or video Information Data that has been processed into a meaningful form Information processing Converting data into information Mostly, summarized form
22 Computer Memory Size NameValue Bit Byte8 bits Kilobyte (KB)2^10 bytes Megabyte (MB)2^20 bytes Gigabyte (GB)2^30 bytes Terabyte (TB)2^40 bytes Petabyte (PB)2^50 bytes Exabyte (EB)2^60 bytes Zettabyte (ZB)2^70 bytes Yotabyte (YB)2^80 bytes
23 Computer Memory Size How big is 1 Megabytes? ? Characters in English or Korean then, how about 1 Gigabytes?
24 Data Representation Text Code system Number Binary number
25 Code system for text data representation ASCII (American Standard Code for Information Interchange) Currently, popular Unicode Java language Data Representation
26 Data Representation
27 Binary Numbering System (2) = [ ] (10) 15 = [ ] (2) = [ ] (2) Data Representation
28 Hexadecimal Numbering System A, B, C, D, E, F =>10, 11, 12, 13, 14, 15 4F6A (16) = [ ] (10) = [ ] (2) Data Representation
29 Integer Negative integer : using complements ( 보수 ) Value Binary number Value 2 ’ s Complements Data Representation
30 Range of integers with 4 bits Range of integers with n bits 32-bit computer Processing 32-bit data in a single time (clock) Data Representation
31 Computer 전자적으로 계산을 수행하는 장치 Programming Language Computer 와 대화하면서 그것의 resources (CPU, Memory, Interface cards 등 ) 를 제어하기 위한 언어 Program 컴퓨터에게 특정의 행위를 지시하기 위해 Programming language 로 작성된 작업 명령서 Computer, Programming Language & Program
32 프로그래밍 언어의 종류 기계어 machine language 컴퓨터가 직접 이해가능한 언어 0과1의 조합 어셈블리어 assembly language 0과1의 조합을 상징적인 코드로 변환하여 인간의 이해도를 향상 컴퓨터에서 실행되려면 결국 기계어로 변환되어야 함 어셈블러(Assembler)라는 소프트웨어 필요 고급수준언어 high-level programming language 인간이 이해하기 가장 쉬운 언어 역시, 기계어로 변환시켜 주는 소프트웨어가 필요 예) FORTRAN, COBOL, PASCAL, BASIC, C, C++, Java...
33 프로그래밍 언어의 역사 제 1 세대 프로그래밍 언어 컴퓨터 자체가 매우 귀하고 비쌌다 대표적인 언어 1) FORTRAN(FORmula TRANslation) IBM에서 개발 최초로 컴파일된 고급수준의 언어 2) ALGOL(ALGOLithmic language)58 유럽(반 IBM 세력)이 중심이 되어 개발 FORTRAN을 일반화하고 기능 첨가 프로그래밍 언어로서 FORTRAN보다 훨씬 좋은 언어 하지만 당시에는 FORTRAN이 훨씬 더 대중적
34 프로그래밍 언어의 역사 제 2 세대 프로그래밍 언어( ‘ 59 ’ 61) 매우 많은 언어가 출현 대표적인 언어 1) FORTRAN(FORmula TRANslation) 과학과 공학용 가장 수명이 긴 언어 중 하나 … 계속되는 변신 … FORTRAN II FOTRAN IV FORTRAN77 FORTRAN90 FORTRAN-D HPF(High Performance Fortran)
35 프로그래밍 언어의 역사 2) COBOL(Common Business Oriented Language) 미 국방성에서 개발 사무 처리용 언어의 대명사 6,70년대 작성된 프로그램의 대부분이 COBOL이라 해도 과언이 아니다 “ 2000년 문제 ” 의 주인공
36 프로그래밍 언어의 역사 제 3 세대 프로그래밍 언어( ‘ 62 ) 60년대 초에 컴파일러 개념이 발전되어 많은 번역문제 해결 수 많은 프로그래밍 언어 출현(10년간 200여개) 실험적인 언어들도 많았다 대표적인 언어들 1) PL/I IBM에서 개발 좋다는 건 뭐든지 첨가 everything for everybody!! Swiss Army Knife(멕가이버 칼)식 설계 실패! (교훈) 결국 프로그래밍 언어란 뚜렷한 사용목적을 가지면서 최소규모를 유지해야 한다는 사실
37 프로그래밍 언어의 역사 2) PASCAL ALGOL의 개발에 참여했던 Niklaus Wirth가 학생들에게 프로그래밍 언어를 가르치기 위해 개발 의외의 성공 -단순성과 표현력만을 강조한 결과 가장 대중적인 프로그래밍 언어중 하나가 됨 3) BASIC (Beginner ’ s All-purpose Symbolic Instruction Code) 영어를 할 줄아는 보통 사람을 위한 프로그래밍 언어 인터프리터방식을 채택하여 대화형 프로그램에 적합 물론 요즘 BASIC은 컴파일러방식! 그래픽 처리 능력을 인정 받아 장수에 성공... visual BASIC
38 프로그래밍 언어의 역사 4) LISP 최초의 함수형 언어 함수형 언어란 수학적 함수의 개념을 그대로 프로그래밍 언어화 한 것 인공지능 분야에 대한 관심과 더불어 발전 가장 널리 사용되는 두 가지 dialects Scheme COMMON LISP
39 프로그래밍 언어의 역사 1970년대의 언어 60년대에 쏟아져 나온 많은 언어들 중 가장 대중적으로 성공한 PASCAL을 발전시킴 1) Ada 미 국방성에서 PASCAL에 기반을 두면서 병렬처리, 예외처리 등의 개념을 지원하는 언어 개발 프로젝트 지원 역사상 가장 많은 노력과 돈을 들여서 만든 언어 2) C UNIX 라는 운영체제를 설계하던 중 탄생 효율적이고 이식성이 뛰어남 고급언어와 어셈블리어의 중간적 성격 -- 중급언어 시스템 프로그래밍에서 일반 응용 프로그램의 작성에 이르기까지 역사상 가장 대중적으로 성공한 언어
40 프로그래밍 언어의 역사 C언어 오늘날 대표적인 프로그래밍 언어 C는 유닉스(UNIX)의 운영체제 작성을 위한 시스템 프로그래밍 언어로 설계된 언어 C언어는 프로그램을 기계어 명령에 가까운 형태로 작성할 수 있으므로 다른 고급언어에 비하여 하드웨어에 대한 보다 확실한 통제가 가능 특정 컴퓨터 기종에 의존하지 않으므로 프로그램의 이식성(portability)이 높음 C++언어 C++는 C언어의 확장 객체지향 프로그래밍 언어 40
41 프로그래밍 언어의 역사 Java Sun Microsystems사에서 개발한 프로그래밍 언어 간단하고 버그가 없는 전자제품 개발이 초기의 목적 플랫폼 독립적이면서 분산 네트워크 지원필요 1994년 중반부터 웹의 인기 상승으로 브라우저 개발 현재는 Netscape과 Explore 모두에서 자바를 지원 웹상에서 에니메이션이나 고수준의 상호작용이 가능 프로그래밍 언어로서의 자바 단순 객체지향적 분산처리 컴퓨터 구조에 중립적 등등
42 C Programming
43 CHAPTER 1 C언어 개요 1.1 프로그래밍의 개념 1.2 프로그래밍 언어의 종류 1.3 프로그래밍 기법 1.4 프로그래밍 개발 과정 1.5 C언어의 소개 학 습 목 표 프로그램의 개념을 학습한다. 프로그램이 사용하는 언어와 인간이 사용하는 언어와의 차이점에 대하여 학습한다. 프로그래밍 기법에 대하여 학습한다. 프로그래밍 개발 과정에 대하여 학습한다. C 언어의 역사, 특징, 버전, 활용에 대하여 학습한다
44 프로그래밍의 개념 자연 언어 : 인간이 사용하는 언어. 컴퓨터 언어 : 컴퓨터가 사용하는 언어
45 프로그램과 프로그래밍 프로그래밍 : 프로그램을 만드는 과정 프로그램 : 컴퓨터가 알아 들을 수 있는 컴퓨터 언어
46 프로그램의 변환 프로그램이 컴퓨터에서 동작되도록 하려면 변환이 올바르게 이루어져야 한다.
47 기계어 0과 1로 이루어진 명령어의 조합 CPU가 알아 들을 수 있는 언어
48 어셈블리어 기계어를 사람이 알아보기 쉬운 일련의 기호를 사용하여 좀 더 쉽게 컴퓨터의 동작을 제어할 수 있도록 만든 것
49 고급언어 인간의 언어와 가까운 형태로 이뤄진 고급 언어인간의 언어와 가까운 형태로 이뤄진 고급 언어 BASIC, FORTRAN, COBOL, PASCAL, C, C++ 등 고급 언어는 컴파일러에 의하여 CPU가 이해하고 알아들을 수 있는 기계어로 변환된다.
50 인터프리터와 컴파일러 방식의 차이 인터프리터(interpreter) 방식 소스 코드를 주기억장치에 복사한 후 기계어(2진수 체계인 0 또는 1)로 번역하여 처리 결과를 나타낸다. 초보자가 사용하기에 편리하다. 실행 결과를 나타내려면 항상 소스 코드가 존재해야 하므로 상용화가 불가능하다. 실행 할 때마다 매번 소스 코드를 기계어로 번역하므로 실행 속도가 느리다. BASIC과 LISP 등이 있다. 컴파일러(compiler) 방식 소스 코드, 오브젝트 코드, 실행 코드 등 각 단계별로 소프트웨어 자원이 존재하기 때문에 상용화가 가능하다. 초보자가 사용하기가 어렵다. 일단 기계어로 번역된 실행 코드는 최적화된 상태의 코드이므로 실행 결과가 빠르게 나타난다. FORTRAN, COBOL, PASCAL, C, C++ 등이 있다.
51 순차적 프로그래밍 순차적 프로그래밍이란 프로그램의 시작에서부터 종료할 때까지 결과를 얻어내기 위해 코드(code)의 흐름대로 프로그램이 진행되는 것을 말한다.
52 구조적 프로그래밍 일련의 독립적인 작업단위로 분해된 모듈들로 구성되며, 복잡한 문제를 아주 작은 수행단위로 분해하여 처리할 수 있기 때문에 효율적인 프로그래밍을 수행할 수 있다.
53 구조적 프로그래밍의 예
54 객체지향 프로그래밍 객체지향 프로그래밍 기법에서 객체는 모듈내에서 동작되는 함수와 입력되는 자료들을 하나의 패키지로 묶어 완전히 독립된 모듈로 존재한다. C++, JAVA 등
55 객체지향 프로그래밍의 예 객체지향 프로그래밍 기법에서 객체는 모듈내에서 동작되는 함수와 입력되는 자료들을 하나의 패키지로 묶어 완전히 독립된 모듈로 존재한다
56 프로그래밍 개발과정 프로그래밍 요구사항 분석 프로그램 계획 설정 소스코드 작성 컴파일 링크 실행 디버깅
57 프로그래밍 요구사항 분석
58 프로그램 계획 설정 자료구조 – 자료들을 이 영역에 어떠한 구조로 저장하는지를 결정하는 방식
59 배열 연속된 메모리 공간에 연속적으로 같은 크기로 순서를 갖고 있는 자료들의 집합 사용면에 있어서는 효율적이지 못하나 사용하기에는 편리함
60 연결리스트 포인터를 사용하여 메모리 공간에 동적으로 메모리를 관리하는 방법 사용하기가 까다로워 잘못 사용하면 프로그램 실행 중에 심각한 논리 에러를 발생 시킬 수 있음
61 스택 인터럽트 처리 또는 함수의 호출시에 현재의 주소나 상태 등을 임시로 저장하는데 사용 LIFO : 입력된 자료가 가장 나중에 출력되는 방식
62 큐 마우스의 이벤트, 버퍼링 등이 발생하면 큐에 저장한 후에, 저장된 순서대로 출력하여 처리하도록 하는데 활용 FIFO : 가장 먼저 입력된 자료가 가장 먼저 출력
63 트리구조 윈도우의 탐색기에서 나타내는 폴더 구조가 대표적인 트리 구조 대규모 자료가 저장되어 있는 공간을 빠르게 검색할 경우 많이 활용
64 알고리즘 보통 문제를 해결해 내기 위한 방법이나 절차를 의미
65 알고리즘의 예 1부터 100까지 일렬로 더하는 알고리즘
66 소스 코드 작성 소스 코드(source code)란 말의 의미는 근원적 코드를 뜻하며, 프로그래밍에 사용되는 코드라고 이해해도 무방 프로그래밍을 작성해 나가는 과정을 의미
67 컴파일 사용자가 고급 언어로 작성한 소스 코드를 동작할 컴퓨터 등에서 동작시킬 수 있도록 저급언어 혹은 기계어로 번역 컴파일러에 의하여 문법적 에러를 체크하여 사용자가 수정할 수 있도록 한다.
68 링크 링커에 의해 컴파일 과정에서 생성되어 분할된 오브젝트 코드들을 결합하고, 오브젝트 코드로 존재하는 라이브러리들을 결합하여 동작할 컴퓨터에서 동작시킬 수 있는 실행 코드를 생성
69 실행 운영체제에 존재하는 프로그램인 로더(loader)가 하드 디스크와 같은 저장 공간에 있는 실행 코드를 주기억장치로 복사한 후 컴퓨터가 실행하는 기능을 수행하는 과정
70 디버깅 소스 코드를 수정하여 버그(bug)를 없애는 과정
71 버그 ?
72 C언어의 역사 C 언어는 1972년에 켄 톰슨과 데니스 리치가 당시 PDP-11에 사용될 운영제제인 유닉스에서 사용하기 위해 만든 고급 프로그래밍 언어 C 언어는 시스템 프로그램 개발뿐만 아니라 응용 프로그램 개발 등에도 사용되는 현재 매우 폭넓게 사용되고 있는 가장 인기 있는 프로그래밍 언어
73 C언어의 특징 - 이식성 C 언어는 다른 프로그래밍 언어들보다 높은 호환성을 가지고 있고 C 언어의 표준 함수로만 작성된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일되고 실행될 수 있다.
74 C언어의 특징 - 다양성 모든 분야에서 사용할 수 있도록 설계된 간결하면서도 효율적인 프로그램 언어
75 C언어의 특징 – 유연성 소프트웨어의 부품화를 실현할 수 있다는 것 소프트웨어의 부품화란 새로운 프로그램을 개발하기 위해 이미 작성된 외부 프로그램 모듈들을 그대로 사용할 수 있다는 것을 의미
76 C언어의 특징 – 혼합성 다른 프로그래밍 언어와 함께 혼합되어 사용될 수 있으며, 혼합 프로그램을 개발하는 프로그램의 혼합성을 극대화시키는데 사용
77 C언어의 버전
78 C언어의 활용 운영 체제, 문서 작성기, 스프레드 시트, 게임, 인터넷 프로그램 등 다양한 분야로 사용되면서 가장 많이 사용되는 고급 프로그래밍 언어 마이크로프로세서, 하드웨어 인터페이스 제어, 임베디드 시스템(embedded system) 등에도 활용 C++. C#, 자바, 펄, PHP 등과 같은 프로그래밍 언어들도 C 언어에 뿌리를 두고 있음