The C++ Programming Language 2 장워밍업 : C++ 둘러보기 2.1 C++ 이란무엇인가? 모든용도에쓸수있으며시스템프로그래밍에강한프로그래밍언어 C++ 의기본성격 C를기본으로발전시킨언어 데이터추상화를지원 객체지향프로그래밍을지원 일반화프로그래밍을지원

Size: px
Start display at page:

Download "The C++ Programming Language 2 장워밍업 : C++ 둘러보기 2.1 C++ 이란무엇인가? 모든용도에쓸수있으며시스템프로그래밍에강한프로그래밍언어 C++ 의기본성격 C를기본으로발전시킨언어 데이터추상화를지원 객체지향프로그래밍을지원 일반화프로그래밍을지원"

Transcription

1 The C++ Programming Language 2 장워밍업 : C++ 둘러보기 2.1 C++ 이란무엇인가? 모든용도에쓸수있으며시스템프로그래밍에강한프로그래밍언어 C++ 의기본성격 C를기본으로발전시킨언어 데이터추상화를지원 객체지향프로그래밍을지원 일반화프로그래밍을지원 2.2 C++ 는프로그래밍패러다임이한두개가아니다 객채지향프로그래밍은 ' 훌륭한 ' 프로그램을짜게해주는패러다임 (paradigm) 중하나이다. 어떤프로그래밍언어가어떤프로그래밍스타일을지원한다고말할수있으려면그스타일을편하게 ( 쉽고, 안전하고, 효율적으로 ) 쓸수있도록하는언어적장치가뒷받침되어야한다. 프로그래밍스타일을지원하기위한조건 모든기능은깔끔하고세련되게언어에녹아있어야함. 별도의기능이필요할것같은문제에도기존의기능들을조합해서해결할수있어야함. 이름만번지르르하고특수한용도로마련된기능은최대한적어야함. 기능의구현은그기능을쓰지않은프로그램엔큰오버헤드를주지않도록해야함. 언어에서제공되는기능중확실한몇개만알아도프로그램을작성할수있어야함. C++ 의프로그래밍스타일절차적프로그래밍 - 객체지향프로그래밍 - 일반화프로그래밍

2 2.3 절차적프로그래밍 절차적프로그래밍의패러다임 - 문제해결에적합한처리절차를정하고찾을수있는최선의알고리즘을구사한다. 대게함수에인자를전달하고함수로부터값을반환하는메커니즘이제공되는것이보통이다. 다음은제곱근을계산하는함수이다. #include <iostream.h> double square_root(double num) //square_root함수에 double값을넣으면제곱근이 double값으로반환된다. // 제곱근계산을위한코드 void main() double number; // 제곱근을구하기위한 double변수 cout<<" Enter the number : "; cin>>number; // 제곱근을구하고자하는값을입력. cout<<"\n"<<square_root(number); // 함수에값을넣어반환한다 변수의산술연산 모든이름과표현식에는어떤연산이수행될지정해주는타입이란것이붙는다. C++ 의다양한타입들중몇가지타입 크기 사용법 bool 불 (Boolean) 1 byte True, false char 문자 (character) 1 byte 'k', 'h', 'j', '4' int 정수 (integer) 2 or 4 bytes 1, 342, 6342 double 배정밀도부동소수점실수 8 bytes 3.14, * 컴퓨터나컴파일러에따라크기가다를수있음

3 이런타입들에대해계산을처리할때다음과같은산술연산자와비교연산자가사용된다. 산술연산자 비교연산자 + 덧셈 == 같은가? - 뺄셈!= 다른가? * 곱셈 < 작은가 / 나눗셈 > 큰가? % 나머지 <= 작거나같은가? >= 크거나같은가 대입연산과산술연산을기본제공타입을가지고수행할경우에는, 다른타입을쓰더라고자유롭게섞어쓸수있도록적절한타입변환이내부적으로이루어진다. 다음은타입변환이이루어지는예제이다. #include <iostream.h> void main () double a = 2.2; //a는 double형으로소수점까지표시가능 int b = 7; //b는 int형 cout<<"a : "<<a; cout<<"\nb : "<<b; cout<<"\n\n\n"; //a의초기값 //b의초기값 a = a + b; //a 에 a와 b를더한값을넣는다.(2.2+7) cout<<"\nafter a = a + b :"; cout<<"\na : "<<a; //a 는 9.2가되어있음 cout<<"\nb : "<<b; //b 는 7 cout<<"\n\n\n"; b = a * b; //b 에 a와 b를곱한값을넣는다.(9.2 * 7) cout<<"\nafter b = a * b :"; cout<<"\na : "<<a; //a 는 9.2 cout<<"\nb : "<<b; //b 는 64.4가되어야하지만 int타입이므로타입변환이이루어져 64가출력된다. b의 int 타입에맞게변환되었다.

