Vergelijkende studie van imperatieve programmeertalen: verschil tussen versies

Uit Wina Examenwiki
Naar navigatie springen Naar zoeken springen
Regel 97: Regel 97:
==2007-2008==
==2007-2008==
=== 14/01/07 vm en nm===
=== 14/01/07 vm en nm===
1. zet om naar C++ en Eiffel; een kleine (eenvoudige) hierarchie van verzamelingen, bags en ongeordende collecties en je moest wat features van de taal showen.  Bij C++ moest ge trouwens ook ergens pointer arithmetic gebruiken om een rij te overlopen.
====Deel 1 (Mondeling)====
Zet om naar C++ en Eiffel; een kleine (eenvoudige) hierarchie van verzamelingen, bags en ongeordende collecties en je moest wat features van de taal showen.  Bij C++ moest ge trouwens ook ergens pointer arithmetic gebruiken om een rij te overlopen.
bijvragen:
bijvragen:
* c++:stel ge doet hier die & weg (bij een reference) wat gebeurt er dan?
* c++:stel ge doet hier die & weg (bij een reference) wat gebeurt er dan?
Regel 103: Regel 104:
* eiffel: geeft een voorbeeld oproep voor die unionWith, dat was een poly catcall; hetgeen ge dan moet uitleggen.
* eiffel: geeft een voorbeeld oproep voor die unionWith, dat was een poly catcall; hetgeen ge dan moet uitleggen.
* hij vroeg ook hoe het daar zat met het uitbreiden van precondities (kan niet in Eiffel natuurlijk) en hoe lost ge dat op.
* hij vroeg ook hoe het daar zat met het uitbreiden van precondities (kan niet in Eiffel natuurlijk) en hoe lost ge dat op.
2. oefening 1:
====Deel 2 (Schriftelijk)====
Oefening 1:
<pre>
<pre>
int bla[] = {priemgetallen};
int bla[] = {priemgetallen};
Regel 112: Regel 114:
(das gewoon 12)
(das gewoon 12)
</pre>
</pre>
oefening 2: fun met C#
 
Oefening 2: fun met C#
<pre>
<pre>
Class
Class

Versie van 15 jan 2008 22:24

http://www.cs.kuleuven.ac.be/cs/algemene_info/personeel/images/S_Eric.Steegmans.jpg

Bestanden

Prof. Steegmans werkt heel goed met Toledo, alleen staan de bestanden nogal verspreid en moet je ze allemaal afzonderlijk downloaden en eventueel nog unzippen. Hier vind je mijn poging om alle bestanden te ordenen en te unzippen.

Mocht je een fout vinden, mail me dan op : vincent.nauwelaers.student.kuleuven.be

Hier vind je alle slides samengevoegd tot 1 pdf: Hier

Antwoorden VoorbeeldExamen

Via de pc nagerekend

