itk:p1 föreläsning 5
DESCRIPTION
ITK:P1 Föreläsning 5. Iteration, slumpning och arrayer. DSV Peter Mozelius. Iterativ programutveckling. Att bygga programmen bit för bit Lägg till en rad kod i taget och kontrollera att allt fungerar innan något mera läggs till Enklare felsökning, bättre kontroll - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/1.jpg)
1
ITK:P1 Föreläsning 5
Iteration, slumpning och arrayer
DSV Peter Mozelius
![Page 2: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/2.jpg)
2
Iterativ programutveckling
Att bygga programmen bit för bit Lägg till en rad kod i taget och
kontrollera att allt fungerar innan något mera läggs till
Enklare felsökning, bättre kontroll
Att gå igenom programmen en gång till när all kod fungerar och optimera
![Page 3: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/3.jpg)
3
Iterativ systemutveckling
![Page 4: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/4.jpg)
4
Iteration i Java
Iteration genom programslingor (loopar) Ett antal rader kod som utförs flera gånger Hur många gånger bestäms av ett villkor Det började en gång i tiden med while-
loopen while(villkor) { kodrad(er);
}//while
![Page 5: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/5.jpg)
5
while-loop
Två kombinerade exempel: int x = 1, y = 1; while (x < 5) x++;
while (x > 1) { y *= x--;
}//while Vad blir y?
![Page 6: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/6.jpg)
6
do-sats
Som en while-loop men villkoret testas sist: do{
ruta1.setText(”Vad är 4 + 5 ?”);
int svar = hämtaSvar();
ruta2.setText(”Fel, försök igen.”);
} while (svar != 9);
ruta2.setText(”Grattis, helt rätt!” );
![Page 7: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/7.jpg)
7
for-loop (Kodexempel 1)
När man vet innan hur många gånger som koden ska itereras:
int x = 7; for(int i = 0; i < 13; i++) {
System.out.println(x * i);
}
Vad skrivs ut?
![Page 8: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/8.jpg)
8
Lokala variabler
Olika variabler har olika funktioner Olika variabler har olika livslängd Lokala variabler deklareras inne i ett block
och lever sedan enbart inom blockets längd public void minMetod () { int x = 1; //lokal variabel
while(x <= 18) {
gör spännande saker;
}
}
![Page 9: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/9.jpg)
9
Initiering av variabler
Lokala variabler måste alltid initieras innan de används i programkoden
Klass- och instansvariabler däremot ges automatiskt startvärden
En integer ges värdet 0 En referensvariabel sätts till null En boolean initieras default till false
![Page 10: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/10.jpg)
10
Konstanter i Java
Klass- och instans-variabler kan sättas som konstanter med värden som inte kan ändras
För konstanter finns modifieraren final En konstant vi ska använda i Uppgift3: final float PI = 3.14159f;
Kan även se ut som i: public static final double PI = 3.14159265358979;
![Page 11: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/11.jpg)
Paus
![Page 12: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/12.jpg)
12
Robust kod
Att skriva koden så att programmet inte kraschar helt när ett litet fel inträffar
Felhantering i de situationer där tveksamheter kan tänkas uppstå
try – catch – (finally) Undantag kastas Undantag fångas
![Page 13: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/13.jpg)
13
Undantag
Ett undantag eller en exceptionell händelse fångas och programmet kan köra vidare:
try { tal = Integer.parseInt(svarsRuta.getText()); } catch(NumberFormatException nfe){ System.err.print("Felaktigt talformat: "); System.err.println(nfe.getMessage()); infoRuta.setText(”Ett heltal tack!”); }
![Page 14: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/14.jpg)
14
Att skriva egna undantag
En egendefinierad klass som ärver Exception
class MittUndantag extends Exception En enkel konstruktor i stil med: public MittUndantag(String str) { super (str); } Undantag kan sedan kastas enligt: if (!villkor) throw new MittUndantag(”FEL: Du … ”);
![Page 15: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/15.jpg)
15
Slumpning i Java
Användbart bl a i simuleringar och spel Det går att slumpa på flera sätt i Java Vi gör som i kursboken med java.lang.Math.random() Metoden returnerar ett slumpmässigt
flyttal x 0 <= x < 1 Multiplicera till önskat intervall
![Page 16: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/16.jpg)
16
Slumpning i Java
Ett virtuellt tärningskast: int antalÖgon = tärningsKast();
public int tärningsKast() {
return (int)(Math.random() * 6) + 1;
}//tärningsKast
+1 ger 1 – 6 istället för 0 - 5
![Page 17: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/17.jpg)
17
Fält / arrayer
Den engelska benämningen för fält är array vilket också ofta förekommer i svenska böcker
Ett antal variabler av samma datatyp samlade till en enhet med indexering
De olika minnesplatserna i fältet kan tilldelas egna värden oberoende av varandra
Efter typnamnet finns [ ] int[] heltal; //enbart en deklaration
![Page 18: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/18.jpg)
18
Fält / arrayer
Fält är referensvariabler Fält måste initieras annars får de som
alla andra referensvariabler värdet null int[] heltal = new int[5]; ELLER utan new genom: int[] heltal = {45, 2, 67, 12, 3};
Vad finns i x efter: int x = heltal[2];
![Page 19: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/19.jpg)
19
Fält / arrayer
Fälten kan indexeras genom variabler: int[] heltal = new int[10]; for (int i = 0; i < 10; i++) {
heltal[i] = i * 2;
}
Vad finns sedan i x efter: 1) int x = heltal[4];
2) x = heltal.length;
![Page 20: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/20.jpg)
20
Fält / arrayer
Fält kan även skapas för objekt: Color[5] färgfält; // java.awt.Color Button[8] knappfält; //java.awt.Button Flyg[12] flygfält; //egendefinierat
Flerdimensionella fält (fält av fält): int[][] matris = new int [8][8]; //ett schackbräde
![Page 21: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/21.jpg)
Kodexempel 2
public class F5_exempel2 {
private int antalÖgon;
private int[] minaKast;
public F5_exempel2(){
minaKast = new int[5];
skrivUt(kastaFemGånger(minaKast));
}
21
![Page 22: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/22.jpg)
Kodexempel 2
public int kastaTärning(){
return (int)(Math.random() * 6) + 1;
}
public int[] kastaFemGånger(int[] minaKast){
for(int i = 0; i < 5; i++){
minaKast[i] = kastaTärning();
}
return minaKast;
}
22
![Page 23: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/23.jpg)
Kodexempel 2
public void skrivUt(int[] minaKast){
System.out.print("Mina kast: ");
int i = 0;
while(i < 5)
System.out.print(" " + minaKast[i++]);
System.out.println();
}
public static void main(String[] arg){
new F5_exempel2();
}
}
23
![Page 24: ITK:P1 Föreläsning 5](https://reader035.vdocuments.site/reader035/viewer/2022062408/568141e5550346895dadc55d/html5/thumbnails/24.jpg)
24
Allt om Java för nu!
Tack för att ni lyssnade!