"반복문"의 두 판 사이의 차이
79번째 줄: | 79번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
− | * | + | * 실행 결과 |
Hello, world! 0 | Hello, world! 0 | ||
Hello, world! 1 | Hello, world! 1 | ||
235번째 줄: | 235번째 줄: | ||
System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다."); | System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다."); | ||
− | * | + | * 실행 결과 |
while 문이 종료된 후 변수 i의 값은 1입니다. | while 문이 종료된 후 변수 i의 값은 1입니다. | ||
246번째 줄: | 246번째 줄: | ||
== Enhanced for 문 == | == Enhanced for 문 == | ||
* JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 '''Enhanced for''' 문이라는 반복문이 새롭게 추가되었다. | * JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 '''Enhanced for''' 문이라는 반복문이 새롭게 추가되었다. | ||
− | :이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다. | + | :이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다.<ref name='re_exp6'>탭스쿨,〈[http://tcpschool.com/java/java_array_application Enhanced for 문]〉</ref> |
=== Enhanced for 문 문법 === | === Enhanced for 문 문법 === | ||
for (타입 변수이름 : 배열이나 컬렉션이름) { | for (타입 변수이름 : 배열이나 컬렉션이름) { | ||
255번째 줄: | 255번째 줄: | ||
:Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행된다. | :Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행된다. | ||
− | :루프마다 각 요소는 명시한 변수의 이름으로 저장되며, 명령문에서는 이 변수를 사용하여 각 요소를 참조할 수 있다. | + | :루프마다 각 요소는 명시한 변수의 이름으로 저장되며, 명령문에서는 이 변수를 사용하여 각 요소를 참조할 수 있다. <ref name='re_exp6'></ref> |
=== Enhanced for 문 예시 === | === Enhanced for 문 예시 === | ||
* Enhanced for 문을 사용하여 각 배열 요소의 값을 출력하는 예제 | * Enhanced for 문을 사용하여 각 배열 요소의 값을 출력하는 예제 | ||
264번째 줄: | 264번째 줄: | ||
System.out.print(e + " "); | System.out.print(e + " "); | ||
− | } | + | }<ref name='re_exp6'></ref> |
* 실행 결과 | * 실행 결과 | ||
− | 1 2 3 4 5 | + | 1 2 3 4 5 <ref name='re_exp6'></ref> |
= 파이썬 언어에서의 반복문 = | = 파이썬 언어에서의 반복문 = | ||
{{각주}} | {{각주}} |
2020년 8월 7일 (금) 13:13 판
반복문(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 문
- do while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
- 즉, do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.[7]
do while 문 알고리즘
do while 문 문법
do { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } while (조건식);[7]
do while 문 예시
int i = 1, j = 1; while (i < 1) { System.out.println("while 문이 " + i + "번째 반복 실행중입니다."); i++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } System.out.println("while 문이 종료된 후 변수 i의 값은 " + i + "입니다."); do { System.out.println("do / while 문이 " + i + "번째 반복 실행중입니다."); j++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } while (j < 1); System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다.");
- 실행 결과
while 문이 종료된 후 변수 i의 값은 1입니다. do / while 문이 1번째 반복 실행중입니다. do / while 문이 종료된 후 변수 j의 값은 2입니다.
- 위의 예제가 만약 while 문이었다면 단 한 번의 출력도 없었을 것이다.
- 하지만 do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행해 준다.[7]
Enhanced for 문
- JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 Enhanced for 문이라는 반복문이 새롭게 추가되었다.
- 이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다.[8]
Enhanced for 문 문법
for (타입 변수이름 : 배열이나 컬렉션이름) { 배열의 길이만큼 반복적으로 실행하고자 하는 명령문; }
- Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행된다.
- 루프마다 각 요소는 명시한 변수의 이름으로 저장되며, 명령문에서는 이 변수를 사용하여 각 요소를 참조할 수 있다. [8]
Enhanced for 문 예시
- Enhanced for 문을 사용하여 각 배열 요소의 값을 출력하는 예제
int[] arr = new int[]{1, 2, 3, 4, 5}; for (int e : arr) { System.out.print(e + " "); }[8]
- 실행 결과
1 2 3 4 5 [8]
파이썬 언어에서의 반복문
각주
- ↑ 한 눈에 끝내는 C언어 기초, 〈반복문이란? 〉
- ↑ 위키백과, 〈반복문 〉
- ↑ 3.0 3.1 3.2 코딩팩토리, 〈For문 사용법 & 예제 총정리 〉, 2019년 7월 24일
- ↑ 4.0 4.1 4.2 4.3 코딩팩토리, 〈While문 사용법, 예제 총정리〉, 2019년 7월 23일
- ↑ 코딩도장, 〈do while 반복문 사용하기〉
- ↑ 6.0 6.1 6.2 6.3 한 눈에 끝내는 c언어 기초, 〈break와 continue〉
- ↑ 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 탭스쿨,〈break와 반복문〉
- ↑ 8.0 8.1 8.2 8.3 탭스쿨,〈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
같이 보기