happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

제어문

프로그래밍에서 순차적이 아닌 처리될 명령을 달리할 필요가 있을 때 사용하기 위해 만들어졌으며, 주어진 조건의참 또는 거짓에 따라 실행되는 코드는 선택되어 각각 다른 명령을 수행하도록 한다. 제어문에는 대표적으로 if문과 switch문이 있다.
위와 같은 말은 많이 어렵네요.
소스를 보면서 이해해 보도록 합시다

IF문

if문이란 주어진 조건이 참이라면 그 다음 명령을 실행하고 거짓이면 그렇지 않으면 실행하지 않습니다.
예를 들어 에버디벨을 만든 사람은 사람이다 라고 하면 그것은 참이므로 참일때 실행할 명령을 실행하며 그렇지 않을경우에는 실행을 하지 않습니다

조건문에서 같다는 표현을 쓸때 == 로 표시합니다

<?php
 $a = 50;
 if($a == 50){
  echo "hi";
 }
?>

결과는 바로 아래에서 확인하겠습니다.

위의 소스에서 변수 a의 값을 50으로 입력했죠? 그리고 if문에서 변수 a의 값이 50이라는 조건을 주었고 참일 경우 ehco "hi";를 실행하여 출력하게 되어있습니다.

위의 결과는 웹브라우저에서 50을 표시합니다.

