c/c++ 프로그래밍작성과정, visual...

52
C/C++ 프로그래밍 작성과정, Visual Studio 2014-1 Programming Language 2014. 3. 5. 교수 김 영 탁 영남대학교 공과대학 정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : [email protected])

Upload: others

Post on 01-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

C/C++ 프로그래밍 작성과정, Visual Studio

2014-1 Programming Language

2014. 3. 5.

교수김영탁영남대학교 공과대학

정보통신공학과(Tel : +82-53-810-2497; Fax : +82-53-810-4742http://antl.yu.ac.kr/; E-mail : [email protected])

Page 2: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 2

Outline

통합개발환경Visual C++를 이용한 프로그램 작성예제 프로그램예제 프로그램의 응용오류 수정 및 Debugging

Page 3: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 3

Cycles in System design and implementation

Source codes.c, .cc

Object codes.o

Program Executionoutput

Compile

LinkExecutable codes

.exe

Load

Execute

Correct Output ?

MissionCompleted !!

Edit program source code

Analysis of the requirementEvaluate Feasibility

Algorithm design

Software system designSubsystem design

Block designModule design

Class / Function design

Design Implementation

Problem Specifications(Requirements,

Objectives)

Syntax Error

LogicalError

Page 4: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 4

통합 개발 환경

통합 개발 환경(IDE: integrated development environment)Editor + Compiler + Debugger

Visual C++: 마이크로소프트 제품이클립스(eclipse): 오픈 소스 프로젝트Dev-C++: 오픈 소스 프로젝트

Page 5: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 5

통합 개발 환경의 종류

Visual C++마이크로소프트사의 제품윈도우 기반의 거의 모든 형태의 응용 프로그램 제작 가능최신 버전: Visual C++ 2010우리가 사용할 버전: Visual C++ 2010 또는 Visual C++2008

Page 6: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 6

워크스페이스와 프로젝트솔루션(solution); 문제 해결에 필요한 프로젝트가 들어있는 컨테이너프로젝트(project): 하나의 실행 파일을 만드는데필요한 여러 가지 항목들이 들어 있는 컨테이너

Page 7: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 7

프로젝트 생성하기

Page 8: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 8

프로젝트 생성하기

Page 9: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 9

프로젝트 생성하기

Page 10: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 10

소스 파일 생성하기

Page 11: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 11

소스 파일 생성하기

Page 12: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 12

프로그램 입력

Page 13: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 13

프로그램 입력

Page 14: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 14

Source code documentations

Standard comment at each source code file produced in this course/*** File Name: "???.c" or "xxx.h", or "yyy.cpp"* Description:* - This program is . . . . . . ** Programmed by Gil-Dong Hong (November 15, 2009),* Last updated: Version 2.0, September 1, 2012 (by Young-Chul Kim).** ========================================================* Version Control (Explain updates in detail)* ========================================================* Name YYYY/MM/DD Version Remarks* Gil-Dong Hong 2009/11/15 v1.0 1:1 Chatting on UDP socket, 2 threads* John Doe 2010/05/01 v1.1 User interface has been updated with GUI* Young-Chul Kim 2012/09/01 v2.0 Major change in the program structure* ========================================================*/

Page 15: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 15

전문가 설정

Page 16: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 16

컴파일하기

Page 17: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 17

프로그램 실행 하기

Page 18: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 18

중간 점검에디터, 컴파일러, 링커, 실행, 디버깅 등의 기능이하나의 프로그램 안에 들어 있는 것을 무엇이라고하는가?Visual C++에서 새로운 프로젝트를 생성하는 메뉴는무엇인가?Visual C++에서 프로젝트에 속하는 소스 파일을컴파일하여 실행 파일을 생성하는 메뉴는?C 언어에서는 대문자와 소문자를 구별하는가?Visual C++를 이용하여서 sample.c라는 소스 파일을컴파일하였을 때 생성되는 파일들은 무엇인가?Visual C++를 사용하여 소스 프로그램을 편집하는경우, 메모장같은 다른 텍스트 에디터를 사용하여도되는가?

Page 19: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 19

첫번째 프로그램의 설명

#include <stdio.h>

int main(void){

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

}

Page 20: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 20

프로그램 == 작업 지시서

#include <stdio.h>

int main(void){

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

}

*화면에 “Hello World!”를표시한다.

작업 지시서 프로그램

Page 21: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 21

작업을 적어주는 위치

#include <stdio.h>

int main(void){

return 0;}

프로그램

여기다가 원하는 작업을 수행하는 문장을 적어준다.

Page 22: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 22

간략한 소스 설명

프로그램

#include <stdio.h>

int main(void){

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

}

헤더파일을 포함한다.

메인 함수 시작

메인 함수 종료

화면에 “Hello World!”를 출력

외부로 0값을 반환

Page 23: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 23

#include <stdio.h>

#include는 소스 코드 안에 특정 파일을 현재의 위치에 포함헤더 파일(header file): 컴파일러가 필요로 하는 정보를가지고 있는 파일stdio.h: standard input output header file주의!: 전처리기 지시자 문장 끝에는 세미콜론(;)을 붙이면 안된다.

Page 24: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 24

int main(void)

12 += xy

함수를 정의하는 문장

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

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

함수

입력

출력

Page 25: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 25

함수의 간략한 설명

Page 26: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 26

문장 (statement)

함수는 여러 개의 문장으로 이루어진다.문장들은 순차적으로 실행된다. 문장의 끝에는 반드시 ;이 있어야 한다.

Page 27: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 27

printf("Hello World!");

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

Page 28: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 28

return 0;

main()

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

운영 체제

운영 체제

return은 함수의 결과값을 외부 (함수를 호출한프로그램)로 반환

Page 29: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 29

중간 점검문장의 끝에 추가하여야 하는 기호는?printf()가 하는 기능은 무엇인가?

Page 30: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 30

응용 프로그램 #1

다음과 같은 형식으로 본인의 이름을 출력을 가지는프로그램을 제작하여 보자.

Page 31: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 31

첫번째 버전

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

#include <stdio.h>

int main(void){

printf("Simple C-style program on Visual C++₩n");printf("Hello world !₩n");printf("My name is 홍길동₩n");printf("My student ID is %10d₩n",21312014);

return 0;}

4개의 문장은 순차적으로 실행된다.

Page 32: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 32

줄바꿈 문자 \n

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

Hello World!

Hello World!

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

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

현재 커서의 위치. 다음 문자를 표시할 때는이곳부터 시작한다.

Page 33: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 33

응용 프로그램 #2

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

Page 34: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 34

응용 프로그램

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

#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;}

3개의 문장은 순차적으로 실행된다.

Page 35: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 35

반복문을 사용하는 예제

구구단 3단

#include <stdio.h>

int main(void){

printf("구구단3단:₩n");for (int i=1; i<=10; i++){

printf("3 x %2d = %2d₩n", i, 3*i);}

return 0;}

Page 36: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 36

다른 함수를 호출하는 예제

구구단표

#include <stdio.h>

void multiplicationTable(int x); // proto-type 선언int main(void){

printf("구구단표:₩n");for (int i=1; i<=10; i++){

printf("₩n구구단 (%d단) :₩n", i);multiplicationTable(i);

}

return 0;}

