Datatype: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Madyno (overleg | bijdragen)
alleen onderwerp vet; typen zonder hoofdletter
Xqbot (overleg | bijdragen)
k Bot: Replace deprecated <source> tag
Regel 34:
Een type ''foo'' kan bijvoorbeeld worden gedefinieerd als ''int'':
 
<sourcesyntaxhighlight lang="c">
typedef int foo;
</syntaxhighlight>
</source>
 
Dit is geen primitief type, omdat het door de gebruiker is gedefinieerd, maar het is wel een enkelvoudig (''simple'') type.
Regel 86:
Dat wil zeggen: de typen 'record', 'structs' en 'tupel' zijn het[[cartesisch product]] van hun samenstellende typen. Neem het volgende Pascal-fragment:
 
<sourcesyntaxhighlight lang="pascal">
type
t = record
Regel 92:
b: char
end;
</syntaxhighlight>
</source>
 
Een variabele van type <code>t</code> kan alle waarden aannemen die bestaan uit een <code>integer</code> gevolgd door een <code>char</code>. Elk van deze waarden kan beschreven worden door een tupel <math>(x,y)</math> waarin <math>x</math> een integer is en <math>y</math> een char. Het verschil tussen records en structures enerzijds en tupels anderzijds, is dat bij de eerste de samenstellende waarden kunnen worden aangeduid met een naam. De samenstellende delen van tupels worden aangeduid met hun positie.
Regel 98:
Wat als we twee typen definiëren die uit dezelfde samenstellende delen bestaan, zoals in onderstaand Pascal fragment?
 
<sourcesyntaxhighlight lang="pascal">
type
t1 = record
Regel 108:
b2: char
end;
</syntaxhighlight>
</source>
 
Er zijn nu 2 typen gedefinieerd, die beide uit een tupel van een integer en char bestaan. Dat wil zeggen: voor iedere <math>(x,y)</math> waarvoor geldt <math>(x,y) \in T_1</math>, geldt ook <math>(x,y) \in T_2</math>. De typen <code>t1</code> en <code>t2</code> zijn ''structureel equivalent''. Toch staan niet alle talen het toe dat twee structureel equivalente typen door elkaar gebruikt worden. Het volgende Pascal-fragment zal een error opleveren:
 
<sourcesyntaxhighlight lang="pascal">
var
v1, v2: t1;
Regel 122:
v3 := v1;
end.
</syntaxhighlight>
</source>
 
De reden hiervan is dat Pascal gebruikmaakt van ''name equivalence''.