52
컴컴컴 컴컴컴컴컴 컴컴 쉽쉽 쉽쉽쉽 C 쉽쉽 Express C Express 컴 2 컴 컴컴컴컴 컴컴 컴컴

쉽게 풀어쓴 C 언어 Express

Embed Size (px)

DESCRIPTION

쉽게 풀어쓴 C 언어 Express. 제 2 장 프로그램 개발 과정. C Express. 에디터 (editer). 컴파일러 (compiler). 링커 (linker). 로더 (loader). 소스파일 test.c. 오브젝트 파일 test.obj. 실행파일 test.exe. 통합 개발 환경 (IDE). 프로그램 작성 과정. 프로그램 작성 단계. 편집 (edit) 에디터를 이용하여 원하는 작업의 내용을 기술하여 소스 코드 작성 - PowerPoint PPT Presentation

Citation preview

Page 1: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

쉽게 풀어쓴 C 언어 Express쉽게 풀어쓴 C 언어 Express

C Express

제 2 장 프로그램 개발 과정

Page 2: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로그램 작성 과정

소스파일

test.c

소스파일

test.c

오브젝트파일

test.obj

오브젝트파일

test.obj

실행파일

test.exe

실행파일

test.exe

컴파일러(compiler)

컴파일러(compiler)

링커(linker)

링커(linker)

로더(loader)

로더(loader)

에디터(editer)

에디터(editer)

통합 개발 환경 (IDE)

2

Page 3: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로그램 작성 단계 편집 (edit)

에디터를 이용하여 원하는 작업의 내용을 기술하여 소스 코드 작성 소스 파일 (source file): 소스 코드가 들어 있는 텍스트 파일

( 예 ) test.c

컴파일 (compile) 소스 파일 -> 기계어로 변환 오브젝트 파일 (object file) : 기계어로 변환된 파일

( 예 ) test.obj

링크 (link) 오브젝트 파일들을 라이브러리 파일들과 연결하여 하나의 실행 파일

생성 실행 파일 (executable file): 실행이 가능한 파일

( 예 ) test.exe

3

Page 4: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초 4

Page 5: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

Q & A (Q) 소스 파일과 오브젝트 파일 , 실행 파일 중에서 반드시

보관하여야 하는 파일은 무엇일까 ?

(A) 정답은 소스 파일이다 . 소스 파일만 있으면 컴파일러를 수행시켜서 오브젝트 파일 , 실행 파일은 만들 수 있다 . 하지만 소스 파일을 삭제하면 컴파일이 불가능하다 . 따라서 반드시 소스 파일은 잘 보관하여야 한다 . Visual C++ 에서는 프로젝트와 워크스페이스 파일도 같이 보관하는 것이 좋다 . 이러한 파일들은 다시 만들 수도 있지만 번거로운 작업이 된다 .

5

Page 6: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

통합 개발 환경 통합 개발 환경 (IDE: integrated development environment):

에디터 + 컴파일러 + 디버거

6

* 디버거 * 소스를 디버깅 할 수 있다

* 에디터 * 소스를 작성할 수 있다

* 컴파일러 * 소스를 컴파일 할 수 있다

Page 7: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

통합 개발 환경의 종류 비주얼 C++(Visual C++)

마이크로소프트사의 제품 윈도우 기반의 거의 모든 형태의 응용 프로그램 제작 가능 최신 버전 : 비주얼 스튜디오 2010 우리가 사용할 버전 : 비주얼 스튜디오 2010

7

Page 8: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

통합 개발 환경의 종류 Dev-C++

오픈 소스 프로젝트의 산물 C/C++ 통합 개발 환경 GCC 컴파일러 이용 무료

8

Page 9: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

비주얼 C++ 실행

9

Page 10: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

워크스페이스와 프로젝트

워크스페이스 (workspace); 작업 공간 , 여러 개의 프로젝트가 있을 수 있다 .

프로젝트 (project): 하나의 실행 파일을 만들기 위하여 필요한 파일들의 그룹

워크스페이스 : 여러 개의 프로젝트들을 가지고 있는 작업공간

워크스페이스 : 여러 개의 프로젝트들을 가지고 있는 작업공간

프로젝트 : 실행 파일을 만들기 위하여 필요한 파일들

프로젝트 : 실행 파일을 만들기 위하여 필요한 파일들

