
- •Понятие рекурсии. Примеры рекурсивных функций.
- •Модуль в Турбо Паскале представляет собой отдельно хранимую и независимо компилируемую программную единицу.
- •Модуль crt содержит процедуры и функции, обеспечивающие управление текстовым режимом работы экрана.
- •Цель структурного программирования - повышение надежности программ, обеспечение сопровождения и модификации, облегчение и ускорение разработки.
- •Разработка программы ведётся пошагово, методом «сверху вниз» (низходящее)
- •Модульное программирование
- •Объектный подход в программировании: объект, свойство объекта, метод обработки, событие, класс. Принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм.
- •Var имя_объекта : класса_объекта;
Подпрограммы в Pascal. Процедуры, функции. Описание и использование процедур и функций в программе. Фактические и формальные параметры, параметры-переменные и параметр-значение, локальные и глобальные переменные в программе. Особенности выбора использования процедуры или функции для решения задачи.
Подпрограмма - часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная именем.
Вызов подпрограммы, т.е. выполнение действий, заданных в подпрограмме в виде операторов, возможен в любом месте основной программы, путём указания имени подпрограммы.
Существуют два вида подпрограмм:
Процедуры
Функции
Процедура служит для задания последовательности каких-либо действий (randomise, readln). Данные в/из процедуры передаются при помощи передаваемых параметров.
Функции так же служат для задания последовательностей действий, а главное - служат для вычисления некоторого значения (результата функции). Имя функции может служить как операнд в выражениях, где в момент выполнения программы вместо имени функции подставляется ее вычисленное значение.
В структуре подпрограмм необходимо наличие следующих компонентов:
Заголовок
Объявление (описание) локальных объектов (переменных, типов, меток, констант)
Непосредственно операторы между begin ..end.
Структура подпрограмм (процедур и функций) одинакова и повторяет структуру основной программы.
Формальные параметры подпрограммы указывают, с какими аргументами следует обращаться к этой подпрограмме (количество аргументов, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка, разбитого на группы. Разделителем групп является знак точка с запятой (;). В каждую группу включаются параметры одного типа, принадлежащие к одной категории.
Все формальные параметры можно разбить на четыре категории:
параметры-значения;
параметры-переменные;
параметры-константы (используются только в версии 7.0);
параметры-процедуры и параметры-функции.
Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае объект основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать
function Max( A: array[ 1..100 ] of real ): real;
Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:
type tArr =array [ 1..100 ] of real;
function Max ( A: tArr ) : real;
При обращении к подпрограмме формальные параметры заменяются соответствующими фактическими вызывающей программой или подпрограммой.
Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий и, следовательно, соответствующие фактические параметры программы подпрограммой измениться не могут.
Параметр-значение указывает в заголовке подпрограммы своим именем и через двоеточие - типом. Тип параметра-значения может быть любым за исключением файлового.
Если параметров-значений одного типа несколько, их можно объединить в одну группу, перечислив их имена через запятую, а затем уже указать общий тип. Как отмечалось выше, отдельные группы параметров отделяются друг от друга точкой с запятой.
Пример.
procedure Inp ( Max, Min: real ; N: Word );
function Mult (X, Y: integer): real;
В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваивания типа, не содержащее файловую компоненту, например:
Inp(Abs (Z), - Abs (T), 2 * K);
M:=Mult(X + Y, X - Y);
MA:=MAX( B, 5 );
Если переменная или константа описана в основной программе, она считается глобальной, и ее могут использовать любые процедуры и функции данной программы. Переменные, описанные внутри подпрограммы, называются локальными и могут быть использованы только внутри данной подпрограммы. Локальные переменные могут быть описаны как в заголовке подпрограммы, так и в разделе описания переменных. При совпадении имен глобальных и локальных переменных, локальные определения в пределах своего действия отменяют действия глобальных, и эти переменные никак не связаны между собой.
Процедура должна быть, по возможности, независима от основной программы, поэтому все переменные, нужные только в пределах процедуры, должны описываться как локальные. Общение основной программы с подпрограммой должно, как правило, идти через список параметров процедуры, что придает подпрограммам необходимую гибкость. Вместе с тем, излишне большое число параметров, передаваемое в подпрограмму при ее вызове, замедляет работу программы, поэтому не следует пренебрегать использованием в подпрограммах глобальных переменных.
Кроме локальных переменных, в подпрограммах могут быть и локальные подпрограммы. Это подпрограммы, текст которых размещен внутри текста подпрограммы более высокого уровня. Использование таких подпрограмм, как и локальных переменных, ограничивается подпрограммой, к которой они принадлежат.
Понятие рекурсии. Примеры рекурсивных функций.
Рекурсия (от латинского recursio - возвращение) - это такой способ организации вычислительного процесса, при котором процедура или функция в ходе выполнения составляющих ее операторов обращается сама к себе.
Для того, чтобы такое обращение не было бесконечным, в тексте подпрограммы должно быть условие, по достижению которого дальнейшего обращения не происходит; таким образом, рекурсивное обращение может включаться только в одну из ветвей подпрограммы.
В языке Паскаль нет никаких ограничений на рекурсивные вызовы подпрограмм, необходимо только понимать, что каждый очередной рекурсивный вызов приводит к образованию новой копии локальных объектов подпрограммы и все эти копии, соответствующие цепочке активизированных и не завершенных рекурсивных вызовов, существуют независимо друг от друга
Рекурсия достаточно широко применяется в программировании, что основано на рекурсивной природе многих математических алгоритмов. А также необходимо понимать, что любой рекурсивный алгоритм можно преобразовать в эквивалентный итеративный (то есть использующий циклические конструкции).
Рекуррентные последовательности.
Элементы последовательности а1, а2, а2 образуют рекуррентную последовательность k-ого порядка, если заданы первые k-элементов: а1,а2,а3..аk и для любого числа n>k, элементы последовательности по формулам
Типо пример программы, которая вычисляет факториал числа (но я бы так решать не стала)
Program Rekurs;
Var
N : integer;
F : Longint;
Function RecFact(N:integer) : LongInt;
Begin
if N <= 1
then
ResFact := 1
else
ResFact := N*ResFact(N-1);
End;
Begin
writeln('Введите число N > ';
read(N);
F := RecFact(N);
writeln('Для числа ',N,' значение факториала равно ',F);
End.
Понятие модуля в Pascal. Структура библиотечного модуля. Стандартный модуль CRT. Пример использования модуля.
Модуль (UNIT) в Турбо Паскале – это особым образом оформленная библиотека подпрограмм. Модуль в отличие от программы не может быть запущен на выполнение самостоятельно, он может только участвовать в построении программ и других модулей.
Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера.
Модуль в Турбо Паскале представляет собой отдельно хранимую и независимо компилируемую программную единицу.
В общем случае модуль – это совокупность программных ресурсов, предназначенных для использования другими программами. Под программными ресурсами понимаются любые элементы языка Турбо Паскаль: константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, его элементы используются другими программными единицами.
Все программные элементы модуля можно разбить на две части:
– программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;
– программные элементы, необходимые только для работы самого модуля, их называют невидимыми или скрытыми.
В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией.
В общем случае модуль имеет следующую структуру:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
{ описание скрытых программных элементов модуля }
begin
{ операторы инициализации элементов модуля }
end.
В частном случае модуль может не содержать части реализации и части инициализации, тогда структура модуля будет такой:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
implementation
end.
В Турбо Паскале имеется большое количество стандартных подпрограмм и данных, объединённых в несколько стандартных модулей. Они позволяют упростить процесс написания программ, более полно использовать возможности компьютеров и операционной системы MS DOS.
Это следующие модули: SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3, GRAPH3, STRINGS, WinDos. Модули GRAPH, TURBO3, GRAPH3 содержатся в одноимённых .TPU файлах, остальные обычно входят в состав библиотечного файла TURBO.TPL.
Все модули, за исключением SYSTEM становятся доступными в программе (подключаются к программе) только после указания их имён в списке, следующем за служебным символом USES. Например, USES CRT, DOS, GRAPH;.
Модуль SYSTEM доступен в любой программе, так как он подключается к любой программе автоматически (по умолчанию).