2009년 여름 계절학기 C프로그래밍 및 실습 한국항공대학교 항공우주기계공학부 (강의자료: http://mercury.kau.ac.kr/sjkwon) 1 Perfect C ¾ 강의 2시간 ¾ 실습 1시간 (진도 범위 내 예제 연습) – TA 참여 강의계획서 2 Perfect C 강 강의계획서 ¾ 각 장 과제물 (단순 copy는 영점 처리) 1) 진도 범위 내의 중간점검 문제 및 이해점검 문제 2) 프로그래밍 과제 (3,6번 문제) – 소스 코드와 결과 제출 ¾제출기한: 다음 수업일, ¾제출장소: 기계관 3층 사물함 3 Chapter 00 컴퓨터와 프로그래밍 2009 한국항공대학교 항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 4 Perfect C 컴퓨터와 프로그램 컴퓨터 전자적으로 계산을 수행하는 장치 프로그램 컴퓨터의 행동을 지시하는 명령어 5 Perfect C 하드웨어와 소프트웨어 하드웨어(Hardware) 컴퓨터를 구성하는 물리적인 장치(device)를 의미 소프트웨어(Software) 컴퓨터가 수행할 작업을 지시하는 명령어들의 집합(프로그램) 소프트웨어는 응용 소프트웨어와 시스템 소프트웨어로 나누며, 시스템 소프트웨어는 하드웨어를 작동시키는 기본 소프트웨어 6 Perfect C 컴퓨터 시스템 컴퓨터 시스템 컴퓨터 시스템은 하드웨어와 소프트웨어로 이루어진다. 컴퓨터 하드웨어 구성 120 GB 하드 디스크 드라이브 512MB RAM 키보드 64배속 DVD/CD-RW 콤보 드라이브 주 메모리 CPU 17인치 LCD 모니터 해상도 1280×1024 2.8GHz 인텔 펜티엄 4프로세서 그림 1.1 컴퓨터 하드웨어 구성 7 Perfect C 컴퓨터 하드웨어 구성 요소 중앙처리장치(Central Processing Unit; CPU) 프로그램의 명령어들을 수행하는 컴퓨터의 두뇌 주 메모리(Main Memory) 프로그램과 데이터를 저장하는 휘발성(volatile) 기억장치 그림 1.1에서 512 메가바이트(MB) RAM 보조 메모리 장치(Secondary Memory) 소프트웨어를 비교적 영구적으로 저장하는 비휘발성 기억장치 그림 1.1의 120 기가바이트(GB) 하드 디스크 드라이브 64배속 DVD/CD-RW 콤보(combo) 드라이브 입출력 장치(Input/Output Device) 인간과 컴퓨터의 상호 작용을 도와주는 장치 키보드, 키보드 마우스 마우스, 모니터 8 Perfect C 하드웨어 구성 요소 간 정보 이동 프로그램 실행을 위한 하드웨어 구성 요소 간 정보 이동 하드 디스크에 저장된 프로그램을 주 메모리에 읽어 들인다 CPU는 주 메모리로부터 프로그램의 명령어들을 하나씩 읽어 들여서 그 명령어를 한 번에 하나씩 수행한다. 명령어가 사용하는 데이터도 역시 주 메모리에 저장되며 그 데이터는 보조 메모리 혹은 키보드 같은 입력 장치를 통해 입력된다. 프로그램은 실행되는 동안 필요에 따라 모니터와 같은 출력 장치에 정보를 출력한다 9 Perfect C 소프트웨어 시스템 소프트웨어(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 ( p program)의 g ) 컴퓨터 주메모리 프로그램 적재 프로그램 (명령어 + 데이터) 명령어 실행 결과 CPU 명령어, 데이터 인출 PC 그림 1.4 폰 노이만 컴퓨터 구조 12 Perfect C 컴퓨터의 자료표현 자료표현 원리 2진수 체계를 사용 비트와 바이트 Bit • Binary Digit Digit, 0 또는 1의 두 개 정보 표현하는 정보의 최소 단위 byte • 연속된 8개의 비트 워드 • 연속된 4 개의 바이트, 바이 총 32비트 비 • 실질적으로 시스템마다 워드의 크기는 다를 수 있음 13 Perfect C 저장단위의 크기 단위 정보 용량의 비교 14 Perfect C 진법과 수의 구성 10진법 0에서 9까지의 수를 사용하며, 이 10 가지의 수를 한 자리의 기본 단위로 하는 진법 2진법 0과 1의 조합으로 숫자를 표시하는 방법 컴퓨터의 자료 표현은 한 비트가 두 가지 표현이 가능 16진법 0에서 9, A에서 F까지 15 Perfect C 2 8, 2, 8 16진수간 상호관계 2진수, 2진수 8진수 그리고 16진수 사이의 관계 2진수의 4자리씩을 16진수로 변환하면 쉽게 2진수를 16진수로 변환이 가능 2진수의 3자리씩을 8진수로 변환하면 쉽게 2진수를 8진수로 변환이 가능 10진수 26.625를 26 625를 각각 2진수, 2진수 8진수, 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 =1x8+ 1x4 = 13 + 0x2 +1x1 17 Perfect C 십진수를 이진수로 변환 예 24(=16) < 27 < 25(=32) 27 = 1 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1 = 1 x 2 4 + 1 x 2 3 + 0 x 22 + 1 x 2 1 + 1 x 2 0 = 110112 변환 방법 27을 24(=16)로 나누면 몫은 1이고 나머지는 11이다. 첫 번째 비트는 1이고, 11은 나머지 4 비트들로 표현되어야 한다. 11을 23(=8)으로 나누면 몫은 1이고 나머지는 3이다. 두 번째 비트는 1이고, 3은 나머지 3 비트들로 표현되어야 한다. 3을 22(=4)로 나누면 몫은 0이고 나머지는 3이다. 3이다 세 번째 비트는 0이고, 3은 나머지 2 비트들로 표현되어야 한다. 3을 21((=2)로 ) 나누면 몫은 1이고 나머지는 1이다. 네 번째 비트는 1이고, 1은 나머지 1 비트로 표현되어야 한다. 18 Perfect C 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 그림 1.7 이진수, 16진수 관계 19 Perfect C 2의 보수 2의 보수(2 보수(2’s s complement) 음수를 표현하는 방식 중 가장 많이 사용되는 방식이 2의 보수 20 Perfect C 2의 보수 계산 방법 음수의 이진수 표기인 2의 보수를 구하는 방법 1 2n에서 음수의 절대값을 빼는 방법 • 여기에서 n은 숫자가 표현되는 비트의 개수 • 예를 들어 –4를 4비트로 2의 보수로 표현하자면, 표현되는 비트의 수가 4개이므로 24 – 4 = 12 = 1100 2의 보수를 구하는 방법 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 저급 언어와 고급 언어 HLL 인간에게 친근한 언어를 고급 언어 LLL 기계어와 어셈블리어는 저급언어 26 Perfect C 프로그래밍 언어 프로그램을 작성하기 위한 언어 사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법 그 발전 단계에 따라 기계어, 어셈블리어, 고급언어로 분류 기계어 이진수 코드로 CPU 종류마다 고유의 기계어 1001 0001 0001 위치의 값을 누산기에 저장하라. 1100 0010 누산기에 0010 위치의 값을 더하라 1010 0011 누산기의 값을 0011위치에 저장하라. 어셈블리어 기계어의 이진수 코드를 기호화 코드(mnemonics)로 ( ) 대치한 것 LOAD Y Y의 값을 누산기에 저장한다. ADD Z 누산기에 Z의 값을 더하라 STORE X 누산기의 값을 X에 저장하라. 고급 언어 영어와 비슷한 구문으로 표현되며, 읽고 쓰기가 보다 쉽다 고급언어는 프로그래머가 기계의 세부사항을 알 필요가 없게 해준다 X=Y+Z 27 Perfect C 고급 언어의 종류 포트란 포트란(FORTRAN)은 FORmula TRANslating system(수식 번역 시스템)의 약자 과학과 공학 및 수학적 문제들을 해결하기 위해 고안된 프로그래밍 언어 베이직 베이직(BASIC)은 Beginner’s All-purpose Symbolic Instruction Code의 약어 초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어 코볼 코볼(COmmon Business Oriented Language)은 기업의 사무처리에 적합한 프로그래밍 언어 파스칼 PASCAL은 프랑스의 수학자인 파스칼(Pascal)의 이름에서 따온 언어 프로그램의 작성 즉, 구조적 프로그래밍 및 알고리즘 학습에 적합하도록 개발된 프로그래밍 언어 28 Perfect C C와 C++ C C는 유닉스(UNIX)의 운영체제 작성을 위한 시스템 프로그래밍 언어로 설계된 언어 컴파일러나 수많은 소프트웨어 도구(Tool)들도 C언어로 개발 다른 고급언어에 비하여 하드웨어에 대한 보다 확실한 통제가 가능 특정 컴퓨터 기종에 의존하지 않으므로 프로그램의 이식성(portability)이 높음 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용 프로그래밍 언어로서 널리 보급되었으며, 응용 소프트웨어의 개발에 널리 이용 C++ C++은 객체지향 프로그래밍(OOP Object-Oriented Programming)을 지원하기 위해 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)의 집합 통합 개발 환경 (예, (예 Microsoft Mi ft Visual Vi l Studio) St di ) Integrated Development Environments 프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경 33 Perfect C 컴파일러와 어셈블러 컴파일러(compiler) 고급언어로 작성된 프로그램을 기계어로 바꾸어주는 프로그램 어셈블러(assembler) 어셈블리 언어로 작성된 프로그램을 기계어로 바꾸어주는 프로그램 34 Perfect C 프로그램 개발 과정 링커(linker) 이러한 여러 개의 목적 파일(*.obj)들을 라이브러리 함수와 연결해서 하나의 파일인 실행파일을 생성하는 작업을 수행 로더(loader) 작성된 프로그램을 컴퓨터의 주기억장치에 로드(load)함으로써 프로그램을 실행 가능하게 하는 역할을 수행 35 Perfect C 오류 수정 디버깅(debugging) 프로그램 개발과정에서 컴파일 에러나 실행 에러를 수정하는 과정 36 Perfect C 컴파일러 및 인터프리터 컴파일러 고급 언어로 작성된 코드를 동등한 의미의 저급 언어로 된 코드로 번역하는 소프트웨어이다. 소스 프로그램 입력 인터프리터 인터프리터 출력 소스 프로그램 별개의 컴파일 단계 없이 한 번에 한 문장씩 번역(혹은 해석)하여 실행한다. 컴파일러 입력 목적 프로그램 출력 37
© Copyright 2025