Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Slides:



Advertisements
Similar presentations
MBMC 수요 : 시장의 편익측면. MBMC Copyright c 2007 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 5: Demand: The Benefit Side of the Market Slide.
Advertisements

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 실 습실 습 2.
Copyright © 2008 Wei Qi Xia. All rights reserved. 거시적 영향 발표자:하위기 2008 년 11 월 15 일.
1. 시설관리공단 상임이사 정수기준을 위반한 초과 여부에 대한 질의 2. 졸속사업으로 인한 예산낭비에 대한 질의 (KT 도로개설, 강변역 고구려역사 ]
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 실 습실 습 1.
3. 자료형. 담당교수 : 이 성 우 C++ 프로그래밍 상수와 변수 (3) 1. 변수 (variable)  프로그램 수행 도중에 자료  변수를 위해 은 변하지 않음  선언 시에 반드시 그. ※ 저장 정보의 구성 ① 정보의 종류 ② 저장 값 ③ 저장 위치 int Num.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 01. C 언어 기반의 C++ 1.
사회보험 징수통합 관련 조사 결과 보고서 한국갤럽조사연구소
로그인 1 케피코 회사 로고를 클릭합니다.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제1장 기초 사항.
C++ Espresso 제2장 제어문과 함수.
01. 강사 소개 강사 신지식인 선정 한국음식업 중앙회 전남지회 정책자문위원 내셔널 트러스트 문화유산 자문위원
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
강좌명 : C++프로그래밍 (C++ Programming)
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
8. 객체와 클래스 (기본).
Kasimov C언어 세미나 1st.
C++ Espresso 제9장 다형성.
C++ Espresso 제6장 생성자와 소멸자.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Chapter 4 매개변수와 오버로딩 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
C ++ 프로그래밍 시작.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
제2장 데이터 및 수식.
C++ Programming: chapter 7 – inheritence
제 2 장 변수와 상수.
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
Copyright by All rights reserved.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
adopted from KNK C Programming : A Modern Approach
Arrays 요약.
Chapter 2 Lexical Elements, Operators, and the C System
제2장 데이터 및 수식.
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
Copyright 2011 ㈜굿애플 All rights reserved
adopted from KNK C Programming : A Modern Approach
산학협력단 연구지원금 시스템 사용자 매뉴얼 Copyrightⓒ2014 UOSICF. All Rights Reserved. 1.
타입, 연산자 Chapter 5, 6 Kum Deuk Kyu , Ph. D. Spring 2015
가상함수와 추상 클래스.
Chapter 1 C와는 다른 C++. 최호성.
주의(主意) 본 자료는 고사성어100선의 교육자료 데모용입니다. 제품구입시 모든 교육용 자료는 별도로 무상 공급됩니다.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
제 3 장 연산자 (Operators).
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
솔개의 교훈 _ 변화만이 살길이다 “변화” 하지 않는 자는 자연 도태됩니다. 과연 당신은 ……. 현재의 위치에 만족 한 상태로
루프와 카운트 Looping and counting
문자열 처리하기 working with Strings
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
C-언어와 기반구조 정보보호학과 이정수 교수.
5. 논리적 자료표현 : 구조체.
adopted from KNK C Programming : A Modern Approach
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
C++ Espresso 제13장 입출력과 파일처리.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
9장 개요 다형 참조 상속을 통한 다형성 인터페이스를 통한 다형성 정렬 탐색 이벤트 처리 재조명 파일 선택자 및 색상 선택자
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
中国类型小说海外受追捧, 国内市场类型新作后继乏力
C.
Spring, 2019 School of CSE Pusan National University
Presentation transcript:

Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. Learning Objectives C++ 소개 기원, 객체지향 프로그래밍, 용어 변수, 식 및 할당문 콘솔 입/출력 프로그램 스타일 라이브러리 및 네임스페이스 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 저급 언어 기계어, 어셈블리어 고급 언어 C, C++, ADA, COBOL, FORTRAN C++ 언어를 이용한 객체지향 프로그래밍 (Object Oriented Programming) C++ 용어 프로그램(Programs) 과 함수(functions) cin 과 cout을 이용한 기본 입력/출력 (I/O) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 디스플레이 1.1 C++ 프로그램 예제 (1 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 디스플레이 1.1 C++ 프로그램 예제 (2 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 키워드/예약어 vs. 식별자 식별자의 대소문자 구분, 확실한 분별이 가능하게 사용 의미있는 이름을 사용! 변수 프로그램을 위한 데이터가 저장된 메모리 위치 프로그램의 모든 변수는 사용되기 전 반드시 선언되어야 함 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 디스플레이 1.2 간단한 데이터형 (1 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 디스플레이 1.2 간단한 데이터형 (2 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 데이터 할당 변수의 선언과 동시에 초기화 초기화하지 않은 변수에는 “정의되지 않은” 값 (쓰레기값)이 들어가 있다 int myValue = 0; 실행 중 데이터 할당 Lvalues (left-side) & Rvalues (right-side) Lvalues는 반드시 변수이어야 함 Rvalues는 어떠한 식도 가능 예: distance = rate * time; Lvalue: "distance" Rvalue: "rate * time" Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 데이터 할당 : 축약 표기 디스플레이, 14페이지 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 데이터 할당 규칙 데이터 할당의 호환성 형 불일치 일반 규칙 : 하나의 형의 값은 다른 형의 값으로 저장할 수 없다 intVar = 2.99; // intVar에 2가 할당됨! 정수 부분만 “일치”, 따라서 정수부만 할당됨 “묵시적(implicit) 형 변환” 또는 “자동 형 변환” 이라 한다 문자상수(리터럴:Literals) 2, 5.75, ‘Z’, "Hello World" “상수(constants)”로 취급 : 프로그램에서 변경 불가 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 문자상수(Literal) 데이터 문자상수(literal) 예: 2 // int 상수 5.75 //double 상수 ‘Z’ // char 상수 "Hello World" // string 상수 실행 중 값의 변경이 불가 “문자상수”라고 불리는 이유는 프로그램에서 “문자 그대로 타이핑 되기” 때문이다 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

백슬래시 문자상수 (Escape Sequences) “확장된” 문자 세트 백슬래쉬 “\” 가 문자 앞에 위치 백슬래쉬 문자상수가 들어온다는 것을 컴파일러에게 알림 뒤에 따라오는 문자는 “백슬래쉬 문자상수의 세트(문자)”로 인식됨 디스플레이 1.3 (다음 슬라이드) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

디스플레이 1.3 백슬래쉬 문자상수의 종류 (1 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

디스플레이 1.3 백슬래쉬 문자상수의 종류 (2 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 상수변수 상수변수 이름 짓기 문자상수(Literal)가 상수이지만, 의미를 내포하지는 않는다 예를 들어, 프로그램에서 보이는 24는 표현하고자 하는 것이 무엇인지 나타나지 않는다 명명된 상수의 사용 데이터를 표현하는 의미있는 이름 const int NUMBER_OF_STUDENTS = 24; “선언된 상수” 또는 “명명된 상수”라고 한다 이제, 프로그램에서 필요로 하는 곳에서 이름이 사용된다 추가적인 이득 : 프로그램의 유지 보수 용이(한번의 수정으로 결과의 변경 가능 – 명명부만 고치면 됨) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

산술 연산자: 디스플레이 1.4 명명된 상수 (1 of 2) 기본 산술 연산자 우선순위 규칙 – 기본 규칙 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

산술 연산자: 디스플레이 1.4 명명된 상수 (2 of 2) Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 산술 정밀도 연산의 정밀도 매우 중요한 고려사항! C++에서 수식은 예측한 대로 계산되지 않을 수도 있다! “최상위 순위 피연산자”가 수행되는 연산의 “정밀도”를 결정 일반적인 함정! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 산술 정밀도의 예 예: C++에서 17 / 5는 3으로 계산! 두 개의 피연산자는 integer 형 Integer 형 정밀도로 나눗셈 연산 수행! C++에서 17.0 / 5는 3.4와 같다! 최상위 순위 피연산자는 “double 형” double 형 정밀도로 나눗셈 연산 수행! int intVar1 =1, intVar2=2; intVar1 / intVar2; 결과: 0! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 부분적인 산술 정밀도 연산은 “하나씩” 수행된다 1 / 2 / 3.0 / 4 는 3개의 부분 연산이 수행된다 첫 번째  1 / 2 equals 0 두 번째  0 / 3.0 equals 0.0 세 번째  0.0 / 4 equals 0.0! 복잡한 식에서 하나의 피연산자를 수정하는 것으로는 충분하지 않다 연산이 수행되는 동안 모든 부분 연산이 고려되어야 한다! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 형 변환(Type Casting) 변수의 형 변환 문자상수(literal)은 “.0”을 추가하여 정확한 연산을 강제할 수 있지만 변수는? “myInt.0”을 사용할 수는 없다! static_cast<double>intVar 명시적으로 intVar를 double 형으로 변환 (“casts” 또는 “converts” 변환의 결과는 다음에 사용된다 예제 식: doubleVar = static_cast<double>intVar1 / intVar2; 강제적인 변환으로 두 정수형 변수 사이에 double 형 정밀도의 나눗셈이 발생한다! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 형 변환(Type Casting) 두 가지 형태 묵시적(Implicit) 형 변환 — 또는 자동(“Automatic”) 자동적으로 실행 17 / 5.5 이 식은 묵시적 형 변환이 발생하여 17  17.0 으로 변환 명시적(Explicit) 형 변환 프로그래머가 변환 연산자를 이용하여 변환을 명기 (double)17 / 5.5 위의 식과 같은 식이지만, 명시적 형 변환을 사용 (double)myInt / myDouble 더욱 일반적인 사용; 변수에 변환 연산자가 사용됨 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

축약 연산자(Shorthand Operators) 증가 & 감소 연산자 적절한 축약 표현 증가 연산자, ++ intVar++; 다음의 식과 같다 intVar = intVar + 1; 감소 연산자, -- intVar--; 다음의 식과 같다 intVar = intVar – 1; Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

축약 연산자(Shorthand Operators): 두 가지 형태 사후 증가(Post-Increment) intVar++ 현재 변수의 값을 사용한 후, 변수의 값이 증가됨 사전 증가(Pre-Increment) ++intVar 변수의 값이 먼저 증가하고, 변경된 값이 사용됨 현재 사용되는 값이 무엇인가에 따라 결정 단독으로 사용되면 두 표현의 차이는 없다: intVar++; 와 ++intVar;  동일한 결과 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 사후 증가 사후 증가의 예: int n = 2, valueProduced; valueProduced = 2 * (n++); cout << valueProduced << endl; cout << n << endl; 이 코드 부분은 다음의 결과를 출력: 4 3 사후 증가가 사용됨 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 사전 증가 사전 증가의 예: int n = 2, valueProduced; valueProduced = 2 * (++n); cout << valueProduced << endl; cout << n << endl; 이 코드 부분은 다음의 결과를 출력: 6 3 사전 증가가 사용됨 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 콘솔 입/출력 입출력(I/O) 객체 : cin, cout, cerr <iostream> 이라 불리는 C++ 라이브러리에 정의되어 있다 전처리기 지시자(processor directives)라 불리는 라인이 파일의 시작부에 명기되어야 함: #include <iostream> using namespace std; C++에게 적합한 라이브러리를 사용한다고 알려서 I/O 객체인 cin, cout, cerr을 사용한다 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 콘솔 출력 출력 가능한 것이 무엇인가? 어떠한 데이터도 디스플레이 스크린에 출력 가능 변수 상수 문자상수(Literals) 수식(위의 모두를 포함 가능) cout << numberOfGames << " games played."; 두 가지 값이 출력: 변수 numberOfGames의 값과, 문자상수 문자열 “games played.” 출력 Cascading: 하나의 cout으로 다양한 값을 출력 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 새로운 라인에서의 출력 출력에서의 줄 바꿈 상기: "\n" 은 “줄바꿈” 문자를 나타내는 백슬래쉬 문자상수(escape sequence) 두 번째 방법: endl 객체 예: cout << "Hello World\n"; 디스플레이에 문자열 “Hello World”를 보내고, 백슬래쉬 문자상수 “\n”에서 다음 라인으로 줄바꿈 cout << "Hello World" << endl; 위와 동일한 결과 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 출력 형식 숫자 값의 출력 형식 값이 프로그래머의 의도대로 출력되지 않을 수도 있다! cout << "The price is $" << price << endl; 변수 price 의 값이 78.5 이면 다음과 같은 형태로 출력 : The price is $78.500000 또는: The price is $78.5 프로그래머는 C++에게 어떻게 숫자를 출력할 것인가를 명시적으로 알려줘야 한다! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 숫자의 형식 “Magic Formula”를 이용하여 소수점의 크기를 결정: cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); 이들 표현으로 값을 원하는 대로 출력 가능: 정확하게 소수점 이후 두 자리까지 출력 예: cout << "The price is $" << price << endl; 이에 따른 결과: The price is $78.50 정밀도를 프로그래머의 의지대로 수정 가능! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 오류(error) 출력 cerr을 이용한 출력 cerr 은 cout과 동일하게 동작 일반 출력과 오류 출력을 구분하는 매커니즘을 제공 출력 스트림의 재지정 대부분의 시스템은 cout과 cerr 출력문을 파일과 같은 다른 장치로 “재지정”할 수 있도록 허용 예: line printer, output file, error console 등 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. cin을 이용한 입력 cin은 입력, cout은 출력에 사용 차이점 : “>>” (추출 연산자:extraction operator) 방향이 반대 “데이터가 가는 방향”을 가리킨다고 생각 “cout” 대신 “cin” 을 사용 cin에서 문자 상수 입력은 허용하지 않음 변수만 입력해야 한다 cin >> num; 키보드에서 스크린 상에 입력될 때까지 대기 키보드에서 입력된 값은 num 변수에 “할당’됨 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 입력을 위한 프롬프트: cin 과 cout 사용자 입력을 위해 항상 “대기” cout << "Enter number of dragons: "; cin >> numOfDragons; cout에 “\n”이 없다. 프롬프트는 다음과 같이 같은 라인에서 사용자의 입력에 대기한다: Enter number of dragons: ____ 키보드 입력의 위치는 배경 위의 밑줄에 만들어진다 모든 cin은 cout 프롬프트를 가져야 한다 사용자 친화적인 input/output Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 프로그램 스타일 기본 정책: 프로그램을 쉽게 읽고 수정할 수 있도록 작성해야 한다 주석, 두 가지 방법: // 두 슬래쉬가 표시되는 하나의 라인 전체가 무시된다 /*주석 기호표시 사이의 모든 라인이 무시된다*/ 두 가지 방법 모두 일반적으로 사용된다 식별자 명명 상수 : ALL_CAPS 변수 : lowerToUpper 가장 중요한 점: 의미있는 이름! Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 라이브러리 C++ 표준 라이브러리 #include <Library_Name> 현재의 프로그램에 라이브러리 파일의 내용을 “추가”하는 지시자 전처리기 지시자(preprocessor directive) 컴파일러가 실행되기 전, 라이브러리의 파일을 현재의 프로그램에 “복사” C++ 많은 라이브러리가 포함되어 있다 Input/output, math, strings, etc. Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 네임스페이스(Namespaces) 네임스페이스의 정의: 정의된 이름의 집합 현재: “std” 네임스페이스에만 초점을 둔다 필요로 하는 모든 표준 라이브러리 정의를 가지고 있음 예: #include <iostream> using namespace std; 정의된 이름의 모든 표준 라이브러리를 포함 #include <iostream> using std::cin; using std::cout; 원하는 객체만 선택할 수 있다 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 요약 1 C++ 은 대소문자를 구분 의미있는 이름을 사용 변수와 상수에 대하여 변수는 사용되기 전 반드시 선언되어야 함 또한 초기화 되어야 한다 숫자의 사용에 있어서 주의할 점 정밀도, 괄호, 연산 우선순위 등 #include를 사용하여 필요할 때 C++ 라이브러리를 사용 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Copyright © 2010 Pearson Addison-Wesley. All rights reserved. 요약 2 cout 객체 콘솔 출력에 사용 cin 객체 콘솔 입력에 사용 cerr 객체 오류 메시지 출력에 사용 주석을 사용하는 목적은 프로그램의 이해를 돕는 것 남용하지 말 것 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.