본문 바로가기

코딩/객체지향프로그래밍

[C++] 조건문과 반복문 (1)

출처: https://commons.wikimedia.org/wiki/File:IF-THEN-ELSE-END_flowchart.png

 


 

1. Boolean Expression(참/거짓)

int main() {
	bool a = true;
	bool b = (10 >= 5);
	bool c = 0;

	cout << a << '\t' << b << '\t' << c << endl; //true, true, false

	return 0;
}
  • bool이라는 변수 타입, 두 가지 값(binary value)(true or false)만 가질 수 있음
  • C++에서 true는 1, false는 0을 출력함
  • 변수가 0이 아닌 값을 가지면 true로 변환됨

 

2. if-else문 (조건문)

1. if문

if(/* 실행 조건 */)
	/* do something */
    
    
if(/* 실행 조건 */)
{
	/* do something #1
    		...
        
           do something #n
        */
}
  • 코드가 실행될 조건을 걸어주는 조건문
  • 실행문이 한 줄이면 { } 생략 가능, 여러 줄이면 생략 불가능

2. else문

if(/* 실행 조건 */)
	/* statement 1 */
    
else
	/* statement 2 */
  • else문은 if조건에 해당되지 않을 때, 나머지 모든 경우에 동작을 수행함
  • else는 반드시 if문이 있어야 사용 가능
  • 마찬가지로 실행문이 한 줄이면 생략 가능, 여러 줄이면 생략 불가능

3. Logical Operator(논리연산자): and / or / not

bool x = true, y = false;

x && y; //and연산자 - 하나라도 false면 전체가 false - 결과값은 false
x || y; //or연산자 - 하나라도 true면 전체가 true - 결과값은 true
!x; //not연산자 - true는 false로, false는 true로 - 결과값은 false

 

4. Nested if-else문

if(/* 실행 조건 1 */)
{
	/* do something */
	if(/* 실행 조건 2 */)
	{
		/* do something */
	}
	else if(/* 실행 조건 3 */)
	{
		/* do something */
	}
	else //조건 2, 3에 해당되지 않는 모든 경우
	{
		/* do something */
	}
}

 

*) 2.1~2.4 example

int main() {
	char grade = 'X';
	int score;
	cout << "Enter your score : ";
	cin >> score;

	if (score >= 0 && score <= 100) {
		if (score >= 90)
			grade = 'A';
		else if (score >= 80)
			grade = 'B';
		else if (score >= 70)
			grade = 'C';
		else if (score >= 60)
			grade = 'D';
		else
			grade = 'F';
		cout << "You're grade is " << grade << endl;
	}
	else {
		cout << "The score (" << score << ") is invalid" << endl;
	}


	return 0;
}

 

3. while문 (조건+반복문)

while(/* 반복 조건 */)
	/* do something */
    
while(/* 반복 조건 */)
{
	/* do something #1 */
		...
	/* do something #n */
}
  • 반복 조건이 true라면 body를 반복해서 실행함 (조건이 false가 될 때 반복문에서 빠져나옴 = 실행 종료)

*) 3 example

#include <iostream>
#include <iomanip>
#include <cmath>
#include <locale> 
/* 왜인지 모르겠으나 locale라이브러리 include하지 않아도 실행됨.. */
using namespace std;

int main() {
	int num = 1;
	int count = 1;
	cout.imbue(locale("")); // 세 자리(1,000)마다 쉼표 찍기 위함
    
	while (count <= 20) {
		num = pow(2, num);
		cout << count << '\t' << setw(10) << num << endl;
		count++;
	}

	return 0;
}
  • <iomanip>의 setw(n) 함수: n칸만큼 띄운다음 오른쪽 정렬해서 출력함
  • <cmath>의 pow(n, base) 함수: base숫자를 n제곱하는 제곱 함수 (base^n)

*) if + while example

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
	int row = 1, col = 1;
	while (row <= 10) {
    
		while (col <= 10) {
			int num;
			if (row == col)
				num = 1;
			else
				num = 0;
			cout << setw(4) << num;
			col++;
		}
        
		cout << endl;
		row++;
		col = 1;
	}
    
	return 0;
}
  • 마찬가지로 while문도 body안에 또다른 while문 넣을 수 있음 (Nested while문)

 


 

*)sample codes: https://github.com/halterman/CppBook-SourceCode

반응형

'코딩 > 객체지향프로그래밍' 카테고리의 다른 글

[C++] String, File - 문자열과 파일 (1)  (0) 2020.07.23
[C++] 조건문과 반복문 (2)  (0) 2020.07.21
[C++] 함수(2)  (0) 2020.07.15
[C++] 함수(1)  (0) 2020.07.14
[C++] C++ basic  (0) 2020.07.13