Page 1 of 2

[PROG] compatibile versoepeling

Posted: Sat Jan 06, 2007 11:02 am
by Jerre
Hoi,
zoals velen heb ik een vraagje ;)

In de tips vond ik volgende vraag:
2. Compatibiliteitsregels geven soms aanleiding tot “versoepeling” van de type-checking. Som
zo voledig mogelijk de in Oberon(-2) aanwezige compatibiliteitsregels op, en geef telkens aan
waarom de “versoepeling” nuttig of belangrijk is.

Nu die compatibiliteitsregels dat lukt wel, maar die versoepeling ;)

Geldt dat enkel bij de numerieke types? (dus dat de typeinclusie geldt?) of zijn er nog versoepelingen?
tot nu toe heb ik volgende (ruwe schets)

Code: Select all

Type Equivalentie
•	Als als a en b in dezelfde lijst verschijnen van variabele/record veld of formele parameter declaratie en zijn geen open array’s
•	Als 2 identifiers gedeclareerd worden als zijnde van hetzelfde type
•	Als a1 := a2
Type Gelijkheid
•	Als a en b van hetzelfde type zijn
•	Als ta en tb open arrays zijn met gelijke typeelementen
•	Als ta en tb procedures zijn wiens formele parameter lijsten overeenkomen
Type Inclusie
LongReal > REAL > LongINT > INT > ShortINT	=>vorm van versoepeling
Toekennings compatibiliteit
Een uitdrukking a van type ta is compatible met b van type tb als
•	Als ta en tb van hetzelfde type zijn
•	Ta en tb  numerieke types zijn en tb  includes ta		=> versoepeling
•	Ta en tb zijn records en ta is een extentie van tb
•	Ta en tb zijn pointers en ta is een extentie van tb
•	Ta en tb zijn procedures en ta is NIL
•	Tb is een array n of char en ta is een stringconstante met m elementen en m<n
•	Tb is een procedure type en ta is een procedure wiens formele parameters overeenkomen met die van tb
Array compatibiliteit
•	Ta en tb zijn arrays van hetzelfde types		=> versoepeling als het ene groter is van omvang dan andere (numerieke types)
•	Tb en ta zijn open arrays wiens elementen ook compatibel zijn		=> versoepeling
•	Tb is een array of char en ta is een string
Uitdrukkingscompatibiliteit
Bij bewerkingen geldt type inclusie: kleinste gemeenschappelijke nujmerieke type	=> versoepeling
Algemeen: versoepeling laat vooral toe niet identieke numerieke types te vermengen zolang de type inclusie geldt
Alvast bedankt

Posted: Sat Jan 06, 2007 12:26 pm
by Phil
Van da numeriek type kan wel dnek ik, maar dat heeft volgens mij ook te maken met record en pointer extensies. Als ge bv hebt:

TYPE
basis = POINTER TO BasisRec;
BasisRec = RECORD
a: type1;
END;

uitbreiding = POINTER TO UitbrRec;
UitbrRec = RECORD (BasisRec)
b: type2;
END;

uitbreidingTwee = POINTER TO UitBr2Rec;
Uitbr2Rec = RECORD (UitbrRec)
c: type3;
END;

Wel als ge nu zegt

VAR
p1: uitbreiding;
p2: uitbreidingTwee;
BEGIN
NEW(p2);
...
...
p1 := p2;

dan point die p1 nu eigelijk naar p2, waardoor da ge c van type3 wel kunt gebruiken met p1.. maar met gewone record extenties ging dat niet (het is normaal niet mogelijk om een vanuit een kleiner type een extended type te gebruiken)

da is ook een verspoepeling denk ik :D

Posted: Sat Jan 06, 2007 12:47 pm
by Michael Cochez
Ook open array's zijn een versoepeling
edit:stond er al tussen :oops:

Posted: Sat Jan 06, 2007 1:20 pm
by Jerre
Mja die pointertoestand kan wel kloppen (twijfelgeval)

Maar ff ander vraagje ik hoorde dat we de voorstelling van gehele en reëele getallen moesten kennen, is dit zo? (die 2 bestanden op BB)

Posted: Sat Jan 06, 2007 1:33 pm
by Phil
ik denk van nie, want daar sta op ondersteuning voor Computer Graphics I :?

Posted: Sat Jan 06, 2007 1:52 pm
by Jerre
Wel ik ga enkel doen zodat ik kan zeggen wat een getal is dus bijvoorbeeld:
1010111

Via die methode van absolute waarde met teken: die eerste 1 wil zeggen dat positief is, en daarna komt gewoon het getal bijvoorbeeld

Posted: Sat Jan 06, 2007 2:00 pm
by j0lle
Jerre wrote:Wel ik ga enkel doen zodat ik kan zeggen wat een getal is dus bijvoorbeeld:
1010111

Via die methode van absolute waarde met teken: die eerste 1 wil zeggen dat positief is, en daarna komt gewoon het getal bijvoorbeeld
da krijgde bij computersysteme, ni bij programmere :)

Posted: Sat Jan 06, 2007 2:02 pm
by Jerre
Think again :)

Nieuw sinds dit jaar postte Aricks op BB wat pdf's hieromtrent

Posted: Sat Jan 06, 2007 2:15 pm
by j0lle
hmmja idd.. ben beniewd of hij er nu iets van ga vragen... aangezien da bedoeld is ter ondersteuning van CG.
we shall see :)

Posted: Sat Jan 06, 2007 4:25 pm
by Phil
Nog een vraagje ivm compatibiliteit:

Waarom werden de regels van de toekenningscompatibiliteit ingevoerd? :shock:

Posted: Sat Jan 06, 2007 4:56 pm
by cG`
Zodat de compiler buiten de syntax ook compatibiliteit kan controleren wat dus minder discipline van de programmeur vereist?

Posted: Sat Jan 06, 2007 7:12 pm
by Jay Jay
Jerre wrote:Think again :)

Nieuw sinds dit jaar postte Aricks op BB wat pdf's hieromtrent
Ik dacht dat hij die gepost had op aanvraag van een aantal studenten, ter aanvulling van de nogal vage uitleg in de Computersystemen-cursus.

Kan zijn dat hij de basics erover vraagt, maar echt in detail gaan uitleggen zal wel niet hoeven.

Denk ik :P

Posted: Sat Jan 06, 2007 7:17 pm
by cG`
Kdenk dat die informatie over getalvoorstellingen vooral voor de wiskundigen bedoeld was aangezien zij hier weinig of niets over gezien hebben.

Posted: Sun Jan 07, 2007 1:34 am
by Adelbert
Volges mij heeft den Aricksx letterlijk tijdes de les gezegd dat ge dat moest kennen. (Hij heeft toen oek nog gezegd dat ge nie moest komen zeveren dat dat van CS was, want blablabla...)
Ook staat der tussen de tuyaux toch de vraag van't mondeling examen "Bespreek de interne voorstelling van een floating pointgetal IEEE."

Dus volges mij moete we da wel degelijk weten hoe da da in mekaar zit, langst den andere kant eeft'm da tot nu toe nog maar ene keer gevraagd (terwijl de andere grotere vrage toch wel meestal terugkomen).
Dus...

Posted: Sun Jan 07, 2007 1:36 am
by cG`
Mja hij zei dat als hij zoiets op een mondeling examen vraagt da ze dan zeggen "maar das computersystemen en da hebbe wij nog nie gehad" en dan begon hem weer met ne preek da alles aaneenhangt en samenhoort en blabla.