shop-wiz logo
Follow Us on Facebook Follow Us on Google+ Follow Us on Twitter Follow Us on LinkedIn


제어구조 이야기


프로그램이라고 하는 가장 원초적인 이유가 바로 제어구조 때문일것입니다. 이 경우에는 이렇게 저 경우는 저렇게.. 이리저리 미리 예측되는 경로안에서 여러가지 경우를 생각할 수 있는 것입니다. 프로그램을 오래하면서 스스로 생각하기에 if문 하나만 잘해도 프로그램 하는 것은 별로 어렵지가 않다고 여겨집니다. 그러나 고급으로 갈수록 프로그램은 단순하게 하면서 더 강력한 효과를 내기 위해서는 많은 제어문들을 보고 특성을 이해할 수 있어야 된다고 봅니다.

제어문은 크게 조건문 반복문으로 나누어 집니다.

조건문 : IF문, SWITCH문 - 주어진 조건의 참과 거짓의 여부에 따라 다음 플로우를 실행
반복문 : WHILE문, DO WHILE문, FOR 문 - 주어진 조건이 참일경우 계속해서 loop를 실행



IF문

if (조건) {|
문장1 // 참인 경우
}
else {
문장2 // 거짓인 경우
}


<?
$a = 12;
$b =20;
if ($a > $b) {
echo ("a가 크다 <br>");
}
else if ($a < $b) {
?>
b가 크다 <br>
<?
}else{
?>
a와 b 는 같다 <br>
<?
}
?>


결과보기

SWITCH문

 

switch (변수명) {
case 값1 :
문장1
break; // switch문 탈출
case 값2 :
문장2
break;
default:
문장3
}


<?
$var = 2;
switch ($var) {
case 1 :
echo ("var의 값은 1이다");
break;
case 2 :
echo ("var의 값은 2이다");
break;
case 3 :
echo ("var의 값은 3이다");
break;
default :
echo("var의 값은 알 수 없음");
}
?>


결과보기

※ switch문에서 break; 문을 생략하면 다음 case문으로 넘어간다.


2. 반복문
주어진 조건에 만족하는 동안 일정 구간을 반복하는 문

WHILE문

WHILE (조건) {
문장1
:
}

<?
$a = 0;
while ($a < 10) {
echo ("현재 변수 a의 값은 $a 로 10보다 적다 <br>");
$a ++ ;
}
?>


결과보기

※ while문은 조건이 만족하면 구간을 반복하고 거짓이면 탈출한다.

DO WHILE문

DO {
문장1
} WHILE (조건) ;


<?
$a = 5 ;
do {
echo ("현재 변수 a의 값은 $a 이다 <br>");
$a -- ;
} while ($a > 0)
?>


결과보기

※ do while문은 처음 1회는 무조건 수행, 2회 부터조건을 비교하여 수행한다.



FOR 문

FOR (초기값; 최종값;증감값) {
문장
}



<?
for($i = 1; $i <= 10; $i ++) {
if($i % 2 == 0) {
echo("변수 i 값은 $i <br>");
}
}
?>


결과보기



<?
for ($i=1; $i<=9; $i++) {
for ($j=2; $j<=9; $j++) {
$k = $i * $j;
printf("%d * %d = %d <br>", $i, $j, $k);
}
}
?>


결과보기



[설명]
오늘도 쓸데 없는 얘기(?)를 할려고 합니다.
오늘은 echo 문입니다.
php에서는 기본 출력이 echo "~~~"; 입니다. 그러나 이 echo 문도 다양하게 사용되어집니다.

<?
for($i=0; $i < 5; $i++){
?>
$i는 <?=$i;?> 입니다.
<?
}
?>

여기서와 같이 <? ?> 밖의 문은 echo 문과 동일하게 취급됩니다. php특성상 html이라는 텍스트 문서가 많이 들어가므로 이경우는 <? ?>밖에 사용하면 됩니다.
또한 <?=$i?>처럼도 html문속에서 변수단독으로 사용될 경우는 유용한 팁입니다.

모든 명령에서는 명령이 끝날때 ";(세미콜론)" 을 붙여야 한다고 이전에 말씀드린 것 같습니다. 그러나 "?>"와 같이 php가 끝날때는 ";"이 없어도 에러가 발생하지 않습니다.
즉 <?=$i;?> 나 <?=$i?>처럼 세미콜론이 있던 없던간에 모두가 에러가 발생하지 않습니다.


그리고 마지막으로 예전에 c 언어를 할때 출력의 표준인 print 를 php에서는 부담없이 사용하실 수 있습니다.
echo 대신에 print 를 사용하여도 무방하다는 뜻입니다.
print에는 printf와 같이 좀더 많은 옵션을 사용할 수 있는 명령이 있습니다.
printf("%d * %d = %d <br>", $i, $j, $k); 이 대표적인 예인데 %d는 decimal(?) 10진수를 뜻하는, 즉 정수의 포맷을 한다는 뜻입니다. %s 는 string(문자열)...%f는 float등을 뜻하겠져.. 이 포맷은 각각 "," 로 이루어지는 뒤의 변수를 받아 변수형을 취한뒤 특정한 형식으로 출력을 합니다. 소스분석을 하다보면 cgi 계열을 했던 분들이 많이 사용하는 출력형태이므로 눈여겨 봐 주시기 바랍니다.


Powered by shop-wiz since 2002, e-mail:wangta69@naver.com