C++ 기초 프로그래밍 가이드
프로그래밍을 처음 시작하는 분들을 위한 C++ 입문 가이드입니다. 변수, 출력, 디버깅의 기초를 차근차근 배워보겠습니다.
1. 프로그램의 구조
C++ 프로그램은 반드시 main 함수로 시작됩니다. 이는 프로그램의 진입점(entry point)이며, 전체 프로그램에서 반드시 한 개만 존재해야 합니다.
왜 main 함수가 필요한가요?
컴퓨터는 프로그램을 실행할 때 "어디서부터 시작해야 하지?"라는 질문을 합니다. C++에서는 항상 main 함수부터 시작한다는 약속이 정해져 있습니다. 마치 책을 읽을 때 첫 페이지부터 시작하는 것처럼, 프로그램도 main 함수부터 시작합니다.
기본 구조 예시
#include <iostream> // 입출력을 위한 표준 라이브러리
int main()
{
std::cout << "안녕하세요";
return 0;
}
C++
복사
각 줄의 의미:
•
#include <iostream>: 콘솔 입출력 기능을 제공하는 헤더 파일입니다. cout을 사용하려면 반드시 필요합니다.
•
int main(): 프로그램의 시작을 알리는 메인 함수입니다. 모든 C++ 프로그램은 여기서 시작합니다.
•
std::cout << "안녕하세요";: 화면에 "안녕하세요"를 출력하는 명령입니다.
•
return 0;: 프로그램이 정상 종료되었음을 운영체제에 알립니다. 0은 "문제없이 잘 끝났다"는 의미입니다.
실생활 비유:
프로그램 구조는 요리 레시피와 비슷합니다.
•
#include는 필요한 재료와 도구를 준비하는 것
•
main 함수는 요리를 시작하는 것
•
함수 안의 명령들은 요리 순서
•
return 0은 요리 완성
2. 출력하기 (cout)
C++에서는 콘솔(검은색 화면)에 문자를 출력할 때 std::cout을 사용합니다.
cout이란?
•
console output의 줄임말입니다.
•
"콘솔로 출력하라"는 의미입니다.
•
<< 기호는 "출력 방향"을 나타냅니다. cout 쪽으로 데이터를 보낸다는 뜻입니다.
출력 예시
한 줄에 여러 내용 출력:
std::cout << "안녕하세요" << "반갑습니다";
// 결과: 안녕하세요반갑습니다
C++
복사
<< 기호를 여러 번 사용하면 내용을 이어서 출력할 수 있습니다. 마치 기차 칸을 연결하듯이 출력 내용을 연결합니다.
줄바꿈 출력 (\n 개행문자 사용):
std::cout << "안녕하세요\n" << "반갑습니다\n";
// 결과:
// 안녕하세요
// 반갑습니다
C++
복사
\n은 "다음 줄로 이동"을 의미하는 특수 문자입니다. 엔터를 누른 것과 같은 효과입니다.
띄어쓰기 출력:
std::cout << "Hello" << " " << "World";
// 결과: Hello World
C++
복사
띄어쓰기는 " " 처럼 공백 문자를 명시적으로 출력해야 합니다. 자동으로 띄어쓰기가 되지 않습니다.
3. 변수
변수의 개념
변수란, 하나의 값을 저장할 수 있는 메모리 공간을 의미합니다.
실생활 비유:
변수는 라벨이 붙은 상자와 같습니다.
•
상자 이름(변수명): age, score, number 등
•
상자 안의 내용물(값): 10, 95, 3.14 등
•
상자 크기(타입): int(정수), float(실수) 등
예를 들어, int age = 25;는 "age라는 이름의 정수형 상자를 만들고, 그 안에 25를 넣는다"는 의미입니다.
왜 변수가 필요한가요?
1.
재사용: 같은 값을 여러 번 사용할 때 편리합니다.
2.
변경 가능: 프로그램 실행 중에 값을 바꿀 수 있습니다.
3.
의미 전달: a + b보다 width + height가 더 이해하기 쉽습니다.
변수 선언과 초기화
int age; // 변수 선언 (상자를 만듦)
age = 3; // 변수에 값을 대입 (상자에 값을 넣음)
int number = 10; // 선언과 동시에 초기화 (상자를 만들면서 값을 바로 넣음)
C++
복사
용어 정리:
•
선언(Declaration): 변수를 만드는 것. 메모리 공간을 확보합니다.
•
초기화(Initialization): 변수에 처음으로 값을 넣는 것.
•
대입(Assignment): 이미 선언된 변수에 새로운 값을 넣는 것.
권장 사항:
변수는 선언과 동시에 초기화하는 것이 좋습니다. 초기화하지 않은 변수는 쓰레기 값(garbage value)을 가지고 있어서 예상치 못한 오류가 발생할 수 있습니다.
int a; // ❌ 나쁜 예: 초기화 안 함
int b = 0; // ✅ 좋은 예: 초기화함
C++
복사
변수명 규칙
반드시 지켜야 할 규칙:
1.
문자 또는 밑줄로 시작: age, _count는 가능, 3age는 불가능
2.
대소문자 구분: age와 Age는 완전히 다른 변수입니다
3.
띄어쓰기 금지: my age는 불가능, myAge 또는 my_age로 써야 합니다
4.
예약어 사용 금지: int, return, if 등 C++ 키워드는 변수명으로 사용 불가
5.
중복 금지: 같은 범위에서 같은 이름의 변수를 두 번 선언할 수 없습니다
변수명 작성 스타일:
// 카멜 표기법 (camelCase)
int myAge = 25;
int studentScore = 95;
// 스네이크 표기법 (snake_case)
int my_age = 25;
int student_score = 95;
// 헝가리안 표기법 (Hungarian notation)
int nAge = 25; // n은 number
float fScore = 95.5f; // f는 float
C++
복사
좋은 변수명의 특징:
•
의미가 명확함: a보다 age가 좋습니다
•
너무 길지 않음: studentTestScoreFromLastWeek보다 lastTestScore가 좋습니다
•
일관성 유지: 한 프로젝트에서는 하나의 스타일만 사용합니다
올바른 변수 선언과 사용 예시
#include <iostream>
int main()
{
int a = 10;
int b = 20;
std::cout << "a의 값은: " << a << "\\n";
std::cout << "b의 값은: " << b << "\\n";
return 0;
}
C++
복사
잘못된 변수 사용 예시
변수는 반드시 선언 후 사용해야 합니다.
int a = 0;
c = 0; // 오류: c가 선언되기 전에 사용됨
int c;
C++
복사
4. 산술 연산
C++에서 지원하는 기본적인 산술 연산자는 다음과 같습니다. 수학 계산기와 비슷하지만 몇 가지 주의할 점이 있습니다.
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기(몫) |
% | 나머지 |
산술 연산 예제
#include <iostream>
int main()
{
int a = 5;
int b = 2;
std::cout << "a + b = " << a + b << std::endl;
std::cout << "a - b = " << a - b << std::endl;
std::cout << "a * b = " << a * b << std::endl;
std::cout << "a / b = " << a / b << std::endl;
std::cout << "a % b = " << a % b << std::endl;
return 0;
}
// 결과
// a + b = 7
// a - b = 3
// a * b = 10
// a / b = 2
// a % b = 1
C++
복사
정수 나눗셈의 중요한 특징:
C++에서 정수끼리 나눗셈을 하면 소수점 아래를 버리고 몫만 반환합니다.
int result1 = 5 / 2; // 2 (2.5가 아님!)
int result2 = 10 / 3; // 3 (3.33...이 아님!)
float result3 = 5.0 / 2.0; // 2.5 (실수 나눗셈)
float result4 = 5 / 2.0; // 2.5 (하나라도 실수면 실수 나눗셈)
C++
복사
나머지 연산자의 활용:
나머지 연산자(%)는 매우 유용합니다.
// 짝수/홀수 판별
int num = 7;
if (num % 2 == 0) {
// 짝수
} else {
// 홀수
}
// 10의 자리 분리
int number = 125;
int ones = number % 10; // 5 (일의 자리)
int tens = (number / 10) % 10; // 2 (십의 자리)
C++
복사
5. 할당 연산자와 동등 비교 연산자
할당 연산자 (=)
의미: 오른쪽의 값을 왼쪽의 변수에 대입합니다.
int a;
a = 5; // a에 5를 할당 (저장)
C++
복사
주의: 수학의 등호와는 다릅니다!
int x = 10;
x = x + 5; // 수학에서는 말이 안 되지만, 프로그래밍에서는 가능!
// "x의 현재 값에 5를 더한 결과를 x에 다시 저장하라"
// x는 이제 15가 됨
C++
복사
동등 비교 연산자 (==)
의미: 두 값이 서로 같은지 비교합니다. 결과는 참(true) 또는 거짓(false)입니다.
if (a == 5)
{
std::cout << "a는 5입니다." << std::endl;
}
C++
복사
자주 하는 실수
int score = 100;
// ❌ 잘못된 코드
if (score = 90) { // 대입 연산자를 사용함 (항상 참이 됨)
cout << "90점입니다";
}
// ✅ 올바른 코드
if (score == 90) { // 비교 연산자를 사용함
cout << "90점입니다";
}
C++
복사
= vs == 비교표:
•
= : 값을 저장한다 (할당)
•
== : 값이 같은지 확인한다 (비교)
이 둘을 혼동하면 찾기 어려운 버그가 발생하므로 항상 주의해야 합니다!
복합 대입 연산자
더 편리하게 사용할 수 있는 연산자들도 있습니다.
int a = 10;
a += 5; // a = a + 5와 같음 (a는 15가 됨)
a -= 3; // a = a - 3와 같음 (a는 12가 됨)
a *= 2; // a = a * 2와 같음 (a는 24가 됨)
a /= 4; // a = a / 4와 같음 (a는 6이 됨)
a %= 4; // a = a % 4와 같음 (a는 2가 됨)
C++
복사
증감 연산자
int count = 5;
count++; // count = count + 1과 같음 (6이 됨)
count--; // count = count - 1과 같음 (5가 됨)
++count; // count를 먼저 증가시킴
count++; // count를 나중에 증가시킴
// 차이점 예시
int a = 5;
int b = a++; // b = 5, a = 6 (a를 b에 대입한 후 증가)
int c = 5;
int d = ++c; // d = 6, c = 6 (c를 증가시킨 후 d에 대입)
C++
복사
이 가이드를 기초로 C++ 프로그래밍의 기본 개념을 정확히 익히고, 앞으로의 학습에 튼튼한 기반을 쌓아가길 바랍니다.
숙제 연습문제
문제 1번
#include <iostream>
using namespace std;
int main()
{
cout << "HELLO WORLD";
return 0;
}
C++
복사
출력 예시
HELLO WORLD
문제 2번
다음과 같이 출력 해 주세요
출력 예시
@@@@
main()
std::cout << “@@@@”;
문제 3번
다음과 같이 출력 해 주세요
출력 예시
123###456
문제 4번
다음과 같이 출력 해 주세요
(## 과 ## 사이 띄어쓰기 3칸)
출력 예시
CODING
## ##
std::cout “CODING”;
std::cout << std::endl;
std::cout << “## ##”;
문제 5번
아래와 같이 출력 해주세요.
출력 예시
5 4 3 2 1 GO!
문제 6번
변수를 하나 만들고, 변수에 값으로 5를 넣어주세요
그리고 그 변수값을 출력 해 주세요.
출력 예시
5
문제 7번
변수 t를 만들고, 변수값 5를 넣어주세요.
그리고 아래와 같이 출력 해주세요.
출력 예시
t에서 1씩 증가=5 6 7
t에서 2씩 감소=5 3 1
문제 8번
a, b, c 변수 3개를 만들어주세요. 그리고 아래 그림처럼 변수에 값을 채우고 출력 해주세요.
(띄어쓰기를 정확히 맞추어주셔야합니다)
출력 예시
a, b, c 값은 각각 a는 5, b는 -1, c는 2 입니다
문제 9번
변수 a와 b를 만들고, 각각 a에는 7을 b에는 2를 넣어 주세요.
그리고 a와 b의 합과 차를 출력 해주세요.
출력 예시
a+b=9
a-b=5
문제 10번
변수 k와 g를 선언하고, k에는 8을 g에는 4를 채워주세요.
그리고 두 변수를 곱한값과 나눈 값을 아래와 같이 출력 해주세요.
출력 예시
8*4=32
8/4=2
문제 11번
변수 a, b, c, d 를 선언해 주세요.
변수값 3, 5, 3, 4를 순서대로 아래와 같이 넣어주세요.
수식 ((a+b)*c)/d 의 값을 출력해 주세요.
출력 예시
6
문제 12번
변수 a를 선언해주세요.
변수 a에 8을 넣어주세요.
a를 5번 곱한 값, a의 5승의 값을 출력해 주세요.
출력 예시
32768
문제 13번
아래의 소스코드를 Visual Studio에 복사 해 주세요.
그리고 F10을 눌러 트레이스 연습을 해 주시면 됩니다.
특히 조사식에는 변수 a를 등록해서 a값이 어떻게 변하는지 확인 해 보셔야 합니다.
트레이스의 단축키 : F10
트레이스 종료 단축키 : Shift + F5
#include <iostream>
using namespace std;
int main()
{
int a;
a = 8;
cout << a;
a = a + 1;
a++;
a = 3;
a = a + 1;
a++;
cout << "a값은 : " << a << endl;
a = a + 1;
a++;
cout << "마지막 a값은 : " << a << endl;
return 0;
}
C++
복사
소스코드 작성란 안에는 위의 소스코드를 복사하여 넣으시면 됩니다.
문제 14번
변수 a를 선언해 주세요.
변수값 8을 a에 넣어주세요.
a = a + 1, a++ 를 적절히 이용하여
a를 12로 만들어 주시면 됩니다.
출력 예시
12
복습 문제
문제 1번
아래의 그림과 같이 출력 해 주세요
5앞에는 띄어쓰기 한칸
8앞에는 띄어쓰기 두칸
0앞에는 띄어쓰기 세칸이 있습니다.
출력 예시
1234
567
89
0
문제 2번
다음과 같이 출력 해 주세요
출력 예시
158% 입니다
문제 3번
변수 q, w, e를 선언하고 아래와 같이 값을 채워주세요.
값을 채운 후 아래와 같이 화면에 보이도록 출력 해주세요.
출력 예시
#q=1,1,1
#w=2,2,2
#e=3,3,3
문제 4번
변수 a를 만들고, 변수값 10을 넣어주세요.
그리고 아래와 같이 출력 해주세요.
출력 예시
a의 값은 10입니다
문제 5번
bbq라는 변수에 숫자 5를 넣어주세요
그리고 아래와 같이 출력 해 주세요
출력 예시
bbq의 값은 5입니다
문제 6번
a, b, c, g, h 변수를 만들어주세요.
그리고 a에는 40, b에는 60, c에는 10을 채워 줍니다.
g에는 a와 c를 더한 값을
h에는 b에서 c를 뺀 값을 넣어주세요.
그리고 변수 g와 h를 출력 합니다.
출력 예시
50
50
문제 7번
변수 a, b를 만들어 주세요.
변수값 10과 3을 아래와 같이 넣어 주세요.
두 수를 곱한 값과 나눈 값을 출력해 주시면 됩니다.
<주의>
띄어쓰기를 꼭 확인해 주세요!
출력 예시
10 * 3 = 30
10 / 3 = 3
문제 8번
변수 a, b, c, d 를 선언해 주세요.
변수값 3, 2, 6, 2를 순서대로 아래와 같이 넣어주세요.
수식 (a+b)*(c/d) 의 값을 출력해 주세요.
출력 예시
15
문제 9번
변수 a, b, c, d 를 선언해 주세요.
변수값 3, 3, 8, 3을 순서대로 아래와 같이 넣어주세요.
수식 (a*b)+(c*d) 의 값을 출력해 주세요.
출력 예시
33

