background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 1 - 

 

ALGORYTMY 

POJECIA I OPIS 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 2 - 

WPROWADZENIE (1)  

Literatura podstawowa 

 

[1]  S.Algic, M.A.Arbib 

Projektowanie 

programów poprawnych i dobrze 
zbudowanych
, WNT, Warszawa 1982 

[2]  T.H.Cormen, Ch.E.Leiserson, R.I.Rivest 

Wprowadzenia do algorytmów, WNT, 
Warszawa 1997 

[3]  A. Drozdek, D.L. Simon  Struktury 

danych w jezyku C, WNT, Warszawa, 
1996 r. 

[4]  David Harel  Rzecz o istocie informatyki  - 

algorytmika, WNT, Warszawa 1992 r. 

[5]  D. van Tassel  Praktyka programowania

WNT, Warszawa 1982 

[6]  Piotr Wróblewski  Algorytmy  - struktury 

danych i techniki programowania, Wyd. 
Helion, 1996 r. 

[7]  Niklaus Wirth  Algorytmy + dane = 

program, WNT, Warszawa, 1980 r. 

Literatura pomocnicza 

 

1. L.Banachowski, A.Kreczmar, R.Rytter 

Analiza algorytmów i struktur danych
WNT, Warszawa 1987 

2. J.M.Brady  Informatyka teoretyczna w 

ujeciu programistycznym, WNT, 
Warszawa, 1983 

3. W.C.Jones, Jr.  Data structures using 

Modula, John Wiley & Sons, New York 
1988 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 3 - 

WPROWADZENIE 

O czym bedzie mowa?  

 

♦ 

Zastosowanie komputerów cechuje 

obecnosc pewnych ogólnych metodologii 

zawiazanych z formulowaniem problemu, 

utworzeniem modelu matematycznego 

zadania (

algorytmizacja zadania

), 

programowaniem i rozwiazaniem zadania 

przy pomocy komputera. W formulowaniu i 

rozwiazywaniu zadan biora udzial zwykle 

specjalisci z róznych dziedzin. 

R o z w i a z a n i e  

z a d a n i a

T r a n s f o r m a c j a  

a l g o r y t m u   n a  

j e z y k  

p r o g r a m o w a n i a

M e t o d a  

r o z w i a z a n i a   w  

f o r m i e   a l g o r y t m u

F o r m a l i z a c j a  

s f o r m u l o w a n e g o  

z a d a n i a

S f o r m u l o w a n i e  

z a d a n i a

O p e r a t o r  

k o m p u t e r a

P r o g r a m i s t a

S p e c j a l i s t a   o d  

a l g o r y t m ó w  

( a l g o r y t m i k )

M a t e m a t y k a

S p e c j a l i s t a   z  

d a n e j   d z i e d z i n y

 

Rys.1 Proces rozwiazywania zadan 

algorytmicznych 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 4 - 

WPROWADZENIE 

O czym bedzie mowa?  

♦ 

Kazdy komputer moze wykonac 

bezposrednio tylko niewielka 

liczbe skrajnie prostych operacji, 

takich jak przerzucanie, 

wyzerowanie lub sprawdzenie 

bitu. Dlaczego wiec przy pomocy 

tak prostych rzeczy mozna 

realizowac nawet bardzo zlozone 

czynnosci? Jak bity to 

robia? Odpowiedz 

tkwi w dwóch glównych pojeciach: 

proces i algorytm. 

 

 

Rys.2 Operacje na bitach 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 5 - 

WPROWADZENIE (3) 

 Pojecie algorytmu i algorytmiki 

 

♦ 

Pieczenie ciasta - to proces wykonywany ze 
skladników, przez piekarza, za pomoca 
pieca wedlug przepisu. Skladniki sa danymi 
wejsciowymi tego procesu, ciasto jest 
danymi wyjsciowymi, czyli wynikiem, a 
przepis jest  algorytmem. Innymi slowy, 
algorytm definiuje czynnosci, które skladaja 
sie na proces. Przepisy, a wiec algorytmy 
zwiazane ze zbiorem procesów, nazywa sie 
czesto  oprogramowaniem, zas przybory, 
piec, a takze piekarza nazywa sie zwykle 
sprzetem. 

 

 

 

