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)
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?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 399 |
Nodes: | 16 (2 / 14) |
Uptime: | 65:08:54 |
Calls: | 8,355 |
Calls today: | 15 |
Files: | 13,159 |
Messages: | 5,893,953 |
Posted today: | 1 |