📖 Scenario: Imagine you are checking a grid of seats in a theater to find the first empty seat. The seats are arranged in rows and columns.
🎯 Goal: You will write a Swift program that uses labeled statements to break out of nested loops when the first empty seat is found.
📋 What You'll Learn
Create a 2D array called seats representing rows and columns with exact values
Create a label called searchSeats for the outer loop
Use nested for loops to iterate over rows and columns
Use break searchSeats to exit both loops when an empty seat is found
Print the row and column of the first empty seat found
💡 Why This Matters
🌍 Real World
Finding the first available seat in a theater or airplane seating chart is a common real-world task that requires checking nested data structures.
💼 Career
Understanding labeled statements and nested loops helps in writing efficient code for searching and processing multi-dimensional data, useful in software development and data analysis.
Progress0 / 4 steps
1
Create the seats grid
Create a 2D array called seats with these exact values: [["X", "X", "O"], ["X", "O", "X"], ["X", "X", "X"]]. Each "X" means occupied and "O" means empty.
Swift
Hint
Use let seats = [["X", "X", "O"], ["X", "O", "X"], ["X", "X", "X"]] to create the grid.
2
Add the label for the outer loop
Add a label called searchSeats before the outer for loop that iterates over the rows of seats.
Swift
Hint
Write searchSeats: for row in 0.. to label the outer loop.
3
Add nested loop and break with label
Inside the labeled outer loop searchSeats, add an inner for loop with variable col iterating over 0 to seats[row].count. Use if seats[row][col] == "O" to check for an empty seat and then use break searchSeats to exit both loops.
Swift
Hint
Use for col in 0.. and inside it check if seats[row][col] == "O" then break searchSeats.
4
Print the first empty seat position
Add two variables foundRow and foundCol initialized to -1 before the loops. Inside the if seats[row][col] == "O" block, set foundRow = row and foundCol = col before break searchSeats. After the loops, print "First empty seat found at row \(foundRow), column \(foundCol)".
Swift
Hint
Remember to set foundRow = row and foundCol = col before breaking. Then print the message with those variables.
Practice
(1/5)
1. What is the main purpose of using labeled statements in nested loops in Swift?
easy
A. To speed up the loop execution
B. To declare variables inside loops
C. To directly control which loop to break or continue
D. To automatically optimize memory usage
Solution
Step 1: Understand labeled statements
Labeled statements give a name to loops so you can refer to them directly.
Step 2: Control flow in nested loops
This naming allows breaking or continuing an outer loop from inside an inner loop without extra flags.
Final Answer:
To directly control which loop to break or continue -> Option C
Quick Check:
Labeled loops control flow directly = C [OK]
Hint: Labels let you break/continue outer loops easily [OK]
Common Mistakes:
Thinking labels declare variables
Assuming labels improve speed
Confusing labels with memory optimization
2. Which of the following is the correct syntax to label a loop named 'outerLoop' in Swift?
easy
A. for outerLoop in 1...3 { }
B. outerLoop: for i in 1...3 { }
C. for i in 1...3 outerLoop: { }
D. label outerLoop for i in 1...3 { }
Solution
Step 1: Recall label syntax in Swift
Labels are written as a name followed by a colon before the loop statement.
Step 2: Match syntax to options
outerLoop: for i in 1...3 { } correctly places 'outerLoop:' before the for loop.
Final Answer:
outerLoop: for i in 1...3 { } -> Option B
Quick Check:
Label name + colon before loop = A [OK]
Hint: Label name ends with colon before loop starts [OK]
Common Mistakes:
Placing label after the loop
Using 'label' keyword (not valid)
Putting label inside loop braces
3. What will be the output of the following Swift code?
outerLoop: for i in 1...2 {
for j in 1...3 {
if j == 2 {
break outerLoop
}
print("\(i),\(j)")
}
}
medium
A. 1,1
1,2
1,3
2,1
2,2
2,3
B. 1,1
1,2
C. 1,1
2,1
D. 1,1
Solution
Step 1: Understand loop and break behavior
The outer loop runs i from 1 to 2, inner loop j from 1 to 3. When j == 2, break outerLoop stops the outer loop entirely.
Step 2: Trace iterations
First iteration: i=1, j=1 prints "1,1". When j=2, break outerLoop triggers, stopping all loops immediately.
Final Answer:
1,1 -> Option D
Quick Check:
Break outer loop at j=2 stops all = D [OK]
Hint: Break with label stops outer loop immediately [OK]
Common Mistakes:
Thinking break only stops inner loop
Expecting all prints before break
Ignoring label effect on break
4. Identify the error in this Swift code using labeled statements:
outer: for i in 1...2 {
for j in 1...2 {
if j == 2 {
break outerLoop
}
print(i, j)
}
}
medium
A. Label 'outerLoop' is not defined
B. Syntax error: missing colon after label
C. Cannot use break inside nested loops
D. No error, code runs fine
Solution
Step 1: Check label definition
The loop is labeled 'outer', but break tries to use 'outerLoop' which is undefined.
Step 2: Understand label usage
Labels must match exactly. Using a different name causes a compile error.
Final Answer:
Label 'outerLoop' is not defined -> Option A
Quick Check:
Break label must match defined label = B [OK]
Hint: Break label must exactly match loop label name [OK]
Common Mistakes:
Using different label names
Forgetting colon after label
Thinking break can't be used in nested loops
5. Given the task to print all pairs (i, j) where i and j range from 1 to 3, but stop all loops immediately when i + j equals 4, which Swift code correctly uses labeled statements to achieve this?
hard
A. outerLoop: for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
break outerLoop
}
print("\(i),\(j)")
}
}
B. for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
break
}
print(i, j)
}
}
C. outerLoop: for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
continue outerLoop
}
print(i, j)
}
}
D. for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
continue
}
print(i, j)
}
}
Solution
Step 1: Understand the stopping condition
We want to stop all loops immediately when i + j == 4, so we must break the outer loop.
Step 2: Use labeled break correctly
outerLoop: for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
break outerLoop
}
print("\(i),\(j)")
}
} uses 'break outerLoop' to stop the outer loop from inside the inner loop, which is correct.
Step 3: Check other options
for i in 1...3 {
for j in 1...3 {
if i + j == 4 {
break
}
print(i, j)
}
} breaks only inner loop; C uses continue which skips iterations but doesn't stop loops; D continues inner loop only.
Final Answer:
Code that breaks outerLoop when i + j == 4 -> Option A
Quick Check:
Labeled break stops all loops = A [OK]
Hint: Use labeled break to stop outer loop from inner loop [OK]
Common Mistakes:
Using break without label stops only inner loop
Using continue instead of break
Not labeling the outer loop
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.