포털:고등학교/과학 계열 전문 교과/정보과학(2015 개정)/반복 실행 구조
3. 반복 실행 구조 프로그램의 순차적 명령실행 도중에 작업을 반복해야 하는 경우에 쓰인다. 구조에 따라: 단순 반복 1,단순 반복 2, for 반복, 중첩 반복이 있다. 반복에 따른 루프 구조의 사진 링크이다. https://t1.daumcdn.net/cfile/tistory/991ABB415D1D70B11C, https://t1.daumcdn.net/cfile/tistory/998F0A3D5D1D711B04, https://t1.daumcdn.net/cfile/tistory/991ABB415D1D70B11C, http://oopsla.sch.ac.kr/lecture/c/ju7/image/7-1-2.jpg
1) 단순 반복1 조건식의 계산이 참이 됨과 동시에 실행 부분을 반복적으로 실행하고, 조건식의 평과 결과가 거짓이 되는 경우에 실행 부분의 반복 실행을 중단하고 다음 명령으로 진행된다.
이러한 단순반복1의 whlie문은 조건식이 거짓이 아니라면 계속 실행되는 형태를 지닌다.
사용 코드: whlie(조건식){
문장; }
코드 설명: whlie(조건식):조건 검사 후 반복 실행
{ }:반복 실행 구역
2) 단순 반복2 whlie 문과 달리 문장을 우선 실행한 후 조건식이 만족여부를 판단한다. 그러므로 반복블록 do-whlie문은 적어도 한 번은 실행된다. 사용 코드: do{
문장; }(조건식);
코드 설명: do{ }:반복 실행 구역
whlie(조건식); 조건 검사후 반복 실행
3) for 반복 구조 반복 횟수를 정하기 위한 구조이고 반복횟수를 정하기 위해서는 시작값, 반복 종료 조건, 반복 후 종료에 필요한 값 변경이 필요하다. 이러한 값들을 표현해서 반복실행을 위해 for 반복 구조를 사용가능하다. 사용 코드: for(실행1; 조건식; 실행3)
{ 실행 2; }
코드 설명: 실행1 처음에 1회만 실행
조건식: 반복 조건 검사 실행2: 반복 실행 내용 실행3: 반복 실행 후 처리 이후 : 조건식 검사----->실행 2---->실행 3을 반복하는 과정을 거침
(추가) 일부의 반복과 반복의 중단: 반복 실행 중 반복 블록의 일부를 넘기거나 표현한 반복 휫수를 중단 시킬 때 사용된다. 사용 코드: ,,,,,,,
반복블록 { 실행 1; ,,,,,,,,,,,continue; 실행2; ,,,,,,,break; 실행3; } 실행4;
코드 설명: continue가 실행되면 이후의 실행을 중단하고 반복 블록의 처음으로 이동하여 다음 실행1의 반복을 수행한다.
break가 실행되면 반복을 중단하고 실행 4를 수행한다.
예시)(2이상)소수 판별하기
#include <stdio.h>
int i, n;
int main( ) {
scanf("%d", &n); for(i=2; i<n; i++) { if(n%i != 0) continue; else break; } printf("%s\n", i==n?"prime":"composite");
} if~ continue: 나누어 떨어지지 않으면 1만큼 증가시켜보고 다시 나누어 보기 break:나누어 떨어지면 반복 블록에서 벗어남 continue(나머지 부분을 실행하지 말고 다음 반복을 계속하라) break(반복을 중단하라)
4) 중첩 반복
(1)단순 반복 구조의 중첩: 기본적인 반복구조를 중첩,결합하여 복잡한 실행 구조를 만들때 사용한다. 사용 코드: 위에 설명된 코드의 반복 구조 안에 다른 반복 구조를 포함시켜 중첩된 반복 구조를 만든다(반복 블록 즉 괄호를 명확하게 작성해야한다) 반복1(반복 횟수1) { 실행1 ; 반복2 (반복 횟수2) { 실행2; } } (2)다중 반복 구조의 활용: 문제상황에서 반복적인 규칙성을 찾아낼 수 있다면 사용 가능, 하나의 반복 구조안에 서로 다른 반복구조를 구성할 수 있다.
예시)
- include <stdio.h>
int main( ) {
int n; scanf("%d", &n); for(int i=1; i<=n; i++) { if(i%2) for(int j=1; j<=n; j++) printf("%d ", (i-1)*n+j); else for(int j=1; j<=n; j++) printf("%d ", i*n-j+1); printf("\n"); }
}
구조만 보았을때 결론적으로 하나의 반복 구조 안에 두개의 반복구조이다