| Emne: PROGRAMMERING |
Emnekode: LO 127 A |
Faglig veileder: Eva Vihovde | |
| Grupper: 1AA, 1AB, 1AC, 1IA |
Dato: 23.02.2006 |
Eksamenstid: 09.00 - 14.00 | |
| Eksamensoppgaven består av: | Antall sider (inkl. forsiden): 6 | Antall oppgaver: 3 | Antall vedlegg: 0 |
| Tillatte hjelpemidler: | Alle trykte og håndskrevne | ||
| Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle uklarheter i oppgaveteksten skal du redegjøre for de forutsetninger du legger til grunn for løsningen. | |||
Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.
| Utarbeidet av (faglærer): | Kontrollert av (en av disse): | Studieleders/ Fagkoordinators underskrift: | ||
| Annen lærer | Sensor | Studieleder/ Fagkoordinator | ||
| | ||||
Heltallsmengde
som representerer en mengde av ikke-negative hele tall. Arrayen element brukes
til å indikere om et helt tall er med i (er element i) mengden eller ikke:
Dersom tallet er innenfor arrayens indeksområde og arrayen på denne indeksplass
har verdi true, så er tallet med i mengden, ellers ikke. Det kan
altså ikke settes inn i mengden elementer som er utenfor arrayens indeksområde.
public class Heltallsmengde
{
private boolean[] element; // brukes som forklart ovenfor
< Konstruktør med parameter som angir størrelse for arrayen element.
Konstruktøren foretar nødvendig initialisering. >
public int getKapasitet()
{
< Returnerer størrelse for arrayen element. >
}
public void settInnElement( int k )
{
< Registrerer at k blir satt inn som element i mengden, forutsatt
at dette er mulig. (Se innledningen ovenfor.) >
}
public void fjernElement( int k )
{
< Registrerer at k ikke skal være element i mengden, i tilfelle det
er nødvendig å gjøre det. >
}
public boolean inneholder( int k )
{
< Returverdien indikerer om k er element i mengden eller ikke. >
}
public boolean erDelmengdeAv( Heltallsmengde m )
{
< Returverdien indikerer om denne mengden er delmengde av den mengden m
som er parameter, det vil si om alle elementer i denne mengden også er
elementer i mengden m. >
}
public boolean erLik( Heltallsmengde h )
{
< Returverdien indikerer om denne mengden er lik mengden h, det vil si
om den inneholder nøyaktig de samme elementer som h. >
}
public String innhold()
{
< Returnerer mengdens elementer med et mellomrom mellom hvert
element og inntil 20 elementer per linje. Dersom mengden er tom,
skal metoden returnere Ø, som er symbolet for den tomme mengde. >
}
public Heltallsmengde union( Heltallsmengde h )
{
< Returnerer en mengde som er unionen av denne mengde og den mengde
som er parameter, det vil si som inneholder alle elementer som er i
den ene eller i den andre av disse mengdene. >
}
public Heltallsmengde snitt( Heltallsmengde h )
{
< Returnerer en mengde som er snittet av denne mengde og den mengde
som er parameter, det vil si som inneholder alle elementer som er
felles for de to mengdene. >
}
public Heltallsmengde minus( Heltallsmengde m )
{
< Returnerer en mengde som er differensmengden av denne mengde og den
mengde som er parameter, det vil si som inneholder alle elementer som
er i denne mengde, men som ikke er i den mengde som er parameter. >
}
}
Vær oppmerksom på at når det i metodene som er beskrevet i skissen inngår
to mengder, kan disse være representert av arrayer som har ulik lengde.
Metodene du skriver skal i størst mulig grad anvendes der du har bruk for
dem i seinere deloppgaver.
a) Programmer klassens konstruktør, samt metoden
getKapasitet.
b) Programmer metodene settInnElement, fjernElement
og inneholder.
c) Programmer metodene erDelmengdeAv og
erLik.
d) Programmer metoden innhold.
e) Programmer metodene union og snitt.
f) Programmer metoden minus.
Mengdeoperasjoner som er skissert etter bildet lenger nede,
definerer et vindu som kan brukes til å teste ut metoder definert i klassen
Heltallsmengde. Det blir opprettet to mengder av den typen
klassen definerer, den ene kan inneholde elementer i intervallet 0 til 60,
mens den andre kan inneholde elementer i intervallet 0 til 40. Følgende bilde
viser vinduet etter at det er satt inn noen elementer i hver av de to mengdene.
public class Mengdeoperasjoner extends JFrame implements ActionListener
{
private Heltallsmengde a, b;
private JTextField afelt; // for tall som skal inn i eller ut av mengde a
private JTextField bfelt; // for tall som skal inn i eller ut av mengde b
private JButton aInn, aFjern, bInn, bFjern;
private JTextArea mengdeA, mengdeB, union, snitt, aMinusB, relasjoner;
public Mengdeoperasjoner()
{
super( "Mengdeoperasjoner" );
int aKap = 61, bKap = 41;
a = new Heltallsmengde( aKap );
b = new Heltallsmengde( bKap );
< oppretter grafiske skjermkomponenter >
aInn.addActionListener( this );
aFjern.addActionListener( this );
bInn.addActionListener( this );
bFjern.addActionListener( this );
Container c = getContentPane();
c.setLayout( new FlowLayout() );
c.add( new JLabel( "Element for mengde A (0.." + (aKap-1) + ")" ) );
c.add( afelt );
c.add( aInn );
c.add( aFjern );
c.add( new JLabel( "Element for mengde B (0.." + (bKap-1) + ")" ) );
c.add( bfelt );
c.add( bInn );
c.add( bFjern );
c.add( new JLabel( "Innhold i A" ) );
c.add( new JScrollPane( mengdeA ) );
c.add( new JLabel( "Innhold i B" ) );
c.add( new JScrollPane( mengdeB ) );
c.add( new JLabel( "A union B" ) );
c.add( new JScrollPane( union ) );
c.add( new JLabel( "A snitt B" ) );
c.add( new JScrollPane( snitt ) );
c.add( new JLabel( "A minus B" ) );
c.add( new JScrollPane( aMinusB ) );
c.add( new JLabel( "Relasjoner" ) );
c.add( new JScrollPane( relasjoner ) );
}
public void settInn( Heltallsmengde m, int verdi )
{
< Registrerer at parameteren verdi blir satt inn i mengden m. >
}
public void fjern( Heltallsmengde m, int verdi )
{
< Registrerer at parameteren verdi blir fjernet fra mengden m. >
}
public void skrivMengdeinnhold( Heltallsmengde m, JTextArea t )
{
< Skriver ut innholdet av mengden m i tekstområdet t. >
}
public void skrivMengder()
{
< Skriver ut innhold av mengder, tilsvarende som vist på vindusbildet
ovenfor. >
}
public void skrivMengderelasjoner()
{
< Skriver ut relasjoner mellom mengder, tilsvarende som det er vist
på det nederste tekstområdet på vindusbildet ovenfor. >
}
< En metode som foretar riktige metodekall, avhengig av hvilken knapp det
blir klikket på. >
}
a) Programmer metodene settInn og fjern.
b) Programmer metodene skrivMengdeinnhold og
skrivMengder.
c) Programmer metoden skrivMengderelasjoner.
d) Programmer den metode som er beskrevet nederst i skissen
ovenfor, den som skal foreta riktige metodekall.
e) Programmer følgende metode, som kan være en utvidelse av
applikasjonen:
public String snittinnhold( Heltallsmengde a, Heltallsmengde b,
Heltallsmengde c )
{
< Returnerer innholdet i snittet mellom de tre mengdene a, b og c
(det vil si de elementer som er felles for alle tre). Den returnerte
teksten skal utformes på tilsvarende måte som beskrevet i metoden
innhold() i klassen Heltallsmengde. >
}
Heltallsmengde og Mengdeoperasjoner kan brukes til
å få til et kjørbart program.