Programowanie.pdf
(
221 KB
)
Pobierz
Programowanie
komputerowe
Wykład 3(4)
Podstawy algorytmów
Jerzy Duda, 2010
Algorytmy
Algorytm
opisuje krok po kroku rozwiązanie jakiegoś problemu lub
osiągnięcie wyznaczonego celu /Sysło/
Algorytm
to skończony, uporządkowany ciąg jasno zdefiniowanych
czynności, koniecznych do wykonania pewnego zadania
Słowo "algorytm" pochodzi od nazwiska
Muhammed ibn Musa al-
Choremiego
, arabskiego matematyka Ŝyjącego na przełomie VIII i IX w.
Zadanie
stanowi problem, czyli pytanie na które szukamy odpowiedzi
Przykład problemu 1:
Posortuj w porządku niemalejącym listę S, zawierającą n liczb.
Odpowiedzią są liczby w postaci posortowanego ciągu.
Przykład problemu 2:
Określ, czy liczba x znajduje się na liście S, zawierającej n liczb.
Odpowiedź jest twierdząca, jeŜeli x występuje w S, w przeciwnym
wypadku jest przecząca.
Jerzy Duda, WZ AGH, 2008-2010
Źródła: wikipedia, Szkolny Leksykon Informatyczny, Neapolitan, Naimipour "Podstawy algorytmów"
1
Problem – realizacje
Problem moŜe zawierać zmienne, którym przypisane są pewne
wartości w momencie jego postawienia
Takie zmienne noszą nazwę
parametrów
problemu
KaŜde konkretne przypisanie wartości do parametrów nosi nazwę
realizacji
(ang.
instance
) problemu
Rozwiązaniem realizacji problemu jest odpowiedź na pytanie
postawione przez problem w danej realizacji
Przykładowa realizacja problemu 1:
S
= [10, 7, 11, 5 ,13, 8], n = 6
Rozwiązanie problemu 1:
S
= [5, 7, 8, 10, 11 ,13]
Źródło: wikipedia, Szkolny Leksykon Informatyczny, Neapolitan, Naimipour "Podstawy algorytmów..."
Jerzy Duda, WZ AGH, 2008-2010
Algorytmy – rozwiązanie
Algorytm rozwiązuje problem, jeŜeli potrafi znaleźć odpowiedź dla
wszystkich realizacji problemu
Przykładowa realizacja problemu 2:
S
= [10, 7, 11, 5 ,13, 8],
n
= 6,
x
= 5
Algorytm dla problemu 2:
Rozpoczynając od pierwszego elementu w
S
porównujemy
x
z kaŜdym
elementem w
S
po kolei, aŜ do momentu, gdy znajdziemy w
S
element
x
lub wyczerpiemy wszystkie elementy z
S
. W razie znalezienia elementu
x
odpowiedź jest twierdząca, a w przeciwnym wypadku – przecząca.
Rozwiązanie problemu 2:
tak,
x
występuje w
S
Źródło: Neapolitan, Naimipour "Podstawy algorytmów..."
Jerzy Duda, WZ AGH, 2008-2010
2
Algorytmy
Algorytm
to skończony ciąg działań elementarnych, który określa
sposób otrzymania rozwiązania zadania z danych wejściowych
/
Markov
/
Algorytm
to sekwencja kroków obliczeniowych, która transformuje
wejście w wyjście /
Cormen
/
D. Knuth
– cechy algorytmu:
Skończoność – algorytm musi się zakończyć po wykonaniu określonej
liczby kroków
Poprawne zdefiniowanie – kaŜdy krok musi być precyzyjnie i
jednoznacznie określony
Dane wejściowe – kaŜdy algorytm ma na wejściu 0 lub więcej wartości
wejściowych, znanych przed jego rozpoczęciem
Dane wyjściowe – algorytm tworzy jedną lub więcej wartości wyjściowych,
powiązanych z wartościami wejściowymi
Efektywne zdefiniowane – operacje powinny być jak najprostsze, moŜliwe
do precyzyjnego wykonania "na papierze" w skończonym czasie
Jerzy Duda, WZ AGH, 2008-2010
Źródła: wikipedia, D. Knuth: Art of computer programming, vol. 1
Algorytmy – pseudokod
Algorytm moŜna opisać:
zwykłym językiem
za pomocą tzw. pseudokodu
stosując schematy blokowe
Pseudokod
zachowując strukturę charakterystyczną dla kodu
zapisanego w języku programowania, rezygnuje ze ścisłych reguł
składniowych na rzecz prostoty i czytelności
indeks = 1
While indeks<=n
And s(indeks)<>x
indeks=indeks+1
Wend
If indeks>n Then
p=False
Else
p=True
End If
WHILE indeks <=n
AND x nie jest w S
zwiĘksz indeks
IF indeks>n
zwróĆ false
ELSE
zwróĆ true
Jerzy Duda, WZ AGH, 2008-2010
Źródło: wikipedia, Neapolitan, Naimipour "Podstawy algorytmów..."
3
Algorytmy – schemat blokowy (1)
Norma ISO 5807:1985 definiuje 3 podstawowe symbole dla
schematów blokowych (ang.
flowcharts
)
IBM (
IBM Flowcharting Templates
) określił kilkanaście dodatkowych
symboli, np.
Pełna lista symboli: http://www.fh-jena.de/~kleine/history/software/IBM-FlowchartingTechniques-GC20-8152-1.pdf
Jerzy Duda, WZ AGH, 2008-2010
Algorytmy – schemat blokowy (2)
Jerzy Duda, WZ AGH, 2008-2010
4
Algorytmy sortowania – podstawianie
Proste (naiwne)
Zaawansowane (logarytmiczne)
Jednym z najprostszych algorytmów sortowania jest
sortowanie przez
podstawianie
Polega na porównywaniu kolejnych elementów tablicy i zamianie
elementu o mniejszej wartości z elementem o wartości większej.
Operacja jest wykonywana dla wszystkich indeksów sortowanej tablicy
dla kolejnych elementów na pozycji
i
:
dla kolejnych elementów na pozycji
j
, większej od
i
:
jeŜeli element na pozycji
j
jest mniejszy od elementu na pozycji
i
, zamień je miejscami
For i=1 To n-1
For j=i+1 To n
If s(j)<s(i) Then
zamien s(i) z s(j)
End If
Next j
Next i
[10, 7, 11, 5 ,13, 8]
[
7
,
10
, 11, 5 ,13, 8]
[
7
, 10,
11
, 5 ,13, 8]
[
5
, 10, 11,
7
, 13, 8]
[
5
, 10, 11, 7 ,
13
, 8]
[
5
, 10, 11, 7 ,13,
8
]
i=1
Jerzy Duda, WZ AGH, 2008-2010
Źródło: Neapolitan, Naimipour "Podstawy algorytmów"
Algorytmy sortowania – bąbelkowe
Innym wariantem jest tzw.
sortowanie bąbelkowe
Polega na porównywaniu dwóch kolejnych elementów i zamianie ich
kolejności, jeŜeli zaburza ona porządek, w jakim sortuje się tablicę.
[
10
,
7
, 11, 5 ,13, 8]
[7,
10
,
11
, 5 ,13, 8]
[7, 10,
11
,
5
,13, 8]
[7, 10, 5,
11
,
13
, 8]
[7, 10, 5, 11 ,
13
,
8
]
[7, 10, 5, 11, 8, 13]
For i=1 to n
For j=1 To n-i
If s(j)>s(j+1)
zamien s(j) z s(j+1)
Next j
Next i
[
7
,
10
, 5, 11, 8, 13]
[7,
10
,
5
, 11, 8, 13]
[7, 5,
10
,
11
, 8, 13]
[7, 5, 10,
11
,
8
, 13]
[7, 5, 10, 8,
11
,
13
]
[7, 5, 10, 8, 11, 13]
Jerzy Duda, WZ AGH, 2008-2010
Źródło: wikipedia
5
Plik z chomika:
Kaacha91
Inne pliki z tego folderu:
INFORMATYKA wyklady.doc
(662 KB)
Algorytmy i programowanie.pdf
(373 KB)
Algorytmy - prezentacja.ppt
(315 KB)
Pętle loop i for.doc
(71 KB)
Programowanie.pdf
(221 KB)
Inne foldery tego chomika:
Chemia
Dydaktyka
Edytorstwo
Ekonomia
Filologia polska
Zgłoś jeśli
naruszono regulamin