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
'알고리즘 > C++ 기초' 카테고리의 다른 글
C++ 알고리즘 기초15 -배열을 만드는 방법1- (0) | 2023.05.22 |
---|---|
C++ 알고리즘 기초14 -조건문 심화- (0) | 2023.05.21 |
C++ 알고리즘 기초12 -비교연산 배우기, and와 or 배우기- (0) | 2023.05.17 |
C++ 알고리즘 기초11 -조건문 배우기2(삼항연산, if-else if-else) (0) | 2023.05.16 |
C++ 알고리즘 기초10 -조건문 배우기1(if, else)- (0) | 2023.05.15 |