5. 조건문과 반복문
5.1 조건문 Conditional Statements
📌 if 문
if
문은 조건식의 결과가 true
이면 명령문을 실행한다.
→ false
이면 아무것도 실행하지 않는다.
C++에서 if
문의 문법은 다음과 같다.
if ( 조건식 ) {
조건식이 참일 때 실행하는 명령문;
}
다음은 if
문을 사용하여 2개의 숫자를 입력하여 크기를 비교하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int num1, num2, result;
cout << "첫번째 숫자를 입력하세요: ";
cin >> num1;
cout << "두번째 숫자를 입력하세요: ";
cin >> num2;
cout << "입력한 값: " << num1 << ", " << num2 << endl;
if (num1 > num2) {
cout << "첫번째 입력 값이 두번째 입력값보다 큽니다." << endl;
}
return 0;
}
📌 if-else 문
if
문은 조건식의 결과가 true
이면 명령문을 실행하며,
else
문은 조건식의 결과가 false
이면 명령문을 실행한다.
C++에서 if-else
문의 문법은 다음과 같다.
if ( 조건식 ) {
조건식이 참일 때 실행하는 명령문;
}
else {
조건식이 거짓일 때 실행하는 명령문;
}
다음은 if-else
문을 사용하여 2개의 숫자를 입력하여 크기를 비교하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int num1, num2, result;
cout << "첫번째 숫자를 입력하세요: ";
cin >> num1;
cout << "두번째 숫자를 입력하세요: ";
cin >> num2;
cout << "입력한 값: " << num1 << ", " << num2 << endl;
if (num1 > num2) {
cout << "첫번째 입력 값이 두번째 입력값보다 큽니다." << endl;
}
else {
cout << "두번째 입력 값이 첫번째 입력값보다 큽니다." << endl;
}
return 0;
}
📌 if-else if-else 문
if-else if-else
문은 조건문이 여러 개일 때 사용한다.
if
문은 조건식 1의 결과가 true
이면 명령문을 실행하며,
else if
문은 조건식 2의 결과가 true
이면 명령문을 실행한다.
else
문은 조건식의 결과가 false
이면 명령문을 실행한다.
C++에서 if-else if-else
문의 문법은 다음과 같다.
if ( 조건식 1 ) {
조건식 1이 참일 때 실행하는 명령문;
}
else if ( 조건식 2) {
조건식 2가 참일 때 실행하는 명령문;
}
else {
조건식 1과 조건식 2가 모두 거짓일 때 실행하는 명령문;
}
다음은 if-else if-else
문을 사용하여 3개의 점수를 입력받아 평균 점수를 계산하고, 그에 맞는 학점을 구하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int score1, score2, score3, sum_score, avg_score;
char result;
cout << "첫번째 점수를 입력하세요: ";
cin >> score1;
cout << "두번째 점수를 입력하세요: ";
cin >> score2;
cout << "세번째 점수를 입력하세요: ";
cin >> score3;
sum_score = score1 + score2 + score3;
avg_score = sum_score / 3;
cout << "내 점수: " << score1 << ", " << score2 << ", " << score3 << endl;
cout << "평균 점수: " << avg_score << endl;
if (90 <= avg_score && avg_score <= 100) {
result = 'A';
}
else if (80 <= avg_score && avg_score < 90) {
result = 'B';
}
else if (70 <= avg_score && avg_score < 80) {
result = 'C';
}
else if (60 <= avg_score && avg_score < 70) {
result = 'D';
}
else {
result = 'F';
}
cout << "\n학점은 " << result << " 입니다." << endl;
return 0;
}
📌 switch 문
switch
문은 switch
안에 들어있는 수식을 계산한 다음, case
의 조건들과 값을 비교한다.
값이 일치하는 case
가 있으면 그 case
에 해당하는 명령문이 실행된다.
그리고 break
문에 도달하면 종료 된다.
→ break
문이 없다면 그 다음 case
의 명령문들도 실행된다.
값이 일치하는 case
를 찾지 못하면 default
문이 실행된다.
C++에서 switch
문의 문법은 다음과 같다.
switch ( 비교할 대상 ) {
case 조건 1:
조건 1이 참일 때 실행하는 명령문;
break;
case 조건 2:
조건 2가 참일 때 실행하는 명령문;
break;
...
}
다음은 switch
문을 사용하여 3개의 점수를 입력받아 평균 점수를 계산하고, 그에 맞는 학점을 구하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int score1, score2, score3, sum_score, avg_score;
char result;
cout << "첫번째 점수를 입력하세요: ";
cin >> score1;
cout << "두번째 점수를 입력하세요: ";
cin >> score2;
cout << "세번째 점수를 입력하세요: ";
cin >> score3;
sum_score = score1 + score2 + score3;
avg_score = sum_score / 3;
cout << "내 점수: " << score1 << ", " << score2 << ", " << score3 << endl;
cout << "평균 점수: " << avg_score << endl;
switch (avg_score / 10) {
case 10:
case 9:
result = 'A';
break;
case 8:
result = 'B';
break;
case 7:
result = 'C';
break;
case 6:
result = 'D';
break;
default:
result = 'F';
break;
}
cout << "\n학점은 " << result << " 입니다." << endl;
return 0;
}
다음은 switch
문을 사용하여 3개의 점수를 입력받아 평균 점수를 계산하고, 그에 맞는 학점을 구하는 코드에서 break
문을 제거한 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int score1, score2, score3, sum_score, avg_score;
char result;
cout << "첫번째 점수를 입력하세요: ";
cin >> score1;
cout << "두번째 점수를 입력하세요: ";
cin >> score2;
cout << "세번째 점수를 입력하세요: ";
cin >> score3;
sum_score = score1 + score2 + score3;
avg_score = sum_score / 3;
cout << "내 점수: " << score1 << ", " << score2 << ", " << score3 << endl;
cout << "평균 점수: " << avg_score << endl;
switch (avg_score / 10) {
case 10:
case 9:
cout << "\n학점은 A 입니다." << endl;
case 8:
cout << "\n학점은 B 입니다." << endl;
case 7:
cout << "\n학점은 C 입니다." << endl;
case 6:
cout << "\n학점은 D 입니다." << endl;
default:
cout << "\n학점은 F 입니다." << endl;
}
return 0;
}
break
문이 없기 때문에 그 다음 case
에 해당하는 명령문도 함께 출력되는 것을 볼 수 있다.
5.2 반복문
📌 for 문
for
문은 해당하는 명령문을 반복 수행한다.
초기식
에서는 변수를 초기화
한다.
→ 초기식은 반복문이 처음 실행될 때만 확인한다.
그 다음 조건식
이 true
이면 명령문을 수행하며, false
이면 반복 실행을 종료한다.
→ 초기에 조건식이 false
인 경우에는 명령문이 실행되지 않는다.
그리고 명령문을 실행한 다음에는 증감식
으로 인해 초기식에서 선언한 변수를 증가
or 감소
시킨 다음 반복을 계속한다.
C++에서 for
문의 문법은 다음과 같다.
for ( 초기값; 조건식; 증감식 ) {
반복 실행하는 명령문;
}
다음은 for
문을 사용하여 2의 배수를 출력하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int i, multi = 0;
printf("2의 배수\n");
for (i = 0; i < 10; i++) {
multi = i * 2;
printf("%d ", multi);
if (i == 9) {
printf("\n");
}
}
return 0;
}
📌 while 문
while
문은 해당하는 명령문을 반복 수행한다.
다만 조건식
이 true
이면 명령문을 반복 수행하며, false
이면 반복 실행을 종료한다.
→ 초기에 조건식이 false
인 경우에는 명령문이 실행되지 않는다.
C++에서 while
문의 문법은 다음과 같다.
초기값;
while ( 조건식 ) {
반복 실행하는 명령문;
증감식;
}
다음은 while
문을 사용하여 2의 배수를 출력하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int i, multi = 0;
printf("2의 배수\n");
i = 0;
while (i < 10){
multi = i * 2;
printf("%d ", multi);
if (i == 9) {
printf("\n");
}
i++;
}
return 0;
}
📌 do-while 문
do-while
문은 항상 적어도 한번 실행된다.
do
문이 한번 실행한 다음 while
문의 조건을 확인하고, 조건이 true
이면 do-while
문을 다시 실행한다.
→ false
이면 실행하지 않는다.
C++에서 do-while
문의 문법은 다음과 같다.
초기값;
do {
반복 실행하는 명령문;
증감식;
} while ( 조건식 );
다음은 do-while
문을 사용하여 2의 배수를 출력하는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int i, multi = 0;
printf("2의 배수\n");
i = 0;
do {
multi = i * 2;
printf("%d ", multi);
if (i == 9) {
printf("\n");
}
i++;
} while (i < 10);
return 0;
}
5.3 break & continue
📌 break
break
는 반복 loop
에서 빠져나올 때 사용한다.
이전에 설명했던 switch 문에서 break
문을 살펴보자.
switch
문은 값이 일치하는 case
가 있으면 그 case
에 해당하는 명령문이 실행된다.
그리고 break
문에 도달하면 종료 된다.
만약 break
문이 없다면 그 다음 case
의 명령문들도 같이 실행된다.
switch ( 조건 ) {
case 조건 1:
조건 1이 참일 때 실행하는 명령문;
break;
case 조건 2:
조건 2가 참일 때 실행하는 명령문;
break;
...
}
아래의 코드는 0 ~ 10의 수를 출력할 때 i가 5일 때 for
문을 빠져나오는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
break;
}
printf("%d ", i);
}
printf("\n");
}
📌 continue
continue
는 반복 loop
에서 수행하고 있는 반복과정의 나머지를 건너뛴다.
→ 다음 반복 과정을 강제로 수행하기 시작한다.
아래의 코드는 0 ~ 10의 수를 출력할 때 i가 5일 때 출력을 건너뛰는 소스 코드이다.
#include <iostream>
using namespace std;
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
printf("%d ", i);
}
printf("\n");
}