[Prog]Procedure parameterss vraag

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

User avatar
Fristi
WOZ
Posts: 4565

[Prog]Procedure parameterss vraag

Post#1 » Sat Jan 05, 2008 6:41 pm

Loha
Kheb ezo een klein vraagske.

Wanneer hebt ge bij parameters van een procedure geen type-idfentifier?

Volgens slides is er een uitzondering.
Doelt ie hier mee op open arrays of benk de bal mis aant slaan?

groetjes
Fris

User avatar
Robbe
WOZ
Posts: 2161
Contact:

Re: [Prog]Procedure parameterss vraag

Post#2 » Sat Jan 05, 2008 6:49 pm

Fristi wrote:Loha
Kheb ezo een klein vraagske.

Wanneer hebt ge bij parameters van een procedure geen type-idfentifier?

Volgens slides is er een uitzondering.
Doelt ie hier mee op open arrays of benk de bal mis aant slaan?

groetjes
Fris
ik zou denken bij de actuele parameters? maar elke parameter heeft normaal een type-identifier, enige type dat niet 'gedefinieerd' is zou een open array zijn dan. Maar in mijn ogen is dat ook gedefinieerd.
"I'm not afraid of falling, I'm afraid of landing" -- Sam
How To Ask Questions The Smart Way

Zingen? UKA-n dat ook!

User avatar
Fristi
WOZ
Posts: 4565

Post#3 » Sat Jan 05, 2008 8:40 pm

Ja ik vind da perrsoonlijk ook dat ad een type identifier heeft, maar tis tenige dak me kan inbeelden

Pieter Belmans
Posts: 593
Contact:

Post#4 » Sat Jan 05, 2008 8:55 pm

Een typeidentifier is een gedefinieerd TYPE. De specificatie die bij een formele parameter hoort, hoeft niet per se volwaardige identifier te zijn, een naamloze typespecificatie is genoeg. Bijvoorbeeld string: ARRAY n OF CHAR; daar zit geen identifier in, maar wel een specificatie. Het hoeft ook geen open array te zijn dus.

User avatar
Winak465
Posts: 31

Post#5 » Sun Jan 06, 2008 11:25 am

Ehm is string dan niet de type-identifier?

User avatar
PieterK
Posts: 118

Post#6 » Sun Jan 06, 2008 11:54 am

Winak465 wrote:Ehm is string dan niet de type-identifier?
Nope. String is hier varIdentifier. Hij doelt op anonieme typespecificatie.
Normaal hebt ge gedeclareerd:

Code: Select all


MODULE bla;

TYPE
string = ARRAY 10 OF CHAR;

...

PROCEDURE test(s: string);
BEGIN
...
END test;

END bla.
Nu krijgt ge:

Code: Select all


MODULE bla;

PROCEDURE test(string: ARRAY 10 OF CHAR);
BEGIN
...
END test;

END bla.
Meer info: cursus op pagina 95 onderaan.

Het antwoord op de Fristi z'n vraag is dus gewoon: bij anonieme typespecificatie en bij open arrays, right?

Pieter Belmans
Posts: 593
Contact:

Post#7 » Sun Jan 06, 2008 12:35 pm

PieterK wrote:
Winak465 wrote:Ehm is string dan niet de type-identifier?
Nope. String is hier varIdentifier. Hij doelt op anonieme typespecificatie.
Normaal hebt ge gedeclareerd:

Code: Select all


MODULE bla;

TYPE
string = ARRAY 10 OF CHAR;

...

PROCEDURE test(s: string);
BEGIN
...
END test;

END bla.
Nu krijgt ge:

Code: Select all


MODULE bla;

PROCEDURE test(string: ARRAY 10 OF CHAR);
BEGIN
...
END test;

END bla.
Meer info: cursus op pagina 95 onderaan.

Het antwoord op de Fristi z'n vraag is dus gewoon: bij anonieme typespecificatie en bij open arrays, right?
Ja. Maar, ik denk niet dat het mogelijk is een open array als type te definiëren en die dan met zijn typeidentifier te gebruiken in de formele paramaterlijst. Volgens mij checkt Oberon bij een typedeclaratie van een open array of er wel een pointer naar is, zodat er geheugenallocatie kan uitgevoerd worden. Dus "naamloze typespecificatie" should be enough, aangezien open arrays per definitie dus naamloos moeten zijn om in een formele parameterlijst opgenomen te kunnen worden.

