Ada Programlama Dili — Örnekler: Fonksiyonlar
1. Subtract Function
Subtract
adındaki bir fonksiyona Integer
türünden iki parametre verilecek. İlk parametreden ikincisi çıkartılacak, ve sonuç fonksiyondan geriye döndürülecek. Programı çalıştırırken main.adb
içerisinde bulunan test isimleri verilecek.
subtract.ads
function Subtract (Left, Right : in Integer) return Integer;
subtract.adb
function Subtract (Left, Right : in Integer) return Integer is
begin
return Left - Right;
end Subtract;
Derleme ve Test
❯ gnatmake main.adb
gcc -c main.adb
gcc -c subtract.adb
gnatbind -x main.ali
gnatlink main.ali
❯ ./main Sub_10_1_Chk
Result: 9
❯ ./main Sub_10_100_Chk
Result: -90
❯ ./main Sub_0_5_Chk
Result: -5
❯ ./main Sub_0_Minus_5_Chk
Result: 5
2. Equality Function
Is_Equal
adındanki bir fonksiyona Integer
türünden iki parametre verilecek. Fonksiyon, eğer bu parametrelerin içerikleri aynı ise geriye True
, aksi halde False
değerini döndürecek.
is_equal.ads
function Is_Equal (Left, Right : in Integer) return Boolean;
is_equal.adb
function Is_Equal (Left, Right : in Integer) return Boolean is
begin
return Left = Right;
end Is_Equal;
Derleme ve Test
❯ gnatmake main.adb
gcc -c main.adb
gcc -c is_equal.adb
gnatbind -x main.ali
gnatlink main.ali
❯ ./main Equal_Chk
0 is equal to 0.
1 is equal to 1.
2 is equal to 2.
3 is equal to 3.
4 is equal to 4.
5 is equal to 5.
6 is equal to 6.
7 is equal to 7.
8 is equal to 8.
9 is equal to 9.
10 is equal to 10.
❯ ./main Inequal_Chk
0 isn't equal to -1.
1 isn't equal to 0.
2 isn't equal to 1.
3 isn't equal to 2.
4 isn't equal to 3.
5 isn't equal to 4.
6 isn't equal to 5.
7 isn't equal to 6.
8 isn't equal to 7.
9 isn't equal to 8.
10 isn't equal to 9.
3. States #2
Kullanıcı uygulamayı çalıştırırken argüman olarak Integer
türünden bir değer verecek. Ve bu argümana bağlı olarak Get_State
fonksiyonu, aşağıda belirtilen durum bilgisini, aksi halde boş bir karakter dizisini geriye döndürecek.
Sayı | Durum Bilgisi
------|-------------------------
0 | Off
1 | On: Simple Processing
2 | On: Advanced Processing
get_state.ads
function Get_State (State : in Integer) return String;
get_state.adb
function Get_State (State : in Integer) return String is
begin
return
(case State is
when 0 => "Off",
when 1 => "On: Simple Processing",
when 2 => "On: Advanced Processing",
when others => ""
);
end Get_State;
Derleme ve Test
❯ gnatmake main.adb
gcc -c main.adb
gcc -c get_state.adb
gnatbind -x main.ali
gnatlink main.ali
❯ ./main 0
Off
❯ ./main 1
On: Simple Processing
❯ ./main 2
On: Advanced Processing
❯ ./main 3
❯ ./main -1
❯ ./main test
raised CONSTRAINT_ERROR : bad input for 'Value: "test"
4. States #3
Bu uygulama öncelikle kullanıcıdan argüman olarak Integer
türünden bir değer alacak. Bu argüman Display_On_Off
metotuna parametre olarak aktarılacak. Bu metot da aldığı parametreyi Is_On
isimli fonksiyona parametre olarak verecek. Is_On
fonksiyonu da şayet verilen parametre 0
ise False
, aksi halde True
değerini döndürecek. Böylece Display_On_Off
metodu fonksiyonun verdiği değere göre ekrana On
veya Off
mesajını yazacak.
is_on.ads
function Is_On (State : in Integer) return Boolean;
is_on.adb
function Is_On (State : in Integer) return Boolean is
begin
return not (State = 0);
end Is_On;
display_on_off.ads
procedure Display_On_Off (State : in Integer);
display_on_off.adb
with Ada.Text_IO; use Ada.Text_IO;
with Is_On;
procedure Display_On_Off (State : in Integer) is
begin
Put_Line (if Is_On (State) = True then "On" else "Off");
end Display_On_Off;
Derleme ve Test
❯ gnatmake main.adb
gcc -c main.adb
gcc -c display_on_off.adb
gcc -c is_on.adb
gnatbind -x main.ali
gnatlink main.ali
❯ ./main -1
On
TRUE
❯ ./main 0
Off
FALSE
❯ ./main 1
On
TRUE
❯ ./main 2
On
TRUE
❯ ./main test
raised CONSTRAINT_ERROR : bad input for 'Value: "test"