dr inż. Jarosław Forenc

Wielkość: px
Rozpocząć pokaz od strony:

Download "dr inż. Jarosław Forenc"

Transkrypt

1 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 7 ( )

2 Rok akademicki 2012/2013, Wykład nr 7 2/66 Plan wykładu nr 7 Algorytmy komputerowe definicje algorytmu podstawowe cechy algorytmu sposoy opisu algorytmów Rekurencja Złożoność oliczeniowa Sortowanie proste wstawianie proste wyieranie ąelkowe Quick-Sort Mnożenie macierzy

3 Rok akademicki 2012/2013, Wykład nr 7 3/66 Algorytm - definicje Definicja 1 Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania Definicja 2 Metoda rozwiązania zadania Definicja 3 Ściśle określona procedura oliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu

4 Rok akademicki 2012/2013, Wykład nr 7 4/66 Algorytmy Słowo algorytm pochodzi od nazwiska Muhammada in-musy al-chuwarizmiego (po łacinie pisanego jako Algorismus), matematyka perskiego z IX wieku Badaniem algorytmów zajmuje się algorytmika Algorytm może zostać zaimplementowany w postaci programu komputerowego Przetłumaczenie algorytmu na wyrany język programowania nazywane jest też kodowaniem algorytmu Ten sam algorytm może yć zaimplementowany (zakodowany) w różny sposó przy użyciu różnych języków programowania.

5 Rok akademicki 2012/2013, Wykład nr 7 5/66 Podstawowe cechy algorytmu Posiadanie danych wejściowych (w ilości większej lu równej zeru) pochodzących z dorze zdefiniowanego zioru Zwracanie wyniku Precyzyjne zdefiniowanie (każdy krok algorytmu musi yć jednoznacznie określony) Poprawność (dla każdego z założonego dopuszczalnego zestawu danych wejściowych) Zakończenie działania po skończonej liczie kroków (powinna istnieć poprawnie działająca reguła stopu algorytmu) Efektywność (jak najkrótszy czas wykonania i jak najmniejsze zapotrzeowanie na pamięć).

6 Rok akademicki 2012/2013, Wykład nr 7 6/66 Sposoy opisu algorytmów 1. Opis słowny w języku naturalnym lu w postaci listy kroków (opis w punktach) 2. Schemat lokowy 3. Pseudokod (nieformalna odmiana języka programowania) 4. Wyrany język programowania

7 Rok akademicki 2012/2013, Wykład nr 7 7/66 Opis słowny algorytmu Podanie kolejnych czynności, które należy wykonać, ay otrzymać oczekiwany efekt końcowy Przypomina przepis kulinarny z książki kucharskiej lu instrukcję osługi urządzenia, np. Algorytm: Tortilla ( Podróże kulinarne R. Makłowicza) Dane wejściowe: 0,5 kg ziemniaków, 100 g kiełasy Chorizo, 8 jajek Dane wyjściowe: gotowa Tortilla Opis algorytmu: Ziemniaki orać i pokroić w plasterki. Kiełasę pokroić w plasterki. Ziemniaki wrzucić na gorącą oliwę na patelni i przyrumienić z ou stron. Kiełasę wrzucić na gorącą oliwę na patelni i przyrumienić z ou stron. Uić jajka i dodać do połączonych ziemniaków i kiełasy. Dodać sól i pieprz. Usmażyć z ou stron wielki omlet nadziewany chipsami ziemniaczanymi z kiełaską.

8 Rok akademicki 2012/2013, Wykład nr 7 8/66 Lista kroków Uporządkowany opis wszystkich czynności, jakie należy wykonać podczas realizacji algorytmu Krok jest to pojedyncza czynność realizowana w algorytmie Kroki w algorytmie są numerowane, operacje wykonywane są zgodnie z rosnącą numeracją kroków Jedynym odstępstwem od powyższej reguły są operacje skoku (warunkowe lu ezwarunkowe), w których jawnie określa się numer kolejnego kroku Przykład (instrukcja otwierania wózka-specerówki): Krok 1: Krok 2: Krok 3: Zwolnij element lokujący wózek Rozkładaj wózek w kierunku kółek Naciskając nogą dolny element lokujący aż do zatrzaśnięcia, rozłóż wózek do pozycji przewozowej

9 Rok akademicki 2012/2013, Wykład nr 7 9/66 Schemat lokowy Zawiera plan algorytmu przedstawiony w postaci graficznej struktury elementów zwanych lokami Każdy lok zawiera informację o operacji, która ma yć w nim wykonana Pomiędzy lokami umieszczone są linie przepływu (strzałki) określające kolejność wykonywania loków algorytmu Podstawowe symole stosowane na schematach lokowych: linia przepływu (połączenie) występuje w postaci linii zakończonej strzałką określa kierunek przemieszczania się po schemacie

