7.3 вызов подпрограммы и согласование параметров.Вызов подпрограммы вызывает выполнение тела соответствующей подпрограммы. Вызов подпрограммы - это либо оператор вызова процедуры, либо вызов функции. При вызове подпрограммы происходит связывание фактических и формальных параметров. В Аде такое связывание осуществляется двумя, способами: - неявно, когда соответствие устанавливается порядком написания фактических параметров ( позиционное связывание);
- - позиционное - - именованное - явно, когда фактические параметры приводятся вместе с именами формальных параметров в произвольном порядке ( именованное связывание ): SUM (VA, VB, RES); SUM (В => VB, C=> RES, A => VA); D Примеры вызова подпрограмм из 7.1: Model_Train; Cat( X); Zt_lsk( 62.8, Rez); Sound( G, E ); Sound( Y = > E, X = > G ); Crown (Stack_Size); Print_FF( Coutn ); - - второй параметр используется по умолчанию Print_FF( ATF, 12 ); Res: = Lotto ; MA : = MB - MC ; Z : = D( Vec_A, alfa ) + Vec_B; Независимо от способа связывания тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра. Согласование параметров при вызове подпрограммы - это согласование формальных и фактических параметров. Согласование параметров включает: • согласование типов ; • согласование вида; • согласование подтипа; • полное согласование. Некоторые правила согласования параметров : • тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра; • фактический параметр, сопоставляемый с формальным, имеющим вид in out или out должен быть именем переменной: • скалярный формальный параметр должен удовлетворять всем уточнениям диапазонов типов, причем для вида in, in out - перед вызовом подпрограммы, а для вида out, in out - в момент окончания выполнения подпрограммы;если спецификация параметров 9 — Корочкин А. В. 66 Ада 95. Введение в программирование Глава 7. Подпрограммы 67
включает выражение по умолчанию и имеет вид in , то при вызове подпрограммы не обязательно сопоставление для такого параметра; |
| Оглавление| |