Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programuv_good.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
990.21 Кб
Скачать
  1. Операції над множинами

Над множинами можуть виконуватися наступні дії:

а) Обєднання (додавання)

Виконується над множинами одного базового типу.

Наприклад

A:=[1,2,3] B:=[3,4,8] C:=A+B { C=[1,2,3,4,8] }

Виконання операції додавання фактично є побітовою операцією диз’юнкції.

б) Перетин (множення множин)

Результатом є спільна частина двох множин.

Наприклад

[1,2,3]*[3,4,8] =[3]

[1,2,3]*[ ]= [ ]

Виконання операції множення фактично є побітовою кон’юнкцією.

в) Віднімання множин

Результат віднімання деякої множини В від множини А будуть всі елементи А, яких немає в множині В.

Наприклад

[1,2,3]-[3,4,8]=[3]

В памяті операція віднімання фактично є

Це побітова операція виключення або одиничними бітами у зменшуваному.

Крім операцій додавання, множення, віднімання над множинами виконуються логічні операції порівняння та належності.

Множини можуть порівнюватися на рівність та нерівність.

г) Операція належності

Дає істиний результат, якщо деякий елемент належить множині. Операція хибна в іншому випадку.

Наприклад

[1] in [3,4,8] = false

[1] in [1,2,3]=true

Формування множини безпосередньо з клавіатури і вивід їх на екран неможливо, оскільки стандартні процедури вводу-виводу не допускають параметрів множини так як і перелічувального. Але ці дії легко реалізувати за рахунок операції обєднання та перевірки належності in для виводу.

Звичайно базовий тип множини в цьому випадку повинен бути допустимим для процедур вводу-виводу.

Наприклад

Var A:=[ ]; A:=[ ];

A: set of byte; repeat readln(x);

i, x: byte; readln(x); while x<>0 do

A:=A+[x]; begin

A:=[ ]; until x=0; A:=A+[x];

for i:=1 to n do readln(x);

begin end.

readln(x);

A:=A+[x]

end;

Варіант із циклом repeat until завершує формування множини із записанням в неї нульового елемента, тобто в будь-якому випадку множина матиме хоча б один елемент.

Варіант із циклом while do припиняє формування множини без введення елемента 0 в неї, тобто може отриматися пуста множина.

Для виводу елементів множини можна скористатися операцією in.

Наприклад

For i:=1 to 255 do

If I in A then writeln(i);

В деякій установі є k працівників, кожен з них має два вихідні в тижні, але всі різні. Перевірити чи забезпечується неперервність виробничого процесу протягом тижня.

Якщо результат множення для кожного працівника дасть пусту множину, то це відповідає неперервності робочого процесу. Якщо ж результат міститиме хоч один день, це і відповідає загальному вихідному.

Type

Wwekend = set of week;

Week = 0..6;

Workers = array [1..6] of integer;

Var

k, i, j: byte;

a: workers;

c:weekend;

begin

c:=[0..6];

for i:=1 to 6 do

begin

writeln(‘введіть номери вихідних днів, і , -го працівника’);

readln(j,k);

a[i]:=[j,k];

c:=c*a[i];

end;

if c=[ ] then writeln(‘все добре’)

else writeln(‘є повний вихідний’);

end.

В даній програмі, якщо множина не надавати початкового значення, то вона приймається пустою, тому попередньо до формування множини С їй потрібно надати початкове значення, що рівне повній множині.

ТЕМА : Підпрограми

Структурне програмування передбачає представлення програм у вигляді послідовності викликів підпрограм. В свою чергу останні теж можуть структуруватися на елементарні підпрограми.

Поняття підпрограми означає логічно-завершальну програму компоненту, що виконує деяку частину алгоритму.

Ford-RAN були звичайними частинами програми. Вони не мали механізму передачі параметрів і користувалися загальновживаними змінними.

Використання механізму передачі параметрів (МПП) дозволило зробити окремі підпрограми більш незалежними. Це полегшило використанні програми та її відланку.

В Pascal є два види підпрограм:

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