10 Rok akademicki 2012/2013, Wykład nr 7 10/66 Schemat lokowy Podstawowe symole stosowane na schematach lokowych: lok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz STOP lok końcowy, koniec algorytmu wskazuje miejsce zakończenia algorytmu musi występować przynajmniej jeden raz lok wykonawczy, lok funkcyjny zawiera polecenie (elementarną instrukcję) instrukcją może yć podstawienie, operacja arytmetyczna, wprowadzenie danych lu wyprowadzenie wyników

11 Rok akademicki 2012/2013, Wykład nr 7 11/66 Schemat lokowy Podstawowe symole stosowane na schematach lokowych: lok warunkowy (decyzyjny, porównujący) sprawdza umieszczony w nim warunek i dokonuje wyoru tylko jednej drogi wyjściowej połączenia wychodzące z loku: - T lu TAK - gdy warunek jest prawdziwy - N lu NIE - gdy warunek nie jest prawdziwy Czasami wprowadzanie i wyprowadzanie danych oznacza się dodatkowym lokiem wejścia-wyjścia lok wejścia-wyjścia poprzez ten lok wprowadzane są dane i wyprowadzane wyniki

12 Rok akademicki 2012/2013, Wykład nr 7 12/66 Pseudokod i język programowania Pseudokod: Pseudokod (pseudojęzyk) - uproszczona wersja języka programowania Często zawiera zwroty pochodzące z języków programowania Zapis w pseudokodzie może yć łatwo przetłumaczony na wyrany język programowania Opis w języku programowania: Zapis programu w konkretnym języku programowania Stosowane języki: Pascal, C, Matla (kiedyś - Fortran, Basic)

13 Rok akademicki 2012/2013, Wykład nr 7 13/66 Algorytm Euklidesa - lista kroków Algorytm Euklidesa - największy wspólny dzielnik dwóch licz Dane wejściowe: niezerowe liczy naturalne a i Dane wyjściowe: NWD(a,) Kolejne kroki: 1. Czytaj liczy a i 2. Dopóki a i są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4 3. Jeśli a jest większe od, to weź za a resztę z dzielenia a przez, w przeciwnym razie weź za resztę z dzielenia przez a 4. Przyjmij jako największy wspólny dzielnik tę z licz a i, która pozostała większa od zera 5. Drukuj NWD(a,)

14 Rok akademicki 2012/2013, Wykład nr 7 14/66 Algorytm Euklidesa - przykład NWD(1675,3752) =? a Dzielenie większej liczy przez mniejszą Zamiana /a = 3752/1675 = 2 reszta 402 = a/ = 1675/402 = 4 reszta 67 a = /a = 402/67 = 6 reszta 0 = KONIEC NWD(1675,3752) = 67

15 Rok akademicki 2012/2013, Wykład nr 7 15/66 Algorytm Euklidesa - schemat lokowy

16 Rok akademicki 2012/2013, Wykład nr 7 16/66 Algorytm Euklidesa - pseudokod NWD(a,) while a>0 i >0 do if a> then a a mod else mod a if a>0 then return a else return

17 Rok akademicki 2012/2013, Wykład nr 7 17/66 Algorytm Euklidesa - język programowania (C) int NWD(int a, int ) { while (a>0 && >0) if (a>) a = a % ; else = % a; if (a>0) return a; else return ; }

18 Rok akademicki 2012/2013, Wykład nr 7 18/66 Wartość ezwzględna liczy - schemat lokowy x x dla = x dla x 0 x < 0 START START Wczytaj(x) Wczytaj(x) tak x 0 nie tak x 0 nie Drukuj(x) Drukuj(-x) Drukuj(x) Drukuj(-x) STOP STOP STOP

19 Rok akademicki 2012/2013, Wykład nr 7 19/66 Parzystość liczy - schemat lokowy START START Wczytaj(x) Wczytaj(x) x < 0 tak nie x mod 2 = 0 tak nie x = -x x > 1 nie Drukuj (x - nieparzyste) Drukuj (x - parzyste) tak x = x -2 nie x = 0 tak STOP Drukuj (x - nieparzyste) Drukuj (x - parzyste) STOP