10

Page 11: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

비주얼 C++ 시작하기

11

Click

Page 12: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로젝트 생성하기

12

Click

Page 13: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로젝트 생성하기

13

프로젝트 이름을 지정경로지정

완료 후 확인

Page 14: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로젝트 생성하기

14

Click

Page 15: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로젝트 생성하기

15

빈 프로젝트 선택 후 마침 버튼 클릭 !!!

Page 16: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

소스 파일 생성하기

16

왼쪽 탐색기의 소스파일 폴더를 우클릭하여 추가 탭 서브메뉴 중

새항목 클릭

Page 17: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

소스 파일 생성하기

17

C 언어를 위한 소스파일을 만드다는

의미이다 .

소스파일의 이름을 정의한다 반드시

확장자를 .c 로 한다 .

완료 후 추가버튼 클릭 !

Page 18: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

소스 파일에 프로그램 작성

18

소스파일을 더블클릭한다 .

이 부분에 소스코드를 작성한다 .

Page 19: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

비주얼 C++ 의 전체 구조

19

소스 파일을 에디팅하는 윈도우 .

워크스페이스와 프로젝트에

속하는 파일을 보여준다 .

컴파일과 링크과정에서의 메시지 출력 .

Page 20: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로그램 입력

20

철자가 틀리지 않도록 조심하면서 예제소스코드를 작성합니다 .

Page 21: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!");return 0;

}

/* 와 */ 에서 / 와 * 는 반드시 붙여서 쓰도록 한다 .

/* 와 */ 에서 / 와 * 는 반드시 붙여서 쓰도록 한다 .

include 나 stdio 와 같은 단어는 붙여서 쓴다 .

include 나 stdio 와 같은 단어는 붙여서 쓴다 .

int 와 main 은 별도의 단어이므로 구별하기 위하여 공백이 있어야 한다 .

int 와 main 은 별도의 단어이므로 구별하기 위하여 공백이 있어야 한다 .

서로 대응되는 중괄호들은 같은 열에 놓는 편이 좋다 .

서로 대응되는 중괄호들은 같은 열에 놓는 편이 좋다 .

중괄호안에 들어가는 문장들은 일반적으로 들여쓰기를 한다 . 탭키를 이용하거나 스페이스키를 이용한다 . 비주얼 C++ 에는 자동적으로 들여쓰기를 해주는 기능이 있다 .

중괄호안에 들어가는 문장들은 일반적으로 들여쓰기를 한다 . 탭키를 이용하거나 스페이스키를 이용한다 . 비주얼 C++ 에는 자동적으로 들여쓰기를 해주는 기능이 있다 .

큰따옴표안의 문장들은 화면에 그대로 출력된다 . 여기서 \ 와 n 은 반드시 붙여야 한다 .

큰따옴표안의 문장들은 화면에 그대로 출력된다 . 여기서 \ 와 n 은 반드시 붙여야 한다 .

문장의 끝에는 ; 을 잊지말자 .; 와 : 을 잘 구별한다 .

문장의 끝에는 ; 을 잊지말자 .; 와 : 을 잘 구별한다 .

프로그램 입력시 주의 사항

21

Page 22: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

컴파일하기

22

빌드 (build) 란 보통 컴파일과 링크를 수행하여 실행 파일을 작성하는 것을 의미한다 .

에러가 없다면 이런 화면이 나온다 .

Page 23: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오브젝트 파일과 실행 파일의 생성

23

오브젝트 파일과 실행 파일이 생성된 것을 확인할 수 있다 .

오브젝트 파일과 실행 파일이 생성된 것을 확인할 수 있다 .

Page 24: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

프로그램 실행 하기

24

작성된 프로그램을 실행시킨다 .대게 , 빌드와 컴파일 과정을 구분하지 않고 Ctrl+F5 단축키를 사용하여 실행결과를 확인한다 .

작성된 프로그램을 실행시킨다 .대게 , 빌드와 컴파일 과정을 구분하지 않고 Ctrl+F5 단축키를 사용하여 실행결과를 확인한다 .

Page 25: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

실행 결과 화면

25

프로그램의 출력프로그램의 출력

프로그램 실행이 끝나면 항상 나오는 메시지이다 .

프로그램 실행이 끝나면 항상 나오는 메시지이다 .

