36563

Структурный тип запись

Контрольная

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

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

Русский

2013-09-22

45 KB

3 чел.

Структурный тип запись.

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

2. Описание типа Запись и доступ к полям записи.

Тип Запись описывается в следующей форме:

type < имя типа-запись> = record < список полей > end;

где: < список полей > - последовательность разделов, разделяемых точкой с запятой; каждый раздел имеет структуру < список имен полей > : < тип поля >. Типом поля может быть любой тип, кроме типа файл. Если тип поля также является записью, мы имеем дело с иерархической структурой записей. Например:

type stud = record numb:byte;name:string[16]; aver:real end;{запись о студенте}

gr = record title:string; studs: array[1..15] of stud; end; {данные о группе }

Для работы с записями необходимо описать переменные типа-запись.

Например: var stud1:stud; {данные о студенте styd1} grA1:gr; {группа А1}

Допустимы также типизированные константы типа-запись, устанавливающие значения полям записи в виде списка констант-полей, перечисляемых через точку с запятой. Например:

const st00:stud = (numb:0; name:''; aver:0.0);

Доступ к элементам записи осуществляется посредством составного имени, в котором указывается имя переменной-записи и имя поля записи, разделяемые точкой. Так, например, доступ к полю среднего балла студента stud1 имеет вид: stud1.aver. Если запись описывает иерархическую структуру с несколькими уровнями, то составное имя содержит кроме имени записи также имена всех промежуточных полей-уровней, разделяемые точками. Например, для доступа к полю среднего балла 8 студента группы следует использовать составное имя: grA1.studs[8].aver.

3. Обработка записей.

Для составных имён допустимы все те же средства обработки, что и для простых переменных: операторы присваивания и использование имен при построении выражений или условий. Так для составных имен оператор присваивания имеет вид:

< составное имя > := < выражение соответствующего типа-поля >;

Например: gr1.studs[8].aver:=4.6;

При обработке записей можно избежать использования полных имен полей записей, используя специальный оператор with. Оператор присоединения with позволяет упростить доступ к полям записей за счёт выделения "общих частей" в составных именах. Оператор with имеет следующую синтаксическую структуру:

with < переменная > do < оператор >;

где: < переменная > - имя переменной-записи, за которым может также следовать иерархический список полей (разделяемых точкой);

 < оператор > - любой оператор Турбо Паскаля. В нём можно использовать имена полей вместо составных имён. Последовательность операторов, выполняемых внутри оператора with должна заключаться в скобки begin end .

Оператор with является единственным видом операторов, введенным специально для обработки записей. Во всем остальном обработка записей опирается на обычные средства Турбо Паскаля, доступные для большинства типов.

Удобным оператором обработки записей является оператор выбора case-of , ветви которого можно эффективно использовать для обработки полей, сопоставляя каждой ветви поле записи.

Тип Запись может иметь вариантную часть, которая способна изменяться при различных выполнениях программы, обеспечивая различную структуру записи при разных выполнениях. По структуре вариантная запись подобна оператору выбора case-of, но у ключа выбора может быть указан тип (любой порядковый тип). После of перечисляются поля записи в форме:

< константа выбора> : ( < список полей > );

Вариантная часть должна располагаться только в конце описания записи и может быть только одна. Для ключа выбора конкретное значение необязательно, так как выбор осуществляется непосредственно по именам полей.

 Замечание:

В Турбо Паскале имеется стандартный тип-запись DateTime для представления даты и времени. Имеется ряд стандартных процедур и функций работы с этими типами, описываемые подробно в справочной литературе.

4. Пример программы обработки записей.

Приведем пример простой программы на Турбо Паскале, иллюстрирующей обработку записей:

 

 program stud_group;

{ Ввод списка группы и сортировка по убыванию среднего балла}

 uses CRT;

 type stud =record num:byte; {номер}

name:string[15]; {Фамилия И.О.}

average:real {Средний балл}

 end; {тип stud - Запись данных о студенте}

group =array[1..5] of stud; {тип group - список данных о 5 студентах}

 var A:group; {Список группы студентов}

 j,k,l:byte;max:real;

 begin ТextBackground(cyan); TextColor(white); ClrScr;

window(10,5,60,22); TextBackground(green); ClrScr;

 writeln('Ввод данных о студентах:');writeln('N Ф.И.О. Средний балл');

 for j:=1 to 5 do {чтение данных о студенте} with A[j] do readln(num,name,average);

 writeln('Успеваемость группы:');max:=A[1].average;l:=1;

{ Вывод данных из А в порядке убывания среднего балла}

 for j:=1 to 5 do {вывод данных с макс. средним баллом}

 begin for k:=1 to 5 do { поиск элемента с макс.средним баллом}

 with A[k] do if average>max then begin max:=average;l:=k end;

 with A[l] do {вывод и обнуление в А выведенных данных}

 begin writeln(name,' ',average:1:2);average:=0;max:=0

 end end {Окончание вывода сортированных данных}

 end { stud_group}.

Задача 4.2.6(1)

program alex1;

type mas=array[1..4,1..5]of integer;

mass=array[1..5]of integer;

var a:mas;

i,j,y:integer;

m:mass;

procedure proc(x:mas;k:integer;var max:integer);

var i:integer;

