Lesson 4
Conditional Looping and Control
Topic Overview

Welcome back! In this unit, we're diving into Ruby's Conditional Looping and the powerful tools provided by the break and next statements.

Loops execute code multiple times, and with conditional controls, they become even more flexible and efficient. Let's explore how these concepts work together to give us fine-grained control over our loops. We’ll also look at an alternative and more concise way of handling conditions directly in Ruby loops.

The 'if' Statement

Ruby's if statement allows our code to make decisions based on conditions. Here's a simple example where the if statement determines what message to print based on the value of temperature:

Ruby
1temperature = 15 2if temperature > 20 3 puts "Wear light clothes." # This will print if temperature is over 20. 4else 5 puts "Bring a jacket." # This will print otherwise. 6end

In this snippet, Ruby checks the condition (temperature > 20). If it evaluates to true, it executes the corresponding block. Otherwise, the else block runs.

For more complex scenarios, you can use elsif to add additional conditions. Here's an example:

Ruby
1temperature = 15 2 3if temperature > 30 4 puts "It's hot outside!" # Prints if temperature is over 30. 5elsif temperature > 20 6 puts "The weather is nice." # Prints if temperature is between 21 and 30. 7else 8 puts "It might be cold outside." # Prints if temperature is 20 or below. 9end

This approach allows us to evaluate multiple conditions sequentially until one matches.

Ruby also provides a more concise way to handle conditions directly in loops using break if and next if. These can sometimes make your code more readable by reducing nesting. Let’s explore how these work.

The 'break' Statement

The break statement is used to exit a loop as soon as a specified condition is met. Let’s see how this works with an example:

Ruby
1numbers = [1, 3, 7, 9, 12, 15] 2 3numbers.each do |number| 4 if number.even? 5 puts "The first even number is: #{number}" # Prints the first even number. 6 break # Exits the loop after finding the first even number. 7 end 8 puts "Number: #{number}" 9end 10# Output: 11# Number: 1 12# Number: 3 13# Number: 7 14# Number: 9 15# The first even number is: 12

You can simplify this by incorporating the condition directly into the break statement:

Ruby
1numbers = [1, 3, 7, 9, 12, 15] 2 3numbers.each do |number| 4 break puts "The first even number is: #{number}" if number.even? 5 puts "Number: #{number}" 6end 7# Output: 8# Number: 1 9# Number: 3 10# Number: 7 11# Number: 9 12# The first even number is: 12

This approach eliminates the need for an explicit if block and makes the code more concise.

The 'next' Statement

The next statement skips the rest of the current loop iteration and proceeds to the next one. Here’s an example:

Ruby
1(0...6).each do |i| 2 if i == 3 3 next # Skips the print command for '3'. 4 end 5 puts i # Prints the numbers 0 to 5 except 3. 6end 7# Output: 8# 0 9# 1 10# 2 11# 4 12# 5

This can also be simplified using next if:

Ruby
1(0...6).each do |i| 2 next if i == 3 # Skips the print command for '3'. 3 puts i # Prints the numbers 0 to 5 except 3. 4end 5# Output: 6# 0 7# 1 8# 2 9# 4 10# 5

The next if syntax makes the code less cluttered and easier to follow.

Use-case with an Each Loop

By combining these tools, we can create more precise and flexible loops. Here’s an example where we stop searching for names once we find "Charlie":

Ruby
1names = ["Alice", "Bob", "Charlie", "David"] 2 3names.each do |name| 4 if name == "Charlie" 5 puts "Found Charlie!" # Prints when 'Charlie' is found. 6 break # Stops the loop after finding Charlie. 7 end 8end 9# Output: 10# Found Charlie!

Alternatively, this can be written using break if:

Ruby
1names = ["Alice", "Bob", "Charlie", "David"] 2 3names.each do |name| 4 break puts "Found Charlie!" if name == "Charlie" 5end 6# Output: 7# Found Charlie!

Both approaches are valid, but the latter can improve readability for simple conditions.

Lesson Summary and Practice

Fantastic work! You’ve learned how to use Ruby’s if statements to make decisions, and you've explored the break and next statements to control loops dynamically. Additionally, you’ve seen how to simplify conditions in loops using break if and next if.

These tools are essential for writing efficient and readable Ruby code. Next up, practice these concepts to solidify your understanding. Keep going, and happy coding!

Enjoy this lesson? Now it's time to practice with Cosmo!
Practice is how you turn knowledge into actual skills.