제1장 기초 사항 C++ 언어의 역사와 특징에 대하여 살펴본다. 입력과 출력에 대하여 학습한다. 비주얼 스튜디오를 설치한다. 간단한 예제 프로그램을 컴파일하고 실행한다. 변수와 수식의 개념을 학습한다.
이번 장에서 만들어볼 프로그램
소프트웨어의 중요성 “우리 아이들의 상당수는 현재 존재하지 않는 일자리를 가질 것이다. 이런 시대에 대비하기 위해 반드시 필요한 것이 소프트웨어 교육이다.”
프로그램 프로그램은 작업지시서와 같다.
기계어 기계어(machine language): 0과 1로 구성되어 있는 “001101110001010...”과 같은 형태 컴퓨터는 이러한 이진수 형태를 바로 이해할 수 있다.
C++ 언어의 개발 C++는 1980년대 초에 AT&T 벨연구소의 Bjarne Stroustrup에 의하여 개발 C with Classes -> C++ C++는 C언어에 클래스 개념을 추가하고 이어서 가상 함 수, 연산자 중복 정의, 다중 상속, 템플릿, 예외 처리 등이 기능이 차례로 추가
C++ 버전
C++의 설계 철학 엄격한 타입 검사, 범용 언어, 효율적, 이식성 여러 가지의 프로그래밍 스타일을 지원 (절차 지향 프로 그래밍, 데이터 추상화, 객체 지향 프로그래밍, 일반화 프 로그래밍) 프로그래머가 자유롭게 선택할 수 있도록 설계 최대한 C와 호환 플랫폼에 의존적이거나 일반적이지 않은 특징은 제거
C++ 특징
C++ 특징 클래스(class) - 클래스를 이용하여 하나의 객체의 속성과 동 작들을 한곳으로 모아서 정의할 수 있다. 상속(inheritance) - 클래스를 상속받아서 기존의 코드를 재사 용할 수 있다. 연산자 중복(operator overloading) – 대상에 따라서 동일한 연산자로 새로운 연산을 정의할 수 있다. 함수 중복(function overloading) – 매개 변수만 다르면 동일 한 이름의 함수를 여러 개 만들 수 있다. new와 delete 연산자 – 동적 메모리 할당과 해제를 담당하는 연산자이다. 제네릭(generics) – 클래스 정의를 자료형에 상관없이 재사용 하는 기술이다.
모던 C++ C++ 11과 C++ (14)는, 많은 새로운 기능을 도입 범위(range)-기반의 반복 루프 타입 자동 추론 기능 보편적인 초기화 람다식
C++는 어디에 사용되는가?
C++의 실행 속도
C++의 장점 C++로 작성된 프로그램은 속도가 빠르다. 하드웨어에 접근할 수 있다. 메모리를 효율적으로 사용한다. C언어 프로그램을 그냥 가져다가 사용할 수 있다. 고성능의 게임이나 인공지능, 장치 드라이버에 적합하다.
절차적 프로그래밍 절차 지향 프로그래밍(procedural programming)은 기 본적으로 프로시저를 사용하여 프로그램을 작성하는 프 로그래밍 방식이다.
객체 지향 프로그래밍 객체 지향 프로그래밍에서는 데이터와 알고리즘이 묶여 있음.
중간 점검 문제 Java와 C#는 C++와 어떤 관계가 있을까? C++ 언어가 C 언어의 상위집합이라면 C언어를 반드시 배워야 할까?
C++ 프로그램 개발 단계 텍스트 에디터로 C++ 언어 프로그램을 작성하여 파일로 저장한다. 소스 파일을 컴파일한다. 프로그램을 실행한다.
비주얼 스튜디오란? 통합 개발 환경(IDE: integrated development environment)은 프로그램 개발에 필수적인 편집, 컴파일, 실행, 디버깅 기능을 하나로 통합한 도구
비주얼 스튜디오 버전 커뮤니티 버전(Visual Studio Community) 프로페셔널 버전(Visual Studio Professional) 엔터프라이즈 버전(Visual Studio Enterprise)
비주얼 스튜디오 설치
비주얼 스튜디오 설치
비주얼 스튜디오 설치
비주얼 스튜디오 설치
비주얼 스튜디오 설치
비주얼 스튜디오 설치
비주얼 스튜디오 사용
프로젝트란?
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
비주얼 스튜디오 사용
컴파일 오류
첫 번째 프로그램의 분석
// 첫 번째 예제 프로그램 주석(comment)이란 코드를 설명하는 글 2가지 종류의 주석 /* … */ // …
#include <iostream>
using namespace std; 변수 이름이나 함수 이름과 같은 수많은 이름(식별자)들 은 이름 공간(name space)이라고 하는 영역으로 분리되 어 저장
식별자를 사용하는 2가지 방법 std::cout << "Hello World!" << std::endl; using namespace std; cout << "Hello World!" << endl;
int main() 위의 문장은 main() 함수를 정의하는 문장
cout << "Hello World! " << endl ; 콘솔 화면에 “Hello World!"라는 문자열을 출력하고 이어 서 endl(end of line)을 출력하는 문장 Hello World!
return 0; 이 문장이 실행되면 main( ) 함수는 작업을 끝내고 외부로 0값을 반환
변수와 자료형 변수(variable)는 데이터(값)를 저장하는 상자
변수의 선언 int i; // 변수 i를 선언한다. i = 100; // 변수 i에 100을 저장한다. int i { 100 }; // int i=100;과 동일하다. string s { "hello" }; // string s="hello";과 동일하다.
자료형
자료형 정수형 부동소수점형
논리형 bool형의 변수는 참(true) 또는 거짓(false)만을 가질 수 있 다. #include <iostream> using namespace std; // 지금부터 이름공간으로 std를 사용한다. int main() { bool b; b = true; return 0; }
문자형 char ch; ch = 'a';
문자열 #include <iostream> #include <string> using namespace std; int main() { string s1 = "Good"; string s2 = "Morning"; string s3 = s1 + " " + s2 + "!"; cout << s3 << endl; return 0; }
문자열 연습 string s1 = "Good"; string s2 = "Bad"; bool b = (s1 == s2); s2 = s1 + " " + to_string(10) + "개"; cout << s2 << endl;
기호상수 const double TAX_RATE = 0.25; // 기호 상수 선언 int income=1000; income = income - TAX_RATE * income;
auto 키워드 자동 타입 추론(automatic type deduction) auto d = 1.0; auto add(int x, int y) { return x + y; } int main() auto sum = add(5, 6); 된다. return 0;
출력 int i; float f; cout << i; // 정수 형식으로 i의 값이 출력된다. cout << f; // 실수 형식으로 f의 값이 출력된다.
이름 입력받아서 출력하기 #include <iostream> #include <string> using namespace std; int main() { string name; cout << "이름을 입력하시오: "; cin >> name; cout << name << "을 환영합니다." << endl; return 0; }
입력 int i; cin >> i; // 정수를 읽어서 i에 저장 double f; cin >> f; // 실수를 읽어서 f에 저장
수식과 연산자
Lab: 최대한의 사탕 사기 철수가 가지고 있는 돈으로 최대한의 사탕을 사려고 한다. 현재 1000원이 있고 사탕의 가격이 300원이라고 하자. 최대한 살 수 있는 사탕의 개수와 나머지 돈은 얼마인가?
#include <iostream> using namespace std; int main() { int money; int candy_price; cout << "현재 가지고 있는 돈: "; cin >> money; cout << "캔디의 가격: "; cin >> candy_price; // 최대한 살 수 있는 사탕 수 int n_candies = money / candy_price; cout << "최대로 살 수 있는 캔디의 개수=" << n_candies << endl; // 사탕을 구입하고 남은 돈 int change = money % candy_price; cout << "캔디 구입 후 남은 돈=" << change << endl; return 0; }
Lab: 최대한의 사탕 사기 우리나라는 섭씨 온도를 사용하지만 미국에서는 화씨 온 도를 사용한다. 화씨 온도를 섭씨 온도로 바꾸는 프로그 램을 작성하여 보자.
#include <iostream> using namespace std; int main() { double f_temp = 60; double c_temp; c_temp = (5.0 / 9.0) * (f_temp - 32); cout << "화씨온도 " << f_temp << "도는 섭씨온도 " << c_temp << "입 니다." << endl; return 0; }
Lab: 주사위 게임 2개의 주사위를 던져서 주사위의 합을 표시하는 프로그 램을 작성해보자.
#include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { srand(time(NULL)); int dice1 = (rand() % 6) + 1; int dice2 = (rand() % 6) + 1; cout << "두 주사위 합=" << dice1 + dice2 << endl; return 0; }
Q & A