问题标签 [ada2012]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
119 浏览

packages - Recursive visibility of symbols in Ada packages

Let's say I have a generic vector library. To make it easier to use, I want to instantiate various common forms of the vector library and make them visible in a single package.

I'm trying this:

The end goal is that I want to be able to do with Vectors; use Vectors; and end up with Vector3 and Vector4 types directly available which Just Work.

Naturally, the code above doesn't work. It looks like the use all type statements import the definitions attached to the specified type into the package specification but then those definitions aren't exported to the user of Vectors. I have to do with Vectors; use Vectors; use all type Vectors.Vectors3; instead. This is kind of sucky.

How can I do this?

0 投票
0 回答
117 浏览

generics - 通用子程序从实现 Ada.Iterator_Interfaces 的包中获取类型以利用 Ada 2012 for .. in/of 循环语法

据我了解,任何实现 Ada.Iterator_Interfaces 的东西都可以使用 Ada 2012 for 循环语法。“for ... [in|of] .. 循环 .. 结束循环;

如何创建一个通用子程序,我可以用实现 Ada.Iterator_Interfaces 的包中的类型来实例化它?然后可以让该子程序使用 Ada 2012 for 循环遍历该类型。

在 Java 中,这可能看起来像:

例如(尽管不是唯一的情况)一个经典的连接函数,它可以接受任何包含字符串的可迭代容器,并返回在字符串列表中连接在一起的所有字符串。例如。

谢谢

马特

0 投票
2 回答
5250 浏览

ada - 如何在我的程序中停止执行

如果不在这里复制粘贴我的代码,我如何阻止我的 ADA 程序在运行时执行更多代码行,如果它计算出某个值到“X”?

就像是:

我对编程并不陌生,但对 ADA 并不陌生,因此找到正确的语法很痛苦。有什么帮助吗?

0 投票
2 回答
109 浏览

ada - 如何从标准输入循环遍历多个数据集

我正在读取标准输入(一个文本文件并使用这样排列的数据进行计算:

我的 ADA 计划的基本大纲:

我想知道如何告诉我的程序继续循环,直到没有什么可读的,但要记住零是分开数据集的,如果每个“0”之后有更多数据,则继续循环。

0 投票
3 回答
1055 浏览

ada - 如何向 Ada 中的数组添加不同的类型值?

我的目标是从标准输入接收一个方程,将其存储在一个数组中以供以后使用/重新打印,然后输出一行打印整个方程和答案,就像这样:

输入:2+3=

输出:2 + 3 = 5

由于 Ada 无法拥有动态字符串等,我对如何执行此操作感到非常困惑。

这是我在伪代码中的一个粗略想法..

我猜数组应该是这样的:

我也是Ada的初学者,所以掌握起来更加困难,我对Java非常擅长,但是我不习惯强类型的语法。请询问您是否需要更多信息。

0 投票
2 回答
570 浏览

ada - 如何循环从stdinput获取一个int,忽略空格

所以我可以通过标准输入轻松地从我的 .txt 文件中获取我要查找的 int 值,但是当它之前有一个空格(或多个空格)时,它不起作用并且发生数据错误,因为它是整数虽然,我下面的代码用于抓取字符串,但当我将 int 放在那里时不起作用,因为您无法将 Int 与 String 进行比较。关于解决方法的任何想法?

0 投票
1 回答
77 浏览

java - Ada 中的未命名记录

在 Java 中,您可以执行以下操作:

ArrayList.add(new Object(int arg1, int arg2);

创建一个没有名称的对象并将其添加到列表中,使其易于在循环中使用。

我将如何使用记录在 Ada 中做类似的事情?

我有一个记录:

我将如何创建记录的实例并将其添加到数组而不命名它们?

0 投票
1 回答
134 浏览

loops - Ada for 循环没有进行正确的比较

简单的程序是将一个选民的最佳候选人与几个候选人进行匹配。假想选民回答了 10 个假想话题;“-1”表示不同意,“0”表示不关心,“1”表示同意。候选人还针对相同的主题进行了相同的调查,并且适用相同的规则。如果选民或候选人对特定主题投了“0”票,则总协议值不受影响。如果选民和候选人之间的值相同,则增加协议值。如果值不同,则减少协议值。最后,将具有最高值的候选人呈现给选民。

这是程序的示例终端输入,包括输出:

输入:

输出:A、F、G

使用打印语句,我能够确定一切正常,除了实际将选民值与当前候选值进行比较的 for 循环之外的所有地方:

其他所有内容都经过验证被正确采用,并在整个程序中保持正确的值,但 COMPARE_Loop 不会正确比较这些值。我不知道为什么。

0 投票
1 回答
793 浏览

ada - Ada 2012 和 GNAT GPS IDE 调试器找不到源文件

我正在使用 Windows 7/64 下的 GPS IDE 在 Ada 2012 中使用简单的 hello world 单 .adb 文件程序。如果我将所有对象和源文件放在一起,一切正常。我确实必须转到项目属性 Switches 选项卡并选择 Ada 选项卡并启用“调试信息”复选框

现在我想更好地组织我的项目并将目标文件放在他们自己的目录中。我使用了项目属性Objects选项卡并将设置从 更改.ojb。我可以构建和运行。现在,当我去调试并单击 hello.adb 中的一行时,我得到“没有名为 hello.adb 的源文件。我猜它在 obj 目录中查找。我尝试发出set directory命令并给出了绝对路径父文件夹。随后的show directories命令显示包含我的文件夹hello.adb文件现在在路径中,但仍然没有乐趣。我不能再设置断点。这似乎不是一个不寻常的操作,我怀疑还有另一种更高级别的方法来指定调试器的源路径。任何人都知道它是什么,或者任何关于让它工作的提示?

0 投票
1 回答
128 浏览

arrays - 了解 Ada 2012 中连接数组的边界

我正在阅读John Barnes的《Ada 2012 编程》 。在第 8.6 节中,他讨论了数组连接和数组边界的规则,特别是:

结果的下限取决于底层数组类型是否受到约束。如果它不受约束...那么下限是左操作数的下限...[否则]下限是数组索引子类型的下限。

然后在 8.6 的练习中,问题 7 如下(我在 [] 内添加了网站 PDF 上给出的答案):

  1. 给定

    类型 TC 是整数数组 (1..10);
    TU 类型是整数的数组(自然范围 <>);
    交流:TC;
    非盟:TU(1..10);

什么是界限:

a 和 b 的答案对我来说很有意义,因为 AC 数组是基于一个受约束的类型,我们只使用索引的边界。我认为 c 和应该都是 6..15 的答案,因为基础类型不受约束,最左边的操作数 AU(6) 或 AU(6..10) 将确定起始边界。然后我尝试如下所示对其进行编码以更好地理解,并且所有四个都将边界显示为 1..10。我的代码错了,答案错了还是文本中的描述错了?(顺便说一句,我还使用新的数组变量进行了编码并对这些变量进行了分配,但结果是相同的)。

(Tio 和 Iio 只是对文本和整数的 std Ada io 包的重命名)

运行时,此代码产生以下控制台输出: