Typ tablicowy
Typ tablicowy jest typem strukturalnym (złożonym), stanowiącym skończony zbiór elementów tego samego typu, o położeniu określanym przez indeksy. Zmienna typu tablicowego odpowiada tablicy (macierzy) w sensie matematycznym.
Opis typu tablicowego ma postać:
array[lista_typów_indeksów] of typ_bazowy w której indeksy muszą być typu porządkowego (integer lub char), a typ bazowy może być dowolnym typem prostym lub strukturalnym.
Przykład 1
var
tab1: array[0.. 50] of integer; tab2, tab3: array[1.. 20, 1.. 30] of real; tablica: array[boolean, zakres, dzien_tyg] of char; Tablice posiadają wymiar zależny od liczby indeksów (1, 2, 3–wymiarowe) oraz rozmiar zależny od zakresu określoności indeksu w każdym wymiarze (np. rozmiar – 10 kolumn, 15 wierszy). Najprostsze tablice to odpowiedniki jednowymiarowych wektorów.
Zmienne tablicowe całościowe mogą być wykorzystane jedynie w operacji przypisania (przy zgodności typów), np.:
var
tab1, tab2: array [1.. 10, 1.. 20] of real; begin
...
tab1 := tab2;
...
end.
natomiast inne operacje dokonywane być mogą tylko na składowych jeśli są dozwolone dla ich typu.
Przykład 2
...
tab1[2,3] := 0. 1; {nadanie wartości elementowi tablicy}
for i := 1 to 20 do tab2[1,i] := 0. 0; {wypełnianie pierwszego wiersza zerami}
for i := 1 to 20 do tab2[i,i] := 0; {wypełnianie przekątnej głównej zerami}
for i := 1 to 20 do
for k:= 1 to 20 do tab2[i,k] := 1 {wypełnianie całej tablicy stałą wartością równą jeden}
for i := 1 to 20 do {wydruk na ekranie całej tablicy}
begin
for k:= 1 to 20 do write(tab2[i,k]:4:2); writeln
end;
...
Przykład 3
type opis = (nazw, imie);
var grupa: array[1.. 100, opis] of string[30]; i: integer;
begin
...
grupa[1, nazw] := ' Kowalski'; if grupa[i, imie] = ' Stanislaw' then writeln(grupa[i, nazw]:30, grupa[i, imie]:20);
...
end.
1
Typ tablicowy
Tablicę o wartościach liczbowych można wypełnić liczbami losowymi. Do otrzymania liczb losowych służy procedura randomize i funkcja random. Instrukcja wywołania bezparametrowej procedury randomize powoduje zainicjowanie wbudowanego generatora liczb losowych. Konkretne liczby losowe są otrzymywane za
pomocą
funkcji
random
lub
random
(zakres),
gdzie
zakres
jest
wyrażeniem
o wartości całkowitej typu word. Jeżeli nie podano argumentu, to wartością funkcji jest liczba typu real z przedziału jednostronnie domkniętego [0, 1), a gdy podano zakres , to wartością funkcji jest liczba całkowita z przedziału [0, zakres).
Bardzo przydatna jest procedura clrscr z modułu procedur standardowych crt, której wywołanie czyści ekran. Wywołanie tej procedury na początku programu spowoduje wyświetlanie wyników programu na czystym ekranie. Aby wywołać procedurę clrscr, trzeba na początku części opisowej programu zadeklarować moduł crt:
uses crt;
Przykład programu
program p5; {Program wypełnia losowo tablicę i wyświetla jej zawartość}
uses crt;
const m = 20;
type t = array[1..m, 1..m] of real; var tab:
t;
i, j, lw, lk: integer;
begin
clrscr;
write('Podaj liczbę wierszy: ');
readln(lw);
write('Podaj liczbę kolumn: ');
readln(lk);
writeln;
randomize; {Wypełnianie tablicy liczbami losowymi}
for i := 1 to lw do
for j := 1 to lk do
tab[i, j] := random(100);
for i := 1 to lw do
{Wyświetlanie zawartości tablicy}
begin
for j := 1 to lk do
write(tab[i, j]:8:2);
writeln;
end;
readln;
end.
Zadania
1. Napisz program, który dla pobranej od użytkownika liczby całkowitej n pobierze i wyświetli n elementów tablicy jednowymiarowej.
2. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli element maksymalny w tej tablicy.
3. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli elementy maksymalny i minimalny w tej tablicy.
4. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random i wyświetli elementy maksymalny i minimalny w tej tablicy oraz ich indeksy.
5. Napisz program, który pobierze od użytkownika n liczb tablicy jednowymiarowej, a następnie obliczy i wyświetli sumę i wartość średnią tych liczb.
2
Typ tablicowy
6. Napisz program, który wczytuje z klawiatury nazwisko użytkownika, a następnie wyprowadza je na ekran w następujących układach:
a) M a l i n o w s k i
b) M
a
l
i
n
o
w
s
k
i
c)
d)
M M
a
a
l
l
i
i
n
n
o
o
w
w
s
s
k
k
i
i
7. Napisz program, który wczytuje z klawiatury nazwisko użytkownika, a następnie wyprowadza je na ekran w następującym układzie:
Ma
li
no
ws
ki
8. Napisz program, który wczytuje z klawiatury ciąg liczb o organizacji – liczba danych (liczb), wartości danych: N, a1, a2, ..., aN (N ≤ 10), umieszcza je w wektorze i przepisuje na ekran w jednym wierszu. Następnie program porządkuje liczby w kolejności wzrastania ich wartości i wyprowadza uporządkowane na ekran.
9. Napisz program, który pobiera od użytkownika wymiar macierzy (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) oraz jej elementy, a następnie wyświetla zawartość tej macierzy oraz oblicza i wyświetla iloczyn elementów na głównej przekątnej.
10. Napisz program, który pobiera od użytkownika wymiar macierzy (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) oraz jej elementy (wykorzystaj funkcję random), a następnie wyświetla zawartość tej macierzy oraz oblicza i wyświetla sumę elementów na głównej przekątnej.
11. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej korzystając z funkcji random, a następnie wyświetli zawartość tej tablicy, element maksymalny, jego indeks oraz liczbę elementów dodatnich tej tablicy.
12. Napisz program, który dla pobranej od użytkownika liczby całkowitej n, (1 ≤ n ≤ 20) pobierze n elementów tablicy jednowymiarowej, a następnie wyświetli zawartość tej tablicy, element minimalny, jego indeks oraz liczbę elementów ujemnych tej tablicy.
3