20 Rok akademicki 2012/2013, Wykład nr 7 20/66 Równanie kwadratowe - schemat lokowy ax 2 = + x + c 2 4ac = 0 START Wczytaj(a,,c) delta= 2-4ac > 0 : x 1 =, 2a = 0 : x 1 = x 2 = 2 a x 2 = + 2a x tak x1 = 2a 2 + = 2a Drukuj(x 1,x 2 ) STOP delta > 0 nie tak x = x 1 2 = 2a Drukuj(x 1,x 2 ) delta = 0 nie Drukuj(Brak rozwiązania) STOP STOP

21 Rok akademicki 2012/2013, Wykład nr 7 21/66 Silnia - schemat lokowy n! = n 0! = 1 1! = 1 2! = 1 2 3! = START Wczytaj(n) silnia = 1 n > 0 nie tak silnia=n silnia n = n -1 Drukuj(silnia) STOP

22 Rok akademicki 2012/2013, Wykład nr 7 22/66 Rekurencja Rekurencja lu rekursja - jest to odwoływanie się funkcji lu definicji do samej sieie Rozwiązanie danego prolemu wyraża się za pomocą rozwiązań tego samego prolemu, ale dla danych o mniejszych rozmiarach W matematyce mechanizm rekurencji stosowany jest do definiowania lu opisywania algorytmów Silnia: 1 n! = n( n 1)! dla dla n = 0 n 1 int silnia(int n) { return n==0? 1 : n*silnia(n-1); }

23 Rok akademicki 2012/2013, Wykład nr 7 23/66 Rekurencja - ciąg Fionacciego F n = 0 dla n = 0 1 dla n = 1 F n 1 + F n 2 dla n > 1 int F(int n) { if (n==0) return 0; else if (n==1) return 1; else return F(n-1) + F(n-2); }

24 Rok akademicki 2012/2013, Wykład nr 7 24/66 Rekurencja - algorytm Euklidesa NWD( a, ) = a NWD(, a mod ) dla dla = 0 1 int NWD(int a, int ) { if (==0) return a; else return NWD(,a % ); }

25 Rok akademicki 2012/2013, Wykład nr 7 25/66 Złożoność oliczeniowa W celu rozwiązania danego prolemu oliczeniowego szukamy algorytmu najardziej efektywnego czyli: najszyszego o możliwie małym zapotrzeowaniu na pamięć Do oceny efektywności programu służy złożoność oliczeniowa (koszt algorytmu) Złożoność oliczeniowa algorytmu: jest ilością zasoów potrzenych do jego działania (czas, pamięć) jest funkcją rozmiaru danych, na których pracuje algorytm

26 Rok akademicki 2012/2013, Wykład nr 7 26/66 Złożoność oliczeniowa Złożoność czasowa Jej miarą jest licza podstawowych operacji (dominujących) Podstawowe operacje - porównanie, podstawienie, operacja arytmetyczna Złożoność pamięciowa Jest miarą wykorzystania pamięci (licza komórek pamięci) Złożoność pesymistyczna Odpowiada danym najardziej niesprzyjającym dla algorytmu Złożoność średnia Złożoność uśredniona po wszystkich możliwych zestawach danych, występująca dla typowych danych wejściowych

27 Rok akademicki 2012/2013, Wykład nr 7 27/66 Notacja O ( duże O ) Wyraża złożoność matematyczną algorytmu Po literze O występuje wyrażenie w nawiasach zawierające literę n, która oznacza liczę elementów, na której działa algorytm Do wyznaczenia złożoności ierze się pod uwagę liczę wykonywanych w algorytmie podstawowych operacji Przykład: O(n) - złożoność algorytmu jest prostą funkcją liczy elementów (jeśli sortowanie elementów zajmuje 5 s, to sortowanie elementów zajmie 10 s) O(n 2 )- czas konieczny do wykonania algorytmu rośnie wraz z kwadratem liczy elementów (przy podwojeniu liczy elementów ich osługa ędzie trwała cztery razy dłużej)

28 Rok akademicki 2012/2013, Wykład nr 7 28/66 Notacja O ( duże O ) Porównanie najczęściej występujących złożoności: Elementy O(log n) O(n) O(n logn) O(n 2 ) O(2 n ) , , , O(log n) - złożoność logarytmiczna O(n) - złożoność liniowa O(n log n) - złożoność liniowo-logarytmiczna (quasi-liniowa) O(n 2 ) - złożoność kwadratowa O(2 n ) - złożoność wykładnicza

29 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 29/66 Sortowanie sortowanie polega na uporządkowaniu zioru danych względem pewnych cech charakterystycznych każdego elementu tego zioru (wartości każdego elementu) w przypadku licz, sortowanie polega na znalezieniu kolejności licz zgodnej z relacją lu Przykład: talica nieposortowana: talica posortowana zgodnie z relacją (od najmniejszej do największej liczy): talica posortowana zgodnie z relacją (od największej do najmniejszej liczy):

