Chapter 01. C 언어 기반의 C++ 1 정충교 ). 강좌 운영 2  선수과목  컴퓨터프로그래밍 1(100811)  컴퓨터프로그래밍 2(100812)  교재  열혈 C++ 프로그래밍, 인피니티북스, 윤성우저  평가  중간 : 25%, 기말 : 35%,

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 01. C 언어 기반의 C++ 1.
재료수치해석 HW # 박재혁.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
컴퓨터 프로그래밍 기초 [Final] 기말고사
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
제 3장. C보다 나은 C++ II.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 06. printf 함수와 scanf 함수 정리하기
23장. 구조체와 사용자 정의 자료형 2.
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 03. 변수와 연산자.
Tail-recursive Function, High-order Function
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
13. 연산자 오버로딩.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
27장. 모듈화 프로그래밍.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
제 1장. C++ 시작하기.
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Fucntion 요약.
( Windows Service Application Debugging )
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
에어 PHP 입문.
Chapter 13. 템플릿(Template) 1
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 2 C++ 함수와 네임스페이스. 최호성.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
객체지향 프로그래밍 (강의소개)
Numerical Analysis Programming using NRs
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
6 객체.
Presentation transcript:

Chapter 01. C 언어 기반의 C++ 1 정충교 )

강좌 운영 2  선수과목  컴퓨터프로그래밍 1(100811)  컴퓨터프로그래밍 2(100812)  교재  열혈 C++ 프로그래밍, 인피니티북스, 윤성우저  평가  중간 : 25%, 기말 : 35%, 출석 ( 출석 및 실습문제 데모 ): 30%, 확 인문제풀이 노트 : 10%  강의 중 문제풀이 ( 문제풀이를 위한 개인노트를 준비해야 함 – 문제풀이 노트 평가 2 회 )

강사 3  담당교수  정충교  컴퓨터학부  연구실 호    조교  이남세  컴퓨터학부  연구실 호   홈페이지 

수업 시간, 장소 4  이론 강의  월요일 오후 1 시 – 2 시 50 분  공 호  실습  수요일 오후 3 시 – 4 시 50 분  공 호

확인문제와 실습문제  매 강의 끝에 확인문제와 실습문제가 주어짐  확인문제는 이론강의 시간 후반부에 노트에 손으로 프로그램을 작성함  실습 문제는 실습시간에 완성하여 검사를 받아야 함  실습시간 내에 실습문제 전체를 완성하여 검사를 받지 못하는 경우 목요일 저녁 6 시까지 프린트물 ( 프로그램 코드와 실행 결과 ) 을 5 층 과제 제출함에 제출해야 함 ( 그 이후에는 받지 않음 )  실습시간에 실습문제 중 일부만을 검사하지 않음 ( 전체를 검사 받거나 전체를 프린트물로 제출해야 함 ) 5

Chapter printf 와 scanf 를 대신하는 입출력 방식

C++ 버전의 Hello World 출력 프로그램  헤더파일의 선언 #include  출력의 기본구성 std::cout<<‘ 출력대상 1’<<‘ 출력대상 2’<<‘ 출력대상 3’;  개행의 진행 std::endl 을 출력하면 개행이 이뤄진다. 예제를 이해하려 들지 말고 관찰하자. 그리고 위의 세 가지 사실을 확인하자. 예제를 통해서 확인할 사실 몇 가지 실행결과 C 언어에서는 출력의 대상에 따라 서식지정을 달 리했지만, C++ 에서는 그러한 과정이 불필요하다. 8

scanf 를 대신하는 데이터의 입력  입력의 기본구성 std::cin>>’ 변수 ’  변수의 선언위치함수의 중간 부분에서도 변수의 선언이 가능하다. 예제를 통해서 확인할 사실 몇 가지 출력에서와 마찬가지로 입력에서도 별도의 서식 지정이 불필요하다. C++ 에서는 변수의 선언위치에 제한을 두지 않는다. 실행결과 9

C++ 의 지역변수 선언 이렇듯 연이은 데이터의 입력을 명령할 수 있다. for 문 안에서도 변수의 선언이 가능하다. std::cin 을 통해서 입력되는 데이터의 구분은 스페이스 바, 엔터, 탭과 같은 공백을 통해서 이뤄 진다. 실행결과 10

Chapter 함수 오버로딩 (Function Overloading)

