while, for, continue, break, switch
제어구조
while
while은 어떤 블록을 계속적으로 반복해야 할 때 사용합니다.
이렇게 블록을 반복하여 수행하는 것을 루프라고 하는데,
while의 경우 조건절이 참일 경우 무한 반복하게 됩니다.
<?php
$i = 1;
while ($i <= 10) {
//구문이 참이면.. 중괄호부분을 무한반복
echo $i++; //$i 가 1씩 계속 증가하니 10번 반복하면 끝나겠지요?
}
?>
12345678910
위의 소스에서 보시다시피 변수 $i는 실행시마다 1씩 증가하며..
구문은 변수 $i의 값을 매번 체크하여 참일 경우 다시 실행 시키게 됩니다.
따라서 while 구문은 10번 실행후 자동 종료됩니다. ^^
뭔소린지 아시겠죠? ^^;; 하핫..
do .. while
do .. while 구문은 while 문과 유사하며..
조건절이 뒤에 있기 때문에 반드시 한번은 실행을 된다는 차이가 있습니다.
<?php
$i = 0;
do { //우선 한번 무조건 실행하고 본다..
echo $i;
} while ($i >0) // $i 가 0보다 크면 다시 반복
?>
0
무조건 한번 실행하고 조건절을 판단하므로 위와 같은 결과를 내게 됩니다.
만약 while 문을 썼다면 아무 결과도 안나왔겠죠.
while 의 경우엔 처음부터 조건절을 확인하여 참인 경우만 반복하기 때문입니다.
프로그래밍에서는 제어구조가 정말 중요합니다.
고등학교 수학시간에 배운 순서도 처럼 프로그래밍은 만들려고 하는 프로그램의
전체 흐름을 파악하는 것이 매우 중요합니다.
이러한 흐름을 잘 파악하고 제대로 표현할 수 있어야 유능한 프로그래머가 되겠죠? ^^;;;
for
for 문은 while과 같은 루프입니다.
for (expr1; expr2; expr3) statement
와 같은 형식을 가지며.. expr1 이 무조건 한번 실행된 후에..
expr2 조건을 검사합니다.
expr2가 참이면 statement를 실행하고 statement가 모두 실행되면 expr3를 실행합니다.
( 뭔말인지 모르시겠죠? ^^;;;; )
소스를 보시면 쉽게 이해하실 수 있을 것입니다.
<?php
/* 아래는 모두 1 부터 10까지 출력하는 프로그램입니다.
그 차이를 한번씩 생각해 보세요..
가장 일반적인 방법은 첫번째 방법입니다.
*/
for ($i=1; $i <=10; $i++) {
echo $i;
}
for ($i = 1;;$i++) {
if ($i >10 ) {
break; // 루프를 빠져나감
}
echo $i;
}
$i=1;
for (;;) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
for ( $i = 1; $i <= 10; print $i,$i++ ) ;
//print는 되는데.. echo는 안되네요...
?>
나머지 세 방법은 일단은 이렇게도 할 수 있구나 정도로 이해하시면 됩니다.
break
break 문은 위에서 배운 for 와 앞서 배운 while 같은 루프를 빠져나오는 명령입니다.
위의 소스에서 보듯이 (14번째줄) 변수 $i가 10보다 커지면.. break에 의해 for 문을 빠져나오게 됩니다.
(switch 문을 벗어날 때도 break를 씁니다. 아래에서 배움)
continue
continue는 break와 달리 루프의 처음으로 돌려 보내는 명령입니다.
<?php
$i = 0;
while ($i++ < 3) { //세번만 실행해보도록 하겠습니다. echo "첫번째 루프<br>\n";
while (1) {
echo " 두번째 루프<br>\n";
while (1) {
echo " 세번째 루프<br>\n";
continue 3;
}
echo "절대 안나오지롱~<br>\n";
}
echo "나도 나오게 해줘 제발~ ㅜㅜ<br>\n";
}
?>
첫번째 루프
두번째 루프
세번째 루프
첫번째 루프
두번째 루프
세번째 루프
첫번째 루프
두번째 루프
세번째 루프
위 소스에서 보듯이 (9째줄) continue 다음에 숫자 옵션을 추가하여..
루프를 몇 단계 벗어날지도 설정할 수 있습니다.
세단계 루프를 벗어나니까.. 11번째줄과 13번째줄은 절대 프린트가 안되겠죠? ^^
switch
다음은 switch 문을 if 문으로 표현한 것입니다. 소스를 보시면 쉽게 이해되실거예요^^
<?php
if ($i == 0) {
print "i 는 0";
}
if ($i == 1) {
print "i 는 1";
}
if ($i == 2) {
print "i 는 2";
}
//위의 if 구문과 아래 switch문은 같습니다.
switch ($i) {
case 0:
print "i 는 0";
break;
case 1:
print "i 는 1";
break;
case 2:
print "i 는 2";
break;
}
?>
위 소스에서 보듯이 switch 문은 if 문을 여러 개 정렬해놓은 것과 같습니다.
예를 들면 90점은 A 80점은 B 70은 C 같이 등급을 매길 때 유용하게 쓸 수 있습니다.
근데.. 50점 이하는 모두 F를 주고 싶은데.. 귀찮게 50 40 30 .. 모두 case를 만들기가 그렇죠?
이럴 때 default를 쓰면 됩니다. case로 지정안된 모든 값은 default 값으로 정해지는 거죠
case 처럼 default : 이렇게 쓰면 되구요.. break는 쓸 필요가 없습니다.
<?php
if ($i == 0) {
print "i 는 0";
}
elseif ($i == 1) {
print "i 는 1";
}
elseif ($i == 2) {
print "i 는 2";
}
else {
print "i는 0,1,2가 아니다";
}
switch ($i) {
case 0:
print "i 는 0";
break;
case 1:
print "i 는 1";
break;
case 2:
print "i 는 2";
break;
default :
print "i는 0,1,2 가 아니다";
}
?>
if 구문과 비교하면서 잘 생각해 보세요..^^