Control Flow
If and Elsif
Use if, elsif, and else when more than two outcomes are possible.
elsif branch
`elsif` checks another condition only when earlier branches were false.
If and Elsif
if_elsif.rb
Replay: real traced execution (multi-file project)
score = 82
if score >= 90
grade = "A"
elsif score >= 75
grade = "B"
else
grade = "C"
end
puts "score=#{score}"
puts "grade=#{grade}"
score = 61
if score >= 90
grade = "A"
elsif score >= 75
grade = "B"
else
grade = "C"
end
puts "score=#{score}"
puts "grade=#{grade}"
score = 95
if score >= 90
grade = "A"
elsif score >= 75
grade = "B"
else
grade = "C"
end
puts "score=#{score}"
puts "grade=#{grade}"
score ← 82
1score→ 82 = 82 #@score=95, 61grade ← B
4 grade = "A"5elsif score82 >= 756 grade→ B = "B"7elseputs "score=#{score}"
11puts "score=#{score82}"12puts "grade=#{gradeB}"outputscore=82 grade=B
score ← 61
1score→ 61 = 61grade ← C
6 grade = "B"7else8 grade→ C = "C"9endputs "score=#{score}"
11puts "score=#{score61}"12puts "grade=#{gradeC}"outputscore=61 grade=C
score ← 95
1score→ 95 = 95grade ← A
3if score95 >= 904 grade→ A = "A"5elsif score >= 75puts "score=#{score}"
11puts "score=#{score95}"12puts "grade=#{gradeA}"outputscore=95 grade=A
Choose the Grade
scorestarts at82.- The first check,
score >= 90, is false. - The
elsifcheck,score >= 75, is true. - The grade becomes
B. | Score | First matching branch | Grade | | --- | --- | --- | |95|if|A| |82|elsif|B| |61|else|C|
Exercise: if_elsif.rb
Use if, elsif, and else to turn a score into A, B, or C