Mer källkod Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne Erik Forslin efo@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 1
Styrstrukturer i Java En styrstruktur är något som påverkar vad som skall hända när ett Javaprogram körs (exekveras) En styrstruktur är antingen ett val eller en slinga Val: if, else if och else Slingor: while, for och do-while Vad som kommer exekveras avgörs av styrstrukturens villkor 2
Val: if-satsen if-satsen används för att exekvera vissa åtgärder under förutsättning att satsens villkor är uppfyllt (true) Formatet på den enklaste varianten: if (villkor) åtgärd; eller om man har flera åtgärder för samma villkor: if (villkor) åtgärd; åtgärd; if-satsen kan översättas direkt till svenska: Om villkoret är sant, exekvera åtgärderna 3
else if-satsen else if-satsen används i anslutning till direkt föregående if-sats (eller else if-sats) Flera else if-satser kan anslutas till varandra Format: if (villkor1) åtgärd1; else if (villkor2) åtgärd2; else if (villkor3) åtgärd3;... En direktöversättning skulle kunna vara: Om villkor1 är sant, exekvera åtgärd1, i annat fall om villkor2 är sant, exekvera åtgärd2, i annat fall om villkor3 är sant, exekvera åtgärd3, Om inget villkor är sant kommer ingen av åtgärderna att exekveras 4
else-satsen Som avslutning på en eller flera if- eller else ifsatser kan man ha ett ensamt else Om inget villkor är sant kommer åtgärderna till else-satsen att exekveras 5
Exempel med if-satser En enkel if-sats: if (priset > 10000) System.out.println("Oj! Vad dyrt!"); System.out.println("Du får bara 5000!"); Med flera else if och en else: if (priset > 10000) System.out.println("Oj! Vad dyrt!"); System.out.println("Du får bara 5000!"); else if (priset > 5000) System.out.println("Dyrt, men OK..."); else if (priset > 3000) System.out.println("OK..."); else System.out.println("Toppen!"); System.out.println("Jag slår till direkt!"); 6
Slingor: while-satsen while-satsen används om en samling åtgärder skall exekveras flertalet gånger ( flera varv ) Innan varje varv kontrolleras villkoret för att avgöra om koden ska exekveras Exekvering av åtgärderna i slingan fortsätter så länge som villkoret är sant Om villkoret inte ens är sant från början så kommer åtgärderna aldrig exekveras (de exekveras noll gånger) Om villkoret förblir sant för alltid, så kommer också slingan exekvera i oändlighet 7
Exempel med while-satsen Varvtalsuppräkning: int antalvarv = 10; // Förberedelser för första varvet int i = 0; while (i < antalvarv) // Åtgärder i varje varv System.out.println("Varv nummer " + i); // Förberedelser för nästa varv ++i; Nedräkning: int tidkvar = 10; System.out.println("Du har " + tidkvar + " sekunder på dig!"); while (tidkvar > 0) System.out.println(tidKvar + " sekunder kvar..."); --tidkvar; System.out.println("Tiden är ute!"); 8
do-while-satsen do-while-satsen används som while med undantaget att villkoret kontrolleras i slutet på varje varv En do-while-sats exekverar alltid slingan minst en gång åtgärderna i Exempel (från DoWhile.java): String svar = ""; do utdata.print("ange ditt svar: "); svar = indata.readline(); // Inget vettigt svar (tom sträng)? if (svar.length() == 0) utdata.println("du svarade inte!"); while (svar.length() == 0); System.out.println("Tack för svaret!"); 9
for-satsen for-satsen är ett alternativ till while Utnyttjas ofta när man har ett bestämt antal varv som ska exekveras Mer kompakt (men även mer komplicerat?) skrivsätt än med while Varvtalsuppräkningsexempel: int antalvarv = 10; for (int i = 0; i < antalvarv; ++i) System.out.println("Varv nummer " + i); 10
while och for Det går alltid att omvandla en while-sats till en for-sats och vice versa. Följande exempel ger samma resultat: Med while: int antalvarv = 10; int i = 0; while (i < antalvarv) System.out.println("Varv nummer " + i); ++i; Med for: int antalvarv = 10; for (int i = 0; i < antalvarv; ++i) System.out.println("Varv nummer " + i); 11
Operatorer En operator är ett kompakt skrivsätt för att beskriva en beräkning eller motsvarande Det finns framför allt två typer av operatorer: unära och binära Unära operatorer används tillsammans med en operand, t ex ++i -x!villsluta new BufferedReader(...) Binära operatorer används tillsammans med två operander, t ex x = 17 x + y a / 10 a % 10 x < 7 x == 12 x!= 100 (x >= 5) && (x <= 10) 12
Källkodsexempel: Delbarhet // Delbarhet.java public class Delbarhet public static void main(string[] args) int max = 100; int delare = 7; for (int i = 1; i <= max; ++i) if ((i % delare) == 0) System.out.println(i + " / " + delare + " går jämnt ut!"); // main() // Delbarhet datorn> javac Delbarhet.java datorn> java Delbarhet 7 / 7 går jämnt ut! 14 / 7 går jämnt ut!... main(...) int max 100 int delare 7 (vid 5:e varvet) int i 1 2 3 4 5 13