Редактирование: Язык Ада, 02 лекция (от 03 марта)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 7: Строка 7:
Надежный язык такой, в котором запрещено все, что не разрешено языком. При вводе в программе некой сущности, необходимо определить все свойства этой сущности и при использовании этой сущности должна отсутствовать возможность использовать эту сущность не по назначению. При введении какой-то сущности в программе должна иметься возможность определять ровно то, что действительно необходимо.
Надежный язык такой, в котором запрещено все, что не разрешено языком. При вводе в программе некой сущности, необходимо определить все свойства этой сущности и при использовании этой сущности должна отсутствовать возможность использовать эту сущность не по назначению. При введении какой-то сущности в программе должна иметься возможность определять ровно то, что действительно необходимо.
В стандарте языка Ада прописано то, какие ошибки могут возникать, и какой должен быть механизм обработки соответствующих ошибок.
В стандарте языка Ада прописано то, какие ошибки могут возникать, и какой должен быть механизм обработки соответствующих ошибок.
 +
 +
----
== Концепция строгой типизации ==
== Концепция строгой типизации ==
Строка 14: Строка 16:
Рассмотрим пример, когда задается тип данных с плавающей точкой, в котором указывается, сколько знаков после запятой следует учитывать. В Аде существует правило, которое гласит, что если программа откомпилировалась без ошибок, то именно такая точность будет у соответствующей переменной. Это лучше, чем если бы программа откомпилировалось без ошибок, но реальная точность переменной была бы ниже заявленной.
Рассмотрим пример, когда задается тип данных с плавающей точкой, в котором указывается, сколько знаков после запятой следует учитывать. В Аде существует правило, которое гласит, что если программа откомпилировалась без ошибок, то именно такая точность будет у соответствующей переменной. Это лучше, чем если бы программа откомпилировалось без ошибок, но реальная точность переменной была бы ниже заявленной.
Тип должен быть задан при определении данного объекта данных путем указания имени ранее определенного типа. Для всех операций должен быть определен типы параметров и результаты, если это функции, также при помощи указания имени ранее определенных типов. При вызове любой операции проверяется соответствие типов фактический параметров операции для формальных параметров. Присваивание также считается операцией. Все типы определяются статически, при компиляции все известно, неявного преобразования типов нет. Эти правила не имеют исключений.
Тип должен быть задан при определении данного объекта данных путем указания имени ранее определенного типа. Для всех операций должен быть определен типы параметров и результаты, если это функции, также при помощи указания имени ранее определенных типов. При вызове любой операции проверяется соответствие типов фактический параметров операции для формальных параметров. Присваивание также считается операцией. Все типы определяются статически, при компиляции все известно, неявного преобразования типов нет. Эти правила не имеют исключений.
 +
 +
----
== Пример программы про фрукты, яблоки и апельсины ==
== Пример программы про фрукты, яблоки и апельсины ==
Строка 20: Строка 24:
При соблюдении некоторых ограничений можно использовать тип данных в не своей роли, но это нужно сказать явно(явное преобразование типов). Преобразования типов возможны между родственными типами. Есть универсальный целый тип – константы. Константы могут быть неявно преобразованы к другому типу. Неявно преобразовать целую константу можно только к целому типу.
При соблюдении некоторых ограничений можно использовать тип данных в не своей роли, но это нужно сказать явно(явное преобразование типов). Преобразования типов возможны между родственными типами. Есть универсальный целый тип – константы. Константы могут быть неявно преобразованы к другому типу. Неявно преобразовать целую константу можно только к целому типу.
В Аде существует пакет, который называется Standard, в котором определены такие вещи, как тип boolean, тип integer и тд, которые описаны так же, как и любые пользовательские типы.
В Аде существует пакет, который называется Standard, в котором определены такие вещи, как тип boolean, тип integer и тд, которые описаны так же, как и любые пользовательские типы.
 +
 +
----
== Подтипы ==
== Подтипы ==
Допустим, что мы пишем автопилот для чего-то, что летает. У этой летающей штуки есть скорость. Пусть она будет плавающим типом. Конструктивно она может перемещаться от 0 до 500 м/c. Но в разумных пределах лучше летать со скоростью до 250м/c, которая будет безопасной скоростью. С помощью конструкции subtype можно определить ограничения на множества значения уже существующего типа скорость. Допустим, что существует функция, которая возвращает текущую скорость. Скорость должна быть безопасной, поэтому возвращает она подтип безопасная скорость. Если в момент, когда вызывают эту функцию, она возвращает значение, которые не входит в множество безопасной скорости, то возбуждается предопределенное исключительная ситуация. Проверка значений подтипов происходит во время выполнения задачи.
Допустим, что мы пишем автопилот для чего-то, что летает. У этой летающей штуки есть скорость. Пусть она будет плавающим типом. Конструктивно она может перемещаться от 0 до 500 м/c. Но в разумных пределах лучше летать со скоростью до 250м/c, которая будет безопасной скоростью. С помощью конструкции subtype можно определить ограничения на множества значения уже существующего типа скорость. Допустим, что существует функция, которая возвращает текущую скорость. Скорость должна быть безопасной, поэтому возвращает она подтип безопасная скорость. Если в момент, когда вызывают эту функцию, она возвращает значение, которые не входит в множество безопасной скорости, то возбуждается предопределенное исключительная ситуация. Проверка значений подтипов происходит во время выполнения задачи.
 +
 +
----
== Массивы ==
== Массивы ==

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Шаблоны, использованные на этой странице:

Личные инструменты
Разделы