30 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 30/66 Sortowanie w przypadku słów sortowanie polega na ustawieniu ich w porządku alfaetycznym (leksykograficznym) Przykład: talica nieposortowana: talice posortowane:

31 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 31/66 Sortowanie w praktyce sortowanie sprowadza się do porządkowanie danych na podstawie porównania - porównywany element to klucz Przykład: talica nieposortowana (imię, nazwisko, wiek): talica posortowana (klucz - nazwisko): talica posortowana (klucz - wiek):

32 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 32/66 Sortowanie Po co stosować sortowanie? posortowane elementy można szyciej zlokalizować posortowane elementy można przedstawić w czytelniejszy sposó Klasyfikacje algorytmów sortowania złożoność oliczeniowa algorytmu - zależność liczy wykonywanych operacji w stosunku do liczeności sortowanego zioru n złożoność pamięciowa - wielkość zasoów zajmowanych przez algorytm (sortowanie w miejscu - wielkość zioru danych podczas sortowania nie zmienia się lu jest tylko nieco większa) sortowanie wewnętrzne (odywa się w pamięci komputera) i zewnętrzne (nie jest możliwe jednoczesne umieszczenie wszystkich elementów zioru sortowanego w pamięci komputera)

33 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 33/66 Klasyfikacje algorytmów sortowania Stailność algorytmu: algorytm jest stailny, jeśli podczas sortowania zachowuje kolejność występowania elementów o tym samym kluczu, np. talica nieposortowana (imię, nazwisko, wiek): talica posortowana algorytmem stailnym (klucz - wiek): talica posortowana algorytmem niestailnym (klucz - wiek):

34 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 34/66 Proste wstawianie (insertion sort) Przykład: Funkcja w języku C: void InsertionSort(int ta[]) { int i,j,tmp; } for (i=1; i<n; i++) { j=i; tmp=ta[i]; while (ta[j-1]>tmp && j>0) { ta[j]=ta[j-1]; j--; } ta[j]=tmp; }

35 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 35/66 Proste wstawianie (insertion sort) Uwagi: złożoność algorytmu: O(n 2 ) + wydajny dla danych wstępnie posortowanych + wydajny dla ziorów o niewielkiej liczeności + małe zasoy zajmowane podczas pracy (sortowanie w miejscu) + stailny + prosty w implementacji mała efektywność dla normalnej i dużej ilości danych.

36 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 36/66 Proste wyieranie (selection sort) Przykład: Funkcja w języku C: void SelectionSort(int ta[]) { int i,j,k,tmp; } for (i=0;i<n-1;i++) { k=i; for (j=i+1; j<n; j++) if (ta[k]>=ta[j]) k = j; tmp = ta[i]; ta[i] = ta[k]; ta[k] = tmp; }

37 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 37/66 Proste wyieranie (selection sort) Uwagi: złożoność algorytmu: O(n 2 ) + szyki w sortowaniu niewielkich talic + małe zasoy zajmowane podczas pracy (sortowanie w miejscu) + prosty w implementacji licza porównań elementów jest niezależna od początkowego rozmieszczenia elementów w talicy w algorytmie może zdarzyć się, że wykonywana jest zamiana tego samego elementu ze soą.

38 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 38/66 Bąelkowe (ule sort) sortowanie ąelkowe (ang. ule sort), nazywane jest także: sortowaniem pęcherzykowym sortowaniem przez prostą zamianę (ang. straight exchange) metoda ta polega na porównywaniu dwóch kolejnych elementów i zamianie ich kolejności jeśli jest to konieczne nazwa metody wzięła się stąd, że kolejne porównania powodują wypychanie kolejnego największego elementu na koniec ( wypłynięcie największego ąelka )

39 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 39/66 Bąelkowe (ule sort)

40 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 40/66 Bąelkowe (ule sort) Funkcja w języku C: void BuleSort(int ta[]) { int i,j,tmp,koniec; } do { koniec=0; for (i=0;i<n-1;i++) if (ta[i]>ta[i+1]) { tmp=ta[i]; ta[i]=ta[i+1]; ta[i+1]=tmp; koniec=1; } } while (koniec);

41 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 41/66 Bąelkowe (ule sort) Uwagi: złożoność algorytmu: O(n 2 ) + prosta realizacja + wysoka efektywność użycia pamięci (sortowanie w miejscu) + stailny mała efektywność.

