1. 데이터 타입 (Data Types)
데이터 타입은 프로그래밍에서 데이터를 표현하는 방법을 정의합니다. C++에서는 다양한 데이터 타입을 제공하며, 각 타입은 특정한 종류의 값을 저장하기 위해 설계되었습니다. 데이터 타입을 올바르게 이해하고 사용하는 것은 프로그램의 효율성과 정확성을 높이는 데 필수적입니다.
1.1 기본 데이터 타입
C++의 기본 데이터 타입은 크게 정수형, 실수형, 문자형, 부울형으로 나뉩니다.
1.1.1 정수형 (Integer)
정수형은 정수를 저장하는 데 사용됩니다. int
, short
, long
, unsigned int
등이 있으며, 각각의 크기와 표현 범위가 다릅니다.
#include <iostream>
using namespace std;
int main() {
int age = 25; // 일반적인 정수형
long population = 7800000000; // 더 큰 범위의 정수형
unsigned int positiveNumber = 100; // 음수가 아닌 정수
cout << "나이: " << age << endl;
cout << "세계 인구: " << population << endl;
cout << "양수: " << positiveNumber << endl;
return 0;
}
1.1.2 실수형 (Floating Point)
실수형은 소수점을 포함한 숫자를 저장합니다. float
와 double
이 있으며, double
이 더 높은 정밀도를 제공합니다.
#include <iostream>
using namespace std;
int main() {
float height = 5.9f; // float는 f 접미사를 사용
double pi = 3.14159; // double은 더 높은 정밀도
cout << "키: " << height << " feet" << endl;
cout << "원주율: " << pi << endl;
return 0;
}
1.1.3 문자형 (Character)
문자형은 단일 문자를 저장하는 데 사용됩니다. char
는 작은 따옴표('
)로 묶인 문자를 저장합니다.
#include <iostream>
using namespace std;
int main() {
char initial = 'A'; // 단일 문자 저장
cout << "이니셜: " << initial << endl;
return 0;
}
1.1.4 부울형 (Boolean)
부울형은 참(true
) 또는 거짓(false
) 값을 저장합니다. 조건문에서 주로 사용됩니다.
#include <iostream>
using namespace std;
int main() {
bool isStudent = true; // 참 또는 거짓 값 저장
cout << "학생인가요? " << (isStudent ? "네" : "아니오") << endl;
return 0;
}
1.2 사용자 정의 데이터 타입
기본 데이터 타입 외에도 C++에서는 사용자 정의 데이터 타입을 만들 수 있습니다. 이를 통해 더 복잡한 데이터를 효과적으로 관리할 수 있습니다.
1.2.1 구조체 (Struct)
구조체는 여러 데이터 타입을 하나로 묶는 방법입니다. 예를 들어, 사람의 이름과 나이를 하나의 구조체로 묶을 수 있습니다.
#include <iostream>
#include <string>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
Person person1;
person1.name = "John";
person1.age = 30;
cout << "이름: " << person1.name << ", 나이: " << person1.age << endl;
return 0;
}
1.2.2 열거형 (Enum)
열거형은 관련된 상수에 이름을 부여하여 코드의 가독성을 높입니다. 예를 들어, 색상을 나타내는 상수를 정의할 수 있습니다.
#include <iostream>
using namespace std;
enum Color { RED, GREEN, BLUE };
int main() {
Color favoriteColor = GREEN;
switch (favoriteColor) {
case RED: cout << "좋아하는 색상: 빨강" << endl; break;
case GREEN: cout << "좋아하는 색상: 초록" << endl; break;
case BLUE: cout << "좋아하는 색상: 파랑" << endl; break;
}
return 0;
}
1.3 형변환 (Type Casting)
형변환은 한 데이터 타입을 다른 데이터 타입으로 변환하는 과정입니다. C++에서는 암묵적 형변환과 명시적 형변환이 있습니다.
1.3.1 암묵적 형변환
컴파일러가 자동으로 형변환을 수행합니다.
#include <iostream>
using namespace std;
int main() {
int a = 10;
double b = a; // int -> double로 자동 변환
cout << "a: " << a << ", b: " << b << endl;
return 0;
}
1.3.2 명시적 형변환
개발자가 직접 형변환을 지정합니다. static_cast
를 사용하는 것이 일반적입니다.
#include <iostream>
using namespace std;
int main() {
double c = 9.8;
int d = static_cast<int>(c); // double -> int로 변환
cout << "c: " << c << ", d: " << d << endl;
return 0;
}
2. 변수와 상수 (Variables and Constants)
2.1 변수 (Variables)
변수는 데이터를 저장하는 메모리 공간입니다. 프로그램 실행 중에 값이 변경될 수 있습니다. 변수를 사용하면 데이터를 임시로 저장하고 필요할 때 다시 사용할 수 있습니다.
#include <iostream>
using namespace std;
int main() {
int age = 25; // 변수 선언 및 초기화
cout << "나이는: " << age << endl; // 출력: 나이는: 25
age = 30; // 변수 값 변경
cout << "변경된 나이는: " << age << endl; // 출력: 변경된 나이는: 30
return 0;
}
2.1.1 변수의 특징
- 값 변경 가능.
- 다양한 데이터 타입(int, float, char 등)으로 선언 가능.
- 프로그램의 유연성을 높임.
2.2 상수 (Constants)
상수는 한 번 설정된 값을 변경할 수 없습니다. const
키워드를 사용하여 정의하며, 주로 고정된 값이나 매직 넘버 대신 사용됩니다.
#include <iostream>
using namespace std;
int main() {
const float PI = 3.14; // 상수 정의
cout << "원주율: " << PI << endl; // 출력: 원주율: 3.14
// 다음 줄은 오류가 발생함 (PI는 수정 불가능)
// PI = 3.14159;
return 0;
}
2.2.1 상수의 특징
- 값 변경 불가능.
- 코드의 가독성과 안정성을 높임.
3. 연산자 (Operators)
연산자는 데이터와 변수를 조작하는 데 사용됩니다. C++에서는 다양한 연산자가 제공되며, 각각의 역할과 사용법이 다릅니다.
3.1 산술 연산자
산술 연산자는 기본적인 수학적 계산을 수행합니다.
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "덧셈: " << (a + b) << endl; // 13
cout << "뺄셈: " << (a - b) << endl; // 7
cout << "곱셈: " << (a * b) << endl; // 30
cout << "나눗셈: " << (a / b) << endl; // 3
cout << "모듈로: " << (a % b) << endl; // 1
return 0;
}
3.2 비교 연산자
비교 연산자는 두 값을 비교하여 불리언(true
또는 false
) 값을 반환합니다.
#include <iostream>
using namespace std;
int main() {
int x = 5, y = 10;
cout << (x == y ? "같습니다." : "다릅니다.") << endl; // 다릅니다.
cout << (x < y ? "x는 y보다 작습니다." : "x는 y보다 크거나 같습니다.") << endl; // x는 y보다 작습니다.
return 0;
}
3.3 논리 연산자
논리 연산자는 여러 조건을 결합하거나 반전시키는 데 사용됩니다.
#include <iostream>
using namespace std;
int main() {
bool a = true, b = false;
if (a && !b) {
cout << "조건 만족" << endl; // 조건 만족
}
if (a || b) {
cout << "하나 이상의 조건 만족" << endl; // 하나 이상의 조건 만족
}
return 0;
}
3.4 대입 연산자
대입 연산자는 변수에 값을 할당할 때 사용됩니다. 복합 대입 연산자도 있습니다.
#include <iostream>
using namespace std;
int main() {
int num = 5;
num += 2; // num은 이제 7
cout << "num: " << num << endl; // 출력: num: 7
num *= 3; // num은 이제 21
cout << "num: " << num << endl; // 출력: num: 21
return 0;
}
4. 조건문과 반복문 (Conditionals and Loops)
4.1 조건문 (Conditional Statements)
조건문은 주어진 조건이 참인지 거짓인지에 따라 프로그램이 다른 경로를 선택하도록 합니다.
4.1.1 if 문
#include <iostream>
using namespace std;
int main() {
int number = 10;
if (number > 0) {
cout << "양수입니다." << endl;
} else if (number < 0) {
cout << "음수입니다." << endl;
} else {
cout << "제로입니다." << endl;
}
return 0;
}
4.1.2 switch 문
#include <iostream>
using namespace std;
int main() {
char grade = 'B';
switch (grade) {
case 'A': cout << "우수" << endl; break;
case 'B': cout << "좋음" << endl; break;
case 'C': cout << "보통" << endl; break;
default: cout << "기타" << endl;
}
return 0;
}
4.2 반복문 (Loops)
반복문은 지정된 횟수만큼 또는 특정 조건이 만족될 때까지 코드를 반복 실행합니다.
4.2.1 for 루프
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
cout << "안녕하세요! (" << i + 1 << "번째)" << endl;
}
return 0;
}
4.2.2 while 루프
#include <iostream>
using namespace std;
int main() {
int count = 0;
while (count < 5) {
cout << "카운트: " << count + 1 << endl;
count++;
}
return 0;
}
4.2.3 do-while 루프
#include <iostream>
using namespace std;
int main() {
int j = 0;
do {
cout << "j값: " << j + 1 << endl;
j++;
} while (j < 3);
return 0;
}
5. 실습 예제
5.1 나이 계산 프로그램
#include <iostream>
using namespace std;
int main() {
int birthYear, currentYear = 2023;
cout << "출생 연도를 입력하세요: ";
cin >> birthYear;
int age = currentYear - birthYear;
cout << "나이는 " << age << "세입니다." << endl;
return 0;
}
5.2 성적 평균 계산 프로그램
#include <iostream>
using namespace std;
int main() {
int score1, score2, score3;
cout << "세 과목의 점수를 입력하세요: ";
cin >> score1 >> score2 >> score3;
double average = (score1 + score2 + score3) / 3.0;
cout << "평균 점수는 " << average << "입니다." << endl;
return 0;
}
6. 추가 개념 및 심화 예제
6.1 배열 (Arrays)
배열은 동일한 데이터 타입의 여러 값을 저장하는 데 사용됩니다. 배열은 고정된 크기를 가지며, 인덱스를 통해 각 요소에 접근할 수 있습니다.
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {1, 2, 3, 4, 5}; // 크기가 5인 정수형 배열
for (int i = 0; i < 5; i++) {
cout << "numbers[" << i << "] = " << numbers[i] << endl;
}
return 0;
}
6.2 포인터 (Pointers)
포인터는 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리 주소를 직접 조작할 수 있으며, 동적 메모리 할당과 같은 고급 기능을 구현할 수 있습니다.
#include <iostream>
using namespace std;
int main() {
int num = 10;
int* ptr = # // num의 주소를 저장
cout << "num의 값: " << num << endl;
cout << "num의 주소: " << ptr << endl;
cout << "포인터를 통해 접근한 값: " << *ptr << endl;
return 0;
}
6.3 함수 (Functions)
함수는 특정 작업을 수행하는 코드 블록입니다. 함수를 사용하면 코드를 재사용하고 모듈화할 수 있습니다.
#include <iostream>
using namespace std;
// 두 수를 더하는 함수
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3);
cout << "5 + 3 = " << result << endl;
return 0;
}
6.4 클래스 (Classes)
클래스는 객체 지향 프로그래밍의 핵심 개념입니다. 클래스를 사용하면 데이터와 함수를 하나로 묶어 캡슐화할 수 있습니다.
#include <iostream>
using namespace std;
class Rectangle {
private:
int width, height;
public:
Rectangle(int w, int h) : width(w), height(h) {}
int area() {
return width * height;
}
};
int main() {
Rectangle rect(5, 10);
cout << "사각형의 면적: " << rect.area() << endl;
return 0;
}
7. 결론
C++의 기본 문법인 데이터 타입, 변수, 상수, 연산자, 조건문 및 반복문은 프로그래밍의 핵심 요소입니다. 이러한 개념들을 이해하고 활용하면 더 복잡한 프로그램을 작성하는 데 큰 도움이 됩니다. 예제를 통해 직접 코드를 작성해 보며 익숙해지는 것이 중요합니다. C++ 프로그래밍의 기초를 탄탄히 다져보세요! 추가적으로 배열, 포인터, 함수, 클래스와 같은 고급 개념도 학습하면 더욱 강력한 프로그램을 작성할 수 있습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ 메모리 관리: 동적 메모리 할당과 해제의 중요성 (0) | 2025.02.01 |
---|---|
C++에서 포인터와 참조자의 이해와 활용 (0) | 2025.02.01 |
객체 지향 프로그래밍(OOP)의 핵심 개념: 클래스, 객체, 상속, 다형성, 캡슐화, 추상화 (1) | 2025.01.31 |
C++ 함수: 정의, 호출, 매개변수, 반환값, 그리고 오버로딩 (0) | 2025.01.31 |
C++ 프로그래밍 입문: 역사, 특징, 설치 및 첫 번째 프로그램 (0) | 2025.01.31 |