1. 데이터 타입과 변수
1.1 데이터 타입
C++에서 데이터 타입은 변수가 저장할 수 있는 값의 종류를 결정합니다. 데이터 타입을 선택할 때는 메모리 효율성과 정확성을 고려해야 합니다. 주요 데이터 타입은 다음과 같습니다:
정수형 (int): 정수를 저장합니다. 일반적으로 4바이트의 메모리를 사용합니다.
int age = 25; // 나이를 저장하는 변수
부동 소수점형 (float, double): 실수를 저장합니다.
float
는 4바이트,double
은 8바이트를 사용하며,double
이 더 높은 정밀도를 제공합니다.float weight = 65.5f; // 몸무게를 저장하는 변수 (float 형) double height = 175.3; // 키를 저장하는 변수 (double 형)
문자형 (char): 단일 문자를 저장합니다. 작은따옴표(
'
)를 사용하여 값을 할당합니다.char initial = 'A'; // 첫 글자를 저장하는 변수
불린형 (bool): 참(true) 또는 거짓(false)을 저장합니다. 조건문에서 많이 사용됩니다.
bool isStudent = true; // 학생 여부를 저장하는 변수
1.2 변수
변수는 데이터를 저장하는 메모리 공간입니다. 변수를 선언하고 초기화하는 방법은 다음과 같습니다:
#include <iostream>
using namespace std;
int main() {
int number; // 변수 선언
number = 10; // 값 할당
float pi = 3.14f; // 선언과 동시에 초기화
char grade = 'A';
cout << "Number: " << number << endl;
cout << "Pi value: " << pi << endl;
cout << "Grade: " << grade << endl;
return 0;
}
1.3 상수
상수는 값이 변경되지 않는 변수입니다. const
키워드를 사용하여 선언하며, 프로그램에서 고정된 값을 사용할 때 유용합니다:
const int MAX_USERS = 100; // 최대 사용자 수를 상수로 정의
상수를 사용하면 코드의 가독성과 유지보수성이 향상됩니다. 예를 들어, 프로그램 전체에서 사용되는 고정값을 상수로 정의하면 나중에 값을 변경해야 할 때 한 곳만 수정하면 됩니다.
2. 연산자
2.1 산술 연산자
산술 연산자는 기본적인 수학적 계산을 수행합니다. C++에서는 다음과 같은 산술 연산자를 제공합니다:
- 덧셈(
+
), 뺄셈(-
), 곱셈(*
), 나눗셈(/
), 나머지(%
)
int a = 10;
int b = 3;
int sum = a + b; // sum은 13
int difference = a - b; // difference는 7
int product = a * b; // product는 30
float quotient = (float)a / b; // quotient는 약 3.33
int remainder = a % b; // remainder는 1
2.2 대입 연산자
대입 연산자는 변수에 값을 할당합니다. 복합 대입 연산자를 사용하면 코드를 더 간결하게 작성할 수 있습니다:
int x = 5;
x += 2; // x는 이제 7 (x = x + 2와 동일)
x *= 3; // x는 이제 21 (x = x * 3과 동일)
2.3 비교 연산자
비교 연산자는 두 값을 비교하고 불리언(true/false) 결과를 반환합니다. 주로 조건문에서 사용됩니다:
if (a > b) {
std::cout << "a가 b보다 큽니다.";
} else if (a < b) {
std::cout << "a가 b보다 작습니다.";
} else {
std::cout << "a와 b가 같습니다.";
}
2.4 논리 연산자
논리 연산자는 조건문에서 여러 조건을 결합하거나 반전시키는 데 사용됩니다:
- AND (
&&
): 모든 조건이 참일 때 참 - OR (
||
): 하나 이상의 조건이 참일 때 참 - NOT (
!
): 조건을 반전
bool isAdult = true;
bool hasPermission = false;
if (isAdult && hasPermission) {
std::cout << "접근 허용";
} else {
std::cout << "접근 거부";
}
2.5 비트 연산자
비트 연산자는 이진수(bit)에 대한 직접적인 조작을 가능하게 합니다. 주로 하드웨어 제어나 데이터 압축 등에서 사용됩니다:
unsigned int num1 = 5; // 이진수로 표현하면 '0101'
unsigned int num2 = 3; // 이진수로 표현하면 '0011'
unsigned int andResult = num1 & num2; // andResult는 '0001' (1)
unsigned int orResult = num1 | num2; // orResult는 '0111' (7)
unsigned int xorResult = num1 ^ num2; // xorResult는 '0110' (6)
3. 제어문
3.1 조건문
조건문은 특정 조건이 참인지 거짓인지에 따라 다른 코드를 실행합니다. C++에서는 if
, else if
, else
, switch
문을 사용할 수 있습니다.
if 문: 조건이 참일 때 코드 블록을 실행합니다.
int score = 85; if (score >= 60) { std::cout << "합격입니다!" << std::endl; }
else if / else 문: 여러 조건을 검사할 수 있습니다.
int score = 45; if (score >= 60) { std::cout << "합격입니다!" << std::endl; } else if (score >= 40) { std::cout << "재시험입니다." << std::endl; } else { std::cout << "불합격입니다." << std::endl; }
switch 문: 여러 값 중 하나를 선택하여 해당하는 코드를 실행합니다.
char grade = 'B'; switch (grade) { case 'A': std::cout << "우수한 성적입니다!" << std::endl; break; case 'B': std::cout << "양호한 성적입니다." << std::endl; break; case 'C': std::cout << "보통 성적입니다." << std::endl; break; default: std::cout << "성적이 없습니다." << std::endl; }
3.2 반복문
반복문은 특정 코드 블록을 여러 번 실행합니다. C++에서는 for
, while
, do while
문을 사용할 수 있습니다.
for 문: 정해진 횟수만큼 반복합니다.
for (int i = 0; i < 5; ++i) { std::cout << i + 1 << ": 안녕하세요!" << std::endl; }
while 문: 조건이 참인 동안 계속 반복합니다.
int count = 0; while (count < 5) { count++; std::cout << "카운트: " << count << std::endl; }
do while 문: 최소 한 번 이상 코드를 실행한 후 조건을 검사합니다.
int num = -1; do { num++; if(num < 3){ continue; // 다음 루프 진행 } cout << "현재 숫자: " << num << std::endl; } while(num < 5);
4. 함수
4.1 함수의 정의와 사용
함수는 특정 작업을 수행하는 코드 블록입니다. 함수를 사용하면 코드를 재사용하고 가독성을 높일 수 있습니다:
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int num1 = 5;
int num2 = 10;
cout << "Sum: " << add(num1, num2) << endl;
return 0;
}
4.2 매개변수 전달 방식
값에 의한 전달: 원본 변수에는 영향 없음
void increment(int n) { n++; }
참조에 의한 전달: 원본 변수도 변경됨
void increment(int &n) { n++; }
4.3 함수 오버로딩
동일한 이름의 함수를 여러 개 정의할 수 있습니다:
int add(int a, int b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }
int main() {
cout << "Sum of two numbers: " << add(3, 4) << endl; // outputs 7
cout << "Sum of three numbers: " << add(1, 2, 3) << endl; // outputs 6
return 0;
}
4.4 리턴값과 void 형식
함수는 값을 반환하지 않을 수도 있습니다. 이 경우 void
키워드를 사용합니다:
void printMessage() {
cout << "Hello World!" << endl;
}
int main() {
printMessage(); // 메시지를 출력하지만 아무것도 반환하지 않음.
return 0;
}
5. 추가 예제와 실습
5.1 예제 1: 간단한 계산기
다음은 사용자로부터 두 숫자를 입력받아 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 간단한 계산기 프로그램입니다:
#include <iostream>
using namespace std;
int main() {
double num1, num2;
char op;
cout << "첫 번째 숫자를 입력하세요: ";
cin >> num1;
cout << "연산자를 입력하세요 (+, -, *, /): ";
cin >> op;
cout << "두 번째 숫자를 입력하세요: ";
cin >> num2;
switch (op) {
case '+':
cout << "결과: " << num1 + num2 << endl;
break;
case '-':
cout << "결과: " << num1 - num2 << endl;
break;
case '*':
cout << "결과: " << num1 * num2 << endl;
break;
case '/':
if (num2 != 0) {
cout << "결과: " << num1 / num2 << endl;
} else {
cout << "0으로 나눌 수 없습니다." << endl;
}
break;
default:
cout << "잘못된 연산자입니다." << endl;
}
return 0;
}
5.2 예제 2: 구구단 출력
다음은 사용자로부터 입력받은 숫자의 구구단을 출력하는 프로그램입니다:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "구구단을 출력할 숫자를 입력하세요: ";
cin >> num;
for (int i = 1; i <= 9; ++i) {
cout << num << " * " << i << " = " << num * i << endl;
}
return 0;
}
5.3 예제 3: 팩토리얼 계산
다음은 사용자로부터 입력받은 숫자의 팩토리얼을 계산하는 프로그램입니다:
#include <iostream>
using namespace std;
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int num;
cout << "팩토리얼을 계산할 숫자를 입력하세요: ";
cin >> num;
cout << num << "! = " << factorial(num) << endl;
return 0;
}
6. 결론
C++의 기본 개념인 데이터 타입, 변수, 연산자, 제어문, 함수를 이해하는 것은 프로그래밍의 기초를 다지는 데 매우 중요합니다. 이러한 개념을 잘 활용하면 더 복잡한 프로그램을 작성하는 데 큰 도움이 될 것입니다. 예제를 통해 직접 코드를 작성해보고, 다양한 상황에 적용해보는 것이 중요합니다. 다음 단계에서는 객체 지향 프로그래밍 및 클래스와 함께 어떻게 함수를 활용할 수 있는지 알아보겠습니다!
'프로그래밍 > C++' 카테고리의 다른 글
C++ 표준 라이브러리: STL 컨테이너, 반복자, 알고리즘, 함수 객체의 심화 활용 (0) | 2025.02.02 |
---|---|
객체 지향 프로그래밍(OOP)의 핵심 개념: 클래스, 객체, 생성자, 소멸자, 상속, 다형성 (0) | 2025.02.02 |
최신 C++ 기능으로 더 효율적이고 안전한 코드 작성하기 (1) | 2025.02.01 |
C++ 프로젝트 실습: 간단한 계산기 만들기부터 디버깅 및 테스트까지 (0) | 2025.02.01 |
C++ 고급 프로그래밍: 네임스페이스, 템플릿, 멀티스레딩의 활용 (0) | 2025.02.01 |