1.1 간단한 C++ 프로그램 만들기
● 모든 c++은 프로그램은 하나 이상의 함수가 있는데 그중 main 함수는 반드시 하나가 있어야 한다.
● 함수 정의의 네가지 요소 : 반환타입, 함수이름, 매개변수 목록, 함수 본체
1.1.1 프로그램을 컴파일하고 실행하기
● 프로그램 소스 파일 이름 규약
○ 프로그램 파일 = 소스 파일
○ 확장자 규약 : .cc, .cxx, .cpp, .cp, c
1.2 입출력 처음 살펴보기
● 표준 입축력 객체
○ cin : 포준 입력
○ cout : 표준 출력
○ cerr : 표준 오류
○ clog : 프로그램 실행에 대한 일반 정보를 표시하는 데 사용
#include <iostream>
int main() {
std::cout << "Enter two Numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << std::endl;
return 0;
}
● 첫 줄은 컴파일러에 iostream 라이브러리를 사용하겠다고 알리는 것으로 꺾쇠 괄호안의 이름은 헤더를 나타낸다.
● 스트림에 출력하기
○ std::cout << "Enter two numbers: " << std::endl;는 표현식을 실행한다. 표현식은 피연산자 하나 이상과 연산자 하나로 구성된다. <<연산자를 사용해 종출력에 메시지를 출력
○ std::cout << "Enter two numbers: " - 이 메세지는 문자열인데 문자열이란 큰따옴표로 둘러싼 일련의 문자이다.
○ std::cout << std::endl; - 이 문장은 endl을 출력한다. 이 연산자는 조작자라는 특별한 값이다. 이것은 현재 줄을 마치고 버퍼를 비워준다.
● 표준 라이브러리 이름 사용하기
○ 접두어 std::는 cout와 endl을 std라는 네임스페이스 안에 정의
○ ::연산자 : 범위 지정 연산자
1.3 주석문에 대해
● 주석문 : 프로그래머가 프로그램을 읽는데 도움을 주고 알고리듬 요약, 변수 목적 밝히기, 코드 명확하게 하기
● 종류 : // , /**/
● 쌍 주석문은 중첩 불가
1.4 제어 흐름
● 일반적으로 문장은 순차적으로 실행됨 그러나 더욱 복잡한 실행 경로를 처리하도록 다양한 제어 흐름을 제공
1.4.1 while 문
● while 문은 지정한 조건이 참이 될 떄까지 작은 구역을 반복해 실행
#include <iostream>
int main() {
int sum = 0, val = 1;
while (val <= 10) {
sum += val;
++val;
}
std::cout << "Sum of 1 to 10 is " << sum << std::endl;
return 0;
}
● 조건이 거짓일 때까지 조건 확인과 문장 실행을 번갈아 가며 계속한다.
● 구역은 중괄호로 둘러싼 일련의 문장으로 구역 안에 문장이 없을 수도 있음.
1.4.2 for문
● 조건에서 변수를 사용하고 그 변수를 본체에서 증가시키는 이러한 유형이 흔해서 for문을 정의함
#include <iostream>
int main() {
int sum = 0;
for (int val = 1; val <= 10; ++val)
sum += val;
std::cout << "Sum of 1 to 10 is " << sum << std::endl;
return 0;
}
● 헤더( 초기문, 조건, 표현식으로 구성)와 본체 두 부분으로 구성
1.4.3 임의 개수 입력 읽기
#include <iostream>
int main() {
int sum = 0, value = 0;
while (std::cin >> value)
sum += value;
std::cout << "Sum is " << sum << std::endl;
return 0;
}
● 조건으로 istream을 사용하면 결과적으로 스트림 상태를 확인하는데 스트림이 유효하면 시험 성공.
파일 끝 도달 or 잘못된 입력을 만나면 거짓 반환.
● 대표적인 컴파일 오류 : 문법, 타입, 선언
1.4.4 if문
#include <iostream>
int main() {
int currVal = 0, val = 0;
if (std::cin >> currVal) {
int cnt = 1;
while (std::cin >> val) {
if (val == currVal)
++cnt;
else {
std::cout << currVal << " occurs" << cnt << " times" << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs " << cnt << " times" << std::endl;
}
return 0;
}
● 딱히 뭐 없음
1.5 클래스 소개
● C++에서는 클래스를 사용해 데이터 구조 정의
● C++에서 주된 설계 관점은 내장 타입과 똑같이 행동하는 "클래스 타입"을 정의
● 클래스 필요 세가지 : 이름, 정의한 곳, 할 수 있는 연산
1.5.1 Sales_item 클래스
● 모든 클래스는 다입을 정의하며, 타입 이름은 클래스 이름과 같다.
● Sales_item item;에서 item은 Sales_item의 객체임
#include <iostream>
#include "Sales_item.h"
int main() {
Sales_item book;
std::cin >> book;
std::cout << book << std::endl;
return 0;
}
● 표준 : < > , 비표준 : " "
● Sales_item 더하기
#include <iostream>
#include "Sales_item"
int main() {
Sales_item item1, item2;
std::cin >> item1 >> item2;
std::cout << item1 + item2 << std::endl;
return 0;
}
● 파일 방향 변경 사용하기
addItems <infile >outfile
1.5.2 멤버 함수 처음 살펴보기
#include <iostream>
#include "Sales_item.h"
int main() {
Sales_item item1, item2;
std::cin >> item1 >> item2;
if (item1.isbn() == item2.isbn()) {
std::cout << item1 + item2 << std::endl;
return 0;
} else {
std::cerr << "Data must refer to same ISBM" << std::endl;
return -1;
}
}
● item1.isbn()에서 isbn은 멤버 함수를 호출, 멤버 함수느 클래스에 정의한 함수이며 "메서드"라고 함
○ '.'연산자를 통해 'item1 객체의 isbn 멤버'를 원한다는 것을 나타낸다.
1.6
#include <iostream>
#include "Sales_item.h"
int main() {
Sales_item total;
if (std::con >> total) {
Sales_item trans;
while (std::cin >> trans) {
if (total.isbn() == trans.isbn())
total += trans;
else {
std::cout << total << std::endl;
total = trans;
}
}
std::cout << total << std::endl;
} else {
std::cerr << "No data?" << std::endl;
return -1;
}
return 0;
}
'C++ Primer' 카테고리의 다른 글
함수 (0) | 2024.07.02 |
---|---|
문장 (0) | 2024.06.29 |
표현식 (0) | 2024.06.26 |
문자열, 벡터와 배열 (0) | 2024.06.26 |
변수와 기본 타입 (0) | 2024.06.25 |