begin

max:=x[1,k];

for i:=2 to 4 do

if x[i,k]>max then max:=x[i,k];

end;

begin

for i:=1 to 4 do

for j:=1 to 5 do

read(a[i,j]);

for i:=1 to 5 do

proc(a,i,m[i]);

y:=m[1]*m[5]+m[2]*m[4]+m[3]*m[3]+m[4]*m[2]+m[5]*m[1];

writeln('y=',y);

readln;

end.


 

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

84561. Особливості кровообігу у судинах серця i його регуляція 43.46 KB
  Високий рівень кровотоку в стані спокою – 250 мл хв 5 від ХОК маса серця – 05 від маси тіла. Високий тонус вінцевих судин в стані спокою незважаючи на високий рівень метаболізму – ця умова забезпечує здатність вінцевих судин до розширення та збільшення кровотоку під час посиленої діяльності 5. Залежність кровотоку від фаз СЦ: він знижується під час систоли артерії стискуються міокардом та збільшується під час діастоли. Головна особливість в регуляції серцевого кровотоку полягає у перевазі місцевих механізмів над центральними.
84562. Особливості легеневого кровообігу його регуляція 43.31 KB
  В легенях розрізняють дві групи судин: одні виконують трофічну функцію живлять тканину легень бронхів та відносяться до судин великого кола кровообігу інші – функцію газообміну та відносяться до судин малого кола. Далі мова піде про судини малого кола кровообігу. Артеріальні судини за своїми властивостями та будовою нагадують венозні судини – вони легко розтягуюються та реагують зміною об’єму на зміну трансмурального тиску. В артеріальних судинах легень відсутні спеціальні судини опору.
84563. Механізми лімфоутворення. Рух лімфи посудинах 43.75 KB
  Рух лімфи посудинах. Утворення лімфи відбувається за участі судин гемомікроциркулярного русла. Утворення лімфи. Головну роль в утворенні лімфи відіграють лімфатичні капіляри: на відміну від кровоносних вони сліпі більш широкі у них ширші міжклітинні щілини відсутня базальна мембрана проникність стінок лімфатичних капілярів дуже висока.
84564. Загальна характеристика системи дихання. Основні етапи дихання. Біомеханіка вдиху і видиху 49.56 KB
  Основні етапи дихання. Дихання – процес обміну газів О2 та СО2 між атмосферним повітрям та тканинами організму. СИСТЕМА ДИХАННЯ ВИКОНАВЧІ ОРГАНИ МЕХАНІЗМИ РЕГУЛЯЦІЇ Грудна клітина Нервові Гуморальні Дихальні м’язи Плевра Забезпечення оптимального газообміну між атмосферним повітрям та тканинами організму.
84565. Еластична тяга легень, негативний внутрішньоплевраль-ний тиск 43.41 KB
  Еластична тяга легень є сумою трьох сил: 1 сила поверхневого натягу шару рідини води яка вистеляє альвеоли зсередини. Це основна сила яка примушує альвеоли зменшувати свій розмір а легені спадатися; вона складає 2 3 від всієї еластичної тяги легень. Сурфактант вистелає альвеоли зсередини на кордоні з повітряним середовищем. Питома активність сурфактанту тобто його властивість зменшувати силу поверхневого натягу залежить від товщини його шару на поверхні альвеоли – чим більша його товщина тим більша питома активність.
84566. Зовнішнє дихання. Показники зовнішнього дихання та їх оцінка 46.93 KB
  Показники зовнішнього дихання та їх оцінка. ПОКАЗНИКИ ЗОВНІШНЬОГО ДИХАННЯ СТАТИЧНІ ДИНАМІЧНІ ОБ’ЄМИ ЧДР ХОД АВЛ КВЛ МВЛ КРД РД ЄМНОСТІ ДО РОвд РОвид ЗО ЖЄЛ Євд ФЗЄ ЗЄЛ Характеризують реалізацію резервів зовнішнього дихання в умовах спокійного та форсованого дихання Характеризують резерви можливості звнішнього дихання Основними методами дослідження показників зовнішнього дихання є спірометрія та спірографія. Спірографія – метод графічної реєстрації дихальних рухів в умовах спокійного та форсованого дихання.
84568. Дифузія газів у легенях. Дифузійна здатність легень і фактори, від яких вона залежить 56 KB
  Обмін газів О2 та СО2 між альвеолярним повітрям та кров’ю проходить тільки пасивно за механізмом дифузії. Дифузія газів в легенях підкоряється закону Фіка: об’єм дифузії газу V прямо пропорційний площі дифузії S коефіцієнту дифузії К градієнту тиску газу по обидві сторони альвеолокапілярної мембрани Р1 – Р2 і обернено пропорційний товщині цієї мембрани L: Площа дифузії в легенях S – це площа альвеол які вентилюються та кровопостачаються. Збільшення площі дифузії може зумовити збільшення глибини дихання і об’ємної швидкості...
84569. Транспорт кисню кров’ю. Киснева ємкість крові 36.49 KB
  Киснева ємкість крові. Розчинений у плазмі крові. в 1л крові розчиняється 3 мл кисню. Виходячи з цього розраховують кисневу ємкість крові – максимальну кількість О2 котру може зв’язати 1л крові.