4 2.3.2 조건검사및루프 C++ 에서는분기 (selection) 와루프처리 (looping) 를나타낼수있는구문들이있다. 다음은간단한입력을받아그응답을나타내는불 (bool) 값을표시하는예제이다. #include <iostream.h> bool accept( ) char answer = 0; // 문자변수 cout<<"do you want to stop (y or n)?\n"; cin>>answer; // 대답을읽는다. // 질문출력 if(answer == 'y') return true; //'y' 이면 1 (true) 을반환 return false; //'y' 가아니면 0 (false) 을반환 void main( ) bool true_false = accept(); //bool변수에 accept 함수값을저장 cout<<true_false; //true, false에따라 1, 0 을출력 위의예제에서 accept 함수를 n을받아들였을경우까지고려하면조금더짜임새있게된다. bool accept2() char answer =0; cout<<"do you want to stop (y or n)?\n"; cin>>answer; switch(answer) case 'y': return true; //'y' 이면 1 (true) 을반환 case 'n': return false; //'n' 이면 0 (false) 을반환 default: cout<<"i'll take that for a no.\n"; return false; //'y'. 'n' 둘다아닐때는메시지와함께 0 (false) 을반환

5 위예제의 switch문은상수의집합에대해어떤값을검사하는조건문이다. 'case 상수 ' 는서로겹치지않아야하고검사하는갑이어떤상수에도해당하지않으면 default쪽으로처리흐름이오게된다. 위예제에루프를적용한다면사용자가몇번의시도를할수록고칠수있다. bool accept3( ) int tries = 1; // 시도횟수카운트를위한변수 while (tries<4) //tries 값이 4보다작을때아래를처리 cout<<"do you want to stop (y or n)?\n"; char answer = 0; cin >> answer; switch(answer) case 'y': return true; //'y' 일때 true값을반환하고나온다. case 'n': return false; //'n' 일때 false값을반환하고나온다. default: cout<<"sorry, only 'y' or 'n'\n"; //'y', 'n' 둘다아닐때보내는메세지 tries = tries++; //tries변수에 1을더한다음다시처음으로돌아간다. cout<<"i'll take that for a no.\n"; return false; //1~3까지 3번이반복되어 tries변수가 4가되면 while문을빠져나와메시지를보낸후 false를반환한다. 위예제에서 while 문은조건이거짓 (false) 이될때까지실행하게만드는구문이다 포인터와배열 배열의선언 char k[4]; // 문자 4개의배열 - char타입 4개가선언되었다. ( k[0], k[1], k[2], k[3] ) 포인터의선언 char *p; // 문자를가리키는포인터

6 - char 타입의객체가저장된메모리주소를가진다. p = &k[2]; // p는 k의 3번째원소를가리키는포인터 - 단항연산자인 & 은주소 ( address-of ) 연산자이다. 아래는한배열에서다른배열로 4 개의원소를복사하는예제이다. #include <iostream.h> void main( ) int k1[4] = 1,2,3,4; int k2[4] = 0,0,0,0; int i; // 복사할변수선언과함께데이터입력 // 복사받을변수선언과함께 0으로초기화 cout <<"Before copy "; for (i = 0; i<3; i++) // 복사하기전의배열을보여주는 for문 cout<<"\n\nk1["<<i<<"] : "<<k1[i]; cout<<"\nk2["<<i<<"] : "<<k2[i]; for (i=0; i<4; i++) k2[i] = k1[i]; //k1 배열을 k2 배열로복사하는 for 문 cout <<"\n\n\nafter copy "; for (i = 0; i<3; i++) // 복사한후의배열을보여주는 for문 cout<<"\n\nk1["<<i<<"] : "<<k1[i]; cout<<"\nk2["<<i<<"] : "<<k2[i]; 위예제에쓰인 for문은 i를 0으로설정하고이값이 4보다작은동안 i번째의원소를복사하고 i 를증가시킨다 2.4 모듈화프로그래밍 문제해결에사용하는데이터를만들어두면, 그데이터를조작하는프로시저가자연스럽게하나둘생기게되는데이것들이모인것을가리켜모듈 (module) 이라한다.

