Thread View: be.comp.programming
5 messages
5 total messages
Started by a|n
Tue, 03 Aug 2004 12:05
PL/I en de expressie zoals '25 + 1 /3' die 5.3 geeft?
Author: a|n
Date: Tue, 03 Aug 2004 12:05
Date: Tue, 03 Aug 2004 12:05
9 lines
1290 bytes
1290 bytes
Ik bestudeer een boek Concepten van programmeertalen. In het boek zegt men op een bepaald moment dat in PL/I de expressie '25 + 1 / 3' daar 5.3 geeft en niet zoals in de wiskunde verwacht wordt. Iemand die me dat eventueel een beetje kan uitleggen? In alle geval bedankt bij voorbaat. -- mvg. Astrid
Re: PL/I en de expressie zoals '25 + 1 /3' die 5.3 geeft?
Author: Pieter Nobels
Date: Thu, 05 Aug 2004 14:43
Date: Thu, 05 Aug 2004 14:43
14 lines
1706 bytes
1706 bytes
a|n wrote: > Ik bestudeer een boek Concepten van programmeertalen. In het boek zegt > men op een bepaald moment dat in PL/I de expressie '25 + 1 / 3' daar 5.3 > geeft en niet zoals in de wiskunde verwacht wordt. > Iemand die me dat eventueel een beetje kan uitleggen? In alle geval > bedankt bij voorbaat. Wat had je graag uitgelegd gezien? Sommige mensen opteren voor het uitvoeren van wiskundige expressies van links naar rechts, anderen doen het zoals het hoort en geven prioriteit aan bepaalde operators. Maar dat is hetgeen staat in je quote, maar dat lijkt me duidelijk? -- Pieter Nobels
Re: PL/I en de expressie zoals '25 + 1 /3' die 5.3 geeft?
Author: a|n
Date: Thu, 05 Aug 2004 17:08
Date: Thu, 05 Aug 2004 17:08
27 lines
2319 bytes
2319 bytes
On Thu, 05 Aug 2004 14:43:24 GMT, Pieter Nobels <pieterRE@MOVEpcmania.be> wrote: >> Ik bestudeer een boek Concepten van programmeertalen. In het boek zegt >> men op een bepaald moment dat in PL/I de expressie '25 + 1 / 3' daar 5.3 >> geeft en niet zoals in de wiskunde verwacht wordt. >> Iemand die me dat eventueel een beetje kan uitleggen? In alle geval >> bedankt bij voorbaat. > >Wat had je graag uitgelegd gezien? Sommige mensen opteren voor het >uitvoeren van wiskundige expressies van links naar rechts, anderen doen >het zoals het hoort en geven prioriteit aan bepaalde operators. Maar dat >is hetgeen staat in je quote, maar dat lijkt me duidelijk? Hoe dit dus ge�valueerd wordt in PL/I en hoe ze aan de 5.3 komen? Dat had ik graag een beetje uitgelegd gezien. Ik kom er niet aan via links- of rechtsassociatief, noch via voorrang van bepaalde operators of net niet ... Het komt voor in het boek: Programming Language Concepts and Paradigms van David Watt. Verder staat er dan nog: "The reason is that PL/I defines evaluation of this expression in terms of its complicated (and counterintuitive) rules for fixed-point arithmetic, which entail truncation of the least and most significant digits!" -- mvg. Astrid
Re: PL/I en de expressie zoals '25 + 1 /3' die 5.3 geeft?
Author: Mark VB
Date: Thu, 05 Aug 2004 19:37
Date: Thu, 05 Aug 2004 19:37
46 lines
3208 bytes
3208 bytes
"a|n" <me@privacy.invalid> wrote in message news:sgvug0tnu2t5ennn2de6k55r7gfeibb9od@4ax.com... > > Ik bestudeer een boek Concepten van programmeertalen. In het boek zegt > men op een bepaald moment dat in PL/I de expressie '25 + 1 / 3' daar 5.3 > geeft en niet zoals in de wiskunde verwacht wordt. > Iemand die me dat eventueel een beetje kan uitleggen? In alle geval > bedankt bij voorbaat. > > -- > mvg. Astrid Astrid, Zoiets kan je normaal enkel voorhebben door een onjuiste declaratie van de variabelen, of door het gebruik van directe statements waarbij de getallen van verschillende precisie zijn. Gezien de structuur van PL/I, en de talloze "defaults" die de user vrij kan aanpassen, is het vrij complex om voor bovenstaand voorbeeld uit te leggen hoe men aan het resultaat komt, maar het komt erop neer dat -bij een fixed-point decimal in PL/I- de waarde bewaard wordt zonder de komma, en dit terwijl je zelf de precisie en de schaal-factor kan instellen. Dit betekent dus dat de waarde "1.234" intern wordt opgeslagen als "1234", en pas bij de uitvoer van de variabele de komma toegevoegd wordt. Wanneer je dit toepast op het voorbeeld dat je aanhaalt, zal eerst de bewerking "1/3" uitgevoerd worden (dus m�t inachtname van de onderlinge prioriteiten van de bewerkingen). Het resultaat daarvan is 0.333... en vanwege het grote aantal cijfers na de komma (of door eigen overrule) wordt dit resultaat bewaard in een variabele waar slechts ��n positie v��r de komma toegestaan is, en alle andere gebruikt worden voor de digits na de komma. Achteraf tel je er 25 bij, maar gezien voor het tussenresultaat slechts ��n positie voor de komma gedefinieerd werd, is dit ook automatisch zo voor alle volgende resultaten... eigenlijk tel je er dus gewoon slechts 5 bij. De 'most significant digit', in dit geval 2 (x10^2) wordt gewoon weggelaten. Een lange uitleg om te zeggen dat het eigenlijk om een "onvolkomenheid" gaat, die wel in meerdere programmeertalen terug te vinden is, maar steeds op te lossen door een correcte declaratie van de variabelen :-) hopend u hiermede van dienst geweest te zijn, Mark Van Borm
Re: PL/I en de expressie zoals '25 + 1 /3' die 5.3 geeft?
Author: a|n
Date: Fri, 06 Aug 2004 10:08
Date: Fri, 06 Aug 2004 10:08
20 lines
1806 bytes
1806 bytes
On Thu, 05 Aug 2004 19:37:41 GMT, "Mark VB" <mark.vanborm@telenet.be> wrote: >> Ik bestudeer een boek Concepten van programmeertalen. In het boek zegt >> men op een bepaald moment dat in PL/I de expressie '25 + 1 / 3' daar 5.3 >> geeft en niet zoals in de wiskunde verwacht wordt. >> Iemand die me dat eventueel een beetje kan uitleggen? In alle geval >> bedankt bij voorbaat. <knip> >Een lange uitleg om te zeggen dat het eigenlijk om een "onvolkomenheid" >gaat, die wel in meerdere programmeertalen terug te vinden is, maar steeds >op te lossen door een correcte declaratie van de variabelen :-) > Ach zeer bedankt daarvoor. Want ik heb nu door waar ze die 5.3 vandaan halen ... -- mvg. Astrid
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads