comp.lang.ada
 help / color / mirror / Atom feed
From: Jim Rogers <jimmaureenrogers@att.net>
Subject: Re: Newbie Q
Date: Tue, 20 Sep 2005 04:09:26 GMT
Date: 2005-09-20T04:09:26+00:00	[thread overview]
Message-ID: <WXLXe.279644$5N3.247543@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: RkJXe.771$OC2.358@newssvr21.news.prodigy.com

 
"Larry Luther" <larry.luther.nospam@dolby.com> wrote in news:RkJXe.771
$OC2.358@newssvr21.news.prodigy.com:

>  
> I saw the following example in "Ada Programming" Wiki book:
> 
> if Temperature >= Degrees'(40.0) then
>     Put_Line ("It's extremely hot");
> elsif Temperature in Degrees'(30.0 .. 39.0) then
>     Put_Line ("It's hot");
> elsif Temperature in Degrees'(20.0 .. 29.0) then
>     Put_Line ("It's warm");
> elsif Temperature in Degrees'(10.0 .. 19.0) then
>     Put_Line ("It's cool");
> elsif temperature in Degrees'(0.0 .. 9.0) then
>     Put_Line ("It's cold");
> else
>     Put_Line ("It's freezing");
> end if;
> 
> What happens at 29.5 degrees?
> I'm assuming that "Temperature in Degrees'(20.0 .. 29.0)" will test
> the interval Temperature >= 20.0 through Temperature <= 29.0.
> So temperatures between 29.0 and 30.0 will be considered "freezing".

You are correct.
This example exhibits a similar error between 29.0 and 30.0 degrees,
between 19.0 and 20.0 degrees, and between 9.0 and 10.0 degrees.

The person writing this program was clearly thinking in terms of
integer arithmetic when he or she was dealing with either floating
point of fixed point arithmetic.

The example does not indicate whether Degrees is a fixed point or
floating point type. This example would work better with a fixed
point type than with a floating point type because one can always
know what the minimum delta between two fixed point numbers is.
The same cannot be said of a floating point number.

The example properly demonstrates the syntax of the if..elsif..else
syntax while also creating a logical error. 

Jim Rogers




  reply	other threads:[~2005-09-20  4:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-20  1:11 Newbie Q Larry Luther
2005-09-20  4:09 ` Jim Rogers [this message]
2005-09-20  5:48   ` Martin Dowie
2005-09-20 11:52   ` Dr. Adrian Wrigley
2005-09-20 13:33     ` Martin Dowie
2005-09-21 17:24     ` Martin Dowie
2005-09-20  4:09 ` Samuel Tardieu
2005-09-20  5:52   ` Simon Wright
2005-09-20  6:28     ` Samuel Tardieu
2005-09-20 16:26   ` Martin Krischik
2005-09-21  7:27     ` Samuel Tardieu
2005-09-20  7:58 ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox