For loop in PowerShell - Time & Space Complexity
We want to understand how the time a for loop takes changes as we increase the number of times it runs.
How does the work grow when the loop runs more times?
Analyze the time complexity of the following code snippet.
for ($i = 0; $i -lt $n; $i++) {
Write-Output "Number: $i"
}
This code prints numbers from 0 up to one less than n using a for loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The loop runs the Write-Output command.
- How many times: Exactly n times, once for each number from 0 to n-1.
Each time we increase n, the loop runs more times, so the total work grows directly with n.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 times |
| 100 | 100 times |
| 1000 | 1000 times |
Pattern observation: Doubling n doubles the work done by the loop.
Time Complexity: O(n)
This means the time grows in a straight line with the number of loop runs.
[X] Wrong: "The loop runs faster as n gets bigger because computers are fast."
[OK] Correct: Even though computers are fast, the loop still does more work when n is bigger, so it takes more time.
Understanding how loops grow with input size helps you explain your code clearly and shows you know how to think about efficiency.
"What if we added a nested for loop inside this loop that also runs n times? How would the time complexity change?"
Practice
What does a for loop in PowerShell do?
Solution
Step 1: Understand the purpose of a for loop
A for loop is designed to repeat code multiple times based on a condition.Step 2: Compare options with the definition
Only Repeats a block of code a set number of times correctly describes repeating code a set number of times.Final Answer:
Repeats a block of code a set number of times -> Option DQuick Check:
For loop = repeat code [OK]
- Thinking for loop runs only once
- Confusing for loop with function definition
- Believing for loop stops script
Which of the following is the correct syntax for a for loop in PowerShell?
for (init; condition; increment) { code }Solution
Step 1: Identify correct for loop syntax
PowerShell for loops use parentheses with init; condition; increment separated by semicolons.Step 2: Check each option
for ($i=0; $i -lt 5; $i++) { Write-Output $i } matches correct syntax. A uses while keyword. B has invalid 'for $i in' syntax. C uses foreach keyword. [OK]Final Answer:
for ($i=0; $i -lt 5; $i++) { Write-Output $i } -> Option AQuick Check:
Correct for loop syntax = for ($i=0; $i -lt 5; $i++) { Write-Output $i } [OK]
- Using foreach instead of for
- Using spaces instead of semicolons
- Confusing while loop syntax
What will be the output of this PowerShell code?
for ($i=1; $i -le 3; $i++) { Write-Output ($i * 2) }Solution
Step 1: Understand loop iterations
The loop runs with $i values 1, 2, and 3 because condition is $i -le 3.Step 2: Calculate output for each iteration
Output is $i * 2: 1*2=2, 2*2=4, 3*2=6.Final Answer:
2 4 6 -> Option CQuick Check:
Multiply each i by 2 = 2 4 6 [OK]
- Confusing loop range
- Multiplying after loop ends
- Printing loop variable instead of calculation
Identify the error in this PowerShell for loop:
for (; $i < 5; $i++) { Write-Output $i }Solution
Step 1: Check initialization syntax in for loop
The initialization part is empty; $i needs to be initialized (e.g., $i=0).Step 2: Verify other parts
Increment '++' is valid, condition '<' works for numbers, braces are present.Final Answer:
The loop variable $i is not initialized -> Option BQuick Check:
Always initialize $i in for loop [OK]
- Forgetting to initialize loop variable
- Thinking '++' is invalid
- Using C-style operators like '<' in PowerShell
You want to print only even numbers from 2 to 10 using a for loop in PowerShell. Which code snippet achieves this?
Solution
Step 1: Understand the goal
We want to print even numbers from 2 to 10 inclusive.Step 2: Analyze each option
for ($i=1; $i -lt 10; $i++) { if ($i % 2 -eq 0) { Write-Output $i } } goes to i<10 so prints 2,4,6,8 (misses 10). for ($i=2; $i -le 10; $i+=2) { Write-Output $i } starts at 2, increments by 2 up to 10: 2,4,6,8,10. for ($i=2; $i -lt 10; $i++) { Write-Output $i } prints 2-9 all numbers. for ($i=0; $i -le 10; $i+=3) { Write-Output $i } wrong start/step.Final Answer:
for ($i=2; $i -le 10; $i+=2) { Write-Output $i } -> Option AQuick Check:
Increment by 2 from 2 to 10 = even numbers [OK]
- Using wrong increment step
- Starting from 1 instead of 2
- Not filtering for even numbers
Ready to prove it?
Pass the test and this pattern moves unknown