7 모듈화프로그래밍의패러다임 - 문제해결에적합한모듈을정한다. - 프로그램을쪼개어데이터가모듈속에숨겨지도록한다. 이런패러다임을가리켜데이터은닉원칙 (data-hiding principle) 이라고도한다. 모듈화프로그래밍을잘보여주는대표적인예로스택이있는데, 스택의구현은다음과같이이루어지는것이보통이다. 1. 스택조작을위한사용자 ( 프로그래밍 ) 인터페이스를제공한다 [push, pop] 2. 스택을나타내는데이터 ( 배열로나타낼수도있다 ) 는 1. 에서제공한인터페이스로만접근 (access) 할수있도록한다. 3. 반드시사용전에스택의초기화가이루어지도록한다. 다음은 namespace를이용하여 Stack이란이름의모듈에대한사용자인터페이스를선언한결과와이인터페이스의사용예제이다. namespace stack // 인터페이스 ( 모듈선언부 ) void push(char); char pop( ); void main( ) stack::push('c'); if(stack::pop( )!= 'c') error("impossible"); stack:: 이란한정표시 (qualification) 은그뒤의 push( ) 와 pop( ) 이 stack namespace의것이라는뜻이다. 이로써똑같은 push( ) 나 pop( ) 을쓰더라도이름혼동이일어나지않는다 stack 모듈의정의 ( 구현 ) 코드는 ( 선언부와 ) 별도로컴파일된파일에서받아올수있다. namespace stack const int max_size = 200; char v[max_size]; int top = 0; void push(char c) /* overflow를점검하고 c를 push한다.*/ char pop( ) /* underflow를점검하고 pop한다. */

8 이모듈에서사용자코드가데이터표현부와분리되어있음에주목하자. 이는 stack::push( ) 와 stack pop::( ) 이있기때문에가능하다. C++ 의 namespace 에는어떤선언이든넣을수있다. 이모듈은스택을나타내는수단중하나일뿐이다 분할컴파일 여러개의하위구성요소를모아서하나의프로그램을만들때분할컴파일 (separate compilation) 을사용한다. 모듈인터페이스를지정하는선언부는 ' 이것은인터페이스 ' 라는것을잘알려주는이름을가진파일에넣어둔다. namespace stack // 인터페이스 void push(char); char pop( ); 스택을조작하는함수를선언해둔인터페이스를 stack.h라는헤더파일 (header file) 에넣는다. 사용자는이파일을 include 해서사용자코드로가져온다. #include "stack.h" // 인터페이스를가져온다. void main( ) stack::push('c'); if(stack::pop( )!= 'c') error("impossible"); 일관성을유지할수있도록, stack 모듈의구현부를가지고있는파일쪽에서도인터페이스를 include한다. #include "stack.h" // 인터페이스를가져온다. namespace stack // 스택의데이터표현 const int max_size = 200; char v[max_size];

9 int top = 0; void push(char c) /* overflow를점검하고 c를 push한다.*/ char pop( ) /* underflow를점검하고 pop한다. */ 이모듈을사용하는코드는제 3의파일에둔다. stack.h안에만들어놓은인터페이스정보를여러군데서끌어오고있지만, 그렇다고해서파일들사이에어떤종속관계가있는것은전혀아니다. stack.h를불러오는모든파일을각각따로컴파일된다. 프로그램을잘작성하려면 I. 모듈화의정도를극대화한다. II. 언어에서제공되는특징을반영하여모듈관계를논리적으로표현한다. III. 효과적인분할컴파일을위해모듈들을별도의파일에분산시켜구성한다 예외처리 모듈의집합으로설계되어있는프로그램에서는오류처리도모듈중심으로해주어야한다. stack 모듈을예를들어 stack을초과하는문자를 push( ) 할때어떻게대처해야할까? 해결책은 Stack모듈개발자쪽에서 overflow가나는경우를찾아사용자에게알려주는것이다. namespace stack // 인터페이스 void push(char); char pop( ); class overflow ; //overflow 라는예외상황을나타내는타입 stack::push( ) 는오버플로가발생했다판단되면적절한예외처리코드를호출한다. void stack::push(char c) if ( top == max_size ) throw overflow( ); // c를 push한다. throw는 stack::overflow 타입을가진예외를처리하는블록으로제어권을넘긴다. 이블록은 stack::push( ) 를직간접적으로호출한함수어딘가에있어야한다. 이 ' 제어권넘기기 ' 를위해 C++ 환경은호출부의문맥을제대로찾아갈수있도록호출스택에대한풀기동작을적절히수행한다. 쉽게말해여러군데에 return을하는것과마찬가지이다.

10 void main( ) //.. try // 여기서일어난예외의처리는아래에정의된처리자가맡는다. while(true) stack::push('c'); catch (stack::overflow) // 스택 overflow에대해적절한조치를취한다. //... 이코드에서 while 루프는무한정돌게된다. 따라서 stack::overflow에대한처리자가있는 catch 절은스택이넘쳐서 stack::push( ) 에서 throw가실행된후에야움직인다. 예외처리메커니즘은오류처리코드를좀더조직적이고읽기좋게하기위해마련된것이다. 2.5 데이터추상화 규모가큰프로그램중에제대로된것은모두 ' 모듈화가잘되었다 ' 라는특징을기본적으로가지고있다. 모듈을통해사용자정의타입의 ' 모양새 ' 를제공하는방법과, 이방법을썼을때생기는문제를해결하기위해사용자정의타입을직접정의하는방법을알아보자 모듈로타입을정의하는방법 모듈방식으로프로그래밍을하다보면, 한가지타입을가진데이터는모두타입관리자모듈 (type manager module) 같은것을써서모아두는경우가생길수밖에없게된다. 앞에서본 stack 모듈을여러개쓰고싶은경우, 필요한인터페이스가달린스택관리자를정의해서쓰는것이다. namespace stack struct Rep; // 스택데이터를나타내는 Rep. 이것의정의는어디에있을것이다. typedef Rep& stack; stack create( ); // 스택하나를새로만든다. void destroy(stack s); //s를삭제한다.

11 void push(stack s, char c); //c 를 s 에 push 한다. char pop(stack s); //s 를 pop 한다. 선언문 struct Rep; 에서 Rep은타입이름에해당하지만, 타입자체는나중에정의되도록내버려둔상태이다. 두번째로나온선언문 typedef Rep & stack; 은 'Rep에대한참조자 (reference)' 에 stack이란이름을붙인다. 이 stack::stack은기본제공타입의변수와똑같이쓸수있다. struct Bad_pop ; void f( ) stack::stack s1 = stack::create( ); // 스택하나를새로만든다. stack::stack s2 = stack::create( ); // 스택을하나더만든다. stack::push(s1,'c'); stack::push(s2,'k'); if (stack::pop(s1)!= 'c') throw Bad_pop( ); if (stack::pop(s2)!= 'k') throw Bad_pop( ); stack::destroy(s1); stack::destroy(s2); Stack의인터페이스를구현하는방법은여러가지가있을수있겠지만, 어떤방법을쓰든사용자는신경쓰지않아도된다. 구현방법의한가지예 : 스택몇개를미리만들어할당해놓고, stack::create( ) 는미사용스택에대한참조자를끄집어내는일만하게한다. stack::destroy( ) 는사용되는것들은다시 ' 미사용 ' 이라고표시해두어, 나중에 stack::create( ) 가재사용할수있도록하는것이다. namespace stack // 실제스택데이터의표현부 const int max_size = 200; struct Rep char v [max_size]; int top; ; const int max = 16; Rep stacks[max];