void multiplicationTable(int x){

for (int i=1; i<=10; i++){

printf("%2d x %2d = %2d₩n", x, i, x*i);}

}

. . . .

Page 37: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 37

C++ 프로그래밍

C 프로그래밍과 C++ 프로그래밍의 차이점Visual Studio의 C++ 프로그래밍 통합 개발 환경에서는 C와C++를 함께 지원C 프로그래밍

#include <stdio.h> // include standard input/output header fileprintf()와 scanf()를 사용

C++ 프로그래밍#include <iostream> // include input / output stream libraryusing namespace std; // standard name space를 사용cin과 cout을 주로 사용

for, while, do-while 등은 동일하게 사용

Page 38: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 38

C++ Programming 예제

Sum and average of 10 scores#include <iostream>

using namespace std;

#define NUM_STUDENTS 10

void main(){

int score[NUM_STUDENTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

int sum;double avg;

sum = 0;for (int i=0; i< NUM_STUDENTS; i++){

sum = sum + score[i];}avg = sum / (double) NUM_STUDENTS;cout << " sum of " << NUM_STUDENTS

<< " students' scores = " << sum << endl;cout << " average = " << avg << endl;

}

실행결과

Page 39: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 39

오류 수정 및 디버깅

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

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

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

Page 40: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 40

오류 수정 과정

ERROR!!소스파일test.c

오브젝트파일

test.obj실행파일test.exe

컴파일러(compiler)컴파일러(compiler)

링커(linker)링커

(linker)실행

(execution)실행

(execution)

실행 시간 오류실행 시간 오류논리 오류논리 오류

컴파일 시간 오류컴파일 시간 오류

Page 41: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 41

오류 #1

#include <stdio.h>

int main(void){

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

}

문장의 끝에 ;이 없음!!

1>------ 모두다시빌드시작: 프로젝트: hello, 구성: Debug Win32 ------1> hello.c1>c:\users\chun\documents\visual studio 2010\projects\hello\hello\hello.c(7): error C2143: 구문오류 : ';'이(가) 'return' 앞에없습니다.========== 모두다시빌드: 성공 0, 실패 1, 생략 0 ==========

오류가 발견된소스파일

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

오류가 발견된 줄 번호

Page 42: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 42

오류 #2

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

int main(void){

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

}

1>------ 빌드 시작: 프로젝트: hello, 구성: Debug Win32 ------1> hello.c1>c:₩users₩chun₩documents₩visual studio 2010₩projects₩hello₩hello₩hello.c(9): fatal error C1071: 주석에서 예기치 않은파일의 끝이 나타났습니다.========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

*과 /이 떨어져있음

-> 전체가 주석처리됨

주석은 프로그램에 대한 설명글로서 /* */ 안에 표시한다.

Page 43: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 43

오류 #3#include <stdio.h>

int main(void){

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

}

1>------ 빌드 시작: 프로젝트: hello, 구성: Debug Win32 ------1> hello.c1>c:₩users₩chun₩documents₩visual studio 2010₩projects₩hello₩hello₩hello.c(6): warning C4013: 'print'이(가) 정의되지 않았습니다. extern은 int형을 반환하는 것으로 간주합니다.1>hello.obj : error LNK2019: _print 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다.1>c:₩Users₩chun₩Documents₩Visual Studio 2010₩Projects₩hello₩Debug₩hello.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

print가 아니라printf임

Page 44: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 44

논리 오류

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

Page 45: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 45

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

#include <stdio.h>

int main(void){

printf("Hey!"); printf("GoodMorning"); return 0;}

줄이 바뀌지 않았음!

Page 46: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 46

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

#include <stdio.h>

int main(void){

printf("Hey! \n"); printf("GoodMorning \n"); return 0;}

논리 오류 수정!!

Page 47: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 47

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

Page 48: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 48

디버거(debugger)

Page 49: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 49

디버거의 실행 과정

Page 50: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 50

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

Page 51: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 51

중간 점검프로그램을 편집하여 컴파일, 링크를 한 다음, 실행시켰는데 자신이 기대한 대로 결과가 나오지 않았다. 이때는 어떻게 하여야 하는가?비교적 경미한 오류를 무엇이라고 하는가?

Page 52: C/C++ 프로그래밍작성과정, Visual Studiocontents.kocw.or.kr/KOCW/document/2014/Yeungnam/Kimyoung... · 2016-09-09 · Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL)

Advanced Networking Tech. Lab.Yeungnam University (YU-ANTL)

Programming LanguageProf. Young-Tak KimLab 1 - 52

Lab 1

1.1 프로그램의 첫 부분에 표준 주석 (slide 14)내용을포함시키고, 자신의 이름, 학과, 학번, 주소, 연락처를5줄에 걸쳐 출력하는 프로그램을 작성하라.

1.2 Visual Studio의 debugging 기능을 사용하여, 위 1.1 프로그램이 실행될 때, 각 source line에서 어떤 결과가나타나는지를 F10 (step over) 기능을 사용하여 각각확인하고, 화면을 capture하라.