조건 제어문인 if문과 반복문인 for문에 대해서 알아보겠습니다.
참과 거짓
제어문으로 조건식이나 반복문을 학습하기 전엔 참(true)과 거짓(false)에 대해서 살펴보겠습니다.
참과 거짓의 정의는 다음과 같습니다.
거짓 | 숫자 0 |
문자열 “0” | |
공백문자열 “” | |
미정의 값 | |
참 | 위 외의 것 |
조금 더 구체적으로 보면은 다음과 같습니다.
0 | 숫자 0이므로 거짓 |
1 | 숫자 1이므로 참 |
-1 | 숫자 0이 아니므로 참 |
3-3 | 계산 결과 0이므로 거짓 |
0.0 | 숫자 0이므로 거짓 |
“0” | 문자열 0이므로 거짓 |
“0.0” | 문자열 0.0과 0은 다르므로 참 |
A | 문자열 A는 참 |
“” | 공백 문자열이므로 거짓 |
undef() | 미정의 값을 반환하는 함수이므로 거짓 |
조건식
조건식이란 [만약 ~ 이라면…]라는 조건 구문을 정의하는 것으로 if문과 unless문 2개가 있습니다.
조건식은 보통 비교 연산자를 사용해서 조건을 정의 힙니다.
unless문은 if문의 반대 의미를 가지고 있습니다.
구문 | if (조건식) { 실행 A} |
elsif (조건 B) {실행 B} | |
else {실행 C} | |
내용 | 만약, [조건 A]가 참이라면 [실행 A]를 실행. |
만약, [조건 A]가 거짓이고, [조건 B]가 참이라면 [실행 B]를 실행. | |
만약, [조건 A]와 [조건 B]가 거짓이라면 [실행 C]를 실행. |
코드 예
if ($size eq "big") {
print "대";
} elsif ($size eq "middle") {
print "중";
} else {
print "소";
}
반복문
반복문은 어느 조건의 의해 처리를 반복 실행하는 것으로 다름 6개의 구문이 있습니다.
구문명 | 구문 | 내용 |
---|---|---|
while문 | while ( 조건 ) { 실행 } | 「조건」이 참인 동안「실행」을 실행 |
until문 | until ( 조건 ) { 실행 } | 「조건」이 거짓인 동안「실행」을 실행 |
do {} while문 | do { 실행 } while ( 조건 ) | 「실행」을 한 번 실행하고、조건이 참인 동안「식」을 실행 |
do {} until문 | do { 실행 } until ( 조건 ) | 「실행」을 한 번 실행하고、조건이 거짓인 동안「식」을 실행 |
for문 | for ( 초기화 조건식 증감식 ) { 실행 } | 「조건식」이 참이면 「실행」을 실행하고 、다음으로 「증감식」을 실행 |
foreach문 | foreach 제어변수 ( 리스트값 ) { 실행 } | 「리스트값」요소를 순서대로 「제어 변수」에 설정하고 、「실행」을 실행 |
while문
$i = 3;
while ($i > 0) {
print "카운트 : $i \n";
$i--;
}
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
until문
until은 while과 조건이 반대입니다.
$i = 3;
until ($i <= 0) {
print "카운트 : $i \n";
$i--;
}
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
do {} while문
while문은 블록 안을 실행하지 전에 조건은 판단하지만,
do {} while문은 블록 안을 한 번 실행한 뒤, 조건을 판단한는것이 while문과 다릅니다.
$i = 3;
do {
print "카운트 : $i \n";
$i--;
} while ($i > 0);
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
do {} untill문
do {} untill문은 do {} while문과 조건이 반대입니다.
$i = 3;
do {
print "카운트 : $i \n";
$i--;
}until ($i <= 0);
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
for문
for ( $i = 3; $i > 0; $i-- ) {
print "카운트 : $i \n";
}
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
foreach문
foreach $i (3, 2, 1) {
print "카운트 : $i \n";
}
> 카운트 : 3
> 카운트 : 2
> 카운트 : 1
반복문 제어
반복문을 사용할 때, 반복문은 제어할 수 있는 연산자로 3개가 있습니다.
연산자 | 내용 |
---|---|
next | 반복을 스킵 |
last | 반복을 종료 |
redo | 반복을 맨 위로 올려서 다시 시작 |
next연산자
foreach $i (5,4,3,2,1){
if($i == 3) {
next;
}
print "카운트 : $i \n";
}
> 카운트 : 5
> 카운트 : 4
> 카운트 : 2
> 카운트 : 1
last연산자
foreach $i (5,4,3,2,1){
if($i == 3) {
last;
}
print "카운트 : $i \n";
}
> 카운트 : 5
> 카운트 : 4
redo연산자
잘못 사용할 경우 무한 반복이 될 수도 있으니 사용에 주의해야 합니다.
$n = 0;
foreach $i (1 .. 5){
print "카운트 : $i \n";
if($i == 3) {
$n++;
# 다시시작이 2번이상의 경우 종료
if($n >= 2){
last;
}
# $i가 3이 되면 반복문은 다시 시작
redo;
}
}
> 카운트 : 1
> 카운트 : 2
> 카운트 : 3
> 카운트 : 3
삼항 연산자
삼항 연산자는 if 조건식을 단축해서(1행으로) 사용하는 방법입니다.
구문 |
[조건식] ? [참일 경우] : [거짓일 경우] |
$age = 18;
print $age >= 20 ? "성인" : "미성년";
> 미성년
그리고 if ~ elsif ~ else 식으로도 가능합니다.
$point = 82;
$result =
$point >= 90 ? 'A' :
$point >= 80 ? 'B' :
$point >= 70 ? 'C' :
'F';
print "성적은 $result 입니다.";
> 성적은 B 입니다.
댓글