<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

Similar documents
<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx

untitled

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - 1주차-2차시 (강의자료) ch01 - C Programming 기초 (part 1)

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

쉽게 풀어쓴 C 프로그래밍

untitled

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx


Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - Lesson2.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

OCW_C언어 기초

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 1C언어소개0.PPT

초보자를 위한 C++

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

C 프로그램의 기본

Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - gnu-w09-c-chap

C++ Programming

슬라이드 1

쉽게

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

중간고사

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - additional01.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

C 언어 프로그래밊 과제 풀이

MPLAB C18 C

슬라이드 1

본 강의에 들어가기 전

PowerPoint 프레젠테이션

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint - Chapter 6.ppt

슬라이드 1

슬라이드 1

강의10

슬라이드 1

슬라이드 1

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

Microsoft PowerPoint - C++ 5 .pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

C프로-3장c03逞풚

vi 사용법

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint APUE(Intro).ppt

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

C 프로그래밊 개요

C++-¿Ïº®Çؼ³10Àå

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

PowerPoint Template

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

02 C h a p t e r Java

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - Chapter 1-rev

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

BMP 파일 처리

Microsoft PowerPoint - ch00 - Introduction to Programming Language Lecture

PowerPoint 프레젠테이션

2007_2_project4

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

C++ Programming

PowerPoint 프레젠테이션

Microsoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing

PowerPoint 프레젠테이션

歯9장.PDF

쉽게 풀어쓴 C 프로그래밍

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint - gnu-w10-c-chap11

ISP and CodeVisionAVR C Compiler.hwp

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

PowerPoint Template

DE1-SoC Board

MAX+plus II Getting Started - 무작정따라하기

강의의목표 Compiled Language vs. Interpreted Language 차이이해 Compiling의의미이해 Compiling의결과물확인 통합개발환경구축 Eclipse 통합개발환경을통한예제의 Bulid 및실행 Formatter 등의편집지원기능, Refer

02장.배열과 클래스

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

Transcription:

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

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

Cycles in System design and implementation Design Implementation Problem Specifications (Requirements, Objectives) Analysis of the requirement Evaluate Feasibility Syntax Error Edit program source code Compile Source codes.c,.cc Object codes.o Algorithm design Link Executable codes.exe Software system design Subsystem design Block design Module design Class / Function design Load Execute Program Execution output Logical Error Correct Output? Lab 1-3 Mission Completed!!

통합개발환경 통합개발환경 (IDE: integrated development environment) Editor + Compiler + Debugger Visual C++: 마이크로소프트제품 이클립스 (eclipse): 오픈소스프로젝트 Dev-C++: 오픈소스프로젝트 Lab 1-4

통합개발환경의종류 Visual C++ 마이크로소프트사의제품 윈도우기반의거의모든형태의응용프로그램제작가능 최신버전 : Visual C++ 2010 우리가사용할버전 : Visual C++ 2010 또는 Visual C++2008 Lab 1-5

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

프로젝트생성하기 Lab 1-7

프로젝트생성하기 Lab 1-8

프로젝트생성하기 Lab 1-9

소스파일생성하기 Lab 1-10

소스파일생성하기 Lab 1-11

프로그램입력 Lab 1-12

프로그램입력 Lab 1-13

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 * ======================================================== */ Lab 1-14

전문가설정 Lab 1-15

컴파일하기 Lab 1-16

프로그램실행하기 Lab 1-17

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

첫번째프로그램의설명 #include <stdio.h> int main(void) { printf("hello World!"); return 0; } Lab 1-19

프로그램 == 작업지시서 #include <stdio.h> * 화면에 Hello World! 를표시한다. int main(void) { printf("hello World!"); return 0; } 작업지시서 프로그램 Lab 1-20

작업을적어주는위치 #include <stdio.h> int main(void) { 여기다가원하는작업을수행하는문장을적어준다. return 0; } 프로그램 Lab 1-21

간략한소스설명 #include <stdio.h> int main(void) { } printf("hello World!"); return 0; 헤더파일을포함한다. 메인함수시작화면에 Hello World! 를출력외부로 0값을반환 메인함수종료 프로그램 Lab 1-22

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

int main(void) 함수를정의하는문장 입력 함수 (function): 특정한작업을수행하기위하여작성된독립적인코드 ( 참고 ) 수학적인함수 y = x 2 +1 함수 프로그램 = 함수의집합 main() 은가장먼저수행되는함수 출력 Lab 1-24

함수의간략한설명 Lab 1-25

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

printf("hello World!"); printf() 는컴파일러가제공하는함수로서출력을담당 큰따옴표안의문자열을화면에출력 Lab 1-27

return 0; return 은함수의결과값을외부 ( 함수를호출한프로그램 ) 로반환 운영체제 main() printf( Hello World! ); return 0; 운영체제 Lab 1-28

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

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

