Vraag 1 Zij gegeven de volgende declaratie in Eiffel Guido : STUDENT in de veronderstelling dat er een klassentekst bestaat voor de klasse STUDENT. Welke van de volgende uitspraken is waar: A. Na uitvoering van de instructie Peter := deep_clone(Guido) is de uitdrukking
equal(Peter,Guido) altijd true. B. Na uitvoering van de instructie Peter := deep_clone(Guido) is de uitdrukking Peter = Guido altijd true. C. Na uitvoering van de instructie Peter := Guido is de uitdrukking equal(Peter,Guido) mogelijk false. D. Na uitvoering van de instructie Peter := Guido is de uitdrukking Peter = Guido altijd true.
Vraag 2 Welke uitspraak is NIET waar ? Bij positionele talstelsels... A. ... is de waarde van een symbool (ondermeer) afhankelijk van de positie. B. ... is het basisgetal gelijk aan het aantal verschillende symbolen in dat talstelsel. positienummer
C. ... is de waarde van een symbool = symbool x (basisgetal)
.
N
D. ... zal je met N posities steeds 2 verschillende getallen kunnen uitdrukken.
Vraag 3 Welke uitspraak i.v.m. randapparatuur is NIET waar ? A. RFID kan een mogelijke opvolger worden voor streepjescode. B. De allerbelangrijkste factor die de toegangstijd tot harde schijven bepaalt, is de rotatiesnelheid. C. Zowel floppy disks als magneetband zijn opgedeeld in sporen. D. CD-ROM en harde schijf zijn, in tegenstelling tot magneetband, adresseerbare geheugenmedia.
Vraag 4 Welke uitspraak m.b.t. besturingssystemen is NIET correct ? A. SPOOLing is een techniek die er voor zorgt dat verscheidene processen om de beurt processortijd toegewezen krijgen. B. Een multitasking besturingssysteem is niet noodzakelijk ook multi-user. C. Dankzij virtuele geheugenbeheerstechnieken kan men de multiprogrammeringsgraad verhogen. D. Eén van de taken van het besturingssysteem is de applicatiesoftware af te schermen van de specifieke hardware. Daartoe wordt ondermeer gebruik gemaakt van device drivers.
Vraag 5 Zij gegeven de volgende klassendefinitie in Eiffel: class TEST creation maken feature teller : INTEGER stop : BOOLEAN feature maken is do from teller := 12 stop := (teller = 0) until stop loop io.putint(teller) io.putstring(" ") teller := teller - 3 end -- loop end -- maken end -- class TEST Welke van de volgende uitspraken is juist ? A. Het programma gaat in een oneindige lus. B. Op het scherm verschijnt 12 9 6 3 C. Op het scherm verschijnt 12 9 6 3 0 D. Op het scherm verschijnt niets en het programma eindigt normaal.
ANTWOORDEN D – D – B – A – A
Luminius pakt sinds kort uit met zijn nieuwe dienst "mijnverbruik.be" waar de klanten van Luminus hun gas en elektriciteits verbruik in het oog kunnen houden. Electrabel is hier jaloers op en vraagt aan jou om een gelijkaardig systeem te ontwikkelen. In het systeem moet het mogelijk zijn om voor elk van de nutsvoorzieningen die Electrabel aanbiedt (gas, water en elektriciteit) meterstanden in te voegen en nadien een overzicht op te vragen die de kost van elk van deze voorzieningen zal tonen. Electrabel heeft ook nog een extraatje voor haar klanten, indien het verbruik van een bepaalde voorziening boven de 1000 eenheden gaat, krijgt de klant 5% korting. De kost van gas bedraagt 1.6 euro per eenheid, de kost van water is 2.5 euro per eenheid en die van elektriciteit is 1 euro per eenheid. Het systeem bevat 3 klasse: 1 bedrijfsklasse die de nutsvoorziening voorstelt. Deze klasse bevat de naam van de voorziening, de kost per eenheid, en twee meterstanden (een oude en een nieuwe). Het systeem bevat ook nog een menu klasse en een rootklasse. Het menu ziet er als volgt uit:
Voor het invoeren van de meterstanden wordt er voor elke voorziening gevraagd naar de oude en nadien naar de nieuwe meterstand. Deze invoer ziet er als volgt uit:
Het overzicht ziet er als volgt uit:
Het is de bedoeling om de instructies op volgende manier te noteren (let op het gebruik van spaties!): getal1 := getal2 + getal3 feature verhogen(getal1, getal2 : INTEGER; macht : REAL) is Teller.verhogen(15, 12, 12.23) class NUTSVOORZIENING creation aanmaken feature naam : STRING oude_meetstand, nieuwe_meetstand : INTEGER korting : REAL is 0.05 a do naam := clone(naam_in) kost_per_eenheid := kost_in end – aanmaken feature zet_oude_meetstand(meetstand : INTEGER) is do oude_meetstand := meetstand end -- zet_oude_meetstand feature zet_nieuwe_meetstand(meetstand : INTEGER) is do nieuwe_meetstand := meetstand end -- zet_nieuwe_meetstand feature kost : REAL is local totaal : REAL do a if (verbruik >= 1000) then totaal := totaal - totaal*korting end -- if Result := totaal end – kost feature verbruik : INTEGER is do Result := nieuwe_meetstand - oude_meetstand end -- verbruik end – NUTSVOORZIENING
class VERBRUIKSYS creation make feature a a feature make is do a a create een_menu.maken(verbruik_rij) a io.putstring("Einde van het verbruik-menu.") io.new_line io.putstring("Tot ziens!") io.readline end – make feature nutsvoorzieningen_invullen is local gas : NUTSVOORZIENING elek : NUTSVOORZIENING water : NUTSVOORZIENING do create gas.aanmaken("Gas", 1.6) create elek.aanmaken("Elektriciteit", 1) create water.aanmaken("Water", 2.5) verbruik_rij.put(gas, 1) verbruik_rij.put(elek, 2) verbruik_rij.put(water, 3) end -- verbruiken_invullen end – VERBRUIKSYS
class MENU -- Het hoofdmenu dat vraagt om een meterstand in te geven, of een overzicht op het -- scherm te tonen creation maken feature a feature maken(verbruiken_in : ARRAY[NUTSVOORZIENING]) is do verbruik_rij := verbruiken_in end -- maken feature uitvoeren is do from a a until stop_keuze loop verwerk_keuze toon_keuze lees_keuze end -- loop end – uitvoeren feature toon_keuze is do clear_screen io.putstring("%N1. Voer een meterstand in.") io.putstring("%N2. Geef een overzicht van de meterstanden en kosten.") io.putstring("%N3. Stop de applicatie") io.putstring("%NUw Keuze: ") end -- toon_keuze feature lees_keuze is do from io.readint until geldige_keuze loop io.putstring("%NU moet een getal tussen 1 en 3 ingeven!") io.putstring("%NDruk op de ENTER toets om verder te gaan") io.readline toon_keuze io.readint end -- loop end -- lees_keuze
feature geldige_keuze : BOOLEAN is do a end -- geldige_keuze feature stop_keuze : BOOLEAN is do a end -- stop_keuze feature verwerk_keuze is do if
a
then
a
else end -- if end -- verwerk_keuze
a
feature toon_overzicht is local index : INTEGER do clear_screen from
a
until loop io.new_line io.putstring("# ")
a
a io.new_line io.putstring("Meterstanden: ") a io.putstring(" - ") a io.new_line io.putstring("Kost: ") a io.putstring(" euro") io.new_line a end -- loop io.putstring("Druk op ENTER om verder te gaan.") io.readline end -- toon_overzicht
feature meterstand_aanpassen is local index : INTEGER do from
a
until a loop io.new_line io.putstring("Geef de oude meterstand in voor ") a io.putstring(": ") io.readint a io.putstring("Geef de nieuwe meterstand voor ") a io.putstring(": ") io.readint a io.new_line a end – loop io.putstring("De meterstanden zijn bijgewerkt.%NDruk op ENTER om verder te gaan") io.readline end -- meterstanden_aanpassen feature clear_screen is local index : INTEGER do from index := 0 until index > 20 loop io.new_line index := index + 1 end -- loop end -- clear_screen end -- MENU