User avatar
Fristi
WOZ
Posts: 4565

Post#8 » Sun Jan 06, 2008 12:42 pm

welja, das dan ook weer min of meer opgeklaard

User avatar
PieterK
Posts: 118

Post#9 » Sun Jan 06, 2008 12:49 pm

Pieter Belmans wrote:Ja. Maar, ik denk niet dat het mogelijk is een open array als type te definiëren en die dan met zijn typeidentifier te gebruiken in de formele paramaterlijst. Volgens mij checkt Oberon bij een typedeclaratie van een open array of er wel een pointer naar is, zodat er geheugenallocatie kan uitgevoerd worden. Dus "naamloze typespecificatie" should be enough, aangezien open arrays per definitie dus naamloos moeten zijn om in een formele parameterlijst opgenomen te kunnen worden.
k. Das inderdaad waar. Ik heb ook nog een vraagje:

Wat mag/moet het type van de receiver
zijn? Waarom?

Het gaat me vooral om de waarom. Het mag ofwel een waardeparameter van een type pointer naar een record zijn ofwel een variabeleparameter van het type record. Dus: waarom?
(Volgens mij is deze vraag al eens gesteld maar ik kon ze niet direct terugvinden.)

Pieter Belmans
Posts: 593
Contact:

Post#10 » Sun Jan 06, 2008 12:58 pm

Omdat ge ni in staat zijn om object georiënteerd te werken op een SHORTINT? :P Een RECORD is het enige type waar ge in Oberon-1 PROCEDURE-velden aan kon toekennen, want zo werkte het more or less in the good ol' days als ik m'n boek juist gelezen heb.

En als waardeparameter een pointer, betekent dat ge bij wijziging van velden in de reciever, daadwerkelijk iets verandert in het geheugen. Een variabeleparameter is immers een pointer naar het echte geheugenadres met de informatie. Hier werk je dus ineens met een pointer, die dus waardeparameter moet zijn, anders kan je het object zelf gaan toekennen aan andere dingen enzo, which is a bit bad practice. Al kan ik me wel usecases bedenken (maar dat gaat voor bijna alles ;)).

Als je reciever een RECORD is, moet het een variabeleparameter zijn, anders ga je voorbij aan het feit dat OOP een manier van programmeren is die vertrekt vanuit de data, die handelingen uitvoert. Nu kan je wel handelingen uitvoeren, maar ze hebben geen resultaat, je slaagt immers het resultaat niet op, er is een kopie van je object gemaakt :).

User avatar
Sebastiaan
Posts: 1184

Post#11 » Sun Jan 06, 2008 12:58 pm

PieterK wrote:
Pieter Belmans wrote:Ja. Maar, ik denk niet dat het mogelijk is een open array als type te definiëren en die dan met zijn typeidentifier te gebruiken in de formele paramaterlijst. Volgens mij checkt Oberon bij een typedeclaratie van een open array of er wel een pointer naar is, zodat er geheugenallocatie kan uitgevoerd worden. Dus "naamloze typespecificatie" should be enough, aangezien open arrays per definitie dus naamloos moeten zijn om in een formele parameterlijst opgenomen te kunnen worden.
k. Das inderdaad waar. Ik heb ook nog een vraagje:

Wat mag/moet het type van de receiver
zijn? Waarom?

Het gaat me vooral om de waarom. Het mag ofwel een waardeparameter van een type pointer naar een record zijn ofwel een variabeleparameter van het type record. Dus: waarom?
(Volgens mij is deze vraag al eens gesteld maar ik kon ze niet direct terugvinden.)
Damn te laat.

User avatar
PieterK
Posts: 118

Post#12 » Sun Jan 06, 2008 2:11 pm

Pieter Belmans wrote:Omdat ge ni in staat zijn om object georiënteerd te werken op een SHORTINT? :P Een RECORD is het enige type waar ge in Oberon-1 PROCEDURE-velden aan kon toekennen, want zo werkte het more or less in the good ol' days als ik m'n boek juist gelezen heb.

