270 likes | 440 Views
Computer Graphics (Part 1: C/C++ Programming). HyunKi Hong Dept. of Image Eng., GSAIM ChungAng Univ. Contents. 상수와 변수 수식과 연산자 제어 명령문 파생자료형 ( 배열 , 포인터 , 구조체 등 ) C++ 함수 클래스와 객체. 명령문 1; // 처리 명령문 2; // 처리 … 명령문 n; // 처리. 제어문. 순차성 을 갖는 문장의 실행순서를 변경
E N D
Computer Graphics(Part 1: C/C++ Programming) HyunKi Hong Dept. of Image Eng., GSAIM ChungAng Univ.
Contents 상수와 변수 수식과 연산자 제어 명령문 파생자료형(배열, 포인터, 구조체 등) C++ 함수 클래스와 객체
명령문 1; //처리 명령문 2; //처리 … 명령문 n; //처리 제어문 • 순차성을 갖는 문장의 실행순서를 변경 : 필요한 명령문을 반복하거나, 조건 따라 선택 또는 분기할 때, • 종류
거짓 조건식 참 문장1 다음 문장 조건문(conditional statements) • 조건식에 따라 참인 경우와 거짓인 경우로 각각 분기 • 단순 if문 • if(조건식) • 문장1; • 다음 문장; • 문장1이 여러 줄일 경우 { }사용
거짓 조건식 참 문장 1 문장 2 다음 문장 if-else문 • if (조건식) 문장 1; //처리 1 else 문장 2; //처리 2
if-else문 #include <iostream.h> void main() { char ch; cin>>ch; if(ch>='a' && ch<='z') cout<<"소문자\n"; else if(ch>='A' && ch<='Z') cout<<"대문자\n"; else cout<<"영문자가 아닙니다.\n"; } 예제 작성: 키보드로 숫자 1을 누르면 남성입니다 키보드로 숫자 2를 누르면 여성입니다
if-else문 # include <iostream.h> main() { int kor = 85, eng = 95, math = 100; int ave = 0; ave = (kor + eng + math)/3; if(ave >= 90) cout << "A\n"; else if(ave >= 80) cout << "B\n"; else cout << "F\n"; if(kor > ave) { cout << "kor가 ave보다 큽니다.\n"; cout << "또는 ave는 kor보다 작습니다.\n"; } else { cout << "kor는 ave보다 작거나 같습니다.\n"; cout << "또는 ave는 kor보다 크거나 같습니다.\n"; } } 7/26
다중 if-else문 if(조건식1) 문장 1; //처리 1 elseif(조건식2) 문장 2; //처리 2 else 문장 n; //처리 n
조건 검사 • if(a>=1 && a<=6) #include <iostream.h> void main(void) { int x; cout << " input x ? " ; cin >> x; if (x) cout << "male"; else cout << "female"; } X가 참이냐? (x!=0) • if(!x) • x가 거짓이냐? • (x==0)
switch-case int, char, enum, 결과가 정수형인 수식 switch(수식){ case 상수1 : 문장1; break; case 상수2 : 문장2; break; case 상수n: 문장n; break; default : 문장; break; } 문자/정수 상수 (문자 상수일 경우 ‘‘로 묶음) 루프를 벗어남. 생략된 경우에는 다음 case 문장이 수행됨. 생략 가능 위의 조건을 만족하지 않을 때
switch-case 예제 1 # include <iostream.h> main() { char flag; cin >> flag; switch(flag) { case 'k': cout << "Korea! 파이팅! \n"; break; case 'm': cout << "Milk를 많이 먹자! \n"; break; default: cout << "안녕히 가세요. \n"; } cout << "끝. \n"; } #include <iostream.h> void main(void) { int value; cout<<"\n1~3까지의 수를 입력하세요:"; cin>>value; switch(value){ case 1 : cout<<"1을 입력하셨습니다.\n"; break; case 2 : cout<<"2을 입력하셨습니다.\n"; break; case 3 : cout<<"3을 입력하셨습니다.\n"; break; default: cout<<"다시 입력하세요.\n"; break; } } 11/26
switch-case 예제 2:계산기 #include <iostream.h> void main() { char op; int v1, v2; cout<<"\n계산하려는 수식을 입력하세요:"; cin>>v1 >> op >>v2; //10+20 cout<<"결과="; switch(op){ case '+' : cout<<v1+v2; break; case '-' : cout<<v1-v2; break; default : cout<<"다시 입력하세요\n"; break; } } 사칙연산을 할 수 있는 계산기 완성
반복문(for문, while문, do~while문) 참이면 반복 문장 실행 거짓이면 for문 종료 for(초기화식;조건식;증감식) { 반복 실행될 문장; } for(i=0; i<10; i++) for(j=10; j>0; j- -) for(i=1,j=1; i<=99; i+=2,j++) for( ; ; ) //무한루프, break문을 써서 탈출 1 0 3 반복 실행될 문장 다음 실행 2 쉼표 연산자
For문 예제 # include <iostream.h> main() { int a, sum = 0; for (a=1; a<=10; a++) sum += a; cout << "1+2+3+....+ 10= " << sum << endl; } 연습문제: 1~100까지 화면에 출력 1~100까지 짝수만 화면에 출력 (5의 배수는?) 14/26
switch-case & 무한루프 #include <iostream.h> void main() { char op; int v1, v2; do{ // for( ; ; ){ cout<<"\n계산하려는 수식을 입력하세요(끝내려면 0+0을 입력):"; cin>>v1 >> op >>v2; //10+20 if(v1==0 && v2==0) break; cout<<"결과="; switch(op){ case '+' : cout<<v1+v2; break; case '-' : cout<<v1-v2; break; default : cout<<"다시 입력하세요\n"; break; } }while(1); //for문의 괄호 닫는다 } } 15/26
2중 for문 예제 #include <iostream.h> #include <iomanip.h>//setw() void main() { int a,b; cout<<"***********구구단****************\n"; for(a=2;a<=9;a++){ for(b=1;b<=9;b++){ cout<<a<<'x'<<b<<'='<<setw(2)<<a*b<<' '; } cout<<'\n'; } } 1~9 2X1= 2 2X2= 4 2X9=18 3X1= 3 3X2= 6 3X9=27 4X1= 4 4X2= 8 4X9=36 : : …. : 9X1= 9 9X2=18 9X9=81 2~9 16/26
while문 • 처리 명령어들을 주어진 조건을 만족할 때까지 횟수에 관계없이 반복 실행 수식(조건식)을 평가하여 참이면 반복문장을 계속 실행하고, 거짓이면 while문 종료 while(수식){ 반복문장; } while(1) 무한 루프
while문 예제 #include <iostream.h> void main() { int n,sum=0; for(n=1;n<=100;n++) sum+=n; cout<<sum; } • #include <iostream.h> • void main() • { • int n=1,sum=0; • while(n<=100){ • sum+=n; • ++n; • } • cout<<sum; • } 18/26
do-while문 do{ 반복문장; } while(수식); • 처리문장을 한번 수행하고 난 뒤, 이후 반복을 위해 조건문을 판정 수식(조건식)을 평가하여 참이면 반복문장을 계속 실행, 거짓이면 종료
do-while문 예제 #include <iostream.h> void main() { int n=1,sum=0; do{ sum+=n; ++n; }while(n<=100); cout<<sum; } • #include <iostream.h> • void main() • { • int n=1,sum=0; • while(n<=100){ • sum+=n; • ++n; • } • cout<<sum; • } 20/26
goto문 goto label; label : 문장; 사용자 정의 단어 콜론 goto SS; SS: ++n;
break 문 • 반복문 등에서 반복과정을 탈출하고자 하는 경우에 사용 • (for, while, do-while)이나 switch문에서 (안쪽) 루프를 하나 벗어남 # include <iostream.h> #include <iomanip.h>//setw() void main() { int a,b; for(a=2;a<=9;a++){ for(b=1;b<=9;b++){ if(b>=6) break; cout<<a<<"*"<<b<<"="<<setw(2)<<a*b<<" "; }cout<<"\n"; } } 22/26
임의의 개수의 수를 입력 받아 평균을 구하는 프로그램 #include <stdio.h> void main() { int i,num,sum=0,total; printf("\n임의의 수의 평균을 구하는 프로그램입니다.\n"); printf("\n계산하려는 수는 몇개입니가?="); scanf("%d",&total); for(i=1;i<=total;i++){ printf("%d번째 수를 입력하세요=",i); scanf("%d",&num); sum+=num; } printf("평균은 %lf 입니다.\n",(double)sum/total); } 23/26
exit() 함수 • 프로그램을 강제로 종료하고 운영 체제로 제어를 넘기는 역할 →void exit(int 반환값); : 정상적 종료는 0, 오류로 인한 강제종료는 1 # include <iostream.h> # include <stdlib.h> main() { char ch; cout << "1. 콩나물\n"; cout << "2. 콩자반\n"; cout << "3. 종료하기\n"; cout << "원하는 메뉴를 선택하시오: "; do { cin >> ch; switch(ch) { case '1': cout << "콩나물을 선택했습니다! \n"; break; case '2': cout << "콩자반을 선택했습니다! \n"; break; case '3': cout << "프로그램을 종료합니다! \n"; exit(0); default: cout << "잘못 선택했습니다. \n"; } } while(ch); } 24/26
continue문 • for, while, do-while문에서 루프의 조건식을 검사하는 부분으로 다시 되돌아 감 (반복 블록의 끝까지 모든 명령문들을 무시) #include <iostream.h> #include <iomanip.h>//setw() # include <stdlib.h> main() { int a,b; for(a=2;a<=9;a++){ if(a==3 || a==5 || a==7 || a==9) continue; for(b=1;b<=9;b++){ cout<<a<<"x"<<b<<"="<<setw(2)<<a*b<<" "; } cout<<"\n"; } } 25/26
continue문 예제 #include <iostream.h> void main() { int n,sum=0; for(n=1;n<=100;n++) { if(n%2==0) continue; sum+=n; } cout<<sum; } 26/26
DLL(Dynamic Link Library) : 응용프로그램이 실행될 때 자동으로 로드되면서 응용프로그램의 실행을 돕는 파일(윈도우 환경에서) • 프로그램과 함께 컴파일하지 않고 라이브러리로 만들어 프로그램을 실행할 때마다 동적으로 불러 사용→ 속도 빠르고 메모리 절약 • 실행시 필요한 함수 집단으로 실행파일과 함께 메모리상에 로드되어 실행. 그 기능을 담당하는 파일이나 라이브러리를 작성하지 않아도 되고 필요할 때만 호출. • 하나의 dll 파일이 동시에 여러 응용프로그램 실행에 도움을 줄 수 있기 때문에 많이 사용됨.