42 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 42/66 Sortowanie szykie (Quick-Sort) Faza dzielenia: w fazie dzielenia talica jest dzielona na dwie części wokół pewnego elementu (nazywanego elementem centralnym) wyieramy jeden element (losowo, choć może to yć element środkowy) i nazywamy go x przeglądamy talicę od lewej strony, aż znajdziemy element a i x, a następnie przeglądamy talicę od prawej strony, aż znajdziemy a j x zamieniamy elementy a i i a j miejscami i kontynuujemy proces przeglądania i zamiany, aż nastąpi gdzieś spotkanie w środku talicy w rezultacie otrzymujemy talicę podzieloną na lewą część z wartościami mniejszymi od x i na prawą część z wartościami większymi od x

43 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 43/66 Sortowanie szykie (Quick-Sort) Faza sortowania: zawiera dwa rekurencyjne wywołania tej samej funkcji sortowania: dla lewej i dla prawej części posortowanej talicy rekurencja zatrzymuje się, gdy wielkość talicy wynosi 1 Przykład: sortujemy 6-elementową talicę ta: wywołanie funkcji QuickSort() ma postać: QuickSort(ta,0,5);

44 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 44/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,0,5): element środkowy: (0+5)/2 = 2, x = ta[2] = 5 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami poszukiwania kończymy, gdy indeksy mijają się wywołujemy rekurencyjnie funkcję QuickSort() dla elementów z zakresów [l,j] i [i,r]: QuickSort(ta,0,3); QuickSort(ta,4,5);

45 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 45/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,0,3): element środkowy dla zakresu [0,3]: (0+3)/2 = 1, x = ta[1] = 2 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: i j zamiana poszukiwania kończymy, gdy indeksy mijają się: wywołanie QuickSort() tylko dla elementów z zakresu [2,3], gdyż po lewej stronie rozmiar talicy do posortowania wynosi 1: QuickSort(ta,2,3);

46 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 46/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,2,3): element środkowy dla zakresu [2,3]: (2+3)/2 = 2, x = ta[2] = 3 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: poszukiwania kończymy, gdy indeksy mijają się: rozmiar ou talic do posortowania wynosi 1 więc nie ma nowych wywołań

47 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 47/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,4,5): element środkowy dla zakresu [4,5]: (4+5)/2 = 4, x = ta[4] = 6 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: poszukiwania kończymy, gdy indeksy mijają się: rozmiar ou talic do posortowania wynosi 1 więc nie ma nowych wywołań

48 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 48/66 Sortowanie szykie (Quick-Sort) Funkcja w języku C: void QuickSort(int ta[], int l, int r) { int i,j,x,y; } i=l; j=r; x=ta[(l+r)/2]; do { while (ta[i]<x) i++; while (x<ta[j]) j--; if (i<=j) { y=ta[i]; ta[i]=ta[j]; ta[j]=y; i++; j--; } } while (i<=j); if (l<j) QuickSort(ta,l,j); if (i<r) QuickSort(ta,i,r);

49 Rok akademicki 2012/2013, Wykład nr 7 49/66 Funkcja qsort() w języku C algorytm Quick-Sort został zaimplementowany w języku C w funkcji: QSORT stdli.h void qsort(void *aza, size_t n, size_t size, (*funkcja)(const void *element1, const void *element2)); funkcja qsort() sortuje metodą Quick-Sort talicę wskazywaną przez argument aza i zawierającą n elementów o rozmiarze size funkcja qsort() posługuje się funkcją porównującą funkcja(), której argumentami są wskazania do elementów talicy aza funkcja() powinna zwracać wartości: < 0, gdy *element1 < *element2 == 0, gdy *element1 == *element2 > 0, gdy *element1 > *element2

50 Rok akademicki 2012/2013, Wykład nr 7 50/66 Funkcja qsort() w języku C - przykład (1/2) #include <stdio.h> #include <stdli.h> #include <time.h> #define N 10 void generuj(int ta[]) { int i; srand(time(null)); for (i=0;i<n;i++) ta[i]=rand()%100; } void drukuj(int ta[]) { int i; for (i=0;i<n;i++) printf("%2d ",ta[i]); printf("\n"); }

51 Rok akademicki 2012/2013, Wykład nr 7 51/66 Funkcja qsort() w języku C - przykład (2/2) int funkcja(const void *element1, const void *element2) { if (*(int*)element1 < *(int*)element2) return -1; if (*(int*)element1 == *(int*)element2) return 0; if (*(int*)element1 > *(int*)element2) return 1; } int main() { int ta[n]; generuj(ta); drukuj(ta); printf("\nqsort:\n"); qsort((void*)ta,(size_t)n,sizeof(int),funkcja); drukuj(ta); } system("pause"); return (0);

