русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Withpers.birthday do


Дата добавления: 2013-12-23; просмотров: 605; Нарушение авторских прав


Var

Type

Var

Type

circle = record

x, y: integer;

r: word

end;

a, b: circle;

 

В этом примере объявляется тип circle (окружность), который представляет собой запись с полями x, y (координаты центра) и r (радиус). Переменные a и b содержат записи типа circle.

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

 

a.x := -5; b.y := 6; a.r := 2;

 

Как и массивы, записи нельзя целиком сравнивать и выводить на экран; эти операции выполняются покомпонентно. Раздел записи может представлять собой описание массива или ранее объявленной записи, при этом глубина вложенности конструкций не ограничена. Имена полей должны быть уникальными в пределах той записи, где они были объявлены, однако на разных уровнях вложенности имена могут повторяться. Например

 

date = record

day: 1..31;

month: 1..12;

year: word

end;

person = record

name: string[20];

birthday: date;

param: array[1..3] ofbyte;

year: word

end;

pers: person;

mp: array [1..10] ofperson;

 

В последнем примере запись типа person включает в себя следующие поля структурных типов: name – строка символов, date – запись с полями день, месяц, год и param – массив из трех элементов типа byte. Имя поля year повторяется в записях типа date и типа person, однако значения этих полей физически никак не связаны. Переменная mp представляет собой массив из записей типа person. Доступ к отдельным компонентам такой структуры можно проиллюстрировать на следующем примере:

 

pers.name := ‘Иванов’;



pers.birthday.day := 12;

pers.birthday.month := 6;

pers.birthday.year := 1967;

pers.param[1] := 5;

mp[3] := pers; { допускается присвоение переменных типа запись друг другу }

writeln( mp[3].name,’ ‘, mp[3].birthday.year,’ ‘, mp[3].param[1]);

 

В результате выполнения приведенного фрагмента программы на экран будет выведено: «Иванов 1967 5»

 

9.1 Оператор присоединения with

 

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

 

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

 

Здесь with, do– зарезервированные слова (с, делать);

<переменная> – имя переменной типа запись, за которой может следовать список вложенных полей;

<оператор> – любой оператор Турбо Паскаля.

Оператор with, собственно, ничего не делает. Он служит для упрощения формы записи: в операторе, стоящем после do, можно использовать имена полей в качестве обычных переменных, при этом имя переменной-записи присоединяется автоматически. Например,

 

withpers doname := ‘Иванов’;

beginday := 12; month := 6; year := 1967 end;

 

Пример 1. Написать программу, которая вводит массив записей и затем выводит его на экран в виде таблицы. Каждая запись должна содержать следующие поля: фамилию, дату рождения (число, месяц, год) и место рождения (город). Количество записей - до 5.

Решение. Для наглядности введем дополнительный тип данных, представляющий дату и включающий три поля: число, месяц, год (в рамках данной задачи это, строго говоря, необязательно). Тогда основной тип данных будет представлять собой запись со следующими полями: фамилия (строка символов длиной до 20), дата рождения (запись типа дата) и место рождения (строка символов длиной до 20). Фактическое количество записей в массиве будем вводить с клавиатуры. Программа логически делится на две части – ввод и вывод данных. Ввод трудностей не представляет, достаточно попросить пользователя ввести по очереди все поля каждой записи. Для этого подходит циклическая структура типа for. Вывод реализовать немного сложнее, поскольку последовательный вывод значений полей не образует таблицу. Здесь возможны два варианта – использовать сложный форматный вывод данных с учетом фактической длины строк типа string, либо позиционирование курсора с помощью процедур и функций модуля CRT. Второй путь проще и дает больше возможностей. Действительно, можно очистить экран, а затем перед выводом очередного поля позиционировать курсор в нужную позицию текущей строки. Чтобы таблица выглядела красиво, нужно еще вывести ее заголовок (шапку) перед циклом вывода данных, а также правильно рассчитать позиции на экране. Текст программы с использованием модуля CRT приведен ниже.

 

program test_rec;

{ Программа иллюстрирует работу с данными типа запись }

Uses Crt;

type{ объявление типа date }

date = record

day: 1..31;

month: 1..12;

year: word

end;

person =record{ объявление типа person }

name:string[20];

birthday: date;

city: string[20];

end;



<== предыдущая лекция | следующая лекция ==>
Базовый двигатель и способы его видоизменения. | Casebyte of


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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