Page 26: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

첫번째 프로그램의 설명

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!");return 0;

}

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!");return 0;

}

Hello World!

26

Page 27: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

디버깅

디버깅 : 논리 오류를 찾는 과정

27

Page 28: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

디버거의 명령어 정의

F5 (Go): 실행 F10 (Step Over): 한 문장씩 실행 ( 함수도 하나의 문장 취급 ) F11 (Step Into): 한 문장씩 실행 ( 함수 안으로 진입 ) F9 (Breakpoint): 현재 문장에 중단점을 설정

28

Page 29: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

디버거 (debugger)

29

다음 코드는 어떤 수를 ‘ 0’ 으로 나누었을 때 , 일어나는 가장 대표적인 실행시간오류이다 .

디버깅을 통하여 변수의 값 확인도 가능 !!!!!

Page 30: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

주석

주석 (comment): 프로그램에 대한 설명

/* 한줄로된주석 */

int main(void) /* 줄의일부분인주석 */

/* 여러줄로된주석 */

/* 한줄로된주석 */

int main(void) /* 줄의일부분인주석 */

/* 여러줄로된주석 */

주석은 프로그램을 설명하는 글입니다 .

30

Page 31: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

헤더 파일 포함

#include 는 소스 코드 안에 특정 파일을 현재의 위치에 포함 헤더 파일 (header file): 컴파일러가 필요로 하는 정보를 가지고

있는 파일 stdio.h: standard input output header file 주의 !: 전처리기 지시자 문장 끝에는 세미콜론을 붙이면 안 된다 .

#include <stdio.h>#include <stdio.h>

31

Page 32: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

함수

함수 (function): 특정한 작업을 수행하기 위하여 작성된 독립적인 코드

( 참고 ) 수학적인 함수 프로그램 = 함수의 집합 main() 은 가장 먼저 수행되는

함수

int main(void)int main(void)

12 xy함수

입력

출력

32

Page 33: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

문장

함수는 여러 개의 문장으로 이루어진다 . 문장들은 순차적으로 실행된다 .

33

Page 34: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

Hello World!

출력 함수 printf()

printf(“Hello World!”);printf(“Hello World!”);

printf() 는 컴파일러가 제공하는 함수로서 출력을 담당합니다 . 큰따옴표 안의 문자열을 화면에 출력합니다 .

34

Page 35: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

함수 반환문return 0;return 0;

main()

printf(“Hello World!”);return 0;

운영 체제

운영 체제

return 은 함수의 결과값을 외부로 반환합니다 .

35

Page 36: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

응용 프로그램 #1

Hello World!Kim ChulSoo

다음과 같은 출력을 가지는 프로그램을 제작하여 보자 .

36

Page 37: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

첫번째 버전

문장들은 순차적으로 실행된다는 사실 이용

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!");printf(“Kim ChulSoo");return 0;

}

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!");printf(“Kim ChulSoo");return 0;

}

Hello World!Kim ChulSoo

우리가 원하는

결과가 아님 !

37

Page 38: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

줄바꿈 문자 \n

줄바꿈 문자인 \n 은 화면에서 커서는 다음줄로 이동하게 한다 .

38

Page 39: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

변경된 프로그램

줄바꿈 문자를 포함하면 우리가 원하던 결과가 된다 .

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n");printf(“Kim ChulSoo");return 0;

}

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n");printf(“Kim ChulSoo");return 0;

}

Hello World!Kim ChulSoo

39

Page 40: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

응용 프로그램 #2

3X1=33X2=63X3=9

다음과 같은 출력을 가지는 프로그램을 제작하여 보자 .

40

Page 41: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

응용 프로그램

역시 문장들은 순차적으로 수행된다는 점을 이용한다 .

/* 첫번째 프로그램의 응용 */#include <stdio.h>

int main(void){

printf("3 X 1 = 3\n");printf("3 X 2 = 6\n");printf("3 X 3 = 9\n");

return 0;}

/* 첫번째 프로그램의 응용 */#include <stdio.h>

int main(void){

printf("3 X 1 = 3\n");printf("3 X 2 = 6\n");printf("3 X 3 = 9\n");

return 0;}

41

Page 42: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 수정 및 디버깅 컴파일이나 실행 시에 오류가 발생할 수 있다 . 에러와 경고

