제 1 장 기본 개념

Size: px
Start display at page:

Download "제 1 장 기본 개념"

Transcription

1 제 1 장 기본개념 Copyright 2007 DBLAB, Seoul National University

2 시스템생명주기 (System Life Cycle) 요구사항 (requirement) - 프로젝트들의목적을정의한명세들의집합 - 입력과출력에관한정보를기술 분석 (analysis) - 문제들을다룰수있는작은단위들로나눔 - 상향식 (bottom-up)/ 하향식 (top-down) 접근방법 설계 (design) - 추상데이타타입 (abstract data type) 생성 - 알고리즘명세와설계기법고려 Copyright 2007 DBLAB, Seoul National University 2

3 시스템생명주기 (System Life Cycle) 정제와코딩 (refinement and coding) - 데이타객체에대한표현선택 - 수행되는연산에대한알고리즘작성 검증 (verification) - 정확성증명 (correctness proof) 수학적기법들을이용해서증명 - 테스트 (testing) 프로그램의정확한수행검증 프로그램의성능검사 - 오류제거 (error removal) 독립적단위로테스트후전체시스템으로통합 Copyright 2007 DBLAB, Seoul National University 3

4 객체지향설계 구조적프로그래밍설계와의비교 - 유사점 분할 - 정복기법 : 복잡한문제를여러개의단순한부분작업으로나누어각각을개별적으로해결 - 차이점 과제분할방법 Copyright 2007 DBLAB, Seoul National University 4

5 알고리즘적분해와객체지향적분해 알고리즘적분해 ( 함수적분해 ) - 고전적프로그래밍기법 - 소프트웨어를기능적모듈로분해 - Pascal 의프로시저, FORTRAN 의서브프로그램, C 의함수 객체지향적분해 - 응용분야의개체를모델링하는객체의집합 - 소프트웨어의재사용성조장 - 변화에유연한소프트웨어시스템 - 직관적 Copyright 2007 DBLAB, Seoul National University 5

6 객체지향프로그래밍의기본정의와개념 객체 (object) - 계산을수행하고상태를갖는개체 - 데이타 + 절차적요소 객체지향프로그래밍 (object-oriented programming) - 객체는기본적인구성단위 (building block) - 각객체는어떤타입 ( 클래스 ) 의인스턴스 (instance) - 클래스는상속 (inheritance) 관계로연관됨 객체지향언어 (object-oriented language) - 객체지원 - 모든객체는클래스에속함 - 상속지원 객체기반언어 (object-based language) - 객체와클래스는지원하되상속은지원하지않는언어 Copyright 2007 DBLAB, Seoul National University 6

7 프로그래밍언어의발전과 C++ 의역사 고급프로그래밍언어 - 1 세대언어 - FORTRAN 수식계산가능 - 2 세대언어 - Pascal, C 알고리즘을효과적으로표현 - 3 세대언어 - Modula 추상데이타타입개념도입 - 4 세대언어 ( 객체지향언어 ) - Smalltalk, Objective-C, C++ 상속기능지원 C 의장점 - 효율성 (efficient) : 하드웨어를직접제어할수있는기능 - 유연성 (flexible) : 대부분의응용분야에사용가능 - 가용성 (available) : 모든컴퓨터에 C 컴파일러존재 Copyright 2007 DBLAB, Seoul National University 7

8 데이타추상화와캡슐화 데이타캡슐화 (data encapsulation) - 정보은닉 (information hiding) - 외부로부터데이타객체의자세한구현을은닉 데이타추상화 (data abstraction) - 객체의명세 (specification) 와구현 (implementation) 을분리 - 무엇 (what) 과어떻게 (how) 를명확하게구분 Copyright 2007 DBLAB, Seoul National University 8

9 데이타타입 데이타타입 (data type) - 객체 (object) 들과이객체들에대한연산 (operation) 의집합 C++ 의데이타타입 - 기본데이타타입 Char, int, float, double 등 타입수식어 : short, long, signed, unsigned - 파생데이타타입 포인터 (pointer) 타입, 참조 (reference) 타입 - 데이타를묶어주는구조 배열 (array), 구조 (struct), 클래스 (class) - 사용자정의데이타타입 추상데이타타입 (abstract data type; ADT) - 객체와연산에대한명세가객체의표현과연산의구현으로부터분리된방식으로구성된데이타타입 Copyright 2007 DBLAB, Seoul National University 9

10 데이타추상화와데이타캡슐화의장점 소프트웨어개발의간소화 - 복잡한작업을부분작업들로분해 테스트와디버깅 - 각부분작업을독자적으로테스팅, 디버깅 재사용성 - 자료구조에대한코드와연산을추출해서다른소프트웨어시스템에서도사용 데이타타입의표현에대한수정 - 데이타타입의내부구현에직접접근하는연산들만수정 Copyright 2007 DBLAB, Seoul National University 10

11 프로그램코드 프로그램코드 A B C 접착코드 (a) (b) 흰색이버그검사대상부분 (a) 에서는데이타추상화를사용, (b) 에서는데이타추상화를사용하지않음. Copyright 2007 DBLAB, Seoul National University 11

