02312 Indledende programmering, IMM DTU, Ver. 2005-10-12
Opgaver til 7. semester-uge.
Anbefalet løsningsrækkefølge af opgaverne: 22, 22b, 21c, 21, 21b
Opgave 21b: Histogram.
Løs programming project 7.5 side side 460 i lærebogen.
Opgave 21c: Middelværdi og spredning.
Der tages udgangspunkt i programming project 7.5 side side 460 i lærebogen.
a:
Løs opgaven i bogen. Husk at placere rutinerne som beregner middelværdi og spredning i egne metoder/funktioner. Find passende testdata. Disse kan placeres direkte i koden.
b:
Lav et program som i en løkke tager input fra tastaturet. Først hentes antal elementer i array, herefter indtastes elementerne, der skal ikke være begrænsning på antallet af elementer.
Opgave 22: badevandstemperaturer
Denne opgave handler om et program til simpel databehandling af nogle badevandstemperaturer. Badevandstemperaturerne er aflæst en gang om ugen og lagret i en heltalstabel badetemp:
class Badevand
{
public static void main(String[] args)
{
int[] badetemp = { 12, 10, 12, 14, 15, 16, 18, 18, 15 };
System.out.println("Maksimum: " + maks(badetemp));
System.out.println("Antal fald: " + antalfald(badetemp));
}
static int maks(int[] temp)
{
...
}
static int antalfald(int[] temp)
{
...
}
}
Spm. 1: Færdiggør metoden maks sådan at maks(temp) returnerer den største værdi i tabellen temp.
Du kan gå ud fra, at alle tal i temp er større end eller lig med nul. Hvis tabellen temp er tom, så skal metoden returnere 0.
Spm. 2: Færdiggør metoden antalfald sådan, at antalfald(temp) returnerer antallet af fald i tabellen temp, dvs antallet af gange hvor et mindre tal følger lige efter et større tal i temp. (Det er antallet af gange hvor badevandstemperaturen er faldet fra en uge til den næste).
Spm. 3: Vis, at når du udfører programmet, får du følgende udskrift:
Maksimum: 18
Antal fald: 2
Spm. 4: Nu skal du ændre metoden main i programmet Badevand, sådan at indholdet af tabellen badetemp tages fra kommandolinien. Eksempel: Hvis man kører det ændrede program med parametrene {"10", "12", "8", "11"}, så skal det give denne udskrift:
Maksimum: 12
Antal fald: 1
Vis, hvordan den ændrede metode main skal se ud.
Vink: Integer.parseInt("10") giver integeren 10. (Afsnit 5.2)
Opgave 21: biler, igen
Bil-klassen fra opgave 20 skal
revideres, så hver bil i et bilregister desuden har et serienummer
f.eks.
Fælles for alle biler i
bilregistret er en tæller, der angiver det senest udleverede serienummer.
Fælles for hele bilregistret er,
at man kan få oplyst det næste ledige serienummer.
Spm. 1:
Lav en klasse
Bil2, der repræsenterer biloplysninger og har metoder til at udføre
operationer,som angivet i opgave 20 og
ovenfor. Klassen skal have en konstruktør med samme signatur som i opgave 20, (men kroppen
skal modificeres).
Vink:
Lad tælleren være en statisk
variabel.
Spm. 2:
Lav en klasse
TestBil2, der opretter nogle bilobjekter og udskriver oplysninger om dem.
Opgave 22b:
Tag udgangspunkt i programmet Studentbody listing 6.5-6.7 i lærebogen
side 304-307.
1)
Modificer klassen Student således at, referencen homeAddress ikke bliver
initaliseret til at pege på det sted i lageret hvor referencen home
peger. Opret i stedet er nyt datafelt og kopier data hertil.
Vink: Start med at erklære alle data i Address klassen public.
2)
Modificer programmet således at alle data i klassen Address igen kan blive
private.
3)
Hvilke fordele opnår vi hvis vi gennemfører denne ændring for både homeAddress og schoolAddress.
Hvordan vil det påvirke UML diagrammet.