dr inż. Jarosław Forenc
|
|
- Wacław Tomaszewski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2014/2015 Wykład nr 6 ( )
2 Rok akademicki 2014/2015, Wykład nr 6 2/69 Plan wykładu nr 6 Struktura i funkcjonowanie komputera Przerwania, struktura połączeń, magistrala, DMA pamięć komputerowa, hierarchia pamięci, pamięć podręczna Algorytmy komputerowe definicje algorytmu podstawowe cechy algorytmu sposoby opisu algorytmów Rekurencja Złożoność obliczeniowa Sortowanie proste wstawianie, proste wybieranie, bąbelkowe quick-sort
3 Rok akademicki 2014/2015, Wykład nr 6 3/69 Działanie komputera - przerwania Wykonywanie kolejnych rozkazów przez procesor może być przerwane poprzez wystąpienie tzw. przerwania (interrupt) Można wyróżnić kilka klas przerwań: programowe - generowane m.in. po wystąpieniu błędu podczas wykonania rozkazu (np. dzielenie przez zero) zegarowe - generowane przez wewnętrzny zegar procesora we-wy - generowane przez sterownik we-wy w celu zasygnalizowania normalnego zakończenia operacji lub błędu uszkodzenie sprzętu - generowane przez uszkodzenie, np. defekt zasilania, błąd parzystości pamięci Przerwania zostały zaimplementowane w celu poprawienia efektywności przetwarzania - procesor może wykonywać inne rozkazy, gdy jest realizowana operacja we-wy.
4 Rok akademicki 2014/2015, Wykład nr 6 4/69 Działanie komputera - przerwania Aby dostosować się do przerwań do cyklu rozkazu jest dodawany cykl przerwania: Po sygnale przerwania procesor: zawiesza wykonanie bieżącego programu i zachowuje jego kontekst ustawia licznik programu na początkowy adres programu obsługi przerwania wykonuje program obsługi przerwania wznawia wykonywanie programu użytkowego.
5 Rok akademicki 2014/2015, Wykład nr 6 5/69 Działanie komputera - przerwania Jak działa przerwanie?
6 Rok akademicki 2014/2015, Wykład nr 6 6/69 Działanie komputera - przerwania wielokrotne Podczas obsługi jednego przerwania może pojawić się sygnał kolejnego przerwania Problem przerwań wielokrotnych rozwiązywany jest na dwa sposoby: uniemożliwienie innych przerwań, jeśli jakiekolwiek inne przerwanie jest przetwarzane określenie priorytetów przerwań - przerwanie o wyższym priorytecie powoduje przerwanie programu obsługi przerwania o niższym priorytecie.
7 Rok akademicki 2014/2015, Wykład nr 6 7/69 Działanie komputera - struktura połączeń (DMA) Struktura połączeń musi umożliwiać przesyłanie następujących danych: DMA - bezpośredni dostęp do pamięci: Dane Dane najczęściej procesor bezpośrednio odczytuje dane z pamięci i zapisuje oraz komunikuje się z urządzeniami we-wy w pewnych przypadkach pożądane jest umożliwienie bezpośredniej wymiany danych między we-wy a pamięcią podczas takiego przesyłania moduł we-wy odczytuje lub zapisuje rozkazy w pamięci, uwalniając procesor od odpowiedzialności za tę wymianę powyższe operacje nazywane są bezpośrednim dostępem do pamięci (ang. DMA - Direct Memory Access)
8 Rok akademicki 2014/2015, Wykład nr 6 8/69 Działanie komputera - magistrala Najczęściej stosowana struktura połączeń to magistrala Magistrala składa się z wielu linii komunikacyjnych, którym przypisane jest określone znaczenie i określona funkcja Linie dzielą się na trzy grupy: linie danych, adresów i sterowania
9 Rok akademicki 2014/2015, Wykład nr 6 9/69 Działanie komputera - magistrala Linie danych: przenoszą dane między modułami systemu wszystkie linie danych nazywane są szyną danych liczba linii określa szerokość szyny danych (8, 16, 32, 64 bity) Linie adresowe: służą do określania źródła i miejsca przeznaczenia danych przesyłanych magistralą liczba linii adresowych (szerokość szyny adresowej) określa maksymalną możliwą pojemność pamięci systemu Linie sterowania: służą do sterowania dostępem do linii danych i linii adresowych
10 Rok akademicki 2014/2015, Wykład nr 6 10/69 Działanie komputera - struktury wielomagistralowe W przypadku większej liczby urządzeń podłączonych do magistrali znacząco spada jej wydajność Rozwiązaniem tego problemu są struktury wielomagistralowe o określonej hierarchii
11 Rok akademicki 2014/2015, Wykład nr 6 11/69 Systemy pamięci komputerowych Ze względu na położenie pamięci w stosunku do komputera wyróżniamy pamięć: procesora (rejestry) wewnętrzną (pamięć główna) zewnętrzną (pamięć pomocnicza - pamięci dyskowe i taśmowe) Parametry charakteryzujące pamięć: pojemność - maksymalna liczba informacji jaką można przechowywać w danej pamięci czas dostępu - czas niezbędny do zrealizowania operacji odczytu lub zapisu czas cyklu pamięci - czas dostępu plus dodatkowy czas, który musi upłynąć zanim będzie mógł nastąpić kolejny dostęp szybkość przesyłania (transferu) - maksymalna liczba danych jakie można odczytać z pamięci lub zapisać do pamięci w jednostce czasu
12 Rok akademicki 2014/2015, Wykład nr 6 12/69 Hierarchia pamięci Istnieją wzajemne zależności pomiędzy parametrami pamięci: kosztem, pojemnością i czasem dostępu: mniejszy czas dostępu - większy koszt na bit większa pojemność - mniejszy koszt na bit większa pojemność - dłuższy czas dostępu W systemach komputerowych nie stosuje się jednego typu pamięci, ale hierarchię pamięci Rozpatrując hierarchię od góry do dołu obserwujemy zjawiska: malejący koszt na bit rosnącą pojemność rosnący czas dostępu malejącą częstotliwość dostępu do pamięci przez procesor
13 Rok akademicki 2014/2015, Wykład nr 6 13/69 Półprzewodnikowa pamięć główna RAM (Random Access Memory) - pamięć o dostępie swobodnym odczyt i zapis następuje za pomocą sygnałów elektrycznych pamięć ulotna - po odłączeniu zasilania dane są tracone DRAM: przechowuje dane podobnie jak kondensator ładunek elektryczny wymaga operacji odświeżania jest mniejsza, gęściej upakowana i tańsza niż pamięć statyczna stosowana jest do budowy głównej pamięci operacyjnej komputera SRAM: przechowuje dane za pomocą przerzutnikowych konfiguracji bramek logicznych nie wymaga operacji odświeżania jest szybsza i droższa od pamięci dynamicznej stosowana jest do budowy pamięci podręcznej
14 Rok akademicki 2014/2015, Wykład nr 6 14/69 Półprzewodnikowa pamięć główna ROM (ang. Read-Only Memory) - pamięć stała pamięć o dostępie swobodnym przeznaczona tylko do odczytu dane są zapisywane podczas procesu wytwarzania pamięć nieulotna PROM (ang. Programmable ROM) - programowalna pamięć ROM pamięć nieulotna, może być zapisywana tylko jeden raz zapis jest realizowany elektrycznie po wyprodukowaniu
15 Rok akademicki 2014/2015, Wykład nr 6 15/69 Półprzewodnikowa pamięć główna Inne typy pamięci: EPROM - pamięć wielokrotnie programowalna, kasowanie następuje przez naświetlanie promieniami UV EEPROM - pamięć kasowana i programowana na drodze czysto elektrycznej Flash - rozwinięcie koncepcji pamięci EEPROM, możliwe kasowanie i programowanie bez wymontowywania pamięci z urządzenia, występuje w dwóch odmianach: NOR (Flash BIOS) NAND (pen drive, karty pamięci)
16 Rok akademicki 2014/2015, Wykład nr 6 16/69 Pamięć podręczna Zastosowanie pamięci podręcznej ma na celu przyspieszenie dostępu procesora do pamięci głównej CPU CPU Cache Cache RAM RAM Zarządca magistrali Zarządca magistrali Look-through Look-aside
17 Rok akademicki 2014/2015, Wykład nr 6 17/69 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 obliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu
18 Rok akademicki 2014/2015, Wykład nr 6 18/69 Algorytmy Słowo algorytm pochodzi od nazwiska Muhammada ibn-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 wybrany język programowania nazywane jest też kodowaniem algorytmu Ten sam algorytm może być zaimplementowany (zakodowany) w różny sposób przy użyciu różnych języków programowania.
19 Rok akademicki 2014/2015, Wykład nr 6 19/69 Podstawowe cechy algorytmu Posiadanie danych wejściowych (w ilości większej lub równej zeru) pochodzących z dobrze zdefiniowanego zbioru Zwracanie wyniku Precyzyjne zdefiniowanie (każdy krok algorytmu musi być jednoznacznie określony) Poprawność (dla każdego z założonego dopuszczalnego zestawu danych wejściowych) Zakończenie działania po skończonej liczbie kroków (powinna istnieć poprawnie działająca reguła stopu algorytmu) Efektywność (jak najkrótszy czas wykonania i jak najmniejsze zapotrzebowanie na pamięć).
20 Rok akademicki 2014/2015, Wykład nr 6 20/69 Sposoby opisu algorytmów 1. Opis słowny w języku naturalnym lub w postaci listy kroków (opis w punktach) 2. Schemat blokowy 3. Pseudokod (nieformalna odmiana języka programowania) 4. Wybrany język programowania
21 Rok akademicki 2014/2015, Wykład nr 6 21/69 Opis słowny algorytmu Podanie kolejnych czynności, które należy wykonać, aby otrzymać oczekiwany efekt końcowy Przypomina przepis kulinarny z książki kucharskiej lub instrukcję obsługi urządzenia, np. Algorytm: Tortilla ( Podróże kulinarne R. Makłowicza) Dane wejściowe: 0,5 kg ziemniaków, 100 g kiełbasy Chorizo, 8 jajek Dane wyjściowe: gotowa Tortilla Opis algorytmu: Ziemniaki obrać i pokroić w plasterki. Kiełbasę pokroić w plasterki. Ziemniaki wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Kiełbasę wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Ubić jajka i dodać do połączonych ziemniaków i kiełbasy. Dodać sól i pieprz. Usmażyć z obu stron wielki omlet nadziewany chipsami ziemniaczanymi z kiełbaską.
22 Rok akademicki 2014/2015, Wykład nr 6 22/69 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 lub bezwarunkowe), 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 blokujący wózek Rozkładaj wózek w kierunku kółek Naciskając nogą dolny element blokujący aż do zatrzaśnięcia, rozłóż wózek do pozycji przewozowej
23 Rok akademicki 2014/2015, Wykład nr 6 23/69 Schemat blokowy Zawiera plan algorytmu przedstawiony w postaci graficznej struktury elementów zwanych blokami Każdy blok zawiera informację o operacji, która ma być w nim wykonana Pomiędzy blokami umieszczone są linie przepływu (strzałki) określające kolejność wykonywania bloków algorytmu Podstawowe symbole stosowane na schematach blokowych: linia przepływu (połączenie) występuje w postaci linii zakończonej strzałką określa kierunek przemieszczania się po schemacie
24 Rok akademicki 2014/2015, Wykład nr 6 24/69 Schemat blokowy Podstawowe symbole stosowane na schematach blokowych: blok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz STOP blok końcowy, koniec algorytmu wskazuje miejsce zakończenia algorytmu musi występować przynajmniej jeden raz blok wykonawczy, blok funkcyjny zawiera polecenie (elementarną instrukcję) instrukcją może być podstawienie, operacja arytmetyczna, wprowadzenie danych lub wyprowadzenie wyników
25 Rok akademicki 2014/2015, Wykład nr 6 25/69 Schemat blokowy Podstawowe symbole stosowane na schematach blokowych: blok warunkowy (decyzyjny, porównujący) sprawdza umieszczony w nim warunek i dokonuje wyboru tylko jednej drogi wyjściowej połączenia wychodzące z bloku: - T lub TAK - gdy warunek jest prawdziwy - N lub NIE - gdy warunek nie jest prawdziwy Czasami wprowadzanie i wyprowadzanie danych oznacza się dodatkowym blokiem wejścia-wyjścia blok wejścia-wyjścia poprzez ten blok wprowadzane są dane i wyprowadzane wyniki
26 Rok akademicki 2014/2015, Wykład nr 6 26/69 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 być łatwo przetłumaczony na wybrany język programowania Opis w języku programowania: Zapis programu w konkretnym języku programowania Stosowane języki: Pascal, C, Matlab (kiedyś - Fortran, Basic)
27 Rok akademicki 2014/2015, Wykład nr 6 27/69 Algorytm Euklidesa - lista kroków Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Dane wejściowe: niezerowe liczby naturalne a i b Dane wyjściowe: NWD(a,b) Kolejne kroki: 1. Czytaj liczby a i b 2. Dopóki a i b są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4 3. Jeśli a jest większe od b, to weź za a resztę z dzielenia a przez b, w przeciwnym razie weź za b resztę z dzielenia b przez a 4. Przyjmij jako największy wspólny dzielnik tę z liczb a i b, która pozostała większa od zera 5. Drukuj NWD(a,b)
28 Rok akademicki 2014/2015, Wykład nr 6 28/69 Algorytm Euklidesa - przykład NWD(1675,3752) =? a b Dzielenie większej liczby przez mniejszą Zamiana b/a = 3752/1675 = 2 reszta 402 b = a/b = 1675/402 = 4 reszta 67 a = b/a = 402/67 = 6 reszta 0 b = KONIEC NWD(1675,3752) = 67
29 Rok akademicki 2014/2015, Wykład nr 6 29/69 Algorytm Euklidesa - schemat blokowy
30 Rok akademicki 2014/2015, Wykład nr 6 30/69 Algorytm Euklidesa - pseudokod NWD(a,b) while a>0 i b>0 do if a>b then a a mod b else b b mod a if a>0 then return a else return b
31 Rok akademicki 2014/2015, Wykład nr 6 31/69 Algorytm Euklidesa - język programowania (C) int NWD(int a, int b) { while (a>0 && b>0) if (a>b) a = a % b; else b = b % a; if (a>0) return a; else return b; }
32 Rok akademicki 2014/2015, Wykład nr 6 32/69 Metoda CG Metoda CG - schemat blokowy schemat blokowy ) ( ) ( ) ( x A b r p = = ) ( ) ( k T k r r = α START ) ( ) ( ) ( ) ( k k k k p x x + α = +1 < ε + ) 1 r (k ) ( ) ( 1) ( 1) ( 1) ( k T k k T k k r r r r = β ) ( ) ( ) ( ) ( k k k k p r p + β = KONIEC TAK NIE ) ( ) ( ) ( ) ( ) ( k T k k k k p A p r r = α ) ( ) ( ) ( ) ( k k k k p A r r α = +1
33 Rok akademicki 2014/2015, Wykład nr 6 33/69 Metoda CG - pseudokod + program (Matlab) function [xk]=cgm(a,b,xk,eps) pk = rk = b - A*xk; dotrk = rk'*rk; k = 0; while (1) k = k + 1; Ap = A*pk; alfa = dotrk/(pk'*ap); xk = xk + alfa*pk; rk = rk - alfa*ap; dotrk1 = rk'*rk; if norm(rk,inf)<eps break end pk = rk + (dotrk1/dotrk)*pk; dotrk = dotrk1; end
34 Rok akademicki 2014/2015, Wykład nr 6 34/69 Wartość bezwzględna liczby - schemat blokowy 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
35 Rok akademicki 2014/2015, Wykład nr 6 35/69 Parzystość liczby - schemat blokowy 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
36 Rok akademicki 2014/2015, Wykład nr 6 36/69 Równanie kwadratowe - schemat blokowy ax 2 = + bx + c b 2 4ac = 0 START Wczytaj(a,b,c) delta=b 2-4ac > 0 : x 1 b =, 2a = 0 : x 1 = x 2 = 2 b a x 2 = b + 2a x tak b x1 = 2a 2 b + = 2a Drukuj(x 1,x 2 ) STOP delta > 0 nie tak x = x 1 2 b = 2a Drukuj(x 1,x 2 ) delta = 0 nie Drukuj(Brak rozwiązania) STOP STOP
37 Rok akademicki 2014/2015, Wykład nr 6 37/69 Silnia - schemat blokowy 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
38 Rok akademicki 2014/2015, Wykład nr 6 38/69 Rekurencja Rekurencja lub rekursja - jest to odwoływanie się funkcji lub definicji do samej siebie Rozwiązanie danego problemu wyraża się za pomocą rozwiązań tego samego problemu, ale dla danych o mniejszych rozmiarach W matematyce mechanizm rekurencji stosowany jest do definiowania lub 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); }
39 Rok akademicki 2014/2015, Wykład nr 6 39/69 Rekurencja - ciąg Fibonacciego 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); }
40 Rok akademicki 2014/2015, Wykład nr 6 40/69 Rekurencja - algorytm Euklidesa NWD( a, b) = a NWD( b, a mod b) dla dla b b = 0 1 int NWD(int a, int b) { if (b==0) return a; else return NWD(b,a % b); }
41 Rok akademicki 2014/2015, Wykład nr 6 41/69 Złożoność obliczeniowa W celu rozwiązania danego problemu obliczeniowego szukamy algorytmu najbardziej efektywnego czyli: najszybszego o możliwie małym zapotrzebowaniu na pamięć Do oceny efektywności programu służy złożoność obliczeniowa (koszt algorytmu) Złożoność obliczeniowa algorytmu: jest ilością zasobów potrzebnych do jego działania (czas, pamięć) jest funkcją rozmiaru danych, na których pracuje algorytm
42 Rok akademicki 2014/2015, Wykład nr 6 42/69 Złożoność obliczeniowa Złożoność czasowa Jej miarą jest liczba podstawowych operacji (dominujących) Podstawowe operacje - porównanie, podstawienie, operacja arytmetyczna Złożoność pamięciowa Jest miarą wykorzystania pamięci (liczba komórek pamięci) Złożoność pesymistyczna Odpowiada danym najbardziej 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
43 Rok akademicki 2014/2015, Wykład nr 6 43/69 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 liczbę elementów, na której działa algorytm Do wyznaczenia złożoności bierze się pod uwagę liczbę wykonywanych w algorytmie podstawowych operacji Przykład: O(n) - złożoność algorytmu jest prostą funkcją liczby 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 liczby elementów (przy podwojeniu liczby elementów ich obsługa będzie trwała cztery razy dłużej)
44 Rok akademicki 2014/2015, Wykład nr 6 44/69 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
45 Rok akademicki 2014/2015, Wykład nr 6 45/69 Sortowanie Sortowanie polega na uporządkowaniu zbioru danych względem pewnych cech charakterystycznych każdego elementu tego zbioru (wartości każdego elementu) W przypadku liczb, sortowanie polega na znalezieniu kolejności liczb zgodnej z relacją lub Przykład: Tablica nieposortowana: Tablica posortowana zgodnie z relacją (od najmniejszej do największej liczby): Tablica posortowana zgodnie z relacją (od największej do najmniejszej liczby):
46 Rok akademicki 2014/2015, Wykład nr 6 46/69 Sortowanie W przypadku słów sortowanie polega na ustawieniu ich w porządku alfabetycznym (leksykograficznym) Przykład: Tablica nieposortowana: Tablice posortowane:
47 Rok akademicki 2014/2015, Wykład nr 6 47/69 Sortowanie W praktyce sortowanie sprowadza się do porządkowanie danych na podstawie porównania - porównywany element to klucz Przykład: Tablica nieposortowana (imię, nazwisko, wiek): Tablica posortowana (klucz - nazwisko): Tablica posortowana (klucz - wiek):
48 Rok akademicki 2014/2015, Wykład nr 6 48/69 Sortowanie Po co stosować sortowanie? Posortowane elementy można szybciej zlokalizować Posortowane elementy można przedstawić w czytelniejszy sposób Klasyfikacje algorytmów sortowania Złożoność obliczeniowa algorytmu - zależność liczby wykonywanych operacji od liczebności sortowanego zbioru n Złożoność pamięciowa - wielkość zasobów zajmowanych przez algorytm (sortowanie w miejscu - wielkość zbioru danych podczas sortowania nie zmienia się lub jest tylko nieco większa) Sortowanie wewnętrzne (odbywa się w pamięci komputera) i zewnętrzne (nie jest możliwe jednoczesne umieszczenie wszystkich elementów zbioru sortowanego w pamięci komputera)
49 Rok akademicki 2014/2015, Wykład nr 6 49/69 Klasyfikacje algorytmów sortowania Algorytm jest stabilny, jeśli podczas sortowania zachowuje kolejność występowania elementów o tym samym kluczu Przykład: Tablica nieposortowana (imię, nazwisko, wiek): Tablica posortowana algorytmem stabilnym (klucz - wiek): Tablica posortowana algorytmem niestabilnym (klucz - wiek):
50 Rok akademicki 2014/2015, Wykład nr 6 50/69 Proste wstawianie (insertion sort) Przykład: Funkcja w języku C: void InsertionSort(int tab[]) { int i,j,tmp; } for (i=1; i<n; i++) { j=i; tmp=tab[i]; while (tab[j-1]>tmp && j>0) { tab[j]=tab[j-1]; j--; } tab[j]=tmp; }
51 Rok akademicki 2014/2015, Wykład nr 6 51/69 Proste wstawianie (insertion sort) Złożoność algorytmu: O(n 2 ) + wydajny dla danych wstępnie posortowanych + wydajny dla zbiorów o niewielkiej liczebności + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + stabilny + prosty w implementacji mała efektywność dla normalnej i dużej ilości danych.
52 Rok akademicki 2014/2015, Wykład nr 6 52/69 Proste wybieranie (selection sort) Przykład: Funkcja w języku C: void SelectionSort(int tab[]) { int i,j,k,tmp; } for (i=0;i<n-1;i++) { k=i; for (j=i+1; j<n; j++) if (tab[k]>=tab[j]) k = j; tmp = tab[i]; tab[i] = tab[k]; tab[k] = tmp; }
53 Rok akademicki 2014/2015, Wykład nr 6 53/69 Proste wybieranie (selection sort) Złożoność algorytmu: O(n 2 ) + szybki w sortowaniu niewielkich tablic + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + prosty w implementacji liczba porównań elementów jest niezależna od początkowego rozmieszczenia elementów w tablicy w algorytmie może zdarzyć się, że wykonywana jest zamiana tego samego elementu ze sobą.
54 Rok akademicki 2014/2015, Wykład nr 6 54/69 Bąbelkowe (bubble sort) Sortowanie bąbelkowe (ang. bubble 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 bąbelka )
55 Rok akademicki 2014/2015, Wykład nr 6 55/69 Bąbelkowe (bubble sort)
56 Rok akademicki 2014/2015, Wykład nr 6 56/69 Bąbelkowe (bubble sort) Funkcja w języku C: void BubbleSort(int tab[]) { int i,j,tmp,koniec; } do { koniec=0; for (i=0;i<n-1;i++) if (tab[i]>tab[i+1]) { tmp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=tmp; koniec=1; } } while (koniec);
57 Rok akademicki 2014/2015, Wykład nr 6 57/69 Bąbelkowe (bubble sort) Złożoność algorytmu: O(n 2 ) + prosta realizacja + wysoka efektywność użycia pamięci (sortowanie w miejscu) + stabilny mała efektywność.
58 Rok akademicki 2014/2015, Wykład nr 6 58/69 Sortowanie szybkie (Quick-Sort) - faza dzielenia Tablica jest dzielona na dwie części wokół pewnego elementu x (nazywanego elementem centralnym) Jako element centralny x najczęściej wybierany jest element środkowy (choć może to być także element losowy) Przeglądamy tablicę od lewej strony, aż znajdziemy element a i x, a następnie przeglądamy tablicę od prawej strony, aż znajdziemy element a j x Zamieniamy elementy a i i a j miejscami i kontynuujemy proces przeglądania i zamiany, aż nastąpi spotkanie w środku tablicy W ten sposób otrzymujemy tablicę podzieloną na lewą część z wartościami mniejszymi lub równymi x i na prawą część z wartościami większymi lub równymi x
59 Rok akademicki 2014/2015, Wykład nr 6 59/69 Sortowanie szybkie (Quick-Sort) - faza sortowania Zawiera dwa rekurencyjne wywołania tej samej funkcji sortowania: dla lewej i dla prawej części posortowanej tablicy Rekurencja zatrzymuje się, gdy wielkość tablicy wynosi 1 Przykład: Sortujemy 6-elementową tablicę tab: Wywołanie funkcji QS() ma postać: QS(tab,0,5);
60 Rok akademicki 2014/2015, Wykład nr 6 60/69 Sortowanie szybkie (Quick-Sort) - QS(tab,0,5) Element środkowy: (0+5)/2 = 2, x = tab[2] = 5 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Poszukiwania kończymy, gdy indeksy i, j mijają się Wywołujemy rekurencyjnie funkcję QS() dla elementów z zakresów [l,j] i [i,r]: QS(tab,0,3); QS(tab,4,5);
61 Rok akademicki 2014/2015, Wykład nr 6 61/69 Sortowanie szybkie (Quick-Sort) - QS(tab,0,3) Element środkowy: (0+3)/2 = 1, x = tab[1] = 2 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami i j zamiana Poszukiwania kończymy, gdy indeksy i, j mijają się Wywołanie QS() tylko dla elementów z zakresu [2,3], gdyż po lewej stronie rozmiar tablicy do posortowania wynosi 1: QS(tab,2,3);
62 Rok akademicki 2014/2015, Wykład nr 6 62/69 Sortowanie szybkie (Quick-Sort) - QS(tab,2,3) Element środkowy: (2+3)/2 = 2, x = tab[2] = 3 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Poszukiwania kończymy, gdy indeksy i, j mijają się Rozmiar obu tablic do posortowania wynosi 1 więc nie ma nowych wywołań funkcji QS()
63 Rok akademicki 2014/2015, Wykład nr 6 63/69 Sortowanie szybkie (Quick-Sort) - QS(tab,4,5) Element środkowy: (4+5)/2 = 4, x = tab[4] = 6 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Poszukiwania kończymy, gdy indeksy i, j mijają się Rozmiar obu tablic do posortowania wynosi 1 więc nie ma nowych wywołań funkcji QS()
64 Rok akademicki 2014/2015, Wykład nr 6 64/69 Sortowanie szybkie (Quick-Sort) Funkcja w języku C: void QuickSort(int tab[], int l, int r) { int i,j,x,y; } i=l; j=r; x=tab[(l+r)/2]; do { while (tab[i]<x) i++; while (x<tab[j]) j--; if (i<=j) { y=tab[i]; tab[i]=tab[j]; tab[j]=y; i++; j--; } } while (i<=j); if (l<j) QuickSort(tab,l,j); if (i<r) QuickSort(tab,i,r);
65 Rok akademicki 2014/2015, Wykład nr 6 65/69 Funkcja qsort() w języku C Quick-Sort został zaimplementowany w języku C w funkcji: QSORT stdlib.h void qsort(void *baza, size_t n, size_t size, (*funkcja)(const void *element1, const void *element2)); funkcja qsort() sortuje metodą Quick-Sort tablicę wskazywaną przez argument baza 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 tablicy baza funkcja() powinna zwracać wartości: < 0, gdy *element1 < *element2 == 0, gdy *element1 == *element2 > 0, gdy *element1 > *element2
66 Rok akademicki 2014/2015, Wykład nr 6 66/69 Funkcja qsort() w języku C - przykład (1/2) #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 void generuj(int tab[]) { int i; srand(time(null)); for (i=0;i<n;i++) tab[i]=rand()%100; } void drukuj(int tab[]) { int i; for (i=0;i<n;i++) printf("%2d ",tab[i]); printf("\n"); }
67 Rok akademicki 2014/2015, Wykład nr 6 67/69 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 tab[n]; generuj(tab); drukuj(tab); printf("\nqsort:\n"); qsort((void*)tab,(size_t)n,sizeof(int),funkcja); drukuj(tab); } system("pause"); return (0);
68 Rok akademicki 2014/2015, Wykład nr 6 68/69 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*)element16== *(int*)element2) return 31 0; if (*(int*)element1 > *(int*)element2) return 1; } int main() { int tab[n]; } generuj(tab); drukuj(tab); printf("\nqsort:\n"); qsort((void*)tab,(size_t)n,sizeof(int),funkcja); drukuj(tab); system("pause"); return (0);
69 Rok akademicki 2014/2015, Wykład nr 6 69/69 Koniec wykładu nr 6 Dziękuję za uwagę!
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ółowoStruktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami
Rok akademicki 2015/2016, Wykład nr 6 2/21 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2015/2016
Bardziej szczegółowoAlgorytmy 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ółowoAlgorytm. 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ółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (03.04.2013) Rok akademicki 2012/2013, Wykład
Bardziej szczegółowodr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury
Rok akademicki 2012/2013, Wykład nr 6 2/43 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010 Wykład nr 7 (15.05.2010) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoPodstawowe zadanie komputera to wykonywanie programu Program składa się z rozkazów przechowywanych w pamięci Rozkazy są przetwarzane w dwu krokach:
Rok akademicki 2012/2013, Wykład nr 6 2/46 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoDynamiczny 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ółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 9 (08.06.2013) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoStruktura i funkcjonowanie komputera struktura połączeń, magistrala, DMA systemy pamięci komputerowych hierarchia pamięci, pamięć podręczna
Rok akademicki 2009/2010, Wykład nr 7 2/56 Plan wykładu nr 7 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2009/2010
Bardziej szczegółowoDefinicja. 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ółowoArchitektura harwardzka Architektura i organizacja systemu komputerowego Struktura i funkcjonowanie komputera procesor, rozkazy, przerwania
Rok akademicki 2010/2011, Wykład nr 7 2/46 Plan wykładu nr 7 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2010/2011
Bardziej szczegółowoINFORMATYKA 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ółowoDefinicje. 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ółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 7 (10.04.2013) Rok akademicki 2012/2013, Wykład
Bardziej szczegółowoArchitektura komputerów
Architektura komputerów Tydzień 9 Pamięć operacyjna Właściwości pamięci Położenie Pojemność Jednostka transferu Sposób dostępu Wydajność Rodzaj fizyczny Własności fizyczne Organizacja Położenie pamięci
Bardziej szczegółowofunkcje 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ółowo1 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ółowoModel 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ółowoAlgorytmy. 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ółowo43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania
43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania Typy pamięci Ulotność, dynamiczna RAM, statyczna ROM, Miejsce w konstrukcji komputera, pamięć robocza RAM,
Bardziej szczegółowoStrategia "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ółowodr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoPAMIĘCI. Część 1. Przygotował: Ryszard Kijanka
PAMIĘCI Część 1 Przygotował: Ryszard Kijanka WSTĘP Pamięci półprzewodnikowe są jednym z kluczowych elementów systemów cyfrowych. Służą do przechowywania informacji w postaci cyfrowej. Liczba informacji,
Bardziej szczegółowoMikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
Bardziej szczegółowoPodstawy Informatyki JA-L i Pamięci
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Operator elementarny Proste układy z akumulatorem Realizacja dodawania Realizacja JAL dla pojedynczego bitu 2 Parametry
Bardziej szczegółowoWykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Bardziej szczegółowo1. 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ółowoTechnologie 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ółowoALGORYTMY 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ółowoZadanie 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoWykł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ółowoAlgorytm 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ółowoSystemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1
i sieci komputerowe Szymon Wilk Superkomputery 1 1. Superkomputery to komputery o bardzo dużej mocy obliczeniowej. Przeznaczone są do symulacji zjawisk fizycznych prowadzonych głównie w instytucjach badawczych:
Bardziej szczegółowoInformatyka 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ółowoAlgorytmy. 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ółowoWprowadzenie 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ółowoMatematyczne 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ółowoAlgorytmika i pseudoprogramowanie
Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry
Bardziej szczegółowoWstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer
Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny
Bardziej szczegółowoLaboratorium 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ółowoPodstawy 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ółowoInformatyka 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ółowoZa 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ółowoPodstawowe 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ółowoWYKŁ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ółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2011/2012 Wykład nr 7 (06.06.2012) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoWYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński
WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void
Bardziej szczegółowoAlgorytm. 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ółowoEfektywność 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ółowoAlgorytm 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ółowoWykład II. Pamięci półprzewodnikowe. Studia Podyplomowe INFORMATYKA Architektura komputerów
Studia Podyplomowe INFORMATYKA Architektura komputerów Wykład II Pamięci półprzewodnikowe 1, Pamięci półprzewodnikowe Pamięciami półprzewodnikowymi nazywamy cyfrowe układy scalone przeznaczone do przechowywania
Bardziej szczegółowoArchitektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt
Architektura komputera Architektura von Neumanna: Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Zawartośd tej pamięci jest adresowana przez wskazanie miejsca, bez względu
Bardziej szczegółowoMATERIAŁ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ółowoAnaliza 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ółowoPodstawy 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ółowoMATERIAŁ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ółowoTechnologie 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ółowoArchitektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
Bardziej szczegółowoZłożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to
Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego
Bardziej szczegółowoAlgorytmy 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ółowoSortowanie. 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ółowo1. Analiza algorytmów przypomnienie
1. Analiza algorytmów przypomnienie T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, rozdziały 1-4 Wydawnictwa naukowo-techniczne (2004) Jak mierzyć efektywność algorytmu?
Bardziej szczegółowoWstę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ółowoint tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania
Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,
Bardziej szczegółowoAlgorytmy 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ółowoMagistrala systemowa (System Bus)
Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki
Bardziej szczegółowoLEKCJA TEMAT: Zasada działania komputera.
LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem
Bardziej szczegółowoINFORMATYKA 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ółowoPodstawy 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ółowoznalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.
Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze
Bardziej szczegółowoInformatyka 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ółowoSortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Bardziej szczegółowoWstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność
Bardziej szczegółowoAlgorytmy i struktury danych. wykład 2
Plan wykładu: Pojęcie algorytmu. Projektowanie wstępujące i zstępujące. Rekurencja. Pojęcie algorytmu Pojęcie algorytmu Algorytm skończony zbiór operacji, koniecznych do wykonania zadania z pewnej klasy
Bardziej szczegółowoJeszcze 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ółowoPodstawy Programowania Algorytmy i programowanie
Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,
Bardziej szczegółowoWykł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ółowoALGORYTMY I PROGRAMY
ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy
Bardziej szczegółowoAlgorytmy 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ółowoAlgorytm 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ółowoALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
Bardziej szczegółowoInformacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Bardziej szczegółowoArchitektura komputerów
Architektura komputerów Wykład 7 Jan Kazimirski 1 Pamięć podręczna 2 Pamięć komputera - charakterystyka Położenie Procesor rejestry, pamięć podręczna Pamięć wewnętrzna pamięć podręczna, główna Pamięć zewnętrzna
Bardziej szczegółowoPodstawy 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ółowoWstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Zaawansowane algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania
Bardziej szczegółowoWstęp do informatyki- wykład 2
MATEMATYKA 1 Wstęp do informatyki- wykład 2 Systemy liczbowe 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 Jerzy
Bardziej szczegółowo2.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ółowoPodstawy 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ółowoRekurencja. 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ółowoPamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/2014 13.12.2013
Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci półprzewodnikowe, Betty Prince, WNT Ptc 2013/2014 13.12.2013 Pamięci statyczne i dynamiczne Pamięci statyczne SRAM przechowywanie informacji
Bardziej szczegółowoPOLITECHNIKA 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ółowoMETODY 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ółowoAlgorytmy i struktury danych
Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.
Bardziej szczegółowoSchematy blokowe. Algorytmy Marek Pudełko
Schematy blokowe Algorytmy Marek Pudełko Metody zapisu algorytmów Algorytmy można zapisywać w postaci słownej, listy kroków lub symbolicznej - używając metajęzyków. Metajęzyk to język bardzo ogólny - opisujący
Bardziej szczegółowo