Loop: while, do-while, for
차례
 반복명령문:
– while 문
– for 문
– do-while
 제어이동 명령문:
– break, continue,
 예제
2
While 문
 While 문 type 1
3
조건
F
T
B
A C
while( 조건 )
{
A ;
B ;
}
C ;
B
A
C
조건
While 문
 While 문 type 2
4
조건
F
T
B C
while( 1 )
{
A ;
if( !조건 ) break ;
B ;
}
C ;
A
While 문
 While 문 type 2
– Type1로 변형
5
조건
F
T
B C
A
조건
F
T
B C
A
A
A ;
while( 조건 )
{
B ;
A ;
}
C ;
While 문
 While 문 type 3
6
F
T
C
A
조건
B
while( 1 )
{
A ;
B ;
if( !조건 ) break ;
}
C ;
do
{
A ;
B ;
} while( 조건) ;
C ;
While 문
 While 문 type 3
– Type 1으로 변경
7
F
T
C
A
조건
B 조건
F
T
A C
A
B
B A ;
B ;
while( 조건 )
{
A ;
B ;
}
C ;
 주의 사항
while문
while (1) i++; /* infinite loop */
while(5/3) i++;
while(-1) i++;
while(0) i++; /*naver runs*/
8
for 문
 특수형태의 while문
9
조건
F
T
B E
A
D
for( A ; 조건 ; D )
{
B ;
C ;
}
E ;
C
A: 조건 바로 윗 문장
D: 반복되는 부분의 맨 끝 문장
for 문
 1부터 100사이의 짝수 더하기
10
Start
Var i, sum
Stop
i  100
sum
F
T
sum <- 0
i <- 2
i <- i + 2
sum <- sum + i
int i, sum ;
...
11
for 문
 for statement Syntax
