- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 9.4
- •9.5. Массивы – параметры процедур и функций
- •True False True False Рис. 9.7
- •True False True False True False Рис 9.9
- •9.6. Рекурсивные процедуры и функции
- •True False Рис. 9.10 True False
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
Как заголовок процедуры, так и заголовок функции может содержать список формальных параметров, который имеет следующий формат:
(<описание параметра 1>; < описание параметра 2>;…
< описание параметра n>) .
Описание параметра в списке зависит от способа передачи параметра и возможны следующие категории формальных параметров:
параметры – значения:
<имя параметра>: <тип параметра>;
параметры – переменные:
Var<имя параметра>: <тип параметра>;
параметры – константы:
Const<имя параметра>: <тип параметра>;
параметры без типа:
<имя параметра>;
в конце описания любого формального параметра, кроме последнего ставится точка с запятой.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме, т.е. количество параметров, их последовательность и типы. Активизация подпрограммы осуществляется с помощью операции вызова подпрограммы, которая имеет следующий синтаксис:
<имя процедуры>(< список фактических параметров >); в случае процедуры;
< имя переменной >:=<имя функции>(< список фактических параметров >); в случае функций вызов функции должен присутствовать в выражении как операнд.
Список фактических параметров содержит список выражений, разделенных запятыми, типы которых позиционно соответствуют типам формальных параметров, указанных в заголовке подпрограммы.
Рассмотрим способы передачи параметров.
Параметры – значения.
Пусть имеется процедура с заголовком:
Procedure Proc1(par1: type1; par2,par3: type2);
В этом случае в ячейку памяти формального параметра передается копия фактического параметра и обратно не возвращается (рис. 9.1).
Рис.
9.1
Параметры – значения являются входными параметрами подпрограммы. В качестве фактического параметра могут использоваться как переменные, так и константы.
Параметры – переменные.
Пусть имеется процедура с заголовком:
Procedure Proc1(Var par1, par2: type1; Var par3: type2);
В этом случае подпрограмме передается адрес фактического параметра. По имеющемуся адресу изменяется содержимое ячеек памяти фактического параметра, т.е. выполняется возврат значения в вызывающую программу. (рис. 9.2).
Рис.
9.2
Параметры – переменные являются выходными параметрами подпрограммы. В качестве фактического параметра могут использоваться только переменные, тип которых совместим с типом того соответствующего формального параметра.
Параметры – константы.
Пусть имеется процедура с заголовком:
Procedure Proc1(Const par1, par2: type1; Const par3: type2);
В этом случае подпрограмме передается адрес фактического параметра. По имеющемуся адресу разрешено только брать значение фактического параметра, а изменять его значение запрещено (рис. 9.3).
Рис.
9.3
В качестве фактического параметра могут использоваться как переменные, так и константы, тип которых совместим с типом того соответствующего формального параметра. Запрещается присваивать значения параметрам – константам и передавать такие параметры другим подпрограммам в качестве фактических параметров.
Параметры без типа.
Бестиповые параметры могут передаваться только по адресу, т. е. как параметры – переменные или параметры – константы. Для параметра без типа в списке формальных параметров тип в описании не указывается.
Пусть имеется процедура с заголовком:
Procedure Proc1(Var par1, par2; Const par3);
Вследствие отсутствия типа, нельзя использовать бестиповые параметры так же, как типизированные параметры. Перед использованием параметра требуется параметр без типа привести к какому-либо типу.
Операция приведения типа имеет следующий вид:
<имя типа>(<имя переменной>) .
Например,
Var a: integer;
R: real;
…………..
R:= real(a) /2;
…………..
где real(a) – операция явного приведения целочисленной переменной в вещественный тип.