12 C++ 의기초 C++ 프로그램의구성 - 헤더화일.h 접미사 선언저장에사용 시스템 / 사용자정의화일 전처리기명령 #include 를사용하여화일에포함시킴 - 소스화일.C 접미사 소스코드저장에사용 프로그램의실행 - 컴파일 링크 적재 헤더화일중복방지 #ifdef FILENAME_H #define FILENAME_H // 헤더화일내용삽입... #endif Copyright 2007 DBLAB, Seoul National University 12

13 C++ 에서의영역 화일영역 - 함수정의에속하지않은선언, 클래스정의, 네임스페이스 네임스페이스영역 - 네임스페이스 (namespace) 논리적으로연관된변수나함수를한그룹으로만드는기법 - 영역정보를사용해서네임스페이스안의개체에접근 예 ) std::cout 지역영역 - 블록안에서선언된이름 클래스영역 - 클래스정의에관련된선언 Copyright 2007 DBLAB, Seoul National University 13

14 C++ 명령문과연산자 C++ 명령문 - C 와같은문법과의미 C++ 연산자 - new, delete 제외하고 C 의연산자와동일 C++ 의입출력 - 왼편 / 오른편시프트연산자 (<<, >>) 사용 C 와 C++ 의중요한차이점 - 연산자다중화 (operator overloading) 허용 Copyright 2007 DBLAB, Seoul National University 14

15 C++ 데이타선언 데이타선언 : 한데이타타입을어떤이름에연결 - 상수값 - 변수 : 데이타타입의인스턴스 - 상수변수 : 선언시에내용이고정 const int MAX=500; - 열거타입 : 일련의정수상수를선언 enum semester{summer, FALL, SPRING}; - 포인터 : 객체의메모리주소저장 int i=25; int *np; np = &i; - 참조타입 : 객체에대한또다른이름을제공 int i=5; int& j=i; i=7; printf( i=%d, j=%d, i, j); i=7, j=7 Copyright 2007 DBLAB, Seoul National University 15

16 C++ 의주석문 복수행주석문 - C 의주석문과동일 - /* */ 단일행주석문 - C++ 에만있음 - // Copyright 2007 DBLAB, Seoul National University 16

17 C++ 에서의입출력 (1) 시스템정의헤더화일 iostream 이필요 cout - 표준출력장치로출력 - << 연산자는 cout 키워드와출력될개체를구분 #include <iostream> main() { int n=50; float f=20.3; cout<<"n:"<<n<<endl; cout<<"f:"<<f<<endl; } 출력 : n:50 f:20.3 Copyright 2007 DBLAB, Seoul National University 17

18 C++ 에서의입출력 (2) cin - 입력을위해사용 - >> 연산자는입력될변수들을구분 - 여백문자로입력값을구분 #include <iostream> main(){ int a,b; cin>>a>>b; } 입력 1: 5 10 <Enter> 입력 2: 5 <Enter> 10 <Enter> Copyright 2007 DBLAB, Seoul National University 18

19 C++ 에서의입출력 (3) C++ 에서의입출력의장점 - 자유형식 : 포맷기호불필요 - 입출력연산자도다중화가능 화일입출력 - 헤더화일 fstream 필요 #include <iostream> #include <fstream> main(){ ofstream outfile("my.out", ios::out); if (!outfile){ cerr << "cannot open my.out" << endl; // 표준오류장치 return; } int n = 50; float f = 20.3; outfile << "n: " << n << endl; outfile << "f: " << f << endl; } Copyright 2007 DBLAB, Seoul National University 19

20 C++ 의함수 정규함수 멤버함수 : 특정클래스와연관된함수 함수의구성 - 함수이름 - 인자리스트 ( 시그너처 ( 입력 )) - 반환타입 ( 출력 ) - 몸체 ( 함수를구현한코드 ) int Max(int a, int b){ if (a > b) return a; else return b; } Max : 함수이름 int a, int b : 인자리스트 int : 반환타입 { 와 } 사이 : 함수몸체 Copyright 2007 DBLAB, Seoul National University 20

21 C++ 의매개변수전달 값 (value) 에의한전달 - 전달된객체는그함수의지역저장소에복사 - 실인자에영향을주지않음 - 실인자로제공되는변수가함수에의해변경되지않음 참조 (reference) 에의한전달 - 인자리스트의타입명세자에 & 첨가 - 전달된객체의주소만함수의지역저장소에복사 - 실인자에접근 - 전달된객체가큰메모리를요구하는경우더빨리수행 상수참조 (constant reference) - 인자변경불가 const T& a 배열은참조로전달 Copyright 2007 DBLAB, Seoul National University 21

22 C++ 의함수이름다중화 함수다중화 (function overloading) - 함수의시그너처 ( 인자리스트 ) 가다르기만하면같은이름을가진함수가둘이상존재할수있음 - e.g. int Max(int, int); int Max(int, int, int); int Max(int*, int); int Max(float, int); int Max(int, float); Copyright 2007 DBLAB, Seoul National University 22

