comp.lang.ada
 help / color / mirror / Atom feed
* 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