2013-04-05 4 views
9

Может ли кто-нибудь объяснить мне разницу между «процедурой» Ады и функцией?Ada Function vs Процедура

+2

Это элементарный вопрос, на который может ответить любая ссылка Ada. –

+0

@ KeithThompson: Спасибо за ответ. К сожалению, у меня есть 24 часа, чтобы сделать что угодно :). –

+0

Ну, функция возвращает значение, а процедура - нет. Язык Паскаля, например, имеет то же самое. C-подобные языки имеют только функции, которые могут притворяться процедурами, возвращая значение void. BTW, 24h - это достаточно, чтобы выучить этот материал :) – Archie

ответ

13

Язык Ada не очень отличается от других императивных языков C-типа. Синтаксис может показаться очень странным и переполненным различными операторами, но это происходит из-за очень богатой статической системы набора текста и функций, непосредственно предоставляемых языком (например, таких как задачи), которые другие языки предоставляют в качестве боковых библиотек.

В отличие от большинства C-подобных языков, Ada различает процедурные и функциональные подпрограммы. В этом смысле функция очень важна как математическая функция, которая принимает аргументы (или none) и возвращает значение, и поэтому используется в выражениях. Процедуры не возвращают никаких значений и не могут использоваться в выражениях. Язык Pascal сохраняет одно и то же различие между функциями и процедурами. C-подобные языки выбрали только функции, которые могут использоваться внешними выражениями (возвращаемое значение в этом случае игнорируется) или возвращает значение void, чтобы действовать как процедура.

+0

Могут ли процедуры Ada изменять переменные (изменить состояние)? – MNRC

Смежные вопросы