19
2009년 여름 계절학기 C프로그래밍 및 실습 한국항공대학교 항공우주기계공학부 한국항공대학교 항공우주기계공학부 (강의자료: http://mercury.kau.ac.kr/sjkwon) 1 Perfect C 강의계획서 ¾ 강의 2시간 ¾ 실습 1시간 (진도 범위 예제 연습) TA 참여 강의계획서 ¾ 실습 1시간 (진도 범위 예제 연습) TA 참여 2

C프로그래밍-chap00.ppt [호환 모드]mercury.hau.ac.kr/sjkwon/Lecture/cprogram/C프로그래밍-chap00.pdf · Perfect C 강의계획서 ¾각장과제물(단순 copy는영점처리)

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

2009년 여름 계절학기

C프로그래밍 및 실습

한국항공대학교 항공우주기계공학부한국항공대학교 항공우주기계공학부(강의자료: http://mercury.kau.ac.kr/sjkwon)

1

Perfect C

강의계획서강의 2시간실습 1시간 (진도 범위 내 예제 연습) – TA 참여 강의계획서실습 1시간 (진도 범위 내 예제 연습) – TA 참여

2

Perfect C

강의계획서강

각 장 과제물 (단순copy는 영점 처리)

1) 진도 범위 내의중간점검 문제 및중간점검 문제 및이해점검 문제

2) 프로그래밍 과제2) 프로그래밍 과제(3,6번 문제) – 소스코드와 결과 제출

제출기한: 다음 수업일, 제출장소: 기계관 3층

사물함

3

Chapter 00

컴퓨터와 프로그래밍

4

