OOP dag 2

Øvelser

Prøv Alder4, Syvtabel, Syvtabel2 og Syvtabel3 og forvis dig om, at du forstår dem.

Løs derefter:

2.5.5 Opgaver

  1. Lav et program, der tæller nedad fra 10 til 1.

  2. Lav et program, der udregner værdien af 1+2+3+ ... +20 med en løkke.

  3. Lav et program, der udskriver 2-tabellen, 3-tabellen, .. op til 10-tabellen.

  4. Skriv et program, som for ligningen y=3*x*x+6*x+9 udskriver værdierne af y for x=0, x=1,x= 2, x=3 ... x=10. Ret det derefter til at skrive ud for x=0,x=10,x=20,x=30...x=100.



Prøv debugging/trinvis gennemgang, og hold øje med hvordan variablerne ændrer værdier.

Opgave: Gæt hvilket tal jeg tænker på

Lav et program, der husker et tal fra 1 til 20, som brugeren skal gætte. Her er et forslag til dialogen med brugeren:
Gæt et tal: 8
Tallet jeg tænker på er højere.
Gæt et tal: 13
Tallet jeg tænker på er lavere.
Gæt et tal: 11
Tallet jeg tænker på er højere.
Gæt et tal: 12
Det er det rigtige tal! Du brugte 4 forsøg.

Vink: For at få et tilfældigt tal mellem 1 og 20 kan bruges formlen (int) (Math.random()*20 + 1).

Lav en udskrift af programmet og sammenlign med de andre kursister.

Pseudokode

Hvis du ikke kan finde ud af hvordan du vil gribe opgaven an, så prøv at skriv pseudokode: Kommentarer, der beskriver hvad programmet skal gøre, ligesom i en bageopskrift:

// Find et tilfældigt hemmeligt tal, x
// Skriv: Gæt hvilket tal jeg tænker på
// Indlæs et tal fra tastaturet
// Gentag så længe x er forskelligt fra indtastet tal:
// -  Hvis x er større end indtastet tal: Skriv "Tallet jeg tænker på er højere."
// -  Hvis x er mindre end indtastet tal: Skriv "Tallet jeg tænker på er lavere."
// -  Indlæs et nyt tal fra tastaturet
// Skriv: "Det er det rigtige tal! Du brugte xxx forsøg." (hvor xxx er antallet af forsøg)

Skriv derefter rigtig javakode under hver kommentar. Prøvekør programmet hver gang du har skrevet et par linjer.

2.10.1 Befordringsfradrag

Du er ansat i skatteministeriet, og borgerne har svært ved at finde ud hvor meget de kan få i befordringsfradrag (det, der kan trækkes fra i skat ud fra, hvor langt der er mellem arbejde og hjem).

Taksterne for 2011 var:

Lav et program, som udskriver en tabel med befordringsfradraget, sådan at borgerne, ud fra deres afstand mellem arbejde og hjem, kan slå op i tabellen og se deres befordringsfradrag:

Afstand Fradrag
25 km 0 kr
26 km 2 kr
27 km 4 kr


  1. Lav tabellen (udregn, og udskriv fradraget pr. dag på hver sin linje), i første omgang fra 25 til 100 km.

  2. Lav tabellen med fradraget pr. dag fra 0 til 150 km.

  3. Lav tabellen med fradraget pr. dag fra 10 til 150 km, men kun hver 10. km udskrives (10km, 20km, 30km...).



Ændr programmet så brugeren kan indtaste antallet af kilometer og afprøv at programmet virker



Hjemmeopgaver

Lav 'gæt et tal' og befordringsfradragsprogrammet.

Forbered dig på at vise dem frem for de andre på holdet næste gang.




Gå igennem afsnit 2.8 Test dig selv med en makker

Sæt jer sammen to og to og skift til at høre hinanden i spørgsmålene.






Ekstra øvelser, hvis du har tid (og lyst)





Klassemetoder

Kør Metoder1 og  Metoder2 og prøv at forstå hvad der foregår.

Brug derefter trinvis gennemgang/debugging (sæt stoppunktet på første linje i main()-metoden) og følg med i hvilke variabler der findes.

Når du står på hils()-metoden, så prøv at gå ind i metoden og følg med i hvilke variabler der findes mens man er inde i metoden.



Klassemetoder


Læs afsnit 2.12.4 omkring klassemetoder og prøv at lave nogle af dine programmer om til at bruge nogle klassemetoder.

Læs derefter resten af 2.12 og prøv de ting, du finder interessante.

2.10.2 Kurveprogram

  1. Skriv et program, der udskriver grafen over kvadratrod-funktionen (Math.sqrt()).
    Vink: Når du vil skrive en "*" uden linieskift, kan du bruge System.out.print("*") (dvs. uden 'ln'). Når du vil skifte linie, kan du bruge System.out.println() uden parametre.

  2. Lav kurveprogrammet om, så det i stedet viser kurven over polynomiet 0.2*x*x +0.5*x +2. Lav programmet, så det er nemt at se, hvor man skal rette for at ændre funktionen, intervalstart, intervalslut, skalering og forskydning af y-aksen. Dvs. lav det til variabler, og brug kommentarer til at markere stederne i programmet.

  3. Lav om på kurvetegningsprogrammet, så kurven ikke er udfyldt, men tegnes som en streg.

  4. Eventuelt: Udvid kurveprogrammet til at udregne det totale antal af stjerner, der skrives ud (udregn integralet af funktionen numerisk ved at summere arealet under grafen). Er det nemmest at gøre løbende, mens stjernerne tegnes, eller bagefter? Hvordan ville du gøre på den ene og på den anden måde?