Iteration – Repetitionssats - while

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
Advertisements

Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2D1311 Programmeringsteknik med PBL
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
Algebraiska uttryck Matematik 1.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP– Föreläsning vecka Genomgång uppgifter Arbetsmetoder Repetition Kapitel 14 Metoder.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
Föreläsning 7 Metoder Parametrar Klassmetod.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng while-loop do-loop continue, break PROJEKT Föreläsning 5.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 3 Algoritm Grundstrukturer i en algoritm Sekvens Selektion Iteration Selektion - if-sats Selektion - if-else-sats Selektion - switch-sats jämförelseoperatorer.
Selektion jämförande och logiska operatorer
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Algoritmer och loopar Algoritmer, beräkningsbarhet
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Anders Sjögren Funktioner något in och något annat ut.
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Föreläsning 3: Booleans, if, switch
Föreläsning 4: for, while, do-while
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Mer om repetionssatser och arrayer
Presentationens avskrift:

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

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

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

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

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

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

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?

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

Från pseodokod till strukturdiagram

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.

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

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 }

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

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

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

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!

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!

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

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

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 1 000 000 efter "); System.out.println(month/12 +" år "+month%12+” måndader"); Beräknar 106, returnerar en double! Heltalsdelen Resten

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

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 1 000 000. 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.”);

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(); }

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: 5 4 3 2 1  

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

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)