Missa inte Amazon Prime Deal Days!
Permalänk

Ada, operator för +

Tja,

behövs det en egenidentifierad operator för att summera (+) två Integer i en procedure i ada?

Visa signatur

Tung pung ger starka ben!

Permalänk
Medlem

Kort svar: Nej!

Lite längre svar: Ada har självklart en inbyggd +-operator för de elementära datatyperna!

Visa signatur

5D MkII

Permalänk

vad är fel då?

procedure tjosan (A, B : out Integer; Summan : in Integer) is

begin

Get(A);
Get(B);

Summan := A + B;
Put(Summan, Width=>0);

end tjosan;

Visa signatur

Tung pung ger starka ben!

Permalänk
Medlem

Inget såvitt jag kan se! Bara du lagt till biblioteket för I/O av integer, det gör du såhär:

package Int_Io is new Integer_Io(Integer);
use Int_Io

Visa signatur

5D MkII

Permalänk

Vill fortfarande inte fungera. Kompilatorn säger att:

assignment to "in" mode parameter not allowed

Visa signatur

Tung pung ger starka ben!

Permalänk
Medlem

Ja, det såg jag inte. Men kompilatorns svar är ju ganska självförklarande, eller? Du kan ju inte tilldela summa något eftersom dess värde ej får ändras när det är en in-parameter. Skulle föreslå att du deklarerar summa som en lokal variabel. Att skicka in den verkar ju ganska meningslöst med nuvarande kod.

Visa signatur

5D MkII

Permalänk
Medlem

byt in- och ut-variablerna. A o B ska ju va in, och summan ska vara ut.

Visa signatur

smaaland

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Anderch
byt in- och ut-variablerna. A o B ska ju va in, och summan ska vara ut.

Öhhh, nej, definitivt inte, då funkar det inte alls. Och varför tar du upp en så gammal tråd?

Visa signatur

5D MkII

Permalänk
Medlem

skriv en "function" istället vilket underlättar exempelvis:

function Summera(A,B : in Integer) return Integer is

Summa : Integer;

begin

return Summa := A + B;

end Summera;

Permalänk
Medlem

with Ada.Integer_Text_IO;

procedure tjosan (A, B : out Integer;
Summan : in Integer) is

begin

Get(A);
Get(B);

Summan := A + B;
Put(Summan, Width=>0);

end tjosan;

Visa signatur

MBP 13" i5 2011

Permalänk
Medlem

Jag hoppar verkligen greatevil inte fortfarande sitter och försöker lösa detta.

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vectrex
Öhhh, nej, definitivt inte, då funkar det inte alls. Och varför tar du upp en så gammal tråd?

Inte? Jag kan inte alls Ada, så det är bara av rent intresse, men det är alltså inte så att en parameter som är deklarerad som out inte ... jo, det måste det väl vara eller?

out-parameter = motsvarigheten till icke-const referens i c++, dvs man förväntar sig att funktionen ska skriva nåt vettigt till den (det är funktionens "ut-värde")

in-parameter = motsvarigheten till const referens i c++, dvs funktionen kan bara läsa från variabeln (det är funktionens "in-värde")

Är det inte så?

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net