02 c 언어 개요 - gwnucadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · msvc ide: 프로젝트...

42
1 Part 02 C 언어 개요 기계자동차공학부

Upload: others

Post on 01-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

1

Part 02 C 언어 개요

기계자동차공학부

Page 2: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

2

이 장의 내용

C 언어 소개

간단한 C 프로그램

Microsoft Visual C++ IDE

C 프로그램의 이해

명령줄 프로그래밍

Page 3: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

3

2.1 C 언어 소개

Page 4: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

4

C 언어 유래

1972년 Dennis Ritchie가 설계함

UNIX 운영체제 개발에 사용됨

C 언어에 직접 영향을 준 언어들

Algol CPL BCPL B C

C 언어의 특징

구조화된 언어로서 모듈별 설계가 가능하다.

이식성이 높다. — 다양한 하드웨어에서 사용 가능

효율적이다. — 처리속도가 빠름

다양한 연산자를 제공한다.

동적 메모리 관리가 가능하다.

Dennis Ritchie

믿거나 말거나… C 언어는 구형 컴퓨터에서 게임을 하기 위해 개발했다는 전설이 있음

Page 5: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

5

C 언어의 철학 및 강점

C 언어의 설계 철학: 간결성 i = i + 1; 보다는

i += 1; 이 간결하고, 이것 보다는

i++; 이 간결하다.

C 언어의 강점

다양한 플랫폼에서 사용 가능

매우 이식성이 높기 때문에…

어셈블리어에 대한 대안

C의 역사를 생각해 보자 device driver 프로그램에 매우 적절함

꽤 쉬우면서도 빠르다!

고급 언어의 특성(쉬움)과 저급 언어의 강점(빠름)을 겸비

Page 6: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

6

2.2 간단한 C 프로그램

Page 7: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

7

간단한 C 프로그램

Page 8: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

8

C 컴파일러

컴파일러란?

통역사(사람과 컴퓨터 사이의 통역 담당)

C 프로그램을 컴퓨터가 수행할 수 있도록 번역해 주는 놈

CPU는 C 프로그램을 모른다

CPU는 이진코드 형태의 기계어(machine language)만 안다

컴파일러 종류

상용 컴파일러: Microsoft Visual C/C++, Borland C/C++

무료 컴파일러: 부록 B 참고

컴파일러 C 프로그램

int main…

기계어 프로그램 010101…

Page 9: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

9

컴파일해 보자

Microsoft Visual C++ 통합개발환경

프로젝트 구성 창

편집 창

메시지 창

Page 10: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

10

MSVC IDE에서 프로그램 개발하기

프로그램 개발 단계

1. 프로젝트 만들기

2. 파일 추가

3. 프로그램 편집

4. 컴파일과 빌드

5. 실행과 디버깅

Page 11: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

11

MSVC IDE: 프로젝트 만들기(1/3)

1. 파일 새로 만들기(N) 프로젝트(P)…

Visual C++ 템플릿에서

Win32 콘솔 응용프로그램

프로젝트 이름 입력

위치 설정

2. Win32 응용 프로그램 마법사

3. 프로젝트 생성 완료

Page 12: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

12

MSVC IDE: 프로젝트 만들기(2/3)

1. 파일 새로 만들기(N) 프로젝트(P)…

2. Win32 응용 프로그램 마법사

콘솔 응용 프로그램

빈 프로젝트

3. 프로젝트 생성 완료

Page 13: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

13

MSVC IDE: 프로젝트 만들기(3/3)

1. 파일 새로 만들기(N) 프로젝트(P)…

2. Win32 응용 프로그램 마법사

3. 프로젝트 생성 완료

Page 14: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

14

MSVC IDE: 파일 추가(1/2)

1. 소스파일 추가

솔루션 탐색기의 팝업 메뉴

추가(D) 새 항목(N)

C++ 파일

파일이름 입력

2. 소스파일 추가 완료

파일 확장자를 .c로 정하면 알아서 C 컴파일러로

컴파일해 준다.

Page 15: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

15

MSVC IDE: 파일 추가(2/2)

1. 소스파일 추가

2. 소스파일 추가 완료

Page 16: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

16

MSVC IDE: 파일 편집

편집 창에 프로그램 내용을 적어 넣는다.

Page 17: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

17

MSVC IDE: 컴파일 및 빌드

빌드(B) 솔루션 빌드(B)

Page 18: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

18

MSVC IDE: 실행 및 디버깅

실행: 디버그 디버깅하지 않고 시작

디버깅: 디버그 디버깅 시작

프로그램 오류(bug)를 떼어 내는(de-) 과정

프로그램 중간에 중단 지점을 설정하고 거기까지 실행 후에 한 단계씩 실행해 보며 변수 값을 확인할 수 있음

Page 19: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

19

MSVC IDE: 컴파일 오류 처리

컴파일 시간 오류

프로그램 구문 오류로 인해 목적파일을 생성할 수 없는 상태

IDE의 메시지 박스에서 확인한 후, 오류 메시지를 더블클릭하면 오류 위치를 가리킨다.

Page 20: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

20

MSVC IDE: 비하인드 스토리

생성된 실행파일 Hello.exe를 찾아 보자!

프로젝트 폴더 찾기

프로젝트 생성 위치에 있음

잊은 사람은 다음부터는 프로젝트 생성위치를 잘 봐 두자!

앗, 이럴 수가!

프로젝트 폴더에 실행파일(*.exe)파일이 없네

Debug 폴더에 있음

비하인드 스토리

Page 21: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

21

2.3 C 프로그램의 이해

Page 22: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

22

hello.c 분석

주석

전처리기 지시자

main 함수 라이브러리 puts 호출

운영체제에 0값 리턴

Page 23: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

23

main의 리턴값

main의 반환 값은 항상 정수여야 함

따라서 int main()이라고 선언해 줌

비 표준 방법 void main() { }도 컴파일은 잘 됨

그러나 표준에 맞는 방법은 아니므로 사용해선 안 됨

Page 24: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

24

main의 리턴값이 없으면?

리턴값이 없으므로 경고(warning)가 발생할 수 있다!

Page 25: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

25

가장 간단한 C 프로그램

리턴 타입을 생략하면 int로 간주한다.

Page 26: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

26

표준출력 함수 printf

줄바꿈문자(newline)가 출력되지 않았다. 출력위치(output marker)가 다음 행으로 바뀌지 않았다.

Page 27: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

27

출력위치

hello.c와 hello2.c의 출력을 비교해 보자

줄바꿈문자(newline character) 위치에 주의

“계속하려면 아무 키나 누르십시오...”의 위치가 바뀌었다.

명령창에서 수행해 보자.

출력위치(output marker)

커서: 입출력 위치를 알리는 기호(네모 또는 밑줄)

커서 위치가 다른 것을 알 수 있음

이유가 뭘까? puts는 줄바꿈문자를 자동으로 삽입하지만

printf는 줄바꿈문자를 자동으로 삽입하지 않는다

줄바꿈문자란?

한 행의 끝을 알리는 제어문자

Page 28: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

28

C 언어의 줄바꿈문자

\n으로 나타냄

두 개의 문자로 하나의 문자를 나타냄

특수문자를 나타내는 기법

이스케이프 시퀀스

제어문자를 비제어문자로 나타내는 방법

\로 시작하는 문자들은 특별한 의미

일반적인 의미에서 ‘탈피’한 특별한 의미

그래서 이스케이프 시퀀스(escape sequence)라고 부름

\는 이스케이프 문자(escape character)라고 부름

Page 29: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

29

줄바꿈문자를 출력하는 Hello

Page 30: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

30

2.4 명령줄 프로그래밍

Page 31: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

31

소스파일에서 실행파일까지

Page 32: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

32

명령줄 프로그래밍 환경

명령줄 프로그래밍 환경이란?

필요한 프로그램을 별도로 실행시켜 프로그래밍 하는 환경

필요한 프로그램: 편집기, 컴파일러, 디버거

윈도우 명령창에서 프로그램을 개발하는 과정

Page 33: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

33

명령줄 프로그래밍 환경 체험

1. PATH에 MSVC 경로 추가 제어판 시스템 고급 시스템 설정 환경변수 Path 선택 편집 “C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools”가 포함되도록 함

2. cmd 창에서 vsvars32 수행 시작 검색 창에 cmd vsvars32

3. 프로그램 편집 notepad hello.c

4. 컴파일 cl hello.c

5. 실행 .\hello.exe

Page 34: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

34

편집, 컴파일, 실행

Page 35: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

35

Key Point

Page 36: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

36

Key Point 1

C 언어는 유닉스(Unix)라는 운영체제를 만들기 위해 개발되었다.

C 언어의 설계 철학은 ‘간결성’이다.

C 컴파일러는 C 프로그램을 기계어로 번역하여 실행파일을 만들어 준다.

통합개발환경은 편집기, 컴파일러, 디버거 등을 모두 모아서 같은 윈도우 내에서 사용할 수 있도록 한다.