12 bool used[max]; typedef Rep& stack; void stack::push(stack s, char c) /* 오버플로를점검하고 c 를 push 한다. */ char stack::pop(stack s) /* s 가언더플로가났는지점검하고 pop 한다. */ stack::stack stack::create( ) // 미사용중인 Rep을꺼내고이것을 ' 사용중 ' 이라고표시한후, 초기화하고참조자를반환한다. void stack::destroy(stack s) /* s를 " 미사용 " 상태로바꾼다. */ 지금까지의코드를보면, 스택을표현하는타입이인터페이스함수들로둘러싸인형태이다. 이렇게에둘러만들어진 ' 스택타입 ' 의동작방식을좌우하는요인은여러가지로서, 조금씩달라진다. 그러나이방법은이상적인설계에서약간어긋나있다. 유사타입을사용하는방법이실제데이터의내부사항에따라판이하게달라질수있고, 사용자는이로인해혼란스러워한다 사용자정의타입 이문제에대한해결책으로 C++ 에서는기본제공타입과똑같은동작방식을가지는타입을사용자가직접정의할수있도록하였다. 이런타입을가리켜추상데이터타입 (abstract data type) 이라고들한다. 사용자정의타입을사용한프로그래밍의이론적인틀 문제해결에필요한타임들을정한다. 각타입에대해동작연산을완벽하게제공한다. 사용자정의타입의예는유리수나복소수따위를나타내는산술타입이대표적이다. 다음예제를보자. class complex double re, im; public: complex(double r, double i) re=r; im=i; // 두개의스칼라로부터복소수를만든다 complex(double r) re=r; im=0; // 하나의스칼라로부터복소수를만든다. complex( ) re = im = 0;

13 friend complex operator + (complex, complex); friend complex operator - (complex, complex); friend complex operator - (complex, complex); friend complex operator * (complex, complex); friend complex operator / (complex, complex); // 이항연산 // 단항연산 ; friend complex operator == (complex, complex); // 같음비교 friend complex operator!= (complex, complex); // 다름비교 //... complex란이름의클래스 ( 사용자정의타입 ) 는복소수데이터의표현부와조작에필요한연산들을모두가지고있다. 여기서데이터표현부는외부에가려져있다. (re와 im) 이두데이터는 complex 클래스의선언부에서지정된함수들만접근할수있다. 이들 ' 지정된 ' 함수는다음과같이정의될수있다. complex operator + ( complex a1, complex a2) return complex (a1.re + a2.re, a1.im + a2.im); 클래스와똑같은이름을가진멤버함수를볼수있는데, 이것을생성자 (constructor) 라고한다. complex 클래스에정의된생성자는 double하나를받아 complex객체를초기화하는것, double 두개를받아초기화하는것, 그리고기본값으로초기화하는것, 이렇게세가지이다. complex 클래스의사용법은다음과같다. void f(complex z) complex a = 2.3; complex b = 1/a; complex c = a+b*complex(1,2.3) //... if (c!= b) c = -(b/a) + 2*b; C++ 컴파일러는 complex 타입의복소수를피연사자로사용하는연산자를읽어, 그클래스에서정의된함수호출코드로바꾸어준다.

14 2.5.3 구체타입 앞서보았던 stack 타입이 complex 타입처럼만들어졌다고생각해보자. 약간쓸만하게다듬으려면스택내부의원소개수를인자로받아들이도록다음과같이정의할수있을것이다. class stack char*v; int top; int max_size; public: class underflow ; class overflow ; class bad_size ; // 예외로사용하기위함 // 예외로사용하기위함 // 예외로사용하기위함 stack(int s); stack( ); // 생성자 // 소멸자 ; void push(char c); char pop( ); ' 생성자 ' 라는이름이붙은 stack(int) 는이클래스의객체가메모리에만들어질때마다호출되는함수이다. 이함수가맡은일은객체의초기화이다. 이클래스의객체가유호범위를벗어날경우에끝마무리작업이필요하다면소멸자 (destructor) 라는함수를준비해두면된다. stack::stack(int s) // 생성자 top = 0; if (s <s) throw bad_size( ); // ' ' 의뜻은 ' 또는 ' 이다. max_size = s; v = new char[s]; // 자유저장공간에원소할당 stack::~stack( ) // 소멸자 delete[ ] v; // 공간을다시쓸수있도록할당한원소를해제한다. 여기서생성자가할일을새로생성된 stack 변수를초기화하는것이다. 사용자는기본제공타입의변수를대하듯이 stack 객체를만들어쓰면되는것이다.

