Раздел 1.4 - Простые переменные, целые, параметры и исключения.

Создадим программу, чтобы проказать, что такое простые переменные и передача параметров. Эта программа будет до бесконечности печатать степени числа 2, начиная 1. Назовем эту процедуру Compute.

Внутри этой процедуры создадим локальную процедуру Double, которая умножает любое число, переданное ей, на 2, и локальную целую переменную `X'.


Verbose Configure

Обратите внимание на то, что целая локальная переменная `Х' имеет начальное значение 1. Тип Integer используют для хранения целых чисел со знаком, без учета их минимального и максимального значения. Если последнее не безразлично, то, как будет показано дальше, то же самое должно быть сделано по-другому.

Внутри этой новой процедуры находится локальная процедура 'Double', которая удваивает передаваемое ей значение. Локальная процедура, как и локальная переменная, может использоваться только процедурой, внутри которой она расположена. Возможность вложения процедур полезна в больших программах и является стандартной для языка Pascal (в отличие от С и С++).

Указание `in out' означает, что значение передается в процедуру и может быть изменено в ней.

Выражение "With .. Ada.Integer_Text_IО" указывает на то, что для текстового ввода-вывода целых чисел будет использоваться предопределенный пакет Ada 95 с именем Ada.Integer_Text_IО. Он содержит оператор "Put" который печатает переданное ему целое число.

Вторая инструкция "begin" является началом самой процедуры Compute. Процедура Compute содержит бесконечный цикл, который выводит текущее значение и удваивает его. Инструкция "Put" печатает число, а "New_Line" обеспечивает вывод текста с новой строки.

Компьютеры не могут оперировать с бесконечно большими числами; рано или поздно значение выходит за пределы области, выделенной ему для хранения. Что же происходит в этом случае? Некоторые языки программирования (например, С) просто допускают появление "мусора". Ada демонстрирует лучший подход: когда операция (такая, как умножение на 2) невыполнима, Ada вызывает "исключение". Таким образом, рано или поздно, эта программа будет прервана с сообщением, указывающим, почему и где произошло ее завершение. Как будет показано далее, исключения могут быть перехвачены и обработаны внутри программы.


Упражнение:

Что обычно делает Ada, когда вычисление не может быть выполнено?

  1. Дает неправильный ответ без дополнительных сообщений.
  2. Возбуждает исключение.
  3. Нарушается целостность данных в памяти.

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 1

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s1sf.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org