Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рекурсия

Оператор with

Обращение к полям записи

Записи

 

Записи - это структурированный тип данных языка паскаль, состоящий из фиксированного числа компонентов разного типа.

Record – Имя компонента -: - тип компонента – end;

Типами компонентов могут быть любые типы, в том числе и сами записи.

Имя компонента должны быть уникальны в пределах записи, но может совпадать с названиями других элементов программы.

Имя записи -. – Имя компонента

Пример1:

Type

Bd=record

Day,month:byte;

Year:word

End;

Var bd:bd;

Begin

Writeln (‘Ввеите дату рождения’);

Write(‘число’); readln(bd.day);

Write(‘месяц’); readln(bd.mounth);

Write(‘Год’); readln(bd.year);

End.

Пример2:

Type

Texam=(history,algebra,matan);

TSudent=record

Name,sename:string[20];

Date:record

Day:1..31;

Mount:1..12;

Year:word;

End;

Group:word;

Marks:array[texam] of 2..5;

Var st1,st2:tstudent; i:word;

Institute:array[1..300] of tstudent;

Exam:texam;

Begin

St1.name:=’Иван’;

St1.suname:=’Смирнов’;

St1.date.day:=24;

St1.date.mouth:=2;

St1.date.year:=1992;

St1.group:=114;

St1.marks[history]:=3;

St1.marks[algebra]:=4;

St1.marks[matan]:=5;

St2:=st1;

Institute[8].date.day:=30;

For i:=1 to 300 do

For exam:=history to matan do

Readln(Institute[i].marks[exam]);

End.

Пример3:

Var a:record

F:char;

B:record

A:byte;

F:word;

End

End;

 

With – Имя записи – do – оператор

With st1 do

Begin

Name:=’Иван’;

Suname:=’Смирнов’;

Date.day:=24;

Date.mounth:=2;

Date.year:=1992;

End;

With st1 do

Begin

Name:=’Иван’;

Suname:=’Смирнов’;

With date do

day:=24;

mounth:=2;

year:=1992;

End;

With st1,date do

Begin

Name:=’Иван’;

Suname:=’Смирнов’;

day:=24;

mounth:=2;

year:=1992;

End;

Записи с вариантами

Пример1:

Type

Rec=record

{Описание фиксированных частей}

V1,v2:integer;

{Описание вариативной части}

Case n:word of

0: (Список полей)

1: (Список полей)

End;

 

Case – имя селектора -: тип - of – Коннст -: - (- Имя компонента -: - Тип -)

Type

texamW= (history,algebra,matan);

texamS= (matan,TP,DM);

tstudent = record

name,suname:string;

Date:record

Day:1..31;

Mount:1..12;

Year:word;

End;

Group:word;

Case session:byte of

1: (marksw:array[texamw] of 2..5);

2: (markss:array[texams] of 2..5);

End;

Var

St1:tstudent;

Begin

St1.name:=’Иван’;

St1.suname:=’Смирнов’;

St1.date.day:=24;

St1.date.mouth:=2;

St1.date.year:=1992;

St1.group:=114;

St1.Session:=1;

St1.marksW[history]:=3;

St1.marksW[algebra]:=4;

St1.session:=2;

St1.Markss[tp]:=5;

Sizeof(st1)= 52 байта (Функция размера записи в байтах);

 

 

Рекурсия – это вызов подпрограммы самой себя

1) Прямая

2) Косвенная

Прямая(пример):

Procedure p;

Begun

………..

P;

…………

End;

 

Косвенная(пример)

Procedure p(x:byte);

Begin

…………..

Q(x);

…………..

End;

Procedure q(y:byte);

Begin

…………..

P(y);

……………..

End;

Для того что бы не нарушить правила опережающего описания

Procedure q(x:byte); forward

Procedure p(y:byte);{С полным списком формальных параметров}

Begin

…………..

Q(x);

…………..

End;

Procedure q;{Без списка формальных параметров}

Begin

…………..

P(y);

……………..

End;

Procedure popendog;

Begin

Writeln(‘У попа была собака’);

Writeln(‘Он ее любил’);

Popendog;

End;

 

Обязательным является условие выхода из рекурсии

Begin

If ….then popendog

End.

<== предыдущая лекция | следующая лекция ==>
 | Процедуры и функции общие для всех типов файлов. Вычисления значений формул
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 194; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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