🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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?
#2271
Author: a|n
Date: Tue, 03 Aug 2004 12:05
9 lines
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?
#2274
Author: Pieter Nobels
Date: Thu, 05 Aug 2004 14:43
14 lines
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?
#2275
Author: a|n
Date: Thu, 05 Aug 2004 17:08
27 lines
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?
#2276
Author: Mark VB
Date: Thu, 05 Aug 2004 19:37
46 lines
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?
#2277
Author: a|n
Date: Fri, 06 Aug 2004 10:08
20 lines
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