C++ 알고리즘 기초13 -반복문 기초1(for, while)-

1. for문

 

자바랑 형태가 동일함 

 

for( 초기화식 ; 조건식 ; 증감식 ) {
    
    반복할 코드

}

 

'초기화식'에서는 for문의 초기조건을 정해주고, 초기조건부터 시작해서, '조건식'이 맞는지 검사하여 '조건식'이 참이라면, 

 

'반복할 코드'를 반복 수행하게 된다. 

 

'반복할 코드'를 한번 수행하면, '증감식'에 의해 반복 코드를 진행한 횟수가 세어진다.

 

예를 들어 다음은 i = a부터 시작해서, i를 1씩 증가시켜가며 i가 b-1이 될때까지 반복할 코드를 반복수행한다

 

for (int i = a; i < b; i++) {

    반복할 코드

}

 

증감식에는 i += c의 형태가 일반적으로 들어가고, c가 1이면 i++로 바꿔 쓸 수 있다.

 

즉, i++는 i += 1과 동일하다

 

처음 i 값이 초기화식에 의해 a로 설정되고, 조건식을 검사해서 조건식이 참일때 반복할 코드를 반복수행한다.

 

i = a, a+1, a+2, ... ,b-1일때만 for문이 실행되고, for문이 한번 실행될때마다 증감식에 의해 i가 1씩 늘어난다.

 

초기 조건이 i = a여서, 1씩 값이 늘어나다가, i = b가 되면 반복코드를 실행하지 않고 for문을 탈출한다.

 

if 조건문처럼 for 내부라는 범위(scope)를 명확히 정의하기 위해 중괄호 블록 { }을 사용한다.

 

for문 안에 포함되어야하는 코드는 반드시 중괄호 블록 내부에 작성해야한다.

 

#include <iostream>
using namespace std;

int main() {
    
    for (int i = 5; i < 11; i++) {
        
        cout << i << endl;
    }
    
    cout << "Done";
    return 0;
}
5
6
7
8
9
10
Done

 

if문처럼 중괄호 블록을 쓰지 않는다면, for문 이후 단 한줄의 코드만 for문 내부라고 인식하게 된다.

 

그래서 웬만하면 한줄이더라도 중괄호 블록을 쓰는 것을 권장

 

#include <iostream>
using namespace std;

int main() {
    
    for (int i = 0; i < 2; i++)
        cout << 1 << endl;
        cout << 2 << endl;
    
    return 0;

}
1
1
2

 

a부터 b까지 정수를 공백을 두고 출력하는 방법은..

 

#include <iostream>
using namespace std;

int main() {
    
    int a = 3;
    int b = 6;
    
    for (int i = a; i <= b; i++) {
        cout << i << " ";
    }
    
    return 0;
}
3 4 5 6

 

2. 후위 증가연산자(postfix), 전위 증가연산자(prefix)

 

변수 i를 1 증가시키는 코드는 위에서 나온 i++ 외에도 ++i가 있다.

 

i++는 ++가 i 뒤에 있어서 후위 증가연산자라고 하며, ++i는 반대로 전위증가연산자라고 부른다.

 

이 둘의 차이는 증가 연산자가 속한 줄의 코드가 실행되는 것과, 증가 연산이 이루어지는 것 사이의 순서에 달려있다.

 

전위 연산자 ++i는 그 줄 코드를 실행하기 전에 증가가 이루어진다.

 

후위 연산자 i++는 코드 실행이 이루어지고, 증가가 이루어진다.

 

int a = 3, b = 5;
cout << a++ << endl;
cout << ++b << endl
cout << a << endl;

//출력
3
6
4

 

a값은 첫번째 줄 cout이 실행될때는 3이고, 이후 1을 증가해 a는 4가 된다. 그래서 3번째 줄 a의 출력은 4이다.

 

두번째줄 b의 출력은 먼저 1을 증가시키고 b를 출력하므로 6이 된다.

 

3. while문

 

역시 자바랑 형태가 동일함

 

while (조건) {

    여기에 조건을 만족할 때만 수행되었으면 
    하는 코드를 작성

}

 

while은 항상 조건과 같이 쓰이고, while안의 코드는 해당 조건을 만족하는 경우에만 반복하여 수행하는 형태를 띈다.

 

for문처럼 while 내부라는 범위를 명확히 정의하기 위해 중괄호 블록 { }을 사용해줘야한다.

 

#include <stdio.h>

int main() {

#include <iostream>
using namespace std;

int main() {

	int i = 5;             <- 시작 값(초기화식)

		while (i <= 10) {       <-계속 반복할 조건(조건식)
			cout << i << endl;    <-원하는 코드 작성
			i++;                <-원하는 증감값 설정(증감식)
		}

	cout << "Done";
	return 0;

}
5
6
7
8
9
10
Done

 

while도 마찬가지로, 중괄호 블록을 사용하지 않는다면 조건 이후 한줄의 코드만이 내부 코드로 인정된다

 

int i = 5;
while (i < 7)
	cout << i << endl;  -> while loop 내부 코드
	cout << i * 2 << endl; -> while 외부 코드
	i++; -> while 외부 코드

 

4. do - while

 

C++도 자바처럼 do-while 반복문이 존재하는데, while과 큰 차이는 없다.

 

do의 block내부에 조건을 만족할 때 수행되었으면 하는 코드를 작성하는데, 조건에 관계없이 무조건 한번은 실행된다는 차이가 있다.

 

do {

   여기에 조건을 만족할 때만 수행되었으면 
   하는 코드를 작성, 무조건 한번은 실행됨

} while (조건);

 

다음 코드를 보면, i = 10은 7보다 큼에도 불구하고, 1번은 실행된다는 것을 알 수 있다

 

#include <iostream>
using namespace std;

int main() {
    
    int i = 10;
    
    do {
        
        cout <<  i << endl;
        i++;
    } while (i < 7);
    
    cout << "Done";
    return 0;
}
10
Done
TAGS.

Comments