Slide 1

Similar documents
Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - chap03-변수와데이터형.pptx

OCW_C언어 기초

C++ Programming

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - C++ 5 .pptx

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

C++ Programming

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Slide 1

OCW_C언어 기초

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

Slide 1

Microsoft PowerPoint - chap01-C언어개요.pptx

슬라이드 1

Slide 1

PowerPoint Presentation

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

설계란 무엇인가?

PowerPoint Presentation

KNK_C03_Expr_kor

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

C++ Programming

설계란 무엇인가?

Microsoft PowerPoint - KNK_C03_Expr_kor

슬라이드 1

C 프로그램의 기본

PowerPoint Template

Microsoft PowerPoint - Chapter 1-rev

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

2002년 2학기 자료구조

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - Chapter 6.ppt

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

C프로-3장c03逞풚

C# Programming Guide - Types

쉽게 풀어쓴 C 프로그래밍

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

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

C++ Programming

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

PowerPoint Template

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap4_2013 [호환 모드]

Microsoft PowerPoint - c2.ppt


본 강의에 들어가기 전

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

설계란 무엇인가?

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

OCW_C언어 기초

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

Slide 1

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

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

Microsoft PowerPoint - chap12-고급기능.pptx

쉽게 풀어쓴 C 프로그래밊

Slide 1

컴파일러

Microsoft PowerPoint - 2장 변수와 자료형 pptx

Slide 1

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

쉽게 풀어쓴 C 프로그래밍

03 상수, 변수, 자료형

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

PowerPoint Presentation

KNK_C_05_Pointers_Arrays_structures_summary_v02

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

11장 포인터

제 1 장 기본 개념

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - e pptx

PowerPoint Presentation

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

프입2-강의노트-C++배경

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

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

강의 개요

Transcription:

SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 1. C++ 기초 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr

Learning Objectives C++ 소개 기원, 객체지향프로그래밍, 용어 변수, 식및할당문 콘솔입 / 출력 프로그램스타일 라이브러리및네임스페이스 1-2

C++ 소개 C++ 언어의기원 저급언어 기계어, 어셈블리어 고급언어 C, C++, ADA, COBOL, FORTRAN C++ 언어를이용한객체지향프로그래밍 (Object Oriented Programming) C++ 용어 프로그램 (Programs) 과함수 (functions) cin 과 cout 을이용한기본입력 / 출력 (I/O) 1-3

디스플레이 1.1 C++ 프로그램예제 (1 of 2) 1-4

디스플레이 1.1 C++ 프로그램예제 (2 of 2) 1-5

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

디스플레이 1.2 간단한데이터형 (1 of 2) 1-7

디스플레이 1.2 간단한데이터형 (2 of 2) 1-8

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

데이터할당 : 축약표기 디스플레이, 14 페이지 1-10

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

문자상수 (Literal) 데이터 문자상수 (literal) 예 : 2 5.75 "Z" "Hello World" // 문자상수 int // 문자상수 double // 문자상수 char // 문자상수 string 실행중값의변경이불가 문자상수 라고불리는이유는프로그램에서 문자그대로타이핑되기 때문이다 1-12

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

디스플레이 1.3 백슬래쉬문자상수의종류 (1 of 2) 1-14

디스플레이 1.3 백슬래쉬문자상수의종류 (2 of 2) 1-15

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

산술연산자 : 디스플레이 1.4 명명된상수 (1 of 2) 기본산술연산자 우선순위규칙 기본규칙 1-17

산술연산자 : 디스플레이 1.4 명명된상수 (2 of 2) 1-18

산술정밀도 연산의정밀도 매우중요한고려사항! C++ 에서수식은예측한대로계산되지않을수도있다! 최상위순위피연산자 가수행되는연산의 정밀도 를결정 일반적인함정! 1-19

산술정밀도의예 예 : C++ 에서 17 / 5 는 3 으로계산! 두개의피연산자는 integer 형 Integer 형정밀도로나눗셈연산수행! C++ 에서 17.0 / 5 는 3.4 와같다! 최상위순위피연산자는 double 형 double 형정밀도로나눗셈연산수행! int intvar1 =1, intvar2=2; intvar1 / intvar2; Integer 형정밀도로나눗셈연산수행! 결과 : 0! 1-20

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

형변환 (Type Casting) 변수의형변환 문자상수 (literal) 은.0 을추가하여정확한연산을강제할수있지만변수는? myint.0 을사용할수는없다! static_cast<double>intvar 명시적으로 intvar 를 double 형으로변환 ( casts 또는 converts 변환의결과는다음에사용된다 예제식 : doublevar = static_cast<double>intvar1 / intvar2; 강제적인변환으로두정수형변수사이에 double 형정밀도의나눗셈이발생한다! 1-22

형변환 (Type Casting) 두가지형태 묵시적 (Implicit) 형변환 또는자동 ( Automatic ) 자동적으로실행 17 / 5.5 이식은묵시적형변환이발생하여 17 17.0 으로변환 명시적 (Explicit) 형변환 프로그래머가변환연산자를이용하여변환을명기 (double)17 / 5.5 위의식과같은식이지만, 명시적형변환을사용 (double)myint / mydouble 더욱일반적인사용 ; 변수에변환연산자가사용됨 1-23

축약연산자 (Shorthand Operators) 증가 & 감소연산자 적절한축약표현 증가연산자, ++ intvar++; 다음의식과같다 intvar = intvar + 1; 감소연산자, -- intvar--; 다음의식과같다 intvar = intvar 1; 1-24

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

사후증가 사후증가의예 : int n = 2, valueproduced; valueproduced = 2 * (n++); cout << valueproduced << endl; cout << n << endl; 이코드부분은다음의결과를출력 : 4 3 사후증가가사용됨 1-26

사전증가 사전증가의예 : int n = 2, valueproduced; valueproduced = 2 * (++n); cout << valueproduced << endl; cout << n << endl; 이코드부분은다음의결과를출력 : 6 3 사전증가가사용됨 1-27

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

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

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

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

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

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

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

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

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

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

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

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

요약 2 cout 객체 콘솔출력에사용 cin 객체 콘솔입력에사용 cerr 객체 오류메시지출력에사용 주석을사용하는목적은프로그램의이해를돕는것 남용하지말것 1-40

Q&A 1-41