While And Until Looping Readme

Objectives

  1. Describe the while construct and how it implements looping
  2. Describe the until looping construct

while

The while construct is a little different from the loop construct that we looked at earlier. The while construct will keep executing a block as long as a specific condition is true.

Let's look at a long and repetitiously-counting code that uses if statements to count from 0 to 20 and outputs "The current number is less than 20." if so. Well, we can refactor that into simple, readable, short code with the while construct:

counter = 0
while counter < 20
  puts "The current number is less than 20."
  counter += 1
end

Think about the above code like this:

  • While it is true that the variable counter is set to a value that is less than 20, execute the code in the block.
  • Inside the block, puts a phrase, and increment the counter by one.
  • Go back to the top! Check to see if the counter is less than 20. If it is true that the value is less than 20, go back into the block. Otherwise, break out of the loop and don't execute the code inside the loop.

We can achieve all of that with just a few lines of code utilizing a while construct. Go ahead and copy and paste the above code in irb.

Examples

Basic while Example: Hot Dog Eating Contest

Let's say you are a world famous competitive eater participating in the Coney Island Nathan's Hot Dog Eating Contest in Brooklyn, NY. You're kind of new to the competitive eating game though, so you only have the capacity for seven (7) hot dogs.

num_of_hotdogs_eaten = 0
# => 0 (return value)

while num_of_hotdogs_eaten < 7
  num_of_hotdogs_eaten += 1
  puts "You have now eaten #{num_of_hotdogs_eaten} hot dog(s)."
end
# => nil (return value)

puts "You ate a total of #{num_of_hotdogs_eaten} hot dogs!"
# => nil (return value)

# > "You have now eaten 1 hot dog(s)."
# > "You have now eaten 2 hot dog(s)."
# > "You have now eaten 3 hot dog(s)."
# > "You have now eaten 4 hot dog(s)."
# > "You have now eaten 5 hot dog(s)."
# > "You have now eaten 6 hot dog(s)."
# > "You have now eaten 7 hot dog(s)."

# > "You ate a total of 7 hot dogs!"

until

Until is simply the inverse of a while loop. An until keyword will keep executing a block until a specific condition is true. In other words, the block of code following until will execute while the condition is false. One helpful way to think about it is to read until as "if not".

counter = 0
until counter == 20
  puts "The current number is less than 20."
  counter += 1
end
  • The counter once again starts at 0. If it is not true that the counter is equal to 20, the program will execute the code in the block.
  • Inside the block, we will puts a phrase and increment the counter by 1.
  • Then, the program will go back to the top of the until loop and once again check to see if the counter is equal to 20. If it is not true that the counter is equal to 20, then the program will continue executing the code in the block. Otherwise, the program will break out of the loop.

View The while and until Constructs on Learn.co and start learning to code for free.

Unlock your future in tech
Learn to code.

Learn about Flatiron School's Mission

With a new take on education that falls somewhere between self-taught prodigy and four-year computer science degree, the Flatiron School promises to turn students with little programming experience into developers.

In the six months since the Manhattan coding school was acquired by WeWork, it has spawned locations in Washington, D.C., Brooklyn, and London. Now, WeWork is opening a fourth Flatiron School location, this time in Houston.

Adam Enbar, Flatiron School's cofounder, believes now is the time to grow. "How the world is changing has impacted working and learning in very similar ways. We think education fundamentally is about one thing: enabling people to pursue a better life."

Learn. Love. Code.
Students come to Flatiron School to change their lives. Join our driven community of career-changers and master the skills you need to become a software engineer or a data scientist.
Find Us