русс | укр

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

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

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

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


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

Вывод множеств


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


 

При работе с множествами немаловажным является вопрос вывода на экран элементов множества. Отметим, что в большинстве версий языка в операторах WRITE нельзя называть переменные типа ARRAY. Например, нельзя вывести множество таким образом:

 

VAR A : SET OF 1..9;

...................

WRITE (A).

 

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

Для вывода элементов множества также нужно организовать цикл (однократный), внутрь которого вводится некоторая переменная, пробегающая все возможные значения этого множества, а перед оператором WRITE в рамках конструкции IF проверяется, входит ли этот элемент в конкретное множество:

 

if K in SET1 then write (K).

 

Как правило, для целей распечатки элементов множеств организуются свои процедуры. Пусть мы имеем дело с множествами, состоящими из целых чисел в границах NIZ и VERH. Зададим множественный тип TS для этих границ:

 

type INT = NIZ..VERH; TS = set оf INT.

 

Тогда можно написать процедуру, содержащую в качестве параметра множество:

procedure PRINTSET (OS : TS);

var M: INT;

begin

¦ for M := NIZ to VERH do

¦ if M in OS then writeln (M);

end.

Теперь можно обращаться к этой процедуре для печати множеств, если только они состоят из элементов, не выходящих из интервала NIZ …VERH. Пусть в разделе констант было описано:

 

const NIZ = 0; VERH = 10.

 

Тогда можно вывести на экран элементы множества, обратившись к процедуре:

а) PRINTSET ([5, 6, 7]);

б) PRINTSET ([2]);

в) PRINTSET ([3..8]).

Обращение к процедуре можно организовать также в виде:

 

var SET1, SET2 : TS;

..................



SET1:= [...]; SET2 := [...]

PRINTSET (SET1); PRINTSET (SET1 + SET2); и т.д.

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

 

program IGRA;

type KOST = 1..6; BROSOK = set of KOST;

var A, B, C : BROSOK;

procedure SRAWNENIE (D : BROSOK);

var K : KOST;

begin

¦ for K := 1 to 6 do

¦ if K in D then write (K:4); writeln;

end;

begin

¦ A := [1, 3, 4]; B := [2, 4, 6];

C := A + B;

¦ write ('[1, 3, 4] + [2, 4, 6] ='); SRAWNENIE (C);

¦ C := A – B;

¦ write ('[1, 3, 4] – [2, 4, 6] ='); SRAWNENIE (C);

¦ C := A * B;

¦ write ('[1, 3, 4] * [2, 4, 6] ='); SRAWNENIE (C);

end.

 

Примечание. В программе определяются множества A, B, C типа BROSOK, элементами которых являются целые числа из диапазона [1..6], и процедура вывода на экран элементов таких множеств.

Затем задаются множества A и B, находятся различные значения множества C и выводятся его элементы.

Замечание 1. Если множество задано перечислимым типом, то его элементы напечатать нельзя. На печать можно вывести элементы только ординального типа: INTEGER, CHAR, BOOLEAN, интервальный.

Замечание 2. Один и тот же набор данных можно организовать в виде линейного массива ARRAY, в виде множества SET и в виде строки типа STRING. Какой из этих видов предпочтительнее? Если над элементами (числами) производятся действия, то лучше ARRAY. Если же стоит задача о взаимосвязи элементов нескольких множеств или вопрос о вхождении каких-то объектов в множество, то лучше SET.

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

 

var TX : set of 'a'..'z';

BW : char;

----------------

TX := [‘a’..’m’];

Readln (BW);

 

1-й с п о с о б 2-й с п о с о б

OTWET := 'нет';

for k := 1 to 20 do if BW in TX then writeln ('да').

if BW = TX [k] then OTWET := ‘да’;

writeln (ОTWET);

 

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

 

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

 

1. Величины каких типов данных можно объединять во множество?

2. Чем отличается объединение элементов множества от массива?

3. Можно ли во множестве узнать число элементов множества по его объявлению?

4. Какие операции возможны над множествами?

5. Как определить принадлежность элемента множеству?

6. Как можно добавлять новые элементы к множеству?

7. Как удалить из множества A элементы, содержащиеся в другом множестве B?

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

 



<== предыдущая лекция | следующая лекция ==>
Операции над множествами | Задания для самостоятельной работы


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


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

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

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


 


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

 
 

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

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