52 Rok akademicki 2012/2013, Wykład nr 7 52/66 Funkcja qsort() w języku C - przykład (2/2) int funkcja(const void *element1, const void *element2) { if (*(int*)element1 < qsort: *(int*)element2) return -1; if (*(int*)element1 == 6 *(int*)element2) return 27 0; 31 if (*(int*)element1 > *(int*)element2) return 1; } int main() { int ta[n]; generuj(ta); drukuj(ta); printf("\nqsort:\n"); qsort((void*)ta,(size_t)n,sizeof(int),funkcja); drukuj(ta); } system("pause"); return (0);

53 Rok akademicki 2012/2013, Wykład nr 7 53/66 Mnożenie macierzy przez macierz Operacja: C = A B A[N][M] - macierz N M - elementowa B[M][K] - macierz M K - elementowa C[N][K] - macierz N K - elementowa N c c c c c c c c c = N a a a a a a a a a M K M K c c c = a = a = a a + a + a a 13 + a + a c c c = a = a = a a + a + a a 13 + a + a c c c = a = a = a a + a + a a 13 + a + a

54 Rok akademicki 2012/2013, Wykład nr 7 54/66 Mnożenie macierzy przez macierz Operacja: C = A B (A[N][M],B[M][K],C[N][K]) N (i) c c c 11 c c 12 c c 13 = N (i) a a a c 32 c a 32 a a a 12 a a M (j) K (k) M (j) K (k) Program w języku C: for (i=0; i<n; i++) for (k=0; k<k; k++) { C[i][k] = 0.0; for (j=0; j<m; j++) C[i][k] += A[i][j] * B[j][k]; } c ik M = j= i = 1,2, K, N aij jk, 1 k = 1,2, K, K Koszt algorytmu: O( n 3 )

55 Rok akademicki 2012/2013, Wykład nr 7 55/66 Mnożenie macierzy przez macierz na szykość wykonywania oliczeń wpływa nie tylko licza operacji zmiennoprzecinkowych, ale także sposó poierania danych z pamięci komputera oecne systemy komputerowe mają hierarchiczną udowę pamięci: rejestry procesora pamięć podręczna (cache) pamięć operacyjna pamięć zewnętrzna oliczenia są efektywnie wykonywane, gdy odywają się na zmiennych znajdujących się w jak najszyszej pamięci

56 Rok akademicki 2012/2013, Wykład nr 7 56/66 Mnożenie macierzy przez macierz rozpatrzmy dwa algorytmy mnożenia macierzy: Algorytm nr 1 for (i=0; i<n; i++) for (k=0; k<n; k++) for (j=0; j<n; j++) C[i][k] += A[i][j]*B[j][k]; Algorytm nr 2 for (i=0; i<n; i++) for (j=0; j<n; j++) for (k=0; k<n; k++) C[i][k] += A[i][j]*B[j][k]; macierze: procesor: Intel Core i5-2410m 2,30 GHz kompilator: Microsoft Visual C Standard Edition Algorytm nr 1: ez optymalizacji: 268,021 [s] z optymalizacją: 92,053 [s] Algorytm nr 2: ez optymalizacji: 49,409 [s] z optymalizacją: 6,270 [s]

57 Rok akademicki 2012/2013, Wykład nr 7 57/66 Mnożenie macierzy przez macierz Metoda przechowywania macierzy w pamięci liniowej M [0][0] [0][1] [0][2] [0][3] N [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] macierz macierz w pamięci liniowej (wektor) Pamięć podręczna (cache memory)

58 Rok akademicki 2012/2013, Wykład nr 7 58/66 Mnożenie macierzy przez macierz Algorytm nr 1 for (i=0; i<n; i++) for (k=0; k<k; k++) for (j=0; j<m; j++) C[i][k] += A[i][j] * B[j][k]; C A B Algorytm nr 2 for (i=0; i<n; i++) for (j=0; j<m; j++) for (k=0; k<k; k++) C[i][k] += A[i][j] * B[j][k]; C A B [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3]

59 Rok akademicki 2012/2013, Wykład nr 7 59/66 Bilioteka numeryczna BLAS BLAS - Basic Linear Algera Suprograms Ziór procedur służących do wykonywania operacji na podstawowych oiektach algery liniowej: skalarach wektorach macierzach Strona główna: Rok pulikacji: 1979 Oryginalnie napisana w języku Fortran 77 Osługuje liczy: rzeczywiste pojedynczej i podwójnej precyzji zespolone pojedynczej i podwójnej precyzji