함수 오버로딩의 이해 C++ 은 함수호출 시 ‘ 함수의 이름 ’ 과 ‘ 전달되는 인자의 정보 ’ 를 동시에 참조하여 호출할 함수를 결정한다. 따라 서 이렇듯 매개변수의 선언이 다르다면 동일한 이름의 함수도 정의 가능하다. 그리고 이러한 형태의 함수정의 를 가리켜 ‘ 함수 오버로딩 (Function Overloading)’ 이라 한다. 12

함수 오버로딩의 예 매개변수의 자료형이 다르므로 함수 오버로딩 성립 매개변수의 수가 다르므로 함수 오버로딩 성립 반환형의 차이는 함수 오버로딩 의 조건을 만족시키지 않는다. – 컴파일되지 않음 ! 13

Chapter 매개변수의 디폴트 값

매개변수에 설정하는 ‘ 디폴트 값 ’ 의 의미 인자를 전달하지 않으면 7 이 전달된 것으로 간주한다. 여기서의 디폴트 값은 7! 따라서 이 함수를 대상으로 하는 다음 두 함수의 호출은 그 결과가 같다. MyFuncOne( ); MyFuncOne(7); 인자를 전달하지 않으면 각각 5 와 7 이 전달된 것으로 간주한다. 따라서 이 함수를 대상으로 하는 다음 두 함수의 호출은 그 결과 가 같다. MyFuncTwo( ); MyFuncTwo(5, 7); 15

디폴트 값은 함수의 선언에만 위치 함수의 선언을 별도로 둘 때에는 디폴트 값의 선언을 함수의 선 언부에 위치시켜야 한다. 컴파일러는 함수의 디폴트 값의 지정여부를 알아야 함수의 호출 문장을 적절히 컴파일 할 수 있다. 16

부분적 디폴트 값 설정 전달되는 인자가 왼쪽에서부터 채워지므로, 디폴트 값은 오른쪽에서부터 채워져야 한다. 전달되는 인자가 왼쪽에서부터 채워지므로, 오른쪽이 빈 상태로 왼쪽의 매개변수에만 일부 채워 진 디폴트 값은 의미를 갖지 못한다. 따라서 컴파일 에러를 일으킨다. 매개변수의 일부에만 디폴트 값을 지정 하고, 채워지지 않은 매개변수에만 인자 를 전달하는 것이 가능하다. 17

Chapter 인라인 (inline) 함수

매크로 함수의 장점과 함수의 inline 선언 선행처리 결과 정점. 함수가 인라인화 되어 성능의 향상으로 이어질 수 있다. 단점. 함수의 정의 방식이 일반함수에 비해서 복잡하다. 따라서 복잡한 함수의 정의에는 한계가 있다. 매크로 함수의 정점은 취하고 단점은 보완한 것이 C++ 의 인라인 함수이다. 실행결과 함수를 inline 으로 선언하면 컴파일러는 이 함수를 가능하면 인라인코드로 처리한다. 성능을 위해 컴파일러는 inline 선언 함수를 인라인처리하지 않을 수 있고, inline 선언 없는 함수도 인라인처리할 수 있다. 19

인라인 함수에는 없는 매크로 함수만의 장점 매크로 함수는 자료형에 독립적이다. inline 선언된 함수를 위의 형태로 호출하려면, 각 자료형 별로 함수가 오버로딩 되어야 한다. 즉, 매크로 함수와 달리 자료형에 독립적이지 못하다. inline 함수를 자료형에 독립적으로 선언하는 방법 ! 템플릿을 학습할 때 배우게 됨 20

Chapter 이름공간에 대한 소개

이름공간의 기본원리 BestComImpl 이라는 이름의 공간 ProgComImpl 이라는 이름의 공간 존재하는 이름공간이 다르면 동일 한 이름의 함수 및 변수를 선언하 는 것이 가능하다. 이름공간 BestComImpl 에 정의된 SimpleFunc 의 호출 이름공간 ProgComImpl 에 정의된 SimpleFunc 의 호출 이름공간 - 프로젝트의 진행에 있어서 발생할 수 있는 이름의 충돌을 막아줌 범위 지정 연산자 22

이름공간 기반의 함수 선언과 정의의 분리 이름공간 BestComImpl 에 위치하는 함수 SimpleFunc 의 선언과 정의의 분리 이름공간 ProgComImpl 에 위치하는 함수 SimpleFunc 의 선언과 정의의 분리 23

