1 / 38

Multimedia Programming (Part 1: C/C++ Programming)

Multimedia Programming (Part 1: C/C++ Programming). Hyunki Hong Dept. of Image Eng., GSAIM ChungAng Univ. Contents. 상수와 변수 수식과 연산자 제어 명령문 파생자료형 ( 배열 , 포인터 , 구조체 등 ) C++ 함수 클래스와 객체. 키보드로부터 입력받고 이를 계산 ( 예 : 2 배 곱셈 ) 하는 프로그램이라면 , 1. 입력받는 기능 ( 함수 )

Download Presentation

Multimedia Programming (Part 1: C/C++ Programming)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multimedia Programming(Part 1: C/C++ Programming) Hyunki Hong Dept. of Image Eng., GSAIM ChungAng Univ.

  2. Contents 상수와 변수 수식과 연산자 제어 명령문 파생자료형(배열, 포인터, 구조체 등) C++ 함수 클래스와 객체

  3. 키보드로부터 입력받고 이를 계산 (예: 2배 곱셈)하는 프로그램이라면, 1. 입력받는 기능(함수) 2. 연산(곱셈)하는 기능(함수) 3. 결과 출력하는 기능(함수) 2 4 C 프로그램의 구조 작성규칙 1. 함수는 ‘{’로 시작하고 ‘}’로 끝남. 2. 문장 끝에는 반드시 ‘;’ 3. main() 함수의 위치와 관계없이 프로그램은 항상 main()에서 시작 4. 주석문은 ‘/*’로 시작하고 ‘*/’로 끝남. cf. ‘//’

  4. // 선행처리 지시자 // 프로그램 시작 // 변수선언 // 함수원형 // 프로그램 문장 C 프로그램의 구성요소 # include <헤더 파일> void main() { 선언문; …. }

  5. C++ 개발환경 Microsoft Visual C++ 통합개발환경 : Windows 2000 등의 운영체제에서 실행 가능한 프로그램 개발하도록 하는 컴파일러 원시코드 입력, 편집, 컴파일, 실행 및 오류 수정 등을 지원하는 여러 도구 포함. 그래픽 편집기 등 이용해 윈도우 표준자원(메뉴, 그림, 아이콘 등) 처리 가능 미리 작성된 다양한 클래스 등 사용 가능

  6. Visual C++ Console 프로그래밍 소스코드 입력 및 저장 한 개 또는 여러 개 관련 파일 등을 묶어 ‘프로젝트 작업공간(Workspace)’로 관리: *.dsw 새로운 프로젝트: File – New 도스형 프로그램(콘솔 응용프로그램) 선택 An empty project & Finish

  7. Visual C++ Console 프로그래밍 소스코드 입력 및 저장 ‘An empty project’ 형태인 경우 소스 파일 생성 : File – New ‘C++ Source File’ 선택: 자동으로 *.cpp 생성 ‘C++ Header File’ : 헤더 파일 작성 프로젝터 내 모든 파일 한번에 저장: [Save Workspace], 각 파일 저장은 File – Save 저장된 프로젝트 열기: [File – Open Workspace]

  8. 콘솔 프로그램 컴파일과 실행 실행파일 만들기 : 소스파일을 실행파일로 번역하기 위해 [Build – Build HelloCpp.exe] 선택

  9. 콘솔 프로그램 컴파일과 실행 작성된 프로그램 실행하기 소스파일이 오류없이 build되었다면, exe 파일 생성 프로젝트 디렉토리 하위에 자동으로 생성되는 Debug에 생성됨. [Project – Settings] 메뉴에서 변경 가능 Visual C++ 내에서 실행: [Build – Execute HelloCpp.exe] 선택 도스 창이나 윈도우 ‘명령 프롬프트’ 내에서 실행하려면, 실행파일이 저장된 곳으로 이동하여 실행

  10. 전처리기(preprocessor) • 컴파일하기 전에 프로그램에 대한 일련의 작업 수행 • 일반적으로 함수 외부에 기술 • #기호를 명령어 앞에 붙이고 마지막에 ; 기호 사용× • #include, #define문이 대표적 • 표준헤더 파일에서 많이 볼 수 있다.

  11. #include • 각종 라이브러리 함수의 원형, 구조체의 데이터 형 선언 등이 들어 있는 헤더 파일을 프로그램에 포함시키고자 할 때 • #include <iostream.h> • #include “c:\header_file\han.h” • #include “graphics.h” 표준 헤더의 디렉토리(include) 에서 찾아 포함 시킴 ..VC98\include\*.h 프로그래머가 만든 화일 포함시킬 때 디렉토리 생략하면 현재 작업 디렉토리 나 표준 헤더 디렉토리

  12. #define • 매크로 상수 • 프로그램 전체에서 하나의 기호 상수나 자료형을 다른 이름으로 대치시키도록 선행처리기에게 알려주고, 실제 매크로가 호출되면 호출된 자리에 정의된 기호상수나 자료형으로 대치 • #define 매크로명 상수 또는 문자열 • #define SIZE 100 ….. char ch[SIZE]; • 매크로 함수 • 인수 있는 매크로(함수) • #define 매크로명(매개변수,…) (치환리스트) • #define sum3(i,j,k) ((i)+(j)+(k)) 보통 대문자 형식매개변수는 부작용 방지를 위해 일일이 괄호로 묶어 준다

  13. 매크로 상수/함수 #include <stdio.h> #define sum3(i,j,k) ((i)+(j)+(k)) #define AA 2 void main() { printf("%d",sum3(AA,3,5)); printf("\n%d",AA); } 1.printf("%d",sum3(2,3,5)); 2.printf("%d", ((2)+(3)+(5)) );

  14. Contents 상수와 변수 수식과 연산자 제어 명령문 파생자료형(배열, 포인터, 구조체 등) C++ 함수 클래스와 객체

  15. 식별자(identifier) • : 변수, 함수, 상수 등에 부여한 이름 • 변수(variable) • : 프로그램이 실행되는 동안 수정될 수 있는 값을 • 저장하기 위한 기억장소(메모리 위치)의 이름 • 상수(constant) • : 항상 그 값이 변하지 않는 수(문자상수, 숫자상수) 식별자, 변수, 상수

  16. 식별자 명명 규칙 • 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)로 구성 • 첫 글자는 반드시 영문자 또는 밑줄로 시작 • 대문자와 소문자는 다른 변수(Max,max) • 처음부터 32문자까지만 식별 • 이름은 자료 의미나 기능을 알 수 있도록 • 예약어는 식별자로 사용 불가 • counter, var1, s_p, _han, SUM1 O • if, for, float, else, void, class, private ×

  17. 예약어(keyword) • 그 의미가 컴파일러에 의해 미리 정해져 있는 단어

  18. 설명문(comment) • 프로그램의 수행과 무관하게 프로그램의 목적, 수행과정, 알고리즘에 대한 설명을 프로그램 내에 기술하는 프로그램의 이해를 돕기 위한 문장 • 행(line) 설명문: ‘//’(C++에서 추가), 블록 설명문: ‘/*’, ‘*/’ /*#########################*/ /* 화일이름 : HelloCpp.cpp */ /* 목 적 : 연습 2 */ /* 작성일 : 2007. 9. 13 */ /*########################*/ #include <iostream.h> void main() { int i; int sum; /*누적합 위한 변수*/ for(i=0;i<10;i++) cout<<i; } /*#########################*/ /* 화일이름 : HelloCpp.cpp */ /* 목 적 : 연습 */ /* 작성일 : 2007. 9. 13 */ /*########################*/ //#include <iostream.h> #include <stdio.h> // 전처리기 void main() /* 리턴값이 없는 main 함수*/ { /* 함수의 시작*/ printf("안녕하세요? "); /*화면에 출력하는 함수*/ //cout<<"안녕하세요? "; } /* 함수의 끝*/

  19. 기본 입출력문 • C에서는 <stdio.h> 통해 양식에 의한 입출력 함수 사용 : printf(), scanf() • C++는 <iostream.h> 통해 스트림 입출력 - cin >> :키보드부터 문자열, 표준자료형 변수에 자료 할당 - cout <<: 모니터에 문자열, 표준자료형 출력 #include <iostream.h> main(void) { int inData; cout<<"정수를 입력하시오: " ; cin >> inData; cout << "입력한 정수는"<< inData <<"입니다.\n"; cout << "끝" ; }

  20. 선언과 정의 • 선언: 변수를 사용하기 위해 자료형을 미리 컴파일러에게 알려 주어 기억 장소를 확보 → 자료형과 함께 변수 이름 나열 • 정의: 선언 개념에 더하여 객체(변수)에 필요한 기억장소가 할당되는 동작 포함 char ch; // 문자형 변수 ch 선언 int count = 1; // 정수형 변수 count 선언 및 초기화 char *name = “Kim”; // 문자 포인터 변수 name 선언 및 초기화 struct complex {float re, im;}; //새로운 구조체 자료형 complex cvar; // 구조체 변수 정의

  21. 자료형 • 자료가 저장될 기억장소들의 형(type) 정의 : 할당되는 메모리 크기가 다름. • 기본 자료형 - 기본형 1) 문자형: char, unsigned char 2) 정수형: unsigned int, short int, int, unsigned long 3) 실수형: float, double - 포인트형: * - 구조형: 배열형 [], 구조체 struct, 공용체 union - 열거형: enum - 무형: void

  22. 기본 자료형의 크기와 종류

  23. 기본 자료형의 크기와 종류 단정도 실수형 (유효 7자리) 배정도 실수형 (유효 15자리) sizeof(자료형)

  24. 잘못된 자료형 선택 예 • 문제점은? #include <iostream.h> main(void) { int kor1=97, eng1=98, math1=95, sum1=0, ave1=0; int kor2=96, eng2=98, math2=95, sum2=0, ave2=0; sum1 = kor1 + eng1 + math1; ave1 = sum1 / 3; sum2 = kor2 + eng2 + math2; ave2 = sum2 / 3; if(ave1 > ave2) cout << "1번 학생이 우승!!!\n" ; else if(ave1 < ave2) cout << "2번 학생이 우승!!!\n" ; else cout << "공동 우승!!!\n"; }

  25. 상수(constant) • 항상 그 값이 변하지 않은 요소 : 문자상수, 숫자상수 • 정수형 • 실수형 • 문자 상수 • 문자열 상수

  26. 정수형(integer) 상수

  27. 실수형(real) 상수 • 소수점 포함, 기본적으로 double형 실수, 실수 상수 뒤에 F, f를 붙이면 float형, l을 붙이면 long double형 • 십진형 • 정수부, 소수점, 소수부 • 125.76, 100. , -0.7 • 지수적 표기법 • 10진수의 소수부와, 지수부는 e나 E, 부호, 지수로 구성 • 지수는 정수형만 사용 • 부호를 생략하면 양수 • 0.345e+02(0.345×102), -3.14E-2 • 10293847.0 = 1.0293847×107 = 1.0293847e7

  28. 문자형(character) 상수 • 단일 인용부호(‘ ’)로 묶어 사용하는 하나의 문자 • 실제 기억장소에 기억될 때는 해당 ASCII 코드값이 저장 • ‘A’: 영문자 A, ‘\n’: 새 줄 문자, ‘\t’: 수평탭 #include <stdio.h> #include <iostream.h> void main() { printf("%d\n", 'A'+'B'+'C'); //A=65, B=66, C=67 cout<<'A'+'B'+'C'; }

  29. 문자열(string) 상수 • 여러 문자를 나타낼 경우 이중 인용부호(“ ”)로 묶음 • 문자형 배열에 저장됨 • “H N1” • 문자열 상수의 내부 표현 • “ ” 안에 escape 문자 사용 가능 • “안녕\n” • ‘A’: 문자상수 (1바이트 저장), • “A”: 문자열 상수(2바이트 저장) 문자열 상수에서는 문자열의 끝을 의미하는 NULL 문자가 자동적으로 붙여짐 #include <iostream.h> void main() { cout<<"문자\'A\'의 크기는" <<sizeof('A')<<endl; cout<<"문자\"A\"의 크기는" <<sizeof("A")<<endl; cout<<"문자\"1234\"의 크기는" <<sizeof("1234")<<endl; }

  30. 변수(Variable) • 수정될 수 있는 값을 저장하기 위해 사용된 특정 메모리 위치의 이름 • 변수 선언 • 모든 변수는 사용하기 전에 선언 • 동일한 자료형을 갖는 두개 이상의 변수는 “,” 로 변수와 변수를 구분 • int a, b, c; • double sum, ave, number; • int num=10, sum=0; int a; int b; int c; int a; int b;int c;

  31. 지역변수와 전역변수 • 블록(block): 서로 밀접한 선언문, 실행문을 하나의 단위로 묶어 프로그램 실행 단위로 나누고, 블록 내 변수의 유효범위를 결정하기 쉽도록 하는 언어적 개념. 블록 지정은 ‘{’ 와 ‘}’ 사용 • 유효영역(scope): 프로그램 한 블록에서 다른 블록의 자료나 코드의 조회에 대한 규칙 • 지역변수: 한 블록에서 선언된 변수. 선언된 블록 안에서 유효영역이 제한됨. • 전역변수: 프로그램 전체에서 사용. 실행 끝까지 값 보존 • 영역지정 연산자(::): 동일 이름의 전역, 지역변수 구별 가능 지역변수와 전역변수 이름이 같을 때 전역변수임을 알려줌.

  32. 지역, 전역변수 사용예 #include <iostream.h> int j = 10; void main() { int j=0; int i=0; for(i=0;i<=10;i++){ j +=i; } cout<<"::j=" <<::j<<endl; cout<<"j=" <<j; } // 프로그램 시작 전역 j // main 함수 블록 시작 지역 j 지역 i // for 블록 시작 // for 블록 끝 // main 함수 블록 끝 // 프로그램 종료

  33. 기억장소에 따른 변수 • 변수의 기억장소: 주기억 장소와 레지스터 - 레지스터 변수: 예약어 register 사용 • 주기억 장소에 저장되는 변수 - 자동(auto) 변수: 블록 안에서 생명주기 가지는 지역변수와 일치. 변수 정의시 auto 추가, auto 예약어 없어도 컴파일러가 모두 자동변수로 해석 - 정적(static)변수: 전역변수의 개념 - 외부(extern)변수: 대형 프로젝트에서 한 프로그램에서 정의된 전역변수를 다른 프로그램에서 사용하려면 extern 선언. cf. 분리 컴파일

  34. 자동변수와 정적변수 비교 #include <iostream.h> void sub1(); void sub2(); void main() { int i = 0; for(i=0;i<5;i++) sub1(); for(i=0;i<5;i++) sub2(); } void sub1() { auto int j=0; j=j+1; cout << "자동변수 j =" << j << endl; } void sub2() { static int k=0; k=k+1; cout << "정적변수 k =" << k << endl; } k를 전역변수로 바꾸면?

  35. 자료의 형변환(type conversion) • 자동 형변환: 산술 계산 등에서 다른 자료형을 혼합하여 계산하거나 대입문으로 기억시킬 때, 자동으로 자료형 변환 - 가장 큰 자료형으로 자동 변환됨. #include <iostream.h> void main() { int i = 2, j = 3; float f; i = j/i; // 정수형 = 정수형/정수형 cout << i << endl; // i 값 출력 f = j/i + 3.2; // 실수형 = 정수결과 + 실수형 상수 cout << f << endl; // f값 출력 f = j; f = f/i; // 실수형 = 정수형/실수형 = 실수형/정수형 cout << f << endl; // f값 출력 j = f /i + 3.2; // 정수형 = 실수형결과 + 실수형상수 cout << j << endl; // j값 출력 }

  36. 자료의 형변환(type conversion) • 강제 형변환: 프로그래머가 의도적으로 자료형 변환 - 캐스트 형변환: (변환 자료형) 변수이름 - 형변환 함수법: 변환 자료형 (변수 이름) #include <iostream.h> void main() { int a, b, c, i = 5; float f; c= 3.56 + 7.89; f= 3.56 + 7.89; cout << "int(3.56)+int(7.89)=" << int(3.56)+int(7.89) << endl; cout << "(int)(3.56+7.89)=" << (int)(3.56+7.89) << endl; cout << "22/7=" << 22/7 << endl; cout << "float(22)/7=" << float(22)/7 << endl; cout << "c=" << c << endl; cout << "f=" << f << endl; }

  37. 변수의 동적 초기화 • 컴파일 시간이 아닌, 실행시간에 초기값이 결정 #include <iostream.h> #include <string.h> void main() { char name[] = "HongKilDong"; // 문자열을 위한 배열변수 int k = strlen(name); // 동적 초기화 변수 k cout << "k=" << k << endl; for (int i=0; i<k;i++) // 문자열 길이만큼(필요한 만큼..)만 출력 cout<<name[i]; }

  38. 기호 상수(symbolic constant) 선언 • 프로그램 내에서 변하지 않는 상수값 가지는 변수, 자료형 앞에 const 명시하여 정의 • 관례상 일반변수는 소문자로 시작, 상수변수는 대문자로만 또는 대문자로 시작 #include <iostream.h> main() { const float PI = 3.141592; cout << PI; } #include <iostream.h> #define PI 3.141592; main() { cout << PI; }

More Related