Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_Информатика.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.1 Mб
Скачать

Методические указания к лабораторной работе № 11

СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ. ЗАПИСИ.

по дисциплине

ИНФОРМАТИКА

Направление подготовки: 221000 Мехатроника и робототехника

Профиль подготовки: Мехатроника

Квалификация (степень) выпускника: бакалавр

Форма обучения: очная

Тула 2011 г.

ЛАБОРАТОРНАЯ РАБОТА N 11

Цель и задачи работы: Познакомиться с организацией структурированных типов данных и в языке программирования Паскаль.

Теоретические сведения

Объединение компонент, принадлежащих к различным типам, в один составной тип, называется комбинированным типом или записью. Существует две разновидности записей — фиксированные записи и записи с вариантной ча­стью.

Фиксированные записи

Фиксированная запись - это структура данных, состоящая из постоянно­го числа компонент, называемых полями, которые могут иметь различный тип данных. В определении записи для каждой из ее компонент указывается тип данных и имя (имя поля), обозначающее эту компоненту. Ее формат: type

имя_записи = record

имя_поля_1: тип_данных_1; имя_поля_2: тип_данных_2;

UMH_nojiH_N: mun_daHHbix_N; end;

где record и end - служебные слова, имя_записи - имя комбинированного типа (записи), имя_поля_1, имя_поля_2, ..., имя_поля_М - имена полей (компонент) записи, тип_ данных_1, тип_ данных_2, ..., тип_ данных_М, - типы данных для соответствующих полей записи. Для обращения к компоненте (полю) записи используют следующее обозначение:

имя_переменной_типа_записъ.имя_поля_записи

Пример 1. Тип Date соответствует понятию "дата", каждое значение этого типа объединяет в себе три значения, а именно: число, месяц, год. type Date = record

day: 1.. 31; {день}

month :(jan,feb, mar, apr, mayjunjul, aug, sep, oct, nov, dec); {месяц} year: 1900.. 2000 {год} end; var

D: Date; {переменная типа "дата"}

Запись состоит из трех компонент (три поля: day, month, year): первая — day и третья — year принадлежат к ограниченному типу данных, а вторая — month принадлежит к перечислимому типу данных.

Пример 2. Тип Person предназначен для создания "банка данных", со­держащих информацию о какой-либо группе людей (например, студентах). Компоненты FullName и Birthday сами являются записями (т.е. имеют место вложенные записи). type

Name = record

first, second, last: string[15] {фамилия, имя, отчество] end; Person = record

FullName: Name;

Birthday: Date; {см. выше определение типа Date} Sex: (male, female); {пол: мужской, женский} Height: 150.. 200; {рост} Ball: 2 .. 5 {оценка}

end; var

Student: Person; {переменная типа Person}

Для переменной Student, имеющей тип Person, могут иметь место сле­дующие присваивания:

Student. FullName.first: = 'Петров '; Student.FullName.second := 'Петр'; Student. FullName. last: = 'Петрович '; Student. Birthday, day := 1; Student. Birthday, month :=jan;

Student.Birthday.уear := 1978; Student. Sex := male; Student.Height := 170; Student. Ball := 5;

Используя оператор with-do (который позволяет определить область дей­ствия, где имена полей могут использоваться как обычные, не составные, име­на), эту группу операторов можно записать более компактно. with Student, FullName, Birthday do begin

First := 'Петров'; Second := 'Петр'; Last := 'Петрович'; day := 1; month :=jan; year := 1978; Sex := male; Height := 170; Ball := 5; end;

Задача. Посчитать общую стоимость покупки: книга, ручка и тетрадь. Цена (cost) задается общим количеством рублей (rouble) и копеек (copeck). При расчете суммарной стоимости необходимо осуществить перевод количества ко­пеек в рубли. Определить запись, состоящую из полей: предмет (строковый тип) и цена (запись, состоящая из полей — рубль и копейка). program bank; type

Cost = record {цена} rouble, [рубль} copeck: integer; {копейка} end; Thing = record {товар}

name: string[15]; {наименование товара} cena : cost {цена товара} end; var

t: array [1.3] of Thing; {массив, состоящий из записей типа Thing] i, sum_r, sum_c : byte;

begin

sum_r:=0; sum_c:=0; for i:=l to 3 do with t[i], cena do begin write(' наименование товара'); readln(name);

writelnC цена товара');

write(' руб= '); readln(rouble);

write(' коп= '); readln(copeck);

sum_r:= sum_r + rouble; sum_c:=sum_c+copeck;

end;

writeln('**** общая стоимость покупки ****'); wriyeln(sum_r+sum_c div 100, 'руб. ',sum_c mod 100,' коп.') end.