조건문
조건문은 3가지가 있다. if / if-else / if-else if-else와 같은 표현이 가능하다.
if 문
나이가 18세 이상인 경우에만 특정 코드가 실행되게 하려면 아래 그림과 같이 로직을 구현할 수 있습니다.
if( 조건식 )
{
code;
}
해당 조건식이 참인 경우에 코드가 실행됩니다. 거짓인 경우 아무것도 실행되지 않는다.
if-else 문
특정수가 짝수인지 / 홀수인지 구분해서 동작해야 하는 경우 아래 그림과 같이 로직을 구현할 수 있습니다.
if( 조건식 )
{
code;
} else
{
code;
}
if문의 조건식이 참이 아니면 else문의 코드가 실행 됩니다.
if-else문에서 주의할 점은 if문의 조건식이 참이 아니면 else문이 수행되므로 else문에는 조건식이 필요 없다는 것입니다.
if-else if-else 문
점수별로 성적 등급을 출력하는 프로그램이 있습니다. 90점 이상일 경우 A, 80점 이상일 경우 B, 70점 이상일 경우 C, 60점 이상일 경우 D 그렇지 않으면 F를 출력해야 하는 경우 아래 그림과 같이 로직을 구현할 수 있습니다.
if( 조건식 )
{
code;
} else if ( 조건식 )
{
code;
} else
{
code;
}
이분법적 논리(yes or no)로 표현할 수 있는 것은 if-else 문으로 하면 되지만 조건문을 좀 더 세분화해야 하는 경우가 있습니다.
위 설명에서 80점 이상일 경우라는 것은 90점 이상이 아닌 점수 중에서 80점 이상을 말합니다. 즉 80~89점을 의미합니다.
이럴 경우 if-else if-else 문으로 표현하면 됩니다. 중간에 있는 else if는 여러 개가 올 수 있다.
마지막에 오는 else는 필수가 아니다. else 생략시 마지막 조건에서 거짓이면 아무것도 실행되지 않는다.
계산기 추가 기능 구현하기
이전에 만든 계산기는 합산만 가능했는데 사칙연산 기능을 추가하고 0으로 나눌 시 에러 문자를 출력해보자.
결과
복합 조건(&&, ||)
&&는 A && B와 같이 사용하며 A, B에는 조건이 옵니다. A와 B에는 참(true) 또는 거짓(false)을 반환하는 조건이 옵니다.
연결된 모든 조건이 참(true)일 때만 전체 조건식의 결과가 참이 됩니다.
//점수가 0점이상, 100점 이하일 때 등급이 출력
#include <iostream>
using namespace std;
int main() {
int score;
cout << "Enter your score: ";
cin >> score;
// 조건: 0 <= score <= 100
if (score >= 0 && score <= 100)
{
if (score >= 90)
{
cout << "Grade: A\n";
}
else if (score >= 80)
{
cout << "Grade: B\n";
}
else if (score >= 70)
{
cout << "Grade: C\n";
}
else if (score >= 60)
{
cout << "Grade: D\n";
}
else
{
cout << "Grade: F\n";
}
}
else
{
cout << "Invalid score. Please enter a value between 0 and 100.\n";
}
return 0;
}
0에서 100 사이의 점수가 아니면 Invalid score. Please enter a value between 0 and 100. 이 출력되도록 작성함.
||는 A || B와 같이 사용하며 A, B에는 조건이 옵니다. A와 B에는 참(true) 또는 거짓(false)을 반환하는 조건이 옵니다.
둘 중 하나만 참(true)이면 전체 조건식의 결과가 참이 됩니다.
//날씨와 온도에 따른 외출 여부
#include <iostream>
using namespace std;
int main()
{
string weather;
int temperature;
cout << "Enter weather (sunny/rainy): ";
cin >> weather;
cout << "Enter temperature: ";
cin >> temperature;
// 조건: 맑은 날씨(sunny)이고 온도가 20도 이상일 때 외출
if (weather == "sunny" && temperature >= 20)
{
cout << "It's a nice day to go out!\n";
}
// 조건: 비가 오거나 온도가 10도 미만일 때 외출x
else if (weather == "rainy" || temperature < 10)
{
cout << "Better stay indoors.\n";
}
// 나머지 경우
else
{
cout << "You can go out, but dress appropriately.\n";
}
return 0;
}
반복문
반복문에는 크게 for문과 while문이 있다.
for문
반복의 범위가 명확하게 주어지는 상황에 사용하기 좋다.
예를 들어, 5번 반복해라 혹은 i 라는 변수를 선언하고 i가 0부터 시작해서 5가 되기 전까지 반복하는 경우가 있습니다.
이때 for문을 많이 사용한다.
for문의 동작은 초기화 과정은 한 번만 하고 이후에 종료 조건 확인 -> 동작 -> 사후 동작 -> 종료 조건확인 순으로 반복된다.
반복은 종료 조건을 만족할 때 까지 계속된다. for(초기화;종료조건;사후 동작)
예시 1. 1부터 10까지의 합을 구해보기
for문을 활용해서 i를 1로 초기화 한 후, 10 이하일 경우 1씩 증가시키면서 이 값을 sum에 모두 더한다.
최종적으로 sum은 1에서 10까지 모두 더한 값이 된다.
#include <iostream>
using namespace std;
int main()
{
int sum = 0; // 합을 저장할 변수 초기화
for (int i = 1; i <= 10; i++)// 초기화: i = 1 실행 조건: i <= 10 사후 동작: i++
{
sum += i; // 실제 동작: sum에 i를 더함
}
cout << "Sum: " << sum << endl; // 출력: 합계 출력
return 0;
}
예시 1. 결과
예시 2. 5부터 1까지 숫자 출력해보기
//5부터 1까지 출력하기
#include <iostream>
using namespace std;
int main()
{
int i;
for (i = 5; i >= 1; i--) // 초기화: i = 5, 실행 조건: i >= 1, 사후 동작 : i--
{
cout << i << endl;
}
return 0;
}
예시 2. 결과
예시 3. 1부터 20까지 3의 배수를 출력해보기
3의 배수는 3으로 나눠서 나머지가 0인지 확인하면 된다..
//1부터 20까지 3의 배수 출력해보기
#include <iostream>
using namespace std;
int main()
{
int i;
for (i = 1; i <= 20; i++) // 초기화 i = 1, 실행 조건 i >= 20, 사후 동작 i++
{
if (i % 3 == 0) // i를 3으로 나눴을 때 나머지가 0이면 출력하기
{
cout << i << " ";
}
}
return 0;
}
예시 3. 결과
예시 4. 오른쪽으로 정렬된 높이가 5인 직각삼각형을 출력해보기
//오른쪽으로 정렬된 높이가 5인 직각삼각형을 출력해보기
#include <iostream>
using namespace std;
int main()
{
int i, j;
for (i = 1; i <= 5; i++) // 초기화 i = 1 실행 조건 i <= 5 사후 동작 i++
{
for (j = 5; j >= 1; j--) // 초기화 j = 5 실행 조건 j >= 1 사후 동작 j--
{
if (i >= j)
{
cout << "*";
}
else
{
cout << " ";
}
}
cout << endl;
}
}
/*
i = 1 j = 5 4 3 2 1
i = 2 j = 5 4 3 2 1
i = 3 j = 5 4 3 2 1
i = 4 j = 5 4 3 2 1
i = 5 j = 5 4 3 2 1
위처럼 메모장에 적어두고 if의 조건을 바꾸거나 i의 초기 값을 5로 시작하면 다양한 삼각형을 그릴 수 있다.
*/
예시 4. 결과
예시 4. 강의에서의 답지
#include <iostream>
using namespace std;
int main() {
int n = 5; // 삼각형의 높이
for (int i = 1; i <= n; i++) { // 초기화: i = 1
// 종료 조건: i <= n
// 사후 조건: i++
for (int j = 1; j <= n - i; j++) { // 초기화: j = 1
// 종료 조건: j <= n - i
// 사후 동작: j++
cout << " "; // 실제 동작: 공백 출력
}
for (int j = 1; j <= i; j++) { // 초기화: j = 1
// 종료 조건: j <= i
// 사후 조건: j++
cout << "*"; // 실제 동작: 별 출력
}
cout << endl; // 줄 바꿈
}
return 0;
}
while문
반복 범위가 명확한 경우보다, 특정 조건을 확인하며 반복해야 하는 경우가 있습니다.
이럴 때는while문을 사용하면 코드가 깔끔해진다.
예시 1. 사용자의 입력을 받아 입력값이 음수가 아니면 계속 입력하기
#include <iostream>
using namespace std;
int main()
{
int number; // 사용자 입력값을 저장할 변수
cout << "Enter numbers (negative number to stop): ";
cin >> number; // 초기 동작: 첫 번째 입력 받기
while (number >= 0) // 실행 조건: 입력값이 음수가 아니면 반복
{
cout << "You entered: " << number << endl; // 실제 동작: 입력값 출력
cin >> number; // 사후 동작: 다음 입력 받기
}
cout << "Program terminated." << endl;
return 0;
}
예시 1. 결과
예시 2. 랜덤한 값 맞추기 게임
시작할 때 랜덤한 값을 컴퓨터에게 부여하고 사용자가 입력하며 랜덤 값이 몇인지 맞추는 게임이다.(1~100 사이 값)
배우지 않은 내용이 있어서 강의의 답지를 보고 재밌어 보여서 따라 적기만 했다.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0)); // 랜덤 값 초기화
int secretNumber = rand() % 100 + 1; // 1부터 100 사이의 랜덤 숫자
int guess;
cout << "Guess the number (1 to 100): ";
cin >> guess; // 초기 동작: 첫 번째 추측 입력 받기
while (guess != secretNumber) // 실행 조건: 추측이 정답과 다를 경우 반복
{
if (guess < secretNumber)
{
cout << "Too low! Try again: ";
}
else
{
cout << "Too high! Try again: ";
}
cin >> guess; // 사후 동작: 새로운 추측 입력 받기
}
cout << "Congratulations! You guessed the number!" << endl;
return 0;
}
예시 2. 결과
'C++ 공부' 카테고리의 다른 글
C++ 공부 3일차(포인터, 레퍼런스) (0) | 2025.08.13 |
---|---|
C++ 숙제 (다이아몬드 모양으로 별 찍기) (4) | 2025.08.13 |
C++ 공부 2일차(배열, 성적 관리 프로그램 만들기, 함수, 두 수의 합을 반환하는 함수 만들기) (0) | 2025.08.12 |
C++공부 2일차(헤더, 리소스, 소스, 변수, 연산자, 계산기 만들기) (0) | 2025.08.12 |
C++ 공부 1일차(main, iostream, std, 주석, 변수, L / R - value) (0) | 2025.08.11 |