Don't do-while!

Jag är utsatt för en do-while-konspiration! Ni som programmerar i något relativt modernt programmeringsspråk har garanterat sett loopar förut. För er andra kan jag berätta att en loop är något man använder när man vill göra något ett visst antal gånger efter varandra, sålänge som ett villkor är uppfyllt. En while-loop används när man inte vet hur många gånger man vill loopa och en for-loop har man när man vet på förhand hur många varv man vill loopa. Egentligen spelar det ingen större roll, while går att använda till allt så det gör jag. Den är snyggast på nåt sätt. Nu är det då så att både mina studenter och min labbass (ja, i en annan kurs) envisas med do-while, en märklig konstruktion för loopar som ska köras minst en gång. Jag vet inte vad jag ska känna inför det. Såhär kanske:

image309

Ni får hjälpa mig att bena ut det här, vilken loop är trevligast och varför? (Ni som inte programmerar, vilken är rent estetiskt snyggast? I exemplen nedan gör alla samma sak, sätter en räknare i till 0, räknar upp i och gör något sålänge i är mindre än 3). Så, nu är det läsarnas val här. Vilken loop vinner?

Den jättefina while-loopen?
int i =0;
while(i < 3) {
// Gör nåt!
i++;
}

Den hyggliga for-loopen?
for(int i=0; i < 3; i++) {
// Gör nåt!
}

Eller *rys* do-while?
int i =0;
do {
// Gör nåt!
i++;
} while(i < 3);

Kommentarer
Postat av: Oscar

jag skulle gå på typ:

for i in xrange(3)

# Gör något!

:)

Postat av: Kaprifol

Helt acceptabelt - trots språkval. ;) Sålänge det inte är något litet do med någonstans så är jag nöjd.

2008-04-16 @ 20:58:46
URL: http://kaprifol.blogg.se
Postat av: Blaufish

for-loopen är syntaktiskt socker runt while, och skall enligt de flesta guidelines endast användas till att uttrycka "enkla for-loopar" (likt dom du demade).

God sed i C/C++ världen är att använda while till i stort sätt alla andra loopar.

do { } while används i stort sätt inte; det är extremt sällan den special-loopen behövs. Det är bara Ada/Pascal/VHDL troll som saknar REPEAT UNTIL som använder den för att de inte vill växa upp och omfamna en modern värld härskar while(förevigt). Enda anledningen att använda do { } while är om den loopen man skall uttrycka absolut måste iterera en gång även om vilkåret är falskt.

Det korrekta är alltså att leta i labbarna och se om loopen absolut måste tas även om inlägget är falskt. Om det det inte måste tas då det är falskt så skall labbarna underkännas pga grovt missbruk av felaktig val av loop! Det kan även polisanmällas med referens till lagen om förargelseväckande beteende! :-)

2008-04-16 @ 21:39:50
URL: http://blaufish.blogg.se/
Postat av: cos

får man rösta på följande konstruktion?

int i = 0;
loop:
// Gör nåt!
i++;
if (i

2008-04-17 @ 20:13:36
URL: http://berattarladan.blogg.se/
Postat av: cos

oj! slutklämmen bortfiltrerad av blogg.se för att slippa html-taggar. det var oväntat.

nåväl, det är väl ganska uppenbart vad för dumhet jag skrev på slutet.

2008-04-17 @ 20:16:07
URL: http://berattarladan.blogg.se/
Postat av: Kaprifol

Fisken, du har som vanligt alldeles rätt. Förargelseväckande beteende är vad det är! :)

Ja cos, din loop får vara med på ett hörn. Det är ju inte en sån där... onämnbar. :)

2008-04-17 @ 22:23:05
URL: http://kaprifol.blogg.se

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress:

URL:

Kommentar:

Trackback