Формальные и фактические параметры Вызов по ссылке и значению.

Презентация:



Advertisements
Похожие презентации
Подпрограммы: процедуры и функции Информатика. 1. Подпрограммы При решении различных задач часто возникает необходимость проводить вычисления по одним.
Advertisements

Учитель НСШ Кумакшев А.Н, учитель БСШ2 Вахмистров Г.Г. Элективный курс по информатике «Процедуры и функции на языке Pascal».
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Подпрограммы в Паскале Подпрограммы в Паскале (Технология нисходящего программирования)
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм.
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Процедуры и функции Вспомогательные алгоритмы (подпрограммы) создаются тогда, когда возникает необходимость в многократном использовании одного и того.
Шутилина Л.А. Процедуры в Turbo Pascal ( часть 1: процедуры с параметрами)
Особенности использования процедур и функций Для любознательных юных программистов.
Программирование на языке Паскаль Тема 13. Процедуры Тема 14. Функции.
Язык программирования Pascal Процедуры и функции А. Жидков.
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ Паскаль НАЧАЛА ПРОГРАММИРОВАНИЯ.
Все процедуры и функции делятся на стандартные встроенные определенные пользователем. Встроенные и стандартные вызываются без предварительного описания.
1 ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. ПОДПРОГРАММЫ И МОДУЛИ ПРИ РЕШЕНИИ ЗАДАЧ ХИМИЧЕСКОЙ ТЕХНОЛОГИИ. Лекция 2. Подпрограммы План 1.Процедуры и функции. 2.Описание.
Подпрограммы. Функции и процедуры. Кулебякин В.В.
Подпрограммы в Паскале Подпрограммы в Паскале (Технология нисходящего программирования)
Процедуры и функции в Паскале. Рекурсия. Подпрограммы Часто в задаче требуется повторить определенную последовательность операторов в разных частях программы.
© М.Е.Макарова
Подпрограммы Процедуры и функции. Процедуры Формат описания процедуры: procedure (формальные параметры); begin end;
Транксрипт:

Формальные и фактические параметры Вызов по ссылке и значению

Формальные параметры Указываются в заголовке подпрограммы, могут быть: параметры значения (эти параметры в основной программе подпрограммой не меняются ); параметры - переменные ( эти параметры подпрограмма может изменить в основной программе ); параметры-константы ( используются только в версии 7.0); параметры-процедуры и параметры-функции (т.е. процедурного типа).

Описание формальных параметров Для каждого формального параметра следует указать имя и, как правило, тип. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. function Max( A: array[ ] of real ): real; type tArr =array [ ] of real; function Max ( A: tArr ) : real;

Вызов по ссылке и по значению Через список параметров в подпрограмму передаются исходные данные и возвращается результат. При этом предусмотрено два принципиально отличающихся механизма передачи параметров - по значению и по ссылке. Синтаксически эти два способа отличаются употреблением слова Var перед соответствующей переменной в заголовке подпрограммы. Если это слово имеется, то переменная передается по ссылке, а если нет - по значению.

Вызов переменной по значению При вызове по значению в подпрограмме создаются переменные в соответствии с объявлениями в заголовке подпрограммы. Эти переменные существуют только на время выполнения подпрограммы. Передачу данных по значению можно использовать только для передачи данных в подпрограмму, но не для получения от нее результатов.

Procedure SetDate (Year, Month, Day : Word); SetDate (MyYear, MyMonth, MyDay); где MyYear, MyMonth, MyDay - переменные типа Word, которые описаны в основной программе и должны иметь при обращении к процедуре определенные значения. При вызове процедуры эти значения присваиваются внутренним переменным процедуры Year, Month, Day. SetDate (MyYear+1, MyMonth div 2, MyDay); при вызове процедуры используются арифметические выражения, которые вычисляются при вызове. В подпрограмму поступает результат вычислений. SetDate (1999, 1, 31); где в подпрограмму передаются значения констант.

Вызов переменных по ссылке При вызове по ссылке в подпрограмме память под передаваемые переменные не отводится. Основная программа передает в подпрограмму не значение переменной, а ссылку на место в памяти основной программы, где расположена некоторая переменная. Подпрограмма, производя некоторые действия с этой переменной, в действительности производит действия с переменной основной программы, поэтому после выполнения процедуры изменения, совершенные с переменными основной программы, сохраняются. Этот механизм используется для получения от подпрограммы результатов ее выполнения.

Пример вызова по ссылке Procedure GetDate (Var Year, Month, Day : Word); Она имеет три переменные, передаваемые по ссылке. Если мы аналогично предыдущему случаю, вызовем эту процедуру из основной программы командой: Procedure GetDate (MyYear, MyMonth, MyDay); Процедура разместит свои переменные Year, Month, Day в тех же ячейках памяти, что и переменные основной программы MyYear, MyMonth, MyDay. После завершения подпрограммы эти переменные сохраняют полученные в процедуре значения. Для получения от операционной системы даты используется процедура, имеющая заголовок:

Вызов параметров-констант Объявление параметра-константы в заголовке подпрограмм имеет вид const : Попытка изменить данный параметр в подпрограмме обнаруживается компилятором как ошибка. При вызове из основной программы подпрограммы с таким параметром могут использоваться те же способы, что и при передачи параметров по значению: константа может быть задана в явном виде; может быть указана переменная или выражение совместимого с константой типа. Например, Procedure Primer (Const x : byte);

Примеры Заголовки подпрограмм: procedure Inp ( Max, Min: real ; N: Word ); function Mult (X, Y: integer): real; Вызов подпрограмм: Inp(Abs (Z), - Abs (T), 2 * K); M:=Mult(X + Y, X - Y); MA:=MAX( B, 5 );

Решение задачи (вариант 1) Program Variant1; Var X : real; Procedure writeX; Var x : real; Begin write(x) End; Begin X := Pi; writeX End.

Решение задачи (вариант 2) Program Variant2; Var X : real; Procedure writeX; Begin write(x) End; Begin X := Pi; writeX End.