如何调试Ada程序?

时间:2019-09-01 16:38:41

标签: ada

我做了这个问题,当我尝试编译它时,该标识符是预期的,但我没事。

with.Ada.TexT_IO;use Ada.Text_IO;
Procedure Isort1 is

  type node;
  type link is access node;
  type node  is
        record
        value:integer;
        rest:Character;
        next:link;
        end record;

        package IntIO is new Ada.Text_IO.Integer_IO(integer);use IntIO;

        int:integer;
        l:link;
        pt:array(1..100)of link;
        ch:character;

begin
   for i in 1..10 loop pt(i):=null;
   end loop;
   loop
      put("put an integer key  (1 thru 10),99 to stop ");
      get(int);
      exit when int=99;
      put("enter the other info,1 char ");
      get(ch);
      pt(int):= new node'(int,ch,pt(int));
   end loop;

   for i in 1..10 loop
   i:=pt(i);
   while I /=null loop
      put(I.value);
      put("... ");
      put(I.rest);
      new_line;
      I:=I.next;
      end loop;
  end loop;
end Isort1;

1 个答案:

答案 0 :(得分:3)

您关于“一切正确”的假设显然是错误的。 看来您在了解其他编程语言之后正在学习Ada。您似乎正在将其他语言的想法混入您的Ada代码中。

让我们先组织和缩进代码。

with.Ada.TexT_IO;use Ada.Text_IO;
Procedure Isort1 is

  type node;
  type link is access node;
  type node  is
        record
        value:integer;
        rest:Character;
        next:link;
        end record;

        package IntIO is new Ada.Text_IO.Integer_IO(integer);use IntIO;

        int:integer;
        l:link;
        pt:array(1..100)of link;
        ch:character;

begin
   for i in 1..10 loop pt(i):=null;
   end loop;
   loop
      put("put an integer key  (1 thru 10),99 to stop ");
      get(int);
      exit when int=99;
      put("enter the other info,1 char ");
      get(ch);
      pt(int):= new node'(int,ch,pt(int));
   end loop;

   for i in 1..10 loop
   i:=pt(i);
   while I /=null loop
      put(I.value);
      put("... ");
      put(I.rest);
      new_line;
      I:=I.next;
      end loop;
  end loop;
end Isort1;

您的第一行以“ with.Ada.TexT_IO;”开头。它应该说“ with Ada.Text_I0;”。大小写差异不是问题。问题是句号“。”保留字词“ with”之后。

问题解决后,编译器会告诉您在包含以下内容的行中有错误

i:=pt(i);

来自编译器的错误消息显示在下面的屏幕截图中。 GNAT builder screen capture

似乎您希望变量I包含类型为node的实例,但是从未声明变量I,也从未为其赋值。