69743

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

Домашняя работа

Информатика, кибернетика и программирование

Іноді треба вводити в запис деяку інформацію, яка залежить від іншої інформації, що вже є в записі. Це зумовлює потребу введення додаткових полів, які залежать від значень інших полів. Комбінований тип допускає таку організацію даних, оскільки, крім фіксованої частини запису...

Украинкский

2014-10-09

33 KB

0 чел.

Самостійне вивчення

Тема 5: Записи з варіантами

Іноді треба вводити в запис деяку інформацію, яка залежить від іншої інформації, що вже є в записі. Це зумовлює потребу введення додаткових полів, які залежать від значень інших полів. Комбінований тип допускає таку організацію даних, оскільки, крім фіксованої частини запису, передбачає так звану варіантну частину, розраховану на те, що можна задавати тип, який забезпечує декілька варіантів структури даних. Це означає, що різні змінні, які належать до одного і того ж типу, можуть мати різну структуру. Ці відмінності можуть стосуватися як кількості компонентів, так і їхніх типів.

Загальний вигляд опису типу запису з варіантами такий:

type

<ім'я_запису>=record 

<ім'я_поля_1>: <тип>;

………………….

<ім'я_поля_N>: <тип>;

case <ім'я_типу> of

<конст_1>: (<список_полів_1>);

<конст_2>: (<список_полів_2>);

……………………………

……………………………

<конст_М>: (<список_полів_М>)

end;

Для прикладу наведемо опис типу figura, якою може бути одна з геометричних фігур: точка, пряма або коло. Оскільки інформація про кожну з таких фігур різна, то використаємо запис з варіантами. Передусім опишемо деякі потрібні типи:

type coord=record

absc, ord: real

end;

forma=(tochka, prjama, kolo);

figura=record FIG: forma;

case forma of

tochka: (poloz: coord);

prjama: (coefA, coefB, coefC: real);

kolo: (centr: coord; radius: real)

end;

Як бачимо, кожен варіант має список описів полів, що задані в круглих дужках. Перед списком одна або декілька сталих, а перед усією групою списків є заголовок варіанта, де зазначено тип сталих, на підставі значень якого розрізняють варіанти. Кожному значенню типу повинен відповідати один з варіантів.

Селектором варіанта в описі записів з варіантами є тип (у нашому випадку forma), на відміну від селектора в операторі вибору, де ним є змінна. Відмінним порівняно з оператором case є також те, що після зазначення всіх варіантів не ставлять end, оскільки воно і так стоїть у кінці опису всього запису, а варіантна частина завжди йде після фіксованої, тому жодні поля після варіантної частини вже не можуть з'явитися.

В описі запису з варіантами можна вводити додаткове так зване поле ознаки (в нашому прикладі це поле FIG), у якому зазначено варіант, про який ідеться. Для наведеного прикладу це поле, залежно від варіанта, буде містити сталі prjama, tochka або kolo. Для зазначення цього поля є скорочений спосіб -ввести його безпосередньо в заголовок варіанта. Тобто замість

FIG: forma;

case forma of

можна записати

case FIG: forma of

Зауваження.

1. Усі імена полів повинні бути різними, навіть якщо вони трапляються в різних варіантах.

2. Якщо варіант порожній (тобто поля немає), то його записують так: С:().

3. Будь-який список полів може мати тільки одну варіантну частину, яка повинна бути після фіксованої частини запису.

4.  Кожен варіант може містити в собі варіантну частину, отже, допустимі вкладені варіанти.

5. Порядок опису полів довільний (як у варіантній, так і у фіксованій частині), оскільки звертання до полів відбувається за допомогою їхніх імен.

Нехай у програмі є опис змінної

var F: figura;

Тоді відповідний запис можна сфомувати за допомогою таких присвоєнь:

без застосування                       із застосуванням

оператора with                           оператора with:

F.FIG:=kolo;                                      with F do

F.centr.absc:=3.8;                                  begin FIG:=kolo;

F.centr.ord:=-2.17;                                     centr.absc:=3.8;