60 Rok akademicki 2012/2013, Wykład nr 7 60/66 Bilioteka numeryczna BLAS Wyróżnia się 3 poziomy astrakcji algorytmów BLAS BLAS Level 1 operacje typu wektor-wektor (dodawanie wektorów, normy wektora, iloczyn skalarny wektorów) y α x + y BLAS Level 2 operacje typu macierz-wektor (mnożenie macierzy przez wektor) BLAS Level 3 y αax + y operacje typu macierz-macierz (mnożenie macierzy przez macierz) C αa B + C

61 Rok akademicki 2012/2013, Wykład nr 7 61/66 BLAS - Nazwy procedur DGEMV - mnożenie macierzy przez wektor, macierz i wektor zawierają liczy rzeczywiste podwójnej precyzji y α A x + β y lu y α A x + β y SGEMM - mnożenie macierzy przez macierz, macierze zawierają liczy rzeczywiste pojedynczej precyzji T y α op( A) op( B) + β C op( X) = X, op( X) = X T, op( X) = conjg( X T ) SSWAP - zamiana wektorów zawierających liczy rzeczywiste pojedynczej precyzji x y

62 Rok akademicki 2012/2013, Wykład nr 7 62/66 BLAS - Implementacje Strona główna: Strona główna zawiera niezoptymalizowaną iliotekę BLAS MKL (Intel) Intel Math Kernel Lirary (Intel MKL) v11 ACML (AMD) AMD Core Math Lirary ATLAS (open source) Automatically Tuned Linear Algera Software

63 Rok akademicki 2012/2013, Wykład nr 7 63/66 GPGPU i CUDA GPGPU - General Purpose computing on Graphics Processing Units CUDA (Compute Unified Device Architecture) hardware - równoległa architektura oliczeniowa GPU software - kompilator nvcc, ilioteki i inne narrzędzia NVIDIA Corporation (USA) Pierwsza wersja: luty 2007 Strona WWW: Licencja: freeware

64 Rok akademicki 2012/2013, Wykład nr 7 64/66 CUDA - Jak używać? Sprawdzić czy karta graficzna w komputerze osługuje CUDA wszystkie nowe karty graficzne NVIDIA są kompatyilne z CUDA Ściągnąć oprogramowanie CUDA The CUDA Driver - zintegrowany ze sterownikiem karty graficznej The CUDA Toolkit - zawiera narzędzia potrzene do kompilowania aplikacji z wykorzystaniem Microsoft Visual Studio (narzędzia, ilioteki, pliki nagłówkowe, inne zasoy) The GPU Computing SDK - przykładowe programy Zainstalować CUDA driver (jeśli jest to konieczne) Zainstalować oprogramowanie CUDA - Toolkit, SDK Użyć szalonu (template project) do stworzenia własnego programu wykorzystującego CUDA

65 Rok akademicki 2012/2013, Wykład nr 7 65/66 CUBLAS Bilioteka CUBLAS - implementacja BLAS (Basic Linear Algera Suprograms) dla kart graficznych NVIDIA i środowiska CUDA Zastosowanie CUBLAS w programie wymaga: inicjalizacji ilioteki CUBLAS: culasinit() przydzielenia pamięci GPU na macierze i wektory: culasalloc() przesłania macierzy i wektorów do pamięci GPU: culassetmatrix() wywołania odpowiednich funkcji CUBLAS: culassgemm() przesłania wyników oliczeń z pamięci GPU do pamięci RAM komputera: culasgetmatrix() zwolnienia pamięci GPU: culasfree() zakończenia pracy ilioteki CUBLAS: culasshutdown()

66 Rok akademicki 2012/2013, Wykład nr 7 66/66 Koniec wykładu nr 7 Dziękuję za uwagę!

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inŝ. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Algorytmy komputerowe. dr inż. Jarosław Forenc

Algorytmy komputerowe. dr inż. Jarosław Forenc Rok akademicki 2010/2011, Wykład nr 9/10 2/38 Plan wykładu nr 9/10 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2014/2015 Wykład nr 6 (25.05.2015) Rok akademicki 2014/2015, Wykład

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

Technologie informacyjne Wykład VII-IX Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX Gotowanie jajek na miękko weż czysty garnek włóż

Bardziej szczegółowo

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe: Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: ES1A200 009, ECTS: 4 pkt. Kierunek: Elektrotechnika,

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Model protokołu TCP/IP. Algorytmy komputerowe. Rekurencja, złożoność obliczeniowa. Sortowanie. dr inż. Jarosław Forenc. Model ISO/OSI a model TCP/IP

