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

score
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}"
  1. score ← 82

    1score→ 82 = 82  #@score=95, 61
  2. grade ← B

    4  grade = "A"5elsif score82 >= 756  grade→ B = "B"7else
  3. puts "score=#{score}"

    11puts "score=#{score82}"12puts "grade=#{gradeB}"
    outputscore=82
    grade=B
  1. score ← 61

    1score→ 61 = 61
  2. grade ← C

    6  grade = "B"7else8  grade→ C = "C"9end
  3. puts "score=#{score}"

    11puts "score=#{score61}"12puts "grade=#{gradeC}"
    outputscore=61
    grade=C
  1. score ← 95

    1score→ 95 = 95
  2. grade ← A

    3if score95 >= 904  grade→ A = "A"5elsif score >= 75
  3. puts "score=#{score}"

    11puts "score=#{score95}"12puts "grade=#{gradeA}"
    outputscore=95
    grade=A

Choose the Grade

  1. score starts at 82.
  2. The first check, score >= 90, is false.
  3. The elsif check, score >= 75, is true.
  4. 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