Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture1_PAS.doc
Скачиваний:
19
Добавлен:
08.12.2018
Размер:
60.93 Кб
Скачать

Технология программирования (pascal)

Тема:

IV. Парадигмы программирования

    1. 4. Подпрограммы

4.7. Переменные, обрабатываемые при вызове подпрограмм:

1. фактические параметры, подставленные на место формальных параметров-переменных;

2. переменные, поименованные именами формальных параметров-значений, получившие значения фактических выражений; существуют только внутри подпрограмм;

3. локальные переменные, описанные внутри данной подпрограммы; используются как рабочие переменные и существуют только внутри подпрограммы; начальное значение этих переменных неопределенное;

4. глобальные переменные, несовпадающие по имени с именами локальных переменных и формальных параметров;

5. только в функциях формируется значение переменной-результата функции, совпадающей по имени с именем функции и использующейся как операнд в выражении.

Фактические параметры (переменные, константы, выражения) и глобальные переменные могут использоваться как входные данные подпрограмм.

Фактические параметры-переменные, глобальные переменные и переменная-результат функции могут использоваться как выходные данные подпрограмм.

Следует отметить, что использование глобальных данных в подпрограммах считается нежелательным стилем программирования, особенно при разработке больших программ.

4.8. Местоположение подпрограмм в тексте и вне текста программы.

4.8.1. Расположение подпрограммы в тексте программы.

Подпрограммы могут располагаться в виде отдельного раздела внутри описательной части текста программы.

4.8.2. Размещение подпрограммы в файле.

Размещение подпрограммы возможно в отдельном текстовом файле, который может иметь расширение PAS или INC. В этом случае текст подпрограммы включается в текст программы директивой компилятора {$I имя файла}.

4.8.3. Размещение подпрограммы в библиотеке (модуле).

Подпрограмма может находиться в библиотеке (модуле) в виде машинных кодов. Существует возможность для пользователя создавать собственные библиотеки. Тексты библиотек представляют собой программные единицы, называемые модулями. Модули после трансляции располагаются в файлах с расширением TPU.

4.9. Ближний и дальний вызовы подпрограмм.

4.9.1. Ближний вызов подпрограмм – это вызов в пределах 64 К, т. е. в пределах одного сегмента кода, который выделяется основной программе и каждому исполняемому в ней модулю (экономит 1 байт памяти и несколько микросекунд).

Если подпрограмма располагается внутри текста программы или во включаемом файле, то она может быть оттранслирована с параметром транслятора ближний вызов, который либо устанавливается по умолчанию в опциях турбо-среды, либо задается как параметр компилятора {$F-} в начале текста подпрограммы.

4.9.2. Дальний вызов подпрограмм – это вызов из любого сегмента.

Если подпрограмма располагается в модуле или, независимо от расположения текста, используется в качестве фактического параметра при обращении к другой подпрограмме, то текст подпрограммы должен быть оттранслирован с параметром транслятора дальний вызов, который либо устанавливается в опциях турбо-среды, либо задается как параметр компилятора {$F+} в начале текста подпрограммы.

4.10. Пример использования подпрограммы.

1. Постановка задачи.

Вычислить число сочетаний из n по m (C).

где F – факториал заданного числа, а число n>=m

2. Входные данные.

Входное данное для этого алгоритма является натуральным числом.

3. Выходные данные.

Результат – это натуральное число, являющееся факториалом входного данного.

4. Метод решения задачи.

Основным в решении задачи является вычисление факториала, которое целесообразно реализовать в виде вспомогательного алгоритма. Так как результат – это одно данное простого типа, то этот вспомогательный алгоритм целесообразно оформить в виде функции, переменная-результат которой совпадает с именем функции.

5. Математическая модель вычисления факториала.

Постановку задачи можно записать как функционал F(k)=k!, определяющийся следующим образом: F(0) = 1, F(k) = 1*2*3*...*k, при k, принадлежащем множеству натуральных чисел.

6. Блок-схема алгоритма функции вычисления факториала.

В данном случае математическая модель может быть реализована в виде разветвляющегося алгоритма с условием k=0, где по ветви да располагается оператор присваивания F:=1, а по ветви нет располагаются действия по вычислению F(k) = 1*2*3*...*k – эти действия представляют собой алгоритм накопления произведения.

Самостоятельно!

7. Реализация алгоритма функции вычисления факториала на языке PASCAL.

Самостоятельно!

При каких значениях аргумента использование этой функции имеет смысл?

8. Текст программы вычисления числа сочетаний.

Допустим, что подпрограмма вычисления факториала располагается в отдельном текстовом файле с именем FACT.INC, тогда в разделе процедур и функций программы на месте соответствующей подпрограммы будет стоять директива транслятору для подключения текстового файла

Самостоятельно!

В данном случае контроль за правильностью ввода исходных данных должен быть возложен на программу, что осуществляется с помощью директив транслятору: {$I-} и {$I+}. Необходимо помнить, что при отключенной системы прерываний на правильность ввода формируется значение системной переменной IOResult (результат выполнения операции ввода-вывода), ненулевое значение которой говорит об ошибке ввода.

4.11. Рекурсивные подпрограммы.

Рекурсивное обращение к подпрограмме означает, что при выполнении подпрограмма вызывает сама себя.

Различают два вида рекурсии:

  • прямая рекурсия – это, когда в подпрограмме явно указан вызов самой себя;

  • косвенная рекурсия – это, когда при выполнении подпрограммы вызывается другая подпрограмма, а она, в свою очередь, вызывает первую подпрограмму.

Соседние файлы в предмете Программирование на Pascal