Why loops are needed in C - Performance Analysis
Loops help us repeat actions many times without writing the same code again and again.
We want to see how the time to run code changes when we repeat tasks using loops.
Analyze the time complexity of the following code snippet.
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += i;
}
printf("Sum: %d\n", sum);
return 0;
}
This code adds numbers from 0 to 4 and prints the total sum.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that adds numbers.
- How many times: It runs 5 times, once for each number from 0 to 4.
Imagine if we change the loop to run more times, like 10, 100, or 1000.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The number of steps grows directly with how many times the loop runs.
Time Complexity: O(n)
This means if you double the number of times the loop runs, the time to finish roughly doubles too.
[X] Wrong: "Loops always take the same time no matter how many times they run."
[OK] Correct: The time depends on how many times the loop repeats; more repeats mean more time.
Understanding loops and how they affect time helps you explain how programs handle repeated tasks efficiently.
"What if we changed the loop to run from 0 to n*n instead of 0 to n? How would the time complexity change?"
Practice
Solution
Step 1: Understand the purpose of loops
Loops allow repeating the same code without writing it again and again.Step 2: Compare options with loop purpose
Only To repeat a block of code multiple times easily describes repeating code multiple times easily, which is the main reason for loops.Final Answer:
To repeat a block of code multiple times easily -> Option AQuick Check:
Loops repeat code = To repeat a block of code multiple times easily [OK]
- Confusing loops with variables
- Thinking loops create new data types
- Believing loops stop the program
Solution
Step 1: Recall C for loop syntax
The correct for loop in C uses parentheses with initialization, condition, and increment separated by semicolons.Step 2: Check each option
for (int i = 0; i < 5; i++) { } matches the correct C syntax: for (int i = 0; i < 5; i++) { }.Final Answer:
for (int i = 0; i < 5; i++) { } -> Option AQuick Check:
C for loop syntax = for (init; condition; increment) [OK]
- Using Python or other language syntax
- Missing semicolons in for loop
- Using wrong keywords like 'loop'
int i;
for(i = 1; i <= 3; i++) {
printf("%d ", i);
}Solution
Step 1: Analyze loop range and iterations
The loop starts at i=1 and runs while i is less than or equal to 3, so it runs for i=1, 2, 3.Step 2: Determine printed output
Each iteration prints the current i followed by a space, so output is "1 2 3 "Final Answer:
1 2 3 -> Option CQuick Check:
Loop prints 1 to 3 = 1 2 3 [OK]
- Starting loop from 0 instead of 1
- Including extra numbers beyond 3
- Printing in reverse order
int i = 0;
for(i = 0; i < 5; i++)
printf("%d", i)
Solution
Step 1: Check syntax inside the loop
The printf statement is missing a semicolon at the end, which is required in C.Step 2: Verify other parts
The loop condition and variable declaration are correct, and the for loop syntax is valid.Final Answer:
Missing semicolon after printf statement -> Option BQuick Check:
Missing semicolon causes syntax error [OK]
- Ignoring missing semicolon errors
- Thinking loop condition is wrong
- Assuming variable is undeclared
Solution
Step 1: Understand the task
We need to print even numbers from 2 to 10, which are 2,4,6,8,10.Step 2: Evaluate loop options
Use a for loop starting at 2, increment by 2 until 10 uses a for loop starting at 2 and increments by 2, directly printing even numbers efficiently.Final Answer:
Use a for loop starting at 2, increment by 2 until 10 -> Option DQuick Check:
For loop with step 2 prints evens directly [OK]
- Using nested loops unnecessarily
- Starting from 1 and checking each number
- Using do-while with wrong direction
Ready to prove it?
Pass the test and this pattern moves unknown