첫번째버전 문장들은순차적으로실행된다는사실이용 #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); 4 개의문장은순차적으로실행된다. } return 0; Lab 1-31

줄바꿈문자 \n 줄바꿈문자인 n 은화면에서커서는다음줄로이동하게한다. Hello World! printf( Hello World! ); Hello World! 현재커서의위치. 다음문자를표시할때는이곳부터시작한다. printf( Hello World!\n ); Lab 1-32

응용프로그램 #2 다음과같은출력을가지는프로그램을제작하여보자. Lab 1-33

응용프로그램 역시문장들은순차적으로수행된다는점을이용한다. #include <stdio.h> int main(void) { printf("3 X 1 = 3\n"); printf("3 X 2 = 6\n"); printf("3 X 3 = 9\n"); 3 개의문장은순차적으로실행된다. } return 0; Lab 1-34

반복문을사용하는예제 구구단 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; Lab 1-35

다른함수를호출하는예제 구구단표 #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); } } Lab 1-36

C++ 프로그래밍 C 프로그래밍과 C++ 프로그래밍의차이점 Visual Studio의 C++ 프로그래밍통합개발환경에서는 C와 C++ 를함께지원 C 프로그래밍 #include <stdio.h> // include standard input/output header file printf() 와 scanf() 를사용 C++ 프로그래밍 #include <iostream> // include input / output stream library using namespace std; // standard name space를사용 cin과 cout을주로사용 for, while, do-while 등은동일하게사용 Lab 1-37

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; Lab 1-38

오류수정및디버깅 컴파일이나실행시에오류가발생할수있다. 에러와경고 에러 (error): 심각한오류 경고 (warning): 경미한오류 오류의종류 컴파일시간오류 : 대부분문법적인오류 실행시간오류 : 실행중에 0으로나누는연산같은오류 논리오류 : 논리적으로잘못되어서결과가의도했던대로나오지않는오류 Lab 1-39

오류수정과정 컴파일러 (compiler) 링커 (linker) 실행 (execution) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe ERROR!! 컴파일시간오류 실행시간오류논리오류 Lab 1-40

오류 #1 #include <stdio.h> int main(void) { printf("hello World!\n") return 0; } 문장의끝에 ; 이없음!! 오류가발견된소스파일 오류가발견된줄번호 return 앞에 ; 을빠뜨렸다는의미이다. 1>------ 모두다시빌드시작 : 프로젝트 : hello, 구성 : Debug Win32 ------ 1> hello.c 1>c:\users\chun\documents\visual studio 2010\projects\hello\hello\hello.c(7): error C2143: 구문오류 : ';' 이 ( 가 ) 'return' 앞에없습니다. ========== 모두다시빌드 : 성공 0, 실패 1, 생략 0 ========== Lab 1-41

오류 #2 /* 에러가발생하는프로그램 * / #include <stdio.h> int main(void) { printf("hello World!\n") return 0; } * 과 / 이떨어져있음 -> 전체가주석처리됨 1>------ 빌드시작 : 프로젝트 : hello, 구성 : Debug Win32 ------ 1> hello.c 1>c: users chun documents visual studio 2010 projects hello hello hello.c(9): fatal error C1071: 주석에서예기치않은파일의끝이나타났습니다. ========== 빌드 : 성공 0, 실패 1, 최신 0, 생략 0 ========== 주석은프로그램에대한설명글로서 /* */ 안에표시한다. Lab 1-42

오류 #3 #include <stdio.h> int main(void) { print("hello World!"); return 0; } print 가아니라 printf 임 1>------ 빌드시작 : 프로젝트 : hello, 구성 : Debug Win32 ------ 1> hello.c 1>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 ========== Lab 1-43

논리오류 다음과같은출력을가지는프로그램을작성하여보자. Lab 1-44

논리오류가존재하는프로그램 #include <stdio.h> int main(void) { printf("hey!"); Morning"); return 0; } printf("good 줄이바뀌지않았음! Lab 1-45

논리오류가수정된프로그램 #include <stdio.h> int main(void) { printf("hey! \n"); Morning \n"); return 0; } printf("good 논리오류수정!! Lab 1-46

Debugging 디버깅 : 논리오류를찾는과정 Lab 1-47

디버거 (debugger) Lab 1-48

디버거의실행과정 Lab 1-49

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

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

Lab 1 1.1 프로그램의첫부분에표준주석 (slide 14) 내용을포함시키고, 자신의이름, 학과, 학번, 주소, 연락처를 5줄에걸쳐출력하는프로그램을작성하라. 1.2 Visual Studio의 debugging 기능을사용하여, 위 1.1 프로그램이실행될때, 각 source line에서어떤결과가나타나는지를 F10 (step over) 기능을사용하여각각확인하고, 화면을 capture하라. Lab 1-52