2013-04-05 19 views
9

Czy ktoś może mi wyjaśnić różnicę między "procedurą" i "funkcją" Ada?Funkcja Ada vs Procedura

+2

Jest to elementarne pytanie, na które można odpowiedzieć za pomocą dowolnego odniesienia do Ada. –

+0

@ KeeThompson: Dzięki za odpowiedź. Niestety, mam 24 godziny na zrobienie czegokolwiek :). –

+0

Funkcja zwraca wartość, a procedura nie. Na przykład język Pascala ma to samo. Języki podobne do C mają tylko funkcje, które mogą udawać, że są procedurami, zwracając wartość pustą. BTW, 24h to wystarczająco dużo, żeby się tego nauczyć :) – Archie

Odpowiedz

13

Język Ada nie jest bardzo różny w porównaniu z innymi imperatywnymi językami typu C. Składnia może jednak wyglądać bardzo dziwnie i przytłaczać różnymi stwierdzeniami, ale dzieje się tak głównie z powodu bardzo bogatego statycznego systemu pisania i cech bezpośrednio dostarczanych przez język (jak na przykład zadania), które inne języki zapewniają jako biblioteki boczne.

W przeciwieństwie do większości języków podobnych do C, Ada rozróżnia procedury proceduralne i funkcjonalne. W tym sensie funkcja jest bardzo podobna do funkcji matematycznej, która przyjmuje argumenty (lub żadne) i zwraca wartość, a zatem jest używana w wyrażeniach. Procedury nie zwracają żadnych wartości i nie można ich używać w wyrażeniach. Język pascal zachowuje takie samo rozróżnienie między funkcjami i procedurami. Języki podobne do C wybrały funkcję, która może być używana poza wyrażeniami (zwracana wartość jest w tym przypadku ignorowana) lub zwracana jest wartość pusta, aby działała jak procedura.

+0

Czy procedury Ady modyfikują zmienne (zmieniają stan)? – MNRC