PODST AWY PROGRAM OWANIA
Typ tablicowy
1
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.
PODST AWY PROGRAM OWANIA
Typ tablicowy
2
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; {W
ypeł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.
PODST AWY PROGRAM OWANIA
Typ tablicowy
3
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, a
1
, a
2
, ..., a
N
(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.