이번엔 if문에 거짓이 나오는 상황을 만들어 봅시다. 조건에 $a == 40일때의 조건을 만들어 봅시다 그러면 a는 50인데 40일때 라고 부여했으니 echo "hi";명령문을 실행하지 않겠죠

 <?php
 $a = 50;

 if($a == 40){
 echo "hi";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

이같은 소스라면 a는 40이 아니기 때문에 아무것도 표현하지 않습니다

else 문

else문은 if문과 함께 사용하는 명령문입니다. 위에서 우리는 if문이 참일경우 hi를 출력하는것을 보았습니다.
이때 만약 참이 아닌 거짓일때 하는 명령을 주기 위해서는 else를 이용합니다

<?php
 echo "$a=15, $b=23의 곱셈연산 결과 값의 홀,짝수 구별<br />";
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />";

 $a = 15;
 $b = 23;
 $gob = $a * $b;

 if($gob %2 == 0){
  echo " $a * $b 의 값은 짝수입니다. 결과값 {$gob} <br />";
} else{ echo " $a * $b 의 값은 홀수입니다. 결과값 {$gob} <br />";
} ?>

결과는 바로 아래에서 확인하겠습니다.

위 소스는 어떤 수의 홀,짝을 알려주는 소스입니다 .

a와 b를 곱한값을 $gob 이라고 하고 $gob 를 2로 나누어서 나머지값이 0이라면 그것은 짝수이며 나머지가 0이 아니라면 홀수입니다 2로 나누기때문에 0아니면 1이 나오게 된다.

위의 소스에서 a 와 b의 값을 변경해서 테스트 해보면 다른결과를 얻을 수 있다.

php image

아래의 소스는 전공 80점 이상 교양 70점 이상은 졸업시험을 통과하는 소스이다.

<?php
 echo "전공 80점이상, 교양 75점 이상을 졸업시험 통과<br />";
 $var1 = 84;  //이과목이 전공
 $var2 = 75;  // 교양
 if($var1 >= 80 && $var2 >= 75){
  echo "전공 $var1 점, 교양 $var2 점 당신은 졸업시험에 통과 하셨습니다.<br />";
 }
 else{
  echo "전공 $var1 점, 교양 $var2 점 당신은 졸업시험에 통과 하지 않으셨습니다. 5학년이 되어주세요..<br />";
} ?>

결과는 바로 아래에서 확인하겠습니다.

위의 식에서 if문 안에 &&가 들어있다. 이 &&는 두개의 조건이 다 참일때 둘다 참인것을 말합니다.
예를 들어 $var >= 80 이것도 참이어야 하며 $var >= 75도 참이어야 한다는 것입니다 만약 하나라도 거짓이 되면 if($var1 >= 80 && $var2 >= 75)
이 명려문은 전체적으로 거짓을 반환하게 되어 else문이 실행됩니다 &&는 and로 고쳐서 쓸 수 있으나 현업에서는 &&를 사용하므로 &&를 사용해 주세요

그렇지 않을경우에는 else문의 echo문을 실행한다.

만약 두 조건에 하나만 만족이 되어도 졸업이 가능하게 만들고 싶다면 &&(and) 대신 ||(or)를 사용하면 됩니다.

아래는 결과값

php image

else if문

else if(다중 if)문은 조건을 사용해야 할때 사용 합니다.

 <?php
 echo "입장료 할인 적용 <br />";
 echo "------------------------------------------ <br />";
 echo "10세 이하 50%, 65세이하 80% 군인은 면제 <br />";

 $fee = 5000;  // 입장료는 5000원으로 설정
 $age = 88;    // 나이를 88
 $sol = "군인"; // 신분 군인으로 설정

 if($sol == "시민"){
  echo " $sol 은 무료 입장입니다.<br />";  // sol은 군인인데 조건이 시민이므로 거짓 그러므로 else문으로 넘어갑니다.
 }
 else if($age <= 10){
  $fee *= 0.5;// 0.5를 곱하면 반값이 된다.
  echo " {$age}세는 어린이이므로 50%된 5000 * 0.5 = $fee 으로 입장가능 합니다.<br />";
 }

 else if($age >=65){ // 위의 문에서 조건이 성립하지 않아 다른 조건이 필요하고 elseif 문을 선언해서 조건을 다시 생성
  $fee *= 0.2; // 0.2를 곱하면 80%의 할인이 들어간다.
  echo "{$age}세는 경로우대로 80% 할인된 5,000 * 0.2(1-0.8) = {$fee} 으로 <br />";
  echo "요금은 {$fee}원만 내면 됩니다.<br />";
 }
 else{ // 위의 조건에도 부합하지 안으면 아래의 명령 실행...
  echo "기본 입장료는 5,000원 입니다.<br />";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

이번엔 점수에 따른 등급을 지정하는 프로그램입니다.

 <?php
 echo "<b> 3과목의 총점과 평균, 등급 구하기</b><br />";

 $math = 100;  //수학
 $elec_circuit = 80;  //전자회로
 $design = 77; // 설계

 $sum = $math + $elec_circuit + $design; // 3개 과목의 합
 $avg = $sum/3; // 세과목을 3으로 나눔 그러면 평균

 echo " math : {$math} <br />";
 echo " electronic circuit : {$elec_circuit} <br />";
 echo " design : {$design} <br />";

 echo " total : {$sum} <br />";
 echo " average : {$avg} <br />";

 echo " your average point ";

 if($avg >= 95 && $avg<=100){  // 95이상 100 이하 의 조건을 모두 성립하면 아래의 문장을 출력
  echo "A+";
 }

 elseif($avg >= 95 && $avg <=94){ // &&대신에 and쓰셔도 됩니다 .elseif 문이 있기때문에 else 후에 if로 하지 않아서 편하죠? 별로차이 없나 ;;;
echo "A0"; } elseif($avg >= 85 && $avg <=94){ echo "B+"; } elseif($avg >= 80 && $avg <=84){ echo "B0"; } elseif($avg >= 75 && $avg <=79){ echo "C+"; } elseif($avg >= 70 && $avg <=74){ echo "C0"; } elseif($avg >= 65 && $avg <=69){ echo "D+"; } elseif($avg >= 60 && $avg <=64){ echo "D0"; } else{ echo "F"; } ?>

결과는 바로 아래에서 확인하겠습니다.

혹시 모르시는 분 있으실까봐

if($a == 100) 이라는 조건에 실행문이 1줄 이상이면 {}로 묶어주시고요

한줄이라면

그냥 쓰시면 됩니다.

예를 들어

if($a == 100){

echo "정말 훌륭하시네요";

echo "다음에도 노력해주세요";

}

위는 저렇게 묶어주시고

if($a ==100)

echo "정말 훌륭하시네요, 다음에도 노력해주세요";

위는 안묶어도 됩니다.

위의 소스의 결과는 아래와 같습니다.

php image

switch 문

if문은 참/거짓의 둘 중의 하나를 선택해서 수행하는 반면, switch 여러가지 중에서 하나를 선택합니다.

switch를 사용하기위해서 선언된 변수의 값이 주어진 여러가지 case중에서 참인 것을 찾아 선택합니다.

변수 $a = 3이라고 선언하면 해당되는case가 선택되어 해당 문장을 수행하는 과정은 아래와 같습니다.

 <?php

 echo "변수 $a=3을 선언할 때 switch 문 활용<br />";
 $a = 2;
 switch($a){

  case 0:
  echo "변수 $a는 숫자 0 입니다.... <b>" case 0: 적용  "</b><br />";
  break;

  case 1:
  echo "변수 $a는 숫자 1 입니다.... <b>" case 1: 적용  "</b><br />";
  break;

  case 2:
  echo "변수 $a는 숫자 2 입니다.... <b>" case 2: 적용  "</b><br />";
  break;

  case 3:
  echo "변수 $a는 숫자 3 입니다.... <b>" case 3: 적용  "</b><br />";
  break;

  case 4:
  echo "변수 $a는 숫자 4 입니다.... <b>" case 4: 적용  "</b><br />";
  break;

  default:
  echo "변수 $a = {$a}는 0,1,2,3 이외의 숫자입니다.<br />";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

$a의 값을 2로 입력하고 그리고 switch의 조건으로 $a를 설정하면,

그렇게 해서 case 1, case 2, case 3 case 4를 지정해준다면

switch에 부합하는것은 2이므로 case 2의 실행문들이 실행됩니다.

각 case에 break가 있는데 break는 그 조건이 부합할때 위의 실행문을 실행하고 break문을 만나면 switch문을 빠져나옵니다.

만약 break를 선언해 주지 않았다면 아래와 같은 결과가 발생합니다.

php image

break문이 선언되지 않았기 때문에 2의 조건에 부합한후 빠져나오지 않고 아래의 case들을 모두 실행하게 됩니다.

위의 예문을 if문으로 구현한다면 아래와 같이 된다.

 <?php
 echo "switch문을 if문으로 변환하기 <br />";
 echo "============================================== <br />";

 $a = 3;

 if($a == 0)
 echo "변수 $a는 숫자 0 입니다 <br>";

 elseif($a == 1)
 echo "변수 $a는 숫자 1 입니다 <br>";

 elseif($a == 2)
 echo "변수 $a는 숫자 2 입니다 <br>";

 elseif($a == 3)
 echo "변수 $a는 숫자 3 입니다 <br>";

 else
 echo "0 1 2 3 전부 아닙니다.";
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

다음은 switch문의 활용입니다.

 <?php
 echo "switch 문을 이용하여 월의 날짜 표시 <br />";

 $mon = 2;
 switch($mon){
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
  echo "{$mon}월은 31일까지 있습니다.<br />";
  break;

  case 4:
  case 6:
  case 9:
  case 11:
  echo "{$mon} 월은 30일까지 있습니다.<br />";
  break;

  case 2:
  echo "{$mon} 월은 28일 (평년기준)까지 있습니다.<br />";
  break;

  default:
  echo "{$mon}는 월을 나타내는 1~12이외의 숫자입니다.<br />";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

반복문

반복문이라함은 1부터 100까지 누적되는 합을 구하거나 구구단 2~9단까지 출력하거나 할 때 사용됩니다 .

종류에는 for문, while문, do-while문이 있습니다.

for문

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문을 이용하면 소스를 굉장히 줄여 사용할 수 있습니다.

 for($a = 1; $a <= 10; $a++){
  echo " $a <br />";
 }

결과는 바로 아래에서 확인하겠습니다.

위와같이 3줄로 해낼수가 있습니다.

그러면 수행과정을 알아볼까요?

 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 />";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

누적된 값을 저장할 무언가가 필요하기에 $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 />";
  }
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

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 />";
  }
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

while 문

while은 동안이라는 뜻이다. for문과 같이 반복문입니다 무언가를 반복할때 사용하죠
for문과는 문법이 다릅니다.

while문은 먼저 변수를 선언해 줍니다.
그 후에 while(조건)을 작성하고
실행문 안에 증감값을 입력합니다.

소스로 보자면

$num = 1; //변수 선언
while ($num <= 10){ // num이 10보다 같거나 작을 동안 아래를 수행
echo "{$num} 번째 출력............... {$a} <br />"; // 이 문장을 수행하고
$num++ //여기도 실행을 한다. 실행을 하면 num값이 2가 되고 다시 while문으로 돌아가서 참 판정을 받고 아래를 수행하며 회전한다.
}
자 그럼 while문으로 1부터 10까지 출력을 직접 타이핑!!!

 <?php
 $num = 1;
 while($num <= 10){
  echo " $num ";
  $num++;
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

그렇다면!! 이제 while문을 이용하여 1부터 10까지 홀수의 합 출력을 해본다.

 <?php
 echo "1부터 10까지의 홀수의 합 <br />";

 $num = 1;  //초기값 선언
 $sum = 0;  // 누적합계의 변수 선언

 while ($a <= 10){
  echo $a."까지의 누적합";

  $sum += $a;
  $a+=2;

  echo "={$sum} <br />";
 }

 echo "1부터 10까지의 홀수의 누적합은 {$sum}입니다.<br />";
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

num 에 초기값 1을 선언한다.
그리고 1부터 10까지의 홀수들의 합을 누적시킬 sum을 선언한다.

while문으로 조건을 10까지로 설정하고

$sum에 a의 값을 누적시킨다. a는 현재 1이므로 sum도 1이 된다.
그후 a의 값을 +2 한다. 그러면 a는 3이 된다.
다시 while으로 돌아가고 위와같이 실행하면서 1 3 5 7 9 가 sum에 누적된다.

1부터 100까지의 5의 배수를 누적시킨다고 하면
while문의 조건을 100까지 설정하고
$a+=5를 하면된다.


do-while 문


while문과 비슷하다고 볼 수 있다. 차이점은 do 가 붙었다는것이다.
do 한국어로 하다 인데 조건에 부합하지 않아도 일단 처음 한번은 실행을 하는것이 do-while문이다.

문법의 순서에도 while문과 차이가 있다.
밑의 소스와 같이 do문에 실행문을 적는다. 그럼 일단
한번 실행된후 그 뒤에 쓰여진while문이 작동한후 참,거짓 구별을하고 참이 되면 do문에 쓰여있는 실행문을 실행한다. 즉 아래에 있는것이 아닌 위에 있는 do문을 실행한다.

$num = 1;
do{
echo " {$num} 번째 출력.... {$a} <br />";
$a++;
}
while($a<=10);

---------------------------------------------------------------------------------------------------------------------------

그럼 소스를 통해서 다시 do while 파악!

 <?php
 echo "do~while 문을 이용한 1부터 10까지 합 출력 <br />";
 echo "================================================ <br />";

 $a = 1;        // 초기값 선언
 $sum = 0;      // 누적합 변수 선언

 do{
  echo $a."까지의 누적합 ($num의값) ";
  $sum +=$a;
  $a++;
  echo "={$sum} <br />";
 }
 while($a <= 10);

 echo "1부터 10까지의 합{$sum} <br />";
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

a를 선언후 1로 대입하고,
누적합을 저정할 변수 sum을 선언 한다

do-while 문이므로
일단 1번 실행한다.
그러면 a가 1이므로 1까지의 누적합 ($sum의값) =1
이 표현된다. 증가식에 의해 a는 2가 대입되었으며 이렇게 do문은 끝이고
while문에 a가 10될때가지 수행문을 수행하게 된다.

break문과 continue문

switch문에서 break문을 봤기때문에 break는 뭔지 아시겠죠?
반복문 탈출시에 사용합니다.

Continue 문

실행중에 contuine를 만나면 조건문으로 이동을 한다.
그 후에 조건이 여전히 참이라면 명령들ㅇ르 다시 실행 하고 거짓이면 반복문이 종료된다.
다음은 continue문의 활용이다.

 <?php
 for($a = 1; $a <=10; $a++){
  if($a == 5){
   continue;
  }
  echo "$a";
 }
 ?>

결과는 바로 아래에서 확인하겠습니다.

php image

for문으로 1부터 10까지 출력을 하는데
a가 5일때는 if문에서countinue를 만나게 된다. 그러므로 echo문을 실행하지 못하고 조건식으로 다시 돌아가므로
5는 출력되지 못하고 바로 6으로 넘어가게된다.


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준