comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Beginners question
Date: Fri, 12 Nov 2021 17:24:17 +0200	[thread overview]
Message-ID: <iv7f91F39pmU1@mid.individual.net> (raw)
In-Reply-To: <bd7154c8-21af-468e-910a-5a0847255eafn@googlegroups.com>

On 2021-11-12 16:32, uq5huo...@gmail.com wrote:
> Hi,
> 
> I'm beginning to play with Ada, and run into this
> 
> with Ada.Text_IO; use Ada.Text_IO;
> procedure Learn is
>     subtype Alphabet is Character range 'A' .. 'Z';
> begin
>     Put_Line ("Learning Ada from " & Alphabet'First & " to " & Alphabet'Last);
> end Learn;
> 
> Now I want to play a bit with the code ... and this fails and I don't get why and how to solve.
> 
> Put_Line ("Learning Ada from " & Alphabet'First & " to " & Alphabet'Last-1);
> or
> Put_Line ("Learning Ada from " & Alphabet'First & " to " & (Alphabet'Last-1));
> 
> Anyone more expirienced can explain this to my, please?


The Character type is not an integer type (unlike "char" in C), so you 
cannot subtract 1 from a Character (or an Alphabet value). Character is 
an enumeration type in Ada.

To get the Alphabet value immediately preceding Alphabet'Last, use the 
Pred ("predecessor") attribute function:

    Alphabet'Pred (Alphabet'Last)

If you need to take larger strides in the Alphabet enumeration, you can 
use the Pos and Val attribute functions. Pos returns the "position 
number" of its argument, and that is an integer. Val performs the 
opposite mapping. For example, to get the Alphabet value that is three 
positions before Alphabet'Last, you can do

    Alphabet'Val (Alphabet'Pos (Alphabet'Last) - 3)

  reply	other threads:[~2021-11-12 15:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-12 14:32 Beginners question uq5huo...@gmail.com
2021-11-12 15:24 ` Niklas Holsti [this message]
2021-11-12 15:44   ` uq5huo...@gmail.com
2021-11-12 15:44   ` uq5huo...@gmail.com
  -- strict thread matches above, loose matches on Subject: below --
2001-12-17 17:05 Dave
2002-01-02 14:44 ` Jacob Sparre Andersen
2002-01-02 14:56   ` Ted Dennison
replies disabled

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