15 stack s_varl(10); //10 개의원소를가진전역스택 void f(stack& s_ref; inti) //stack 객체에대한참조자 stack s_var2(i); // i 개의원소를가진지역스펙 stack* s_ptr = new stack(20); // 자유저장공간에할당된 stack객체포인터 s_var1.push('a'); s_var2.push('b'); s_ref:push('c'); s_ptr -> push('d'); //... // 변수를통해접근하는방법 // 참조자를통해접근하는방법 // 포인터를통해접근하는방법 이 stack 타입은이제동작방식이 int나 char 등의기본제공타입과똑같아졌다. 앞에서본 complex와여기서본 stack과같은타입을가리켜구체타입 (concrete type) 이라고한다. 추상타입 (abstract type) 과반대되는의미인데, 이추상타입은인터페이스밖에없기때문에사용자코드가구현코드로부터더분리된다 추상타입 stack 이란타입을나타내는문제를모듈형태의 ' 유사타입 ' 에서진짜타입으로옮기면좋은점도있지만안타깝게도한가지성질을잃게된다. 바로데이터표현부가사용자인터페이스와떨어지지않은상태로남는다는점이다. 사용하는타입이자주바뀌지않는다든지지역변수를사용해서깔끔하고효율적으로작업할수있는경우에는구체타입이이상적일때가많다. 하지만스택을사용하는프로그래머와스택구현부와의관계를완전히끊어버려야할때도있는데, 이경우에는 stack 클래스로도어림없다. 해결책은단하나, 인터페이스와데이터표현부를떼어놓고지역변수를포기하는것이다. 우선, 인터페이스를이렇게정의한다. class stack public: class underflow ; class overflow ; ; virtual void ush(char c) = 0; virtual char pop( ) = 0;

16 virtual 이란키워드가붙은함수는이클래스로부터파생된클래스에서나중에재정의될수있다는것을의미한다. 정리하면, 이 stack은 push( ) 와 pop( ) 함수를 ' 구현 ' 하게될미지의클래스에게인터페이스, 즉틀만을제공하는것이다. 이 stack은어떻게사용될까? 다음을보자. void f(stack& s_ref) s_ref.push('c'); if(s_ref:pop( )!= 'c') trow bad_pop( ); f( ) 는실제구현부를전혀모르고도 stack 인터페이스를사용하고있다. 이렇게다른클래스가쓸수있는인터페이스를제공하는클래스를가리켜다형성타입 (polymorphic type) 이라고한다. stack이인터페이스가됐으므로, stack이구체타입이었을때가지고있던것들을전부떼어내면구현부를구성할수있을것이다 가상함수 f( ) 에들어있는 s_ref:pop( ) 은어떻게해당클래스의함수정의부로정확히해석 (resolve) 되는것일까? h( ) 에서호출되는 f( ) 에서는 list_stack::pop( ) 이호출되어야하고 g( ) 에서 f( ) 가호출되는경우에는 array_stack::pop( ) 이호출되어야한다. 적절한함수정의를찾아내려면, 런타임에호출될함수를가리키는정보가 stack객체어딘가에들어있어야한다. 이매커니즘은일반적으로컴파일러쪽에서 virtual 키워드가붙은함수의이름을함수포인터테이블의색인번호로바꾸는식으로만들어져있다. 이테이블을가리켜가상함수테이블 (virtual function table) 이라고하며, 짧게 vtbl이라고한다. 2.6 객체지향프로그래밍 사용자정의타입만썼을때생기는문제그리고이문제를뛰어넘는해결책인클래스계통이란것을살펴보자 구체타입의결정적약점 구체타입은일단한번만들어지고나면외부에서통할수있는길이극히한정되어있다. 예를들어그래픽시스템에사용하려고 shape란타입을하나정의한다고가정해보자. 그리고다음과같은타입도있다고가정하자. class Point/*...*/;

17 class Color/*...*/; 도형 (shape) 을나타내는타입을정의해보자 enum kind circle, triangle, square; class shape kind k; point center; color col; //... // 나열자타입 // 도형타입필드 public: void draw( ); void rotate(int); //... ; ' 도형타입필드 ' 란이름이붙은 k라는변수가있어야하는이유는 draw( ) 와 rotate( ) 에서자신이처리하는도형이어떤것인지를구분할수있어야하기때문이다 클래스계통 문제의핵심은, 도형마다가지고있는일반적인성질과그도형만의고유한성질이명확하게갈라지지않았다는데있다. 이차이를언어로나타내고이용하는것이바로객체지향프로그래밍이다. 일반성과특수성의구분을이루어내는답은바로상속메커니즘이다. 우선도형마다공통적으로가진성질을정의하는클래스를만든다. class Shape point center; color col; //... public: point where( ) return center; void move(point to) center = to; /*...*/ draw( ); virtual void draw( ) = 0; virtual void rotate(int angle) = 0; //... ; 호출인터페이스는정의할수있지만구현코드는바로제공하지않아도되는함수를가상함수

