Lesson 6 — Beginner
Loops (for/while/do-while)
Do line ka kaam 100 baar? Loop. Is lesson mein hum teeno loops seekhenge — for (count), while (condition), do-while (kam se kam ek baar) — aur break/continue se unhe control karna. Sath mein factorial, prime jaise asli programs bhi banayenge.
for aur while — do baap ek beta
WHEN
Fixed times chahiye (10 baar, n tak) toh for. Jab tak condition true rahe chalao (user input valid na aaye) toh while. Do-while tab jab kam se kam ek baar chalana hi ho.
WHAT
Loop ek hi block baar baar chalata hai jab tak uski condition true hai. Har iteration ke baad update hota hai — warna infinite ho jaayega.
WHERE
Array traverse, input validate, pattern banana, file ke lines padhna — programming ki 60% lines loops mein hoti hain.
// for — count known ho
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
// Output: 1 2 3 4 5
// while — count unknown, condition chalaye
int n = 5;
while (n > 0) {
printf("%d ", n);
n--;
}
// Output: 5 4 3 2 1
For ke teen hisse: shuruaat (init) → condition (check) → update (++). Iska order yaad rakho: pehle init ek baar, phir har baar check → body → update. While mein init bahar, update andar likhna padta hai.
do-while — pehle kaam phir poochho
int i = 10;
do {
printf("%d\n", i);
i++;
} while (i < 5);
// Output: 10 (condition pehle se FALSE phir bhi ek baar chala!)
- Fark sirf ek hai: do-while body PEHLE chalti hai, condition BAAD mein check hoti hai — isliye kam se kam ek iteration pakka.
- Kahan use ho: menu programs — pehle option dikhao, phir poochho, invalid ho toh dobara.
- Syntax dhyan: body ke baad ) while (...); — semicolon bhoolna = compile error.
- Kab for/while: 99% jagah. Do-while sirf "ek baar chahiye hi chahiye" wale case mein.
// Menu wala classic do-while
int choice;
do {
printf("1. Chai 2. Coffee 0. Exit\n");
scanf("%d", &choice);
if (choice == 1) printf("Chai bana raha...\n");
else if (choice == 2) printf("Coffee bana raha...\n");
} while (choice != 0);
break, continue aur infinite loops
for (int i = 1; i <= 10; i++) {
if (i == 5) continue; // 5 CHHOD do — age badho
if (i == 8) break; // 8 pe POORA loop band
printf("%d ", i);
}
// Output: 1 2 3 4 6 7
while (1) { // infinite loop...
printf("spin ");
break; // ...tabhi bahar nikalta hai
}
// Output: spin
- break: sabse andar wale loop se turant bahar. Nested loop mein sirf ek level chhodta hai.
- continue: current iteration chhod kar agle iteration pe seedha.
- Infinite loop: while (1), for (;;) — menu/search jahan tak condition khud decide ho.
- Trap: update statement likhna bhool gaye (i++ nahi) toh condition hamesha true = infinite. CPU 100%.
Asli programs — factorial aur prime
#include <stdio.h>
int main() {
// Factorial: 5! = 120
int n = 5, f = 1;
for (int i = 1; i <= n; i++) f *= i;
printf("Factorial = %d\n", f);
// Prime check: 29 prime hai
int num = 29, flag = 0;
for (int i = 2; i * i <= num; i++)
if (num % i == 0) { flag = 1; break; }
printf("%d is %s\n", num, flag ? "Prime" : "Not Prime");
return 0;
}
Output:
Factorial = 120
29 is Prime
i * i <= num ka matlab hai half tak check karne ki zarurat nahi — square root tak kaafi hai. Isse 10^9 tak ka number bhi tez check ho jaata hai. Ye optimization interview mein poochhi jaati hai.
Exercise
Question: Factorial of 5 (5!) kitna hota hai? Sirf number daalo.
Question: do-while mein condition check hoti hai — body se PEHLE ya body ke BAAD?
Question: Infinite loop banane ke liye while ki condition mein kya likhoge? (true / 1 / false)
Question: Current iteration chhod kar agle pe jaane wala statement kaunsa hai? (break / continue)
Common mistakes
- Update statement bhool jaana: for (i = 0; i < n;) jaisi line = infinite loop. Condition mein ya body mein update likhna zaroori hai.
- Loop ki condition mein <= aur < ka farak: i <= n mein n bhi chalega, i < n mein nahi. Array mein hamesha i < size — kyunki index 0 se hai. Off-by-one error ka main source.
- break aur continue ulta samajhna: break = poora loop band, continue = sirf ye wala round chhod. Output questions mein dono ka farak exam mein test hota hai.
Chaiwala roz wahi kaam baar baar karta hai — jab tak order aata hai, tab tak chalata hai. Ek round toh pakka hota hai (order aaye ya na aaye — apni chai banayi hi):
do {
order = next_customer(); // ek kaam
make_chai(order);
} while (order != NULL); // jab tak customer
Infinite day: while (1) { work(); } — break = ghar jaana- TCS NQT: loop wale output questions (counter, break point) — 1-2Q.
- College exam: factorial, prime, reverse number program likhwana.
- GATE: loop complexity + do-while vs while difference.
- Trap: "do-while condition pehle check hoti hai" — galat, woh while hota hai.
Loops ready. Agla lesson — Arrays — mein dekhenge ek variable ki jagah ek poora data kaise rakhte hain.