Форум программистов, компьютерный форум, киберфорум
Наши страницы

Другие языки программирования

Войти
Регистрация
Восстановить пароль
 
 
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
#1

Ada для начинающих - Программирование

01.07.2017, 21:09. Просмотров 743. Ответов 29
Метки нет (Все метки)

Есть ли литература на русском языке для изучения Ada с нуля?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2017, 21:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ada для начинающих (Программирование):

[Ada] Почему язык Ada не получил широкого распространения? - Программирование
ADA, этот язык позиционируется как язык для разработки приложений, к которым предъявляются высокие требования в отношении безопасности,...

[Ada] Где можно скачать язык Ada? - Программирование
Здрасте всем народ где можно скачать этот язык?у кого нибудь есть ссылки? в поисковиках все ссылки битые, вся надежда на вас:)

[Ada] Язык Ada и семантика ASIS - Программирование
Требуется помощь, не ставится ADA ASIS на ПК, не понимаю как его распаковывать, пытаюсь поставить под Windows 7, через командную строку, но...

[Ada] Метод Якоби для решения системы линейных уравнений - Программирование
Помогите, кто может, написать код на языке ADA на одну из трех тем: 1) Кусочно-линейный интеграл 2) Циклическая редукция 3) Метод...

[Ada] Разработка параллельной программы для вычисления векторно-матричного выражения - Программирование
Мне необходимо разработать параллельную программу для вычисления векторно-матричного выражения MА= MВ*МС + ME*(MM*МX) для заданной...

[Ada] Обращение верхней треугольной матрицы - Программирование
Нужно написать одну из трех задач на выбор на аде!. . Помогите пожалуйста! Интеграл симспсона (функциональное деление) ИЛИ среднее...

29
KolodeznyDiver
1894 / 1471 / 167
Регистрация: 01.06.2013
Сообщений: 3,068
03.07.2017, 21:53 #16
watersoda, В свойствах проекта, Main указываете что у вас main. И Меню\Build\Run ... там ещё настроить можно. Shift-F2, в общем.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24644 / 16314 / 5017
Регистрация: 22.10.2011
Сообщений: 28,892
Записей в блоге: 5
03.07.2017, 22:27 #17
Цитата Сообщение от watersoda Посмотреть сообщение
для получения бинарника нужно выполнить: Bulid/Project/Build <current file>, после чего нажать кнопку "Execute"
Для того, чтобы пересобрать исходник и запустить бинарник достаточно нажать на кнопку со стрелкой (Build and Run <имя_файла>) :

Ada для начинающих

Но если все-таки хочется на эту кнопку повесить хоткей - то Edit -> Preferences -> General -> Key Shortcuts, в строке Filter записать Build, чтобы не просматривать тонны возможных вариантов, и найти строку Build & Run Number 1, выделить ее курсором и нажать кнопку Modify в правой части окна, после чего система будет ждать собственно нажатия хоткея. Я повесил для теста на это действие Shift + F9 (потому что у меня уже и Ctrl+F9 и просто F9 заняты), закрываем диалог настроек и жмем выбранный хоткей еще раз. Проект пересобирается и запускается.

Ada для начинающих
1
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
05.07.2017, 17:39  [ТС] #18
Что-то не нахожу у себя эту кнопку со стрелкой.
0
Миниатюры
Ada для начинающих  
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
05.07.2017, 17:47  [ТС] #19
Попробовал задействовать F9 в качестве хоткея, но при нажатии получаю сообщение:
Action not defined : Build & Run Number 1
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24644 / 16314 / 5017
Регистрация: 22.10.2011
Сообщений: 28,892
Записей в блоге: 5
05.07.2017, 18:02 #20
Цитата Сообщение от watersoda Посмотреть сообщение
не нахожу у себя эту кнопку со стрелкой
Не назначен главный файл проекта. Project -> Properties -> Sources -> Main, нажми на "+" и выбери тот файл который содержит основную программу. После сохранения изменений появится стрелка.
1
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
05.07.2017, 18:27  [ТС] #21
volvo, на одном из форумов по программированию нашёл Ваши (по крайней мере ник участника был тоже volvo, ссылку на данный форум я посеял) советы по уменьшению размера бинарника. Решил разместить их здесь, только расположение опций поправил в соответствии с GPS-2017:

