Zbiory i rekordy mgr inż. Agata Pacek
Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu zbiorowego biegi biegi_motocykla:biegi; Przypisanie wartości dla zmiennej biegi_motocykla biegi_motocykla:=[1,2,3,4,5,6,0]
program motor; type biegi = set of 0..6; var biegi_motocykla :biegi; zmienna :integer; begin writeln('Podaj jaki bieg motocykla chcesz wlaczyc (0-6)'); readln(zmienna); biegi_motocykla:= [1,2,3,4,5,6,0]; if zmienna in biegi_motocykla then writeln('Podany bieg nalezy do zbioru') else writeln('Zbior dostepnych biegow nie zawiera podanego przez ciebie'); readln; end.
Używając zbiorów, nie odwołujemy się do konkretnego elementu zbioru, tak jak w przypadku tablicy. Pracując ze zbiorem, możemy jedynie przy użyciu operatora IN sprawdzić, czy dany element należy do zbioru. Podczas definiowania zbioru ważne jest, aby jego elementy były jednego typu, który jest nazwany typem bazowym.
program zbiory; var cyferki :set of BYTE; x :byte; begin writeln('Podaj cyferke'); readln(x); cyferki:=[1..10]; if x in cyferki then writeln('podales cyfre ze zbioru 1..10') else writeln('podales, ktorej nie ma w zbiorze 1..10'); readln; end.
Na zbiorach można wykonywać następujące działania: Łączenie(suma) Różnica Część wspólna(iloczyn)
Dodawanie zbiorów program zbiory; var litery1 :set of char; litery2 :set of char; wynik1 :set of char; begin litery1:=['a'..c']; litery2:=[A',B',D']; wynik1:=litery1+litery2; if D' in wynik1 then writeln('dodawanie sie udalo'); readln; end.
Napisz program obliczający część wspólną dwóch zbiorów Literki1:=[a..d]; Literki2:=[a,b,c]; Jeśli w zbiorze wynik powinny się znajdować litery a,b,c. Sprawdź, czy zbiór wynik zawiera d. Dla zbiorów literki1 i literki2 oblicz różnicę. Zbiór wynik powinien zawierać tylko d. Sprawdź, czy wynik zawiera a i d.
Rekordy służą do przechowywania danych różnych typów. Deklaracja rekordów Identyfikator_rekordu=rekord pole:typ ………… end;
Program motorki Do garażu wprowadzamy trzy motory (tablica trzy elementowa garaz, każdy element jest rekordem typu motocykl) Do każdego motoru przypisujemy markę, symbol, prędkość maksymalną program motorki; type motocykl = record marka :string[10]; symbol :string[10]; predkoscmax :integer; end; var garaz :array[1..3] of motocykl; a :integer;
begin writeln('Wprowadz trzy motocykle do garazu '); for a:=1 to 3 do begin writeln('Marka motocykla nr: ',a,' to: '); readln(garaz[a].marka); writeln('Symbol motocykla nr: ',a,' to: '); readln(garaz[a].symbol); writeln('Najszybciej jechales motocyklem nr: ',a,'[km/h] ? '); readln(garaz[a].predkoscmax); end;
writeln('Wyswietle co jest w garazu wcisnij ENTER'); readln; for a:=1 to 3 do begin writeln('motorek nr: ',a); writeln(garaz[a].marka); writeln(garaz[a].symbol); writeln(garaz[a].predkoscmax); end; writeln('KONIEC wcisnij ENTER'); readln; end.
Podczas pracy z rekordami przydatna jest instrukcja with, która działa we fragmencie programu ograniczonym słowami begin i end. W jego ramach możemy odwoływać się do pól rekordu bez podawania przedrostków, czyli zamiast konstukcji readln(garaz[a].marka); używamy readln(marka);
writeln('Wprowadz trzy motocykle do garazu '); for a:=1 to 3 do with garaz[a] do begin writeln('Marka motocykla nr: ',a,' to: '); readln(marka); writeln('Symbol motocykla nr: ',a,' to: '); readln(symbol); writeln('Najszybciej jechales motocyklem nr: ',a,'[km/h] ? '); readln(predkoscmax); end; writeln('Wyswietle co jest w garazu wcisnij ENTER');