• No results found

Lektion 4 - Iteration while

N/A
N/A
Protected

Academic year: 2021

Share "Lektion 4 - Iteration while"

Copied!
28
0
0

Loading.... (view fulltext now)

Full text

(1)

Lektion 4

(2)

if-else-if

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

(3)

Relativa operatorer

Relations

operator Symbol Exempel Värde

lika med == 1 == 4 false

skilt från != 1 != 4 true

större än > 1 > 4 false

större än eller

lika med >= 1>=4 false

mindre än < 1 < 4 true

mindre än eller

(4)

Logiska operatorer

Logisk

operator Symbol Exempel Värde

OCH && uttryck_1 && uttryck_2 true om båda är sanna, annars false

ELLER || uttryck_1 || uttryck_2 true om minst ett är sant, annars false

ICKE ! ! uttryck false om uttrycket är

(5)

Tilldelande aritmetiska operatorer

Operator Symbol Exempel Resultat

addera och tilldela += tal1 += tal2 tal1 = tal1 + tal2

subtrahera och tilldela -= tal1 -= tal2 tal1 = tal1 - tal2

multiplicera och tilldela *= tal1 *= tal2 tal1 = tal1 * tal2

dividera och tilldela /= tal1 /= tal2 tal1 = tal1 / tal2

modulus och tilldela %= tal1 %= tal2 tal1 = tal1 % tal2

Ex. int tal = 2; tal = tal + 8; kan skrivas: int tal = 2; tal +=8;

(6)

Förändringsoperatorer

Öka en variabel n1 med 1:

n1 = n1 + 1; n1 +=1;

n1++;

Operator Symbol Exempel Resultat

tillväxt ++ tal++ eller ++tal tal = tal + 1 minskning -- tal-- eller --tal tal = tal -1

(7)

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

(8)

Från källkod till pseudokod

int

n1 = sc.nextInt();

int

n2 = sc.nextInt();

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 på programmeringsspråk

(9)

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 = sc.nextInt();

int

n2 = sc.nextInt();

if

(n1%n2 == 0 || n2%n1 == 0)

System.out.println(

”Ja!”

);

else

System.out.println(

”Nej!”

);

(10)

Strukturdiagram

För att kunna få en struktur på ett program eller en algoritm kan det

vara bra att gör s.k. strukturdiagram

(11)
(12)

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.

(13)

Iteration

Start Start Deklarera i och ge den startvärdet 0 Deklarera i och ge den startvärdet 0 i < 10 i < 10 Skriv ut namn

Skriv ut namn AvslutaAvsluta

Läs in namn

Läs in namn

Öka i med 1

Öka i med 1 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.

false true

(14)

while-sats

while(uttryck)

{

//satser

}

while-satsen är en s.k. repetitionssats.

Den utför den programmeringskod som finns innanför

klammrarna så länge dess vilkor är uppfyllt.

(15)

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!

(16)

while-sats

System.out.print(

”Skriv in ditt namn: ”

);

String namn = Keyboard.readInt();

int

i = 0;

while

(i < 10)

{

System.out.println(namn);

i++;

}

(17)

Iteration

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

(18)

Iteration

System.out.print(”Skriv in ett tal: ”);

int n1 = sc.nextInt();

int sum = 0;

while(n1!=0) { sum+=n1;

System.out.print(”Skriv in ett tal: ”); n1 = sc.nextInt();

}

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

(19)

Uppgifter

1. Gör övning Loopen på s. 18 (vårt exempel) i Kapitel 1 2. Gör uppgifterna 5-7 på s. 24-25 i Kapitel 1

3. Skriv ett program som läser in ett heltal och därefter räknar ner heltalet.

4. 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: Ange ett heltal: 5

nedräknat: 5 4 3 2 1

Hur stor är räntesatsen? 4.25

Hur stort är startkapitalet? 10000 år Kapital 1 10425 2 10868 3 11329 4 11811 5 12313

(20)

Inläsning och utskrifter i dialogfönster

Använd paketet javax.swing:JOptionPane.* String name, hälsning;

name = showInputDialog(”Vad heter du?”);

Visar ett fönster på skärmen, det användaren skriver in hamnar i variablen name

hälsning = ”Välkommen” +name;

showMessageDialog(null, hälsning);

Skriver ut texten ”Välkommen” +variablens innehåll i ett fönster

System.exit(0);

(21)

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 Start Deklarera i och ge den startvärdet 1 Deklarera i och ge den startvärdet 1 i <= tal i <= tal prod = prod * i

prod = prod * i AvslutaAvsluta Läs in tal Läs in tal Öka i med 1 Öka i med 1 false true

Deklarera prod och ge

den startvärdet 1

Deklarera prod och ge

(22)

Iteration

System.out.print(”Skriv in ett positiv heltal: ”);

int tal = sc.nextInt();

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

(23)

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");

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

Beräknar 106, returnerar en double!

(24)

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

(25)
(26)

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

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.

(27)

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 = sc.nextDouble(); System.out.print(”Tal 2: ”);

double n2 = sc.nextDouble(); System.out.println(n1*n2);

System.out.print(”En beräkning till? ”); ans = sc.next().charAt(0);

(28)

Uppgifter

1. Gör om uppgifterna ovan i ett GUI (

JFrame

References

Related documents

Han tror inte att dikteringen skulle hjälpa honom att övervinna sina stavningssvårigheter men kanske att någon som har större svårigheter att skriva än han själv, som

Fadern hade under förtio år varit med om att utforma stadens ansikte. Detta var hans stad. Men den var inte Gunnars. Han hade lekt några år mellan Johnssons vedbod och dass och sedan

b k det myher av händelser, bagateller och brytningar en sväller av kan det främst vara befogat att stanna 01 tiden i Uppsala eller det avsnitt, som berör Ka- Boyes förhållande

ne, och ibland plockar jag fram den och beskådar den. Den har lärt mig ett och annat, både om skor och människor. Jag tror att människorna skulle förstå varandra bättre, om

Björnsson (2005) skriver att pojkars mansideal följer ett traditionellt mönster som; våld, styrka, konkurrens och interna hierarkier. Skolvardagen för pojkar innebär att hävda sig

När män och kvinnor använder en och samma textuella resurs, till exempel genom att utgå från sina egna erfarenheter och visa detta med pronomenet jag, så måste detta textdrag

Efter att Australien 1941 hade in- vaderat Portugisiska Timor för att förhindra en japansk attack mot området genomförde Japan en motattack och ockuperade kolonin 1942-1945,

Efter att Australien 1941 hade invaderat kolonin för att förhindra en japansk attack genomförde Japan en motattack och ockuperade området 1942-1945, vilket ledde till svåra