1. Зайти в Project/Properties/Switches/Ada Linker и там включить опцию Strip Symbols.

2. Зайти в Project/Properties/Switches/Binder, включить опцию Shared GNAT run time. Внимание! Могут возникнуть проблемы с запуском полученного бинарника на стороннем ПК из-за отсутствия необходимых библиотек.
0
Миниатюры
Ada для начинающих  
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
05.07.2017, 18:28  [ТС] #22
Цитата Сообщение от volvo Посмотреть сообщение
Не назначен главный файл проекта. Project -> Properties -> Sources -> Main, нажми на "+" и выбери тот файл который содержит основную программу. После сохранения изменений появится стрелка.
Спасибо за разъяснения, заработало!
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
14.07.2017, 18:54  [ТС] #23
В продолжение задания кодировки: в Ada есть аналог system, как, например, в C++?

Сейчас для запуска бинарника использую батник:
Windows Batch file
1
2
3
4
@echo off
chcp 20866
hello.exe
pause
Нельзя ли реализовать в исходнике на Ada что-то аналогичное
C++
1
system("chcp 20866");
?
0
KolodeznyDiver
1894 / 1471 / 167
Регистрация: 01.06.2013
Сообщений: 3,068
14.07.2017, 19:39 #24
Если вы ставили GNAT Аду вместе с пакетом Win32Ada (хотя он Project называется), то там можно найти и смену локали и вызов (с помощью Win API), дочернего процесса, и ShellExecute есть, и CreateProcess, и может даже поможет setlocale. (За справкой по этим функциям в MSDN ).
Но я бы, если б было на это время, попытался бы решить проблему с ошибкой вывода в консоль использованием чисто Win API из этого же пакета Win32Ada не меняя кодировку в консоли. Исходники бы я в utf-8 оставил, а перекодировать текст можно Win API функциями MultiByteToWideChar и WideCharToMultiByte, заодно изучите как в ада память выделять, аллокаторы, access, aliased, всё такое.
Я это уже успел подзабыть, увы. Падает там, кстати при выводе символов возврата каретки и перевода строки.

p.s. Win32Ada подключается (если устанавливали) Project/Properties/Sources/Dependecies и в правой колонке Projets который можно подключить.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24644 / 16314 / 5017
Регистрация: 22.10.2011
Сообщений: 28,892
Записей в блоге: 5
14.07.2017, 19:47 #25
Цитата Сообщение от watersoda Посмотреть сообщение
Нельзя ли реализовать в исходнике на Ada что-то аналогичное
Нет. Я бы вообще не завязывался при изучении Ады на какую-то конкретную ОС. Если использовать только Windows (и лезть в WinAPI) - то Ада и не нужна.
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 93
19.08.2017, 18:47  [ТС] #26
Думаю, что новичкам, изучающим Ada, пригодится данный ресурс.
0
KolodeznyDiver
1894 / 1471 / 167
Регистрация: 01.06.2013
Сообщений: 3,068
19.08.2017, 19:16 #27
Цитата Сообщение от watersoda Посмотреть сообщение
Думаю, что новичкам, изучающим Ada, пригодится
Может и пригодится, но ... . Глянул пару страниц наобум. Почему то код бледно серый, плохо читаемый. И сразу ошибку увидел : Character'Val('97').
Вычитывать же надо.
0
WH
90 / 88 / 7
Регистрация: 10.09.2013
Сообщений: 437
24.12.2017, 11:10 #28
Язык интересен. Есть ли пример совсем простенькой программы, например вычисления корней квадратного уравнения? (1. с вводом с клавиатуры и 2. заданный в программе). Интернет на эту тему результатов не дал.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24644 / 16314 / 5017
Регистрация: 22.10.2011
Сообщений: 28,892
Записей в блоге: 5
24.12.2017, 11:47 #29
Чего ж не дал? Rosetta code дает ответ: http://rosettacode.org/wiki/Roots_of_a_quadratic_function#Ada
1
KolodeznyDiver
1894 / 1471 / 167
Регистрация: 01.06.2013
Сообщений: 3,068
24.12.2017, 13:05 #30
Цитата Сообщение от WH Посмотреть сообщение
с вводом с клавиатуры
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
WITH Ada.Text_IO; USE Ada.Text_IO;
WITH Ada.Float_Text_IO; USE Ada.Float_Text_IO;
WITH Ada.Numerics.Elementary_Functions;  USE Ada.Numerics.Elementary_Functions;
 
