웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[동주아빠] PHP 게시판 만들기 기초 (5) 제어문(下)
2002.12.25 15:07
이번 시간에는 for문, break, continue, switch 문 등에 대해 알아 보겠습니다.
for 문은 실제 프로그래밍에서 반복문으로 매우 많이 사용됩니다. 나머지 break, continue, switch 문도 매우 유용하게 사용할 수 있습니다.
간단한 예제를 통해 위의 제어문들에 대해 꼭 이해하고 넘어가는 시간이 되었으면 좋겠습니다.
1.for 문
for 문은,
for (표현식1 ; 표현식2 ; 표현식3)
명령문과 같은 식으로 사용됩니다.
여기서 표현식1은 for 문을 시작할 때 처음 실행되는 식입니다.
표현식2는 검사 조건을 나타내는데 표현식2가 참일 경우에만 명령문이 실행됩니다.
표현식3은 반복이 끝나고 실행되는 식입니다.
1부터 10까지의 합계를 구하는 프로그램을 while 문과 for 문을 이용해 만들어 보고 그 차이점을 살펴 봅시다.
1 : <?
2 : //1부터 10까지의 합계를 while 문을 이용해서
3 : $sum = 0 ;
4 : $number = 1 ;
5 : while ($number < 10 ) {
6 : $sum = $sum + $number ;
7 : $number = $number + 1 ;
8 : }
9 : echo "1부터 $number 까지의 합계 = $sum <br>";
10 :
11 : //1부터 10까지의 합계를 for 문을 이용해서
12 : $sum = 0 ;
13 : $number = 1 ;
14 : for($number = 1 ; $number < 10 ; $number++) {
15 : $sum = $sum + $number;
16 : }
17 : echo "1부터 $number 까지의 합계 = $sum";
18 : ?>
14행이 핵심이죠.
먼저 $number=1 이 먼저 실행됩니다. 그리고 $number < 10인지 검사합니다. 만약 참이면 $sum=$sum+$number가 실행됩니다. 그리고 $number++이 실행됩니다. 그리고 다시 $number < 10인지 검사하여 참이면 $sum=$sum+$number가 실행됩니다.
10까지의 합계를 구하려면 이런 식으로 하는구나하는 정도의 논리적인 해결은 할 줄 알아야 합니다. 이해될 때까지 보시구요.
참, 여기서 $number++은 $number=$number+1과 같은 뜻입니다.
2.break 문과 continue 문
break를 만나면 for, while, switch 등의 반복문을 빠져나갑니다.
반대로 continue를 만나면 반복문의 처음으로 되돌아 갑니다.
간단한 예제를 통해 직접 눈으로 확인해 봅시다.
1 : <?
2 : // break 문을 이용하여 반복문 빠져 나가기
3 : $sum = 0 ;
4 : $count = 1;
5 : while(TRUE) {
6 : $sum = $sum + $count ;
7 : $count = $count + 1 ;
8 : if ($count == 10) break ;
9 : }
10 : echo "1부터 $count 까지의 합계 = $sum <br>";
11 :
12 : // 1부터 10까지의 정수 중 홀수의 합계 구하기
13 : $sum = 0;
14 : $count = 0;
15 : while ($count < 10) {
16 : $count++ ;
17 : if($count % 2 == 0) continue;
18 : $sum = $sum + $count ;
19 : }
20 : echo "1부터 $count 정수 중에서 홀수의 합 = $sum ";
21 : ?>
5행을 보면 조건이 무조건 참인 것을 알 수 있습니다. 이것은 무조건 반복하라는 뜻입니다. 그리고 반복문 안에서 break 문을 사용해서 빠져나가게 됩니다.(실무에서도 이런 식으로 자주 사용합니다.)
8행을 보면 $count가 10이면 반복문을 빠져나가는 것을 알 수 있습니다.
17행을 보면 $count를 2로 나눈 나머지가 0이면, 즉 2의 배수(짝수)이면 18행을 실행하지 말고 15행으로 다시 돌아가라는 뜻입니다.
16행의 $count++은 $count=$count+1과 같은 뜻입니다.
비슷한 방식으로 18행의 $sum=$sum+$count를 $sum+=$count로 바꿔서 사용해도 됩니다. (이런 것은 모두 C언어의 연산자를 그대로 이어받은 경우라고 할 수 있습니다.)
3.switch 문
switch 문은 여러 개의 if 문을 사용하는 것과 비슷한 효과를 냅니다.
형식은,
switch(표현식) {
case 표현식1 :
명령문1
case 표현식1 :
명령문1
…
default
명령문
}와 같이 사용합니다.
1 : <?
2 : $number = 10 ;
3 : switch ($number) {
4 : case $number < 0 :
5 : echo "$number 는 음수입니다.";
6 : break;
7 : case 0 : // case $number == 0; 과 동일함
8 : echo "$number 는 0입니다.";
9 : break;
10 : case $number > 0 ;
11 : echo "$number 는 양수입니다.";
12 : break;
13 : }
14 : ?>
3행의 $number의 값을 기준으로 case 문에서 일치하는 값이 있으면 그 명령문을 실행합니다.
만약 해당 사항이 없을 경우 default의 명령문을 실행하는데 여기서는 default를 사용하지 않았습니다.</ol>
프로그래밍을 정말 처음으로 접한 분이라면 이번 시간의 내용이 어렵게 느껴질 수도 있습니다. 제가 '이런 것은 C와 비슷합니다.'라고 말하는 것이 아무런 의미없이 다가오는 분이 분명 있을 겁니다. 그러면 그냥 무시하고 넘어가세요. 열번의 설명보다 실제 코드를 스스로 열번 뚫어지게 쳐다보는 것이 더 중요합니다. 그러면 자연스레 이해가 되게 되어 있습니다.
이상 동주아빠 손병목이었습니다.
for 문은 실제 프로그래밍에서 반복문으로 매우 많이 사용됩니다. 나머지 break, continue, switch 문도 매우 유용하게 사용할 수 있습니다.
간단한 예제를 통해 위의 제어문들에 대해 꼭 이해하고 넘어가는 시간이 되었으면 좋겠습니다.
1.for 문
for 문은,
for (표현식1 ; 표현식2 ; 표현식3)
명령문과 같은 식으로 사용됩니다.
여기서 표현식1은 for 문을 시작할 때 처음 실행되는 식입니다.
표현식2는 검사 조건을 나타내는데 표현식2가 참일 경우에만 명령문이 실행됩니다.
표현식3은 반복이 끝나고 실행되는 식입니다.
1부터 10까지의 합계를 구하는 프로그램을 while 문과 for 문을 이용해 만들어 보고 그 차이점을 살펴 봅시다.
1 : <?
2 : //1부터 10까지의 합계를 while 문을 이용해서
3 : $sum = 0 ;
4 : $number = 1 ;
5 : while ($number < 10 ) {
6 : $sum = $sum + $number ;
7 : $number = $number + 1 ;
8 : }
9 : echo "1부터 $number 까지의 합계 = $sum <br>";
10 :
11 : //1부터 10까지의 합계를 for 문을 이용해서
12 : $sum = 0 ;
13 : $number = 1 ;
14 : for($number = 1 ; $number < 10 ; $number++) {
15 : $sum = $sum + $number;
16 : }
17 : echo "1부터 $number 까지의 합계 = $sum";
18 : ?>
14행이 핵심이죠.
먼저 $number=1 이 먼저 실행됩니다. 그리고 $number < 10인지 검사합니다. 만약 참이면 $sum=$sum+$number가 실행됩니다. 그리고 $number++이 실행됩니다. 그리고 다시 $number < 10인지 검사하여 참이면 $sum=$sum+$number가 실행됩니다.
10까지의 합계를 구하려면 이런 식으로 하는구나하는 정도의 논리적인 해결은 할 줄 알아야 합니다. 이해될 때까지 보시구요.
참, 여기서 $number++은 $number=$number+1과 같은 뜻입니다.
2.break 문과 continue 문
break를 만나면 for, while, switch 등의 반복문을 빠져나갑니다.
반대로 continue를 만나면 반복문의 처음으로 되돌아 갑니다.
간단한 예제를 통해 직접 눈으로 확인해 봅시다.
1 : <?
2 : // break 문을 이용하여 반복문 빠져 나가기
3 : $sum = 0 ;
4 : $count = 1;
5 : while(TRUE) {
6 : $sum = $sum + $count ;
7 : $count = $count + 1 ;
8 : if ($count == 10) break ;
9 : }
10 : echo "1부터 $count 까지의 합계 = $sum <br>";
11 :
12 : // 1부터 10까지의 정수 중 홀수의 합계 구하기
13 : $sum = 0;
14 : $count = 0;
15 : while ($count < 10) {
16 : $count++ ;
17 : if($count % 2 == 0) continue;
18 : $sum = $sum + $count ;
19 : }
20 : echo "1부터 $count 정수 중에서 홀수의 합 = $sum ";
21 : ?>
5행을 보면 조건이 무조건 참인 것을 알 수 있습니다. 이것은 무조건 반복하라는 뜻입니다. 그리고 반복문 안에서 break 문을 사용해서 빠져나가게 됩니다.(실무에서도 이런 식으로 자주 사용합니다.)
8행을 보면 $count가 10이면 반복문을 빠져나가는 것을 알 수 있습니다.
17행을 보면 $count를 2로 나눈 나머지가 0이면, 즉 2의 배수(짝수)이면 18행을 실행하지 말고 15행으로 다시 돌아가라는 뜻입니다.
16행의 $count++은 $count=$count+1과 같은 뜻입니다.
비슷한 방식으로 18행의 $sum=$sum+$count를 $sum+=$count로 바꿔서 사용해도 됩니다. (이런 것은 모두 C언어의 연산자를 그대로 이어받은 경우라고 할 수 있습니다.)
3.switch 문
switch 문은 여러 개의 if 문을 사용하는 것과 비슷한 효과를 냅니다.
형식은,
switch(표현식) {
case 표현식1 :
명령문1
case 표현식1 :
명령문1
…
default
명령문
}와 같이 사용합니다.
1 : <?
2 : $number = 10 ;
3 : switch ($number) {
4 : case $number < 0 :
5 : echo "$number 는 음수입니다.";
6 : break;
7 : case 0 : // case $number == 0; 과 동일함
8 : echo "$number 는 0입니다.";
9 : break;
10 : case $number > 0 ;
11 : echo "$number 는 양수입니다.";
12 : break;
13 : }
14 : ?>
3행의 $number의 값을 기준으로 case 문에서 일치하는 값이 있으면 그 명령문을 실행합니다.
만약 해당 사항이 없을 경우 default의 명령문을 실행하는데 여기서는 default를 사용하지 않았습니다.</ol>
프로그래밍을 정말 처음으로 접한 분이라면 이번 시간의 내용이 어렵게 느껴질 수도 있습니다. 제가 '이런 것은 C와 비슷합니다.'라고 말하는 것이 아무런 의미없이 다가오는 분이 분명 있을 겁니다. 그러면 그냥 무시하고 넘어가세요. 열번의 설명보다 실제 코드를 스스로 열번 뚫어지게 쳐다보는 것이 더 중요합니다. 그러면 자연스레 이해가 되게 되어 있습니다.
이상 동주아빠 손병목이었습니다.
댓글 10
-
최형석
2002.12.30 10:41
-
최의영
2002.12.26 14:45
^^덕분에 잘 배우고 있어요~ -
손병목
2002.12.26 01:14
컥~ 이럴수가... *^^*
$number <= 10 으로 정정합니다. -
최의영
2002.12.25 21:44
1부터 10까지 합은 55인데요..
$number < 10 요기서 < 이걸 <= 이렇게 바꿔야 겠네요.. -
손병목
2003.01.01 18:31
ㅋㅋ 죄송합니다. 사소한 것인데도 신경을 못쓰구요.
$number = $number - 1; 이라는 줄을 추가해야겠네요.....(부끄러버라~) -
윤병주
2003.01.05 23:00
php 왕초보입니다. 님의 강좌 잘보고 있습니다.
앞으로도 계속 강좌를 올려주세요 감사하구여 새해복마니 받으세요 (__) -
김재현
2003.01.04 23:16
여기 강좌의 break 를 이용하면 되겠네요.. ^^
<?
// 1부터 10까지의 합계를 while 문을 이용해서
$sum = 0;
$number = 1;
while ( $number <= 10 ) {
$sum = $sum + $number;
if ( $number == 10 ) break;
$number = $number + 1;
}
echo "1부터 $number 까지의 합계 = $sum <br>";
// 1부터 10까지의 합계를 for 문을 이용해서
$sum = 0;
$number = 1;
for ( $number = 1 ; $number <= 10 ; $number++) {
$sum = $sum + $number;
if ( $number == 10 ) break;
}
echo "1부터 $number 까지의 합계 = $sum";
?> -
복짱닷컴
2003.04.07 00:55
역시 여기서부터
조금씩 어려워지는군여...T_T
정말 알기쉽게 쓰신 것 같은데...
각 용어들이 아직 익숙하지 않은 상태에서는
좀 어렵게 다가오네요 ^^;;
예제같은 것들이 많으면 좋을텐데 ^^
연습문제?? -
Soon^^v
2004.02.12 01:09
무슨 명령문으로 무슨 예제를 하라 라고 하면 쉬운데 막상 예제만 주고 명령문을 뭘로 할지 모를때 난감하네요 -_-;;
1년전에 쓰신글인데... 정말 도움 많이되네요 ^-^ 감사합니다. -
나무스타일
2004.02.25 18:06
수고하셨습니다. 좋은 글 잘 보고 있습니다.
1부터 11까지 합은 55
이렇게 11까지가 나오는딩?
어떻게 수정해야 하나요
변수 말고 그냥 11이라고 쓸까?ㅋㅋㅋ