Download presentation
Presentation is loading. Please wait.
1
Programming in C
2
목 차 C의 역사 왜 C를 배워야 하는가? 프로그램 개발 과정 VC++의 이용 MinGW의 이용 연습문제
3
1. C의 역사 C의 탄생 유닉스 리눅스
4
1. C의 역사: C의 탄생 1972년 유닉스(OS)를 만들기 위해서 탄생 BCPL -> B -> C
유닉스를 디자인하던 켄톰슨이 절친한 친구 데니스 리치에게 유닉스를 위한 언어 요청 데니스리치가 BCPL을 추천 켄톰슨이 BCPL을 B로 발전시킴 데니스리치가 B를 C로 발전시킴
5
1. C의 역사: 유닉스 유닉스(UNIX)는 초창기 ‘유닉스’가 아닌 ‘멀틱스(Multics)라고 불림
멀틱스(OS의 일종) 다중 CPU, 메모리 공유, I/O 자원 공유, 가상메모리, 다중 언어 지원, 보안, 관계형 데이터 베이스, 다중 사용자의 기능을 구현하려고 시도함 그 당시의 기술로는 구현 불가능하여 실패함. 멀틱스가 실패하자 이를 안타까워 했던 켄톰슨이 PDP-7에 멀틱스를 이식하고 조금씩 발전시켜 나감. 멀틱스는 이때부터 유닉스라고 불림 유닉스는 처음에 어셈블리로 작성되었음 (현재 유닉스는 90%가 C언어/10%가 어셈블리어로 구성됨)
6
1. C의 역사: 리눅스 1989년 핀란드 헬싱키대학에 재학 중이던 리누스 토발즈(Linux Torvalds)에 의해서 만들어진 공개 OS 초창기 리눅스는 주로 개인용 컴퓨터에서 사용되었음 소스코드는 완전무료로 공개되었으며 수 많은 프로그래머에 의해서 계속 업그레이드 되고 있음 리눅스는 GNU(Gnu Not Unix)를 표방함 무료배포와 소스 완전 개방에 의해서 대학과 개발자에게 급속히 확산됨 유닉스와 유사한 파일 시스템을 가지고 있으며 많은 변종이 존재함
7
2. 왜C를 배워야하는가 C의 유용성 C의 장점 C의 단점
8
2. 왜C를 배워야하는가: C의 유용성 실행 속도가 빠름 실행 파일의 크기가 작음 작성하기 쉬움
어셈블리어를 제외한 여타의 언어에 비해서 상대적으로 높은 속도를 냄 실행 파일의 크기가 작음 임베디드 시스템에서 실행파일의 크기는 상당히 중요한 요소임 작성하기 쉬움 어셈블리어보다 상대적으로 배우거나 작성하기 쉬움
9
2. 왜C를 배워야하는가: C의 장점 실행속도가 빠름 실행파일의 크기가 작음 하드웨어를 다루기가 쉬움
다른 언어에 비해서 실행 속도가 높음 실행파일의 크기가 작음 다른 언어에 비해서 실행파일의 크기가 작음 일반적인 상황에서는 실행파일의 크기는 문제가 되지 않지만 임베디드 시스템에서는 중요한 요소가 됨 하드웨어를 다루기가 쉬움 하드웨어를 다룰 수 있는 많은 기능을 가짐 하드웨어를 제어하는 가장 강력한 언어는 어셈블리어이지만 어셈블리어는 배우거나 작성하기가 까다로움 다른 플랫폼으로 이식하기 쉬움 이미 작성된 프로그램을 다른 환경(유닉스, 윈도우, 리눅스)으로 이식하기가 쉬움
10
3. 왜C를 배워야하는가: C의 단점 배우기가 어려움 초보자가 작성하기 어려움 그래픽 작업이 어려움
어셈블리어보다는 쉽지만 다른 언어에 비해서는 배우기가 어려운 편임 초보자가 작성하기 어려움 세세한 작업을 프로그래머가 모두 챙겨야 함 - 메모리 할당 및 해제를 자동으로 해주지 않음 알고리즘에 문제가 발생하면 에러를 잡기가 어려움 포인터 부분을 프로그램 한 후 문제가 발생하면 문제점을 찾기가 어려움 그래픽 작업이 어려움 C는 그래픽과 극을 달림 그래픽이 필요하면 다른 언어의 힘을 빌려야 함
11
3. 프로그램 개발과정 소스코드 생성 컴파일러 실행 오류 수정 링커 실행 실행파일 수행
에디터(Editor)를 이용하여 프로그램 작성 컴파일러 실행 목적코드를 생성 (실행파일의 중간 단계) 오류 수정 컴파일러를 수행한 후 코드의 오류를 수정 링커 실행 실행파일을 생성하는 단계 여러 파일(목적코드)을 하나로 합치는 의미를 가지고 있음 실행파일 수행
12
3. 프로그램 개발과정 소스 코드 컴파일러 (Compiler) 목적 코드 (Object code) 시동 코드
(start-up) 라이브러리 코드 링커 (Linker) 실행 코드
13
3. 프로그램 개발과정 프로그램의 설계 Library 최종 프로그램 자료구조설계 알고리즘 설계 Source Code 생성
struct Student { int i; char name[10]; } for ( int j=0 ; j <= 10 ; j++) { ……. } Source Code 생성 Library 테스트 & 디버깅 최종 프로그램
14
3. 프로그램 개발과정: 소스코드 작성 소스코드 C의 소스코드는 .c로 끝남 위의 프로그램은 화면에
3. 프로그램 개발과정: 소스코드 작성 소스코드 # include <stdio.h> main() { printf(“Welcome to the C World.”); } C의 소스코드는 .c로 끝남 위의 프로그램은 화면에 ‘Welcome to the C world.’가 출력됨
15
3. 프로그램 개발과정: 컴파일러 실행 컴파일러를 이용하여 목적(Object)코드를 생성 컴파일 목적(Object)코드
3. 프로그램 개발과정: 컴파일러 실행 컴파일러를 이용하여 목적(Object)코드를 생성 컴파일 사람이 이해하는 소스코드를 기계가 이해할 수 있는 기계어로 번역하는 과정 컴파일을 수행하는 행위자를 ‘컴파일러’라고 함 컴파일을 수행하는 도중 발생되는 에러나 문제점을 디버거(Debugger)의 의해서 해결하기도 함 목적(Object)코드 컴파일러에 의해서 기계어가 이해할 수 있는 상태로 변환된 파일 일반적으로 .o가 생성됨 실행파일을 생성하는 중간단계
16
3. 프로그램 개발과정: 링커, 실행파일 실행 링커 실행 실행파일 실행 목적코드를 실행파일로 변환
3. 프로그램 개발과정: 링커, 실행파일 실행 링커 실행 목적코드를 실행파일로 변환 .o로 구성된 목적코드를 하나의 실행파일로 만들어 냄 다수의 목적코드를 하나로 결합 일반적으로 다수의 목적코드를 링커가 하나로 합쳐서 실행파일로 만들어 냄 실행파일 실행 윈도우 환경: *.exe로 생성 유닉스 환경: a.out로 생성
17
4. VC++ 이용 VC++ 실행 프로젝트 생성 sample.c 생성 sample.c 편집 프로그램 작성 컴파일, 링크, 실행
18
4. VC++ 이용: VC++ 실행
19
4. VC++ 이용: 프로젝트 생성
20
4. VC++ 이용: sample.c 생성
21
4. VC++ 이용: sample.c 편집
22
4. VC++ 이용: 프로그램 작성
23
4. VC++ 이용: 컴파일, 링크, 실행
24
5. MinGW 이용 MinGW: Minimalist GNU for Windows
MinGW Developer Studio 사용하는 방법: 또는
25
5. MinGW 이용
26
5. MinGW 이용 Project name을 입력 File new Project 폴더를 지정
27
5. MinGW 이용
28
5. MinGW 이용
29
연습문제1 C의 장점과 단점에 대해서 설명하시오. 컴파일과 링크에 대해서 설명하시오.
소스 프로그램, 오브젝트(목적) 프로그램, 실행 프로그램의 차이점을 설명하시오.
30
연습문제2 자신의 이름을 출력하는 프로그램을 작성하시오.
31
연습문제3 자신의 이름을 출력하는 함수를 작성하고 오브젝트 파일을 생성하시오.
main() 함수와 자신의 이름을 출력하는 함수를 링커로 결합하여 하나의 실행파일을 생성하시오.
Similar presentations