PROCEDURE Main IS
   TYPE Roots IS ARRAY (1..2) OF FLOAT;
   FUNCTION Solve (A, B, C : FLOAT) RETURN Roots IS
      SD : CONSTANT FLOAT := SQRT (B**2 - 4.0 * A * C);
      AA : CONSTANT FLOAT := 2.0 * A;
   BEGIN
      RETURN ((- B + SD) / AA, (- B - SD) / AA);
   END Solve;
   
   A, B, C : FLOAT;
   R : Roots;   
BEGIN
   Put("A ? ");
   Get(A);
   Put("B ? ");
   Get(B);
   Put("C ? ");
   Get(C);
   R:=Solve(A,B,C);
   Put_Line ("X1 =" & FLOAT'Image (R (1)) & " X2 =" & Float'Image (R (2)));
END Main;
Добавлено через 48 минут
С корректной обработкой ситуаций с разным кол-вом корней
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
WITH Ada.Text_IO; USE Ada.Text_IO;
WITH Ada.Float_Text_IO; USE Ada.Float_Text_IO;
WITH Ada.Numerics.Elementary_Functions;  USE Ada.Numerics.Elementary_Functions;
 
PROCEDURE Main IS
   TYPE ResultType IS (No_Roots, One_Root, Two_Roots);
 
   TYPE Roots(ResType : ResultType) IS
   RECORD
         CASE ResType IS
         WHEN No_Roots => NULL;   
         WHEN One_Root => Root : FLOAT;
         WHEN Two_Roots =>
            Root1   : FLOAT;
            Root2   : FLOAT;
         END CASE;
      END RECORD;
 
   FUNCTION Solve (A, B, C : FLOAT) RETURN Roots IS
      Q : CONSTANT FLOAT := B**2 - 4.0 * A * C;
      AA : CONSTANT FLOAT := 2.0 * A;
      SD : FLOAT;
   BEGIN
      IF Q < 0.0 THEN
         RETURN (ResType => No_Roots);
      ELSIF Q = 0.0 THEN
         RETURN (One_Root, - B / AA);
      ELSE
         SD := SQRT (Q);
         RETURN (Two_Roots,(- B + SD) / AA, (- B - SD) / AA);
      END IF; 
   END Solve;
   
   A, B, C : FLOAT;
BEGIN
   Put("A ? ");
   Get(A);
   Put("B ? ");
   Get(B);
   Put("C ? ");
   Get(C);
   DECLARE
      R : CONSTANT Roots :=Solve(A,B,C);
   BEGIN   
      CASE R.ResType IS
      WHEN No_Roots =>  Put_Line ("No roots");
      WHEN One_Root =>  Put_Line ("One root = " & FLOAT'Image (R.Root));
      when Two_Roots => Put_Line ("Two roots : " & Float'Image (R.Root1) & " ,   " &
                               FLOAT'Image (R.Root2));
      end case;
   end;   
end Main;
1
24.12.2017, 13:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2017, 13:05
Привет! Вот еще темы с ответами:

[Ada] Циклическая редукция и кусочно-линейный интеграл - Программирование
Здравствуйте. Прошу помочь написать код на языке АДА по следующим двум темам: Циклическая редукция и Кусочно-линейный интеграл. ...

[Ada] Когда освобождать память под динамически созданную задачу? - Программирование
В книжке Гавва (п. 16.1.3) написано, что, если задачу создаём по new, то освобождать память надо самим через Ada.Unchecked_Deallocation ....

[Ada] Поиск человека с самым большим весом в БД по сокращенному имени - Программирование
) Имеется программа Heavy. Она готова много раз вводить и выводить пары имя-вес, пока вместо имени не появится подчёркивание с пробелами....

[Ada] Создать динамический массив, тип которого опеределяется, как "Запись с динамическим массивом" - Программирование
Я программирую на языке ada. Передо мной возникла задача создать динамический массива тип которого опередяется как запись с динамическим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.