- •Тема 1. Технология программирования. Основные понятия и подходы
- •1.1 Технология программирования и основные этапы ее развития
- •1.1 Проблемы разработки сложных программных систем (пс)
- •1.2 Блочно-иерархический подход к созданию сложных систем (сс)
- •1.4 Жизненный цикл и этапы разработки программного обеспечения
- •1.5 Оценка качества процессов создания программного обеспечения
- •Тема 2. Основы теории программирования
- •2.1 Понятие технологичности программного обеспечения
- •Диалоговые программы
- •2.2 Модули и их свойства
- •2.3 Основные понятия программирования. Средства описания структурных алгоритмов
- •Описание алгоритма с помощью естественного языка
- •Описание алгоритма с помощью блок-схемы
- •Описание алгоритма с помощью алгоритмических языков
- •2.4 Стиль оформления программы
- •Тема 3. Программирование на языке высокого уровня Pascal
- •3.1 Введение
- •3.2 Основные понятия языка Pascal
- •3.3 Операторы ввода-вывода данных
- •Простые типы данных
- •Структурированные типы данных
- •Работа с текстовыми файлами
- •Другие типы данных
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.6 Операторы языка Простые операторы
- •Структурные операторы
- •Работа с массивами
- •3.6 Подпрограммы
- •Процедуры
- •Функции
- •Рекурсивные подпрограммы
- •Параметры и аргументы
- •Стандартные процедуры и функции
- •3.7 Списки: основные виды и способы реализации
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
- •Задания для студентов заочной формы обучения по курсу «Технология программирования (ТеПр)»
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
Рекурсивные подпрограммы
В ряде случаев требуется, чтобы подпрограмма вызывала сама себя. Такой способ вызова называется рекурсией. Рекурсия полезна в тех случаях, когда основную задачу можно разделить на подзадачи, каждая из которых реализуется по алгоритму, совпадающему с основным.
Пример . Вычисление факториала .
function Fact(n: integer): integer;
begin
if n<=0 then Fact:=1 else Fact:=n*Fact(n-1);
end ;
Параметры и аргументы
Параметры являются элементами подпрограммы и используются при описании ее алгоритма. Аргументыуказываются при вызове подпрограммы и замещают параметры при выполнении подпрограммы. Параметры могут быть любого типа, включая структурированный. Существуют следующие виды параметров:
значение;
константа;
переменная;
нетипизированная константа и переменная.
Группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var или const и за которыми следует указание их типа, называются параметрами-значе-ниями. Например, a и b являются параметрами-значениями в следующем описании: Procedure P1 ( a : real ; b : integer );
Параметр-значение обрабатывается как локальная по отношению к подпрограмме переменная. В подпрограмме значения таких параметров можно изменять, однако эти изменения не влияют на значения соответствующих им аргументов, которые при выполнении подпрограммы были подставлены вместо фактических параметров-значений.
Группа параметров, перед которыми в заголовке подпрограммы стоит слове const и за которыми следует описание их типа, называются параметрами-константами. Например, в описании procedure P2 (const x, y: integer;); x и y являются параметрами-константами. В теле подпрограммы значение параметра-константы изменить нельзя. Те параметры, изменение которых в подпрограмме нежелательно и должно быть запрещено, можно оформить как параметры-константы. Кроме того, для параметров-констант строковых и структурных типов компилятор создает более эффективный код.
Группа параметров, перед которыми в заголовке подпрограммы стоит слово var и за которыми следует описание их типа, называются параметрами-переменными. Например, параметрами-переменными являются d и f в следующем описании: function F1(var d, f: real; q: integer ) : real ;
Параметр-переменная используется в случаях, когда значение должно быть передано из подпрограммы в вызывающий блок . В этом случае при вызове подпрограммы параметр-переменная замещается аргументом, и любые изменения формального параметра отражаются на аргументе. Таким способом можно вернуть результаты из подпрограммы по окончанию ее работы.
Для параметров-констант и параметров-переменных можно не указывать их тип, в этом случае они считаютсянетипизированными. Подставляемые на их место аргументы могут быть любого типа, и программист должен самостоятельно интерпретировать типы параметров в теле подпрограммы. Примером задания нетипизированных параметров-констант и параметров-переменных является следующее описание: function F2(var e1; const t2): integer ;
Отметим, что группы параметров в описании подпрограммы разделяются точкой с запятой.
