프로그래밍 공부
작성일
2024. 1. 8. 15:27
작성자
WDmil
728x90

1.1.10 루프(반복문)

 

컴퓨터는 태생적으로 같은 작업을 반복하는데 능하다.

 

C++에서는 while루프, do/while루프, for루프, 구간지정for루프 등, 네가지 형태의 반복문을 지원한다.


while루프

 

while루프는 주어진 표현식이 참인 동안 while블록의 코드가 실행되게 한다.

 

다음 코드는 this is silly 를 다섯번 출력하는 코드이다.

int i = 0; 
while ( i < 5) {
    std::cout<<"This is silly."<<std::endl; 
    ++i;
}

break 키워드를 이용하면, 루프에서 바로 벗어나 while블록 이후의 코드를 연속해서 실행하게 할 수 있다.

 

반면, continue키워드는, 루프 내에서 해당 키워드 아래쪽 코드를 실행하지 않고,

 

바로 루프 처음으로 돌아가. 다시 실행하게 한다.

 

두 키워드 모두 갑작스러운 코드점프를 야기하여, 가독성을 떨어뜨릴 수 있다.


do/while 루프

 

do/while 루프는 while루프의 파생형으로 whlie과 비슷하나, while블록의 코드가 처음에 한번 무조건 실행되고, 루프여부를 체크한다.

 

이런 방식은 처음 실행이 무조건 발생해야 함으로, 첫번째 비교문의 불필요실행을 제거해주는 효과가 있다.

int i = 100; 
do {
    std::cout<<"This is silly."<<std::endl;
    ++i;
} while ( i < 5);

for 루프

 

for루프와 while루프는 상호변환이 가능하다. for루프는 시작, 중단조건, 루프 마지막에 반복수행할 코드를 지정할 수 있기 때문에, whlie보다 더 자주 쓰이는 경향이 있다.

 

while과 하는일은 같지만, 시작, 중단조건, 반복코드가 한눈에 보임으로, 가독성이 훨신 좋다.

 

for(int i = 0; i < 5; i++) {
	std::cout<< "This is silly" << std::endl;
    }

 


구간지정 for루프

 

구간지정 for 루프는, 리스트를 순회하며 작업할 때 편리하다.

 

구간지정 for 루프는 C언어의 배열, 초기화 리스트, 그리고 반복자(iterator)를 리턴하는 begin()과 end()함수를 멤버로 가진 데이터 타입을 대상으로 한다.

 

std::array와 STL에 있는 모든 컨테이너는 begin()과 end()함수를 가지고 있기 때문에, 구간지정 for루프에 이용될 수 있다.

 

std::array<int, 4> arr = {1, 2, 3, 4};
for(int i : arr) {
	std::cout << i << std::endl;
    }

 

728x90