18 로선언된다. (draw( ), rotate( ) ) 이렇게클래스를정의해두었으면도형에대한포인터를담은벡터를조작하는일반함수를만들어서일괄적으로처리할수있다 void rotate-all(vetor<shape*>& v, int angle) //v의원소가되는각도형을 angle도만큼회전 for (int i = 0; i<v.size(); ++i) v[i] -> rotate(angle); 이제특정한도형을정의한다. ' 이것은도형이다 ' 라고알려줌과동시에개별적인성질을지정해주는것이다. class circle : public shape int radious; public: void draw( ) /*...*/ void rotate(int) // 아무것도안하는함수 ; 파생클래스는기본클래스가가진모든것을물려받기때문에, 이런클래스의관계를이용하는것을상속이라고한다. 객체지향프로그래밍의이론적틀은다음과같다. 문제해결에필요한클래스가무엇인지정한다. 클래스에대해모든함수집합을만들어준다. 클래스사이의공통적인부분을상속관계를써서드러낸다. 2.7 일반화프로그래밍 일반화프로그램의이론적인틀은다음과같다. 문제해결에필요한알고리즘을정한다. 이들알고리즘이여러가지의타입과자료구조에대해동작할수있도록알고리즘을매개변수화한다 컨테이너 C++ 에서는앞에서만들던 ' 문자만담는스택 ' 타입을 ' 어느것이든담는스택 ' 타입으로바꿀수있는방법이있는데, 타입을템플릿 (template) 으로만들고 char라는특정한타입을탬플릿매개변수로바꾸는것이다.

19 template <class T> class stack T*v; int max_size; int top; public: class underflow ; class overflow ; stack(int s); ~stack( ); // 생성자 // 소멸자 ; void push(t); T pop( ); 클래스이름의앞에붙은 template<class T> 라는접두사가바로 T를이타입의매개변수로만들어주는부분이다. 멤버함수의코드정의는이전의것과크게다르지않으나 T를고려해서이루어진다. template<class T> void stack<t>:: push(t c) if (top == max_size) throw overflow( ); v[top] = c; top = top + 1; template<class T>T stack<t>:: pop( ) if ( top == 0 ) throw underflow( ); top = top -1; return v[top]; 이렇게만든스택 ( 템플릿 ) 은다음과같이사용한다. stack<shar>sc(200); //200개의문자를담는스택 stack<complex>scplx(30); //30개의복소수를담는스택 stack<list<int> > sli(45); //45개의정수리스트를담는스택 void f( ) sc.push('c');

20 if(sc.pop( )!= 'c') throw bad_pop( ); scplx.push(complex)(1.2)); if (scplx.pop( )!= complex(1,2)) throw bad_pop( ); 여기서보인스택처럼리스트, 벡터, 맵같은것들도템플릿으로정의할수있다. 이렇게어떤타입의원소를모아서담을수있는클래스를가리켜컨테이너클래스라고한다. 편하게컨테이너 (container) 라고불러주기바란다 일반화알고리즘 C++ 표준라이브러리에는위에서이야기한컨테이너라고불리는것들이들어있으며, 없는컨테이너는직접만들수있다. 컨테이너가정확히어떻게생겼는지몰라도그컨테이너를조작할수있는일반화된방법을찾아야한다. 여기에는여러가지방법이있을수있겠으나표준 C++ 라이브러리에서제공하는컨테이너와비수치형알고리즘에서취한방법은원소들이순서대로연결된시퀸스라는개념으로컨테이너를모델링하고이시퀸스를반복자라는것으로조작하게만드는것이었다. 하나의시퀸스엔반드시시작과끝이존재한다. 반복자는시퀸스안의우너소를가리키고자신이참조하는원소의다름것으로옮겨갈수있는연산을제공한다. 일반화프로그래밍에서시퀸스의끝은시퀸스의마지막원소의바로다음을가리키는반복자를뜻한다. 또한 ' 반복자가가리키는원소에접근하기 ' 와 ' 반복자를다음원소로옮기기 ' 같은기본적인연산에대한표준방식도이미정해져있다. 우리들이쉽게접근하고, 증가연산자인 ++ 를써서다음원소로옮겨가게한것이다. 그렇기때문에이런식의코딩이가능하다. template<class in, class out> void copy(in from, in too_far, out to) while (from!= too_far) *to = *from; // 반복자가지금참조하고있는원소를복사한다. ++to; // 대상이되는곳의반복자를증가시킨다. ++from; // 바탕이되는곳의반복자를증가시킨다. C++ 에서기본적으로제공되는배열과포인터타입은반복자연산에정확히맞아떨어지기때문에다음과같이작성할수있다. char vc1[200]; //200개문자를담는배열 char vc2[500]; //500개문자를담는배열 void f( )