동일한 이름공간 내에서의 함수호출 선언된 이름공간의 이름이 동일하다면, 이 둘은 동일한 이름공간으로 간주한다. 즉, SimpleFunc 와 PrettyFunc 는 동일한 이름 공간안에 존재하는 상황이다. 이름공간을 명시하지 않고 함수를 호출하면, 함수의 호출문이 존재하는 함수와 동일한 이름 공간 안에서 호출할 함수를 찾게 된다. 따라서 SimpleFunc 함수 내에서는 이름공간을 명시하 지 않은 상태에서 PrettyFunc 함수를 직접호출 할 수 있다. 24

이름공간이 다른 이름공간을 포함 이름공간 Parent 이름공간 Parent::SubOne 이름공간 Parent::SubTwo Parent::SubOne::num Parent::num Parent::SubTwo::num 이름공간은 다른 이름공간을 포함할 수 있다. 따라서 계층적 구조를 갖게끔 이름공간을 구성할 수 있다. 25

std::cout, std::cin, std::endl 에 선언되어 있는 cout, cin 그리고 endl 은 이름공간 std 안에 선언되어 있다. 이렇듯 이름충돌을 막기 위해서, C++ 표준에서 제공하는 다양한 요소들은 이름공간 std 안에 선언되어 있다. 26

using 을 이용한 이름공간의 명시 이후부터 cin, cout, endl 은 std::cin, std::cout, std::endl 을 의미한다는 선언 이름공간 std 에 선언된 함수와 변수에는 std 라는 이 름공간을 적어주지 않고 바로 접근하겠다는 선언 너무 빈번한 using namespace 의 선언은 이름의 충돌을 막기위한 이름공간의 선언을 의미 없게 만든다. 따라서 제한적으로 사용할 필요가 있다. 27

이름공간의 별칭 지정과 전역변수의 접근 AAA::BBB::CCC 에 대해 ABC 라는 이름의 별칭 선언 후, 위와 같이 하나의 별칭으로 이름공간의 선언을 대신할 수 있다. 범위지정 연산자는 지역변수가 아닌 전역변수의 접근에도 사용이 가능하다. 28

확인 문제 29  반지름이 a, 높이가 b 인 원통의 부피를 구하는 함수를 작성하고 사용 자로부터 원통의 a, b 값을 입력받아 그 부피를 출력하는 main 함수를 작성하시오. 원주율 pi 는 3.14 로 근사하시오.  a, b 는 double 타입으로 선언하시오.  함수의 이름은 CylinderVolume 으로 하시오.  파라미터 a, b 의 기본 값은 1 로 하시오.

실습 문제 30  실습 1  P 문제 3 번을 2 단부터 9 단까지 출력하도록 바꾸시오.  실습 2  P 문제 4 번에서 세금을 급여의 3% 부과한다면 판매원들에게는 실제 얼마가 지급되는지 계산하도록 바꾸시오.

실습 문제 31  실습 3  아래 코드는 숫자 5 와 문자 'b' 를 1 만큼 증가시킨 결과를 출력하는 프로그램입 니다. 이 프로그램에서 사용하고 있는 increment 함수를 오버로딩으로 구현하 시오. int main(void) { int number = 5; increment(&number); std::cout<<number<<std::endl; char character = 'b'; increment(&character); std::cout<<character<<std::endl; }  P 코드를 참고하시오.

실습 문제 32  실습 4  P 문제 1 에서는 " 매개변수의 디폴트 값 지정 방식 " 으로 작성된 프로그 램을 " 함수 오버로딩 방식 " 으로 변경했습니다. 앞의 확인문제 ( 원통의 부피를 구하는 문제 ) 를 " 매개변수의 디폴트 값 지정 방식 " 과 " 함수 오버로딩 방식 " 으로 각각 구현하시오. " 매개변수의 디폴트 값 지정 방식 " 으로 프로그램할 때는 a, b 두 파라미터 모두에 디폴트 값을 지정하시오. main 함수는 아래와 같습니다. int main(void) { cout<<"[2, 3] "<<CylinderVolume(2, 3)<<endl; cout<<"[2, D] "<<CylinderVolume(2)<<endl; cout<<"[D, D] "<<CylinderVolume()<<endl; }

실습 문제 33  실습 5  P.41 NameSp3.cpp 는 하나의 파일로 작성되어 있습니다. 이를 P 에서 처럼 세 개의 파일로 구분하여 컴파일하고 실행하시오. 세 파일은 아래와 같아 야 합니다.  헤더파일 (Functions.h) – main 을 제외한 나머지 함수들의 프로토타입 선언  소스파일 1 (Functions.cpp) – main 을 제와한 나머지 함수들의 구현  소스파일 2 (Main.cpp) – main