본문 바로가기

반복실행문

반응형

반복문이라는건 말 그대로 똑같은 작업을 반복하게 만드는거죠...
물론 반복에는 어느선까지만...이라는 조건이 있고요..
이 조건이 잘못되면 컴터는 죽을때까지 반복을 합니다...(-_-무식하긴..)

반복문에는 크게~ for와 while이 있습니다...
(뭐 또 다른게 있긴하죠?;;;)
암튼...for만 알아도 반복문은 끝납니다...

우선 for의 문법은...

for(초기값;조건;증가값)
{실행문}

위와 같습니다.
임의의 변수에 초기값을 주고 한번 반복할때마다 증가값만큼 증가하면서
조건에 맞으면 그만두는거죠;;; 예제를 봅시다...

test.php를 꺼내시고...소스를 다음과 같이 수정합니다.

<?
for($i=0 ;$i<5 ;$i++)
{$a++;}
echo $a;
?>

초기값으로 $i에다가 0을 줬죠...그리고 조건에서 $i<5 즉, $i가 5보다 작을때까지 입니다.....0이니까 5보다 작죠?...
그래서 { }를 한번 실행합니다....$a에는 값이 없었으니 $a++이니까 1이 되겠죠...
다시 올라갑니다....올라가면서 증가값만큼 $i가 증가하죠..$i++이니까 이제 $i는 1입니다.

자~ 다시 한바뀌 돌죠....$a++이니까 $a는 3가 되죠...
다시 올라가서 $i는 3이 되고...5보다 작으니까 또 돌죠...

그럼 이제 $a는 4가되죠...다시 올라가서 $i는 4....5보다 작으니까 또 돌고..
$a=5가 되었습니다.....다시 올라가서 $i는 5가 되죠.....
또 돌까요?......
아니죠..^^ 조건에서 $i<5 니까 5<5는 거짓이죠....
그래서 for문을 빠져나옵니다...

결국 화면에는 5가 찍히는거죠...;;

복잡하게 생각할것 없습니다.....
그냥 단순히 조건이 참인 동안만 죽어라 반복합니다.

보통 어느 언어를 배우든 반복문의 예제로 1부터 100까지의 합을 구하는걸 많이 하는데......우리도 한번 해보죠;;;

<?
for($i=1;$i<=100;$i++)
{$a=$a+$i;}
echo $a;
?>

쉽죠?....이렇게 하면 1부터 어디 까지든 더할수 있습니다.
구지 설명하자면 $i가 1부터 100까지 도는 거죠...
$a에는 이전의 자기 자신과 $i가 더해지는 겁니다...
이해가 안가신다면...풀어서 한번 보죠;;;

   $a  $i  $a(최종값)
1) 0 + 1 = 1
2) 1 + 2 = 3
3) 3 + 3 = 6
4) 6 + 4 = 10
        .
        .

이해가 가시리라 믿습니다....
이제 좀더 재미난걸 해볼까요?...

이런경우가 가끔있죠....
메뉴페이지를 만드는데 메뉴 버튼이 10개가 있습니다.
버튼이미지이름은 1.gif부터 10.gif라고 하죠;;;
이럴때 for문으로 한번 돌려볼까요?

<?
for($i=1;$i<=10;$i++)
{
echo"<img src=${i}.gif><br>";
}
?>

결과는?

<img src=1.gif><br><img src=2.gif><br><img src=3.gif><br><img src=4.gif><br><img src=5.gif><br><img src=6.gif><br><img src=7.gif><br><img src=8.gif><br><img src=9.gif><br><img src=10.gif><br>

위와 같이 나오겠죠;;;
그런데 이럴때 이렇게 해주면 소스가 이뿌게 나옵니다.

<?
for($i=1;$i<=10;$i++)
{
echo"<img src=${i}.gif><br>
";
}
?>

echo문 끝에
를 추가했죠....이건 한줄을 띄우라는것입니다.
<br>이랑은 다른개념인데...텍스트문서에서 한줄띄우기로 보시면 됩니다.
결국
를 아무리 많이 쳐봐야 브라우져에서는 똑같습니다.
단지 소스에서 한줄씩 떨어지게 되는거죠;;;

자 이번엔 좀더 난이도 있는 예제를 해보도록하죠;;;
ㅡ.ㅡ구구단 입니다...

자~ 해보세요;;;;



-_-;;애매하죠?

2단부터 9단까지니까....2부터 9까지 돌리면 되겠는데;;;
그 속이 문제로군요;;; 천천히 봅시다....

우선 2단부터 9단까지 만들죠;;

<?
for($i=2;$<=9;$i++)
{ }
?>

됐습니다;;
그럼 이제 저 소스와는 따로....2단만 만들어 볼까요?

<?
for($k=1;$k<=9;$k++)
{echo "2 x $k = ".(2*$k);}
?>

맞죠? ($i가 아닌 $k로 준건은 위에것과 겹치는것을 방지하기 위해서입니다)
.(점연산자)로 합친것 뿐인데....결국은 2 x 1 = 2 , 2 x 2 = 4...이렇게 나가겠죠? (수식연산은 따옴표 밖에서 해야 됩니다)

그럼이제 이 두개의 for문을 합쳐버리죠;;;
두번째 것을 처음것 속에 넣으면 되겠습니다~~~~~합체!!!

<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "2 x $k = ".(2*$k);}
}
?>

끝난게 아니죠....이렇게 실행하면 2단만 죽어라 나옵니다...
이렇게 바꿔줘야죠....2를 $i로...

<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k;}
}
?>

됐죠?....
모양도 이뿌게 하기 위해서....줄좀 띄워줄까요.?

<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k."<br>";}
}
?>

점연산자를 헷갈리지 마세요....
점으로 구분된 세 단락이 보이시죠?

("$i x $k = ")  ($i*$k)  ("<br>")

이렇게 말이죠....$i*$k에 따옴표를 안붙인 이유는 앞서 얘기했듯이...
따옴표속에서는 계산이 되지 않기 때문입니다.

자 그럼 이제 몇단 인지도 한번 찍어볼까요?
-_-엇;;;근데 어떻게 해야되죠?

-_,- 이렇게~

<?
for($i=2;$i<=9;$i++)
{
echo "<br>${i}단<br>";
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k."<br>";}
}
?>

-_-?됐죠?;;
자 이번엔 while문입니다....
형태는.....

while(조건)
{실행문}

위와 같습니다.....
그냥 조건이 참일 동안 반복하는것인데...for랑은 약간 다르죠?
1부터 100까지 한번 더해보죠;;

<?
$i=1;
while($i<=100)
{
$a=$a+$i;
$i++;
}
echo $i;
?>

$i에다가 1을 주고...while문에 들어갑니다....
100보다 작거나 같죠?..참이니까 한번 돕니다...
돌고 나면 $i++이니까 $i는 2가 되죠...
그럼 아까 for문에서 처럼 돌게 되는거죠...
돌다가 돌다가......$i가 101이 되는순간 while문을 빠져나옵니다..

반복문은 하다보면 재밌고도 -_- 짜증납니다...
이해를 하셔야 겠죠;;;

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.