- •Волгоград 2006
- •3. Двумерные массивы (матрицы) 24
- •3.1. Объявление двумерных массивов 24
- •3.2. Решение задач с использованием двумерных массивов 25
- •3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями 39
- •1. Общие понятия
- •2. Одномерные массивы (векторы)
- •2.1. Объявление одномерных массивов
- •2.2. Типовые алгоритмы обработки одномерных массивов
- •2.2.1. Ввод одномерного массива в память компьютера
- •2.2.2. Вывод массива на экран
- •2.2.3. Подсчёт суммы, произведения, количества элементов одномерного массива, удовлетворяющих заданному условию
- •2.2.4 Поиск значений среднего арифметического и среднего геометрического элементов массива
- •2.2.5. Обработка элементов одномерного массива, имеющих чётные индексы
- •2.2.6. Формирование нового одномерного массива из элементов другого одномерного массива
- •2.2.7. Нахождение максимального (минимального) элемента одномерного массива
- •2.2.9. Сортировка элементов массива
- •3. Двумерные массивы (матрицы)
- •3.1. Объявление двумерных массивов
- •3.2. Решение задач с использованием двумерных массивов
- •3.2.1. Ввод и вывод на экран двумерного массива
- •3.2.2. Алгоритмы обработки матрицы в целом
- •3.2.3. Алгоритмы обработки отдельных строк или столбцов матрицы
- •3.2.4. Алгоритмы обработки элементов каждой строки матрицы
- •3.2.4. Алгоритмы обработки элементов каждого столбца матрицы
- •3.2.5. Обработка элементов матрицы, расположенных в четных и нечетных строках или столбцах
- •3.2.5. Обработка элементов главной диагонали
- •3.2.6. Обработка элементов побочной диагонали
- •3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями
- •3.2.8. Транспонирование матрицы
- •Иерархическая структура программы
- •Структура программы, использующей подпрограммы
- •Локальные и глобальные идентификаторы
- •Формальные и фактические параметры
- •Способы передачи параметров в подпрограммы
- •Подпрограммы-процедуры Описание процедуры
- •Вызов процедуры
- •Примеры использования подпрограмм-процедур
- •Функции Описание функции
- •Вызов функции
- •Примеры использования подпрограмм-функций
- •Пример решения задачи с использованием подпрограмм
- •Список рекомендуемой литературы
- •Обработка массивов
- •400131 Волгоград, пр. Ленина, 28.
- •400131 Волгоград, ул. Советская,35.
Формальные и фактические параметры
Для обмена информацией между модулями существует механизм передачи входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего модуля в подпрограмму (это исходные данные для подпрограммы), а выходными - передающиеся из подпрограммы в вызывающий модуль (это результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных и выходных данных, которые носят название фактических параметров. В подпрограмме имеется набор рабочих переменных, соответствующий набору фактических параметров, которые носят название формальных параметров. В отличие от набора фактических параметров, который при каждом вызове подпрограммы может изменяться, набор формальных параметров – единственный и описывается только один раз при определении алгоритма подпрограммы. Формальные параметры – это локальные переменные, которые получают значения фактических параметров в момент вызова подпрограммы.
Наборы фактических и формальных параметров должны соответствовать друг другу:
по количеству;
по типу;
по порядку следования;
по способу передачи.
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее. Но, тем не менее, рекомендуется давать формальным и фактическим параметрам разные имена для лучшего понимания алгоритма работы программы при многократном вызове подпрограмм с различными наборами фактических параметров.
Способы передачи параметров в подпрограммы
В языке программирования Turbo Pascal существует несколько способов передачи параметров в подпрограммы. Выбор способа передачи зависит от того, являются ли предаваемые значения входными или выходными параметрами.
Различают передачу параметров:
по значению;
по ссылке;
По значению в подпрограмму передают те значения фактических параметров, которые являются входными данными для подпрограммы и при этом являются простыми значениями. Такие параметры считаются параметрами-значениями.
При передаче по значению значения фактических параметров копируются в область памяти, отводимую под подпрограмму (стек), на место соответствующих формальных параметров. Формальный параметр в этом случае – обычная локальная переменная вызываемой подпрограммы. В качестве начального значения формальному параметру присваивается текущее значение соответствующего фактического параметра. В качестве фактических параметров при этом способе передачи можно использовать константы, имена переменных, значение которых определено, и простые выражения.
Формальные параметры-значения могут изменяться в подпрограмме наряду с прочими переменными, используемыми в подпрограмме, но эти изменения будут строго локальными и никак не отразятся на значениях соответствующих фактических параметров.
По-другому организуется передача параметров по ссылке. В отличие от передачи параметров по значению, при передаче по ссылке в области памяти подпрограммы (в стеке) копии фактического параметра не создается. При передаче данных формальный параметр получает адрес соответствующего фактического параметра (т.е. ссылку на него). Поэтому любая операция над формальным параметром в этом случае осуществляется непосредственно над соответствующим фактическим параметром.
По ссылке передаются два вида параметров: параметры-константы и параметры-переменные.
Параметры-константы используются, когда входными данными являются сложные структурированные переменные (например, массивы). Если передавать такие параметры по значению, то используется слишком много памяти из-за дублирования данных (хотя операция копирования выполняется быстрее, чем передача адреса). Нужно помнить о том, что изменение формального параметра-константы в подпрограмме запрещено (это контролирует компилятор). Параметр-константа в списке формальных параметров предваряется ключевым словом Const (от англ. Constant - постоянная).
Параметры-переменные используются для передачи выходных значений подпрограмм-процедур, т.к. в этом случае изменение формального параметра-переменной приводит к изменению соответствующего фактического параметра. Параметр-переменная в списке формальных параметров предваряется ключевым словом Var (от англ. Variable - переменная). Передача параметра-переменной – это достаточно опасный способ передачи данных, т.к. любая ошибка программиста может привести к искажению данных.
Замечание. Переменные файлового типа всегда передаются как параметры-переменные.
При передаче по ссылке в качестве фактических параметров можно использовать только переменные.