Control Flow Patterns
If, Elsif, and Else
Perl uses if, elsif, and else to choose one branch from several conditions.
branch
A branch is the block of code Perl runs when a condition is true.
If, Elsif, and Else
if_elsif_else.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $score = 82;
my $grade;
if ($score >= 90) {
$grade = "A";
} elsif ($score >= 70) {
$grade = "pass";
} else {
$grade = "retry";
}
print "score=$score\n";
print "grade=$grade\n";
use strict;
use warnings;
my $score = 59;
my $grade;
if ($score >= 90) {
$grade = "A";
} elsif ($score >= 70) {
$grade = "pass";
} else {
$grade = "retry";
}
print "score=$score\n";
print "grade=$grade\n";
use strict;
use warnings;
my $score = 95;
my $grade;
if ($score >= 90) {
$grade = "A";
} elsif ($score >= 70) {
$grade = "pass";
} else {
$grade = "retry";
}
print "score=$score\n";
print "grade=$grade\n";
$score ← 82, $grade ← (empty)
4my $score→ 82 = 82; #@score=59, 955my $grade→ (empty);$grade ← pass
8 $grade = "A";9} elsif ($score82 >= 70) {10 $grade→ pass = "pass";11} else {print "score=$score ";
15print "score=$score82\n";16print "grade=$gradepass\n";outputscore=82 grade=pass
$score ← 59, $grade ← (empty)
4my $score→ 59 = 59;5my $grade→ (empty);$grade ← retry
10 $grade = "pass";11} else {12 $grade→ retry = "retry";13}print "score=$score ";
15print "score=$score59\n";16print "grade=$graderetry\n";outputscore=59 grade=retry
$score ← 95, $grade ← (empty)
4my $score→ 95 = 95;5my $grade→ (empty);$grade ← A
7if ($score95 >= 90) {8 $grade→ A = "A";9} elsif ($score >= 70) {print "score=$score ";
15print "score=$score95\n";16print "grade=$gradeA\n";outputscore=95 grade=A
Choose the Grade
$scorestarts at82.- The first check,
$score >= 90, is false. - The
elsifcheck,$score >= 70, is true. $gradebecomespass. | Score | First matching branch | Grade | | --- | --- | --- | |95|if|A| |82|elsif|pass| |59|else|retry|
Exercise: if_elsif_else.pl
Use if, elsif, and else to turn a score into A, pass, or retry