Presentation laddar. Vänta.

Presentation laddar. Vänta.

Iteration – Repetitionssats - while

Liknande presentationer


En presentation över ämnet: "Iteration – Repetitionssats - while"— Presentationens avskrift:

1 Iteration – Repetitionssats - while
Lektion 7 Iteration – Repetitionssats - while

2 if-else-if if(uttryck_1){ satser_1 } else if(uttryck_2){ satser_2 else if(uttryck_3){ satser_3 . else{ satser

3 switch-case Fungerar som if-sats Programmeringsexempel:
switch(heltalsvariabel) { case 1: //programmeringskod break; case 2: default: } Programmeringsexempel: Läs in två tal Fråga efter räknesätt (+, -, *, /) Räkna ut och skriv ut resultat

4 System.out.println("Ange två tal och raknesätt: ");
double tal1 = Keyboard.readDouble(); double tal2 = Keyboard.readDouble(); char räknesätt = Keyboard.readChar(); switch(räknesätt){ case '+': System.out.println((tal1 + tal2)); break; case '-': System.out.println((tal1 - tal2)); case '*': System.out.println((tal1 * tal2)); case '/': System.out.println((tal1 / tal2)); default: System.out.println("Felinmatning!"); } Inläsning räknesätt bestämmer vilket case vi går in i! räknesätt är en char alltså ’ ’ Om räknesätt innehåller annat

5 Algoritm och pseudokod
algoritm = ett begränsat antal instruktioner för att lösa ett problem pseudokod = den programmeringskod, beskriven i ord, som löser algoritmen

6 Från källkod till pseudokod
Algoritm skriven i programmeringsspråk int n1 = Keyboard.readInt(); int n2 = Keyboard.readInt(); int sum = n1 + n2; System.out.print(”Summan blir ”+sum); Läs in två heltal. Beräkna summan av talen. Skriv ut summan. Algoritm skriven i pseudokod

7 Från pseudokod till källkod
Skriv ett program som kollar om två inlästa heltal är jämnt delbara med varandra. Läs in två heltal. Kolla om talen är jämnt delbara genom att undersöka resten. Skriv lämplig utskrift beroende på vilket fall. int n1 = Keyboard.readInt(); int n2 = Keyboard.readInt(); if(n1%n2 == 0 || n2%n1 == 0) System.out.println(”Ja!”); else System.out.println(”Nej!”); Blir det rest?

8 Strukturdiagram För att kunna få en struktur på ett program eller en algoritm kan det vara bra att gör s k strukturdiagram

9 Från pseodokod till strukturdiagram

10 Från pseodokod till strukturdiagram
Läs in två heltal. Kolla om talen är jämnt delbara genom att undersöka resten. Skriv lämplig utskrift beroende på vilket fall.

11 Deklarera i och ge den startvärdet 0
Iteration Iteration är någonting som upprepar sig ett visst antal gånger. Ex: Skriv in ett namn och skriv ut namnet 10 gånger. Lösning: Använd en räknare som ”håller koll på” hur många gånger som iterationen har kört. Start Läs in namn Deklarera i och ge den startvärdet 0 false i < 10 true Skriv ut namn Avsluta Öka i med 1

12 while-sats while-satsen är en s k repetitionssats.
Den utför den programmeringskod som finns innanför klammrarna så länge dess vilkor är uppfyllt. while(uttryck) { //satser }

13 while-sats System.out.print(”Skriv in ditt namn: ”);
String namn = Keyboard.readInt(); int i = 0; while(i < 10) { System.out.println(namn); i++; }

14 Iteration Skriv ett program som summerar alla tal som användaren skriver in till dess att användaren skriver in siffran 0.

15 Iteration System.out.print(”Skriv in ett tal: ”);
int n1 = Keyboard.readInt(); int sum = 0; while(n1!=0) { sum+=n1; n1 = Keyboard.readInt(); } System.out.print(”Summan blir ” +sum); Ge sum startvärde Så länge n1 ej är 0 Öka sum Läs in nytt tal till n1 Skriv ut vad sum blir

16 System.out.print(”Skriv in ett tal: ”); int n = Keyboard.readInt();
Skriv ett program som ber användaren skriva en ett heltal. Programmet skriver sedan ut talen tal, tal-1, tal-2, …, 3, 2, 1. Alltså programmet ska räkna ner från talet till 1. System.out.print(”Skriv in ett tal: ”); int n = Keyboard.readInt(); while(n > 0) System.out.print(n-- +” ”); while(uttryck) satser Ger följande utskrift om siffran 7 lagras i n!

17 while-satsen while(uttryck) { sats_1; sats_2; . } Följande sker:
Uttrycket innanför parentesen testas först – är detta true (sant) görs satserna i while-satsen. Efter varje ”runda” testas uttrycket och om uttrycket är false (falskt) bryts while- loopen. Programmet fortsätter att köra där while-loopen slutar. OBS! Ska mer än en sats köras i while-loopen måste klamrar användas för att visa var loopen börjar och slutar!

18 Därefter ska resultatet skrivas ut och programmet avslutas.
Skriv ett program som multiplicerar alla tal från 1 till ett tal som användaren anger. Därefter ska resultatet skrivas ut och programmet avslutas. (Programmet räknar alltså ut n! (läs n-fakultet), d.v.s. 1*2*3*…*n, där n är ett inläst positivt heltal) Start Läs in tal Deklarera prod och ge den startvärdet 1 Deklarera i och ge den startvärdet 1 false i <= tal true prod = prod * i Avsluta Öka i med 1

19 Multiplicera prod med i
Iteration System.out.print(”Skriv in ett positiv heltal: ”); int tal = Keyboard.readInt(); int prod = 1; int i = 1; while(i <= tal) { prod = prod * i; i++; } System.out.print(tal+”! = ” +prod); Ge prod startvärde Ge i startvärde Multiplicera prod med i Öka i med 1 Skriv ut vad prod blir

20 while(quant < Math.pow(10,6)) { quant *= 2; month++; }
Antal råttor i en stad är vid ett tillfälle 100 st. Råttfångaren blir långtidssjukskriven vilket gör att råttpopulationen fördubblas för varje månad. Hur lång tid tar det innan råttantalet har passerat en miljon. Svara i hela år och måndader. Om man vill definiera och tilldela flera variabler av samma datatyp i samma sats int quant = 100, month = 0; while(quant < Math.pow(10,6)) { quant *= 2; month++; } System.out.print("Passerar efter "); System.out.println(month/12 +" år "+month%12+” måndader"); Beräknar 106, returnerar en double! Heltalsdelen Resten

21 import static javax.swing.JOptionPane.*; public class Rik {
Tänk er följande högst orealistiska anställningsvillkor. Du har fått ett väldigt farligt och riskfyllt arbete. Lönesättningen är direkt ovanlig. Första dagen får du 1 öre i lön, dag två får du 2 öre, dag tre 4 öre, fjärde 8 öre osv. Lönen fördubblas varje dag. Du är rädd om din hälsa men vill samtidigt bli rik. Skriv ett program som frågor efter önskat belopp (d v s hur rik du vill bli) och som sedan räknar ut hur många dagar det tar för att bli rik. import static javax.swing.JOptionPane.*; public class Rik { public static void main(String [] arg) { String input = showInputDialog(”Belopp?”); double rich = Double.parseDouble(input); int days = 1; double dayPay = 0.01; double totAmount = 0.01; while(totAmount < rich) { days++; dayPay *=2; totAmount += dayPay; } showMessageDialog(null, ”Det tar ”+days+” dagar”); System.exit(0); Gör om till double! Initiera variablerna! Öka days Fördubbla dagslönen Räkna ut ny totallön

22

23 Samma stad har en befolkningsökning på 5 % varje år
Samma stad har en befolkningsökning på 5 % varje år. Hur många år tar det att för att dubbla folkökningen. Säg att nuvarande folkmängd är int pop = (int)Math.pow(10,6); int y = 0; while(pop < 2*Math.pow(10,6)) { pop *=1.05; y++; } System.out.print(”Det tar ”+y+” år.”);

24 Användaren styr avbrott i while-loopen
Repetitionssatser kan användas då man vill att användaren ska ”styra” programmet! char ans = ’j’; while(ans == ’j’ || ans == ’J’) { System.out.print(”Tal 1: ”); double n1 = Keyboard.readDouble(); System.out.print(”Tal 2: ”); double n2 = Keyboard.readDouble(); System.out.println(n1*n2); System.out.print(”En beräkning till? ”); ans = Keyboard.readChar(); }

25 Uppgifter Skriv ett program som multiplicerar alla heltal som anges förutom talet ”0” – då ska resultatet skrivas ut och programmet avslutas. Skriv ett program som frågar efter en räntesats och som därefter beräknar hur många år det tar för ett kapital (t ex 1000 kr) att fördubblas vid den angivna räntesatsen. Ledning: Kapitalets storlek vi varje års slut kan beräknas med satsen nedan: kapital = kapital + räntesats * kapital/100; OBS! Ett bra sätt att kontrollera om programmet fungerar som det ska är att ange räntesatsen 100%. Kapitalet ska ju i så fall fördubblas på ett år. Skriv ett program som läser in ett heltal och därefter räknar ner heltalet. Ange ett heltal: 5 nedräknat:

26 Uppgifter Skriv ett program som frågar efter en räntesats och startkapital och som därefter beräknar och skriver ut hur kapitalet växer år för år under 5 år (eller antal år som man själv får ange). Exempel på körresultat: Hur stor är räntesatsen? 4.25 Hur stort är startkapitalet? 10000 år Kapital 1 10425 2 10868 3 11329 4 11811 5 12313

27 Uppgifter Gör följande arbetsuppgifter (sist i respektive kapitel):
Uppgift 4.2 (s. 53), Uppgift 4.3, Uppgift 4.4, Uppgift 4.5, Uppgift 3.4 (s. 39), Uppgift 6.3 (s. 84), Uppgift 6.6 (från förra veckan) Studera exempel 6.8 (s. 77) Gör övning 6.8 (s. 78) Uppgift 6.4 (s.84)


Ladda ner ppt "Iteration – Repetitionssats - while"

Liknande presentationer


Google-annonser