= 5)] skriv ut tekst teller++ initiering av løkken løkkebetingelsen løkkekroppen oppdatering av løkkebetingelsen"> = 5)] skriv ut tekst teller++ initiering av løkken løkkebetingelsen løkkekroppen oppdatering av løkkebetingelsen">

Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Programmering i Java versjon 2001-05-16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Liknende presentasjoner


Presentasjon om: "Programmering i Java versjon 2001-05-16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."— Utskrift av presentasjonen:

1 Programmering i Java http://www.tisip.no/Javabok/ versjon 2001-05-16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6 Løkke som kontrollstruktur Hva er en løkke?side 2 while-setningen med eksempelside 3 Å teste løkkerside 5 Et eksempel på grafikkside 6-7 for-setningenside 8-9 Nøstede kontrollstrukturerside 10 do-while-setningenside 11 Valg av løkkesetning og testing av løkkerside 12

2 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 2 Hva er en løkke? En algoritme er et begrenset og ordnet sett med veldefinerte regler for løsning av et problem. Tre kategorier rekkefølge eller kontrollstrukturer: –sekvens (kapitlene 2-4) –valg (kapittel 5, Java-setninger: if og switch) –løkke (dette kapitlet, Java-setninger: while, for, do) En løkke gjør det mulig å gjenta en enkelt setning eller en blokk én eller flere ganger. En tellerkontrollert løkke er en løkke der antall gjennomløp er kjent på forhånd.