에러 (error): 심각한 오류 경고 (warning): 경미한 오류

오류의 종류 컴파일 시간 오류 : 대부분 문법적인 오류 실행 시간 오류 : 실행 중에 0 으로 나누는 연산 같은 오류 논리 오류 : 논리적으로 잘못되어서 결과가 의도했던 대로

나오지 않는 오류

42

Page 43: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 메시지의 분석

Compiling... test.cc:\cprogram\test\test.c(7) : error C2143: syntax error : missing ';' before 'return' Error executing cl.exe.

에러가 발견된 소스 파일명

에러가 발견된 라인의 번호 문법적인 오류(syntax error)가 있었음을 나타낸다.

return 앞에 ;를 빠뜨렸다는의미이다.

43

Page 44: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 수정 과정

ERROR!!소스파일

test.c

소스파일

test.c

오브젝트파일

test.obj

오브젝트파일

test.obj

실행파일

test.exe

실행파일

test.exe

컴파일러(compiler)

컴파일러(compiler)

링커(linker)

링커(linker)

실행(execution)

실행(execution)

실행 시간 오류실행 시간 오류

논리 오류논리 오류컴파일 시간 오류컴파일 시간 오류

44

Page 45: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 #1

/* 에러가 발생하는 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n")return 0;

}

/* 에러가 발생하는 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n")return 0;

}

--------------------Configuration: test - Win32 Debug--------------------Compiling...test.cC:\PROJECT\test\test.c(7) : error C2143: syntax error : missing ';' before 'return'Error executing cl.exe.

test.exe - 1 error(s), 0 warning(s)

문장의 끝에 ;이

없음 !!

45

Page 46: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 #2

/* 에러가발생하는프로그램 * /#include <stdio.h>

int main(void){

printf("Hello World!\n")return 0;

}

/* 에러가발생하는프로그램 * /#include <stdio.h>

int main(void){

printf("Hello World!\n")return 0;

}

--------------------Configuration: test - Win32 Debug--------------------Compiling...test.cc:\project\test\test.c(9) : fatal error C1071: unexpected end of file found in commentError executing cl.exe.

test.exe - 1 error(s), 0 warning(s)

*과 /이 떨어져 있음-> 전체가 주석처리됨

46

Page 47: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 #3

/* 첫번째 프로그램 */#include <stdio,h>

int main(void){

print("Hello World!");return 0;

}

/* 첫번째 프로그램 */#include <stdio,h>

int main(void){

print("Hello World!");return 0;

}

--------------------Configuration: test - Win32 Debug--------------------Compiling...test.cc:\project\test\test.c(2) : fatal error C1083: Cannot open include file: 'stdio,h': No such file or directory

stdio.h 로 적어주어야 됨

47

Page 48: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

오류 #4

/* 첫번째프로그램 */#include <stdio.h>

int main(void){

print("Hello World!");return 0;

}

/* 첫번째프로그램 */#include <stdio.h>

int main(void){

print("Hello World!");return 0;

}

-------------------Configuration: test - Win32 Debug-------------------- Compiling... test.c C:\CPROGRAM\test\test.c(6) : warning C4013: 'print' undefined; assuming extern returning int Linking... test.obj : error LNK2001: unresolved external symbol _print Debug/test.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe.

test.exe - 2 error(s), 1 warning(s)

print 가 아니라

printf임

48

Page 49: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

논리 오류

Hello World! Good Morning

다음과 같은 출력을 가지는 프로그램을 작성하여 보자 .

49

Page 50: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

논리 오류가 존재하는 프로그램

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n");// ①printf("Good Morning\n");return 0;

}

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World!\n");// ①printf("Good Morning\n");return 0;

}

Hello World!Good Morning

줄바꿈 문자인 \n때문에 줄이 바뀌었음 .

50

Page 51: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

논리 오류가 수정된 프로그램

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World! "); // ①printf("Good Morning\n");return 0;

}

/* 첫번째 프로그램 */#include <stdio.h>

int main(void){

printf("Hello World! "); // ①printf("Good Morning\n");return 0;

}

Hello World! Good Morning

논리 오류 수정 !!

51

Page 52: 쉽게 풀어쓴  C 언어  Express

컴퓨터 프로그래밍 기초

Q & A

52