Тип "Запись" (Record) и оператор присоединения With - Записи в Турбо Паскале
Запись - это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов. Определение типа записи начинается идентификатором record и заканчивается зарезервированным словом end. Между ними располагается список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля. Тип "запись" определяется конструкцией
RECORD
Поле1: ТипПоля1;
Поле2: ТипПоля2;
ПолеМ : ТипПоляМ
END;
Если тип нескольких полей совпадает, то имена полей могут быть просто перечислены, например:
Type
PointRecType = record x, y: Integer end;
Пример.
Type
Car=Record
Number: |
Integer; |
{Номер} |
Marka: |
String[20]; |
{Марка автомобиля} |
FIO: |
String[40]; |
{Фамилия, инициалы владельца} |
Address: |
String[60]; |
{Адрес владельца} |
End;
Var
M, V: Car;
В данном примере запись Car содержит четыре компонента: номер, название марки машины, фамилию владельца и его адрес. Доступ к полям записи осуществляется через переменную типа "запись". В нашем случае это переменные М и V типа Car.
Идентификатор поля должен быть уникален только в пределах записи, однако во избежание ошибок лучше делать его уникальным в пределах всей программы. Порядок описания полей в определении записи задает их порядок хранения в памяти. Объем памяти, необходимый для записи, складывается из длин полей.
Значения полей записи могут использоваться в выражениях. Имена отдельных полей не применяются по аналогии с идентификаторами переменных, поскольку может быть несколько записей одинакового типа. Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, которые разделены точкой. Такая комбинация называется составным именем.
Например, чтобы получить доступ к полям записи Car надо написать:
M. Number, M. Marka, M. FIO, M. Address.
Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.
Пример.
M. Number:=1678;
M. Marka:= 'Газ_24';
M. FIO:='Иванов И. И.'
M. Address:='ул. Пушкина 12-31';
Составные имена можно использовать, в частности, в операторах ввода-вывода:
Read(M. Number, M. Marka, M. FIO, M. Address);
Write(M. Number:4, M. Marka:7, M. FIO:12, M. Address:25);
Допускается применение оператора присваивания, и к записям в целом, если они имеют одинаковый тип. Например, V := М;
После выполнения этого оператора значения полей записи V станут равными значениям соответствующих полей записи М.
В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:
Type
Person= record
FIO: string[20];
Age : 1..99;
Prof: string[30];
End;
Var
List: array[1..50] of Person;
Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более пяти символов. Для решения этой проблемы в языке Pascal предназначен оператор with, который имеет следующий формат
With ИмяПеременной_Записи DO Оператор;
Указав один раз переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными, т. е. без указания перед идентификатором поля имени переменной, определяющей запись.
Пример: Присвоить значения полям записи Саг с помощью оператора with
With M do
Begin
Number:=1678;
Marka:= 'Газ_24';
FIO:='Петров В. И.'
Address:='ул. Остужева 2-31';
End;
Внутри области действия оператора with могут указываться и переменные, не имеющие отношения к записи. Но в этом случае надо следить, чтобы они не совпадали по написанию с полями записи.
PROGRAM MAIN;
Var
X, Y: Integer;
RecXY: record X, Y: Integer end;
Begin
X: =10; Y: =20; |
{ значения переменных X и Y } |
With RecXY do begin |
{ работаем с записью RecXY } |
X: = 3.14 * X; |
{Где какой X и Y? } |
Y: = 3.14 * Y |
End; {with}
End.
Действия внутри оператора with проводятся только над полями записи RecXY. Чтобы сохранить оператор with и "развязать" имена X и Y, надо к переменным X и Y приписать так называемый квалификатор - имя программы или модуля (UNIT), в которой они объявлены (для этого программа должна иметь заголовок). Так, оператор присоединения можно исправить следующим образом:
With RecXY do begin
X: = 3.14 * Main. X;
Y: = 3.14 * Main. Y
End;
И проблема исчезнет.
В Pascal допускает вложение записей (т. е. поле записи само является записью), соответственно оператор with тоже может быть вложенным.
With RV1 do
With RV2 do
With RVn do...
Что эквивалентно конструкции
With RV1, RV2, ..., RVn do...
Уровень вложенности записей не должен превышать 9.
Пример 1. Создать программу, для решения следующей задачи: Пусть дана ведомость абитуриентов, сдавших вступительные экзамены в институт. определить фамилии абитуриентов, начинающиеся с буквы А, и набравших средний балл не менее 4. Вывести на печать фамилию абитуриента и его средний балл.
Программа выглядит следующим образом:
Program Abt;
Uses CRT;
Const M=15;
Type T=record
Fio :string[10];
Ocn :array[1..3] of integer;
end;
Var
Spisok :T;
Kol :integer;
N :integer;
Bal :real;
I :integer;
Begin
Clrscr;
Kol:=0;
Write('Введите количество абитуриентов :');
Readln(N);
For i:=1 to N do
With Spisok do
Begin
Write('Введите ФИО :');readln(Fio);
Write('Введите Оценку 1 :');readln(Ocn[1]);
Write('Введите Оценку 2 :');readln(Ocn[2]);
Write('Введите Оценку 3 :');readln(Ocn[3]);
Bal:=(Ocn[1]+Ocn[2]+Ocn[3])/3;
If (Bal>=4.0) and(Fio[1]='А') then begin kol:=kol+1;
Writeln('Абитуриент ',Fio:10,' средний балл ',bal:6:2);end;
Writeln;
End;
If kol=0 then writeln('Абитуриентов, отвечающих данным условиям нет');
Readln;
End.
Результат работы:
Введите количество абитуриентов :3
Введите ФИО :Иванов
Введите Оценку 1 :4
Введите Оценку 2 :5
Введите Оценку 3 :4
Введите ФИО :Антонов
Введите Оценку 1 :4
Введите Оценку 2 :3
Введите Оценку 3 :4
Введите ФИО :Акунин
Введите Оценку 1 :4
Введите Оценку 2 :5
Введите Оценку 3 :5
Абитуриент Акунин средний балл 4.67
Похожие статьи
-
Записи с вариантами - Записи в Турбо Паскале
Записи, представленные выше, имеют строго определенную структуру. В не которых случаях это серьезно ограничивает возможности их применения. Поэтому в...
-
ЗАПИСИ, МНОЖЕСТВА - Типы данных в программе Турбо Паскаль
Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи...
-
Примеры операторов вызова процедур - Структурирование программы
T; {нет списка фактических параметров Summa(x, y,z); {x, y,z - фактические параметры; x: integer; у, z; real} a(z); {z - фактический параметр, z:d} При...
-
ОПЕРАТОР ВВОДА ДЛЯ ЧТЕНИЯ ФАЙЛА, ОПЕРАТОР ВЫВОДА - Язык программирования Паскаль
Оператор ввода для чтения файла обладает всеми свойствамии обычного оператора READ. Вкачестве параметров могут быть переменные; каждая переменная поучает...
-
Изучить операторы цикла в ТР. - Циклические алгоритмы
Циклы организуются, чтобы выполнить некоторый оператор или группу операторов определенное число раз. В языке Си три оператора цикла: for, while и do -...
-
ПОРЯДКОВЫЕ ТИПЫ, Логический тип - Типы данных в программе Турбо Паскаль
К порядковым типам относятся целые, логический, символьный, перечисляемый и тип-диапазон. Целые типы. Диапазон возможных значений целых типов зависит от...
-
Основные операторы - Функциональные модели универсального нейрокомпьютера
Оператор присваивания состоит из двух частей, разделенных знаком "=". В левой части оператора присваивания могут участвовать им Ена любых переменных. В...
-
Записи, множества, файлы - Структуры данных
Обобщением массива является комбинированный тип данных - запись, являющаяся неоднородной упорядоченной статической структурой прямого доступа. Запись...
-
ТИПЫ ДАННЫХ, ПРОСТЫЕ ТИПЫ - Типы данных в программе Турбо Паскаль
Любые данные, т. е. константы, переменные, значения функций или выражения, в Турбо Паскале характеризуются своими типами. Тип определяет множество...
-
Типы записей в базе данных DNS-сервера - Компьютерные сети
DNS-сервер, отвечающий за имена хостов в своей зоне, должен хранить информацию о хостах в базе данных и выдавать ее по запросу с удаленных компьютеров....
-
Оператор векторизации - Массивы, векторы и матрицы
Большинство приведенных операторов достаточно известны из математического аппарата матричных вычислений. Под понятием векторизации подразумевается...
-
Интегрирование, Оператор интегрирования - Вычисление интегралов в Mathcad
Интегрирование в MathCAD реализовано в виде вычислительного оператора. Допускается вычислять интегралы от скалярных функций в пределах интегрирования,...
-
Устройства звукозаписи, Подключение устройств записи - Технология мультимедиа. Монтаж фильма
Устройство звукозаписи позволяет Записывать звук от внешнего источника на компьютер. Наиболее часто используемым типом устройства звукозаписи является...
-
Правила записи программы на языке Си - Основы программирования
Как указывалось выше, программа перед обработкой компьютером должна быть помещена в файл на диске. Обычно этот файл имеет расширение <.c>. Рассмотрим...
-
ТИПИЗИРОВАННЫЕ КОНСТАНТЫ - Типы данных в программе Турбо Паскаль
В Турбо Паскале допускается использование типизированных констант. Они задаются в разделе объявления констант следующим образом: <индификатор> :...
-
ПРОЦЕДУРНЫЕ ТИПЫ, ТИП ОБЪЕКТ - Типы данных в программе Турбо Паскаль
Процедурные типы -- это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов -- дать программисту гибкие...
-
Пример программы построения анимации - Работа с языком Турбо Паскаль
Unit unit1; Interface uses graph; Type arpo = array [1..4] of PointType; {хранит коорд. Вершин прямоугольника} { Справка: PointType = Record X, Y :...
-
Тема: позиційні системи числення (ПСЧ), переведення чисел з десяткової системи числення до довільної ПСЧ та переведення з довільної ПСЧ до десяткової...
-
CoDeSys -- универсальный инструмент разработки прикладных программ для программируемых логических контроллеров на языках стандарта IEC 61131-3. Данный...
-
Понятие "массив" носит фундаментальный характер. Самым удобным способом хранения большого количества однотипных данных является массив. Обработка...
-
Таблица 2 A B C D E F G H I 1 № п/п Судья Кол-во рассмотренных исков В % от всех исков Выработка 2 Май Июнь Июль Август Всего 3 1 Белов В. В. 22 24 28 27...
-
Оборудование тепличного хозяйства, Центральный пост оператора - Автоматизация теплицы
В электрощитовом зале насосной станции второго подъема будет установлен шкаф с оборудованием, отвечающим за управление частотными регуляторами, измерение...
-
Оператор SWITCH - Формування навичок програмування з використанням алгоритмічної мови С++
Оператор switch дозволяє здійснити вибір серед декількох фрагментів коду, залежно від значення цілочисельного виразу. Тіло оператора switch складається з...
-
СТРОКИ, ФАЙЛЫ - Типы данных в программе Турбо Паскаль
Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY [0..N] OF CHAR,...
-
АННОТАЦИЯ - Руководство оператора
В данном программном документе приведено руководство оператора по применению и эксплуатации программы "AdressBook. ехе", предназначенной для ведения...
-
ВЕЩЕСТВЕННЫЕ ТИПЫ, СТРУКТУРИРОВАННЫЕ ТИПЫ, МАССИВЫ - Типы данных в программе Турбо Паскаль
В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляется в ПК абсолютно точно, значения...
-
Конфигурация устройств ввода-вывода Турбо Паскаля - Программирование в среде Turbo Pascal
Результаты работы программы и исходные данные могут быть записаны в файлы на диске, с помощью специальных процедур работы с файлами прямо из программы. В...
-
STORAGEA - устанавливает определенную емкость памяти. Если емкость не определена, то значением по умолчанию является 32767. SAVEVALUE - сохраняет...
-
Что происходит во время записи? - Компьютерные и сетевые технологии
При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и...
-
1.2.1 Уточнение постановки задачи Для анализа в рамках проекта выберем очень простые, но от этого не менее актуальные , задачи БД отеля. 1. Добавление...
-
СООБЩЕНИЯ ОПЕРАТОРУ, Сообщение о программе, Листинг программы - Руководство оператора
Сообщение о программе Программа "AdressBook. ехе" выдает сообщение о программе, при выборе в главном меню пункта "О программе" во вкладке "Помощь"...
-
Рекурсивная программа построения снежинки Написать программу, строящую на экране изображение: Изображение строится по следующему правилу: строится...
-
Скалярные переменные - Язык программирования PERL. Сфера применения
Как отмечалось, скалярная переменная может содержать единственное значение. В языке Perl имена скалярных переменных всегда начинаются со знака ($). В еле...
-
Для проекта предусматривающего наличие большого количества задач, отображение показателей и составление отчетов, ручное ведение проекта не является...
-
Циклы в языке программирования Pascal
Цель: Познакомить учащихся с программированием циклических алгоритмов. pascal циклический алгоритм Методическая разработка рассчитана на учащихся 9-х...
-
Ввод элементов векторов и матриц - Массивы, векторы и матрицы
Векторы и матрицы можно задавать путем ввода их элементов - индексированных переменных. Для указания подстрочных индексов после имени переменной вводится...
-
Структура SQL - Банки и базы данных. Системы управления базами данных
Широкое развитие информационных систем и связанная с этим унифицированность информационного пространства привело к необходимости создания стандартного...
-
Для администратора проекта ИИС "MD_SLAGMELT" разработано средство логирования. После завершения выполнения программы, в случае возникновения...
-
Минимальный состав аппаратных средств Минимальный состав используемых технических (аппаратных) средств: IBM PC совместимый с процессором 80386 и выше ОЗУ...
-
ФУНКЦИИ И ПРОЦЕДУРЫ, Модуль Graph, Координаты, окна, страницы - Работа с языком Турбо Паскаль
Модуль Graph Модуль Graph Турбо Паскаля содержит около пятидесяти различных процедур и функции, предназначенных для работы с графическим экраном. В этом...
Тип "Запись" (Record) и оператор присоединения With - Записи в Турбо Паскале