Up:

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

(Eksamensopgave 2 fra ITU, januar 2000 )

 

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 (repetition)

 

Bil-klassen fra opgave 20 skal revideres, så hver bil i et bilregister desuden har et serienummer f.eks. 17.

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: Student og Address ()

 

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.