AiSD wyklad 1 id 53489 Nieznany

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Algorytmy

i

struktury danych

WYKŁAD 1

Dr inż. Krzysztof Pancerz

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Proces tworzenia i uruchamiania programów

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Algorytm, program

Algorytm – przepis postępowania prowadzący
do rozwiązania określonego zadania.

Program – zapis algorytmu i danych w
konkretnym języku programowania.

Generalnie, program realizuje przetwarzanie
określonych danych wejściowych (podawanych
przez użytkownika) w dane wyjściowe (wynik
działania programu).

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Algorytm, program (cd.)

Algorytmy + Struktury danych

=

Programy

(

tytuł książki Niklausa Wirtha

)

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Sposoby reprezentacji algorytmów

Język naturalny.

Lista kroków.

Drzewo algorytmu.

Schemat blokowy.

Pseudokod (mniej formalny, bardziej intuicyjny
system notacji).

Kod w języku programowania.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Własności algorytmów

Skończoność (realizowany ciąg operacji
powinien mieć swój koniec).

Określoność (operacje oraz porządek ich
wykonywania powinny być ściśle określone).

Ogólność (algorytm powinien odnosić się nie
tylko do jednego szczególnego przypadku, ale
do pewnej klasy zadań).

Efektywność (algorytm powinien prowadzić do
rozwiązania możliwie najprostszą drogą).

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Całkowita poprawność algorytmu

Algorytm jest całkowicie poprawny jeśli dla
każdych danych wejściowych spełniających
wymagane warunki wstępne zatrzymuje się i
daje poprawny wynik.

Dowód poprawności algorytmu:

udowodnienie własności stopu (dla każdych danych

wejściowych spełniających wymagane warunki

wstępne algorytm zatrzymuje się),

udowodnienie częściowej poprawności (jeśli

algorytm zatrzymuje się to daje poprawny wynik).

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Całkowita poprawność algorytmu (cd.)

Całkowita poprawność

=

Własność stopu

+

Częściowa poprawność

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Podstawowe typy danych w języku C/C++

Typ danej określa zbiór jej możliwych wartości
oraz zestaw operacji, które można nad nimi
wykonywać. Jednocześnie określa on rozmiar
pamięci potrzebny do przechowywania danej
oraz sposób zapisu danej.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Podstawowe typy danych w języku C/C++ (cd.)

short, int, long – typy reprezentujące liczby
całkowite,

usigned short, unsigned int, unsigned long
– typy reprezentujące liczby całkowite,

float, double – typy reprezentujące liczby
rzeczywiste,

char – typ reprezentujący znaki.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Literały

Literały całkowite

np. 12, -34

Literały rzeczywiste

np. 1.2, -3.45, 0.1E2, 1.0E-10

Literały znakowe

np. 'a', '&'

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Zmienne

Zmienna jest identyfikatorem, który podczas
działania programu może przyjmować różne
wartości ze zbioru określonego za pomocą
typu. Każda zmienna używana w programie
musi zostać zadeklarowana.

Deklaracja zmiennej:
typ nazwa;
Przykład deklaracji:
int a;

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Operator przypisania

Operator przypisania = służy do ustalenia

wartości zmiennej.

Przykład
x=y oznacza, że wartość y przypisywana jest do

zmiennej x.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Operatory arytmetyczne

+

dodawanie

-

odejmowanie

*

mnożenie

/

dzielenie

%

reszta z dzielenia

-

zmiana znaku liczby

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Operatory arytmetyczne (cd.)

++

inkrementacja (zwiększanie o 1)

- -

dekrementacja (zmniejszanie o 1)

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Operatory logiczne

&&

iloczyn logiczny (koniunkcja)

||

suma logiczna (alternatywa)

!

negacja

a

b

a && b

a || b

!a

false

flase

false

false

true

false

true

false

true

true

true

false

false

true

false

true

true

true

true

false

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Operatory relacyjne

==

równy

!=

różny

<

mniejszy

<=

mniejszy lub równy

>

większy

>=

większy lub równy

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja warunkowa IF

if (warunek)
instrukcja