F.radius:=4.8;                                             centr.ord:=-2.17;

                                                                   radius:=4.8;

                                                               end;

Для позначення комбінованих типів з варіантами використовують термін "об'єднаний тип". Об'єднання бувають вільними, якщо поля ознаки нема, і з дискримінантом, якщо це поле є у складі запису. На жаль, Паскаль не має засобів контролю за правильністю роботи з варіантами запису. Наприклад, запис

F.FIG:=tochka;

F.radius:=12.1

не має логічного сенсу, однак буде виконаний, бо немає контролю за відповідністю значення дискримінанта і полів запису. Вважають, що за цим повинен стежити програміст. Унаслідок такої ситуації можливі різні логічні помилки. Це одне із слабих місць мови Паскаль.


 

А также другие работы, которые могут Вас заинтересовать

76390. Конституционный Суд РФ. Полномочия судьи Конституционного Суда Российской Федерации 57 KB
  Конституционный Суд Российской Федерации состоит из девятнадцати судей назначаемых на должность Советом Федерации по представлению Президента Российской Федерации. Конституционный Суд Российской Федерации вправе осуществлять свою деятельность при наличии в его составе не менее трех четвертей от общего числа судей. Полномочия Конституционного Суда Российской Федерации не ограничены определенным сроком. Конституционный Суд Российской Федерации рассматривает и разрешает дела в пленарных заседаниях и заседаниях палат Конституционного Суда...
76392. Конституционно-правовые отношения: понятие, субъекты и объекты 42 KB
  Это общественные отношения урегулированные нормами конституционного права содержанием которых являются юридические связи между субъектами в форме прав и обязанностей предусмотренных конкретными нормами. Специфика конституционноправовых отношений по сравнению с другими видами правоотношений состоит в следующем: 1 конституционноправовые отношения имеют свое собственное содержание: возникают в особой сфере отношений составляющих предмет конституционного права; 2 конституционноправовым отношениям свойствен особый субъектный состав:...
76394. Конституционно-правовые нормы: понятие, особенности и виды 51 KB
  От норм других отраслей права конституционноправовые нормы отличаются: своим содержанием зависящим от той сферы общественных отношений на регулирование которых эти нормы направлены; источниками в которых они выражены. Основополагающие наиболее значимые нормы содержатся в особом акте обладающем высшей юридической силой во всей системе права в Конституции РФ; своеобразием видов: среди рассматриваемых норм значительно больше чем в других отраслях общерегулятивных норм. Это нормыпринципы нормыдефиниции нормызадачи.
76395. Конституционно-правовая ответственность 35 KB
  Конституционно правовая ответственность. Конституционноправовая ответственность обязанность субъекта правоотношения гражданина органа власти должностного лица претерпевать неблагоприятные последствия в виде ограничений личного или имущественного характера своих незаконных действий бездействий установленная Конституцией РФ и другими федеральными законами. Как и любая другая юридическая ответственность конституционноправовая возникает вследствие совершения субъектом правоотношения виновного правонарушения. 29 устанавливается...
76396. Источники конституционного права как отрасли права 46 KB
  Следует выделить нормативные правовые акты действующие: на всей территории Российской Федерации; только на территории конкретного субъекта Федерации; на территории муниципального образования. Среди актов первого вида особое место занимает Конституция Российской Федерации. Законы и иные правовые акты принимаемые в Российской Федерации не должны противоречить ее Конституции ст. К источникам конституционного права относятся Федеральные конституционные законы: Об Уполномоченном по правам человека в Российской Федерации 1997 г.
76397. Конституция Российской Федерации 32.5 KB
  Конституция Российской Федерации. Конституция РФ является основным источником любой отрасли национального права и в первую очередь конституционного. Специфика Конституции как основного источника конституционного права выражается в следующем: 1 Конституция принимается народом или от имени народа она является высшей формой воплощения государственной воли народа. Российская Конституция 1993 года была принята на референдуме который является высшим непосредственным выражением власти народа; 2 конституционные нормы имеют учредительный характер...