C++ Primer

서론

kang057 2024. 6. 24. 17:45

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