Download presentation
Presentation is loading. Please wait.
1
chapter 07. 반복문
2
같은 작업을 반복적으로 수행할 필요가 있을 때 반복문을 사용한다.
반복문의 구성과 종류 같은 작업을 반복적으로 수행할 필요가 있을 때 반복문을 사용한다. 반복문은 반복할 문장과 반복조건으로 구성된다. - 달팽이는 우물을 탈출할 때까지 올라가는 과정을 반복한다. 반복문에는 do~while, while, for문이 있다.
3
do~while문은 일단 반복할 문장을 수행한 후에 조건을 검사한다.
달팽이가 3m의 우물을 탈출하는데 걸리는 일 수를 계산하는 예 int height=0; int days=0; do{ height=height+55; days=days+1; } while(height<300); printf(“달팽이가 우물을 올라가는 데 걸린 일 수 : %d\n”, days); // 달팽이의 현재 높이를 저장할 변수, 처음엔 0 // 일수를 세기 위한 변수 // 한 번 올라갈 때마다 55cm씩 증가한다. // 한 번 반복될 때마다 하루씩 증가한다. // 아직 우물을 탈출하지 못했으면 계속 반복한다.
4
반복조건을 먼저 확인하여 조건을 만족하는 경우에 반복한다.
while문 반복조건을 먼저 확인하여 조건을 만족하는 경우에 반복한다. 조건을 만족하지 않으면 반복할 문장을 한 번도 수행되지 않는다. int height=0, days=0, depth; printf(“우물의 깊이를 입력하세요(cm) : ”); scanf(“%d”, &depth); While(height<depth){ height=height+55; days=days+1; } printf(“달팽이가 우물을 올라가는 데 걸린 일 수 : %d\n”, days); // depth는 우물의 깊이를 입력 받을 변수 // depth에 0이 입력되었다면… // 조건식은 거짓이 되어 반복할 문장은 한번도 실행되지 않는다.
5
▶ 조건식이 반복문 중간에 있다면? 달팽이가 미끄러지는 경우는 반복문 중간에 조건을 판단한다. 이 때는 반복되는 규칙을 관찰하여 조건식이 가장 먼저 수행되도록 반복되는 부분을 결정하고 while문으로 작성한다.
6
▶ 조건식이 반복문 중간에 있다면? height=height+55; while(height<300){
days=days+1; } // 일단 우물을 올라간다. // 우물 안에 있는 동안 반복한다. // 벗어나지 못했으면 미끄러진다. // 하루를 증가시킨다. // 다음날 또 올라간다.
7
▶ 몇 번을 반복할 것인가? 특정 문장을 일정 횟수 반복할 때는 반복제어변수를 사용한다. - “사랑합니다”를 3회 출력하는 경우 반복 횟수는 초기식, 조건식, 증감식이 결정한다.
8
제어변수의 값을 반복문 안에서 활용하는 경우는 초기식, 조건식, 증감식을 적절하게 수정한다.
▶ 제어변수의 활용 제어변수의 값을 반복문 안에서 활용하는 경우는 초기식, 조건식, 증감식을 적절하게 수정한다. - 제어변수를 활용하여 구구단을 출력하는 예
9
증감연산자 반복문의 증감식은 주로 증감연산자를 사용하여 간단히 표현한다. 증감연산자에는 증가연산자(++)와 감소연산자(--)가 있다. 증감연산자의 피연산자는 변수가 와야 한다.
10
▶ 증감연산자의 두 가지 표현법(전위형, 후위형)
증감연산자는 사용 위치에 따라서 두 가지 형태로 사용된다. 증감식이 단독으로 사용될 때는 전위형과 후위형의 차이는 없으나 다른 연산자와 함께 쓰일 때는 다른 결과값이 달라진다. - 변수 a의 값이 5, b의 값이 6일 때
11
▶ 증감연산자의 사용 예 #include <stdio.h> int main() { int a=0, b=0; ++a;
printf("a=%d, b=%d\n", a, b); b=a++; b=++a; printf("a=%d, b=%d\n", a++, b++); return 0; } // a의 값은 0에서 1로 증가 // b의 값도 0에서 1로 증가 // a=1, b=1 출력 // a의 증가되기 전의 값이 b에 대입 // a=2, b=1 출력 // 증가된 a의 값이 b에 대입 // a=3, b=3 출력 // a, b모두 증가되기 전의 값 3이 출력 // a, b는 증가된 4가 출력
12
for문 while문의 초기식, 조건식, 증감식을 한곳에 모아 놓은 것이다. for문이 실행되는 순서
13
▶ 1부터 10까지의 합을 구하는 예 #include <stdio.h> int main() { int i;
int sum=0; for(i=1; i<=10; i++) { sum=sum+i; } printf("1부터 10까지의 합은 : %d\n", sum); return 0; // 반복제어변수로 사용한 변수 // 합을 누적시킬 변수 // i가 1부터 10까지 변하면서 10번 반복 // i의 값을 누적시킨다.
14
▶ 복합대입연산자 두 값을 연산한 결과를 다시 왼쪽의 변수에 대입하는 경우에 복합대입연산자를 사용할 수 있다.
사칙연산자와 나머지 연산자는 모두 복합대입연산자로 사용할 수 있다. 복합 대입연산식 연산 방법 일반 연산식 res += val; res와 val을 더해서 res에 저장 res = res + val; res -= val; res에서 val을 뺀 값을 res에 저장 res = res - val; res *= val; res와 val을 곱해서 res에 저장 res = res * val; res /= val; res를 val로 나눈 값을 res에 저장 res = res / val; res %= val; res를 val로 나눈 나머지를 res에 저장 res = res % val;
15
반복문안에 실행할 문장이 반복문인 경우 다중 반복문이다.
- 1부터 원하는 수까지 반복하는 경우(음수가 입력될 때까지 반복한다). 양수를 입력하세요 : 10 (엔터) 1부터 10까지의 합은 : 55 양수를 입력하세요 : 60 (엔터) 1부터 65까지의 합은 : 2145 양수를 입력하세요 : -1 (엔터) // 음수가 입력되면 프로그램 종료
16
▶ 1부터 n까지의 합을 반복하는 프로그램 #include <stdio.h> int main() { int n;
int i; int sum; printf("양수를 입력하세요 : "); scanf("%d", &n); while(n>0){ sum=0; for(i=1; i<=n; i++){ sum+=i; } printf("1부터 %d까지의 합은 : %d\n", n, sum); return 0; // 양수를 입력 받을 변수 // 반복제어변수 // 1부터 n까지의 합을 누적할 변수 // 양수일 때만 반복 // 누적변수 초기화 // i는 1부터 n까지 반복하면서 n번 반복 // i의 값을 sum에 누적 // 누적된 값 출력 // 반복을 위해 다시 양수를 입력 받는다.
17
1개의 단을 출력하는 것은 반복문이다(2단만을 출력하는 경우).
▶ 2중 for문을 사용한 구구단 출력 예 1개의 단을 출력하는 것은 반복문이다(2단만을 출력하는 경우). for(j=1; j<=9; j++){ printf(“2 * %d = %d\n”, j, 2*j); } // j의 값은 1부터 9까지 변하며 9번 반복 // j의 값을 사용하여 2단을 출력한다. 8개의 단(2단~9단)을 모두 출력하기 위해 2중 반복문을 사용한다. for(i=2; i<=9; i++){ for(j=1; j<=9; j++){ printf(“%d * %d = %d\n”, i, j, i*j); } // i의 값이 2부터 9까지 변하면서 8번 반복 // 반복 제어변수 i와 j를 활용한다. i가 2일 때 j는 1부터 9까지 변하면서 2단을 출력 i가 3일 때 j는 1부터 9까지 변하면서 3단을 출력 … i가 9일 때 j는 1부터 9까지 변하면서 9단을 출력
18
무한 반복문은 조건식이 항상 참이 되도록 작성한다.
for문을 사용한 무한 반복문 for( ; ; ){ printf(“뇌를 자극하는 C프로그래밍…\n”); }
19
반복문 중간에서 조건에 따라 반복을 종료할 때 break를 사용한다.
반복문 제어 반복문 중간에서 조건에 따라 반복을 종료할 때 break를 사용한다. - 양수를 입력 받아 누적하여 출력하는 예(음수값 입력시 종료). #include <stdio.h> int main() { int sum=0; int n; while(1){ printf("0또는 양수값을 입력하세요 : "); scanf("%d", &n); if(n<0) break; sum+=n; } printf("그 동안 누적된 값 : %d\n", sum); return 0; // 조건식이 항상 참이므로 무한 반복문 // 변수 n에 양수값 입력 // 입력 받은 값이 음수이면 반복문을 빠져나간다. // 그렇지 않으면 입력 받은 값을 sum에 누적
20
break문은 반복문이 중첩되어 있을 때 하나만 빠져나간다.
int i, j, cnt=0; for(i=1; i<=10; i++){ for(j=1; j<=10; j++){ cnt++; if(i+j==12) break; } for문 하나만 탈출한다! // i는 1부터 10까지 10번 반복 // j는 1부터 10까지 10번 반복 // cnt의 값을 하나씩 증가 break문은 반복문의 블록만을 벗어난다(switch~case문은 예외).
21
▶ continue는 반복문의 일부를 건너뛴다.
continue문은 실행위치를 반복문의 블록 끝으로 이동시키므로 continue문 이후의 문장을 건너뛰는 용도로 사용된다. - 1부터 100까지의 수 중에서 3의 배수를 제외한 합을 구하는 예
Similar presentations