WHILE-satsen

Inledning

While-satsen är ytterligare ett exempel på en loop. Du kommer antagligen att tycka att den är enklare att använda än for-satsen. Vilken sorts loop ska man välja i olika situationer? Du bör ställa dig följande fråga:

Ska jag göra ett begränsat antal iterationer (upprepningar)?

Om svaret är JA så ska du använda en for-sats.

Om svaret är NEJ så ska du använda en while-sats.

Finns det ett sätt att veta eller räkna ut i förväg hur många gånger en loop behöver köras så är vår rekommendation att använda en for-sats. Går det bara att bestämma inne i loop'en, när loop'en ska avbrytas, så är rekommendationen att använda en while-sats. En av anledningarna till att följa detta mönster är att koden blir mer lättläst, speciellt för andra. Men vad som är "lättläst" kod är oftast, som mycket annat, en högst subjektiv bedömning.

Exempel 1

Nu ska vi se hur en typisk while-loop skrivs:

Exempel 1

int i = 1;
while( i != 0)
{
	//Denna kod loop'as
	Console.WriteLine("Mata in ett tal: ");
	i = int.Parse(Console.ReadLine() );
}

While-satsen består av endast ett villkor. Så länge villkoret stämmer, dvs att svaret på formuleringen inom parenteserna är sant (rad 2) så kommer programmet att loop'a runt. Klammerparenteserna (eller som en del säger, måsvingar) markerar while-satsens början och slut. Programkoden mellan klammerparenteserna är det som kommer att upprepas.

Exemplet ovan börjar med att skapa en variabel i. While-satsen ställer frågan "är i skiljt från 0?". Svaret är: JA! (eftersom i är 1). Okej då ska vi in i loop'en och köra ett varv.

Väl inne i loopen så uppmanas användaren mata in ett tal. Programmet tolkar svaret och lägger resultatet i variabeln i för att sedan hoppa tillbaka till början på while-satsen och ställa samma fråga/villkor som tidigare. "är i skiljt från 0?". Svaret beror ju nu på vad det var vi matade in. Så länge som vi inte matar in 0 så kommer loop'en att fortsätta i all oändlighet. Detta stämmer bra med frågan vi ställde oss i inledningen när vi skulle besluta om vi skulle använda en for- eller while-sats.

Exempel 2

Exempel 2

string s = "";
while( s != "hej")
{
	//Denna kod loop'as
	Console.WriteLine("Säg hej till publiken: ");
	s = Console.ReadLine();
}
Console.WriteLine("Hej på dig! ");

Exemplet ovan bygger sitt villkor på en sträng. Du ombeds att mata in någon text. Programmet loop'ar tills du skriver "hej", då avslutas programmet med att skriva ut "Hej på dig!".

Skillnader mellan FOR och WHILE

Skillnaden mellan for och while är främst att for-satsen, med sina tre delar, är lite mer specifik med vad som ska göras. Du kan få färre rader kod i ditt program och förhoppningsvis tydligare kod genom att använda for-satsen.

I exemplet nedan så kan du se två typiska fall skrivna både med for och while. Exemplen visar just skrivsätten och inget annat.

Exempel: Skillnader

//Typisk for-sats
for(int i=0; i < 10; i++)
{
}

//Går att skriva som en while sats
int i=0;
while(i < 10)
{
	//sist i loop'en:
	i++;
}

//Typisk while-sats
while(i != 0)
{
}

//Går att skriva som en for-sats
for( ; i != 0; )
{
}

Videogenomgång

Övning 1

Skriv ett program som skriver ut talen 1 till 100 på skärmen. Använd en while-loop.

Övning 2

Skapa ett program som ber dig skriva in ett lösenord. Om du matar in fel så ska det meddelas och man får försöka på nytt. Programmet avslutas först då rätt lösenord matats in. Du kan sen utöka programmet med att tala om hur många gånger du har försökt att logga in.

Fler övningar

Fler intressanta och utmanande övningar hittar du i artikeln Övningar till While-satsen .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Scroll to top