본문 바로가기
언리얼 엔진 부트캠프/TIL

[DAY8] 판단을 해주는 조건문

by minjoothi 2024. 12. 27.

판단을 해주는 조건문이란 어떠한 경우를 해결해야 할 때 사용한다.

 

비행기 게임에서 비행기가 주행하다가 미사일 맞은 경우엔 어떻게 하지?

게임 캐릭터가 아이템을 얻고 어떻게 하지?

 

 

단순 if 문

#include <iostream>
using namespace std;

int main() {
    int age;

    cout << "Enter your age: ";
    cin >> age;

    // if 문: 조건이 true일 때만 실행됩니다.
    if (age >= 18) { // 이 괄호는 한줄인 경우에는 사용하지 않아도 된다, 여러줄에만 {} 씀, 헷갈리면 걍 씀
        cout << "You are eligible to vote." << endl;
    }



    // 조건이 false인 경우 아무것도 실행되지 않습니다.
    cout << "Program finished." << endl;

    return 0;
}

 

 

If / Else

#include <iostream>
using namespace std;

int main() {
    int number;

    cout << "Enter a number: ";
    cin >> number;

    // if/else 문: 조건이 true일 때와 false일 때 다른 작업을 수행합니다.

    if (number % 2 == 0) { // 나머지가 0이면 = 짝수이면
        cout << "The number is even." << endl;
    }
    else { // 위 조건이 false라면 (즉, 홀수라면) 실행됩니다.
        cout << "The number is odd." << endl;
    }

    cout << "Program finished." << endl;

    return 0;

 

if / else if / else문

#include <iostream>
using namespace std;

int main() {
    int score;

    cout << "Enter your score (0-100): ";
    cin >> score;

    // if/else if/else 문: 여러 조건을 순차적으로 검사합니다.
    if (score >= 90) { // 90 이상인 경우
        cout << "Grade: A" << endl;
    } else if (score >= 80) { // 80 이상 90 미만인 경우
        cout << "Grade: B" << endl;
    } else if (score >= 70) { // 70 이상 80 미만인 경우
        cout << "Grade: C" << endl;
    } else if (score >= 60) { // 60 이상 70 미만인 경우
        cout << "Grade: D" << endl;
    } else { // 60 미만인 경우
        cout << "Grade: F" << endl;
    }

    cout << "Program finished." << endl;

    return 0;
}

 

계산기 (더러운 코드, 조건문을 제대로 사용하지 않은)

#include <iostream>
using namespace std;

int main() {
#include <iostream>
    using namespace std;

    int main() {
        char op;
        double num1, num2;

        cout << "Enter first number: ";
        cin >> num1;
        cout << "Enter an operator (+, -, *, /): ";
        cin >> op; //operation의 약자
        cout << "Enter second number: ";
        cin >> num2;

        if (op == '+') {
            cout << "Result: " << num1 + num2 << endl;
        }
        else {
            if (op == '-') {
                cout << "Result: " << num1 - num2 << endl;
            }
            else {
                if (op == '*') {
                    cout << "Result: " << num1 * num2 << endl;
                }
                else {
                    if (op == '/') {
                        if (num2 == 0) {
                            cout << "Division by zero is not allowed." << endl;
                        }
                        else {
                            cout << "Result: " << num1 / num2 << endl;
                        }
                    }
                    else {
                        cout << "Invalid operator." << endl;
                    }
                }
            }
        }

        return 0;
    }

 

계산기 (깔끔한 코드, 조건문을 제대로 사용한)

#include <iostream>
using namespace std;

int main() {
    char op;
    double num1, num2;

    cout << "Enter first number: ";
    cin >> num1;
    cout << "Enter an operator (+, -, *, /): ";
    cin >> op;
    cout << "Enter second number: ";
    cin >> num2;

    if (op == '+') {
        cout << "Result: " << num1 + num2 << endl;
    }
    if (op == '-') {
        cout << "Result: " << num1 - num2 << endl;
    }
    if (op == '*') {
        cout << "Result: " << num1 * num2 << endl;
    }
    if (op == '/') {
        if (num2 == 0) {
            cout << "Division by zero is not allowed." << endl;
        } else {
            cout << "Result: " << num1 / num2 << endl;
        }
    }
    if (op != '+' && op != '-' && op != '*' && op != '/') {
        cout << "Invalid operator." << endl;
    }

    return 0;
}

결과는 같음

 

복합 조건(&&, ||)

모든 조건이 참이어야 && = AND

하나라도 거짓이면은 || = OR

 

성적 등급 나누기

#include <iostream>
using namespace std;

int main() {
    int score;

    cout << "Enter your score: ";
    cin >> score;

    // 조건: 0 <= score <= 100
    if (score >= 0 && score <= 100) { // 조건에 AND를 써주었어요, 0점이상 이면서 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";
    }

    ret

동일한 작업을 해주는 반복문

단순 반복 되는 작업을 효율적으로 관리해주는 구문

for문

반복되는 횟수나 조건이 명확한 경우에 사용하는 구문

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; // 출력: 합계 출력
    // 출력값: Sum: 55
    return 0;
}

5부터 1까지 거꾸로 출력

#include <iostream>
using namespace std;

int main() {
    for (int i = 5; i >= 1; i--) { // 초기화: i = 5
                                 
                                   
        cout << i << " "; 
    }
    cout << endl; // 줄 바꿈
  
    return 0;
}

오른쪽 정렬된 정삼각별 출력

#include <iostream>
using namespace std;

int main() {
   
   
   int n = 5; 
    
    
    for (int i = 1; i <= n; i++) { // i는 5랑 같거나 작다, i를 1로 초기화                                
        for (int j = 1; j <= n - i; j++) { // j는 5-i의 값, j도 1로 초기화                           
            cout << " "; // 실제 동작: 공백 출력
        }
        
        for (int j = 1; j <= i; j++) { // 초기화: j = 1                         
            cout << "*"; // 실제 동작: 별 출력
        }
        cout << endl; // 줄 바꿈
    }
    
    return 0;
}

공백이랑 별이랑 따로따로 출력해줘야한다고 생각해야 함

while문

반복 범위가 명확하기 보다는 특정 조건을 만족해야 함

사용자 입력 종료

#include <iostream>
using namespace std;

int main() {
    int number; // 사용자 입력값을 저장할 변수

    cout << "Enter numbers (negative number to stop): ";
    cin >> number; 

    while (number >= 0) { // 입력값이 양수면 enter이라 하며 계속 숫자 받기, 
        cout << "You entered: " << number << endl;
        cin >> number; 
    }

    cout << "Program terminated." << endl; //음수면 종료 (괄호 밖)
   
    return 0;
}

게임 루프

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {

    srand(time(0)); // 랜덤 시드 초기화

    int secretNumber = rand() % 100 + 1; // ran 숫자를 100으로 나눈 나머지,,총 1부터 100

    //여기서 임의의 숫자가 하나 만들어짐

    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;
}

}

 

회고

 

강의를 열심히 들은것 같은데 진도가 느린것 같기도 하다

그도 그럴것이 내가 원래 습득력이 낮다.. 

이해가 되지 않으면 이해가 될때까지 파다가 넘어가는 스타일

물론 장점은 그렇게 공부하면 기억에 오래 남는다는 점인데,

단점은 진도 따라가는게 사실 조금 벅찬 것 같기도 하다

 

'언리얼 엔진 부트캠프 > TIL' 카테고리의 다른 글

[DAY10] 객체 지향 프로그래밍  (1) 2024.12.30
[DAY9] Class 개념  (1) 2024.12.27
[DAY7] GIT 특강 + 반복 작업을 줄여주는 함수  (0) 2024.12.27
[DAY6] c++ 시작  (0) 2024.12.27
[DAY5]  (1) 2024.12.27