Автор: Psychoman 6.09.2013 21:17
Здраствуйте ,недавно меня заставили писать на Аде , потому я очень мало знаю про данный язык. Разобравшись с простыми на первый взгляд болезнями ( действительно это было над чем потягаться ),что-то вроде поставить компилятор и разобраться с елементарным синтаксисом, дальше вроде все неплохо пошло ( написание самой проги ).Но вышла небольшая проблема, ошибок нет ,но выдает ,что не может скомпилировать файл.
Ошибка такого плана:"Invalid context, cannot build.Error while trying to execute C:\Users\Psycho\AdaProjects\Lab1Test: not an executable".
Вот пример кода:
Код
////////////////////////////////Спецификации////////////////////////////////////////
--1.21 - D = sort(A) + sort(B) + sort(C)*(MA*MZ);
--2.24 - MG = sort( MA - MB * MC );
--3.25 - E = ( A + B + C )*( MA * MB );
package Lab1 is
N: Integer := 3;
type Vector is array( 1..N ) of Integer;
type Matrix is array( 1..N ) of Vector;
--procedure Func1( A,B,C : in Vector; MA,MZ: in Matrix; D : out Vector );
--procedure Func2( MA,MB,MC : in Matrix; MG : out Matrix );
--procedure Func3( A,B,C : in Vector; MA,MB : in Matrix; E : out Vector );
procedure sortVectorUp( K : in Vector; S : out Vector );
procedure sortVectorDown( K : in Vector; S : out Vector );
--procedure sortMatrixUp( MK : in Matrix; MN : out Matrix );
--procedure sortMatrixDown( MK : in Matrix; MN : out Matrix );
procedure InputVector( V : out Vector );
procedure InputMatrix( M : out Matrix );
procedure PrintResultMatrix( M : in Matrix );
procedure PrintResultVector( V : in Vector );
end Lab1;
///////////////////////////////////////Реализация///////////////////////////////////////////////
with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;
with Ada.Text_IO;
use Ada.Text_IO;
package body Lab1 is
procedure InputVector( V : out Vector ) is
i : Integer := 0;
begin
for i in 1..N
loop
Get( V(i) );
end loop;
end;
procedure InputMatrix( M : out Matrix ) is
i,j : Integer := 0;
begin
for i in 1..N
loop
for j in 1..N
loop
Get( M(i)(j) );
end loop;
end loop;
end;
procedure sortVectorUp( K : in Vector; S : out Vector ) is
minElem : Integer := 9999;
i,j: Integer := 0;
begin
for i in 1..N
loop
for j in i..N
loop
if K(i) < minElem then
minElem := K(i);
end if;
end loop;
S(i) := minElem;
end loop;
end;
procedure sortVectorDown( K : in Vector; S : out Vector ) is
maxElem : Integer := -9999;
i,j: Integer := 0;
begin
for i in 1..N
loop
for j in i..N
loop
if K(i) > maxElem then
maxElem := K(i);
end if;
end loop;
S(i) := maxElem;
end loop;
end;
procedure PrintResultVector( V :in Vector ) is
i : Integer := 0;
begin
for i in 1..N
loop
Put( V(i) );
Put( " " );
end loop;
end;
procedure PrintResultMatrix( M :in Matrix ) is
i,j : Integer := 0;
begin
for i in 1..N
loop
for j in 1..N
loop
Put( M(i)(j) );
Put( " " );
end loop;
New_Line;
end loop;
end;
end Lab1;
////////////////////////////////////////////Выполняймая процедура //////////////////////////////////////////////////////
with Lab1;
procedure Lab1Test is
A : Lab1.Vector;
begin
Lab1.InputVector( A );
Lab1.PrintResultVector( A );
end Lab1Test;
Компилятор GNAT 2011.
Спасибо.С удовольствием рассмотрю все ваши предложения по этому поводу
Автор: IUnknown 6.09.2013 22:56
Перед тем, как собирать проект, надо зайти в Project->Edit project properties->Main files, и выбрать в качестве основного файла проекта файл lab1test.adb... А теперь - собрать проект (Build main):
, и будет собран EXE-шник (если сделать Build all без выбора главного файла проекта, то exe-файл, разумеется, не будет создан, и не сможет быть запущен)
Автор: IUnknown 7.09.2013 13:15
Что именно в работе Дебаггера интересует? Как запустить - я уже рассказывал здесь: http://forum.pascalnet.ru/index.php?s=&showtopic=27452&view=findpost&p=152236
Автор: Psychoman 7.09.2013 13:34
Уже разобрался , спасибо за помощь
Автор: Sanek 29.09.2013 23:03
Привет.
Есть программа написанная на ада (из учебника). В самом начале подключается модуль win32 используя такой синтаксис
with win32;
use win32;
Однако на практике ничего не работает.
Ошибка - win32 not found in library
Кто знает почему?
При этом другие модули подключались в других примерах этого же учебника раньше именно так, через with / use и нормально.
Может в настройках ОбжектАда что то не то? или в настройках проекта?