Названия полей записи могут совпадать с именами переменных констант и других объектов программы

Содержание

Под записью в языке PASCAL понимается структура данных, состоящая из фиксированного числа элементов разного типа.

Составляющие запись объекты называются ее полями. В записи каждое поле имеет свое собственное имя (идентификатор).

В определении типа записи после служебного слова RECORD следует , СПИСОК ПОЛЕЙ, состоящий из одного или нескольких элементов, называемых СЕКЦИЯМИ ЗАПИСИ. Если секций записи более одной, то они разделяются точкой с запятой. Вся последовательность завершается служебным словом END.

ОБЩИЙ ВИД ОПЕРАТОра

Допустим, что мы хотим определить тип данных RECORD с именем adress, и наша запись должна содержать три элемента: улицу (тип string), номер дома и номер квартиры (тип integer). Это будет выглядеть следующим образом:

house, flat : integer

Теперь, располагая определением типа adress, можно объявить одну и более переменных этого типа или даже ряд из элементов типа adress:

familiy : array [1..100] of adress;

house, flat : integer

Уроки на языке Pascal. Урок 15. Записи

Названия полей записи могут совпадать с именами переменных, констант и других объектов программ, но не могут совпадать с названиями полей других записей.

Чтобы обратиться к именам полей, необходимо написать имя переменной-записи и через точку имя нужного поля. Например:

for i:=1 to 100 do

Понятно, что такой синтаксис может стать довольно обременительным, в особенности с записями очень сложной структуры. В качестве альтернативы в языке PASCAL предусмотрено специальное средство, называемое WITH (присоединение). Формально предложение WITH строится по следующей схеме:

With префикс[,префикс [. ]] do оператор

где слово префикс обозначает имя одного или нескольких уровней записи. За заголовком WITH . DO следует любой оператор или группа операторов, заключенные в операторные скобки BEGIN и END.

for i:=1 to 100 do

WITH familiy[i] do

Пример 1

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

Источник: studfile.net

Туризм и путешествия

  • Отели

Мошенники выманивают данные кредитных карт

Подписчики телеграм-канала «Крыша ТурДома» предупредили о новой схеме VkontakteTwitterWhatsappСкопировать ссылку В телеграм-канале «Крыша ТурДома» разоблачили новую схему, которую используют аферисты,… Подробнее »

Отдых в Крыму: пробка перед Крымским мостом выросла до 9 километров

Колонна продолжает расти VkontakteTwitterWhatsappСкопировать ссылку Все больших масштабов пробка скапливается перед пропускным пунктом на Крымском мосту со стороны Краснодарского края.… Подробнее »

Рейсы Шереметьево: в столичном аэропорту произошел сбой системы обработки багажа

Система обработки багажа в Шереметьево не работала 9 часов VkontakteTwitterWhatsappСкопировать ссылку Большое количество пассажиров минувшим вечером и ночью отправились из… Подробнее »

Программирование на языке Pascal. Урок 12. Type, записи.

Популярные отели Крыма снизили цены на треть в 2023 году

В какую сумму обойдется отдых в начале июля? VkontakteTwitterWhatsappСкопировать ссылку Во многих крымских отелях цены на проживание в июне по… Подробнее »

Отели в Египте с лагунами и сетками от акул: безопаснее ли они для отдыха

Специалисты турагентств привели примеры VkontakteTwitterWhatsappСкопировать ссылку После новости о гибели россиянина из-за нападения акулы в Египте туристы и турагенты делятся местами… Подробнее »

Туристический поход: местные жители в Дагестане спасли упавшего в ущелье туриста до приезда МЧС

А в Дагестане – сорвавшегося со скалы туриста VkontakteTwitterWhatsappСкопировать ссылку Сразу несколько чудесных спасений произошли за последние сутки. В Бурятии… Подробнее »

Лето-2023: россияне рассчитывают потратить на отпуск 100–150 тысяч рублей

Затраты на отдых оценены в 100–150 тыс. рублей VkontakteTwitterWhatsappСкопировать ссылку Получить отпуск летом и уехать на курорт – мечта многих… Подробнее »

Правила провоза жидкостей на самолете в России остаются прежними

В аэропорту Хельсинки пассажирам разрешили брать на борт до 2 литров VkontakteTwitterWhatsappСкопировать ссылку Правила провоза жидкостей на самолете в РФ… Подробнее »

Популярные отели Крыма снизили цены на треть в 2023 году

В какую сумму обойдется отдых в начале июля? VkontakteTwitterWhatsappСкопировать ссылку Во многих крымских отелях цены на проживание в июне по… Подробнее »

