Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning
if-satsen if-satsen används när ett villkor avgör vad som ska göras: if (ålder < 11) System.out.println(”Barnförbjudet!”); Man kan lägga till else för att tal om vad som ska hända om villkoret inte är uppfyllt: if (ålder < 11) System.out.println(”Barnförbjudet!”); else System.out.println(”Välkommen!”);
Jämförelseoperatorer I villkor kan följande operatorer användas: Strängar kan inte jämföras med operatorerna ovan (eftersom strängar inte är primitiva datatyper).
Villkor kan kombineras med följande tre operatorer: if (ålder = 21) System.out.println(”OK!”); Logiska operatorer
Slingor När man vill att vissa satser ska utföras flera gånger använder man en slinga. För att visa vilka satser som ska upprepas sätter man { } runt dessa. Man kan välja mellan att –ange ett villkor för hur länge satserna ska upprepas (while-slinga) –tala om hur många gånger satserna ska upprepas (for-slinga)
while-slingan boolean fortsätt = true; Så länge som villkoret är uppfyllt utförs satserna: while (fortsätt) { /* Satser som upprepas */ } Om villkoret passar bättre sist skriver man: do { /* Satser som upprepas */} while (fortsätt);
Slingexempel - while // Beräknar tio tvåpotenser class Potens { public static void main(String[] args) { int varv=1, tvåpotens=1; while (varv <= 10) { tvåpotens=tvåpotens*2; System.out.println(tvåpotens); varv=varv+1; } //while } //main } //Potens
for-slingan Vet man hur många varv slingan ska gå runt kan man använda for istället: for (int i=0; i<2; i++) { System.out.println(”Varv ” + i); } Variabeln i ovan existerar bara inuti for- slingan
Slingexempel - for // Beräknar tio tvåpotenser class Potens { public static void main(String[] args) { int tvåpotens=1; for (int varv=1; varv <= 10; varv++) { tvåpotens=tvåpotens*2; System.out.println(tvåpotens); } //for } //main } //Potens
Felsökning Kompileringsfel Exekveringsfel Logiska fel
Kompileringsfel Du har skrivit något som inte är korrekt Java. Exempel: '}' expected MinJavaKod.java:13: '}' expected } // MinJavaKod ^ } saknas vid pilen ^
Exekveringsfel Under körning blir något fel. Exempel: Du har en vektor som har 10 element, men något går fel och programmet försöker att ta fram element 33. Du ber användaren skriva ett heltal som du vill lagra, men denne skriver ett decimaltal.
Logiskt fel Du har tänkt fel, dvs programmet kör men producerar felaktiga resultat. Exempel: Du vill beräkna cirkelns omkrets men använder formeln för cirkeln area. Du använder en variabel x som du tror är radien i din formel, men i ditt program är x diametern. OBS, x är ett dåligt namnval.
Tjuvtitt på metoder Vissa beräkningar behöver man göra ofta i ett program. Istället för att skriva satserna som utför beräkningen flera gånger kan man definiera en metod som gör beräkningen. En metod känner man igen på att den har parenteser efter namnet (t ex println(), sin(0.58) ).
Tjuvtitt på klasser De primitiva datatyperna beskriver enkla värden (ett heltal, ett tecken osv). För att beskriva sammansatta data använder man klasser. Namn på klasser börjar alltid med en versal (t ex String).