Theory
પાનાએ નિર્ણય લેવા પડે છે
FestConnect એ નક્કી કરવું પડે: આ student પાત્ર છે (વર્ષ 2 કે ઉપર)? એણે દોહરાવવું પડે: 30 એ 30 events છાપવાં. એણે વિકલ્પોમાંથી પસંદ કરવું પડે: રોકડ, card, કે UPI. અને ક્યારેક એણે વહેલું અટકવું પડે: ભરેલું event મળ્યું, તપાસવાનું બંધ.
અત્યાર સુધી code સીધો નીચે, ઉપરથી નીચે ચાલતો હતો. Control structures એ વહેણને વાળે છે: એ code ને ફંટાવા (રસ્તો પસંદ કરવા) અને ફરી ફરવા (રસ્તો દોહરાવવા) દે છે. બે પ્રકારના ફંટાવા, ત્રણ પ્રકારના loop, અને એને અટકાવવાની બે રીત.
Theory
ફાંટા અને ગોળ ચકરાવા
Code ને વાહન ચલાવવા તરીકે વાંચો: if/else એ ફાંટો છે, તમે પાટિયા પ્રમાણે એક રસ્તો લો છો. switch એ અનેક નિકાસવાળો ગોળ ચકરાવો છે: તમે એ નિકાસેથી નીકળો છો જે તમારા મુકામ સાથે મળે છે. Loop એ એવો ચકરાવો છે જેમાં તમે ત્યાં સુધી ફર્યા કરો છો જ્યાં સુધી કોઈ શરત તમને નીકળવા ન દે. break એ કટોકટીનો નિકાસ છે જે ચકરાવો તરત છોડી દે છે; continue આ ફેરો પૂરો કર્યા વગર સીધો પછીના ફેરા પર કૂદે છે.
Theory
પહેલાં ફંટાવું, પછી ફરવું
ફંટાવું:
if (cond) { } else if (cond2) { } else { }: પહેલો એવો ટુકડો ચલાવો જેની શરત સાચી હોય.switch (value) { case x: ...; break; default: ... }: એક મૂલ્યને અનેક સામે મેળવો. દરેક case ને break જોઈએ.
ફરવું:
while (cond) { }: પહેલાં તપાસો, પછી ચલાવો (શૂન્ય વાર પણ ચાલી શકે).do { } while (cond): એક વાર ચલાવો, પછી તપાસો (ઓછામાં ઓછો એક ફેરો).for (init; cond; update) { }: ગણતરીવાળો loop.
અટકાવવું: break loop છોડે છે; continue એના પછીના ફેરા પર કૂદે છે.
Practical
FestConnect ના નિર્ણય અને loops
let year = 3;
if (year >= 2) {
console.log("Eligible");
} else {
console.log("First years cannot register");
}
// switch: each case needs break
let pay = "upi";
switch (pay) {
case "cash": console.log("Pay at desk"); break;
case "upi": console.log("Scan QR"); break;
default: console.log("Unknown");
}
// for loop over 3 events, skip the full one, stop at 'gala'
let events = ["robotics", "full", "dance", "gala"];
for (let i = 0; i < events.length; i++) {
if (events[i] === "full") continue; // skip this turn
if (events[i] === "gala") break; // stop entirely
console.log(events[i]); // robotics, dance
}This example runs in Gri-Learn on the web, where you can edit it and see the output.
Think first
while સામે do-while
seatsLeft એ 0 છે. while (seatsLeft > 0) { book(); } ને do { book(); } while (seatsLeft > 0); સાથે સરખાવો. દરેકમાં book() કેટલી વાર ચાલે છે, અને FestConnect માટે એ કેમ મહત્ત્વનું છે?
Show the answer
while વાળી આવૃત્તિ book() ને શૂન્ય વાર ચલાવે છે: એ પહેલાં 0 > 0 તપાસે છે, જે ખોટું છે, એટલે એ ક્યારેય અંદર જ જતું નથી. do-while વાળી આવૃત્તિ તપાસતાં પહેલાં book() ને એક વાર ચલાવે છે, અસ્તિત્વમાં જ ન હોય એવી બેઠક નોંધીને, પછી અટકે છે. do-while હંમેશા ઓછામાં ઓછું એક વાર ચાલે છે, જે અહીં bug છે. નિયમ: do-while ત્યારે જ વાપરો જ્યારે શરીર ખરેખર ગમે તે થાય તોય એક વાર ચાલવું જ જોઈએ (જેમ કે દોહરાવવાનું પૂછતાં પહેલાં menu દેખાડવું).
Quiz
એક switch માં `case "cash": console.log("Desk"); case "upi": console.log("QR");` છે અને **કોઈ** break નથી. મૂલ્ય "cash" છે. શું છપાય છે?
- 'Desk' અને 'QR' બંને, કારણ કે break વગર અમલ આગળ ઢસડાય છે
- ફક્ત 'Desk'
- ફક્ત 'QR'
- કશું નહીં, કારણ કે case માં દાખલ થવા break જરૂરી છે
Show the answer
'Desk' અને 'QR' બંને, કારણ કે break વગર અમલ આગળ ઢસડાય છે
break વગર, એક વાર case મળે પછી અમલ 'ઢસડાઈને' પછીના cases પણ ચલાવતો રહે છે, એટલે 'cash' એ 'Desk' અને 'QR' બંને છાપે છે (A). એ પહેલા પર અટકતું નથી (B), અને એ મળતા case માં બરાબર દાખલ થાય જ છે (C, D ખોટા છે). આ ઢસડાવું એ switch નો જાણીતો bug છે: દરેક case ના છેડે break મૂકો, સિવાય કે તમે જાણી જોઈને એમની વચ્ચે code વહેંચવા માંગતા હો.
Watch out
વહેણના ફાંદા
1. switch માં ખૂટતું break: અમલ પછીના cases માં ઢસડાય છે. દરેક case ને break થી પૂરું કરો.
2. અંતહીન loop: એવો while/for જેની શરત ક્યારેય ખોટી થતી નથી (તમે ગણતરી બદલવાનું ભૂલી ગયા) એ પાનું થીજવી દે છે. હંમેશા નિકાસ તરફ ખસો.
3. do-while ન ચાલવું જોઈએ ત્યારે પણ એક વાર ચાલે છે: while થી પહેલાં તપાસો, સિવાય કે એક ખાતરીબદ્ધ ફેરો ઇરાદાપૂર્વક હોય.
4. શરતમાં =: if (year = 2) સોંપે છે, અને હંમેશા સાચું ગણાય છે. === વાપરો.
Theory
Loops validation ચલાવે છે
Unit 5 માં, form નું validation દરેક જરૂરી ખાના પર ફરીને એ ભરાયું છે કે નહીં તપાસે છે, અને એ પણ બરાબર આ જ for વત્તા if વાપરીને, અને પહેલું ખાલી ખાનું જણાવવા break થી બહાર નીકળે છે. અહીંનું પાત્રતાનું if એ જ validation ના તર્કનું બીજ છે. ફંટાવું અને ફરવું એ તમે બાંધશો એ દરેક interactive લક્ષણની કરોડરજ્જુ છે.
Summary
Key takeaways
- if / else if / else (રસ્તો પસંદ કરો) અને switch/case (એક મૂલ્યને અનેક સામે મેળવો) થી ફંટાવો.
- while (પહેલાં તપાસો), do-while (પહેલાં એક વાર ચલાવો), for (ગણતરીવાળો loop) થી ફરો.
- break loop ને તરત છોડે છે; continue loop ના પછીના ફેરા પર કૂદે છે.
- દરેક switch ના case ને break જોઈએ, નહીં તો અમલ પછીના case માં ઢસડાય છે.
- અંતહીન loops ટાળો (શરતને હંમેશા ખોટા તરફ ખસેડો) અને શરતમાં ક્યારેય = ન વાપરો.
- Memory hook: ફાંટા (if/switch) અને ગોળ ચકરાવા (loops), અને કટોકટીના નિકાસ તરીકે break.