Отдых в Таиланде: туристам предложат заплатить за въезд с 1 января

Пока неизвестно, как туристы будут его платить VkontakteTwitterWhatsappСкопировать ссылку Власти Таиланда в очередной раз отложили введение въездного сбора с иностранцев.… Подробнее »

Читайте также:
Лучшие программы для создания видеороликов в инстаграм

В России предлагают ввести невозвратные тарифы в гостиницах

РСТ выступил с предложением Минэку VkontakteTwitterWhatsappСкопировать ссылку На недавней встрече с главой Минэкономразвития Максимом Решетниковым во время форума «Путешествуй!» Российский… Подробнее »

Автобусы с туристами простояли на трассе Дон 10 часов

Туристические автобусы 10 часов простояли на трассе «Дон» VkontakteTwitterWhatsappСкопировать ссылку Туристы, направлявшиеся на курорты Краснодарского края на автобусах, 10 часов… Подробнее »

Судебная скамья не помешала турагенту продавать туры и зарабатывать новое уголовное дело

Кто виноват в ситуации? VkontakteTwitterWhatsappСкопировать ссылку В Кемерово завершено расследование уголовного дела в отношении 33-летнего директора турагентства. Ему вменяется мошенничество… Подробнее »

Альянс туристических агентств: федеральный реестр не способен защитить туристов от недобросовестных компаний

Две информационные системы дублируют друг друга VkontakteTwitterWhatsappСкопировать ссылку На конференции Альянса туристических агентств (АТА), которая прошла 12 мая в Анапе,… Подробнее »

В отеле «Аквалоо» в Сочи несколько детей пострадали от сильной аллергии после купания в бассейне

Родители хотят, чтобы были приняты меры VkontakteTwitterWhatsappСкопировать ссылку После купания в бассейне сочинского отеля «Аквалоо» 3* сразу несколько детей пострадали… Подробнее »

Популярные отели Крыма снизили цены на треть в 2023 году

В какую сумму обойдется отдых в начале июля? VkontakteTwitterWhatsappСкопировать ссылку Во многих крымских отелях цены на проживание в июне по… Подробнее »

Источник: otvetiq.com

Записи. Оператор присоединения

Запись – совокупность элементов разных типов. Определение типа запись начинается идентификатором record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля.

Type

Type

mashina = record

var m, v : mashina;

Для доступа к полям записи применяется либо квалификационное имя, либо оператор присоединения with. Квалификационное имя состоит из идентификатора переменной и идентификатора поля, разделенных точкой. Например: m.nomer, m.marka.

Обращение к полям записи с помощью квалификационного имени несколько громоздко, особенно если используются длинные идентификаторы. Для решения этой проблемы в Паскале предназначен оператор присоединения with, который имеет следующий формат:

Один раз указав переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными.

Пример 10.1 type str = packed array [1..8] of char;

adr = record

gorod, prosp : str;

dom, kvart : 1..999

var adr1, adr2 : adr;

Используя оператор присоединения, присвойте переменной adr1 значение, соответствующее адресу: Астана, пр. Республики, д.7, кв. 39. Кроме того, переменной adr2 присвойте такое же значение, заменив в нем номер квартиры на 17.

with adr1 do

Begin

adr2 := adr1; adr2.kvart := 14;

Задание 10.1

1. Опишите запись для представления следующего понятия:

а) цена в тенге и тиын;

б) время в часах, минутах и секундах;

в) дата (число, месяц, год);

г) семинар (предмет, преподаватель, номер группы, день недели, часы занятия, аудитория);

д) бланк требования на книгу (сведения о книге: шифр, автор, название; сведения о читателе: номер читательского билета, фамилия; дата заказа);

е) экзаменационная ведомость (предмет, номер группы, дата экзамена, 25 строчек с полями: фамилия студента, номер зачетной книжки, оценка за экзамен).

2. type stroka = packed array [1..15] of char;

vershina = record

spisok : array [1..30] of veshina;

Опишите процедуру SamajaVysokaja(C), печатающую название самой высокой вершины из списка С.

3. Ответьте на следующие вопросы:

а) Верно ли, что все поля записи должны быть разных типов?

б) Почему при описании записи все поля могут перечисляться в любом порядке?

в) Верно ли, что названия полей могут совпадать с именами переменных, констант и других объектов программы, но не могут совпадать с названиями полей других записей?

4. type complex = recordre, im : real end;

point = record x, y : real end

var z, w : complex; p : point; re : real;