21 copy(&vc10, &vc1[200], &vc2[0]); vc1의첫원소부터끝원소까지를 vc2에복사하는코드로, 대상위치는 vc2의처음부터시작한다.

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

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

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

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

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 - C++ 5 .pptx

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

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 - 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

설계란 무엇인가?

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

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

[ 마이크로프로세서 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 - CSharp-10-예외처리

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

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

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

JAVA PROGRAMMING 실습 08.다형성

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

More information

쉽게 풀어쓴 C 프로그래밍

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

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

슬라이드 1

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

More information

11장 포인터

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

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

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

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

슬라이드 1

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

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

윤성우의 열혈 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

설계란 무엇인가?

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

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

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

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

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

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

More information

C++ Programming

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

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

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

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

chap x: G입력

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

More information

OCW_C언어 기초

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

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 - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

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

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

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

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

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

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

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

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

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

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 16. 템플릿 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 함수템플릿 구문, 정의 컴파일합병 클래스템플릿 문법 예 : 배열템플릿클래스 템플릿및상속 예 : 부분적으로채워진배열템플릿클래스

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

02장.배열과 클래스

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

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

17장 클래스와 메소드

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

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

쉽게 풀어쓴 C 프로그래밍

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

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

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

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

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

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

JVM 메모리구조

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

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

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

Microsoft PowerPoint - Chap12-OOP.ppt

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

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 15. 다형성과가상함수 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 가상함수 (Virtual Function) 기본 사후바인딩 (late binding) / 동적바인딩

More information

Programming hwp

Programming hwp struct MerchandiseTable { CatalogEntry tab[10]; void init(); char const *getname(char const *code); int getprice(char const *code); void MerchandiseTable::init() { strcpy(tab[0].code, "m01"); strcpy(tab[0].name,

More information

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 장강의노트.ppt 클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++, Level 1은객관식사지선다형으로출제예정 1. 다음은 POST(Post of Sales Terminal) 시스템의한콜레보레이션다이어그램이다. POST 객체의 enteritem(upc, qty) 와 Sale 객체의 makellineitem(spec,qty) 를 Java 또는 C ++, C # 언어로구현하시오. 각메소드구현과관련하여각객체내에필요한선언이있으면선언하시오.

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

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

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.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 - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

C++ 기본문법 정리

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

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

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

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << ary[ << i << ] =  << ary[i] << endl; 5 장클래스의활용 1 5 장클래스의활용 클래스와배열객체포인터 this 포인터멤버함수오버로딩디폴트매개변수의사용 friend ( 전역함수, 클래스, 멤버함수 ) 내포클래스지역클래스 static 멤버 const 멤버와 const 객체 explicit 생성자 C++ 프로그래밍입문 1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 오픈소스소프트웨어개발입문 (CP33992) 포인터 부산대학교공과대학정보컴퓨터공학부 학습목표 포인터선언과간접참조를통한포인터사용방법을알수있다. 함수의인수전달에서포인터의역할및사용방법을알수있다. 포인터를통한배열원소의참조방법에대해알수있다. 포인터의가감연산을통한다양한활용법을알수있다. 포인터를이용한문자열처리에대해알수있다. void 포인터, 함수포인터의사용방법을알수있다.

More information

Chapter 6 Objects and Classes

Chapter 6 Objects and Classes 11 장상속과다형성 1 강의목표 상속 (inheritance) 을이용하여기본클래스 (base class) 로부터파생클래스 (derived class) 생성 (11.2) 파생클래스유형의객체를기본클래스유형의매개변수 (parameter) 로전달함으로써일반화프로그래밍 (generic programming) 작업 (11.3) 생성자와소멸자의연쇄적처리 (chaining)

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

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

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

Microsoft PowerPoint - additional06.ppt [호환 모드] 보조자료 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park 복습 : Const 키워드왜사용? C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; //

More information

쉽게 풀어쓴 C 프로그래밍

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

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