ZSI.Techniki Programowania Wykład 8

Transkrypt

ZSI.Techniki Programowania Wykład 8
ZSI.Techniki Programowania
Wykład 8
Janusz Jabłonowski
Moduły w Pascalu
Cz sto zdarza si , e tworzymy zestaw procedur (funkcji, stałych, typów i zmiennych)
realizuj cych powi zane ze sob operacje (zwykle dotycz ce jednego typu danych, np.
operacje na wektorach). Poniewa taki zestaw mo na potem wykorzysta w wielu
programach, byłoby wygodnie nie musie kopiowa go tekstowo za ka dym razem, gdy
chcemy go u y , lecz móc tyko wskaza , e dany zestaw ma by teraz u yty. (Podobnie jak z
procedur , raz j definiujemy, a potem wielokrotnie u ywamy podaj c tylko jej nazw ). Taki
zestaw nazywamy modułem. Zwykle moduł zawiera deklaracje potrzebne lokalnie (na
potrzeby modułu) oraz deklaracje eksportowane, czyli takie, które b dzie wida poza
modułem.
Moduły mo na bardzo łatwo tworzy w Pascalu (precyzyjniej: w ró nych implementacjach
Pascala, jak np. Free Pascal, Delphi, Turbo Pascal). Moduł zapisujemy w pliku z
rozszerzeniem .pas. W samym module trzeba dopisa kilka specjalnych klauzul i informacj o
eksportowanych deklaracjach (opisane poni ej). Po skompilowaniu otrzymujemy plik o takiej
nazwie jak plik .pas ale o innym rozszerzeniu (.ppw we Free Pascalu, .dcu w Delphi, .tpu w
Turbo Pascalu). Ten plik zawiera skompilowane tre ci procedur i funkcji modułu (oraz
informacje o innych deklaracjach z modułu). Je li kto chce skorzysta z tego modułu, to
potrzebuje TYLKO pliku skompilowanego, plik ródłowy (.pas) nie jest ju potrzebny!
•
Struktura modułu
Moduł ma nast puj c struktur :
unit <nazwa>;
interface
<lista eksportowanych deklaracji>
implementation
<lista deklaracji lokalnych i definicje eksportowanych procedur>
begin
<inicjalizacja>
end.
Uwagi:
1) <nazwa> musi by taka jak nazwa pliku.
2) W <li cie eksportowanych deklaracji> podajemy same nagłówki eksportowanych
procedur, ich tre ci (wraz z powtórzonymi nagłówkami) musz si znajdowa w cz ci
implementation.
3) <inicjalizacja> wykonuje si tylko raz, przed rozpocz ciem wykonywania głównego
programu.
4) Je li inicjalizacja jest zb dna, to mo na j pomin wraz ze słowem begin.
5) Zamiast słowa kluczowego begin mo na u y słowa initialization. W takim przypadku
mo na te umie ci w module cz
rozpoczynaj c si słowem finalization, opisuj c
operacje, które maj si wykona , podczas ko czenia pracy programu.
•
Korzystanie z modułów
Korzystanie z modułów jest bardzo proste: na pocz tku korzystaj cego z nich
programu (lub modułu) umieszczamy klauzul
uses <nazwa>;
i od tej pory wszystkie deklaracje z importowanego modułu s widoczne
w programie tak, jakby były w nim zadeklarowane.
•
Struktura programu korzystaj cego z modułów
(rysunek)
•
Zalety stosowania modułów
•
•
•
lepsza strukturalizacja programu,
ukrywanie implementacji,
szybsza kompilacja.
Kolejki i stosy
W bardzo wielu algorytmach pojawia si potrzeba wykorzystania struktury danych, umo liwiaj cej wstawianie i
pobieranie danych. Dwiema najprostszymi taki strukturami s stos i kolejka.
•
Stos
Umo liwia wstawianie elementów i ich pobieranie z pocz tku (wierzchołka) stosu. Czasami mówi si , e stos
realizuje strategi wstawiania/pobierania LIFO (Last In, First Out; ostatni wszedł, pierwszy wyjdzie). Stos
odwraca kolejno wstawianych elementów.
Operacje:
procedure wstaw(var s: TStosu; elt: TDanych);
procedure pobierz(var s: TStosu; var elt: TDanych);
function pusty(s: TStosu): boolean;
----------------------------------------------procedure pierwszy(s: TStosu; var elt: TDanych);
procedure ini(var s: TStosu);
procedure usu _wszystko(var s: TStosu);
Uwagi implementacyjne:
•
•
•
•
co to jest TDanych,
jak reprezentowa stos, czyli co to jest TStosu (tablica, lista),
czemu pierwszy i pobierz nie s funkcjami,
czy parametr funkcji pusty powinien by przekazywany przez zmienn , czy przez warto ,
•
•
•
•
•
czasami definiuje si troch inne operacje (pobierz tylko usuwa element ze struktury danych),
cz sto spotykane nazwy angielskie (wstaw - push; pobierz - pop; pusta - empty; pierwszy - top),
czym si ró ni ini od usu _wszystko,
czy warto wprowadza usu _wszystko.
Kolejka
Umo liwia wstawianie nowych elementów na koniec i pobieranie elementów z pocz tku. Czasami mówi si , e
kolejka realizuje strategi wstawiania/pobierania FIFO (Firsty In, First Out; pierwszy wszedł, pierwszy wyjdzie).
Kolejka zachowuje kolejno wstawianych elementów.
Operacje:
procedure wstaw(var k: TKolejki; elt: TDanych);
procedure pobierz(var k: TKolejki; var elt: TDanych);
function pusta(k: TKolejki): boolean;
----------------------------------------------procedure pierwszy(k: TKolejki; var elt: TDanych);
procedure ini(var k: TKolejki);
procedure usu _wszystko(var k: TKolejki);
Uwagi implementacyjne:
•
•
•
•
•
•
•
•
co to jest TDanych,
jak reprezentowa kolejk , czyli co to jest TKolejki (tablica, lista),
czemu pierwszy i pobierz nie s funkcjami,
czy parametr funkcji pusta powinien by przekazywany przez zmienn , czy przez warto ,
czasami definiuje si troch inne operacje (pobierz tylko usuwa element ze struktury danych),
cz sto spotykane nazwy angielskie (wstaw - enqueue, put; pobierz - dequeue, get; pusta - empty;
pierwszy - first),
czym si ró ni ini od usu _wszystko,
czy warto wprowadza usu _wszystko.
•
Przykłady zastosowa :
Algorytmy grafowe (stos, kolejka), realizacja rekursji (stos), ONP i wyliczanie warto ci wyra e (stos).
•
Realizacja stosu i kolejki za pomoc modułów
• podział na cz
publiczn i prywatn
• decyzja czy operacje maj mie struktur danych (stos, kolejk ) jako pierwszy parametr
Struktury listowe
Typy wska nikowe s niezwykle elastyczne i pozwalaj budowa praktycznie dowolnie wymy lne struktury
danych. Oprócz pojedynczych list mo na definiowa tablice list, listy tablic, listy list itp.
Przykłady zastosowa bardziej rozbudowanych struktur listowych:
• rzadkie macierze (skrypt)
• sortowanie topologiczne (skrypt)
Du o informacji o strukturach listowych mo na znale w skrypcie (dost pnym w naszej bibliotece) "Pracownia
Programowania I" pod redakcj M. Cichego i S. Szpakowicza.

Podobne dokumenty