Рекурсивные процедуры и функции - Структурирование программы
Подпрограмма, вызывающая саму себя, называется рекурсивной подпрограммой. При каждом новом обращении к подпрограмме параметры, которые она использует, размещаются в организованной особым образом области памяти, называемой программным стеком, причем параметры предыдущего обращения также сохраняются. Рекурсия часто бывает менее эффективной по времени и может вызвать переполнение стека.
Процедурные типы
В языке программирования Pascal имена процедур и функций можно использовать в качестве фактических параметров. С этой целью вводятся процедурные типы, которые позволяют указать, какой вид подпрограмм можно использовать в качестве параметра и с какими формальными параметрами должны быть эти подпрограммы.
Описание процедурного типа:
Type
Имя типа - procedure(список формальных параметров); имя типа - function(список формальных параметров):тип функции; var имя переменной: имя типа;
Примеры:
Type рrоg - procedure(var х, у: integer);
{процедура с двумя параметрами-переменными целого типа} fane = function(x:real):real;
{функция вещественного типа с одним параметром-значением}
Var р:рrоg; f:func;
Переменным процедурных типов можно присваивать в качестве значений имена соответствующих подпрограмм.
Имя переменной: = имя подпрограммы;
Процедурная переменная и имя подпрограммы должны быть совместимы для присваивания (т. е. должно быть одинаковое число формальных параметров, совпадающих по типам, функции, кроме того, должны иметь идентичный тип).
После такого присваивания имя переменной становится синонимом имени подпрограммы. Переменная процедурного типа используется при вызове подпрограммы: вместо имени подпрограммы указывается имя процедурной переменной: имя переменной (список фактических параметров).
Передаваемые подпрограммы не должны объявляться внутри других процедур и функций.
Пример:
Type
Рrоg = procedure(var x, y:integer); func = function(a:real):real; var p:prog; f:func;
X, y:integer; procedure swap(var x, y:integer); var z:integer; begin
Z:=x; x:=y; y:=z;
End;
Function tan (a:real):real; begin
Tan := sin(a)/ cos(a);
End;
Begin
Readln(x, y);
P:=swap;
F:=tan;
P(x, y);
Writeln(x, y);
Writeln(f(pi/4));
Readln;
End.
Процедурные переменные позволяют использовать одну и ту же подпрограмму для различной обработки данных.
Похожие статьи
-
Примеры операторов вызова процедур - Структурирование программы
T; {нет списка фактических параметров Summa(x, y,z); {x, y,z - фактические параметры; x: integer; у, z; real} a(z); {z - фактический параметр, z:d} При...
-
Описание и использование процедур и функций Подпрограмма - это часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная...
-
Пользователя - Структурирование программы
Для того, чтобы часто используемые типы данных, константы, переменные, процедуры и функции не описывать заново в каждой программе, их описания,...
-
Локальные и глобальные параметры - Структурирование программы
Параметры, объявленные внутри подпрограммы и доступные только ей самой, называются локальными. В разделе описаний подпрограммы могут встретиться описания...
-
Вычислить приближенное значение определенного интеграла с подынтегральной функцией f(x) заданным методом и проверить точность вычислений по формуле...
-
Описание модулей программы Проект приложения содержит следующие модули. Модуль UnitCollection. pas содержит описание классов для работы с коллекцией и...
-
ПРОЦЕДУРНЫЕ ТИПЫ, ТИП ОБЪЕКТ - Типы данных в программе Турбо Паскаль
Процедурные типы -- это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов -- дать программисту гибкие...
-
ОСНОВНЫЕ ПРОГРАММЫ АРХИВАТОРЫ И ИХ ФУНКЦИИ - Архивация информации и программы-архиваторы
Назначение программ-архиваторов заключается в экономии места на диске за счет сжатия (упаковки) одного или нескольких файлов в архивный файл....
-
Так как матрица типа "функции-данные" является подвидом CRUD-матриц, сначала необходимо разобраться, что из себя представляет данный метод; затем...
-
Введение - Программа анализа матриц типа "функции-данные" и интерпретации деревьев бизнес-процессов
В настоящее время трудно представить организацию, не использующую в своей деятельности информационные системы, начиная от простых электронных таблиц и...
-
Рекурсивная программа построения снежинки Написать программу, строящую на экране изображение: Изображение строится по следующему правилу: строится...
-
Программа на языке Бейсик - Составление программы для решения системы уравнений
10 REM 20 DIM A(20,20),B(20),X(20) 30 READ N 40 FOR I=1 TO N: FOR J=1 TO N 60 READ A(I, J) : NEXT J 80 READ B(I) : NEXT I 90 REM Vibor elementa 100 FOR...
-
Служебная программа tty Позволяет узнать имя пользовательского терминала. Более точно, она выдает на стандартный вывод имя терминала, открытого в...
-
Процедуры и переменные Таблица с описание процедур: Вызов Название процедуры Предназначение Кнопка "Записать уравнение" TForm1.Button1Click Составление и...
-
Выходные данные для работы программы представляют собой матрицу типа "функции-данные", где связь бизнес-функций и элементов данных описывается большим...
-
Матрицы типа "функции-данные" являются внутренним инструментом описания бизнес-процессов в организации ООО "РН-Информ" и являются вариацией CRUD-матриц....
-
ФУНКЦИИ И ПРОЦЕДУРЫ, Модуль Graph, Координаты, окна, страницы - Работа с языком Турбо Паскаль
Модуль Graph Модуль Graph Турбо Паскаля содержит около пятидесяти различных процедур и функции, предназначенных для работы с графическим экраном. В этом...
-
MVVM - Программа анализа матриц типа "функции-данные" и интерпретации деревьев бизнес-процессов
При проектировании визуализации была использована модель Model-View-ViewModel (MVVM) [1]- основной паттерн, используемый при работе с Windows...
-
Кластер представляет собой набор бизнес-процессов, использующих общие элементы данных: , Где - наименование кластера, k - количество кластеров, -...
-
Выполнение функции добавление человека в базу данных По нажатию на кнопку "Добавить" или сочетанием клавиш Ctrl+A произойдет добавление человека в базу...
-
Функциональное назначение программы Основной функцией программы "AdressBook. exe" является ведение справочника. Имеется возможность добавлять и удалять...
-
Основная программа Построение интерполяционного многочлена Нахождение максимума функции методом дихотомии Вычисление значения заданной функции Создание и...
-
Для перехода к описанию выбора средств разработки, необходимо выделить этапы работы программы. Алгоритм работы программы представлен ниже: Пользователь...
-
Анализ модели архитектуры данных организации является важной и трудоемкой задачей, позволяющей выявить существующие недостатки архитектуры. Также такой...
-
За последние годы было разработано большое количество методологий и стандартов построения и описания различных уровней архитектуры организации, в том...
-
С увеличением размерности таблицы существенно возрастает вероятность появления некорректных данных, так как таблица заполняется вручную. При средней...
-
Первая программа - движение слева направо Просмотрите код Unit1.pas для нашего примера: Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants,...
-
Правила записи программы на языке Си - Основы программирования
Как указывалось выше, программа перед обработкой компьютером должна быть помещена в файл на диске. Обычно этот файл имеет расширение <.c>. Рассмотрим...
-
Рекурсивные графические построения - Разработка Windows-приложений в среде Borland Delphi
Цель Работы: Получить навыки использования рекурсии. Пояснения к работе Рекурсивным называется объект, частично состоящий или определяемый с помощью...
-
Модульность, Функции - это значения - Основные свойства функциональных языков программирования
Механизм модульности позволяет разделять программы на несколько сравнительно независимых частей (модулей) с четко определенными связями между ними. Тем...
-
Пример программы построения анимации - Работа с языком Турбо Паскаль
Unit unit1; Interface uses graph; Type arpo = array [1..4] of PointType; {хранит коорд. Вершин прямоугольника} { Справка: PointType = Record X, Y :...
-
Введение, РЕКУРСИЯ - Рекурсивное программирование
Основой для разработки рекурсивных алгоритмов служат, так называемые, Рекуррентные соотношения (формулы), устанавливающие зависимость между результатами...
-
Любой объект можно связать с набором процедур, исполняемых в строго определенные моменты. Процедура ( Procedure ) - это группа операторов языка....
-
Линейная зависимость - Составление программы для решения системы уравнений
Рассмотрим подробнее аппроксимирующие зависимости Y(x)=f(x, B 0 ,B 1,..., B N ) с двумя параметрами: Y(x)=f(x, B 0 ,B 1 ) Используя соотношения (1) и...
-
Рисунок 9.1 - Логическая схема процедуры Runge Рисунок 9.2 - Логическая схема для вычисления кинематических и силовых характеристик четырехмассовой...
-
СООБЩЕНИЯ ОПЕРАТОРУ, Сообщение о программе, Листинг программы - Руководство оператора
Сообщение о программе Программа "AdressBook. ехе" выдает сообщение о программе, при выборе в главном меню пункта "О программе" во вкладке "Помощь"...
-
ТИПИЗИРОВАННЫЕ КОНСТАНТЫ - Типы данных в программе Турбо Паскаль
В Турбо Паскале допускается использование типизированных констант. Они задаются в разделе объявления констант следующим образом: <индификатор> :...
-
Программный интерфейс высокого уровня. - Механизм вызова удаленных процедур - RPC
Использование подпрограмм в программе - традиционный способ структурировать задачу, сделать ее более ясной. Наиболее часто используемые подпрограммы...
-
В данном разделе выпускной квалификационной работы описывается процесс разработки программы извлечения КП текста, а также производится оценка качества ее...
-
Во всех языках описания компонентов все параметры передаются по ссылке (передается не значение аргумента, а его адрес). Если в качестве фактического...
Рекурсивные процедуры и функции - Структурирование программы