Jeśli warunek jest prawdziwy (true), instrukcja zostaje

wykonana i sterowanie przenoszone jest do kolejnych instrukcji

po instrukcji warunkowej.

Jeśli warunek nie jest prawdziwy (false), instrukcja nie zostaje

wykonana, a sterowanie przenoszone jest bezpośrednio do
kolejnych instrukcji po instrukcji warunkowej.

instrukcja może być instrukcją złożoną { }.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja warunkowa IF-ELSE

if (warunek)
instrukcja1
else
instrukcja2

Jeśli warunek jest prawdziwy (true), tylko instrukcja1 zostaje

wykonana i sterowanie przenoszone jest do kolejnych instrukcji

po instrukcji warunkowej.

Jeśli warunek nie jest prawdziwy (false), tylko instrukcja2 zostaje

wykonana i sterowanie przenoszone jest do kolejnych instrukcji
po instrukcji warunkowej.

instrukcja1 oraz instrukcja2 mogą być instrukcjami złożonymi { }.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja iteracyjna (pętla) WHILE

while (warunek)
instrukcja

Dopóki warunek jest prawdziwy (true), instrukcja jest

wykonywana. Gdy warunek przestaje być prawdziwy (false)

sterowanie przenoszone jest do kolejnych instrukcji po
instrukcji WHILE.

instrukcja może być instrukcją złożoną { }.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja iteracyjna (pętla) DO-WHILE

do {
instrukcja
}
while (warunek
);

Pętla DO-WHILE działa podobnie jak pętla WHILE. Różnica

polega na tym, że warunek jest testowany po wykonaniu

instrukcji. W związku z tym instrukcja zostaje wykonana co
najmniej jeden raz.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja iteracyjna (pętla) FOR

for (zm=pocz; zm<=koniec; zm++)
instrukcja

pocz oraz koniec są wyrażeniami typu

całkowitego.

Zmiennej zm przypisywana jest

wartość pocz. Dopóki wartość zmiennej

jest mniejsza lub równa wartości koniec,
instrukcja jest wykonywana. Za każdym

razem wartość zmiennej zwiększana
jest o 1. Gdy wartość zmiennej zm staje

się większa od wartości koniec
sterowanie jest przenoszone do
kolejnych instrukcji po instrukcji FOR.

instrukcja może być instrukcją złożoną

{ }.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Instrukcja iteracyjna (pętla) FOR (cd.)

for (zm=pocz; zm>=koniec; zm--)
instrukcja

pocz oraz koniec są wyrażeniami typu

całkowitego.

Zmiennej zm przypisywana jest

wartość pocz. Dopóki wartość zmiennej

jest większa lub równa wartości koniec,
instrukcja jest wykonywana. Za każdym

razem wartość zmiennej zmniejszana
jest o 1. Gdy wartość zmiennej zm staje

się mniejsza od wartości koniec
sterowanie jest przenoszone do
kolejnych instrukcji po instrukcji FOR.

instrukcja może być instrukcją złożoną

{ }.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wczytywanie i wypisywanie danych

cin>>zmienna;

cout<<zmienna;

cin – standardowy strumień wejściowy
(klawiatura)
cout – standardowy strumień wyjściowy (ekran
terminala)

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Struktura najprostszego programu w języku C/C++

void main( )

{

// ... instrukcje do wykonania ...

}

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Podstawowe struktury algorytmów

Algorytmy liniowe.

Algorytmy z rozgałęzieniami.

Algorytmy cykliczne (z pętlami).

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Przykład 1 (algorytm liniowy)

Napisać algorytm mnożenia dwóch liczb
całkowitych.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Rozwiązanie przykładu 1

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Przykład 2 (algorytm z rozgałęzieniami)

Napisać algorytm znajdujący maksymalną z
trzech liczb rzeczywistych a, b oraz c.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Rozwiązanie przykładu 2

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Przykład 3 (algorytm z rozgałęzieniami)

Napisać algorytm rozwiązujący równanie
kwadratowe:

ax

2

+bx+c=0

przy założeniu, że a≠0.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Rozwiązanie przykładu 3

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Przykład 4 (algorytm cykliczny)

