0 CHAPTER 0 C언어 들어가기 전. 1 1 What is the Programming Language? Ghost in the Shell, 1995.

Slides:



Advertisements
Similar presentations
모바일 프로그래밍 개론 UNIT 01 로봇 SW 컨텐츠 교육원 조용수. 학습 목표 모바일 프로그래밍이란 ? Embedded System 특성 Mobile OS Hybrid and Native SDK and NDK 2.
Advertisements

Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
운영 체제의 일반 발표자 : 백승재 황영종. 1. 운영체제의 의의 전자 계산기에서 사용자와 하드웨어와의 직접적으로 대화하는 대신 운영 체제라는 시스템 프로그램을 통하여 하드웨어를 다루는 것이다. 한정된 컴퓨터 자원을 효율적으로 관리, 운영함으로써 사용자에게 편의성을 제공하는.
Introduction to Programming Languages What is Programming Language?
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
1/37 Chapter 4: 프로세서 성능과 휴대성을 위한 하드웨어 © The McGraw-Hill Companies, Inc., 세기의 가장 중요한 발명품 : 마이크로 프로세서 일상생활에 널리 사용됨 프로그램에 의한 적응성.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
2.1 컴퓨터 시스템의 구성 2.2 컴퓨터 시스템의 정보 표현 2.3 중앙처리장치 2.4 저장장치 2.5 컴퓨터 주변기기
Linux Seminar #1 리눅스 이해하기.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
소프트웨어와 운영체제.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
(강의 홈페이지: 강좌 개요 서울대학교 통계학과 2010년 2학기 컴퓨터의 개념 및 실습 (강의 홈페이지:
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
Multimedia Lab. Introduction
기본 컴퓨터 프로그래밍 Lecture #6.
강좌 개요 2009년 1학기 컴퓨터의 개념 및 실습.
컴퓨터 소프트웨어.
Operating Systems Overview
과목 홈페이지  전산학개론 이메일 숙제를 제출할 경우, 메일 제목은 반드시 ‘[전산학개론]’으로 시작.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
컴퓨터 구조학 정보보호학과.
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
Kasimov C언어 세미나 1st.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
3. 데이터베이스 시스템의 구성.
컴퓨터 구조.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
운영체제 (OS: Operating System)
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
정보(information) 데이터(data) 어떤 사물에 대한 소식이나 자료 가공된 데이터
2 운영체제 소개.
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (

『디지털 경제시대의 경영정보시스템』 김효석 · 홍일유 공저 ⓒ 2000, 법문사
컴퓨터 시스템의 개요.
3주 컴퓨터구조.
운영체제 이나현.
Xen and the Art of Virtualization
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
제 1장 시스템 소프트웨어의 개요.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
Chapter 4 The Von Neumann Model.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
Chapter 1 Welcome Aboard.
Lecture 01: Compiler Overview
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
1 컴퓨터 구조 IT CookBook, 컴퓨터 구조와 원리 2.0.
A Web-Based Little Man Computer Simulator
“정보의 표현” 이 점 숙 컴퓨터와 인터넷 “정보의 표현” 이 점 숙
“소프트웨어의 표현” 이 점 숙 컴퓨터와 소프트웨어 “소프트웨어의 표현” 이 점 숙
운영체제 (Operating Systems) (Memory Management Strategies)
Chapter 12 Memory Organization
제 1 장. 자료구조와 알고리즘.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
미래의 커뮤니케이션 기술과 이 기술이 인간에 미치는 영향
제1장 정리 컴퓨터소프트웨어과 2-A반 주세호.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
3단원 디지털 세상 속으로 1. 0과 1의 비밀.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
4. 데이타베이스 시스템의 구성.
제02장 컴퓨터 개요.
운영체제 학 번 : 이름 : 변현영.
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

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 언어에 뿌리를 두고 있음