반복문 while에 대한 수업을 들었다.
반복문의 기본 개념
반복문은 조건이 참일 때 실행된다. 즉 반복문은 조건문이 참일 때 그 내부 코드를 반복해서 실행하는 구조
반복문은 조건문이 참일 때 실행하게 되고 반목문 안에서 조건을 걸어 거짓이 나오게 되면 탈출하게 되는 개념이다.
즉, 핵심은 반복문은 "탈출"보다는 "조건이 참일 때 계속 돌아간다"는 개념을 먼저 이해하는 것이 중요하다.
예시)
#include <iostream>
int main()
{
int nData{};
nData = 2;
while(nData < 5)
{
printf("%d\n", nData);
}
}
- 정수형 nData를 생성 후 nData의 값이 2라는 정수를 저장
- while의 조건문에 nData < 5가 참이라면 printf로 nData의 값을 출력하도록 설정
- 아직 탈출 구문을 안 넣었기에 무한히 반복
값 증가/감소
값을 증가시키거나 감소시키는 방법 :
- 기본 방식: nData = nData + 1 (1 증가) / nData = nData - 1 (1 감소)
- 축약형: nData += 1 / nData -= 1
- 전위 증가: ++nData
- 후위 증가: nData++
- 전위 증가, 후위 증가의 경우 1 증가, 감소만 가능하다.
예시)
int nData{};
nData = 0;
++ndata // 전증가
nData++ // 후증가
nData = nData + 1 // 가장 기본
nData += 1 // 기본을 축약
위에 있는 모든 예시는 동일하게 nData의 값을 1씩 증가시킨다.
전위 증가와 후위 증가의 차이
- 전위 증가 (++n): 연산자가 피연산자 앞에 위치하며, 증가된 값이 연산 결과로 사용됩니다.
- 후위 증가 (n++): 연산자가 피연산자 뒤에 위치하며, 증가되기 전의 값이 연산 결과로 사용됩니다.
- 연산결괏값 : 증감연산 그 자체의 값
보통 생각을 전증가는 먼저 증가 후 저장, 후증가는 나중에 들어가서 증가 이런 식으로 개념을 외우고 있는 사람이 있다는데 절대 이렇게 외우면 안 된다.
후증가는 할당 연산자보다 먼저 연산을 하게 되는데 이유는, 우선순위가 더 높기 때문이다.
후증가의 경우 할당 연산자가의 연산 후 연산을 하는 것처럼 보이기 때문이기에 오해를 자주 한다.
예시)
#include <iostream>
int main()
{
int nData1{};
int nData2{};
nData1 = 2;
nData2 = 2;
printf("%d\n", nData1++);
printf("%d\n", nData1);
printf("%d\n", ++nData2);
printf("%d\n", nData2);
}
결과 값을 보면 nData1 : 2, 3 / nData2 : 3, 3 이런 식의 결과가 나오게 되는데 그림을 예시로 들어보겠다.
전증가의 경우 증가를 시킨 후 자기 자신을 남겨두고
후증가의 경우 증가를 시키고 복사본을 남겨 두기에 나중에 하는 것처럼 보이는 것뿐이다.
하지만 전위일 때와 후위일 때 연산결괏값은 서로 다르지만 연산이 끝난 후 nData1과 nData2의 값은 둘 다 똑같이 3으로 같다는 것 또한 잊지 말자
참조: https://codingadinga.tistory.com/11
while 문에서의 코드 작성 팁
while 문을 사용할 때, 탈출 조건에 해당하는 값의 변경은 반복문의 마지막에 두면 코드의 흐름을 이해하기 쉽다. (FM)
예시)
#include <iostream>
int main()
{
int nData{};
nData = 0;
while (nData < 5)
{
printf("%d\n", nData);
nData++; // 탈출 조건을 가장 마지막에 쓰는게 이상적
}
}
반복문에서 안 좋은 코드 습관
예시)
#include <iostream>
int main()
{
int nData{};
nData = 1;
while (1)
{
printf("%d\n", nData);
if (nData == 5)
break;
nData += 1;
}
}
break, continue를 사용하는 것이다.
Break나 continue를 사용하게 되면 break, continue를 기준으로 위, 아래가 도는 횟수가 달라지고 그것으로 인해 반복 횟수를 예측하기 어려워짐에 반복문이 망가지게 된다는 것이다.
결론
- while 문은 조건이 참일 때 실행되며, 탈출 조건은 반복문의 마지막에 두는 것이 이상적이다
- 전위/후위 증가 연산자는 주의해서 사용하고, 특히 코드의 흐름을 잘 이해하고 사용해야 한다.
- break, continue 문은 사용하지 않기로 하자
'C++' 카테고리의 다른 글
[강의] 8월 29일 수업정리 (0) | 2024.08.29 |
---|---|
[강의] 8월 28일 수업정리 (1) | 2024.08.28 |
[강의] 8월 23일 수업정리 (1) | 2024.08.23 |
[강의] 8월 22일 수업정리 (0) | 2024.08.22 |
[강의] 8월 21일 수업정리 (0) | 2024.08.21 |