"반복문"의 두 판 사이의 차이
88번째 줄: | 88번째 줄: | ||
:do 다음에 오는 코드는 조건식과 상관없이 무조건 한 번은 실행된다. 따라서 printf가 한 번 실행되고, i++도 실행되어 i가 1 증가한다. 이 상태로 조건식에서 i가 100보다 작은지 검사하게 되는데, 아직은 i가 100보다 작으므로 계속 반복하다가 i가 100이 되면 i < 100은 거짓이 되므로 반복을 끝낸다.<br> | :do 다음에 오는 코드는 조건식과 상관없이 무조건 한 번은 실행된다. 따라서 printf가 한 번 실행되고, i++도 실행되어 i가 1 증가한다. 이 상태로 조건식에서 i가 100보다 작은지 검사하게 되는데, 아직은 i가 100보다 작으므로 계속 반복하다가 i가 100이 되면 i < 100은 거짓이 되므로 반복을 끝낸다.<br> | ||
:do while 반복문도 반드시 { } (중괄호) 안에 변화식을 지정해야 한다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 한다.<ref name='re_exp3'>코딩도장, 〈[https://dojang.io/mod/page/view.php?id=231 do while 반복문 사용하기]〉</ref> | :do while 반복문도 반드시 { } (중괄호) 안에 변화식을 지정해야 한다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 한다.<ref name='re_exp3'>코딩도장, 〈[https://dojang.io/mod/page/view.php?id=231 do while 반복문 사용하기]〉</ref> | ||
− | + | == 반복문 생략과 탈출 == | |
+ | === break === | ||
+ | * break는 영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다. | ||
+ | :break를 사용하지 않으면 for문이나 while문 같은 반복문은 종결조건이 될 때까지 계속해서 반복문을 돌게 된다. 하지만 이 break를 사용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있다.<ref name='re_exp4'>한 눈에 끝내는 c언어 기초, 〈[https://edu.goorm.io/learn/lecture/201/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-c%EC%96%B8%EC%96%B4-%EA%B8%B0%EC%B4%88/lesson/417573/break%EC%99%80-continue break와 continue]〉</ref> | ||
+ | ==== 예시 ==== | ||
+ | #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를 쓰면 해당 조건을 만족했을 때 반복문을 빠져나가게 된다. <br> | ||
+ | 그리고 break를 만나면 바로 반복문을 빠져나가는 것이기 때문에, break 아래에 있는 코드는 실행되지 않는다. 따라서 "break 완료"라는 문구는 출력되지 않는다. <br> | ||
+ | while 조건안에 1을 넣어주어 무한 반복문을 만든 후, 특정조건에서 종료되게 할 수도 있다.<ref name='re_exp4'></ref> | ||
+ | === continue === | ||
+ | * continue는 영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.<ref name='re_exp4'></ref> | ||
+ | ==== 예시 ==== | ||
+ | #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를 만나면 바로 아래 코드는 무시하고 다음 반복문을 실행한다.<ref name='re_exp4'></ref> | ||
= 자바 언어에서의 반복문 = | = 자바 언어에서의 반복문 = | ||
2020년 8월 7일 (금) 11:21 판
반복문은 프로그래밍 언어에서 특정 작업을 반복적으로 수행하는 프로그래밍 문법이다. 주로 일정한 법칙 및 변화가 있는 작업을 할 때 사용된다. [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]
자바 언어에서의 반복문
파이썬 언어에서의 반복문
각주
- ↑ 한 눈에 끝내는 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〉
참고자료
- 김동근, 〈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
같이 보기