Niezawodne programowanie

Nauka języka SPARK 2014

logo-isolated

Na stronie AdaCore University znajdują się materiały do nauki języka SPARK 2014.

Ciąg Fibonacciego

referral_campaign_blog

fibonacci.ads



pragma SPARK_Mode(on);

function Fibonacci (N : Natural) return Natural
with
Pre => N <= 46,
Contract_Cases =>
(N = 0 => Fibonacci'Result = 0,
N = 1 => Fibonacci'Result = 1,
others => Fibonacci'Result = Fibonacci(N - 1) + Fibonacci(N - 2));



fibonacci.adb



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pragma SPARK_Mode(on);

function Fibonacci (N: Natural) return Natural
is
X : Natural := 0;
Y : Natural := 1;
Z : Natural := 1;
begin
case N is
when 0 =>
return 0;
when 1 =>
return 1;
when others =>
for I in 2 .. N loop
Z := X + Y;
pragma Loop_Invariant (X = Fibonacci(I-2)
and Y = Fibonacci(I-1)
and Z = Fibonacci(I));
X := Y;
Y := Z;
end loop;
return Z;
end case;
end Fibonacci;



github repozytorium

Książka o SPARK 2014

9781107656840

Właśnie ukazała się książka o SPARK 2014: AdaCore blog

with SPARK_Mode

Najnowsza wersja SPARK 2014 wymaga umieszczania frazy with SPARK_Mode w specyfikacji i treści pakietu.

Poniższe pliki zawierają zaktualizowane źródła dotychczas rozpatrywanych przykładów:

Systemy wbudowane

Artykuł o języku SPARK 2014 w systemach wbudowanych: Stuart Matthews, SPARK 2014: Why I am backing a predictable winner.