En als waardeparameter een pointer, betekent dat ge bij wijziging van velden in de reciever, daadwerkelijk iets verandert in het geheugen. Een variabeleparameter is immers een pointer naar het echte geheugenadres met de informatie. Hier werk je dus ineens met een pointer, die dus waardeparameter moet zijn, anders kan je het object zelf gaan toekennen aan andere dingen enzo, which is a bit bad practice. Al kan ik me wel usecases bedenken (maar dat gaat voor bijna alles ;)).

Als je reciever een RECORD is, moet het een variabeleparameter zijn, anders ga je voorbij aan het feit dat OOP een manier van programmeren is die vertrekt vanuit de data, die handelingen uitvoert. Nu kan je wel handelingen uitvoeren, maar ze hebben geen resultaat, je slaagt immers het resultaat niet op, er is een kopie van je object gemaakt :).
Dus effe om te sumarizen:
Waardeparamter van een pointertype omdat we dus willen vermijden dat we gaan knoeien met de pointer maar wel de data (waarnaar de pointer wijst) kunnen veranderen. En een variabele parameter van het recordtype omdat we anders niks kunnen veranderen aan de data.

Right?
Bedankt voor de uitleg! It is much appreciated! :D
Sebastiaan wrote:Damn te laat.
Ge moogt altijd nog eens proberen om het uit te leggen hé. Kan alleen maar duidelijker worden zo ;)(behalve als gij iets tegenstrijdigs zegt natuurlijk)

Pieter Belmans
Posts: 593
Contact:

Post#13 » Sun Jan 06, 2008 2:27 pm

PieterK wrote:
Pieter Belmans wrote:Omdat ge ni in staat zijn om object georiënteerd te werken op een SHORTINT? :P Een RECORD is het enige type waar ge in Oberon-1 PROCEDURE-velden aan kon toekennen, want zo werkte het more or less in the good ol' days als ik m'n boek juist gelezen heb.

En als waardeparameter een pointer, betekent dat ge bij wijziging van velden in de reciever, daadwerkelijk iets verandert in het geheugen. Een variabeleparameter is immers een pointer naar het echte geheugenadres met de informatie. Hier werk je dus ineens met een pointer, die dus waardeparameter moet zijn, anders kan je het object zelf gaan toekennen aan andere dingen enzo, which is a bit bad practice. Al kan ik me wel usecases bedenken (maar dat gaat voor bijna alles ;)).

Als je reciever een RECORD is, moet het een variabeleparameter zijn, anders ga je voorbij aan het feit dat OOP een manier van programmeren is die vertrekt vanuit de data, die handelingen uitvoert. Nu kan je wel handelingen uitvoeren, maar ze hebben geen resultaat, je slaagt immers het resultaat niet op, er is een kopie van je object gemaakt :).
Dus effe om te sumarizen:
Waardeparamter van een pointertype omdat we dus willen vermijden dat we gaan knoeien met de pointer maar wel de data (waarnaar de pointer wijst) kunnen veranderen. En een variabele parameter van het recordtype omdat we anders niks kunnen veranderen aan de data.

Right?
Bedankt voor de uitleg! It is much appreciated! :D
Dit is de tweede bevestiging. Als ge nog ne keer vraagt of uw idee juist is, verdien ik 1 blikje/glas/tas/andere-geschikte-drankcontainer limonade/thee vind ik :P. U mag schrappen wat niet past, en graag een aanvaardbare combinatie, dus geen blikken thee.

User avatar
PieterK
Posts: 118

Post#14 » Sun Jan 06, 2008 2:31 pm

/me thinks someone is getting annoyed :P

Ik zal het niet meer doen. :oops:

User avatar
cG`
Posts: 75

Post#15 » Sun Jan 06, 2008 3:09 pm

PieterK wrote:Het gaat me vooral om de waarom. Het mag ofwel een waardeparameter van een type pointer naar een record zijn ofwel een variabeleparameter van het type record. Dus: waarom?
(Volgens mij is deze vraag al eens gesteld maar ik kon ze niet direct terugvinden.)
Een variabele parameter van het type record is eigenlijk hetzelfde als een pointer naar een record, alleen wordt die pointer dan achter de schermnen gecreerd.
[i]"Everything should be made as simple as possible, but not simpler."[/i] - Albert Einstein

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 60 guests