Microsoft Visual C++ IDE를 이용하여 C 프로그램을 실행하려면, 프로젝트 생성, 파일 추가, 프로그램 편집, 빌드, 실행 단계를 거쳐야 한다.

표준 입출력 프로그램을 ‘콘솔 프로그램(console application)'이라고 부르기도 한다.

Page 37: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

37

Key Point 2

MSVC IDE에서 컴파일 오류가 발생했을 때, 해당 오류를 더블클릭하면 오류 발생 위치로 이동한다. 그러나 컴파일러가 정확한 오류 위치를 추적하지 못할 수 있다.

MSVC IDE에서 프로젝트는 실제로 컴퓨터의 폴더(디렉터리) 내에 저장된다. 그리고 실행파일이 성공적으로 생성되면 실행파일은 프로젝트 폴더 내의 Debug 폴더나 Release 폴더에 저장된다.

C 언어는 두 가지 형태의 주석을 사용한다. 여러 행에 걸쳐질 수 있는 /* ... */ 형태의 주석과 한 행 끝까지 주석으로 처리하는 // ... 형태의 주석이다.

프로그램을 편집할 때 공백문자와 빈 행을 이용하여 가로 여백과 세로 여백을 적절히 맞추면 프로그램을 이해하는데 큰 도움이 된다.

전처리기는 컴파일러가 수행되기 전에 먼저 수행된다. C 프로그램에서 전처리기 지시자는 #으로 시작한다. #include 지시자는 헤더파일을 포함시키기 위해 사용된다.

Page 38: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

38

Key Point 3

모든 C 프로그램에는 main 함수가 존재해야 하며 main의 리턴 타입은 int여야 한다.

main의 리턴 값은 운영체제에 전달된다. 이는 해당 프로그램의 성공적인 종료 여부를 나타낸다. main의 리턴 값이 0이면 성공적으로 종료되었음을 의미하고, 그렇지 않으면 오류 코드를 나타낸다.

여러 목적 파일을 묶어 주거나 목적 파일과 라이브러리 파일을 묶어 주는 기능을 하는 프로그램을 링커라고 한다.

명령줄 환경에서는 편집기, 컴파일러, 디버거 등을 모두 개별적으로 이용한다.

함수의 리턴 타입을 생략하면 C 컴파일러는 리턴 타입을 int형이라고 가정한다.

문자열 내부를 입력할 때 엔터 키를 누르면 안 된다. 줄바꿈문자를 표시하려면 \n을 이용해야 한다.

이스케이프 시퀀스는 제어문자를 비제어문자로 나타내기 위한 방법이다. C 언어에서 이스케이프 시퀀스는 \로 시작한다.

Page 39: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

39

요약

간단한 C 프로그램은 main 하나로 구성되어 있음

표준 출력 함수 표준 출력 함수를 사용하려면 <stdio.h>를 #include해야 함

puts: 개행문자를 끝에 넣어 줌

printf: 개행문자를 자동으로 넣어주지 않음

main은 항상 정수 값을 리턴함(오류가 없다면 0을 리턴)

main의 리턴 타입은 int

리턴 타입이 생략되어도 int로 간주

컴파일러: C 프로그램을 기계어 프로그램으로 변환

개발환경

Microsoft Visual C/C++(MSVC) 소개

무료 개발환경: Dev C++, MinGW Developer Studio

Page 40: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

40

프로그래밍 실습

Page 41: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

41

▶ 프로그래밍 실습 1

여러분의 명함을 출력하는 프로그램을 작성하라. 명함은 7줄 이내로 작성하며 각 행은 30열 이내로 작성한다. 예컨대 다음과 같이 작성할 수도 있겠다.

Page 42: 02 C 언어 개요 - GWNUcadcam.gwnu.ac.kr/subject/pwc/chap2.pdf · MSVC IDE: 프로젝트 만들기(1/3) 1. 파일 새로 만들기(N) 프로젝트(P)… Visual C++ 템플릿에서

42

▶ 프로그래밍 실습 2

ASCII 아트라는 것이 있다. 문자열만 이용하여 그림을 그리는 것을 뜻한다. 여러 다양한 형태의 ASCII 아트를 웹에서 찾을 수 있다. 예컨대 다음 웹 페이지에도 ASCII 아트가 소개되어 있다.

http://www.chris.com/ASCII/

http://www.ascii-art.de/ascii/

여러분이 좋아하는 ASCII 아트를 골라서 이를 출력하는 C 프로그램을 작성해 보자. 예컨대 다음과 같은 ASCII 아트를 선택할 수도 있겠다.