我安装了Windows1064位,并且安装了GNAT programming studio (没有像java jdk那样的设置)。我想在GPS GNAT编程工作室做我的第一个Ada程序。
以下是基于此的Arrayproject.adb
with Ada.Text_IO;
with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;
use Ada.Text_IO;
procedure Arrayproject is
type MyArray is array (1 .. 16) of Integer;
procedure put(s: MyArra
比如说,我需要添加两个矩阵。而且,我想用势在必行的范式来解决这个问题。
从(1)知道
命令式编程语言的典型示例是Fortran和Algol。其他包括Pascal,C和Ada。
从(2),我看到以下源代码:
result = []
i = 0
start:
numPeople = length(people)
if i >= numPeople goto finished
p = people[i]
nameLength = length(p.name)
if nameLength <
因此,我正在学习Ada中的应用程序定义类型,它似乎类似于C编程语言中的typedef。但是,如果我使用ty胡枝子f为C中的预定义类型创建了一个新名称,我仍然可以这样做:
typedef int my_int;
int a = 5;
my_int b = a; -- No problem
但如果我在Ada身上试试这个:
type my_int is new Integer;
a : Integer := 5;
b : my_int := a; -- Causes some error
所以我的问题是,我的理解是正确的,在C中,my_int只是int类型的别名或新名称,而不是新类型,而在Ada中
大多数其他编程语言都没有条件语句末尾需要的end if语句。
if boolean_expression then statement else statement
包括end if在内的Ada有哪些其他语言所没有的优势?
if boolean_expression then statement else statement end if
我认为如果条件为真(跳过代码的其他部分),这与分支预测有关,但我不确定。
我在找风格指导。在Python中,异常被用作“正常”操作:
try:
z = x/y
except ZeroDivisionError:
z = 73.0 # set z if y is zero
而不是检查y是否接近零,我们做除法并捕获异常。
John Barnes在Ada中的"Programming in Ada 2012“中对这种方法进行了说明:
begin
Tomorrow := Day'Succ(Today);
exception
when Constraint_Error =>
Tomorrow := Da
由于Random(Generator, First, Last)是在运行时实现的,GNAT允许以下代码,但它不是Ada2012的一部分。我可以导致一个编译错误,因为它应该是不可用的?
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Numerics.Discrete_Random;
procedure Main is
package Positive_Random is new Ada.Numerics.Discrete_Random
(Result_Subtype => Positive);
Generator : Pos
我是Ada编程语言的新手,我想在Ada中读取和操作图像,而不需要绑定其他库,如opencv。有没有办法在Ada中读取图片?或者将其转换为像素值(RGB),尤其是位图图像。我做了上面的类型来保存位图图像像素,但我不知道如何读取图像和填充我的图像类型。
type Byte is range 0..255;
for Byte'Size use 8;
type Pixel is record
R:Byte;
G:Byte;
B:Byte;
end record;
for Pixel'Size use 24;
type Im
很抱歉,我无法在标题中更清楚地表达这个问题,但本质上是这样的:几乎所有的函数式语言都有允许通过尾递归处理变量列表的结构,比如这个错误的伪代码,它总结了一个数字列表:
sumup(0,A) -> A.
sumup(N,A) -> sumup(N) + A.
然而,函数式语言对我最大的吸引力之一是它们固有的并行性。尽管一个问题,比如总结一个数字列表,显然是相当可并行的,而且几乎可以肯定是分而治之最有效的解决方法,但我不知道语言特性会使这成为一种自然的编程方式。事实上,除非该语言具有允许读取基于函数的参数数量并基于索引检索参数的功能,否则我不知道一个如何能够这样做。是否有任何功能语言具有
是否可以将参数调用行为(在第25行中)从左更改为右,而不是从右到左?
底部的代码将32.1打印到控制台。
with Ada.Containers.Vectors;
with Ada.Text_IO;
procedure Main is
package Vector is new Ada.Containers.Vectors (Positive, Integer);
V : Vector.Vector;
procedure A (X, Y, Z : Integer) is
begin
Ada.Text_IO.Put_Line (X'Img &am
我想知道为什么没有像+=、-=、++、-=、<<=或x ? y : z这样的运算符(不是增强赋值.)在艾达?许多其他语言(C、C++、C#、Java、Perl)都有它们。
--示例(C/C++/.):
int a = 3;
a += 4; /* A */
// long: a = a + 4
a++; /* B */
// long: a = a + 1
a = ( a > 3 ? 10 : 5 ); /* C */
// long: ' if a > 3 then a = 10 else a = 5'
--示例(Ada):
a : integer
假设我有一个用Ada编写的"hello world“程序:
with Ada.Text_IO; -- Bibliothèque
-- Déclaration de la procédure "Hello"
procedure Hello is
begin
-- Imprimer "Hello, world!" à l'écran
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;
当我完成编译过程时,我得到了可执行文件;我如何反转这个过程才能拿回源代码?