C++ 개발 환경 구축
프로젝트 구조 및 빌드 시스템
일반적인 C++ 프로젝트 구조는 다음과 같습니다. include 폴더에는 헤더 파일이 포함되고 src 폴더에는 소스 코드 파일이 포함됩니다. Makefile은 프로젝트를 빌드하는 데 사용되는 빌드 시스템 파일입니다.
project/
│
├── include/
│ ├── header1.h
│ └── header2.h
│
├── src/
│ ├── main.cpp
│ ├── source1.cpp
│ └── source2.cpp
│
└── Makefile
C++ 프로그래밍 기초
변수 및 데이터 유형
변수는 데이터를 저장하는 공간으로, C++에서는 변수를 선언할 때 데이터 타입을 지정해야 한다. 주요 데이터 유형은 다음과 같습니다.
정수: 정수
뜨다: 뜨다
double: 실수(float보다 큰 범위)
문자: 문자
부울: 참/거짓(참/거짓)
int age = 30;
float weight = 70.5;
double height = 180.25;
char initial="A";
bool is_happy = true;
참고로 std::cout과 std::endl은 C++의 표준 라이브러리인 iostream에 정의된 객체로 콘솔 입력과 출력에 사용된다. std::cout은 iostream 라이브러리의 일부이며 << 연산자를 사용하여 식의 결과를 인쇄합니다. std::endl은 개행 문자를 콘솔 출력 스트림에 삽입하고 버퍼를 지우는 조작기입니다.
연산자 및 표현식
연산자의 종류에는 산술 연산자, 비교 연산자 및 논리 연산자가 있습니다.
int a = 10;
int b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int product = a * b; // 30
int quotient = a / b; // 3 (정수 나눗셈)
int remainder = a % b; // 1
int x = 5;
int y = 10;
bool isEqual = (x == y); // false
bool isNotEqual = (x != y); // true
bool isGreater = (x > y); // false
bool isLess = (x < y); // true
bool isGreaterOrEqual = (x >= y); // false
bool isLessOrEqual = (x <= y); // true
bool a = true;
bool b = false;
bool result1 = a && b; // false (AND 연산)
bool result2 = a || b; // true (OR 연산)
bool result3 = !a; // false (NOT 연산)
int num = 10;
num += 5; // num = num + 5; // 15
num -= 3; // num = num - 3; // 12
num *= 2; // num = num * 2; // 24
num /= 4; // num = num / 4; // 6
num %= 3; // num = num % 3; // 0
제어 흐름문(조건문, 루프문)
제어 흐름 구조를 사용하면 프로그램 실행 순서를 변경할 수 있습니다. 조건문(if, switch)과 반복문(for, while, do-while)이 대표적인 흐름제어문이다.
if-else if-else 문: 여러 조건을 순차적으로 확인하고 해당 조건에 해당하는 코드 블록만 실행합니다.
int score = 85;
if (score >= 90) {
std::cout << "Grade: A" << std::endl;
} else if (score >= 80) {
std::cout << "Grade: B" << std::endl;
} else if (score >= 70) {
std::cout << "Grade: C" << std::endl;
} else {
std::cout << "Grade: F" << std::endl;
}
switch-case 문: 주어진 표현식의 값에 따라 일치하는 case 문을 실행하고, 일치하는 값이 없으면 default 문을 실행합니다.
char grade="B";
switch (grade) {
case 'A':
std::cout << "Excellent!" << std::endl;
break;
case 'B':
std::cout << "Good job!" << std::endl;
break;
case 'C':
std::cout << "Well done!" << std::endl;
break;
default:
std::cout << "Invalid grade." << std::endl;
}
for 문: 초기화, 조건, 증분 식을 사용하여 코드 블록을 반복적으로 실행합니다.
for (int i = 0; i < 5; ++i) {
std::cout << "Iteration: " << i << std::endl;
}
while 문: 조건이 참인 동안 코드 블록을 반복적으로 실행합니다.
int counter = 0;
while (counter < 5) {
std::cout << "Counter: " << counter << std::endl;
++counter;
}
do-while 문: 코드 블록을 적어도 한 번 실행한 다음 조건이 참인 동안 계속 실행합니다.
int number;
do {
std::cout << "Enter a number between 1 and 10: ";
std::cin >> number;
} while (number < 1 || number > 10);
std::cout << "You entered: " << number << std::endl;
중첩된 루프: 다른 루프 안에 하나의 루프가 포함된 구조입니다. 다차원 배열 및 행렬과 같은 복잡한 구조를 처리할 때 사용됩니다.
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
std::cout << "(" << i << ", " << j << ") ";
}
std::cout << std::endl;
}
break: 루프 내에서 break 문을 만나면 루프가 즉시 종료됩니다.
for (int i = 0; i < 10; ++i) {
if (i == 5) {
break;
}
std::cout << "i: " << i << std::endl;
}
// 출력: 0 1 2 3 4
계속: 루프 내에서 계속 문을 만나면 현재 반복의 나머지 코드를 건너뛰고 다음 반복으로 이동합니다.
for (int i = 0; i < 10; ++i) {
if (i % 2 == 1) {
continue;
}
std::cout << "i: " << i << std::endl;
}
// 출력: 0 2 4 6 8