Rys.3 Proces pieczenia ciasta 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 6 - 

WPROWADZENIE 

Pojecie algorytmu i algorytmiki 

♦ 

Przepisy okreslamy mianem  algorytmów, 

zas obszar dociekan, wiedzy i doswiadczen 

dotyczacych algorytmów nazwiemy 

algorytmika. 

♦ 

Algorytmika to wiecej niz dzial informatyki. 

Tkwi w centrum wszystkich dzialów 

informatyki i jest wazna dla wiekszosci nauk 

matematyczno-przyrodniczych, ekonomii i 

techniki. Sama natura algorytmiki czyni ja 

jednak szczególnie odpowiednia do 

stosowania w tych dyscyplinach, które 

czerpia korzysci z poslugiwania sie 

komputerem. 

♦ 

Slowo algorytm wywodzi sie od nazwiska 

perskiego matematyka Muhammeda 

Alchwarizmi, który zyl w IX wieku. To 

nazwisko, pisane po lacinie, przyjelo postac 

Algorismus, stad do algorytmu juz bardzo 

blisko. 

♦ 

Miedzy 400 a 300 rokiem przed Chrystusem 

grecki matematyk Euklides wynalazl 

algorytm znajdowania najwiekszego 

wspólnego dzielnika (nwd) dwóch liczb 

calkowitych. Algorytm Euklidesa, uwaza sie 

za pierwszy kiedykolwiek wymyslony 

niebanalny algorytm.  

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 7 - 

WPROWADZENIE 

Instrukcje podstawowe 

• 

Polecenie typu domieszaj cukier puder jest 

ogólnym stwierdzeniem, mniej dokladnym 
od  wez nieco cukru pudru, wsyp go do 
rozpuszczonej czekolady, wymieszaj, wez 
jeszcze troche cukru, wsyp, wymieszaj ..., 
itd.
 albo od precyzyjnego sformulowania 
wez 150 gram cukru pudru, wsyp do 
rozpuszczonej czekolady i wymieszaj przy 
pomocy lyzki
. 

• 

Przyjety  poziom szczególowosci wynika z 

tego, ze sprzet wie, jak wymieszac cukier 
puder z czekolada. 

• 

Poziom szczególowosci jest bardzo wazny i 

musi byc tak dobrany, aby odpowiadal 
szczególnym mozliwosciom danego 
sprzetu. 

 

• 

Poziom ten zalezy od uzgodnionego na 

samym poczatku zestawu tzw.  akcji 
podstawowych
 (instrukcji podstawowych), 
które z definicji wbudowane sa w sprzet. 

• 

Przy formulowaniu algorytmów bedziemy 

przyjmowac, ze instrukcje podstawowe 
musza byc okreslone jasno i precyzyjnie 
oraz jasno odróznialne od nie instrukcji w 
rodzaju wyjdzie z tego 6 do 8 porcji. 

• 

Jesli np. sprzet potrafi sam obliczyc 

wyznacznik z macierzy, to nie ma sensu 
mówic mu jak to ma zrobic. Podobnie, jesli 
umie wykonac mnozenie dwóch liczb 
calkowitych, to zadanie znalezienia np. 
najwiekszego wspólnego mnoznika dwóch 
liczb calkowitych formulujemy w oparciu o 
zestaw instrukcji podstawowych wyzszego 
poziomu. 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 8 - 

WPROWADZENIE 

Przyklad algorytmu 

W oparciu o ankiety personalne 
pracowników przedsiebiorstwa, zawierajace 
nazwisko, szczególy danych osobowych i 
zarobki pracowników nalezy obliczyc 
miesieczne wydatki firmy na place. 