Определите, какие значения будут иметь переменные z, w, p и re после выполнения следующих операторов:

with z do begin re := 0; im := 1 end;

with z do re := 1;

with z, w do im := — im;

with p do begin x := re; y := 2 end;

5. type name = (Aiman, Sholpan, Sveta, Tanya, Marat, Kairat, Sasha, Pasha);

data= recordpol : (man, woman);

rost : 150..200 end;

gruppa = array [name] of data;

а) функцию srednrost(gr), определяющую средний рост женщин из группы gr;

б) функцию vysoki(gr) для определения имени самого высокого мужчины из группы gr;

в) логическую функцию odinrost(gr), проверяющую, есть ли в группе gr хотя бы два человека одного роста.

Множественные типы

Множество – это структурированный тип данных, представляющий набор взаимосвязанных по какому-либо признаку объектов, которые можно рассматривать как единое целое. Формат:

Type

Множество задается перечислением значений или отрезком типа, или именем скалярного типа. Например:

Type

den = set of (sun, mon, tue, wen, thu, fri, sat);

letter = set of ‘a’..’z’;

dni = set of 1..31;

Задание 11.1

bits = set of 0..1;

var x : bits; y : set of (a, b, c);

Ответьте на следующие вопросы:

а) Каков базовый тип каждого из указанных множественных типов?

б) Сколько и какие значения могут принимать каждая из переменных x, y и z?

2. type M = set of 0..99;

Опишите функцию card(A), подсчитывающую количество элементов в множестве A типа M. (Например, card([5, 8, 23]) = 3.)

Читайте также:
Какая прическа тебе подходит мужская программа

3. Опишите процедуру print(A), печатающую в алфавитном порядке все элементы множества А, имеющего тип letter.

4. Вычислите значения отношений:

а) [2] <> [2, 2, 2]; д) ‘q’ in [‘a’..’z’];
б) [‘a’, ‘b’] = [‘b’, ‘a’]; е) trunc(3.9) in [1, 3, 5];
в) [4, 5, 6] = [4..6]; ж) [2] < [1..3];
г) [2, 3, 5, 7] з) 77 = [77].

5. var x, y, z : set of 8..22;

Переменной x присвойте множество всех целых чисел от 8 до 22, переменной у – множество всех простых чисел из этого диапазона, а переменной z – множество всех составных чисел из этого же диапазона.

Файловые типы

Файл – это последовательность однотипных компонентов, расположенных на внешнем носителе. Тип этих компонентов может быть любым за исключением типа файл.

Файловые переменные используются для ввода-вывода информации.

Существует три категории файлов, работа с которыми отличается друг от друга:

1) текстовые (тип Text);

2) типизированные (file of );

3) файлы без типа (file).

Обычно все файлы считаются файлами последовательного доступа, но для типизированных файлов и файлов без типа с помощью процедуры Seek можно установить режим произвольного доступа. При этом нумерация компонентов файла начинается с нуля. После работы с файлом он должен быть закрыт процедурой Close.

Ниже приведены некоторые стандартные процедуры и функции для работы с файлами:

Процедура Назначение
Assign (f, name) связь файловой переменной f с внешним файлом name;
Chdir (path) изменение текущей директории, где path — путь;
Close (f) закрытие открытого файла;
Erase (f) уничтожение внешнего файла;
Getdir (n, s) получение текущего каталога накопителя, где s – переменная для хранения текущего накопителя, а n – номер накопителя, принимающий следующие значения: 0– текущий накопитель, 1 – накопитель А:, 2 – накопитель В и т.д.;
Mkdir (path) создание каталога;
Rename (f, new) Переименование внешнего файла;
Reset (f [, size]) Открытие существующего файла;
Rewrite (f [, size]) Открытие нового пустого файла, которому присваивается имя, заданное процедурой Assign.
Rmdir (path) Удаление пустого каталога
Eof (f) конец файла
Ioresult Результат последней операции ввода-вывода: 0 – операция завершена успешно, иначе – другое число.

Пример 12.1 Считать файл one, удвоив каждый его элемент через пробел (файл one был создан ранее и наполнен данными).

program p121;

var f1, f2 : Text; x : char;

Begin

while not eof(f1) do

Begin

write(f2, x + ‘ ‘ + x)

End.

Задание 12.1

1. Ответьте на вопросы:

а) Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован?

б) Можно ли, считав из файла пятый элемент, затем сразу же считать второй элемент? А какой можно?

в) Верно ли, что считав из файла пятый элемент, затем уже никогда нельзя считать его второй элемент?