3 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 3 while-setningen med eksempel class SkrivMangeLinjer { public static void main(String[] args) { int teller = 0; while (teller < 5) { System.out.println("Dette er en linje"); teller++; } Utskrift: Dette er en linje while-setningen: while (logisk uttrykk) setning/blokk Gjør oppgaven side 162. teller = 0 [teller < 5] [teller >= 5)] skriv ut tekst teller++ initiering av løkken løkkebetingelsen løkkekroppen oppdatering av løkkebetingelsen

4 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 4 class SoekEtterTall { public static void main(String[] args) { final int grense1 = 0; final int grense2 = 70; final int grense3 = 80; final int grense4 = 100; int antOKTall = 0; int tall = (int) ((grense4 - grense1)*Math.random() + 1); while (tall grense3) { antOKTall++; System.out.println(tall); tall = (int) ((grense4 - grense1)*Math.random() + 1); } System.out.println("Vi måtte trekke " + antOKTall + " tall til vi fant et ugyldig: " + tall); } En løkke med en generell betingelse trekk tall [tall < 70 || tall > 80] [tall >= 70 && tall <= 80] antOKTall++ trekk tall initiering av løkken løkkebetingelsen løkkekroppen oppdatering av løkkebetingelsen antOKTall = 0 skriv ut resultater

5 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 5 Å teste løkker Formuler testdata som fanger opp følgende tilfeller: –Løkken gjennomløpes 0 ganger. –Løkken gjennomløpes eksakt 1 gang. –Løkken gjennomløpes noen ganger. –Er det mulig å konstruere testdata som gjør at løkkebetingelsen aldri blir usann? Hvis ja, vil dette kunne bli en evig løkke, og det var vel ikke meningen? Gjør oppgavene 1-3 side 165.

6 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 6 Et eksempel på grafikk Vi skal lage appleten som tegner figuren nedenfor. De 11 flekkene er tilfeldig plassert. Følgende konstanter er deklarert: private static final int vinduBredde = 400; private static final int vinduHøyde = 300; private static final int diameter = 20; private static final int sentr = diameter / 2; private static final int antStreker = 10; En x-verdi trekkes slik: x = (int) ((vinduBredde - diameter) * Math.random() + 1); En sirkel tegnes slik: vindu.fillOval(x, y, diameter, diameter); En rett linje mellom to punkter tegnes slik: vindu.drawLine(x1, y1, x2, y2); Oppgaver –Finn antall løkkegjennomløp. –Sett opp løkkebetingelsen. –Konstruer resten av løkken.

7 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 7 Løsning import java.awt.*; import javax.swing.*; public class TegnFlekkerMedLinjer extends JApplet { public void init() { Container innhold = getContentPane(); Tegning tegningen = new Tegning(); innhold.add(tegningen); } class Tegning extends JPanel { private static final int vinduBredde = 400; private static final int vinduHøyde = 300; private static final int diameter = 20; private static final int sentr = diameter / 2; private static final int antStreker = 10; Gjør oppgavene side 168. public void paintComponent(Graphics vindu) { super.paintComponent(vindu); int x = (int) ((vinduBredde - diameter) * Math.random() + 1); int y = (int) ((vinduHøyde - diameter) * Math.random() + 1); vindu.fillOval(x, y, diameter, diameter); int teller = 0; while (teller < antStreker) { int forrigeX = x; int forrigeY = y; x = (int) ((vinduBredde - diameter) * Math.random() + 1); y = (int) ((vinduHøyde - diameter) * Math.random() + 1); vindu.drawLine(forrigeX + sentr, forrigeY + sentr, x + sentr, y + sentr); vindu.fillOval(x, y, diameter, diameter); teller++; }

8 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 8 class SkrivMangeLinjer { public static void main(String[] args) { int teller = 0; while (teller < 5) { System.out.println("Dette er en linje"); teller++; } class SkrivMangeLinjer { public static void main(String[] args) { for (int teller = 0; teller < 5; teller++) { System.out.println("Dette er en linje"); } for-setningen while-setningen kan brukes til alle typer løkker. Vanlig å bruke for-setningen dersom løkken er tellerkontrollert. Oppgave: Identifiser initiering, betingelse og oppdatering av løkkebetingelsen i de to løkkekonstruksjonene over. Syntaks: for (initiering; betingelse; oppdatering av betingelse) setning/blokk Definisjonsområdet til variabler deklarert i for-setningen er for-setningen selv.

9 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 9 for-setningen, eksempler Tegner 30 sirkler etter hverandre int x = 0; int y = 50; for (int teller = 0; teller < 30; teller++) { vindu.drawOval(x, y, 20, 20); x += 20; } Andre for-setninger for (int tall = 1000; tall > 500; tall--) { // teller ned fra 1000 til og med 501 for (int xPos = 100; xPos < 800; xPos += 5) { // øker med 5 for hvert // gjennomløp for (int medlNr = 101; medlNr <= 900; medlNr++) { // medlNr fra og med // 101 til og med 900

10 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 10 Nøstede kontrollstrukturer if-setninger inne i hverandre, løkker inne i hverandre, if- setninger inne i løkker og omvendt, osv... Hva skrives ut når følgende program kjører? class SumAvTall { public static void main(String[] args) { for (int linjeteller = 0; linjeteller < 10; linjeteller++) { int sum = 0; for (int tall = 1; tall <= linjeteller; tall++) { sum += tall; System.out.print(tall + " "); } System.out.println("Summen blir: " + sum); } Gjør oppgave 1 side 170.

11 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 11 do-while-setningen do-while-setningen skiller seg fra for- og while-setningene ved at løkkekroppen alltid gjennomløpes minst en gang Praktisk ved innlesing der data skal kontrolleres Eksempler: int antStudenter; // obs! må deklareres utenfor løkken do { antStudenter = gui.lesHeltall(“Studentregister”, “Antall studenter (maks. 30): “); } while (antStudenter 30); char operator; do { String valg = gui.lesTekst("Kalkulator", "Velg operator, skriv operatoren + - * / "); valg = valg.trim(); // fjerner blanke i begynnelsen og slutten av strengen operator = valg.charAt(0); // henter ut første (og eneste) tegn } while (operator != '+' && operator != '-' && operator != '*' && operator != '/'); Syntaks: do setning/blokk while logisk uttrykk

12 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2000. ISBN 82-417-1132-8. Kapittel 6, side 12 Valg av løkkesetning Bruk for-setningen dersom antall gjennomløp av løkken er kjent på forhånd, eller der en heltallsvariabel øker eller avtar med en fast verdi for hvert gjennomløp. Bruk while-setningen dersom antall løkkegjennomløp styres av en generell betingelse. Bruk do-while-setningen dersom antall løkkegjennomløp styres av en generell betingelse, og løkken alltid skal gjennomløpes minst en gang.


Laste ned ppt "Programmering i Java versjon 2001-05-16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."

Liknende presentasjoner


Annonser fra Google