русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Взаимно рекурсивные подпрограммы


Дата добавления: 2015-06-12; просмотров: 627; Нарушение авторских прав


 

Две подпрограммы называются взаимно рекурсивными, если первая подпрограмма обращается ко второй, а вторая - к первой. Обычное описание таких подпрограмм невозможно, так как при этом вызов подпрограммы будет предшествовать ее описанию. Противоречие разрешается использованием опережающего описания. Описывается заголовок одной из подпрограмм, а тело ее заменяется ключевым словом forward. Затем описывается другая подпрограмма полностью, а после нее - неполный заголовок (без указания параметров) и тело первой подпрограммы:

Program pr1(x:real);

forward;

procedure pr2(...);

{описание тела с вызовом pr1}

procedure pr1;

{ описание тела с вызовом pr2 };

 

 

21. КОМБИНИРОВАННЫЙ ТИП (ЗАПИСЬ)

 

Комбинированный тип данных или тип запись - это структурированный тип, состоящий из компонентов, типы которых могут быть различны. Компоненты записей называются полями. Записи удобно использовать для хранения и обработки различных характеристик одного и того же объекта. Например, отдел кадров хранит и поддерживает в актуальном состоянии информацию о каждом сотруднике: фамилия, имя, отчество, пол, дата рождения, адрес, образование, оклад и т.п. Записи - основная структура данных, используемая в информационных системах.

Описание записи:

 
 

 


Идентификаторы - имена полей. Типы полей могут быть любыми.

Пример 1.

Const MaxLen = 25;

type t_range=1.. MaxLen;

t_date=record {Тип для работы с датами}

day : 1..31;

month : 1..12;

year : 0..9999

end; {end записано под соответствующим record}

t_student=record {Тип для хранения информации о студенте}

name : string[20];

birthday : t_date; {Поле-запись}

group : string[5];

marks : array[1..4] of 2..5

end;

t_group= array[t_range] of t_student;

var d1, d2 : t_date; {Переменные для хранения дат}



group : t_group;{Переменная для хранения информации о студентах группы}

Над записями, как едиными целыми, не определены никакие операции. Совместимость по присваиванию требует тождественности типов. Для описанных выше переменных допустимы присваивания:

d1:=d2; group[1]: =group[25].

Обращение к полю записи представляет собой составное имя:

 

Составное имя можно использовать везде, где допустим тип поля. Например, d1.day:=5; read(group[1].name). Имена полей записей могут совпадать с именами других переменных, при этом путаницы не возникает, так как обращение к ним иное. Например, group - массив, group[i] - элемент массива, group[i]. group - поле i-й записи.

Пример 2. Процедура для определения даты следующего дня невисокосного года:

Procedure next_date(d1: t_date; var d2: t_date);

{d1 - данная дата, d2 - результат (дата следующего дня)}

var max : 28..31; {число дней в месяце}

begin d2:=d1;

case d2.month of {Определение числа дней в заданном месяце}

2: max:=28;

4, 6, 9, 11: max:=30

else max:=31

end;

if d2.day<max then d2.day:= d2.day+1

else begin d2.day:= 1;

if d2.month<12 then d2.month:= d2.month+1

else begin d2.month:= 1; d2.year:= d2.year+1

end

end

end;



<== предыдущая лекция | следующая лекция ==>
Рекурсивные подпрограммы | Оператор присоединения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.027 сек.