г) В какое место файла можно добавлять новые элементы: в начало, в середину, в конец, куда угодно, никуда?

д) Если не переписывать значения заново, то значения каких его элементов можно менять: только первого, только последнего, каких угодно, никаких? А какие элементы можно удалять из файла (при том же условии)?

е) Верно ли, что в одно и то же время нельзя считывать из файла и записывать в него? Верно ли, что, начав считывать из файла, затем уже никогда нельзя записывать в него? А наоборот?

ж) Можно ли сравнивать файлы или присваивать один файл другому?

2. type ryad = file of 0..999;

Опишите логическую функцию upor(r), проверяющую, упорядочены ли по возрастанию элементы непустого ряда r.

3. type textovka = file of char;

Опишите логическую функцию eq(t1, t2), проверяющую тексты f1 и f2 на равенство.

4. Считайте файл, удвоив все буквы ‘а’.

5. Прочитайте файл и определите, сколько раз в нем встречается буква а.

6. Прочитайте файл и найдите сумму цифр, встречающихся в нем.

7. Постройте конкатенцию (сцепление или последовательную запись) файла самого с собой.

8. Прочитайте файл и выведите его задом наперед.

9. Постройте конкатенцию файла самого собой, только записанного задом наперед.

10. Удалите в файле текст после первой точки.

Модуль Crt

Модуль CRT представляет собой библиотеку функций и процедур, предназначенных для увеличения возможностей текстового ввода-вывода данных.

Работа с текстом

Для задания одного из текстовых режимов предназначена процедура Textmode(mode : word), где mode — код текстового режима, который может принимать значения:

— BW40 = 0 — черно-белый режим 40×25;

— CO40 = 1 — цветной режим 40×25;

— BW80 = 2 — черно-белый 80×25;

— CO80 = 3 — цветной режим 80×25;

— MONO = 7 — монохромный для ч/б адаптеров

Какой бы режим не был установлен, координаты верхнего левого угла экрана всегда определяются как x1 = 1 и y1 = 1.

Ниже перечислены некоторые процедуры и функции модуля CRT:

Функция или процедура Назначение
Keypressed определяет, была ли нажата клавиша на клавиатуре;
Readkey читает значение нажатой клавиши;
Textbackground определяет цвет фона;
Textcolor цвет выводимых символов;
Textmode определяет текстовый режим;
Clrscr очищает экран и устанавливает курсор в верхний левый угол экрана;
Window определяет текстовое окно на экране;
Wherex возвращает значение горизонтальной координаты
Wherey возвращает значение горизонтальной координаты
Gotoxy переводит курсор в указанное место
Delline Уничтожает всю строку с курсором
Insline вставляет строку
Clreol стирает часть строки от курсора до правой границы
Highvideo Устанавливает повышенную яркость символов
Normvideo Устанавливает нормальную яркость символов
Lowvideo Устанавливает пониженную яркость символов
Assigncrt связывает текстовый файл с окном CRT
Читайте также:
Программа для того чтобы сделать видео из презентации

В модуле CRT можно устанавливать цвета фона и цвета символов и с помощью следующих мнемонических констант:

Black = 0 Черный darkgray = 8 темно-серый
blue = 1 темно-синий lightblue = 9 голубой
Green = 2 темно-зеленый lightgreen = 10 салатовый
cyan = 3 Бирюзовый lightcyan = 11 светло-бирюзовый
red = 4 Красный lightred = 12 розовый
Magenta = 5 Фиолетовый lightmagenta = 13 малиновый
Brown = 6 Коричневый yellow = 14 желтый
Lightgray = 7 светло-серый blink = 125 мерцание символа

Управление звуком

В модуле CRT имеется возможность управления звуком. Можно генерировать звуковые сигналы частотой 37 – 32767 Гц. Сила (громкость) звука не регулируется.

Для управления частотой звука и его продолжительностью в языке Паскаль используются стандартные процедуры Sound, NoSound и Delay.

Sound — заставляет динамик звучать с нужной частотой;

NoSound — отключает динамик;

Delay — вводит задержку звука в миллисекундах.

С помощью циклов и Sound можно организовать сирены, будильники, метрономы, пение птиц, фрагменты музыкальных произведений.

Нота Малая октава Первая октава Вторая октава
До 261,63 523,25 1046,50
Ре 293,66 587,33 1174,07
Ми 329,63 659,26 1318,15
Фа 349,23 698,46 1396,05
Соль 392,00 784,99 1568,00
Ля 440,00 880,00 1760,00
Си 493,88 987,77 1975,00

Пример 13.1 Электронный композитор.

procedure makermusic;

var i : integer;

begin i := 1;

repeat i := i + 1;

sound (random(180) + 40 +i);

until keypressed

Пример 13.2 Имитация музыкального инструмента (на дополнительной цифровой клавиатуре).

program p132;

const m : array[1..8] of integer = (262, 294, 330, 349, 392, 440, 494, 523);

var i : integer; ch : char;

Begin

while true do

Begin

case ch of

else write(‘Клавише звук не назначен’)

End.

1. Нарисуйте с помощью процедуры Window на экране прямоугольник и заставьте его двигаться по горизонтали, сопровождая движение звуком.

2. На экране несколько раз разными цветами напечатайте фразу «2 курс», расположив эти надписи лесенкой.

3. Нарисуйте на экране несколько вложенных друг в друга разноцветных прямоугольников.

4. Нарисуйте с помощью процедуры Window на экране прямоугольник и заставьте его двигаться по вертикали, сопровождая движение звуком.

5. Нарисуйте с помощью процедуры Window на экране прямоугольник и заставьте его двигаться по диагонали, сопровождая движение звуком.

Графика. Модуль Graph

Библиотека графических подпрограмм Graph, содержащая более 50 разнообразных процедур и функций, расширяет возможности Паскаля по созданию графических изображений.

Модуль Graph требует установления графического режима. Для того чтобы это стало возможным, необходимо проделать следующие действия:

1) в программе должна быть ссылка на модуль

uses graph;

2) работу модуля нужно инициировать командой:

initgraph (driver, mode, ‘C:PascalBGI’);

где driver — параметр установки типа графического драйвера видеоадаптера; mode — задание режима его работы; ‘C:PascalBGI’ — строка, указывающая на путь к директории, где расположены графические драйверы *.BGI. Если в той же директории, где находится ваша программа, располагается и требуемый драйвер, то эта строка должна быть пуста, т.е. initgraph (driver, mode, ‘ ’);

необходимо настроить среду Паскаль. Для этого в меню Options – Directories среды в поле Unit необходимо указать каталог, где размещен файл graph.tpu.

Если вы затрудняетесь указать режим работы вашего видеоадаптера, то позвольте системе определить это самой с помощью функции detect. Например:

program p14;

uses graph;

var driver, mode : integer;

Begin

initgraph(driver, mode, ‘C:PascalBGI’);

Перед выходом из программы графический режим нужно закрыть командой Closegraph.

Функция или процедура Назначение
Arc построение дуги окружности
Bar построение закрашенного прямоугольника
Circle построение окружности
ClearDevice очистка экрана и заливка его цветом фона
Ellipse построение эллипса
Getmaxx возвращает максимальную координату х
Getmaxy возвращает максимальную координату у
Line рисует линию
OutText выводит текст
PutPixel рисует точку
Rectangle рисует прямоугольник
SetBkColor задает цвет фона
SetColor задает цвет линий

Пример 14.1 Построить семейство разноцветных случайным образом расположенных окружностей.

program p14;

uses graph;

var driver, mode : integer;

Begin

initgraph(driver, mode, ‘C:PascalBGI’);

Repeat

until keypressed;

End.

Задание 14.1

1. Постройте семейство одинаковых кругов, центры которых расположены на синусоиде.

2. Постройте семейство разноцветных случайным образом расположенных окружностей.

3. Постройте семейство разноцветных случайным образом расположенных линий.

4. По периметру экрана постройте семейство разноцветных квадратиков, а в середине – множество разноцветных точек.

5. Постройте семейство одинаковых окружностей, центры которых лежат на окружности большего диаметра.

Список литературы

1. Паскаль для персональных компьютеров: Справ. пособие / Ю.С. Бородич, А.Н. Вальвачев, А.И.Кузьмич. – Мн.: Выш.шк.: БФ ГИТМП «НИКА», 1999. – 365 с.

2. Абрамов В.Г., Трифанов Н.П., Трифонова Г.Н. Введение в язык Паскаль. – М.: Наука, 2000. – 224 с.

3. Учимся программировать: PASCAL 7.0. Задачи и методы их решения. – 2-е изд., перераб. и доп. – М.: «Диалог – МИФИ», 1998. – 256 с.

4. Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. – М.: Наука, 1989. – 160 с.

5. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. – М.: Наука, 1987. – 112 с.

6. Кнут Д. Искусство программирования для ЭВМ: Пер. с англ. – М.: Мир, 1978. Т.3. – 844 с.

Источник: megaobuchalka.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru