Основы алгоритмизации и программирования. Часть третья. Структурированные типы данных. Асламова В.С - 9 стр.

UptoLike

17
3. Если переменная, используемая в процедуре, должна сохранить
своё значение до следующего вызова этой процедуры, то такую переменную
следует описать во внешнем блоке, содержащем данную процедуру.
Локализация переменных даёт программисту большую свободу в
выборе идентификаторов. Так, если две процедуры А и Б полностью
отделены друг от друга (т. е. не вложены одна
в другую), то идентификаторы
в них могут быть выбраны совершенно произвольно, в частности, могут
повторяться. В этом случае совпадающим идентификаторам соответствуют
разные области памяти, совершенно друг с другом не связанные.
Если один и тот же идентификатор описан в блоке Б и второй раз
описан во вложенном в Б блоке С,
то надо помнить, что эти два одинаковых
идентификатора соответствуют разным
ячейкам памяти.
Если локальная и глобальная переменная принадлежат к одному и
тому же сложному типу, то этот тип надо описывать в разделе TYPE, а сами
переменные описывать через этот общий тип.
Пример:
program T1(output);
type AB=array [1 . .3] of real;
var A:AB;
procedure Q (var B:AB; x:real);
begin ……….. end;
. . . . . . . . . . . . . . . . . . . . . . . .
end.
В этом примере переменные А и В описаны через общий тип АВ. Если
же локальная и глобальная переменные описаны одинаково, но не через
общий тип, то компилятор можетне понять”, что эти переменные
принадлежат одному общему типу и выдаёт сообщение о несоответствии
типов: TYPE MISMATCH.
Пример:
program T2(output);
var A:array [1 . .3] of real;
procedure Q;
var B:array [1 . .3] of real;
. . . . . . . . . . . . . . . . . . . . . . . . . .
end.
В этом примере переменные А и Водинаковые массивы, т.е. типы
этих переменных одинаковы, но компилятор тем не менеене считает ”, что
18
А и Впринадлежат одному типу. Это происходит изза того, что описание
массивов дано в разных блоках.
Подпрограмма функция
Подпрограмма функцияпредставляет собой группу операторов, в
результате выполнения которых вычисляется одно значение, которое
присваивается имени функции, именно это значение возвращается в
основную программу.
Имея один и тот же смысл и аналогичную структуру, процедуры и
функции различаются назначением
и способом их использования. Смысл
функции заключается в том, чтобы определить алгоритм получения нового
значения некоторого простого или ссылочного типа. В этом смысле функции
подобны выражениям, которые также вычисляют значения.
Описание функции:
Заголовок функции
:
Всё, что было сказано относительно процедур, справедливо и для
функций со следующими поправками:
1. В теле функции имени функции должно присваиваться одно
значение. Поэтому понятие оператора присваивания значения расширяется:
И
мя
функции
function
Список
формальных
параметров
тип значения
функции
:
Блок
Директива
Заголовок
функции
;
;
      3.   Если переменная, используемая в процедуре, должна сохранить       А и В – принадлежат одному типу. Это происходит из–за того, что описание
своё значение до следующего вызова этой процедуры, то такую переменную       массивов дано в разных блоках.
следует описать во внешнем блоке, содержащем данную процедуру.
       Локализация переменных даёт программисту большую свободу в                                    Подпрограмма функция
выборе идентификаторов. Так, если две процедуры А и Б полностью
отделены друг от друга (т. е. не вложены одна в другую), то идентификаторы         Подпрограмма функция – представляет собой группу операторов, в
в них могут быть выбраны совершенно произвольно, в частности, могут          результате выполнения которых вычисляется одно значение, которое
повторяться. В этом случае совпадающим идентификаторам соответствуют         присваивается имени функции, именно это значение возвращается в
разные области памяти, совершенно друг с другом не связанные.                основную программу.
       Если один и тот же идентификатор описан в блоке Б и второй раз              Имея один и тот же смысл и аналогичную структуру, процедуры и
описан во вложенном в Б блоке С, то надо помнить, что эти два одинаковых     функции различаются назначением и способом их использования. Смысл
идентификатора соответствуют разным ячейкам памяти.                          функции заключается в том, чтобы определить алгоритм получения нового
       Если локальная и глобальная переменная принадлежат к одному и         значения некоторого простого или ссылочного типа. В этом смысле функции
тому же сложному типу, то этот тип надо описывать в разделе TYPE, а сами     подобны выражениям, которые также вычисляют значения.
переменные описывать через этот общий тип.                                            Описание функции:
           Пример:
    program T1(output);                                                               Заголовок
    type AB=array [1 . .3] of real;                                                    функции
                                                                                                          ;                Блок            ;
    var A:AB;
    procedure Q (var B:AB; x:real);
                                                                                                                      Директива
    begin        .. end;
     ........... . ............
    end.
      В этом примере переменные А и В описаны через общий тип АВ. Если                Заголовок функции:
же локальная и глобальная переменные описаны одинаково, но не через
общий тип, то компилятор может “не понять”, что эти переменные                                                                        тип значения
                                                                                                Имя
принадлежат одному общему типу и выдаёт сообщение о несоответствии              function      функции                             :   функции
типов: TYPE MISMATCH.

           Пример:                                                                                              Список
    program T2(output);                                                                                       формальных
    var A:array [1 . .3] of real;                                                                             параметров
    procedure Q;
    var B:array [1 . .3] of real;
    ..... .....................                                                   Всё, что было сказано относительно процедур, справедливо и для
    end.                                                                     функций со следующими поправками:
      В этом примере переменные А и В – одинаковые массивы, т.е. типы            1. В теле функции имени функции должно присваиваться одно
этих переменных одинаковы, но компилятор тем не менее “не считает ”, что     значение. Поэтому понятие оператора присваивания значения расширяется:
                                      17                                                                       18