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

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


 

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

44584. Базовая эталонная модель архитектуры сети 82 KB
  Сверху вниз от прикладного уровня к физическому; в рамках физического уровня горизонтально по сетевому кабелю к компьютеру – приемнику данных; полученные данные затем двигаются вверх по уровням сетевой модели Сетевая модель ISO OSI определяет сеть в терминах нескольких функциональных уровней. Каждый сетевой уровень включает строго определенные функции и применяет для этого один или несколько протоколов: физический уровень передает данные по сетевым каналам и включает в себя аппаратные...
44585. Основные функции уровней модели OSI 145 KB
  С точки зрения верхних уровней канальный и физический обеспечивают безошибочную передачу пакетов данных. а также алгоритмы переспроса и повторения пакетов. Пример передачи пакетов данных 3. Маршрутизация – существенная функция при работе в глобальных сетях с коммутацией пакетов когда необходимо определить маршрут передачи пакета выполнить перевод логических адресов узлов сети в физические.
44586. Назначение протоколов 37.5 KB
  Отметим три основных момента касающихся протоколов: Существует множество протоколов. В общем случае каждому уровню присущ свой набор правил Уровень Набор правил протокол Прикладной Инициация или прием запроса Представительский Добавление в сообщение форматирующей отображающей и шифрующей информации Сеансовый Добавление информации о трафике – с указанием момента отправки пакета Транспортный Добавление информации для обработки ошибок Сетевой Добавление адресов и информации о месте пакета в последовательности передаваемых пакетов Канальный...
44587. Основные типы протоколов 39.5 KB
  Протоколы этих стеков выполняют работу специальную для своего уровня. Однако коммуникационные задачи которые возложены на сеть приводят к разделению протоколов на три типа: прикладные протоколы; транспортные протоколы и сетевые протоколы. Уровни модели OSI и соответствующие им типы протоколов Прикладные протоколы работают на верхнем уровне модели OSI и обеспечивают взаимодействие приложений и обмен данными между ними. Транспортные протоколы поддерживают сеансы связи между компьютерами и гарантируют надежный обмен данными между ними.
44588. Наиболее распространенные стеки протоколов 32.5 KB
  Стек TCP IP включает в себя два основных протокола: TCP Trnsmission Control Protocol – протокол для гарантированной доставки данных разбитых на последовательность фрагментов. IP Internet Protocol – протокол для передачи пакетов относится к разряду сетевых протоколов. Стек TCP IP является промышленным стандартным набором протоколов которые обеспечивают связь в неоднородной среде т.
44589. Передача данных по сети 53.5 KB
  Пример передачи данных 1 Компьютер-отправитель устанавливает соединение с принтсервером. Если бы использовался более сложный протокол и соответствующие ему сетевые службы то время передачи увеличилось бы но зато повысилась бы достоверность передачи. Указанный в пакете адрес отправителя в этом случае использовался бы сетевой службой для формирования подтверждения и передачи его соответствующему приемнику.
44590. Стандарт 10BaseT 39.5 KB
  ЛВС стандарта 10BseT может обслуживать до 1024 компьютеров. Сеть стандарта 10BseT Достоинством является возможность использования распределительных стоек и панелей коммутации что позволяет легко перекоммутировать сеть или добавить новый узел без остановки работы сети.
44591. Стандарт 10Base2 59 KB
  С использованием репитеров может быть увеличена общая протяженность сети введением дополнительных сегментов. Два из пяти сегментов являются межрепитерными связями и служат только для увеличения длины сети . Максимальное число компьютеров до 1024 а общая длина сети до 925м.
44592. Стандарт 10Base5 38.5 KB
  Главный кабель к которому подключаются трансиверы для связи с РС имеет длину до 500 м и возможность подключения до 100 компьютеров. С использованием репитеров которые также подключаются к магистральному сегменту через трансиверы общая длина сети может составить 2500 м.