Napisać algorytm dodający liczby całkowite
podawane przez użytkownika aż do momentu
gdy ich suma przekroczy wartość 100.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Rozwiązanie przykładu 4

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice

Tablica jest zbiorem elementów tego samego
typu.

Każdy element jest identyfikowany przez indeks
(numer pozycji na której się znajduje).

W pamięci komputera tablica zajmuje ciągły
obszar komórek pamięci.

Tablica charakteryzuje się bezpośrednim
dostępem do elementów. Dostęp ten uzyskuje
się poprzez podanie odpowiednich indeksów
elementów.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice jednowymiarowe

A – nazwa tablicy

n – maksymalna liczba elementów, które mogą
być przechowywane w tablicy (rozmiar tablicy).

i-ty element jest przechowywany w tablicy w
komórce o indeksie i.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice jednowymiarowe (cd.)

Numeracja pozycji rozpoczyna się zawsze
od zera w języku C/C++
, tj. indeksem
pierwszego elementu jest 0, następnego 1, itd.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablica w pamięci komputera

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice dwuwymiarowe

Każdy element w tablicy dwuwymiarowej jest
identyfikowany przez dwa indeksy (indeks
wiersza oraz indeks kolumny).

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice jednowymiarowe w języku C/C++

Deklaracja tablicy o ustalonym rozmiarze

typ_elementów nazwa_tablicy[rozmiar];

Przykłady

int A[50];
char znaki[100];

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice jednowymiarowe w języku C/C++(cd.)

Inicjalizacja tablic

Przykład
int tab[ ]={1, -5, 0, 34};

Odwołanie do elementów tablicy

nazwa_tablicy[indeks_elementu];
Przykłady
A[5];
znaki[0];

Określenie rozmiaru tablicy w bajtach

sizeof(nazwa_tablicy);

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice dwuwymiarowe w języku C/C++

Deklaracja tablicy dwuwymiarowej o ustalonym
rozmiarze:

typ_elementów nazwa_tablicy[liczba_wierszy]

[liczba_kolumn];

Przykłady

float macierz[50][100];
char a[5][5];

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Tablice dwuwymiarowe w języku C/C++

Inicjalizacja tablicy

Przykład
char tab[ ][ ]={ {'a', 'b', 'c'}, {'d', 'e', 'f'} };

Odwołanie do elementów tablicy

nazwa_tablicy[indeks_wiersza][indeks_kolumny];
Przykłady
macierz[5][8];
a[0][0];

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wczytywanie elementów tablicy jednowymiarowej

A – tablica o rozmiarze n

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wypisywanie elementów tablicy jednowymiarowej

A – tablica o rozmiarze n

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wyszukiwanie największego elementu w tablicy

jednowymiarowej

A – tablica o rozmiarze n

max – indeks aktualnie
największego elementu
w tablicy

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wyszukiwanie najmniejszego elementu w tablicy

jednowymiarowej

A – tablica o rozmiarze n

min – indeks aktualnie
najmniejszego elementu
w tablicy

min

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Zliczanie elementów tablicy jednowymiarowej

należących do danego przedziału

A – tablica o rozmiarze n

a – lewy kraniec
przedziału

b – prawy kraniec
przedziału

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Wczytywanie elementów tablicy dwuwymiarowej

M – tablica (macierz) o
rozmiarze m×n

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy

Graf (lub graf nieskierowany) G składa się z

niepustego skończonego zbioru wierzchołków
(węzłów) V oraz skończonego zbioru krawędzi E
będących nieuporządkowanymi parami elementów
ze zbioru V.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Przykład

G=V , E
V ={a , b , c , d }

E={a , b,b , c,b , d ,a , d }

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Graf skierowany G składa się z niepustego

skończonego zbioru wierzchołków (węzłów) V oraz
skończonego zbioru krawędzi E będących
uporządkowanymi parami elementów ze zbioru V.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Przykład

G=V , E
V ={a , b , c , d }

E={a , b,b , a,b , c,b , d ,d , a}

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Krawędź (i,j), gdzie i oraz j są wierzchołkami,
nazywa się krawędzią incydentną z wierzchołkami
i oraz j.

