반복문 - FOR문
반복문이라함은 1부터 100까지 누적되는 합을 구하거나 구구단 2~9단까지 출력하거나 할 때 사용됩니다 .
종류에는 for문, while문, do-while문이 있습니다.
for문 부터 알아볼까요? for문을 알려면 간단하게 1부터 10까지 출력해보는 소스를 구현해 보면 이해가 쉽습니다. 물론 실전으로 가면 여러가지 경우들이 있는데요. for문은 많이 사용합니다. 잘 알아두셔야 해요~!!
1 ~ 10을 줄을 바꿔가면서 직접쓰려면 아래와 같이 해야겠죠?
<?php echo "1 <br />"; echo "2 <br />"; echo "3 <br />"; echo "4 <br />"; echo "5 <br />"; echo "6 <br />"; echo "7 <br />"; echo "8 <br />"; echo "9 <br />"; echo "10 <br />"; ?>
위와 같이 쳐야 하지만
for문을 이용하면 소스를 굉장히 줄여 사용할 수 있습니다.
<?php for ($a = 1; $a <= 10; $a++) { echo " $a <br />"; } ?>
위와같이 3줄로 해낼수가 있습니다.
그러면 수행과정을 알아볼까요?
<?php for($a = 1; $a <= 10; $a++){ echo " $a <br />"; } ?>
for($a = 1; $a <= 10; $a++)여기에 보면 3개의 명령문들이 보입니다. 순서대로 (변수선언,조건,증감식)
변수 $a=1을 선언하였다. 즉 a에 1을 대입
그렇다면 조건 $a <= 10 에서 참, 거짓을 구분한다.
참이라면
echo "$a <br />" ; 를 실행한다.
실행을 한후에 $a++를 실행한다.
$a++를 실행을 하면 a는 2가 대입된다.
그리고 나서
조건 $a <= 10에서 참, 거짓을 다시 구분한다. 전에는 1이기 때문에 참이었으며 지금은 2이기 때문에 또 참이므로
echo문을 실행한다. 그후 다시 $a++를 실행하며 다시 조건의 참, 거짓을 판별한다. 이런식으로
계속 반복이 되며 a에 11이 대입이 되면 거짓으로 판별되어 echo문을 더이상 수행하지 않게 된다.
그렇다면 1부터 10까지 누적되는 값을 구해보자.
<?php echo "1부터 10까지 for문을 이용하여 누적된 값을 구하는 <br />"; echo "=============================================== <br />"; $sum = 0; // 누적되는 값을 여기에다가 저장시키기 위하여 선언 for($a = 1; $a <=10; $a++){ $sum += $a; echo " {$a}까지 누적합은 {$sum}입니다.^^ <br />"; } ?>
누적된 값을 저장할 무언가가 필요하기에 $sum을 선언하여 그곳에 누적된값을 저장시킨다.
그렇게 되면
for($a = 1; $a <=10; $a++)
{
$sum += $a;
echo " {$a}까지 누적합은 {$sum}입니다.^^ <br />";
a는 1 이고 1은 10보다 작기때문에 조건식에서 참으로 판별된다.
참으로 판별이 되었으므로 아래의 명령을 수행한다.
$sum은 0이었으나 += $a;를 수행하여 1이 더해져서 $sum 값이 1이 된다.
그후 echo문을 수행한다.
그후 증감식을 수행한다 .$a++ 하였으므로 $a는 2가 되었고
조건에서 10보다 작아서 참으로 판별이 되었으며
$sum += $a; 를 수행한다. 여기서 $sum 은 1이고 $a는 2이므로 1+2가 되므로 $sum 은 3이 된다.
그후다시 echo문 수행, 다시 증감식 수행 그럼 $a는 3이 되고 이런식으로 쭉 조건이 참을 판별하게 되면 반복하게 되어 11이
되면 수행을 멈추게 된다. 거짓으로 판별되었기 때문에...
이중 for문
2중 for문은 for문 안에 서 또 for문을 선언하는 것이다. 어렵게 생각할 필요가 전혀 없다. 그냥 말 그대로 for문에서 또 for문이 들어가는 것 뿐이다.
예를 들어
구구단 2,3단의 숫자 3까지만 만들어보면
<?php for($a = 2; $a <= 3 ; $a++){ echo " 구구단 $a 단 <br />"; for($b = 1; $b <= 3 ; $b ++){ $mul = $a * $b; echo " $a * $b = $mul <br />"; } } ?>
for문을 선언했습니다? 2부터 시작한 이유는 2단부터이기 때문입니다.
3보다 작으므로 조건에 참으로 되어서 다음 실행문을 실행을 합니다.
그럼 구구단 2단 이 출력 되고 그 다음을 실행합니다.
그 다음이 for문 이네요 그러므로 for문을 실행합니다.
b =1; b < =3; b++
그리고 a 와 b를 곱한값을 저장하기 위한 변수 mul을 선언합니다.
그리고 마지막 실행문인 echo " $a * $b = $mul을 실행합니다.
그리고 나서
현재 a는 2 b는 1이므로
2 * 1 = 2($mul)
b를 증가시키고 2로 변환되어서 조건에 참을 만족한후
다시 echo문 실행 하므로
2 * 2 = 4
가 실행 됩니다.그후 다시 b는 증가되어서 3이 됩니다.3과 같으므로 다시 참을 만족하여
2 * 3 = 6 을 표현하게 됩니다.다시 증가하여 4가되었습니다.
4는 거짓으로 판별되어 for문을 빠져나옵니다.
그러면 처음에 있던for문으로 가게되고 실행문을 실행하여 왔으므로 첫 for문의 $a++을 실행하여 a는 3이 됩니다.
3이므로 저건에 참으로 구분되어
다시 아래 실행문을 실행합니다.
구구단 3단이라고 출력한후
그 아래의 for문도 실행을 하고
위와같은 과정으로 3단을 표현하게 되고
빠져나오면 a의 값이 4가 되고 거짓으로 판별되어 종료됩니다.
설명이 잘 전달됐으면 좋겠네요.;;
이런식으로 해서 구구단을 당신이 원하는 만큼 만들어낼수 있습니다.
19단 까지 19를 곱한것까지도 가능하며 당신이 워하는 수만큼 가능합니다.
그럼 정상적인 9단까지의 구구단을 출력해 보려면 어떻게 할까요?
처음 구구단을 몇개까지 설정해주는 첫 for문의 조건을 3이 아닌 9로 변경해주고
두번째 for문의 조건도 9로 변경해줍니다.
아래와 같이
<?php for($a = 2; $a <= 9 ; $a++){ echo " 구구단 $a 단 <br />"; for($b = 1; $b <= 9 ; $b ++){ $mul = $a * $b; echo " $a * $b = $mul <br />"; } } ?>