Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Прямая и косвенная рекурсия. Особенности использования.Содержание книги
Поиск на нашем сайте Программа называется рекурсивной, если она вызывает саму себя. Рекурсивной может быть процедура, вызывающая другую процедуру, которая в свою очередь обращается к первой. В первом случае она называется прямой, а во втором косвенной. Рекурсивная программа занимает меньше места в памяти, выполняется быстрее, компактнее. Достоинством рекурсивных определений является то, что они позволяют с помощью конечных формул определять бесконечное множество объектов. Рекурсия широко применяется в программировании. Если не принять специальных мер, рекурсия становится бесконечной. Чтобы процесс рекурсии когда-нибудь завершился, необходимо рекурсивный вызов поместить внутри оператора, когда одна ветвь этого оператора содержит рекурсивный вызов, а другая – нет. Переход на ветвь условного оператора, не содержащую рекурсивный вызов, но обеспечивающую завершение работы рекурсивной подпрограммы, должен через конечный промежуток времени. Косвенная рекурсия. Функция обращается к себе путем вызова другой подпрограммы, которая и содержит обращение к функции. (Procedure A (K:Byte); Begin B (K); end; Procedure B (N:byte); Begin A (N); End;). Программа работать не будет, т. к. она не может вызвать из А процедуру В, т..к для этого описание процедуры В должно быть расположено до вызова. В данной ситуации в Паскале существует т. называемое опережающее описание, его суть: до вызываемой процедуры А дается только заголовок вызываемой процедуры В. А вместо тела, вызываемой процедуры В пишется ключевое слово FORWARD. В этом случае описание вызываемой процедуры начинается с заголовка процедуры, в котором нет формальных параметров. (Procedure B (N:byte); Forward; procedure a (k:byte); begin B (K); end; Procedure B; Begin A (N); End;). Рекомендуется использовать директиву {$ S+}. Она включается для проверки стека (памяти, где хранится состояние вызывающей программы) и если будет переполнение стека, то программа будет остановлена и выдано сообщение об ошибке. В начале каждой процедуры или функции вызываемого рекурсивно разместить строку: if Keypressed then HALF, тогда при зависании программы надо нажать любую клавишу.
Структура языка Паскаль. Структура программ на языке Паскаль. Алгоритмический язык – это система правил для описания процесс обработки данных. Он включает алфавит, из символов которого формируются слова, выражения и операторы (предложения). Алфавит – Это набор допустимых символов языка. Слова (идентификаторы, константы) формируются из символов по определенным правилам. Выражения – это группа слов, имеющих определенный смысл. Операторы - это предложения для описания некоторого действия в процессе обработки данных. Из операторов формируются программы. Алгоритмический язык должен иметь формальные правила определения всех конструкций, допустимых в языке, и правила их толкования. Систему правил формирования множества конструкций языка (слов, выражений, операторов) представляет синтаксис языка. Систему правил истолкования смысла конструкций языка человеком и соответствующую им реализацию этих правил транслятором определяет семантика. Семантика может быть задана формально, с помощью металингвистических формул, и неформально, словесным описанием. Семантика определяет назначение конструкции, ее особенности, ограничения и т.п. Структура различных языков программирования однотипна. Они должны иметь средства для: определения свойств объектов программы (ее данных); определения обработки, т.е. получения новых значений объектов; организации процесса обработки данных; ввода/вывода данных, т. е. Обмена данными между ОП и внешними устройствами (магнитными дисками, портами, принтером); формирования и использования модулей (программ, процедур и функций) и библиотек модулей (системных и пользовательских, разработанных программистом). Структура языка Паскаль
Program PR; - заголовок программы Объявление типов, констант, меток и переменных;
Блок программы и подпрограммы на языке Паскаль состоит из двух частей: 1) декларативной – описания (объявления) данных программы и текстов подпрограмм (разделы описаний); 2) выполнимой – описания действий, которые надо выполнить над данными (раздел операторов). Блок включает все, кроме заголовка программы или подпрограммы. В общем случае может состоять из шести разделов различных типов. Все они, кроме раздела операторов, необязательны. Каждый раздел описаний начинается ключевым словом: Label – для определения меток программы; Const – для определения констант Type – для определения типов данных, Var – для определения переменных, Procedure и Function – для определения процедур и функций, Begin – определяет начало раздела операторов программы. Оператор Program должен быть первым в программе, раздел операторов программы – последним. А между ними может быть сколько угодно разделов описаний в любом порядке. Типы и константы могут использоваться в последующих описаниях типов и переменных и программ. Последовательность разделов описания объектов (Label, Const, Type,Var и др.) программы может быть произвольной. В случае необходимости типы разделов могут повторяться. Умолчаний в Паскале нет. Все, что используется в программе: константы, переменные, метки, - должно быть обязательно явно. Каждый объект программы должен быть описан и только один раз для данной области действия. Объекты программы имеют областью их действия блок, в котором они объявлены, и все вложенные в него блоки, процедуры и функции, в которых они не переобъявлены. Поэтому одни и те же идентификаторы можно использовать в различных подпрограммах (процедурах и функциях) программы в разных смыслах.
|
||
|
Последнее изменение этой страницы: 2016-08-14; просмотров: 549; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.006 с.) |