Model protokołu TCP/IP. Algorytmy komputerowe. Rekurencja, złożoność obliczeniowa. Sortowanie. dr inż. Jarosław Forenc. Model ISO/OSI a model TCP/IP Rok akademicki 2012/2013, Wykład nr 9 2/79 Plan wykładu nr 9 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Przykłady algorytmów

Podstawy programowania. Podstawy C# Przykłady algorytmów Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (I) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (I) dr hab. inż. Mikołaj Morzy Informatyka wprowadzenie do algorytmów (I) dr ha. inż. Mikołaj Morzy jak zagotować wodę na heratę? Muḥammad in Mūsā al-khwārizmī urodzony w Chorezmie, żył w latach ok. 780 - ok. 850 pracował w Domu Nauk

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 7 (24.05.2009) Rok akademicki 2008/2009, Wykład

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2) Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Temat: Technologia informacyjna a informatyka 1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Technologia informacyjna (ang.) Information Technology, IT jedna

Bardziej szczegółowo

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

Bardziej szczegółowo

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe: Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: ES1A200 009, ECTS: 4 pkt. Kierunek: Elektrotechnika,

Bardziej szczegółowo

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych

Bardziej szczegółowo

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1 Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: EZ1A200 010, ECTS: 6 pkt. Kierunek: Elektrotechnika,

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy

Bardziej szczegółowo

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni z przedmiotu Podstawy Informatyki Kod przedmiotu: TS1C 100 003 Ćwiczenie pt. METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Bardziej szczegółowo

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania

Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania Rok akademicki 2010/2011, Wykład nr 4 2/50 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2010/2011

Bardziej szczegółowo

Algorytm. Algorytmy Marek Pudełko

Algorytm. Algorytmy Marek Pudełko Algorytm Algorytmy Marek Pudełko Definicja Algorytm to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Algorytm ma przeprowadzić system z pewnego

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 7 Algorytmy Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie) w

Bardziej szczegółowo

Jeszcze o algorytmach

Jeszcze o algorytmach Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Zadanie 1. Potęgi (14 pkt)

Zadanie 1. Potęgi (14 pkt) 2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009 Informatyka 1 zajęcia nr 1 Elektrotechnika, semestr II rok akademicki 2008/2009 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Organizacja laboratorium przedmiotu 2. Algorytmy i sposoby ich opisu

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym 1. Instrukcja warunkowa a. słuŝy do wprowadzania danych oraz wprowadzania wyników b. to instrukcja decyzyjna c. to sposób przedstawienia algorytmu 2. Instrukcja, która opisuje wykonanie róŝnych czynności

Bardziej szczegółowo

Metodyki i techniki programowania

Metodyki i techniki programowania Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

Metodyki i techniki programowania

Metodyki i techniki programowania Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym

Bardziej szczegółowo

5. Rekurencja. Przykłady

5. Rekurencja. Przykłady 5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.

Bardziej szczegółowo

Wstęp do informatyki

Wstęp do informatyki Wstęp do informatyki Algorytmy i struktury danych Piotr Fulmański Wydział Matematyki i Informatyki, Uniwersytet Łódzki, Polska 30 października 2009 Spis treści 1 Algorytm 2 Przetwarzane informacje 3 Struktury

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy 1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

Laboratorium nr 7 Sortowanie

Laboratorium nr 7 Sortowanie Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę

Bardziej szczegółowo

Technologie Informatyczne Wykład VII

Technologie Informatyczne Wykład VII Technologie Informatyczne Wykład VII A. Matuszak (1) 22 listopada 2007 A. Matuszak (1) Technologie Informatyczne Wykład VII A. Matuszak (2) Technologie Informatyczne Wykład VII (Rekursja) albo rekursja

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Definicja algorytmu brzmi:

Definicja algorytmu brzmi: 1.1. Definicja algorytmu Często w życiu stajesz przed koniecznością rozwiązania jakiegoś zadania. Na lekcji matematyki musisz na przykład rozwiązać równanie i w tym celu wykonujesz szereg czynności: od

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Algorytm i złożoność obliczeniowa algorytmu

Algorytm i złożoność obliczeniowa algorytmu Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2007/2008 Wykład nr 7 (09.06.2008) Rok akademicki 2007/2008, Wykład

Bardziej szczegółowo

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

Bardziej szczegółowo

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Podstawy programowania funkcjonalnego

Podstawy programowania funkcjonalnego Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: EZ1C200 010 (studia niestacjonarne)

Bardziej szczegółowo

Rekurencja. Przygotowała: Agnieszka Reiter

Rekurencja. Przygotowała: Agnieszka Reiter Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być

Bardziej szczegółowo

Sortowanie. LABORKA Piotr Ciskowski

Sortowanie. LABORKA Piotr Ciskowski Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo