Când lucrați cu seturi, problema de a afișa elementele unui set este importantă. Rețineți că în majoritatea versiunilor lingvistice ale operatorilor WRITE nu puteți apela variabile de tip ARRAY. De exemplu, nu puteți afișa un set astfel:
VAR A. SET DE 1..9;
Nu este nimic surprinzător, deoarece, chiar dacă A este o matrice, de asemenea, ea nu poate fi imprimată la o dată cu un singur operator WRITE (A). Ciclurile sunt organizate pentru a genera elemente de matrice.
Pentru a afișa setul de elemente de asemenea, trebuie să buclă (single), în care este inserată o variabilă parcurgând toate valorile posibile ale setului, și înainte de instrucțiunea WRITE în cadrul structurii IF se verifică dacă acest element este inclus în setul special:
dacă K în SET1 scrieți apoi (K).
De regulă, în scopul imprimării elementelor seturilor, se organizează propriile proceduri. Să presupunem că avem de-a face cu seturi constând din numere întregi în limitele NIZ și VERH. Setați tipul de TS mai mare pentru aceste limite:
tip INT = NIZ..VERH; TS = set de INT.
Apoi putem scrie o procedură care conține setul ca parametru:
procedura PRINTSET (OS. TS);
| Pentru M: = NIZ la VERH face
Dacă M în OS atunci writeln (M);
Acum vă puteți referi la această procedură pentru seturile de imprimare, dacă ele constau doar din elemente care nu părăsesc intervalul NIZ ... VERH. Fie ca secțiunea constantelor să descrie:
const NIZ = 0; VERH = 10.
Apoi puteți afișa elementele setului, făcând referire la procedură:
a) PRINTSET ([5, 6, 7]);
Un apel la procedură poate fi organizat și sub forma:
var SET1, SET2. TS;
PRINTSET (SET1); PRINTSET (SET1 + SET2); și așa mai departe.
EXEMPLU EXEMPLU. În concluzie, să examinăm în întregime un exemplu, în care să demonstrăm toate acțiunile care sunt definite pe seturi.
tip KOST = 1..6; BROSOK = set de KOST;
var A, B, C. BROSOK;
procedură SRAWNENIE (D. BROSOK);
| Pentru K: = 1 la 6 nu
Dacă K în D scrie apoi (K: 4); writeln;
| A: = [1, 3, 4]; B: = [2, 4, 6];
| Scrieți ('[1, 3, 4] + [2, 4, 6] ='); SRAWNENIE (C);
| Scrie ('[1, 3, 4] - [2, 4, 6] ='); SRAWNENIE (C);
| Scrieți ('[1, 3, 4] * [2, 4, 6] ='); SRAWNENIE (C);
Notă. Programul este definit printr-o multitudine de A, B, C de tip BROSOK, din care elemente sunt numere întregi în intervalul [1..6], iar elementele de procedură de afișare astfel de seturi.
Apoi seturile A și B sunt setate, se găsesc valori diferite ale setului C și se extrag elementele sale.
Notă 1. Dacă setul este dat de un tip enumerat, elementele sale nu pot fi imprimate. Pot fi tipărite numai elementele tip ordinal: INTEGER, CHAR, BOOLEAN, interval.
Nota 2. Același set de date pot fi aranjate într-o matrice matrice liniară, ca o pluralitate de SET un șir de tip STRING. Care dintre aceste specii este de preferat? Dacă acțiunile sunt efectuate pe elemente (numere), atunci ARRAY este mai bună. În cazul în care sarcina este despre relația dintre elementele de mai multe seturi sau întrebări despre obținerea unor obiecte din set, cu atât mai bine SET.
De exemplu, puteți verifica dacă o anumită literă este inclusă în textul specificat în două moduri:
var TX. set de 'a' .. 'z';
1-a S o rs 2o S o b o b o b e
pentru k: = 1 până la 20 dacă BW în TX apoi writeln ("da").
dacă BW = TX [k] atunci OTWET: = 'da';
Din fragmentele de program de mai sus arată că metoda 2 nd In acest caz, de preferință, ca aici pentru a determina apariția literelor în textul suficient de utilizare unică instrucțiune IF, în timp ce în primul caz este utilizat pentru această utilizare multiplă a instrucțiunii aceeași IF în FOR loop.
1. Ce tipuri de date pot fi agregate în seturi?
2. Care este diferența dintre combinația de elemente dintr-un set și o matrice?
4. Ce operatii sunt posibile pe seturi?
5. Cum să determinăm dacă un element aparține unui set?
6. Cum pot adăuga elemente noi la set?
7. Cum să eliminați din setul A elemente cuprinse într-un alt set B?
8. Ce operație și ce operator sunt folosite pentru a scoate elementele setului?