for ( expr1; expr2; expr3 )
{
statement ;
...
}
next statement ;
expr1;
while (expr2)
{
st...
for 문
 Read 10 numbers and sum up those
int i, n ;
sum= 0 ;
i= 0 ;
while ( i< 10) {
scanf( “%d”, &n ) ;
sum += n ;
i++ ;
...
for 문
 Read 10 numbers and sum up those
int i, n ;
sum= 0 ;
i = 0 ;
while ( i< 10) {
scanf( “%d”, &n ) ;
sum += n ;
i++ ;...
14
for 문
 Counting up from 0 to n-1
 Counting up from 1 to n
 Counting up from n-1 to 0
 Counting up from n to 1
for (...
break 문
 break
– break문을 감싸는 루프에서 빠져 나온다.
15
while(A) {
B;
while(C) {
D;
if( E ) break;
F;
}
G;
if( H ) break ;
I ;
}
J;
continue 문
 continue
– continue를 감싸는 루프의 시작점(조건확인)으로 올라간다.
16
while(A) {
B;
while(C) {
D;
if( E ) continue;
F;
}
G;
if( H...
continue 문
 continue
17
while(A) {
B;
while(C) {
D;
if( E ) continue;
F;
G;
}
H;
if( I ) continue ;
J;
K;
}
L;
while(A) {...
 합이 7이 되는 양의 정수 3개의 리스트를 출력하시오.
Example
#include <stdio.h>
int main(void)
{
int i, j, k ;
for ( i = 0; i <= 7; ++i )
{
fo...
Example 1
 Add all integers between 1 and 100
19
Start
Var i, sum
Stop
i  100
sum
F
T
i <- 1
sum <- 0
i <- i + 1
sum <- ...
Example 1-1
 Add all integers between 1 and 100
20
Start
Var i, sum
Stop
sum
i <- 1
sum <- 0
i <- i + 1
sum <- sum + i
#i...
Example 2
 Add all even integers between 1 and 100
21
Start
Var i, sum
Stop
sum
i <- 1, sum <- 0
i <- i + 1
sum <- sum + ...
Example 3
 Find the largest n such that 1+2+…+n<1000
22
Start
Var n, sum
Stop
sum < 1000
n-1F
T
n <- 1, sum <- 0
n <- n +...
Example 3-1
 Find the largest n such that 1+2+…+n<1000
23
#include <stdio.h>
#include <math.h>
int main() {
int n, sum ;
...
Example 4
 (1+1+…+1)+ … + (10+10+…+10)
24
Start
Var a, b, sum
a = 1, sum = 0
sum
b = b + 1
sum = sum+ a
Stop
#include <st...
Example 5
 (2*1+2*2+…+2*9)+ … + (9*1+9*2+…+9*9)
25
Start
Var a, b, sum
a = 2, sum = 0
sum
b = b + 1
sum = sum+ a * b
Stop...
Example 6
 1+(1+2)+(1+2+3)+......+(1+....+10)
26
Start
Var n, a,
sum
Stop
sum
n <- 1, sum <- 0
n <- n + 1
sum <- sum + a
...
Upcoming SlideShare
Loading in …5
×

4. loop

314 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
314
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

4. loop

  1. 1. Loop: while, do-while, for
  2. 2. 차례  반복명령문: – while 문 – for 문 – do-while  제어이동 명령문: – break, continue,  예제 2
  3. 3. While 문  While 문 type 1 3 조건 F T B A C while( 조건 ) { A ; B ; } C ; B A C 조건
  4. 4. While 문  While 문 type 2 4 조건 F T B C while( 1 ) { A ; if( !조건 ) break ; B ; } C ; A
  5. 5. While 문  While 문 type 2 – Type1로 변형 5 조건 F T B C A 조건 F T B C A A A ; while( 조건 ) { B ; A ; } C ;
  6. 6. While 문  While 문 type 3 6 F T C A 조건 B while( 1 ) { A ; B ; if( !조건 ) break ; } C ; do { A ; B ; } while( 조건) ; C ;
  7. 7. While 문  While 문 type 3 – Type 1으로 변경 7 F T C A 조건 B 조건 F T A C A B B A ; B ; while( 조건 ) { A ; B ; } C ;
  8. 8.  주의 사항 while문 while (1) i++; /* infinite loop */ while(5/3) i++; while(-1) i++; while(0) i++; /*naver runs*/ 8
  9. 9. for 문  특수형태의 while문 9 조건 F T B E A D for( A ; 조건 ; D ) { B ; C ; } E ; C A: 조건 바로 윗 문장 D: 반복되는 부분의 맨 끝 문장
  10. 10. for 문  1부터 100사이의 짝수 더하기 10 Start Var i, sum Stop i  100 sum F T sum <- 0 i <- 2 i <- i + 2 sum <- sum + i int i, sum ; sum = 0 ; i = 2 ; while( i <= 100 ) { sum = sum + i ; i =+ 2 ; } printf( “%dn”, sum ) ; int i, sum ; sum = 0 ; for( i = 2 ; i <= 100 ; i =+ 2) { sum = sum + i ; } printf( “%dn”, sum ) ;
  11. 11. 11 for 문  for statement Syntax for ( expr1; expr2; expr3 ) { statement ; ... } next statement ; expr1; while (expr2) { statement ; ... expr3; } next statement ;
  12. 12. for 문  Read 10 numbers and sum up those int i, n ; sum= 0 ; i= 0 ; while ( i< 10) { scanf( “%d”, &n ) ; sum += n ; i++ ; } printf( “%dn”, sum ) ; 12 int i, n ; sum = 0 ; for( i = 0 ; i < 10 ; i++ ) { scanf( “%d”, &n ) ; sum += n ; } printf( “%dn”, sum ) ;
  13. 13. for 문  Read 10 numbers and sum up those int i, n ; sum= 0 ; i = 0 ; while ( i< 10) { scanf( “%d”, &n ) ; sum += n ; i++ ; } printf( “%dn”, sum ) ; 13 int i, n ; i= 0 ; for( sum = 0 ; i < 10 ; sum+=n) { scanf( “%d”, &n ) ; i++ ; } printf( “%dn”, sum ) ; int i, n ; i= 0 ; sum = 0 ; while ( i< 10) { scanf( “%d”, &n ) ; i++ ; sum += n ; } printf( “%dn”, sum ) ; int i, n ; sum = 0 ; for( i = 0 ; i < 10 ; i++ ) { scanf( “%d”, &n ) ; sum += n ; } printf( “%dn”, sum ) ;
  14. 14. 14 for 문  Counting up from 0 to n-1  Counting up from 1 to n  Counting up from n-1 to 0  Counting up from n to 1 for ( i = 0; i < n; i++ ) A; for ( i = 1; i <= n; i++ ) A; for ( i = n -1; i >= 0; i-- ) A; for ( i = n; i > 0; i-- ) A;
  15. 15. break 문  break – break문을 감싸는 루프에서 빠져 나온다. 15 while(A) { B; while(C) { D; if( E ) break; F; } G; if( H ) break ; I ; } J;
  16. 16. continue 문  continue – continue를 감싸는 루프의 시작점(조건확인)으로 올라간다. 16 while(A) { B; while(C) { D; if( E ) continue; F; } G; if( H ) continue ; I; } J;
  17. 17. continue 문  continue 17 while(A) { B; while(C) { D; if( E ) continue; F; G; } H; if( I ) continue ; J; K; } L; while(A) { B; while(C) { D; if( !E ) { F; G; } } H; if( !I ) { J; K; } } L;
  18. 18.  합이 7이 되는 양의 정수 3개의 리스트를 출력하시오. Example #include <stdio.h> int main(void) { int i, j, k ; for ( i = 0; i <= 7; ++i ) { for( j = 0; j <= 7; ++j ) { for ( k = 0; k <= 7; ++k ) { if ( i + j + k == 7 ) printf( "%d %d %dn", i, j, k ); } } } return 0; } 0 0 7 0 1 6 0 2 5 0 3 4 … 5 0 2 5 1 1 … 6 1 0 7 0 0 18
  19. 19. Example 1  Add all integers between 1 and 100 19 Start Var i, sum Stop i  100 sum F T i <- 1 sum <- 0 i <- i + 1 sum <- sum + i #include <stdio.h> int main() { int i, sum ; i = 0 ; sum = 0 ; while( i <= 100 ) { sum = sum + i ; i = i + 1 ; } printf( “%d”, sum ) ; return 0; }
  20. 20. Example 1-1  Add all integers between 1 and 100 20 Start Var i, sum Stop sum i <- 1 sum <- 0 i <- i + 1 sum <- sum + i #include <stdio.h> int main() { int i, sum ; i = 0 ; sum = 0 ; while( i <= 100 ) { sum = sum + i ; i = i + 1 ; } printf( “%d”, sum ) ; return 0; } i  100
  21. 21. Example 2  Add all even integers between 1 and 100 21 Start Var i, sum Stop sum i <- 1, sum <- 0 i <- i + 1 sum <- sum + i i is even ? T F #include <stdio.h> int main() { int i, sum ; i = 0 ; sum = 0 ; while( i <= 100 ) { if( i % 2 == 0 ) { sum = sum + i ; } i = i + 1 ; } printf( “%d”, sum ) ; return 0; } i  100
  22. 22. Example 3  Find the largest n such that 1+2+…+n<1000 22 Start Var n, sum Stop sum < 1000 n-1F T n <- 1, sum <- 0 n <- n + 1 sum <- sum + n #include <stdio.h> #include <math.h> int main() { int n, sum ; n = 1 ; sum = 0 ; while( 1) { sum = sum + n ; if( sum < 1000) break ; n = n + 1 ; } printf( “%d”, n-2 ) ; return 0; }
  23. 23. Example 3-1  Find the largest n such that 1+2+…+n<1000 23 #include <stdio.h> #include <math.h> int main() { int n, sum ; n = 1 ; sum = 0 ; sum = sum + n ; while( sum < 1000 ) { n = n + 1 ; sum = sum + n ; } printf( “%d”, n-2 ) ; return 0; } Start Var n, sum Stop n-1 n <- 1, sum <- 0 n <- n + 1 sum <- sum + n sum <- sum + n sum < 1000
  24. 24. Example 4  (1+1+…+1)+ … + (10+10+…+10) 24 Start Var a, b, sum a = 1, sum = 0 sum b = b + 1 sum = sum+ a Stop #include <stdio.h> #include <math.h> int main() { int a, b; a = 1 ; while( a <= 10 ) { b = 1 ; while( b <= 10 ) { sum = sum + a ; b = b + 1 ; } a = a + 1 ; } return 0; } a  10 b  10 b <- 1 a = a + 1
  25. 25. Example 5  (2*1+2*2+…+2*9)+ … + (9*1+9*2+…+9*9) 25 Start Var a, b, sum a = 2, sum = 0 sum b = b + 1 sum = sum+ a * b Stop #include <stdio.h> #include <math.h> int main() { int a, b; a = 2 ; while( a <= 9 ) { b = 1 ; while( b <= 9 ) { sum = sum + a*b ; b = b + 1 ; } a = a + 1 ; } return 0; } a  9 b  9 b <- 1 a = a + 1
  26. 26. Example 6  1+(1+2)+(1+2+3)+......+(1+....+10) 26 Start Var n, a, sum Stop sum n <- 1, sum <- 0 n <- n + 1 sum <- sum + a #include <stdio.h> #include <math.h> int main() { int n, a, sum ; n = 1 ; a = 1 ; sum = 0 ; while( n <= 10 ) { a = 1 ; while( a <= n ) { sum = sum + a ; a = a + 1 ; } n = n + 1 ; } printf( “%d”, sum ) ; return 0; } n  10 a <- 1 a  n a <- a + 1

×