KotlinCS 124 LogoJava
PrevIndexNext
Kotlin
Java
  • Implementing a Map : 04/26/2024

  • map-reduce-filter : 04/25/2024

  • Generics : 04/24/2024

  • Hashing : 04/23/2024

  • Binary Search : 04/22/2024

  • MP3: Course Ratings : 04/19/2024

  • Quicksort : 04/18/2024

  • Merge Sort : 04/17/2024

  • Sorting Algorithms : 04/16/2024

  • MP Debugging Part 1 : 04/15/2024

  • MP2: Course Activity : 04/12/2024

  • Practice with Recursion : 04/11/2024

  • MP Debugging Part 0 : 04/10/2024

  • MP2: API Client : 04/09/2024

  • MP2: API Server : 04/08/2024

  • Trees and Recursion : 04/05/2024

  • Trees : 04/04/2024

  • Recursion : 04/03/2024

  • MP1: Filtering and Search : 04/02/2024

  • MP1: Loading and Sorting : 04/01/2024

  • Lists Review and Performance : 03/29/2024

  • Linked Lists : 03/28/2024

  • Algorithms and Lists : 03/27/2024

  • Continuing MP0 : 03/26/2024

  • Getting Started with MP0 : 03/25/2024

  • Lambda Expressions : 03/22/2024

  • Anonymous Classes : 03/21/2024

  • Practice with Interfaces : 03/20/2024

  • Implementing Interfaces : 03/19/2024

  • Using Interfaces : 03/18/2024

  • Working with Exceptions : 03/08/2024

  • Throwing Exceptions : 03/07/2024

  • Catching Exceptions : 03/06/2024

  • References and Polymorphism : 03/05/2024

  • References : 03/04/2024

  • Data Modeling 2 : 03/01/2024

  • Equality and Object Copying : 02/29/2024

  • Polymorphism : 02/28/2024

  • Inheritance : 02/27/2024

  • Data Modeling 1 : 02/26/2024

  • Companion Objects : 02/23/2024

  • Encapsulation : 02/22/2024

  • Constructors : 02/21/2024

  • Objects, Continued : 02/20/2024

  • Introduction to Objects : 02/19/2024

  • Compilation and Immutability : 02/16/2024

  • Practice with Collections : 02/15/2024

  • Maps and Sets : 02/14/2024

  • Lists and Type Parameters : 02/13/2024

  • Imports and Libraries : 02/12/2024

  • Multidimensional Arrays : 02/09/2024

  • Practice with Strings : 02/08/2024

  • null : 02/07/2024

  • Algorithms and Strings : 02/06/2024

  • Strings : 02/05/2024

  • Functions and Algorithms : 02/02/2024

  • Practice with Functions : 02/01/2024

  • More About Functions : 01/31/2024

  • Errors and Debugging : 01/30/2024

  • Functions : 01/29/2024

  • Practice with Loops and Algorithms : 01/26/2024

  • Algorithms : 01/25/2024

  • Loops : 01/24/2024

  • Arrays : 01/23/2024

  • Compound Conditionals : 01/22/2024

  • Conditional Expressions and Statements : 01/19/2024

  • Operations on Variables : 01/18/2024

  • Variables and Types : 01/17/2024

  • Welcome to CS 124 : 01/16/2024

Loops

for (i in 0 until 8) {
println("Hi!")
}

This lesson presents the final core computer capability: the ability to repeat something multiple times. By combining this with our ability to store and manipulate data and make decisions, we can truly solve any problem. So let’s get started!

Warm Up Debugging Challenge
Warm Up Debugging Challenge

Let’s warm up with another graded debugging challenge!

while
while

Let’s meet our first loop. It’s the simplest one in Kotlin, and repeats a block of code while a condition is true:

var i = 0
while (i < 8) {
i++
}

The while loop declaration looks quite similar to the if statements we’ve already seen. First the keyword while, followed by a conditional expression inclosed in parantheses, followed by a block. However, unlike the if statement which only executes once, the while statement continues to execute the block as long as the condition evaluates to true. This can cause problems!

var i = 0
while (i < 8) {
i++
}

for
for

While while is the simplest loop, probably the most common loop you’ll encounter is called a for loop. It’s more complicated than a while loop, but designed to capture a common loop programming pattern. We frequently want to use a loop to increment a variable starting at zero and ending when it reaches some value. (We’ll see why tomorrow.)

var i = 0
while (i < 8) {
println(i)
i++
}

This is so common that Kotlin provides a second loop that captures this pattern. Let’s go through it together:

for (i in 0 until 8) {
println(i)
}

Variants
Variants

The for loop syntax is quite flexible and can produce lots of different sequences of values in the index variable:

// Includes the endpoint. Compare with until
for (i in 0..8) {
println(i)
}
// Starting at 8, ending at 88, up by 10
for (i in 8 until 88 step 10) {
println(i)
}
// Starting at 16, ending at 0, down by 4
for (i in 16 downTo 0 step 4) {
println(i)
}

However, by far the most common for loop you’ll see is the start at 0, increment by 1, and end when the value is strictly less than some limit:

var limit = 16
for (i in 0 until limit) {
println(i)
}

Loop Variable Scope
Loop Variable Scope

There is one important difference between this while loop:

var i = 0
while (i < 8) {
i++
}

and this for loop:

for (i in 0 until 8) {
}

Let’s try and figure out what it is!

var i = 0
while (i < 8) {
i++
}

Practice: Victory Loop

Created By: Geoffrey Challen
/ Version: 2020.8.0

We've learned how to use computers to manipulate numeric data and make simple decisions using conditionals. But we haven't examined one of their most important capabilities: the ability to repeat the same task over, and over, and over again. A computer will never get tired—although it may run out of battery—and it will never make a mistake—as long as you program it correctly. So this capability is the grounds for our hope that someday computers may help eliminate many current forms of drudgery currently experienced by humans, particularly when forced to repeat mindless tasks.

Let's get started by writing using a simple loop. Assuming an Int variable named repeat has been declared and initialized to a value larger than or equal to zero, write a loop that prints "Victory!" repeat times on separate lines. You may use any kind of loop you want! But do not modify the value of repeat.

for v. while
for v. while

Let’s explore the connection between the two types of loop using a diagram.

Practice: Number Loop

Created By: Geoffrey Challen
/ Version: 2021.8.0

Let's write a simple loop. Assuming an Int variable named count has been declared and initialized to a value larger than zero, write a loop that prints the numbers between 0 and count - 1, inclusive, one number each line. So if count is 4, you should print:

0
1
2
3

You can use any kind of loop you want! But do not modify count.

Homework: Descending Number Loop

Created By: Geoffrey Challen
/ Version: 2022.8.0

Let's write a simple loop. Assuming an Int variable named count has been declared and initialized to a value larger than zero, write a loop that prints the numbers from count down to 0, inclusive, one number each line. So if count is 4, you should print:

4
3
2
1
0

You can use any kind of loop you want! But do not modify count.

More Practice

Need more practice? Head over to the practice page.