Download presentation
Presentation is loading. Please wait.
Published by지석 승 Modified 8년 전
1
C++ Programming 2009 YU-ANTL WINTER C++ Camp Jan 4, 2010 Hyun Sagong Advanced Networking Technology Lab. (YU-ANTL) Dept. of Information & Comm. Eng, Undergraduate School, Yeungnam University, KOREA (Tel : +82-53-810-3940; Fax : +82-53-810-4742 http://antl.yu.ac.kr/http://antl.yu.ac.kr/; E-mail : hyun7854@ynu.ac.kr)
2
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 2 Outline Programming? Algorithm Program Develop Procedure Visual C Programming environment Variable type Selection statements Repetition statements Input/output statements Reference
3
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 3 Programming? Program 본래 ‘ 미리 쓴다 ’ 는 뜻을 지닌 라틴어에서 유래한 말 애플리케이션이나 사용자 데이터를 조작할 수 있도록 방법을 제시하는 하나의 특수한 데이터 Programming Program 을 만드는 것 Language Machine Language 특정 컴퓨터의 명령어 (instruction) 를 이진수로 표시한 것 0 과 1 로 구성 Assembly Language 영어의 약자인 기호로 표기 기호와 CPU 의 명령어가 일대일 대응 Assembler high-level language 특정한 컴퓨터의 구조나 프로세서에 무관하게, 독립적으로 프로그램을 작성할 수 있는 언어 C, C++, JAVA, FORTRAN, PASCAL Compiler
4
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 4 Language C & C++ C 1970 년대 초 AT&T 의 Dennis Ritchie 에 의하여 개발 간결함, 효율적, 뛰어난 이식성 하드웨어의 직접 제어를 위한 저수준의 프로그래밍도 가능 C++ C 의 확장판으로 만들어진 객체지향형 프로그래밍 언어 대규모 응용프로그램들을 만드는데 있어 최적의 객체지향 프로그래밍언어로 간주됨 C 의 대부분의 특징을 포함함으로서 시스템 프로그래밍에 적합 Class, overloading, virtual function 등과 같은 특징을 갖추고 있어 객체지향 프로그래밍에 적합 객체지향 프로그래밍 (object-oriented programming) – 모든 데이터를 오브젝트 (object: 물체 ) 로 취급하여 프로그래밍 하는 방법으로, 처리 요구를 받은 객체가 자기 자신의 안에 있 는 내용을 가지고 처리하는 방식 – 객체라는 작은 단위로서 모든 처리를 기술하는 프로그래밍 방법으로서, 모든 처리는 객체에 대한 요구의 형태로 표현되며, 요구를 받은 객체는 자기 자신 내에 기술되어 있는 처리를 실행 – 프로그램이 단순화되고, 생산성과 신뢰성이 높은 시스템을 구축 가능
5
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 5 Algorithm Algorithm An algorithm is a series of mathematical steps, especially in a computer program, which will give you the answer to a particular kind of problem or question 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 즉, 문제의 해결을 위하여 컴퓨터가 수행할 단계적인 절차를 기 술한 것 Ex) Natural Language Flow Chart Pseudo Code
6
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 6 Algorithm(2) Natural Language 인간이 사용하는 언어 단어들을 명백하게 정의해야 한다 Flow Chart( 순서도 ) 프로그램에서의 논리순서 또는 작업순서 등을 그래픽으로 표현하기 위한 형식 알고리즘이 복잡하면 기술하기가 힘듦 Ex)
7
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 7 Algorithm(2) Pseudo Code 의사코드, 자연어보다는 더 체계적이고 프로그래밍 언어보다는 덜 엄격한 언어로 서 알고리즘의 표현에 주로 사용되는 코드 Ex) 알고리즘 GetLargest 입력 : 숫자들의 리스트 L. 출력 : 리스트에서 가장 큰 값 ======================== largest ← L[0] for each n in L do if n > largest then largest ← n return largest ========================
8
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 8 Algorithm(3) Design an Algorithm 문제를 한 번에 해결하려고 하지 말고 더 작은 크기의 문제들로 분해 충분히 작아질 때까지 계속해서 분해 Ex) 주어진 정수 k 가 소수 (prime) 인가 아닌가를 판별하는 알고리즘 문제 : 주어진 정수 k 가 소 수인지를 판별하라 STEP 1: 정수 k 의 약수의 개수를 구한다. STEP 2: 약수의 개수가 2 이면 소수이다. STEP 1-1: 정수 k 를 1 로 나누어서 떨어지면 약수 의 개수를 증가 STEP 1-2: 정수 k 를 2 로 나누어서 떨어지면 약수 의 개수를 증가 STEP 1-k: 정수 k 를 k 로 나 누어서 떨어지면 약수의 개수를 증가...
9
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 9 Program Develop Procedure 요구사항 분석 : 사용자들의 요구사항을 만족 시켜야 함 요구 사항 명세서 : 사용자의 요구 조건을 만족하도록 소프트웨어가 갖는 기능 및 제약 조건, 성능 목표 등을 포함 알고리즘 개발 : 어떤 단계를 밟아서 어떤 순서로 작업을 처리할 것인 지를 설계 알고리즘은 프로그래밍 언어와는 무관 알고리즘은 원하는 결과를 얻기 위하여 밟아야 하는 단계에 집중적으로 초점 을 맞추는 것 코딩 (coding) : 알고리즘의 각 단계를 프로그래밍 언어를 이용하여 기 술 컴파일 (compile) : 소스 프로그램을 목적 프로그램으로 변환 링크 (link) : 컴파일 된 목적 프로그램을 라이브러리와 연결하여 실행 프로그램을 작성 실행 (execution) run time error : divide by zero, memory address access error logical error 디버깅 (debugging) : 소스에 존재하는 오류를 바로 잡는 것 유지보수 (maintenance) 디버깅 후에도 버그가 남아 있을 가능성 사용자의 추가 요구 가능성 유지 보수 비용이 전체 비용의 50% 이상을 차지 요구사항분석 알고리즘의 개발 코딩 컴파일과 링크 실행과 디버깅 유지보수
10
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 10 Program Develop Procedure(2) 소스파일 test.c 소스파일 test.c 오브젝트 파일 test.obj 오브젝트 파일 test.obj 실행파일 test.exe 실행파일 test.exe 컴파일러 (compiler) 컴파일러 (compiler) 링커 (linker) 링커 (linker) 로더 (loader) 로더 (loader) 에디터 (editer) 에디터 (editer) 통합 개발 환경 (IDE)
11
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 11 Visual C Programming environment 통합 개발 환경 IDE : integrated development environment Editer + Compiler + Debugger Editer Compiler Debugger
12
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 12 Variable Type integer short : -65536~65535 (2bytes) int : -2147483648~2147483647 (4bytes) long : -2147483648~2147483647 (4bytes) real float : -1.7E38~1.7E38 (4bytes) double : -3.4E308~3.4E308 (8bytes) long double : -3.4E308~3.4E308 (8bytes) character char : -128~127 (1bytes) 12
13
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 13 Identifier Identifier : The name of a variable or a function rules Identifier is consists of number, alphabet and under-line(_) Identifier must not begin with number Identifier keeps distinct capital and lowercase Example s, s1, student_number $s(x), 2 nd _student(x), int(x) 13
14
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 14 Preparation for Lecture Make a project and write the source code for following step. #include using namespace std; void main(){ } 14
15
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 15 Selection Statement(1) If 문법 if (condition) { statement; } 예제 int a = 0; if (a == 0) { cout << “a is zero!” << endl; } 15
16
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 16 Selection Statement(2) If/else 문법 if (condition) { statement; } else if (condition){ statement; } else { statement; } 16 예제 int a = 1; if (a == 0) { cout << “a is zero!” << endl; } else if (a < 0 ) { cout << “a is negative.” << endl; else { cout << “a is positive.” << endl; }
17
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 17 Selection Statement(3) Switch/case 문법 switch (variable) { case value: statement; break; case value: statement; break; default: break; } 17 예제 #include “stdlib.h” int a = rand()%5; switch (a){ case 0: cout << “a is zero” << endl; break; case 1: cout << “a is one” << endl; break; default: cout <<“a is not zero or one” << endl; break; }
18
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 18 Repetition Statement (1) while 문법 while(condition){ statement; } 예제 int a = 5; while(a > 0){ cout << “a (“ << a << “) is positive” << endl; a = a – 1; } 18
19
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 19 Repetition Statement(2) do/while 문법 do{ statement; } while(condition); 예제 int a = 5; do{ a = a-1; cout 0) ; 19
20
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 20 Repetition Statement(3) for 문법 for(initial statement; conditional expression; loop statement){ statement; } 예제 int a, b; for(a = 0, b = 1; a < 5;a ++) { cout << “a : “ << a << endl; } 20
21
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 21 Repetition Statement (4) Continue / break statements Continue 예제 int a = 5; do{ cout 0) ; 21
22
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 22 Repetition Statement(5) Continue / break statements break 예제 int a = 5; do{ cout 0) ; 22
23
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 23 Input/Output Statement(1) cout 예제 cout <<“Hello” << endl; cout << “Today is “ << month << day << endl; cin 예제 char name[20]; cin >> name; cout << “name : “ << name << endl; 23
24
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 24 Assignment 직렬 RLC 회로 공진 주파수 계산 ( 히스토그램 )
25
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 25 Assignment – Ex 비주얼 C++ 실행 워크스페이스 (workspace) 작업 공간, 여러 개의 프로젝트가 있을 수 있음 프로젝트 (project) 하나의 실행 파일을 만들기 위하여 필요한 파일들의 그룹
26
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 26 Assignment – Ex(2)
27
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 27 Assignment – Ex(3) ② ③ ①
28
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 28 Assignment – Ex(4) ① ②
29
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 29 Assignment – Ex(5) ② ③ ① ④
30
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 30 Assignment – Ex(6) ① ② ③
31
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 31 Assignment – Ex(7) 워크스페이스와 프로젝트에 속하는 파일을 보여준다. 소스 파일을 에디팅하는 윈도우. 컴파일과 링크과정에서의 메시지 출력. #include using namespace std; int main() { cout << " Hello World!“<< endl; return 0; }
32
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 32 Assignment – Ex(8) 빌드 (build) 란 보통 컴 파일과 링크를 수행 하여 실행 파일을 작 성하는 것을 의미한 다.
33
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 33 Assignment – Ex(9) 에러가 없다면 이런 화면 이 나온다.
34
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 34 Assignment – Ex(10)
35
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 35 Assignment – Ex(11)
36
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 36 Assignment – Ex(12) 주석 (comment) 프로그램에 대한 설명 Including Header file #include 는 소스 코드 안에 특정 파일을 현재의 위치에 포함 헤더 파일 (header file): 컴파일러가 필요로 하는 정보를 가지고 있는 파일 iostream: input output stream 주의 ! : 전처리기 지시자 문장 끝에는 세미콜론을 붙이면 안 됨 // 한줄로된주석 /* 한줄로된주석 */ int main() // 줄의일부분인주석 /* 여러 줄로 된주석 */ // 한줄로된주석 /* 한줄로된주석 */ int main() // 줄의일부분인주석 /* 여러 줄로 된주석 */ #include
37
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 37 Assignment – Ex(13) 함수 (function) 특정한 작업을 수행하기 위하여 작성된 독립적인 코드 프로그램 = 함수의 집합 main() 은 가장 먼저 수행되는 함수 함수의 시작과 끝은 중괄호 ({}) 로 정의 – int main() » int : return type » main : function name » () : argument Sentence 함수는 여러 개의 문장으로 이루어짐 문장들은 순차적으로 실행 int main()
38
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL 2009 Summer C Camp HeeChang Kim 38 Assignment – Ex(14) 출력 함수 cout cout 는 iostream 이 제공하는 함수로서 출력을 담당 큰따옴표 안의 문자열을 화면에 출력 함수 반환문 return 은 함수의 결과값을 외부로 반환 return 0; cout << “Hello World!”; main() Cout << “Hello World!”; return 0; 운영 체제
39
Advanced Networking Tech. Lab. Yeungnam University (YU-ANTL) YU-ANTL Lab. Seminar Name of Author(s) 39 References [1] 천인국, “ 쉽게 풀어쓴 C 언어 Express,” 생능출판사, 2007.
Similar presentations