Krawędź (i,i) incydentna z pojedynczym
wierzchołkiem i nazywana jest pętlą.

Krawędzie incydentne z wierzchołkami i oraz j,
gdzie ij, nazywane są krawędziami
równoległymi
.

Grafem prostym nazywany jest graf, który nie
zawiera zarówno pętli jak i krawędzi równoległych.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Przykład

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Reprezentacja grafów

Macierz sąsiedztwa

Wiersze i kolumny macierzy sąsiedztwa m
etykietowane są uporządkowanymi parami
wierzchołków.

Jeśli (i,j) jest krawędzią, to m(i,j)=1.

Jeśli (i,j) nie jest krawędzią, to m(i,j)=0.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Reprezentacja grafów

Przykład

m=

[

0 1 0 1
1 0 1 1
0 1 0 0
1 1 0 0

]

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Reprezentacja grafów

Przykład

m=

[

0 1 0 0
1 0 1 1
0 0 0 0
1 0 0 0

]

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Graf z wagami (skierowany lub nieskierowany) G

składa się ze zbioru wierzchołków V, zbioru
krawędzi E oraz funkcji wagowej w
przyporządkowującej każdej krawędzi ze zbioru E
liczbę rzeczywistą.

Wartość dla jest nazywana wagą lub
kosztem krawędzi e.

w e

eE

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Przykład

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Niech u oraz v będą wierzchołkami grafu. Ścieżką z u

do v długości n nazywamy ciąg n+1 wierzchołków
oraz n krawędzi o początku w wierzchołku u i końcu
w wierzchołku v:

Ścieżka prosta z u do v jest ścieżką z u do v bez

powtarzających się wierzchołków.

Cykl jest ścieżką o niezerowej długości z wierzchołka

v do tego samego wierzchołka v bez powtarzających
się krawędzi.

u , e

1

, v

1

,e

2

, v

2

,... , v

n−1

, e

n

, v

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Przykład

Ścieżka: (a, (a,b), b, (b,d), d)
Cykl: (a, (a,b), b, (b,d), d, (d,a), a)

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Grafy (cd.)

Graf spójny jest grafem w którym istnieje ścieżka z u

do v dla każdego wierzchołka u oraz v.

Graf acykliczny jest grafem, który nie zawiera cykli.

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Drzewa

Drzewo (lub drzewo wolne) T jest grafem prostym,

który jest acykliczny i spójny.

Przykład

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Drzewa (cd.)

Drzewo z korzeniem jest drzewem z wyróżnionym

jednym wierzchołkiem nazywanym korzeniem.

Przykład

liście

background image

Krzysztof Pancerz

Algorytmy i struktury danych

Drzewa (cd.)

Drzewo binarne jest drzewem z korzeniem, w którym

każdy wierzchołek ma co najwyżej dwa wierzchołki
potomne.

Przykład


Wyszukiwarka

Podobne podstrony:
AiSD wyklad 9 id 53492 Nieznany (2)
AiSD wyklad 6 id 53491 Nieznany (2)
LOGIKA wyklad 5 id 272234 Nieznany
ciagi liczbowe, wyklad id 11661 Nieznany
AF wyklad1 id 52504 Nieznany (2)
Neurologia wyklady id 317505 Nieznany
ZP wyklad1 id 592604 Nieznany
CHEMIA SA,,DOWA WYKLAD 7 id 11 Nieznany
or wyklad 1 id 339025 Nieznany
II Wyklad id 210139 Nieznany
cwiczenia wyklad 1 id 124781 Nieznany
BP SSEP wyklad6 id 92513 Nieznany (2)
MiBM semestr 3 wyklad 2 id 2985 Nieznany
algebra 2006 wyklad id 57189 Nieznany (2)
olczyk wyklad 9 id 335029 Nieznany
Kinezyterapia Wyklad 2 id 23528 Nieznany
AMB ME 2011 wyklad01 id 58945 Nieznany (2)
AWP wyklad 6 id 74557 Nieznany

więcej podobnych podstron