2009 한국항공대학교 항공우주기계공학부(http://mercury.kau.ac.kr/sjkwon)

Perfect C

컴퓨터와 프로그램

컴퓨터

컴퓨터와 프로그램

컴퓨터전자적으로 계산을 수행하는 장치

프로그램프로그램컴퓨터의 행동을 지시하는 명령어

5

Perfect C

하드웨어와 소프트웨어하드웨어와 소프트웨어

하드웨어(Hardware)하드웨어(Hardware)컴퓨터를 구성하는 물리적인 장치(device)를 의미

소프트웨어(Software)소프트웨어(Software)컴퓨터가 수행할 작업을 지시하는 명령어들의 집합(프로그램)소프트웨어는 응용 소프트웨어와 시스템 소프트웨어로 나누며, 시스템 소프트웨어는 하드웨어를 작동시키는 기본 소프트웨어

6

Perfect C

컴퓨터 시스템컴퓨터 시스템

컴퓨터 시스템컴퓨터 시스템컴퓨터 시스템은 하드웨어와 소프트웨어로 이루어진다.

컴퓨터 하드웨어 구성컴퓨터 하드웨어 구성

120 GB 하드 디스크 드라이브 64배속 DVD/CD-RW 콤보 드라이브

512MB RAM 주 메모리

17인치 LCD 모니터

키보드

17인치 LCD 모니터해상도 1280×1024

2.8GHz 인텔 펜티엄 4프로세서

CPU

7

그림 1.1 컴퓨터 하드웨어 구성

Perfect C

컴퓨터 하드웨어 구성 요소컴퓨터 하드웨어 구성 요소

중앙처리장치(Central Processing Unit; CPU) 중앙처리장치(Central Processing Unit; CPU) 프로그램의 명령어들을 수행하는 컴퓨터의 두뇌

주 메모리(Main Memory) 주 메모리(Main Memory) 프로그램과 데이터를 저장하는 휘발성(volatile) 기억장치

그림 1.1에서 512 메가바이트(MB) RAM

보조 메모리 장치(Secondary Memory) 소프트웨어를 비교적 영구적으로 저장하는 비휘발성 기억장치

그림 1.1의 120 기가바이트(GB) 하드 디스크 드라이브

64배속 DVD/CD-RW 콤보(combo) 드라이브

입출력 장치(Input/Output Device) 입출력 장치(Input/Output Device) 인간과 컴퓨터의 상호 작용을 도와주는 장치

키보드 마우스 모니터

8

키보드, 마우스, 모니터

Perfect C

하드웨어 구성 요소 간 정보 이동하드웨어 구성 요소 간 정보 이동

프로그램 실행을 위한 하드웨어 구성 요소 간 정보 이동프로그램 실행을 위한 하드웨어 구성 요소 간 정보 이동하드 디스크에 저장된 프로그램을 주 메모리에 읽어 들인다

CPU는 주 메모리로부터 프로그램의 명령어들을 하나씩 읽어들여서 그 명령어를 한 번에 하나씩 수행한다.

명령어가 사용하는 데이터도 역시 주 메모리에 저장되며 그데이터는 보조 메모리 혹은 키보드 같은 입력 장치를 통해데이터는 보조 메모리 혹은 키보드 같은 입력 장치를 통해입력된다.

프로그램은 실행되는 동안 필요에 따라 모니터와 같은 출력장치에 정보를 출력한다

9

Perfect C

소프트웨어소프트웨어

시스템 소프트웨어(system software)시스템 소프트웨어(system software)컴퓨터 시스템 효율적인 운영과 관리를 위한 소프트웨어

운영 체제, 컴파일러, 디버거, 유틸리티 프로그램, , ,

응용 소프트웨어(application software)시스템 소 웨어가 아닌 거의 소 웨어 지칭하시스템 소프트웨어가 아닌 거의 모든 소프트웨어를 지칭하는포괄적인 용어

문서 작성 S/W, 데이터 관리 S/W, 스프레드시트,그래픽 S/W, 웹 관련 S/W, 통계 S/W, 게임 S/W 등

10

Perfect C

소프트웨어소프트웨어

응용 S/W

운영체제

시스템 S/W

워드세서

파워포인트

운영체제

컴파일러

디버거유틸리티

프로세서

컴파일러

웹 브라우저 데이터베이스

그림 1.6 소프트웨어의 종류

11

Perfect C

프로그램 실행 원리프로그램 실행 원리

프로그램 실행 원리프로그램 실행 원리폰 노이만 구조(von Neumann architecture)를 기본으로 한다.

프로그램 내장 방식(stored program)의 컴퓨터( p g )

주메모리

적재프로그램

(명령어 + 데이터)프로그램

적재

명령어, 데이터 인출명령어 실행 결과

CPU PC

12그림 1.4 폰 노이만 컴퓨터 구조

Perfect C

컴퓨터의 자료표현컴퓨터의 자료표현

자료표현 원리2진수 체계를 사용

비트와 바이트Bit

• Binary Digit 0 또는 1의 두 개 정보 표현하는 정보의 최소 단위• Binary Digit, 0 또는 1의 두 개 정보 표현하는 정보의 최소 단위

byte• 연속된 8개의 비트

워드연속된 개의 바이 총 비• 연속된 4 개의 바이트, 총 32비트

• 실질적으로 시스템마다 워드의 크기는 다를 수 있음

13

Perfect C

저장단위의 크기저장단위의 크기

단위단위

정보 용량의 비교정보 용량의 비교

14

Perfect C

진법과 수의 구성진법과 수의 구성

10진법10진법0에서 9까지의 수를 사용하며, 이 10 가지의 수를 한 자리의기본 단위로 하는 진법

2진법2진법0과 1의 조합으로 숫자를 표시하는 방법컴퓨터의 자료 표현은 한 비트가 두 가지 표현이 가능컴퓨터의 자료 표현은 한 비트가 두 가지 표현이 가능

16진법0에서 9, A에서 F까지

15

Perfect C

2 8 16진수간 상호관계2, 8, 16진수간 상호관계

2진수 8진수 그리고 16진수 사이의 관계2진수, 8진수 그리고 16진수 사이의 관계2진수의 4자리씩을 16진수로 변환하면 쉽게 2진수를 16진수로변환이 가능

2진수의 3자리씩을 8진수로 변환하면 쉽게 2진수를 8진수로변환이 가능

10진수 26 625를 각각 2진수 8진수 16진수로 표현하면10진수 26.625를 각각 2진수, 8진수, 16진수로 표현하면

16

Perfect C

이진수와 십진수이진수와 십진수

십진수십진수열 개의 숫자(0에서 9)를 이용하여 값을 표현한다.

십진수의 각 자리에는 자릿값이 있다.

182 = 1 x 102 + 8 x 101 + 2 x 100

= 1 x 100 + 8 x 10 + 2 x 1

이진수두 개의 숫자(0과 1)를 이용하여 값을 표현한다.

이진수의 각 자리에는 자릿값이 있다.

11012 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20

1 8 + 1 4 + 0 2 + 1 1 = 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 13

17

Perfect C

십진수를 이진수로 변환십진수를 이진수로 변환

예 24(=16) < 27 < 25(=32)예 2 (=16) < 27 < 2 (=32)27 = 1 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1

= 1 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 1 x 2 + 1 x 2 + 0 x 2 + 1 x 2 + 1 x 2= 110112

변환 방법27을 24(=16)로 나누면 몫은 1이고 나머지는 11이다.

첫 번째 비트는 1이고, 11은 나머지 4 비트들로 표현되어야 한다.

11을 23(=8)으로 나누면 몫은 1이고 나머지는 3이다.

두 번째 비트는 1이고, 3은 나머지 3 비트들로 표현되어야 한다.

3을 22(=4)로 나누면 몫은 0이고 나머지는 3이다3을 22(=4)로 나누면 몫은 0이고 나머지는 3이다.

세 번째 비트는 0이고, 3은 나머지 2 비트들로 표현되어야 한다.

3을 21(=2)로 나누면 몫은 1이고 나머지는 1이다.

18

( )

네 번째 비트는 1이고, 1은 나머지 1 비트로 표현되어야 한다.

Perfect C

16진수(hexadecimal)16진수(hexadecimal)

16진수(hexadecimal)16진수(hexadecimal)기수 16인 수 체계

0, …, 9, A(10), B(11), C(12), D(13), E(14), F(15)( ) ( ) ( ) ( ) ( ) ( )

2AC16 = 2 x 162 + A x 161 + C x 160

= 2 x 256 + 10 x 16 + 12 x 1= 684

19

그림 1.7 이진수, 16진수 관계

Perfect C

2의 보수2의 보수

2의 보수(2’s complement)2의 보수(2 s complement)음수를 표현하는 방식 중 가장 많이사용되는 방식이 2의 보수

20

Perfect C

2의 보수 계산 방법2의 보수 계산 방법

음수의 이진수 표기인 2의 보수를 구하는 방법 1음수의 이진수 표기인 2의 보수를 구하는 방법 12n에서 음수의 절대값을 빼는 방법

• 여기에서 n은 숫자가 표현되는 비트의 개수• 예를 들어 –4를 4비트로 2의 보수로 표현하자면, 표현되는 비트의수가 4개이므로 24 – 4 = 12 = 1100

2의 보수를 구하는 방법 22의 보수를 구하는 방법 2예를 들어 –4를 4비트로 2의 보수로 표현하자면

21

Perfect C

문자와 논리문자와 논리

문자 코드문자 코드N비트의 조합에 일정한 문자를 할당하여 지정한 것을 문자 코드

국제 표준인 문자 코드는 아스키코드, 엡시딕코드, 유니코드

아스키 코드ASCII(American Standard Code for Information Interchange)

국제적인 준으 사용하는 문자 체계 서 비 를 사용하여국제적인 표준으로 사용하는 문자 코드 체계로서 7비트를 사용하여128개의 문자, 숫자, 특수문자 코드를 규정

대문자 A의 코드는 1000001이며, 소문자 a의 코드는 1100001

22

논리

참과 거짓

Perfect C

아스키코드표아스키코드표

23

Perfect C

프로그래밍 언어프로그래밍 언어

프로그래밍 언어의 필요성프로그래밍 언어의 필요성사람과 컴퓨터가 서로 의사교환을 하기 위해

사람이 컴퓨터에게 지시할 명령어를 프로그래밍 언어로 기술

24

Perfect C

기계어와 어셈블리어기계어와 어셈블리어

기계어기계어0과 1로 표현되는 프로그래밍 언어로서 컴퓨터가 직접 이해할 수있는 유일한 언어

어셈블리어기계어의 연산코드와 피연산자(operand)를 프로그래머가 좀 더이해하기 쉬운 기호 형태로 일대일 대응시킨 프로그래밍 언어이해하기 쉬운 기호 형태로 일대일 대응시킨 프로그래밍 언어

25

Perfect C

저급 언어와 고급 언어저급 언어와 고급 언어

HLLHLL인간에게 친근한 언어를 고급 언어

LLLLLL기계어와 어셈블리어는 저급언어

26

Perfect C

프로그래밍 언어프로그래밍 언어

프로그램을 작성하기 위한 언어사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법그 발전 단계에 따라 기계어, 어셈블리어, 고급언어로 분류

기계어이진수 코드로 CPU 종류마다 고유의 기계어

1001 0001 0001 위치의 값을 누산기에 저장하라. 1100 0010 누산기에 0010 위치의 값을 더하라

1010 0011 누산기의 값을 0011위치에 저장하라.어셈블리어

기계어의 이진수 코드를 기호화 코드(mnemonics)로 대치한 것( )LOAD Y Y의 값을 누산기에 저장한다. ADD Z 누산기에 Z의 값을 더하라STORE X 누산기의 값을 X에 저장하라.

고급 언어영어와 비슷한 구문으로 표현되며, 읽고 쓰기가 보다 쉽다

고급언어는 프로그래머가 기계의 세부사항을 알 필요가 없게 해준다

27

X = Y + Z

Perfect C

고급 언어의 종류고급 언어의 종류

포트란포트란포트란(FORTRAN)은 FORmula TRANslating system(수식 번역 시스템)의약자

과학과 공학 및 수학적 문제들을 해결하기 위해 고안된 프로그래밍 언어

베이직베이직(BASIC)은 Beginner’s All-purpose Symbolic Instruction Code의약어약어

초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어

코볼코볼(COmmon Business Oriented Language)은 기업의 사무처리에 적합한코볼(COmmon Business Oriented Language)은 기업의 사무처리에 적합한프로그래밍 언어

파스칼PASCAL은 프랑스의 수학자인 파스칼(Pascal)의 이름에서 따온 언어PASCAL은 프랑스의 수학자인 파스칼(Pascal)의 이름에서 따온 언어프로그램의 작성 즉, 구조적 프로그래밍 및 알고리즘 학습에 적합하도록 개발된프로그래밍 언어

28

Perfect C

C와 C++

C

C와 C++

CC는 유닉스(UNIX)의 운영체제 작성을 위한 시스템 프로그래밍 언어로설계된 언어

컴파일러나 수많은 소프트웨어 도구(Tool)들도 C언어로 개발컴파일러나 수많은 소프트웨어 도구(Tool)들도 C언어로 개발다른 고급언어에 비하여 하드웨어에 대한 보다 확실한 통제가 가능

특정 컴퓨터 기종에 의존하지 않으므로 프로그램의이식성(portability)이 높음이식성(portability)이 높음풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용프로그래밍 언어로서 널리 보급되었으며, 응용 소프트웨어의 개발에 널리이용이용

C++C++은 객체지향 프로그래밍(OOP Object-Oriented Programming)을지원하기 위해 C언어가 가지는 장점을 그대로 계승하면서 객체의지원하기 위해 C언어가 가지는 장점을 그대로 계승하면서 객체의상속성(inheritance) 등의 개념을 추가한 효과적인 언어C++는 C언어의 확장이라고 볼 수 있으므로 기존의 C언어로 개발된모든 프로그램들을 수정 없이 그대로 사용 가능

29

모든 프로그램들을 수정 없이 그대로 사용 가능

Perfect C

자바

자바

자바

자바자바(JAVA)의 시초는 1992년 미국의 SUN 사에서 가전제품들을 제어하기 위한 언어에서부터 비롯됨

운영체제나 CPU와는 독립적으로 실행 가능한 프로그래밍 언어자바는 C++언어의 기초 위에 객체지향 개념을 구현하도록설계된 언어설계된 언어

분산 네트워크상에서의 프로그래밍이 용이

자바 프로그램의 실행은 운영체제의 가상 머신(Virtual (Machine) 위에서 인터프리터 방식으로

프로그래머에게 중요한 언어 C, C++, Java기본은 모두 C 언어

30

Perfect C

프로그램과 소프트웨어프로그램과 소프트웨어

프로그램프로그램프로그램은 컴퓨터에게 어떤 일의 수행을 지시하는 명령어(instruction) 집합소스와 실행파일와 실행파일• 특정한 프로그램 언어로 이 명령어의 집합을 모아 놓은 파일을 프로그램소스(source)

• 이 소스 파일로부터 만들어진 실행 파일은 컴퓨터가 이해할 수 있는 기계어로명령어를 모아 놓은 파일명령어를 모아 놓은 파일

소프트웨어소프트웨어는 보통 ‘프로그램’이라고 부르는 것 외에도 데이터와문서까지를 포함하는 포괄적인 개념문서까지를 포함하는 포괄적인 개념

31

Perfect C

소프트웨어 공학과 개발단계소프트웨어 공학과 개발단계

소프트웨어 공학소프트웨어 공학신뢰성 있고 실제 기계에서 효과적으로 작동하는 소프트웨어를경제적으로 얻기 위해서 올바른 공학적 원리들을 체계화시킨학문

소프트웨어의 생명주기소프트웨어 개발단계는 분석 설계 구현 검사 유지보수의소프트웨어 개발단계는 분석, 설계, 구현, 검사, 유지보수의과정을 거치며, 개발과정에서 이 단계를 순환적으로 반복

32

Perfect C

프로그램 개발 환경프로그램 개발 환경

프로그램프로그램컴퓨터에게 어떤 일의 수행을 지시하는 명령어(instruction)의집합

통합 개발 환경 (예 Mi ft Vi l St di )통합 개발 환경 (예, Microsoft Visual Studio)Integrated Development Environments프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터등을 통합적으로 제공하는 개발 환경

33

Perfect C

컴파일러와 어셈블러컴파일러와 어셈블러

컴파일러(compiler)컴파일러(compiler)고급언어로 작성된 프로그램을 기계어로 바꾸어주는 프로그램

어셈블러(assembler)어셈블러(assembler)어셈블리 언어로 작성된 프로그램을 기계어로 바꾸어주는프로그램

34

Perfect C

프로그램 개발 과정프로그램 개발 과정

링커(linker)링커(linker)이러한 여러 개의 목적 파일(*.obj)들을 라이브러리 함수와연결해서 하나의 파일인 실행파일을 생성하는 작업을 수행

로더(loader)작성된 프로그램을 컴퓨터의 주기억장치에 로드(load)함으로써프로그램을 실행 가능하게 하는 역할을 수행프로그램을 실행 가능하게 하는 역할을 수행

35

Perfect C

오류 수정오류 수정

디버깅(debugging)디버깅(debugging)프로그램 개발과정에서 컴파일 에러나 실행 에러를 수정하는과정

36

Perfect C

컴파일러 및 인터프리터컴파일러 및 인터프리터

컴파일러 소스 프로그램컴파일러고급 언어로 작성된코드를 동등한 의미의

소스 프로그램

저급 언어로 된 코드로번역하는소프트웨어이다.

입력 출력인터프리터

인터프리터 소스 프로그램

별개의 컴파일 단계없이 한 번에 한 문장씩번역(혹은 해석)하여

컴파일러번역(혹은 해석)하여실행한다.

입력 출력목적

프로그램

37