Ada 火花中的平方和
对于一个学校项目,我必须写一篇关于SPARK编程语言的论文,我写了,但是其中的一部分是写一个简短的程序,它接受一个整数n并输出从1到n的平方和。在C++中,程序看起来像这样:Ada 火花中的平方和,ada,spark-ada,Ada,Spark Ada,对于一个学校项目,我必须写一篇关于SPARK编程语言的论文,我写了,但是其中的一部分是写一个简短的程序,它接受一个整数n并输出从1到n的平方和。在C++中,程序看起来像这样: #include <iostream> using namespace std; int main() { int n; cin >> n; if (n < 0) return 1; int sum = 0; int i = 0; while
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
if (n < 0) return 1;
int sum = 0;
int i = 0;
while (i <= n) sum += i*i;
cout << sum;
return 0;
}
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;
如果(n<0)返回1;
整数和=0;
int i=0;
而(i我假设您使用GNAT SPARK 2014作为示例程序。您的示例程序已经是有效的SPARK程序
您可以将Sum\u Of_Squares
函数更改为下面的代码,以计算在控制台上读取的任意整数的和。无需使用数组进行循环。我将integer
更改为Natural
,因为我假设您只对大于或等于的数字的平方感兴趣1比0
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
package Nat_IO is new Integer_IO(Natural); use Nat_IO;
function Sum_Of_Squares (X : in Natural) return Natural is
Sum : Natural := 0;
begin
for I in 1 .. X loop
Sum := Sum + I ** 2;
end loop;
return Sum;
end Sum_Of_Squares;
Input : Natural := 0;
begin
Nat_IO.Get(Input);
Put_Line (Positive'Image (Sum_Of_Squares (Input)));
end Main;
然而,SPARK的优点之一是添加一些额外的信息,以允许自动证明程序的已定义属性
希望这有帮助
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
package Nat_IO is new Integer_IO(Natural); use Nat_IO;
function Sum_Of_Squares (X : in Natural) return Natural is
Sum : Natural := 0;
begin
for I in 1 .. X loop
Sum := Sum + I ** 2;
end loop;
return Sum;
end Sum_Of_Squares;
Input : Natural := 0;
begin
Nat_IO.Get(Input);
Put_Line (Positive'Image (Sum_Of_Squares (Input)));
end Main;