Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
123441.doc
Скачиваний:
4
Добавлен:
24.09.2019
Размер:
427.52 Кб
Скачать

Var Pr : Simply;

N : Number;

Letter : set of char;

Var s2: set of 'a'..'z','A'..'Z';

{множество из 52-х элементов}

s3: set of 0..10; {множество из 11-ти элементов}

s4: set of boolean; {множество из 2-х элементов}

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

[<список_элементов>]

Примеры конструирования и использования различных множеств:

If c in ['a','e','I','o','u'] then

writeln('Гласная буква');

if set1 < [k*2+1 .. n, 13] then

set1:=[];

Множество - это структурированный тип данных, поэтому его невозможно задать нетипизированной константой!

-30-

Объединение множеств. Разность множеств. Пересечение множеств.

Объединением двух множеств является третье множество, содержащее элементы обоих множеств (AÈB).

Графическая интерпретация:

Пример

Разностью двух множеств является третье множество, которое содержит элементы первого множества, не входящие во второе множество (A \ B).

Графическая интерпретация:

Значение А

Значение В

Выражение

Результат

[1, 2, 3]

[1, 4, 2, 5]

A * B

[1, 2]

[‘A’..’Z’]

[‘B’..’R’]

A * B

[‘B’..’R’]

[ ]

[ ]

A * B

[ ]

Пересечением двух множеств является третье множество, которое содержит элементы, входящие одновременно в оба множества(AÇB).

Графическая интерпретация:

-31-

Комбинированный тип данных. Запись. Описание записи. Доступ к полям записи.

Запись – это тип данных, который может включать в себя несколько полей – элементов разных типов (в том числе и другие структуры).

Объявление (выделение памяти):

var Book: record

author: string[40]; // автор, строка

title: string[80]; // название, строка

year: integer; // год издания, целое

pages: integer; // кол-во страниц, целое

end;

Обращение к полям:

Для обращения к полю записи используется точка!

readln(Book.author); // ввод

readln(Book.title);

Book.year := 1998; // присваивание

if Book.pages > 200 then // сравнение

writeln(Book.author, '.', Book.title); // вывод

Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа.

Во всех остальных случаях оперируют отдельными полями записей.

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

str.fio, str.tel

Такое имя называется составным.

Запись может входить в состав данных более сложной структуры.

Можно говорить, например, о массивах и файлах, состоящих из записей.

Запись может быть полем другой записи.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения

With.

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

Формат оператора:

With <переменная–запись>

{, <переменная–запись>} do

<оператор> ;

-32-

Записи с вариантами.

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

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

Любая запись может иметь только одну вариантную часть, которая должна размещаться в конце записи (после фиксированной части). Однако, внутри какого-либо варианта, в свою очередь, может присутствовать другая вариантная часть, вложенная в первую.

При записи варианта (списков элементов) обязательно наличие круглых скобок, даже если в них ничего не заключается.

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

Type pol=(m,w);

people=record

fam:string[20];

godro:1900..2007;

case mw:pol of

m: ( voen: boolean; spec: string[15]);

w: ( merry: boolean; child: byte)

end;

var p1, p2: people;

Все имена элементов должны быть различными, даже если они встречаются в разных вариантах.

К элементам вариантной части можно обращаться так же, как к элементам фиксированной части записи.

P1.mw:=m; p1.voen:=true; p2.child:=2;

-33-

Модуль CRT

Модуль Crt позволяет выводить цветные символы на цветном экране. Хотя по-прежнему отображение будет происходить в текстовом режиме. Текстовый режим означает, что на экране могут выводиться только определенные символы в определенных местах (знакоместах). Можно представить экран, разделенным вертикальными и горизонтальными линиями на ячейки. В эти ячейки можно «вписывать» различные символы. У каждой ячейки есть адрес.

Модуль Crt содержит ряд процедур, позволяющих задавать цвет символов и экрана, очищать экран, менять позицию курсора и др.

Стандартный экран в Паскале чаще формируется из 25 сток и 80 столбцов. Строки нумеруются сверху вниз, а столбцы слева на право. Нумерация начинается с единицы (что может показаться непривычным).

Количество доступных цветов (для экрана и символов) всего 16. Они кодируются числами от 0 до 15. Также вместо чисел можно прописывать названия цветов.

Для того чтобы в программе можно было использовать содержимое модуля Crt, его надо импортировать (подключить) в программу. Делается это в секции, которая начинается со слова uses.

Чтобы очистить экран от всех надписей, требуется выполнить процедуру clrscr. Если перед этим был задан цвет экрана (с помощью textbackground), то экран будет залит соответствующим цветом.

Цвет текста определяется процедурой textcolor, позиция курсора – gotoxy.

Цвет Фона экрана textbackground(Byte);

Цвет текста textcolor(Byte);

Перевод курсора в позицию XY gotoxy(Byte, Byte);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]