Algorytm postepowania: 

(1)  zanotuj na boku liczbe 0 
(2)  przewertuj kolejno ankiety, 

dodajac zarobki kazdego z 
pracowników do liczby na 
boku, 

(3)  kiedy osiagniesz koniec 

listy, przedstaw wartosc 
liczby na boku jako wynik 

Algorytm rzeczywiscie sumuje zarobki 
pracowników. Tekst tego algorytmu jest i ma 
ustalona dlugosc, ale  proces  który opisuje i 
którym steruje zmienia sie wraz z liczba 
ankiet i moze zabrac rózna ilosc czasu. 
Algorytm ten jest jednak na tyle uniwersalny, 
ze bez zadnych moze byc zastosowany w 
róznych przedsiebiorstwach, o róznej liczbie 
pracowników.  

Rys.4 Sumowanie zarobków 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 9 - 

ZADANIE ALGORYTMICZNE 

• 

Algorytm opisuje wiele procesów o 
róznych dlugosciach i czasach trwania. 

 

Rys.5 Zadanie algorytmiczne i jego 

rozwiazanie 

 

 

• 

Dowolny algorytm powinien zachowywac 
sie zadawalajaco dla dowolnejliczby 
zestawów danych wejsciowych, które 
musza byc dopuszczalne (przygotowane 
wg specyfikacji). 

• 

Algorytmy sa 

rozwiazaniami 

zadan 

algorytmicznych 

(problemów 

obliczeniowych). Zadanie to 

czarna 

skrzynka, okreslona dokladna specyfikacja 
danych wejsciowych i definicja zadanych 
wyników. 

• 

Z instrukcji podstawowych buduje sie 
algorytm. Kazdy instrukcja musi byc 
wykonana w skonczonym czasie, w 
przeciwnym bowiem razie algorytm nigdy 
nie zakonczy sie (nie spelni  warunku 
stopu). 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 10 - 

DEFINICJA ALGORYTMU 

Definicje nieformalne 

• 

Algorytm jest pewna scisle okreslona 

procedura postepowania, która dla 
wlasciwych danych wejsciowych produkuje 
zadane  dane wyjsciowe, zwane  wynikiem 
dzialania algorytmu. 

• 

Algorytm to takze sposób rozwiazania 
konkretnego zadania algorytmicznego. 
Problem: sprecyzowanie wymagan 
dotyczacych relacji miedzy danymi 
wejsciowymi i wyjsciowymi. Algorytm: 
procedura obliczeniowa, zapewniajaca 
osiagniecie tej relacji. 

Okreslenia pomocnicze 

• 

Akcja podstawowa (instrukcja podstawo-
wa)
  - posiada skonczony czas trwania i 

prowadzi do pozadanego i calkowicie 
okreslonego wyniku. 

• 

Dane wejsciowe  - cos, na czym wykonuje 
sie akcje podstawowe i przez zmiane czego 
mozna sadzic o wyniku akcji. 

• 

Dane wyjsciowe (wynik)  - zmiana danych 
wejsciowych na skutek poddaniu ich 
pewnej akcji. 

• 

Jezyk  - srodek opisu danych i akcji 
podstawowych. 

• 

Instrukcja - opis akcji w pewnym jezyku. 

• 

Proces  - akcja, która po rozlozeniu na 
czesci, jest zbiorem innych akcji 
podstawowych. 

Algorytm jest to zbiór instrukcji, 
okreslajacych w jakiej kolejnosci, na jakich 
danych wejsciowych i jakie akcje 
podstawowe nalezy wykonac, aby uzyskac 
wymagany wynik. 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 11 - 

POSTACIE OPISU 

ALGORYTMU 

Kazdy z algorytmów mozna przedstawic w 
trzech postaciach podstawowych: 

postac 

opisujaca

 - jest opisem w jezyku naturalnym, w 

szczególnosci matematycznym, 

postac graficzna

 

- sa to specjalne znaki graficzne z zaznaczeniem 
powiazan pomiedzy nimi, 

postac programowa

 - 

algorytm zapisany jest w jezyku abstrakcyjnego 
(pseudokodzie) lub konkretnego komputera. 

Pseudokod: (patrz takze Cormen i in. - 
Wprowadzenie do algorytmów):

  

1. Slowa begin i  end definiuja blok algorytmu. 

2. Instrukcje iteracji  while,  for,  do-while oraz 

warunkowe  if  - else   maja taka sama 
interpretacje jak w jezyku C. 

3. Symbol  -- oznacza, ze reszta wiersza jest 

komentarzem. 

4. Wielokrotne przypisywanie w formie i

←j←e

5. Zmienne takie jak  i,  j, sa lokalne w danej 

procedurze. Zmienne globalne musza byc 
okreslone explicite

6. Dostep do elementu tablicy oznaczamy 

poprzez podanie jej nazwy i indeksu zadanego 
elementu, np.  a[i]. Notacja “..” sluzy do 
oznaczenia podtablicy, np. 

a[1..j] jest 

podtablica. 

7. Dane zlozone z kilku czesci sa organizowane w 

klasy, skladajace sie z atrybutów lub pól. 
Odwolanie sie do pola obiektu klasy: nazwa 
obiektu i nazwa pola, wystepujacej po znaku 
. Np. dla wszystkich pól  f obiektu  x
przypisanie y

←x oznacza y→f=x→f, a takze iz 

x i  y  wskazuja na te same obiekty.  Zmienna 
odpowiadajaca obiektowi jest traktowana 
jako wskaznik do danych reprezentujacych 
ten obiekt

8. Parametry sa przekazywane do procedury 

przez wartosc. Obiekty przekazywane sa przez 
adres (wskazniki do nich). 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 12 - 

ALGORYTMY I DANE 

• 

Algorytm jest zbiorem starannie dobranych 

instrukcji, bedace poleceniami wykonania 
akcji podstawowych. 

Rys.6 Program a algorytm 

• 

Kazdy komputer wyposazony jest w procesor, 
który potrafi wykonywac wbudowane w niego 
instrukcje elementarne.  

• 

Akcje podstawowe kazdego algorytmu musza 
byc na taki wlasnie zestaw instrukcji 

elementarnych i wykonywane przez 
procesor w  kolejnosci, wynikajacej z 
logiki danego algorytmu.  

• 

Algorytm zawiera instrukcje sterujace, 
mówiace procesorowi co ma zrobic i na 
jakich danych, kiedy ma sie zatrzymac i 
pozostac w stanie gotowosci do 
kontynuowania pracy. 

• 

Stad juz jeden krok do  programu, który 
stanowi skonkretyzowane 
sformulowanie algorytmów na podstawie 
okreslonej reprezentacji i 

struktur 

danych. Mozna to dobitnie zapisac za 
pomoca tytulu slynnej ksiazki 

Algorytm

Akcje 

podstawowe

obiekty - dane

Instrukcje

Porgram

Struktury 

sterujace

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 13 - 

N.Wirth’a:  algorytmy + struktury danych = 
programy

ALGORYTMY I DANE 

Struktury sterujace 

Kolejnoscia wykonania steruje sie przy 
pomocy zbioru instrukcji zwanych 
strukturami przeplywu sterowania lub krócej 
strukturami  sterujacymi. Do podstawowych 
struktur sterujacych naleza: 

• 

bezposrednie nastepstwo w postaci 
wykonaj A, a potem B (tzw. sekwencja 
instrukcji podstawienia), np.  do liczby 12 
dodaj 3, a potem wynik podziel przez 5

• 

wybór warunkowy 

(rozgalezienie 

warunkowe) w  postaci  jesli Q, to wykonaj 
A, w przeciwnym razie wykonaj B
 (ang.  if 
Q then A else B)
, lub jesli Q, to B (ang. if 
Q then A
); Q jest pewnym warunkiem, 

• 

selekcja, zwana takze wielokrotnym 
wyborem warunkowym (krócej instrukcja 
wyboru), w postaci  przypadek C

1

  z Q to 

wykonaj A

1

, C

2

 z Q to wykonaj A

2

, ..., C

n

 z 

Q to wykonaj A

n

 (odpowiednik w jezyku 

Pascal case Q of C

1

: A

1

; C

2

: A

2

; ..., C

n

: A

n

 

end), bedaca uogólnieniem wyboru 
warunkowego z zagniezdzonymi innymi 
warunkami wyboru. 

• 

iteracja ograniczona w postaci ogólnej 
wykonaj A dokladnie N razy (np. 
przykladem jest tu konstrukcja jezyka 
Pascal  for i:=1 to N do A;), gdzie N jest 
pewna liczba, 

• 

iteracja warunkowa, zwana czasem 
nieograniczona, w postaci  wykonuj A az 
do Q
  - iteracja z warunkiem koncowym 
(odpowiednik w jezyku Pascal  repeat A 
until Q
) lub dopóki Q, wykonuj A - iteracja 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 14 - 

z warunkiem poczatkowym (odpowiednik 
w Pascalu while Q do A). 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 15 - 

ALGORYTMY I DANE 

Przyklad: Algorytm sortowania 
babelkowego

 

 

Rys.7 Glówne stadia sortowania babelkowego 

Opis w jezyku  naturalnym: 

(1) wykonaj co nastepuje N-1 razy: 

(2.1) wskaz na pierwszy element; 
(2.2) wykonaj co nastepuje N-1 razy: 

 
 
 
 
 
(2.2.1) porównaj wskazany element z 

nastepnym 

(2.2.2) jesli porównywane elementy sa w 

niewlasciwej kolejnosci, zamien je 
miejscami; 

(2.2.3) wskaz na nastepny element 

Pseudokod: 

for i

 1 to N-1 

for j

← 1 to N-i 

begin 

key

← a[j] 

if (a[j+1] < key) 
begin 
   a[j]

←a[j+1];  a[j+1]←key 

end 

end 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 16 - 

PODPROGRAMY, CZYLI 

PROCEDURY 

 

 

 

W jakims dlugim tekscie zliczamy zdania 
zawierajace slowo pieniadze.  

 

• 

W petli zewnetrznej realizowane sa dwa 

poszukiwania: najpierw slowa  pieniadze
a nastepnie znaku konca zdania, czyli 
kombinacji ‘. ‘. 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 17 - 

PODPROGRAMY, CZYLI 

PROCEDURY 

Ulepszenie algorytmu: napisanie 
fragmentu algorytmu, zwanego 
podprogramem lub 

procedura z 

parametrem. 

• 

Stosowanie podprogramów skraca 
opis algorytmu. 

• 

Podprogram jest nowa akcja 
podstawowa. 

• 

Procedury czynia algorytm czytelnym 
o przejrzystej strukturze. 

• 

Zwykle obmysla sie wpierw algorytm 
wysokiego poziomu z akcjami 
podstawowymi, które moga byc 
jeszcze nieznane. Takie podejscie 
oznacza projektowanie od ogólu do 
szczególu i nazywane jest 

metoda 

zstepujaca (inne podejscie, to  metoda 
wstepujaca). 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 18 - 

TYPY DANYCH I STRUKTURY 

DANYCH 

 

 

 

 

 

 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 19 - 

TYPY DANYCH I STRUKTURY 

DANYCH 

Kolejki i stosy 

 

Stos jest kolekcja danych, które sa 
uporzadkowane wedlug 
kolejnosci ich otrzymywania. 
Kazdy nowy element danych jest 
umieszczany na szczycie stosu. 
Dane sa zdejmowane ze stosu, 
poczawszy od elementu, który 
znajduje sie na szczycie. Dynamike 
umieszczania elementów na stosie oraz ich 
zdejmowania okresla sie skrótem LIFO (ang. 
Last-In First-Out, czyli ostatni na wejsciu  - 
pierwszy na wyjsciu). Na stosie mozna, obok 
umieszczania oraz zdejmowania elementów, 
wykonywac takze inne operacje, np. usuwac 

wszystkie elementy oraz przesuwac elementy 
w góre lub w dól.  

Uporzadkowanie elementów w kolejce jest 
takie samo jak na stosie, czyli zgodne z 
kolejnoscia ich otrzymywania. Teraz jednak 

kazda nowa dana jest umieszczana na koncu 
kolejki, a pobierana z jej poczatku. Ten 
sposób umieszczania oraz pobierania 
elementów z kolejki okresla sie skrótem FIFO 
(ang.  First-In First-Out, czyli pierwszy na 
wejsciu - pierwszy na wyjsciu).  

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 20 - 

DIAGRAMY ALGORYTMÓW - 

SCHEMATY BLOKOWE 

 

Rysunek przedstawia trzy podstawowe 
wzorce (konstrukcje strukturalne), 
odpowiadajace  wprowadzonym wczesniej 
instrukcjom sterujacym: 

• 

Bezposrednie nastepstwo (sekwencja) 

• 

Wybór warunkowy (w skrócie warunek), 

zwany takze if-then-else 

• 

Iteracja warunkowa z warunkiem 

poczatkowym  do-while (odpowiednik w 
Pascalu while-do). 

• 

Konstrukcja z warunkiem koncowym 

repeat-until

• 

Konstrukcja selekcji (lub wybór-

przypadku) jest rozszerzeniem instrukcji if-
then-else
. Parametr decyzyjny, 
wystepujacy w kazdym bloku decyzyjnym, 
jest testowany kolejno, az do momentu 
spelnienia warunku. Po spelnieniu 

warunku wykonywana jest odpowiadajaca mu czesc 
przypadku case

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 21 - 

DIAGRAMY ALGORYTMÓW - 

DIAGRAMY BLOKOWE 

Diagramy te zostaly opracowane przez Nassi i 
Shneidrman’a i rozbudowane przez Chapin’a 
(zwane sa wykresami Nassi-
Shneiderman’a, wykresami N-S lub 
wykresami Chapin’a).  

Cechy: 

• 

zakres funkcjonalny (zasieg 
powtórzen lub instrukcji  if-then-
else
) jest dobrze zdefiniowany oraz 
dobrze widoczny, 

• 

dowolne przekazywanie sterowania 
przeplywani w ramach diagramu jest 
niemozliwe, 

• 

zasieg widocznosci zmiennych 
(lokalnych i globalnych) jest latwy 
do okreslenia, 

• 

w sposób prosty mozna przedstawiac 
konstrukcje rekurencyjne. 

First task

 

Next task

 

Next task

 

Condition

 

F

 

T

 

F

 

T

 

Case condition

 

Else 

part 

Then 

part 

Loop condition

 

Loop condition

 

Do - while 

part 

Repeat - until 

part 

Value

 

Value

 

Value

 

…..

 

Else 

part 

Case 

part 

Case 

part 

Case 

part 

…. 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 22 - 

DIAGRAMY ALGORYTMÓW - 
DIAGRAMY STRUKTURALNE 

Jezyk projektowania programów 
stosowany jest czesto w sprzezeniu z 
narzedziami projektowania typu CASE

1

 - 

Komputerowo Wspomagana Inzynieria 
Oprogramowania (ang. Computer-Aided 
Software Engineering
), które w 
niektórych przypadkach tlumacza wrecz 
komponenty graficzne algorytmu na 
odpowiadajaca im reprezentacje 
proceduralna. Stad np. diagramy struktur 
sterowania moga byc tlumaczone na kod 
zródlowy jezyka programowania.  

                                                             

1

 CASE mozna uwazac za srodek automatyzacji programowania strukturalnego 

 

 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 23 - 

DIAGRAMY ALGORYTMÓW 

- PORÓWNANIE 

Schemat blokowy - przyklad 

 

 

 

x2

x3

x4

x5

c

d

e

a

b

x1

x8

j

f

g

x6

i

h

x7

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 24 - 

DIAGRAMY ALGORYTMÓW 

- PORÓWNANIE 

Diagram blokowy - przyklad 

 

 

 

 

a

b

x1

case xi, i=2,3,4

x2

x3

x4

f

x6

g

x5

c

d

e

h

i

x8

x7

j

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 25 - 

TRANSLATORY 

Zlózmy ze dany jest programowania, tzn. 
jego skladnia, semantyka i inne potrzebne 
elementy, oraz oprogramowalismy 
opracowany wlasnie algorytm A rozwiazujacy 
pewne zadanie algorytmiczne i chcemy 
przedstawic powstaly program o nazwie  A

P

 

komputerowi. Jak to zrobic, aby komputer 
zrozumial nasz program?  

♦ 

Wyjscie pierwsze. Program  A

P

 mozemy 

wprowadzic do pamieci komputera z 
klawiatury lub wczytujac go z 
zewnetrznego nosnika pamieciowego 
(dyskietka, dysk, itp.). W trakcie 
wczytywania program 

A

P

 

ulega 

przeksztalceniom, które stopniowo 
sprowadzaja go do poziomu zrozumialego 
przez komputer. 

♦ 

Wyjscie drugie. Programu  A

P

 nie musimy 

w calosci tlumaczyc na jezyk nizszego 
poziomu. To raczej kazda z instrukcji 
wysokiego poziomu zostaje 
przetlumaczona na instrukcje jezyka 
maszynowego natychmiast po jej 
napotkaniu, a te z kolei od razu sa 
wykonywane.  Mechanizm odpowiedzialny 
za tego rodzaju tlumaczenie i 
natychmiastowe wykonanie jest 
fragmentem oprogramowania 
systemowego, nazywanym interpreterem.  

Czesto kompilatory oraz interpretery 
okreslane sa wspólnym mianem  translatora 
(doslownie  - tlumacz). Translatory oprócz 
zadania przelozenia programu na jezyk 
maszynowy, musza wykrywac ewentualne 
bledy w skladni programu i diagnozowac ich 
przyczyny.  

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 26 - 

TRANSLATORY 

 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 27 - 

JEZYKI PROGRAMOWANIA 

Skladnia typowego jezyka zawiera:  

• 

warianty kilku struktur sterujacych 

• 

sposoby definiowania rozmaitych struktur 

danych 

• 

wzorce podstawowych instrukcji 

Algorytm sumowania liczb od 1 do N w 
hipotetycznym jezyku JP: 

definiuj NXY liczby 
calkowite 
wczytaj
 N

  X := 0; 
  dla Y od 1 do N wykonaj 

  X := X + Y 
koniecwypisz X

Slowa kluczowe:  definiujwczytajdla itd. 
Instrukcje: 

przypisania  

X := 0 

 

iteracji  

 

dla ... 

wykonaj ... koniec 

 

ALGORYTM 

Jezyk programowania 

PROGRAM 

symbole 

slowa kluczowe 

skladnia 

semantyka 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 28 - 

JEZYKI PROGRAMOWANIA 

Definiowanie skladni jezyka w notacji 
BNF (Backus-Naur Form)  („|” oznacza 
„lub”):  

<instrukcja> : <instrukcja-dla> | 

<instrukcja-
przypisania
> | ... 

<instrukcja-dla> : dla <naglówek-
dla
wykonaj <instrukcjakoniec 
<naglówek-dla> : <zmiennaod 

<wartoscdo 
<wartosc

<wartosc> : <zmienna> | <liczba> | 
... 

Diagramy skladniowe:  

 

instrukcja-dla 

instrukcja-przypisania 

instrukcja 

 

 

naglówek-dla 

instrukcja 

instrukcja-dla 

dla 

wykonaj 

koniec 

 

 

zmienna 

wartosc 

naglówek-dla 

od 

z krokiem 

do 

wartosc 

wartosc

 

 

zmienna 

cyfra 

wartosc 

 

 

 

 

cyfra 

litera 

zmienna 

litera 

 

Definiowanie struktur danych: 
 

definiuj TA tablica 
[1..50,8..107] w niej 
liczby calkowite 

i odwolanie do elementu tablicy: 

 

TA[wartosc,wartosc] 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 29 - 

JEZYKI PROGRAMOWANIA 

Skladnia jezyka programowania okresla:

  

• 

jak opisywac struktury sterujace 

• 

jak opisywac struktury danych 

• 

jak tworzyc poprawne ciagi symboli dla 

nazywania zmiennych i struktur danych 

• 

jak stosowac interpunkcje (np. spacje, 

sredniki, kropki, nawiasy) 

Semantyka okresla znaczenie poprawnych 

skladniowo wyrazen 

Przyklad problemów semantycznych - zmienne 
procedurowe: 

Jesli skladnia dopuszcza zmienne, których 
wartosciami sa nazwy procedur, to procedura 
Proc(V) moze byc wywolywana z róznymi 
wartosciami parametru np.  Proc(Rand) lub 
Proc(Quick). Jaki wynik uzyskamy gdy 
wywolamy Proc(Proc) dla: 

procedura Proc(V): 
1. wywolaj V
(V), umieszczajac 

wynik dzialania w zmiennej 
X

2. jesli X = 1, wróc i podaj 

wynik 0; w przeciwnym razie 
wróc i podaj wynik 1 

Przyklad kompilacji na jezyk nizszego rzedu 
(asembler): 

Jezyk wysokiego 

poziomu 

Asembler 

dla Y od 1 do N 
wykonaj 
  (tresc iteracji) 
koniec 

 

LDS 0,Y 

(zaladuj 0 pod adres 
Y

PETLA  POR N,

(porównaj wart. pod 
adr.) 

 

SKR DALEJ (jesli równe, to 

skocz) 

 

DDS 1,

(dodaj 1 do wart. pod 
adr. Y

 

(tlumaczenie tresci iteracji)

 

SKO PETLA (skocz z powrotem)

DALEJ  ... 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 30 - 

JEZYKI PROGRAMOWANIA 

Definicja pojec:  

Kompilacja  - przekladanie calego 
programu napisanego w jezyku 
wysokiego poziomu  na program w 
jezyku nizszego poziomu 

Interpretacja  - przekladanie kolejno 
instrukcji jezyka  wysokiego poziomu na 
instrukcje poziomu maszynowego 

Elementy komputera:  

 

 

PROCESOR 

Pamiec operacyjna 

Pamieci zewnetrzne 

Urzadzenia 

wejsciowe 

Urzadzenia 

wyjsciowe

 

Uruchomienie programu 

 

 

 

PROCESOR 

Pamiec operacyjna 

Pamiec zewnetrzna

 

Program 

1. krok 

 

background image

Jerzy Pejas:  Algorytmy i struktury danych 

 

 

- 31 - 

JEZYKI PROGRAMOWANIA 

Uruchomienie programu 

 

 

 

 

PROCESOR 

Pamiec operacyjna 

Pamiec zewnetrzna 

 

Program 

2. krok 

 

Dane 

Urz. wejsciowe 

 
 
 
 

 

PROCESOR  

Pamiec operacyjna 

 

Program  

3. krok 

 

Dane 

 

Wyniki 

 

 
 
 

 

 

PROCESOR 

Pamiec operacyjna 

 

Program 

4. krok 

 

Dane 

 

Wyniki 

Urz. wyjsciowe