Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[객체지향프로그래밍] 4주차 정리 본문

3학년 1학기 전공/객체지향 프로그래밍

[객체지향프로그래밍] 4주차 정리

시데브 2024. 3. 27. 12:24
경희대학교 컴퓨터공학부 이대호 교수님의 객체지향프로그래밍 수업 자료를 참고한 정리본

 

 

Type bool

Boolean value

  • true, false
  • 1, 0
  • 0이 아닌 정수는 모두 true

 

Relational operators

  • Result: Boolean value

 

Boolean Expressions

우선순위

  1. ()
  2. 단항
  3. *, /, %
  4. +, -
  5. <, <=, >, >=
  6. ==, !=
  7. =

 

#include <iostream>

using namespace std;

int main(void) {
    if(!10) {
        cout << "HELLO" << endl;
    }
    else {
        cout << "HELL" << endl;
    }

    return 0;
}
HELL

-> 0 제외 모두 true이므로, true인 10에 not 연산자(!)를 적용하면 false

 

#include <iostream>

using namespace std;

int main(void) {
    if(false)
        cout << "HELLO" << endl;
        cout << "HELL" << endl;


    return 0;
}
HELL

-> 블럭으로 감싸지 않았으므로, 아래 문장은 if문과 별개

 

The if/else Statement

#include <iostream>
#include <iomanip>

using namespace std;

int main(void) {
    double d1 = 1.11 - 1.10, d2 = 2.11 - 2.10;
    
    cout << "d1 = " << d1 << endl;
    cout << "d2 = " << d2 << endl;
    
    if(d1 == d2) {
        cout << "Same" << endl;
    }
    else {
        cout << "Diferent" << endl;
    }
    
    cout << "d1 = " << setprecision(20) << d1 << endl;
    cout << "d2 = " << setprecision(20) << d2 << endl;

    return 0;
}
d1 = 0.01
d2 = 0.01
Diferent
d1 = 0.010000000000000008882
d2 = 0.0099999999999997868372
Program ended with exit code: 0

 -> 이진수에서 십진수로 변경하는 과정에서 발생하는 차이 

 

#include <iostream>
#include <iomanip>

using namespace std;

int main(void) {
    double d1 = 1.11 - 1.10, d2 = 2.11 - 2.10;
    
    cout << "d1 = " << d1 << endl;
    cout << "d2 = " << d2 << endl;
    
    if(d1 - d2 < 1E-6 && d1 - d2 > -1E-6) {
        cout << "Same" << endl;
    }
    else {
        cout << "Diferent" << endl;
    }
    
    cout << "d1 = " << setprecision(20) << d1 << endl;
    cout << "d2 = " << setprecision(20) << d2 << endl;

    return 0;
}
d1 = 0.01
d2 = 0.01
Same
d1 = 0.010000000000000008882
d2 = 0.0099999999999997868372
Program ended with exit code: 0

 

우선순위: ! > && > ||

 

(x != y)
!(x == y)
(x < y || y > x)

-> 3개의 산술식 모두 같은 의미

 

x = 0;
(x != 0) && (z / x > 1);

-> &&, || 연산자는 앞의 boolean value에 따라 뒤 boolean value를 확인하지 않고 결과를 내기 때문에, 오류가 나지 않는다.

 

Dangle else

#include <iostream>
#include <iomanip>

using namespace std;

int main(void) {
    int input;
    cin >> input;
    
    if(input >= 0)
        if(input < 2)
            cout << "zero, one" << endl;
    else    //첫 번째 if문과 짝처럼 보이지만, 가장 가까운 두 번째 if문과 짝을 이룸
        cout << "negative" << endl;
    return 0;
}
3
negative
Program ended with exit code: 0

 

Switch

#include <iostream>
#include <iomanip>

using namespace std;

int main(void) {
    int x;
    cin >> x;
    
    switch(x) {
        case 1:
            cout << x * 1 << endl;
            break;
        case 2:
            cout << x * 2 << endl;
            break;
        default:
            cout << x * 3 << endl;
    }
    
    return 0;
}

-> break하지 않는 경우 모든 case를 순회

 

The Conditional Operator

(condition) ? expression_1 : expression_2

-> condition이 true이면 expression_1, false이면 expression_2 반환

 

#include <iostream>
#include <iomanip>

using namespace std;

int main(void) {
    int x;
    cin >> x;
    
    x = (x >= 0) ? 1 : -1;
    cout << x << endl;
    
    return 0;
}

-> x가 0보다 크거나 같으면 1, 0보다 작으면 -1로 초기화됨