반복문
반복문(iteration)은 프로그래밍 언어에서 특정 작업을 반복적으로 수행하는 프로그래밍 문법이다. 주로 일정한 법칙 및 변화가 있는 작업을 할 때 사용된다. [1]
개요
컴퓨터 프로그래밍에서 반복문(영어: iteration)은 제어문중 하나로, 프로그램 소스 코드내에서 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문이다. [2]
C 언어에서의 반복문
for문
- for문은 반복 횟수를 명확히 알고 있을 때 사용한다.
for문 알고리즘
[3]
1. ⓛ초기화식이 제일 먼저 실행된다.
2. ②조건식을 평가해서 true이면
3. ③실행문을 실행시키고
4. ④false이면 for문을 종료한다.
5. 만약 실행문이 실행되었다면 블록 내부의 ③실행문을 모두 실행시키고 ④증감식을 실행 시킨 뒤 다시 ②조건식을 평가하게 된다.[3]
for문 문법
//문법 for(초기화식; 조건식; 증감식){ 실행문; }
for문의 생략
- 상황에 따라 초기화식, 조건식, 증감식, 실행문의 블록 등 여러가지 코드를 생략할 수도 있다.
//초기화식 생략 int i=0; for(;i<10;i++){ printf("%d\n",i); } //조건식 생략(무한루프에 빠지게 된다.) for(int i=0;;i++){ printf("%d\n",i); } //증감식 생략(무한루프에 빠지게 된다.) for(int i=0;i<10;){ printf("%d\n",i); } //실행문이 한 라인일 경우 { } 대괄호 생략 가능 for(int i=0;i<10;i++) printf("%d\n",i);[3]
while문
- while문은 조건식이 true일 경우에 계속해서 반복하는 문법이다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 while문을 종료한다.[4]
while문 알고리즘
[4]
1. ①조건식을 평가한다. 평가 결과가 true이면 ②실행문을 실행한다.
2. ②실행문이 모두 실행되면 다시 ①조건식으로 되돌아가서 다시 검사한다.
3. 만약 ①조건식이 true라면 1, 2번 순서를 다시 반복하고, 아니면 while문을 종료한다.
[4]
while문 문법
//문법 while(조건식){ 실행문; } //사용법 int i=1; while(i<10){ printf("%d\n",i); i++; }
- while문은 조건식이 true라면 실행문을 실행시킨다. 블록 안에 증감문은 넣어 주어도 되고 넣어주지 않아도 되는데 증감식을 넣어 주지 않게 되면 (while문을 빠져나오는 구문이 없다면) 무한루프에 빠지게 된다.[4]
do while문
- 먼저 한 번 코드를 실행한 후 조건 확인 및 반복을 하는 반복문이다.
do while문 문법 및 예시
#include <stdio.h> int main() { int i = 0; do // 처음 한 번은 아래 코드가 실행됨 { printf("Hello, world! %d\n", i); // Hello, world!와 i의 값을 함께 출력 i++; // i를 1씩 증가시킴 } while (i < 100); // i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복 return 0; }
- 실행결과
Hello, world! 0 Hello, world! 1 ... (생략) Hello, world! 97 Hello, world! 98 Hello, world! 99
- do 다음에 오는 코드는 조건식과 상관없이 무조건 한 번은 실행된다. 따라서 printf가 한 번 실행되고, i++도 실행되어 i가 1 증가한다. 이 상태로 조건식에서 i가 100보다 작은지 검사하게 되는데, 아직은 i가 100보다 작으므로 계속 반복하다가 i가 100이 되면 i < 100은 거짓이 되므로 반복을 끝낸다.
- do while 반복문도 반드시 { } (중괄호) 안에 변화식을 지정해야 한다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 한다.[5]
반복문 생략과 탈출
break
- break는 영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다.
- break를 사용하지 않으면 for문이나 while문 같은 반복문은 종결조건이 될 때까지 계속해서 반복문을 돌게 된다. 하지만 이 break를 사용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있다.[6]
예시
#include <stdio.h> int main(){ int input; int cnt = 0; scanf("%d", &input); for(int i = 1; i < 50; i++){ if(i == input){ break; printf("break 완료"); } printf("%d ", i); } while(1){ if(cnt == input){ printf("\nwhile문 : %d\n", cnt); break; } cnt++; } return 0; }
- 위 코드는 50 이하의 숫자 중 입력값까지 출력하는 간단한 코드이다. 위처럼 조건문 안에 break를 쓰면 해당 조건을 만족했을 때 반복문을 빠져나가게 된다.
- 그리고 break를 만나면 바로 반복문을 빠져나가는 것이기 때문에, break 아래에 있는 코드는 실행되지 않는다. 따라서 "break 완료"라는 문구는 출력되지 않는다.
- while 조건안에 1을 넣어주어 무한 반복문을 만든 후, 특정조건에서 종료되게 할 수도 있다.[6]
continue
- continue는 영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.[6]
예시
#include <stdio.h> int main(){ for(int i=0; i<10; i++){ if(i%2 == 0){ continue; } printf("%d ", i); } return 0; }
위와 같이 continue는 어떤 특정 조건을 제외시킬 때 사용하는데, if문에 들어와서 continue를 만나면 바로 아래 코드는 무시하고 다음 반복문을 실행한다.[6]
자바 언어에서의 반복문
for문
- for문은 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다.
for문 알고리즘
이때 for문을 구성하는 초기식, 조건식, 증감식은 각각 생략할 수 있다.[7]
for문 문법
for (초기식; 조건식; 증감식) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } [7]
for문 예시
for (i = 0; i < 5; i++) { System.out.println("for 문이 " + (i + 1) + "번째 반복 실행중입니다."); } System.out.println("for 문이 종료된 후 변수 i의 값은 " + i + "입니다.");
- 실행결과
for 문이 1번째 반복 실행중입니다. for 문이 2번째 반복 실행중입니다. for 문이 3번째 반복 실행중입니다. for 문이 4번째 반복 실행중입니다. for 문이 5번째 반복 실행중입니다. for 문이 종료된 후 변수 i의 값은 5입니다.[7]
while문
- while문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다.[7]
while문 알고리즘
while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행한다.
내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단하게 된다.
이렇게 조건식의 검사를 통해 반복해서 실행되는 반복문을 루프(loop)라고 한다.
[7]
while문 문법
while (조건식) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; }
while문 예시
int i = 0; while (i < 5) { System.out.println("while 문이 " + (i + 1) + "번째 반복 실행중입니다."); i++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } System.out.println("while 문이 종료된 후 변수 i의 값은 " + i + "입니다.");
- 실행결과
while 문이 1번째 반복 실행중입니다. while 문이 2번째 반복 실행중입니다. while 문이 3번째 반복 실행중입니다. while 문이 4번째 반복 실행중입니다. while 문이 5번째 반복 실행중입니다. while 문이 종료된 후 변수 i의 값은 5입니다.[7]
- while문 내부에 조건식의 결과를 변경하는 명령문이 존재하지 않을 때는 프로그램이 영원히 반복된다.
- 이것을 무한 루프(infinite loop)에 빠졌다고 하며, 무한 루프에 빠진 프로그램은 영원히 종료되지 않는다.
- 무한 루프는 특별히 의도한 경우가 아니라면 반드시 피해야 하는 상황이다.
- 따라서 while 문을 작성할 때는 조건식의 결과가 어느 순간 거짓(false)을 갖도록 조건식의 결과를 변경하는 명령문을 반드시 포함시켜야 한다.[7]
do while문
enhanced for문
파이썬 언어에서의 반복문
각주
참고자료
- 김동근, 〈table 테이블〉, 《김동근의 텀즈, 컴퓨터 용어사전》, 2002-06-17
- 돌딱, 〈관계형 데이터베이스의 구조〉, 2020-03-18
- 개발자, 〈릴레이션의 특징과 용어〉, 2013-03-16
- 환, 〈DB에서 entityty란?〉, 2009년12월24일
- Tigercow, 〈엔터티(ENTITY)와 속성(ATTRIBUTE)〉, 2020-01-13
- 글그리, 〈데이터베이스 - 릴레이션(Relation)〉, 2017-03-09
- 무니봇, 〈릴레이션 스키마(Relation Schema), 릴레이션 인스턴스(Relation Instance), 속성(Attribute), 튜플(Tuple)〉, 2019-12-17
- victolee, 〈인덱스(Index)〉, 2019-05-18
같이 보기