2.1:

    c = 25
    (ik denk dat dit "niet gedefinieerd" moet zijn omdat ge de geheugenplaats meermaals overschrijft.  (het geeft toch verschillende resultaten op verschillende pc's))

2.2:

    i2 = 48

2.3:

    b = 40

2.4:

    mine.TheX = 50

2.5:

    mine.Property = 40

2.6:

    a1->x = 13
    a2.x = 6

2.7:

    enkel a1.g(a2)

2.8: in volgorde:

    14
    8
    14
    2

2.9: in volgorde:

    11
    22
    23
    13

Examenvragen

2004-2005

28-01-05 8u

Zeer analoog aan het voorbeeldexamen dat op toledo staat:

deel 1: klasses programmeren in Eiffel en C++ voor een email systeem. Ipv het voorbeeld ging het hier om Email, OriginalEmail, ReplyEmail klassen. Waarbij original en reply overerfden. Geen arrays, dus eigenlijk iets gemakkelijker dan voorbeeld.

deel 2: 7 opgaven zoals in het voorbeeld examen. Geen doorstreping van polymorphe catcalls. iets moeilijker dan de voorbeelden. TIP: teken de klassen op papier

Steegmans was heel vriendelijk, stelde nuttige bijvragen en legt je niet zo hard op de rooster.

2005-2006

01-06

20-01-06 8u

  1. Een abstracte klasse van vluchten, met twee subklassen: indirecte en directe vlucht. Telkens de superklasse en 1subklasse vertalen in eiffel en c++ (hij vroeg op mondeling ongeveer bij iedereen een polymorphe catcall)
  2. Oefeninkskes zoals voorbeeldexamen
    • schrijf klasse in smalltalk
    • streep door wat niet klopt volgens generische klassen in java
    • meervoudige overerving in eiffel (iets schrijven)
    • dan nog 3 oefeninkskes waar ge getallen moet zoeken (referentie, value semantic) (opgelet hierbij, in een property durft hij bij setter zelfs value*2 zetten, de kapoen)

01-06

Ander examen, volledig zelfde opmaak incl polymorphe catcalls (maar over agenda ipv vluchten)

26-01-06 8u

  1. Zoals te verwachten. Deze keer UnorderedCollection met daaronder Bag en Set. Eiffel en C++ versie.
    • Smalltalk klasse
    • doorstrepen van foute overerving generische klassen
    • de rest analoog met vbex

2006-2007

15/01/07 8u

Zo goed als analoog aan het te verwachten patroon:

  1. Een paar klassen over een avonturenspelleke met een item, een rugzak dat een item is en waarin items kunnen zitten, een wapen dat een item is, ook nog ergens een interface die die rugzak implementeerde: alles samengevat: enkelvoudige overerving, bidirectionele bindingen (die in de java oplossing onveilig waren, Steegmans wil (maar vraag het niet expliciet op papier!) dat je dit toepaslijk kan corrigeren mbv. C++ en C# middelen). En dat alles dus, zoals je al las, in C++ en C#. Je hoeft niet elke letter code op te schrijven (dat laat de tijd ook niet echt toe), een "skelet" is voldoende. Zolang je maar kan vertellen welke "fancy mogelijkheden" je uit elke taal handig kan aanwenden (zeg dus nie da het in C# allemaal 't zelfde is ;-))
    • Een methode uit de bovenstaande oefening die in de 3 klassen van de overerving voorkwam ("mergewith", er verstrengen wat types enzo) voor elk van die klassen in Eiffel omzetten: enkel hoofding/skelet van de methode én precondities moet je doen, implementatie niet.
    • Een paar constructoren uit alweer de bovenstaande oefening omzetten in Smalltalk (eentje die o.a. een array initialiseert). Van elke "nieuwe" message waarvan je gebruikt maakt, moet je ook de hoofding geven
    • Meerdere andere oefeningen: meervoudige overerving in C++, polymorfisme in C#, doorstrepen van polymorfe catcalls in Eiffel, iets met Arrays en een heel klein beetje pointer arithmetic in C++, ... (nog meer denk ik, maar ik weet het niet allemaal meer vanbuiten, niks gigantisch nieuw tov andere jaren).

19/01/07 8u en 12u

Zo goed als analoog aan het te verwachten patroon:

  1. Zelfde hiërarchie. Verwacht u aan enumeraties, rijen, abstracte klassen, interfaces, overriding... Dit alles inEiffel en Smalltalk. Indien gewenst mocht je een van de talen vervangen door C++, voor twee punten minder. Zelfs met amper wat code, kan je goed uit de hoek komen als je kan antwoorden op de bijvragen (waarde/referentie-semantiek, typed/untyped, CAT-calls... )
  2. dezelfde 'mergeWith' uit een abstracte klassen en twee subklassen ervan omzetten naar C++. Van alles de hoofding. Van een van de subklassen ook de implementatie.
  3. Bij de kleine oefeningetjes: bij de overerving in C++ een vraag waar methodes hun argumentenlijst veranderd of toegangsrechten verstrengen. Voor de rest analoog (geen CAT-calls welliswaar)

2007-2008

14/01/07 vm en nm

Deel 1 (Mondeling)

Zet om naar C++ en Eiffel; een kleine (eenvoudige) hierarchie van verzamelingen, bags en ongeordende collecties en je moest wat features van de taal showen. Bij C++ moest ge trouwens ook ergens pointer arithmetic gebruiken om een rij te overlopen. bijvragen:

  • c++:stel ge doet hier die & weg (bij een reference) wat gebeurt er dan?
  • c++: stel dat ge daar een * zet, wat gebeurt er dan?
  • eiffel: geeft een voorbeeld oproep voor die unionWith, dat was een poly catcall; hetgeen ge dan moet uitleggen.
  • hij vroeg ook hoe het daar zat met het uitbreiden van precondities (kan niet in Eiffel natuurlijk) en hoe lost ge dat op.

Deel 2 (Schriftelijk)

Oefening 1:

int bla[] = {priemgetallen};
int *b = &(a+6);
*b = 7;
int &c = *b;
c = *b + *(a+2); // en op a+2 staat 5
(das gewoon 12)

Oefening 2: fun met C#

Class
 public int prop {
 get { return x}
 set{ x = value * 2}
}

Class 
 someMeth(Class s1, ref Class s2)
  s1 = s2.prop + 7;
  s2 = new Class();
 s2.prop = s1.prop + 14;
}

en dan als oproepen:
Class s = new Class(); 
s.prop = 20;
s.someMeth(s, ref s);

wat is s.prop? (216)

Oefening 3: Definieer de constructor voor Bag in Smalltalk

Oefening 4: Inheritance met C#.

Oefening 5: Multiple inheritance met C++. Zeer gelijkaardig aan de vraag op het voorbeeld examen.

Oefening 6: Java generics

ArrayList<String> list1 = new ArrayList<String>();
ArrayList<?> l2 = l1;
ArrayList<? extends Serializable> l3 = l1;
ArrayList<? super Serializable> l4 = l1;
ArrayList<Serializable> l5 = l1;
ArrayList l6 = l1;

wat mag niet (l3, l4); warning voor l6

nog een oefening van multiple inheritanc in C++ en eentje van single inheritance in C# de klassieke dingen in die twee oefeningen statische binding, hiden van methodes, override vs new in C#