23 인라인함수 함수정의에키워드 inline 을첨가해서선언 - 함수호출과인자복사의오버헤드를줄임 e.g. inline int Sum(int a, int b) return a + b; - i = Sum(x,12); 명령문은 i = x+12; 로대체 Copyright 2007 DBLAB, Seoul National University 23

24 C++ 에서의동적메모리할당 new / delete 연산자 - 실행시간에자유저장소를할당받거나반환 new 연산자 - 원하는타입의객체를생성하고그에대한포인터를반환 - 생성할수없으면예외발생 delete 연산자 - new 로생성된객체에게할당된기억장소를반환 e.g. int *ip = new int;.. delete ip; int *jp = new int[10]; //jp 는정수배열.. delete [] jp; Copyright 2007 DBLAB, Seoul National University 24

25 예외발생 오류와다른특별한조건이발생했음을알리는데사용 다양한예외각각에대해예외클래스를정의 e.g int DivZero(int a, int b, int c) { if (a <= 0 b <= 0 c <= 0) throw "All parameters should be >0 ; return a + b * c + b / c; } Copyright 2007 DBLAB, Seoul National University 25

26 예외처리 try 블록에발생될수있는예외를포함시켜서처리 try 블록뒤에는 0 개이상의 catch 블록 각 catch 블록은예외타입을나타내는한인자를가짐 catch (char* e){} catch (bad_alloc e){} catch (...){} Copyright 2007 DBLAB, Seoul National University 26

27 알고리즘명세 알고리즘 (algorithm) - 특정작업을수행하는명령어들의유한집합 알고리즘의요건 - 입력 : 외부에서제공되는데이타가 0 개이상 - 출력 : 적어도한개이상의결과생성 - 명확성 : 각명령은명확하고모호하지않아야함 - 유한성 : 알고리즘대로수행하면어떤경우에도반드시종료 - 유효성 : 반드시실행가능해야함 알고리즘기술방법 - 자연어 - 흐름도 (flowchart) - C++ 언어 Copyright 2007 DBLAB, Seoul National University 27

28 선택정렬 n 1 개의서로다른정수의집합을정렬 - 정렬되지않은정수들중에서가장작은값을찾아서정렬된리스트다음자리에놓는다 for (int i = 0; i < n; i++) [ a[i] 에서부터 a[n-1] 까지의정수값을검사한결과 a[j] 가가장작은값 a[i] 와 a[j] 를서로교환 ; } 1 void SelectionSort(int *a, const int n) 2 {// n 개의정수 a[0] 부터 a[n-1] 까지비감소순으로정렬한다. 3 for (int i = 0; i < n; i++) 4 { 5 int j = i; 6 // a[i] 와 a[n-1] 사이에가장작은정수를찾는다. 7 for (int k = i + 1; k < n; k++) 8 if (a[k] < a[j]) j = k; 9 swap(a[i], a[j]) 10 } 11 } Copyright 2007 DBLAB, Seoul National University 28

29 선택정렬의정확성증명 정리 함수 SelectionSort(a, n) 는 n 1 개의정수를정확하게정렬한다. 그결과는 a[0],..., a[n-1] 로되고여기서 a[0] a[1]... a[n-1] 이다. 증명 - i=q 에대해, 외부 for 가수행되면 a[q] a[r], q < r n-1 이된다. - i>q 이면 a[0] 에서 a[q] 가변하지않는다. - 따라서 for 를마지막으로수행하면 ( 즉, i=n-1), a[0] a[1]... a[n-1] 가된다. Copyright 2007 DBLAB, Seoul National University 29

30 이원탐색 이미정렬된배열 a[0]...a[n-1] 에서 x = a[j] 인 j 를반환 - left, right: 탐색하고자하는리스트의왼쪽, 오른쪽끝 - 초기값으로 left = 0, right = n-1 - 리스트의중간위치 middle = (left + right) / 2 로설정 - a[middle] 과 x 비교 ⑴ x < a[middle] right = middle-1 ⑵ x = a[middle] middle 반환 ⑶ x > a[middle] left = middle+1 Copyright 2007 DBLAB, Seoul National University 30

31 순환알고리즘 수행이완료되기전에자기자신을다시호출 - 직접순환 (direct recursion) : 함수가그수행이완료되기전에자기자신을다시호출 - 간접순환 (indirect recursion) : 호출함수를다시호출하게되어있는다른함수를호출 순환알고리즘기술방법 1. 주어진입력에대해함수가마땅히수행해야할작업에대한명령문구성 2. 자신에대한순환적호출이제대로이루어질때목적을달성할수있는지검증 3. 함수를유한한횟수로순환호출하면완료조건을만족시키는지확인 4. 완료조건을만족시켰을때함수가올바른계산을하는지확인 Copyright 2007 DBLAB, Seoul National University 31

32 순환이원탐색 BinarySearch(a, x, 0, n-1) int BinarySearch(int *a, const int x, const int left, const int right) {// 정렬된배열 a[left],..., a[right] 에서 x 탐색 if(left <= right){ int middle = (left + right) /2; if(x < a[middle]) return BinarySearch(a, x, left, middle-1); else if(x > a[middle]) return BinarySearch(a, x, middle+1, right); return middle; }//if 의끝 return -1;// 발견되지않음 } Copyright 2007 DBLAB, Seoul National University 32

33 순열생성기 주어진집합의모든가능한순열출력 Permutations(a,0,n-1) void Permutations(char *a, const int k, const int m) {// a[k],..., a[m] 에대한모든순열생성 if(k == m){// 순열을출력 for (int i = 0 ; i <= m; i++) cout << a[i] << ; cout << endl; } else {//a[k:m] 에는하나이상의순열이있다. 이순열을순환적으로생성 for(i=k;i<=m;i++){ swap(a[k], a[i]); Permutations(a, k+1, m); swap(a[k], a[i]); } } } Copyright 2007 DBLAB, Seoul National University 33

34 표준템플릿라이브러리 표준템플릿라이브러리 (STL:standard templates library) - 컨테이너 (container) - 어댑터 (adapter) - 반복자 (iterator) - 함수객체 (function) - 알고리즘 - #include<algorithm> 첨가 Copyright 2007 DBLAB, Seoul National University 34

35 accumulate STL 알고리즘 순차에있는원소들을합산 accumulate(start, end, initialvalue) - accumulate(a, a+n, initialvalue) initialvalue n 1 i 0 a[ i] accumulate(start, end, initialvalue, operator) - operator : 합산과정에서사용될연산을정의하는함수 - e.g 정수로된배열의곱셈 int Product(int *a, int n) {//a[0:n-1] 의수의곱셈을반환 int initval = 1; return accumulate(a, a+n, initval, multiplies<int>()); } Copyright 2007 DBLAB, Seoul National University 35

36 STL 알고리즘 copy 와 next_permutation copy - 원소순차를한장소에서또다른장소로복사 - copy(start, end, to) start, start+1,..., end-1 에서 to, to+1,..., to+end-start 로복사 next_permutation - [start,end) 범위에있는원소들의다음으로큰사전식순열생성 - 그러한다음순열이존재하면 true 반환 - next_permutation(start,end) void Permutations(char *a, const int m) {//a[0:m] 의모든순열생성 // 모든순열을하나씩출력 do{ copy(a, a+m+1, ostream_iterator<char>(cout, )); cout << endl; }while(next_permutation(a, a+m+1)); } Copyright 2007 DBLAB, Seoul National University 36

37 성능분석과측정 (1) 프로그램의평가기준 - 우리가원하는작업을하는가? - 원래작업의명세에부합해서정확히작동하는가? - 문서화가되어있는가? - 논리적작업단위를수행하는기준으로함수가생성되었는가? - 코드가읽기쉬운가? 성능평가 (performance evaluation) - 성능분석 (performance analysis) 사전예측 - 성능측정 (performance measurement) 이후검사 Copyright 2007 DBLAB, Seoul National University 37

38 공간복잡도 (1) 공간복잡도 (space complexity) - 프로그램을실행시켜완료하는데필요한메모리양 - 고정부분 보통명령어공간, 단순변수, 집합체, 상수를위한공간 - 가변부분 변수, 참조된변수가필요로하는공간, 순환스택공간 - 프로그램 P 의공간요구 S(P) = c + S P - c : 상수 - S P : 인스턴스특성 문제에의존 인스턴스로인해필요로하는공간 Copyright 2007 DBLAB, Seoul National University 38

39 공간복잡도 (2) float Abc(float a, float b, float c) { return a+b+b*c+(a+b-c)/(a+b)+4.0; } - a,b,c 값각각을저장하고 Abc 에서값을반환하는데한워드가필요하다고가정 - S P = 0 line float Sum(float *a, const int n) { float s = 0; for(int i = 0 ; i < n ; i++) s+= a[i]; return s; } - S Sum (n) = 0 Copyright 2007 DBLAB, Seoul National University 39

40 공간복잡도 (3) line float Rsum(float *a, const int n) 1 { 2 if(n<=0) return 0; 3 else return(rsum(a, n-1) + a[n-1]); 4 } - R Sum 을호출할때마다적어도네개의워드 (n 과 a 값, 반환값, 반환주소에필요한공간포함 ) - 순환깊이가 n+1 이므로순환스택공간에 4(n+1) Copyright 2007 DBLAB, Seoul National University 40

41 시간복잡도 (1) 시간복잡도 - 프로그램을완전히실행시키는데필요한시간 - T(P) = 컴파일시간 + 실행시간 (t P ( 인스턴스특성 )) - t P (n) = c a ADD(n)+c s SUB(n)+c m MUL(n)+c d DIV(n) + n : 인스턴스특성 C a, C s, C m, C d : +, -, x, / 연산을위한상수시간 ADD, SUB, MUL, DIV : 특성 n 인인스턴스에서각연산의실행횟수 Copyright 2007 DBLAB, Seoul National University 41

42 시간복잡도 (2) 프로그램단계수 (number of steps) - 주석 : 0 - 선언문 : 0 변수, 상수정의 (int, long, short, char,...) 사용자데이타타입정의 (class, struct, union, template) 접근결정 (private, public, protected, friend) 함수타입결정 (void, virtual) - 산술식및지정문 : 1 예외 : 함수호출을포함하는산술식 - 반복문 : 제어부분에대해서만단계수고려 - 스위치명령문 switch(<expr>) 의비용 = <expr> 의비용 각조건의비용 = 자기의비용 + 앞서나온모든조건의비용 - if-else 문 <expr>, <statement1>, <statement2> 에따라각각단계수가할당 Copyright 2007 DBLAB, Seoul National University 42

43 시간복잡도 (3) 프로그램단계수 (number of steps) - 함수호출 값에의한전달인자포함하지않을경우 : 1 값에인한전달인자포함할경우 : 값인자크기의합 순환적인경우 : 호출되는함수의지역변수도고려 - 메모리관리명령문 : 1 - 함수명령문 : 0 비용이이미호출문에할당 - 분기명령문 : 1 Copyright 2007 DBLAB, Seoul National University 43

44 단계수테이블 명령문의실행당단계수 (s/e : step per execution) 결정 - s/e : 그명령문의실행결과로 count 가변화하는양 명령문이실행되는총횟수계산 line float Sum(float * a, const int n) 1 { 2 float s = 0; 3 for(int i = 0 ; i < n ; i++) 4 s+= a[i]; 5 return s; 6 } Copyright 2007 DBLAB, Seoul National University 44

45 피보나치수 피보나치수열 - 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... - F 0 = 0, F 1 = 1 - F n = F n-1 + F n-2, n 2 void Fibonacci(int n) {// 피보나치수 F n 계산 if(n<=1) cout << n << endl; //F 0 =0 와 F 1 =1 else { // F n 을계산한다 int fn; int fnm2 = 0; int fnm1 = 1; for(int i = 2 ; i <=n ;i++) { fn = fnm1 + fnm2; fnm2 = fnm1; fnm1 = fn; }//for 문의끝 cout << fn << endl; }//else 의끝 } (1)n=0, 1 인경우 : 2 (2)n>1 인경우 : 4n+1 Copyright 2007 DBLAB, Seoul National University 45

46 점근표기법 (1) 빅오 (big oh ) - 모든 n, n n 0 에대해 f(n) cg(n) 인조건을만족시키는두양의상수 c 와 n 0 가존재하면 f(n)=o(g(n)) - 예 3n + 2 = O(n) (c=4, n 0 =2) 3n + 3 = O(n) (c=4, n 0 =3) 100n + 6 = O(n) (c=101, n 0 =10) 10n 2 + 4n + 2 = O(n 2 ) (c=11, n 0 =5) 1000n n 6 = O(n 2 ) (c=1001, n 0 =100) 6*2 n + n 2 = O(2 n ) (c=7, n 0 =4) 3n + 3 = O(n 2 ) (c=3, n 0 =2) 10n 2 + 4n + 2 = O(n 4 ) (c = 10, n 0 =2) 3n + 2 O(1) 10n 2 + 4n +2 O(n) Copyright 2007 DBLAB, Seoul National University 46

47 점근표기법 (2) 연산시간 - 상수시간 : O(1) - 로그시간 : O(logn) - 선형시간 : O(n) -n 로그시간 : O(nlogn) - 평방시간 : O(n 2 ) - 입방시간 : O(n 3 ) - 지수시간 : O(2 n ) - 계승시간 : O(n!) 연산시간의크기순서 O(1) O(logn) O(n) O(nlogn) O(n 2 ) O(n 3 ) O(2 n ) O(n!) Copyright 2007 DBLAB, Seoul National University 47

48 점근표기법 (3) 오메가 (omega) - 모든 n, n n 0 에대해 f(n) cg(n) 을만족시키는두양의상수 c 와 n 0 가존재하면 f(n) = (g(n)) - 예 3n + 2 = Ω(n) (n 0 =1, c=3) 3n + 3 = Ω(n) (n 0 =1, c=3) 100n + 6 = Ω(n) (n 0 =1, c = 100) 10n 2 + 4n +2 = Ω(n 2 ) (n 0 =1, c = 1) 6*2 n + n 2 = Ω(2 n ) (n 0 =1, c = 1) 3n + 3 = Ω(1) 10n 2 + 4n + 2 = Ω(n) 6*2 n + n 2 = Ω(1) Copyright 2007 DBLAB, Seoul National University 48

49 점근표기법 (4) 세타 (theta) - 모든 n, n n 0 에대해 c 1 g(n) f(n) c 2 g(n) 을만족시키는세양의상수 c 1, c 2 와 n 0 가존재하면, f(n) = (g(n)) - 예 3n + 2 = (n) (c 1 =3, c 2 =4, n 0 =2) 3n + 3 = (n) 10n 2 + 4n + 2 = (n 2 ) 6*2 n + n 2 = (2 n ) 10*log n + 4 = (log n) 3n + 2 (1) 3n + 3 (n 2 ) 10n 2 + 4n + 2 (n) 10n 2 + 4n + 2 (1) 6*2 n + n 2 (n 100 ) 6*2 n + n 2 (1) Copyright 2007 DBLAB, Seoul National University 49

50 매직스퀘어 (magic square) 1~n 2 까지의정수로된 n n 행렬 각행의합, 열의합, 주대각선의합이모두동일 첫번째행의중앙에 1 을넣는것부터시작한다. 빈정방형에 1 씩큰수를할당하면서왼쪽대각선방향으로올라간다. 만약정방형밖으로벗어나면정방형의반대편자리에서계속한다. 즉상단을벗어나면같은열의최하단으로, 왼쪽에서벗어나면같은행의제일오른쪽으로이동한다. 만약정방형이채워져있으면밑으로움직여서계속한다. Copyright 2007 DBLAB, Seoul National University 50

51 실용적인복잡도 Copyright 2007 DBLAB, Seoul National University 51

52 성능측정 (1) 프로그램의공간및시간요구량을구하는것 순차탐색함수에대한최악의경우성능측정 - 시간을측정할 n 의값들결정 - n 의값들에대해서최악의성질을가진데이타결정 int SequentialSearch (int *a, const int n, const int x) {// a[0:n-1] 에대해탐색 int i; for(i=0; i<n && a[i]!= x; i++); if(i==n) return -1; else return i; } - 점근적해석 : Θ(n) 작은 n 값, 무시된저차항들의영향에의해정확하지않을수있음 Copyright 2007 DBLAB, Seoul National University 52

53 성능측정 (2) 시간측정프로그램수행결과 Copyright 2007 DBLAB, Seoul National University 53

54 테스트데이타의생성 최악의성능을초래하는데이타세트생성 - 관심있는인스턴스특성값들에대해적당한대규모의무작위테스트데이타생성 - 생성한테스트데이타각각에대해실행시간측정 - 이들시간의최대값을최악의경우의시간으로사용 평균인경우의시간측정 - 주어진특성의모든가능한인스턴스에대한평균 - 위에언급된기법을사용해서평균시간의어림값계산 실험을위해생성되어야할데이타들을결정하기위해사용되는알고리즘을분석하는것이바람직 Copyright 2007 DBLAB, Seoul National University 54

제 1 장 기본 개념

제 1 장 기본 개념 제 1 장기본개념 시스템생명주기 (System Life Cycle) 1. 요구사항 (requirement) 프로젝트들의목적을정의한명세들의집합 입력과출력에관한정보를기술 2. 분석 (analysis) 문제들을다룰수있는작은단위들로나눔 상향식 (bottom-up)/ 하향식 (top-down) 접근방법 3. 설계 (design) 추상데이타타입 (abstract data

More information

2002년 2학기 자료구조

2002년 2학기 자료구조 자료구조 (Data Structures) Chapter 1 Basic Concepts Overview : Data (1) Data vs Information (2) Data Linear list( 선형리스트 ) - Sequential list : - Linked list : Nonlinear list( 비선형리스트 ) - Tree : - Graph : (3)

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

01장.자료구조와 알고리즘

01장.자료구조와 알고리즘 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 자료구조와알고리즘 1/30 자료구조 일상생활에서자료를정리하고조직화하는이유는? 사물을편리하고효율적으로사용하기위함 다양한자료를효율적인규칙에따라정리한예 2/30 컴퓨터에서의자료구조 자료구조 (Data Structure) 컴퓨터에서자료를정리하고조직화하는다양한구조

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

C++ Programming

C++ Programming C++ Programming 클래스와데이터추상화 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 객체지향프로그래밍 클래스와객체 2 객체지향프로그래밍 객체지향언어 (Object-Oriented Language) 프로그램을명령어의목록으로보는시각에서벗어나여러개의 독립된단위, 즉 객체 (Object) 들의모임으로파악

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 1. 자료구조와알고리즘 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 자료구조와알고리즘 일상생활에서의사물의조직화 해야할일리스트 조직도 일상생활에서의사물의조직화 사전 Ticket Box 3 일상생활과자료구조의비교 일상생활 vs 자료구조 자료구조 스택 큐 리스트 사전, 탐색구조

More information

슬라이드 1

슬라이드 1 Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 예외처리 (Exception Handling) 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2012-2 nd 프로그래밍입문 (1) 예외상황과예외처리의이해 3 예외상황을처리하지않았을때의결과 예외상황은프로그램실행중에발생하는문제의상황을의미한다. 예외상황의예나이를입력하라고했는데, 0보다작은값이입력됨.

More information

슬라이드 1

슬라이드 1 CHAP 1: 자료구조와알고리즘 일상생활에서의사물의조직화 조직도 일상생활에서의사물의조직화 Ticket Box 일상생활과자료구조의비교 일상생활에서의예 물건을쌓아두는것 영화관매표소의줄 할일리스트 자료구조 스택 큐 리스트 a b c NULL C B A 영어사전사전, 탐색구조 Ticket Box 지도 조직도 그래프 트리 전단 (front) 후단 (rear) 자료구조와알고리즘

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

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

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

슬라이드 1

슬라이드 1 CHAP 1: 자료구조와알고리즘 C 로쉽게풀어쓴자료구조 생능출판사 2005 일상생활에서의사물의조직화 조직도 일상생활에서의사물의조직화 Ticket Box 일상생활과자료구조의비교 a b c N 일상생활에서의예 물건을쌓아두는것 영화관매표소의줄 할일리스트 자료구조 스택 큐 리스트 영어사전사전, 탐색구조 지도 조직도 그래프 트리 Ticket Box C B A 전단 (front)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 순환알고리즘 C 로쉽게풀어쓴자료구조 순환 (recursion) 수행이끝나기전에자기자신을다시호출하여문제해결 - 직접순환, 간접순환 문제정의가순환적으로되어있는경우에적합한방법 ( 예제 ) 팩토리얼 피보나치수열 n! 1 n * ( n 1)! n n 0 fib( n) 1 fib ( n 2) fib( n 1) 1 ` 2 if if n 0 n 1 otherwise 이항계수

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

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

Microsoft PowerPoint - additional03.ppt [호환 모드] 3. 클래스의기본 객체지향프로그래밍소개 구조체와클래스 클래스의정의 Jong Hyuk Park 객체지향프로그래밍소개 Jong Hyuk Park 구조적프로그래밍개념 기존 C와같은구조적프로그래밍언어는동작되는자료와처리동작자체를서로별도로구분 처리동작과자료사이의관계가서로밀접한연관성을갖지못함 프로그램이커지거나복잡해지면프로그램이혼란스럽게되어에러를찾는디버깅및프로그램의유지보수가어려워짐

More information

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - Chapter 6.ppt 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

제 1 강 희망의 땅, 알고리즘

제 1 강 희망의 땅, 알고리즘 제 2 강 C++ 언어개요 이재규 leejaku@shinbiro.com Topics C++ 언어의역사와개요 프로그래밍언어의패러다임변화 C 의확장언어로서의 C++ 살펴보기 포인터와레퍼런스 새로운메모리할당 Function Overloading, Template 객체지향언어로서의 C++ 살펴보기 OOP 의개념과실습 2.1 C++ 의역사와개요 프로그래밍언어의역사 C++

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

Microsoft PowerPoint - Chapter 1-rev

Microsoft PowerPoint - Chapter 1-rev 1.C 기반의 C++ part 1 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 : 과거스타일! iostream.h 헤더파일의포함

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

PowerPoint Template

PowerPoint Template 1.C 기반의 C++ 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 iostream 헤더파일의포함 HelloWorld2.cpp

More information

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문 4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문 1. 클래스와객체 추상데이터형 : 속성 (attribute) + 메서드 (method) 예 : 자동차의속성과메서드 C++ : 주로 class

More information

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

(Microsoft Word - \301\337\260\243\260\355\273\347.docx) 내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

슬라이드 1

슬라이드 1 Data Structure & Algorithms SANGJI University KO Kwangman () 자료 (data) 1. 자료와정보 현실세계로부터의단순한관찰이나측정을통하여수집한사실이나개념의값들또는값들의집합. 정보 (information) 의사결정에도움을주기위해유용한형태로다시작성된 (= 가공 ) 자료. Data Structure & Algorithms

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

C++ Programming

C++ Programming C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt 포인터 1 포인터란? 포인터 메모리의주소를가지고있는변수 메모리주소 100번지 101번지 102번지 103번지 int theage (4 byte) 변수의크기에따라 주로 byte 단위 주소연산자 : & 변수의주소를반환 메모리 2 #include list 8.1 int main() using namespace std; unsigned short

More information

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt 참조자 - 참조자란무엇인가? - 참조자는어떻게만들고사용하는가? - 참조자는포인터와무엇이다른가? 1 참조자 (reference) 란? 참조자 : 객체 ( 타겟 ) 에대한다른이름 ( 별칭 ) 참조자의변화는타겟의변화 참조자만들고반드시초기화 참조자생성 형참조연산자 (&) 참조자이름 = 초기화타겟명 모든항목필수 예 ) int &rsomeref = someint ; 참조자에대한주소연산자

More information

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

C++ 기본문법 정리

C++ 기본문법 정리 공학 SW 집중강좌 - 프로그래밍언어 Android Programming Chap 1. 객체지향프로그래밍 오병우 컴퓨터공학과 기술동향 프로그래밍방식의변천 기계중심의 Stored-Procedure 기계어, 어셈블리언어 구조적프로그래밍 Pascal, C 잘정의된제어구조, 코드블록, GOTO 문사용억제, 순환호출 (recursion) 과지역변수를지원하는독립형 SUB

More information

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시 The C++ Programming Language 4 장타입과선언 4.11 연습문제 4.11.1 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include //#include 문, 헤더파일, 전처리지시자로호칭 using namespace std; //using 키워드를사용하여 std 네임스페이스를사용선언

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기

More information

Blog

Blog Objective C http://ivis.cwnu.ac.kr/tc/dongupak twitter : @dongupak 2010. 10. 9.. Blog WJApps Blog Introduction ? OS X -. - X Code IB, Performance Tool, Simulator : Objective C API : Cocoa Touch API API.

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B 2015-1 프로그래밍언어 프로그래밍언어강의소개 2015. 3. 1. 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 프로그래밍언어강의개요 목적 C 프로그래밍언어를기반으로한공학문제의해결방법습득, C++

More information

프입2-강의노트-C++배경

프입2-강의노트-C++배경 Chapter 00. C++ 배경 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-2 nd 프로그래밍입문 (2) 2 프로그래밍과프로그래밍언어 2 프로그래밍언어 기계어 (machine language) 0, 1 의이진수로구성된언어 컴퓨터의 CPU 는본질적으로기계어만처리가능 어셈블리어

More information

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345]) 입출력 C++ 의효율적인입출력방법을배워보자. 이장에서다룰내용 1 cin 과 cout 을이용한입출력 2 입출력연산자중복 3 조작자생성 4 파일입출력 01_cin 과 cout 을이용한입출력 포맷입출력 C++ 의표준입출력은 cin, cout 을사용한다. C 의 printf 는함수이므로매번여러인자를입력해줘야하지만, cin/cout 에서는형식을한번만정의하면계속사용할수있다.

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

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

Microsoft PowerPoint - additional08.ppt [호환 모드] 8. 상속과다형성 (polymorphism) 상속된객체와포인터 / 참조자의관계 정적바인딩과동적바인딩 virtual 소멸자 Jong Hyuk Park 상속의조건 public 상속은 is-a 관계가성립되도록하자. 일반화 ParttimeStd 구체화 2 상속의조건 잘못된상속의예 현실세계와완전히동떨어진모델이형성됨 3 상속의조건 HAS-A( 소유 ) 관계에의한상속!

More information

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770> 저 자 약 력이상정순천향대학교컴퓨터학부교수, sjlee@sch.ac.kr 조영일수원대학교컴퓨터학과교수, yicho@suwon.ac.kr 김은성순천향대학교전기전자공학과교수, eskim@sch.ac.kr 박종득공주대학교컴퓨터공학부교수, pjd@kongju.ac.kr C++ 언어는 C 에 C 언어의증가연산자 ++ 를덧붙인 C++ 라는이름이의미하는바와같이 C 언어의문법을대부분그대로사용하면서객체지향프로그래밍기법을추가한

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로

More information

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - 05장(함수) [호환 모드] 이장에서다룰내용 1 함수의기본 2 함수의입출력방법 함수 함수는입력을넣으면출력이나오는마술상자다. 3 4 재귀함수 Inline 함수 01_ 함수의기본 01_ 함수의기본 함수란 함수를사용할때의장점 반복적으로실행해야할내용을함수로만들어필요할때마다호출해사용할수있다. 프로그램이모듈화 ( 블록화 ) 되므로읽기쉽고, 디버그와편집이쉽다. 프로그램의기능과구조을한눈에알아보기쉽다.

More information

PowerPoint Template

PowerPoint Template 9. 객체지향프로그래밍 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 9.1 개요 9.2 객체지향프로그래밍언어 9.3 추상자료형 9.4 상속 9.5 동적바인딩 9.1 객체지향의개념 (1) 3 객체지향의등장배경 소프트웨어와하드웨어의발전불균형 소프트웨어모듈의재사용과독립성을강조 객체 (object) 란? 우리가다루는모든사물을일컫는말 예 ) 하나의점, 사각형,

More information

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수 The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 5.9.1 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수정수에대한포인터, 정수에대한상수포인터. 그리고각각의객체를초기화하자. Ex 문자에대한포인터 char

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345]) 클래스의응용 클래스를자유자재로사용하자. 이장에서다룰내용 1 객체의치환 2 함수와클래스의상관관계 01_ 객체의치환 객체도변수와마찬가지로치환이가능하다. 기본예제 [7-1] 객체도일반변수와마찬가지로대입이가능하다. 기본예제 [7-2] 객체의치환시에는조심해야할점이있다. 복사생성자의필요성에대하여알아보자. [ 기본예제 7-1] 클래스의치환 01 #include

More information

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

Microsoft PowerPoint - additional07.ppt [호환 모드] 보충자료 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려 받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent

More information

C++ Programming

C++ Programming C++ Programming C++ 스타일의입출력 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 C 스타일의입출력 C++ 스타일의입출력 2 C 스타일의입출력 #include C 스타일의입출력 int main() { int a, b, c; printf(" 세개의정수입력 : "); scanf("%d

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 6. 구조체와클래스 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 구조체 구조체형 함수매개변수로서의구조체 구조체초기화 클래스 정의, 멤버함수 public 과 private

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

쉽게 배우는 알고리즘 강의노트

쉽게 배우는 알고리즘 강의노트 쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,

More information

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A 예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = 1 2 3 4 5 6 7 8 9 B = 8 7 6 5 4 3 2 1 0 >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = 0 0 0 0 1 1 1 1 1 >> tf = (A==B) % A 의원소와 B 의원소가똑같은경우를찾을때 tf = 0 0 0 0 0 0 0 0 0 >> tf

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en 3 장더나은 C 로서의 C++ (2) 인라인함수참조 (reference) 의이해함수에대한참조참조와함수참조의반환 linkage 지정선언과정의객체지향프로그래밍 C++ 프로그래밍입문 1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호

More information