Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 12_Символьные и строковые переменные.doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
1.2 Mб
Скачать

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

Использование в программе данных типа set дает ряд преимуществ: значительно упрощаются сложные операторы if , увеличивается степень наглядности программы и понимания алгоритма решения задачи, экономятся память, время компиляции и выполнения.

Имеются и отрицательные моменты, основной из них – отсутствие в языке Паскаль средств ввода-вывода элементов множества, поэтому программист сам должен писать соответствующие процедуры.

Пример. Операции над множествами.

uses crt;

type digits=set of 0..20;

var m1,m2,m0,l,f,t:digits;

i:integer;

ch1,ch2:byte;

{процедура формирования множества k,состоящих из элементов множества m, кратных ch}

procedure Form_Set(ch:byte;m:digits;var k:digits);

var i:integer;

begin

k:=[];

for i:=0 to 20 do if (i in m) and (i mod ch=0) then k:=k+[i];

end;

{процедура вывода множества set_}

procedure out_set(set_:digits);

var i:integer;

begin

for i:=0 to 20 do

if (i in set_) then write(i:3);

writeln;

end;

Begin

clrscr;

{формирование множества 1}

writeln('Введите последовательность чисел [0..20] (признак конца - 0)');

m0:=[];

read(i);

if i<>0 then m0:=m0+[i];

while (i<>0) do

begin

read(i);

m0:=m0+[i]

end;

{формирование множества 2}

write ('vvedite chislo '); read(ch1);

Form_Set(ch1,m0,m1);

m2:=[2,4,6,8,10,12,14,16,18,20]; {формирование множества 3}

l:=m1+m2;

f:=m1*m2;

t:=m1-m2;

{вывод множеств}

writeln;

writeln('set m0:'); out_set(m0);

writeln('set m1:'); out_set(m1);

writeln('set m2:'); out_set(m2);

writeln('set m1+m2:'); out_set(l);

writeln('set m1*m2:'); out_set(f);

writeln('set m1-m2:'); out_set(t);

end.

Протокол работы:

Введите последовательность чисел [0..20] (признак конца - 0)

4 3 5 15 18 16 3 0

Введите число 3

Множество m0: 0 3 4 5 15 16 18

Множество m1: 0 3 15 18

Множество m2: 2 4 6 8 10 12 14 16 18 20

Множество m1+m2: 0 2 3 4 6 8 10 12 14 15 16 18 20

Множество m1*m2: 18

Множество m1-m2: 0 3 15

Контрольные вопросы

  1. Как описываются строковые данные?

  2. Чему равна максимальная длина строковой переменной?

  3. Какие операции допустимы над строковыми данными, их приоритет, какие выражения называются строковыми?

  4. Какие стандартные процедуры и функции существуют в Паскале для работы со строковыми данными?

  5. Что такое запись? Основные операции с записями.

  6. Оператор With для обращения к полям записи. Формат записи.

  7. Что такое множество? Какие операции используются над множествами?