* Printing out an Array
@ 2005-01-31 14:43 conchale
2005-01-31 15:00 ` Martin Krischik
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: conchale @ 2005-01-31 14:43 UTC (permalink / raw)
Hello all, I'm new to this and comming from Java environment. I have
this code to convert bytes to bits but I dont know what to put in the
last line of code to get on the screen my converted number. Thanks for
any help
----------------------------------------------------------
with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_text_Io; use Ada.Integer_text_Io;
procedure Pas3 is
subtype Octet is Integer range 0..255;
subtype Bit is Integer range 0..1;
type Tab_Bits is array (0 .. 7) of Bit;
function Octet_Vers_Bits (Oc : Octet )
return Tab_Bits is
Resultat : Tab_Bits;
N : Octet;
begin
N := Oc;
for I in reverse 0..7 loop
if ( N mod 2 = 1 ) then
Resultat(I) := 1;
else
Resultat(I) := 0;
end if;
N := N / 2;
end loop;
return Resultat;
end Octet_Vers_Bits;
t1 : Tab_bits;
x : integer;
begin
Put (" donner x: ");
Get(x);
for I in 0 .. 7 loop
t1 := Octet_Vers_Bits(x);
Put(Bit(x)); ----------------> here is the problem, what should I
put here.
end loop;
end Pas3 ;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Printing out an Array
2005-01-31 14:43 Printing out an Array conchale
@ 2005-01-31 15:00 ` Martin Krischik
2005-02-01 3:05 ` Jeffrey Carter
2005-02-01 3:14 ` Steve
2 siblings, 0 replies; 4+ messages in thread
From: Martin Krischik @ 2005-01-31 15:00 UTC (permalink / raw)
conchale@mac.com wrote:
> Hello all, I'm new to this and comming from Java environment. I have
> this code to convert bytes to bits but I dont know what to put in the
> last line of code to get on the screen my converted number. Thanks for
> any help
> ----------------------------------------------------------
> with Ada.Text_Io; use Ada.Text_Io;
> with Ada.Integer_text_Io; use Ada.Integer_text_Io;
>
> procedure Pas3 is
>
> subtype Octet is Integer range 0..255;
> subtype Bit is Integer range 0..1;
> type Tab_Bits is array (0 .. 7) of Bit;
>
> function Octet_Vers_Bits (Oc : Octet )
> return Tab_Bits is
> Resultat : Tab_Bits;
> N : Octet;
>
> begin
> N := Oc;
> for I in reverse 0..7 loop
> if ( N mod 2 = 1 ) then
> Resultat(I) := 1;
> else
> Resultat(I) := 0;
> end if;
> N := N / 2;
> end loop;
> return Resultat;
> end Octet_Vers_Bits;
>
> t1 : Tab_bits;
> x : integer;
>
> begin
> Put (" donner x: ");
> Get(x);
>
>
> for I in 0 .. 7 loop
Read:
http://en.wikibooks.org/wiki/Programming:Ada:Control#for_loop_on_arrays
You will need tp wait for the next version of Java for that feature ;-).
> t1 := Octet_Vers_Bits(x);
> Put(Bit(x)); ----------------> here is the problem, what should I
> put here.
> end loop;
> end Pas3 ;
Two options open:
1) you can use the 'Image attribute to convert the integer to a string.
2) you can use Ada.Text_IO.Integer_IO to write the value.
Option 1 is quickly implemented but you can't format the value.
Option 2 is more difficult but you can use formating options.
You find wxamples for option 2 here:
http://en.wikibooks.org/wiki/Programming:Ada:Types:range
Martin
--
mailto://krischik@users.sourceforge.net
http://www.ada.krischik.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Printing out an Array
2005-01-31 14:43 Printing out an Array conchale
2005-01-31 15:00 ` Martin Krischik
@ 2005-02-01 3:05 ` Jeffrey Carter
2005-02-01 3:14 ` Steve
2 siblings, 0 replies; 4+ messages in thread
From: Jeffrey Carter @ 2005-02-01 3:05 UTC (permalink / raw)
conchale@mac.com wrote:
> Hello all, I'm new to this and comming from Java environment. I have
> this code to convert bytes to bits but I dont know what to put in the
> last line of code to get on the screen my converted number. Thanks for
> any help
Assuming this isn't homework, in the package Ada.Text_IO (ARM A.10.1)
you will find the generic packages Integer_IO and Modular_IO (described
in more detail in ARM A.10.8). If you look at the Put procedures, you
will find the parameter Base. This allows you to specify the number base
to represent the number in. If you supply the value 2 for Base, you will
get the number output in binary.
A typical value from Put with Base => 2 might be " 2#10101010#". If you
need to get rid of the leading " 2#" and the trailing '#', you can use
the Put that writes to a String and manipulate the result.
Alternatively, you can use an Image function from PragmARC.Images, which
does it for you.
So, in Ada it is not necessary to convert the value to an array of bits
(which could be accomplished with Ada.Unchecked_Conversion), nor to
output the bits individually. Yet another case where Ada is simpler and
more expressive than other languages.
The PragmAda Reusable Components are available from
http://home.earthlink.net/~jrcarter010/pragmarc.htm
--
Jeff Carter
"You couldn't catch clap in a brothel, silly English K...niggets."
Monty Python & the Holy Grail
19
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Printing out an Array
2005-01-31 14:43 Printing out an Array conchale
2005-01-31 15:00 ` Martin Krischik
2005-02-01 3:05 ` Jeffrey Carter
@ 2005-02-01 3:14 ` Steve
2 siblings, 0 replies; 4+ messages in thread
From: Steve @ 2005-02-01 3:14 UTC (permalink / raw)
Since the function Octet_Vers_Bits returns an array of Tab_Bits, no need to
call it inside the loop.
...
T1 := Octet_Vers_Bits(X);
for I in 0 .. 7 loop
Put(T1(I),1);
end loop;
Just index the array to get the value.
Also, I prefer:
Resultat(I) := N mod 2;
To:
if ( N mod 2 = 1 ) then
Resultat(I) := 1;
else
Resultat(I) := 0;
end if;
But you will find other programmers who prefer the second form.
Steve
(The Duck)
<conchale@mac.com> wrote in message
news:1107182585.066205.21490@f14g2000cwb.googlegroups.com...
> Hello all, I'm new to this and comming from Java environment. I have
> this code to convert bytes to bits but I dont know what to put in the
> last line of code to get on the screen my converted number. Thanks for
> any help
> ----------------------------------------------------------
> with Ada.Text_Io; use Ada.Text_Io;
> with Ada.Integer_text_Io; use Ada.Integer_text_Io;
>
> procedure Pas3 is
>
> subtype Octet is Integer range 0..255;
> subtype Bit is Integer range 0..1;
> type Tab_Bits is array (0 .. 7) of Bit;
>
> function Octet_Vers_Bits (Oc : Octet )
> return Tab_Bits is
> Resultat : Tab_Bits;
> N : Octet;
>
> begin
> N := Oc;
> for I in reverse 0..7 loop
> if ( N mod 2 = 1 ) then
> Resultat(I) := 1;
> else
> Resultat(I) := 0;
> end if;
> N := N / 2;
> end loop;
> return Resultat;
> end Octet_Vers_Bits;
>
> t1 : Tab_bits;
> x : integer;
>
> begin
> Put (" donner x: ");
> Get(x);
>
>
> for I in 0 .. 7 loop
> t1 := Octet_Vers_Bits(x);
> Put(Bit(x)); ----------------> here is the problem, what should I
> put here.
> end loop;
> end Pas3 ;
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-02-01 3:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-01-31 14:43 Printing out an Array conchale
2005-01-31 15:00 ` Martin Krischik
2005-02-01 3:05 ` Jeffrey Carter
2005-02-01 3:14 ` Steve
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox