Struktura i funkcjonowanie komputera struktura połączeń, magistrala, DMA systemy pamięci komputerowych hierarchia pamięci, pamięć podręczna

Podobne dokumenty
Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inż. Jarosław Forenc

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

dr inż. Jarosław Forenc

Architektura harwardzka Architektura i organizacja systemu komputerowego Struktura i funkcjonowanie komputera procesor, rozkazy, przerwania

dr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury

dr inż. Jarosław Forenc

Algorytm. a programowanie -

Podstawowe zadanie komputera to wykonywanie programu Program składa się z rozkazów przechowywanych w pamięci Rozkazy są przetwarzane w dwu krokach:

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

Informatyka 1. Wykład nr 6 ( ) Plan wykładu nr 6. Politechnika Białostocka. - Wydział Elektryczny. Architektura von Neumanna

dr inż. Jarosław Forenc

Architektura komputerów

1 Wprowadzenie do algorytmiki

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

43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania

Wykład II. Pamięci półprzewodnikowe. Studia Podyplomowe INFORMATYKA Architektura komputerów

Informatyka 1. Wykład nr 7 ( ) Plan wykładu nr 7. Politechnika Białostocka. - Wydział Elektryczny. Architektura von Neumanna

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

RODZAJE PAMIĘCI RAM. Cz. 1

Podstawy Informatyki JA-L i Pamięci

Definicje. Algorytm to:

LEKCJA TEMAT: Zasada działania komputera.

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Architektura komputerów

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 2 -

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład II. Pamięci operacyjne. Studia stacjonarne Pedagogika Budowa i zasada działania komputera

Architektura komputerów

Magistrala systemowa (System Bus)

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Architektura komputerów

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

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

Informatyka 1. Wykład nr 6 ( ) Plan wykładu nr 6. Politechnika Białostocka. - Wydział Elektryczny. Architektura von Neumanna

Zarządzanie pamięcią operacyjną

Architektura systemu komputerowego

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

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Który z podzespołów komputera przy wyłączonym zasilaniu przechowuje program rozpoczynający ładowanie systemu operacyjnego? A. CPU B. RAM C. ROM D.

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE.

Temat: Pamięci. Programowalne struktury logiczne.

Algorytm. Krótka historia algorytmów

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

Pamięć. Podstawowe własności komputerowych systemów pamięciowych:

System mikroprocesorowy i peryferia. Dariusz Chaberski

dr inż. Jarosław Forenc

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

Architektura komputera

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

dr inż. Jarosław Forenc

dr hab. Joanna Jędrzejowicz Podstawy informatyki i komputeryzacji Gdańska Wyższa Szkoła Humanistyczna

Architektura komputerów

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Pamięci półprzewodnikowe

Wykład I. Podstawowe pojęcia Pamięci półprzewodnikowe. Studia stacjonarne inżynierskie, kierunek INFORMATYKA Architektura systemów komputerowych

Technologia informacyjna. Urządzenia techniki komputerowej

Mikroprocesor Operacje wejścia / wyjścia

2.8. Algorytmy, schematy, programy

Wykład II. Pamięci półprzewodnikowe. Studia stacjonarne inżynierskie, kierunek INFORMATYKA Architektura systemów komputerowych

Wprowadzenie do algorytmiki

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

Wstęp do informatyki- wykład 2

Algorytmy, reprezentacja algorytmów.

Pamięci półprzewodnikowe na podstawie książki: Nowoczesne pamięci

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

Pamięci magnetorezystywne MRAM czy nowa technologia podbije rynek pamięci RAM?

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

Algorytm. Algorytmy Marek Pudełko

Algorytmy. Programowanie Proceduralne 1

Test wiedzy z UTK. Dział 1 Budowa i obsługa komputera

Urządzenia zewnętrzne

Podstawy obsługi komputerów. Budowa komputera. Podstawowe pojęcia

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

urządzenie elektroniczne służące do przetwarzania wszelkich informacji, które da się zapisać w formie ciągu cyfr albo sygnału ciągłego.

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

URZĄDZENIA WEJŚCIA-WYJŚCIA

Definicja algorytmu brzmi:

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

Wykład II. Pamięci półprzewodnikowe. Studia stacjonarne inżynierskie, kierunek INFORMATYKA Architektura systemów komputerowych

Technika Mikroprocesorowa

Algorytmy. Programowanie Proceduralne 1

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Budowa komputera: dr inż. Jarosław Forenc. IDE - Intelligent Drive Electronics, Integrated Device Electronics inne nazwy:

Zasada działania pamięci RAM Pamięć operacyjna (robocza) komputera - zwana pamięcią RAM (ang. Random Access Memory - pamięć o swobodnym dostępie)

Algorytmika i pseudoprogramowanie

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Sterowniki Programowalne (SP)

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Architektura komputerów. Układy wejścia-wyjścia komputera

POLITECHNIKA OPOLSKA

Transkrypt:

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 Struktura i funkcjonowanie komputera struktura połączeń, magistrala, DMA systemy pamięci komputerowych hierarchia pamięci, pamięć podręczna Algorytmy komputerowe definicja algorytmu komputerowego sposoby opisu algorytmów klasyfikacje algorytmów Wykład nr 7 (07.06.2010) dr inż. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 7 3/56 Rok akademicki 2009/2010, Wykład nr 7 4/56 Działanie komputera - struktura połączeń Struktura połączeń jest to zbiór ścieżek łączących podstawowe moduły komputera, tj. procesor, pamięć i urządzenia we-wy Pamięć: Działanie komputera - struktura połączeń Struktura połączeń jest to zbiór ścieżek łączących podstawowe moduły komputera, tj. procesor, pamięć i urządzenia we-wy Procesor: pamięć składa się z określonej liczby słów o jednakowej długości słowa umieszczone są pod konkretnymi adresami słowo może być odczytane z pamięci lub do niej zapisane odczytuje rozkazy i dane wysyła dane po przetworzeniu steruje pracą całego systemu poprzez sygnały sterujące otrzymuje sygnały przerwań Rozkazy Dane Sygnały przerw. Procesor Sygnały ster. Dane typ operacji określają sygnały sterujące odczyt i zapis

Rok akademicki 2009/2010, Wykład nr 7 5/56 Rok akademicki 2009/2010, Wykład nr 7 6/56 Działanie komputera - struktura połączeń Struktura połączeń jest to zbiór ścieżek łączących podstawowe moduły komputera, tj. procesor, pamięć i urządzenia we-wy Moduł wejścia-wyjścia: istnieją dwie operacje: zapis i odczyt każdy z interfejsów z urządzeniem zewnętrznym określany jest portem i ma jednoznaczny adres moduł może wysyłać sygnały przerwań do procesora Odczyt Zapis Adres Dane wew. Dane zew. Moduł we/wy Dane wew. Dane zew. Sygnał przerw. Działanie komputera - struktura połączeń 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) Rok akademicki 2009/2010, Wykład nr 7 7/56 Rok akademicki 2009/2010, Wykład nr 7 8/56 Działanie komputera - magistrala Najczęściej stosowana struktura połączeń to magistrala Działanie komputera - magistrala Linie dzielą się na trzy grupy: linie danych, adresów i sterowania Magistrala jest wspólnym nośnikiem transmisji, do którego dołączonych jest wiele urządzeń, a sygnały wysyłane przez jedno z nich mogą być odbierane przez pozostałe urządzenia Magistrala składa się z wielu linii komunikacyjnych, którym przypisane jest określone znaczenie i określona funkcja Fizycznie magistrala jest zbiorem równoległych połączeń elektrycznych System komputerowy zawiera pewną liczbę różnych magistrali Magistrala łącząca główne zasoby komputera (procesor, pamięć, wejście-wyjście) nazywana jest magistralą systemową 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)

Rok akademicki 2009/2010, Wykład nr 7 9/56 Rok akademicki 2009/2010, Wykład nr 7 10/56 Działanie komputera - magistrala Linie dzielą się na trzy grupy: linie danych, adresów i sterowania Działanie komputera - magistrala Linie dzielą się na trzy grupy: linie danych, adresów i sterowania 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 Rok akademicki 2009/2010, Wykład nr 7 11/56 Rok akademicki 2009/2010, Wykład nr 7 12/56 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 Działanie komputera - typy magistral ISA (ang. Industry Standard Architecture) 1981 rok 8-bitowa (XT) i 16-bitowa (AT) szyna danych 24-bitowa szyna adresowa teoretyczna przepustowość: 8 MB/s (praktycznie: 1,6-1,8 MB/s) PCI (ang. Peripheral Component Interconnect) Wersja Rok Szyna danych Przepustowość PCI 2.0 1993 32-bitowa 133 MB/s PCI 2.1 1994 64-bitowa 528 MB/s PCI 2.2 1999 64-bitowa 528 MB/s PCI 2.3 2002 64-bitowa 528 MB/s

Rok akademicki 2009/2010, Wykład nr 7 13/56 Rok akademicki 2009/2010, Wykład nr 7 14/56 Działanie komputera - typy magistral PCI-Express (PCIe, PCI-E) 2004 rok magistrala lokalna typu szeregowego, łącząca dwa punkty występuje w kilku wariantach: x1 (250 MB/s), x2 (500 MB/s), x4 (1000 MB/s), x8 (2000 MB/s), x16 (4000 MB/s), x32 (8000 MB/s) 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 Rok akademicki 2009/2010, Wykład nr 7 15/56 Rok akademicki 2009/2010, Wykład nr 7 16/56 Systemy pamięci komputerowych Ze względu na sposób dostępu do danych wyróżniamy: dostęp sekwencyjny (pamięci taśmowe) dostęp bezpośredni (pamięci dyskowe) dostęp swobodny (pamięć główna) dostęp skojarzeniowy (pamięć podręczna) Dostęp sekwencyjny: jednostka danych to rekord dostęp do rekordów jest możliwy w określonej sekwencji liniowej przejście z jednego rekordu do następnego następuje poprzez przepuszczenie i odrzucenie rekordów pośrednich czas dostępu do różnych rekordów może bardzo różnić się Systemy pamięci komputerowych Dostęp bezpośredni: odczyt i zapis realizowany jest za pomocą tego samego mechanizmu poszczególne bloki (rekordy) mają unikatowy adres oparty na fizycznej lokacji dostęp jest realizowany przez bezpośredni dostęp do najbliższego otoczenia, po którym następuje sekwencyjne poszukiwanie, liczenie lub oczekiwanie w celu osiągnięcia lokacji finalnej Dostęp swobodny: każda adresowalna lokacja w pamięci ma unikatowy fizycznie wbudowany mechanizm adresowania czas dostępu jest stały i niezależny od poprzednich operacji dostępu

Rok akademicki 2009/2010, Wykład nr 7 17/56 Rok akademicki 2009/2010, Wykład nr 7 18/56 Systemy pamięci komputerowych Dostęp skojarzeniowy: każda lokacja ma własny mechanizm adresowania czas dostępu jest stały i niezależny od poprzednich operacji dostępu słowa są wprowadzane na podstawie części swojej zawartości, a nie na podstawie całego adresu 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 Rok akademicki 2009/2010, Wykład nr 7 19/56 Rok akademicki 2009/2010, Wykład nr 7 20/56 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 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

Rok akademicki 2009/2010, Wykład nr 7 21/56 Rok akademicki 2009/2010, Wykład nr 7 22/56 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) Pamięć podręczna Zastosowanie pamięci podręcznej ma na celu przyspieszenie dostępu procesora do pamięci głównej W systemie komputerowym występuje względnie duża i wolniejsza pamięć główna oraz mniejsza i szybsza pamięć podręczna pamięć podręczna zawiera kopię części zawartości pamięci głównej przed odczytaniem słowa z pamięci następuje sprawdzenie czy znajduje się ono w pamięci podręcznej jeśli tak, to jest przesyłane do procesora jeśli nie, to blok pamięci głównej (ustalona liczba słów) jest wczytywany do pamięci podręcznej, a następnie słowo jest przesyłane do procesora Rok akademicki 2009/2010, Wykład nr 7 23/56 Rok akademicki 2009/2010, Wykład nr 7 24/56 Pamięć podręczna Do pamięci podręcznej jest przesyłany cały blok, gdyż ze względu na tzw. zjawisko lokalności odniesień, istnieje duże prawdopodobieństwo, że przyszłe odniesienia będą dotyczyły innych słów w tym samym bloku Pamięć podręczna Porównanie różnych typów pamięci Level Access Time Typical Size Technology Managed By Registers 1-3 ns ~1 KB Custom CMOS Compiler Level 1 Cache (on-chip) Level 2 Cache (off-chip) 2-8 ns 8 KB-128 KB SRAM Hardware 5-12 ns 0.5 MB - 8 MB SRAM Hardware Main Memory 10-60 ns 64 MB - 1 GB DRAM Hard Disk 3,000,000-10,000,000 ns 20-100 GB Magnetic Operating System Operating System/User źródło: http://arstechnica.com/old/content/2002/07/caching.ars/2

Rok akademicki 2009/2010, Wykład nr 7 25/56 Rok akademicki 2009/2010, Wykład nr 7 26/56 Pamięć zewnętrzna Do pamięci zewnętrznych zaliczane są: dyski twarde - HDD pamięci optyczne - CD, DVD magnetyczne pamięci taśmowe Budowa dysku twardego: nośnik danych część mechaniczna kontroler 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 Rok akademicki 2009/2010, Wykład nr 7 27/56 Rok akademicki 2009/2010, Wykład nr 7 28/56 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 Podstawowe cechy algorytmu Algorytm powinien: Posiadać dane wejściowe (w ilości większej lub równej zeru) pochodzące z dobrze zdefiniowanego zbioru Zwracać pewien wynik Być precyzyjnie zdefiniowany (każdy krok algorytmu musi być jednoznacznie określony) Być zawsze poprawny (dla każdego z założonego dopuszczalnego zestawu danych wejściowych) Zawsze kończyć się po skończonej liczbie kroków (powinna istnieć poprawnie działająca reguła stopu algorytmu) Być efektywny (jak najkrótszy czas wykonania i jak najmniejsze zapotrzebowanie na pamięć)

Rok akademicki 2009/2010, Wykład nr 7 29/56 Rok akademicki 2009/2010, Wykład nr 7 30/56 Sposoby opisu algorytmów 1. Opis słowny algorytmu (w języku naturalnym) 2. Opis w punktach (lista kroków) 3. Opis w postaci schematu blokowego 4. Z zastosowaniem pseudokodu, czyli niezbyt formalnej odmiany języka programowania 5. W wybranym języku programowania Opis słowny algorytmu Polega na podaniu 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ą. Rok akademicki 2009/2010, Wykład nr 7 31/56 Rok akademicki 2009/2010, Wykład nr 7 32/56 Lista kroków Lista kroków jest to 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 Schematy blokowe 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 Zależnie od typu wykonywanej operacji stosowane są różne kształty bloków 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

Rok akademicki 2009/2010, Wykład nr 7 33/56 Rok akademicki 2009/2010, Wykład nr 7 34/56 Schematy blokowe Podstawowe symbole stosowane na schematach blokowych: Schematy blokowe Podstawowe symbole stosowane na schematach blokowych: STOP blok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz 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 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 Rok akademicki 2009/2010, Wykład nr 7 35/56 Rok akademicki 2009/2010, Wykład nr 7 36/56 Pseudokod Pseudokod (pseudojęzyk) - jest to uproszczona wersja języka programowania Symbole geometryczne występujące na schematach blokowych zastępowane są zdaniami w języku ojczystym Opis w języku programowania Zapis programu w konkretnym języku programowania Najczęściej stosowane języki to Pascal i C Często pojawiają się w nim zwroty pochodzące z języków programowania Zapis w pseudokodzie może być łatwo przetłumaczony na wybrany język programowania

Rok akademicki 2009/2010, Wykład nr 7 37/56 Rok akademicki 2009/2010, Wykład nr 7 38/56 Przykłady opisu algorytmów Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Lista kroków: 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) Przykłady opisu algorytmów Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Przykład: NWD(1675,3752)? a b Dzielenie większej liczby przez mniejszą Zamiana 1675 3752 b/a 3752/1675 2 reszta 402 b 402 1675 402 a/b 1675/402 4 reszta 67 a 67 67 402 b/a 402/67 6 reszta 0 b 0 67 0 KONIEC NWD(1675,3752) 67 Rok akademicki 2009/2010, Wykład nr 7 39/56 Rok akademicki 2009/2010, Wykład nr 7 40/56 Przykłady opisu algorytmów Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Schemat blokowy: Przykłady opisu algorytmów Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb 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

Rok akademicki 2009/2010, Wykład nr 7 41/56 Rok akademicki 2009/2010, Wykład nr 7 42/56 Przykłady opisu algorytmów Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Język 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; } Przykłady opisu algorytmów Zamiana zapisu liczby naturalnej l danej w systemie dziesiętnym, na zapis w systemie pozycyjnym o podstawie p Lista kroków: Dane wejściowe: liczba l w systemie dziesiętnym, podstawa systemu p Dane wyjściowe: zapis liczby l w systemie o podstawie p Kolejne kroki: 1. Czytaj liczby l i p 2. Dopóki l > 0 powtarzaj krok 3 3. Wykonaj dzielenie całkowite liczby l przez p, resztę z dzielenia zapamiętaj jako kolejną cyfrę przedstawienia liczby l w nowym systemie pozycyjnym 4. Drukuj cyfry przedstawienia liczby l w nowym systemie pozycyjnym w odwrotnej kolejności niż były zapamiętywane Rok akademicki 2009/2010, Wykład nr 7 43/56 Rok akademicki 2009/2010, Wykład nr 7 44/56 Przykłady opisu algorytmów Zamiana zapisu liczby naturalnej l danej w systemie dziesiętnym, na zapis w systemie pozycyjnym o podstawie p Przykład: 1751 (10)? (6) 1751 (10) 12035 (6 ) 1751/ 6 291/ 6 48 / 6 8 / 6 1/ 6 291 48 8 1 0 reszta reszta reszta reszta reszta 5 3 0 2 1 kolejność odczytywania cyfr liczby w systemie szóstkowym Klasyfikacje algorytmów Paradygmaty tworzenia programów komputerowych: strategia dziel i zwyciężaj programowanie dynamiczne algorytmy zachłanne programowanie liniowe algorytmy siłowe (brute force) algorytmy probabilistyczne heurystyka

Rok akademicki 2009/2010, Wykład nr 7 45/56 Rok akademicki 2009/2010, Wykład nr 7 46/56 Klasyfikacje algorytmów Techniki implementacji algorytmów komputerowych: proceduralność obiektowość praca sekwencyjna praca wielowątkowa praca równoległa rekurencja Strategia dziel i zwyciężaj Strategia dziel i zwyciężaj (ang. divide and conquer) jest strategią konstruowania algorytmów, jedną z najefektywniejszych metod w informatyce W strategii tej zazwyczaj rekurencyjnie dzielimy problem na dwa lub więcej mniejszych problemów tego samego (lub podobnego) typu tak długo, aż stanie się on wystarczająco prosty do bezpośredniego rozwiązania Rozwiązania otrzymane dla mniejszych podproblemów są scalane w celu uzyskania rozwiązania całego zadania Przykłady zastosowań: sortowanie szybkie (quicksort) wyszukiwanie binarne - sprawdzenie czy element znajduje się w uporządkowanej tablicy, jeśli tak, to zwraca jego indeks Rok akademicki 2009/2010, Wykład nr 7 47/56 Rok akademicki 2009/2010, Wykład nr 7 48/56 Programowanie dynamiczne Konstrukcja programu sformułowana jest w trzech etapach: Koncepcja: Inicjacja: Progresja: stworzenie rekurencyjnego modelu rozwiązania problemu (wraz z jednoznacznym określeniem przypadków elementarnych) stworzenie tablicy, zawierającej rozwiązania przypadków elementarnych i obliczonych na ich podstawie podproblemów wpisanie do tablicy wartości dla przypadków elementarnych obliczenie i wpisanie do tablicy rozwiązania problemu wyższego rzędu (na podstawie formuły rekurencyjnej i już wpisanych wartości) postępowanie w ten sam sposób do osiągnięcia pożądanej wartości Programowanie dynamiczne - przykład Koncepcja: (F 10 w ciągu Fibonacciego) model rekurencyjny, przypadki elementarne, tablica z rozwiązaniem F 0 0, F1 1, Fn Fn 1 + Fn 2 n 0 1 2 3 4 5 6 7 8 9 10 F n Inicjacja: Progresja: wpisanie do tablicy wartości dla przypadków elementarnych n 0 1 2 3 4 5 6 7 8 9 10 F n 0 1 obliczenie rozwiązań problemów wyższego rzędu aż do osiągnięcia pożądanej wartości i wpisanie ich do tablicy n 0 1 2 3 4 5 6 7 8 9 10 F n 0 1 1 2 3 5 8 13 21 34 55

Rok akademicki 2009/2010, Wykład nr 7 49/56 Rok akademicki 2009/2010, Wykład nr 7 50/56 Algorytmy zachłanne Algorytm zachłanny - w celu rozwiązania pewnego zadania w każdym kroku dokonuje się zachłannego, tj. najlepiej rokującego w danym momencie wyboru rozwiązania częściowego Algorytm podejmuje decyzję lokalnie optymalną, dokonując wyboru wydającego się w danej chwili najlepszym Dokonywany lokalnie najkorzystniejszy wybór ma w założeniu prowadzić do znalezienia globalnego optymalnego rozwiązania Algorytmy zachłanne stosowane są przede wszystkim w optymalizacji Programowanie liniowe Programowanie liniowe - warunki ograniczające oraz funkcja celu mają postać liniową, np. warunki ograniczające: a1x1 + a 2x 2 + K+ a nx n α a1x1 + a 2x 2 + K+ a nx n α a1x1 + a 2x 2 + K + a nx n α Zadanie polega na zmaksymalizowaniu (zminimalizowaniu) funkcji celu: f α + c1x1 + c2x2 + K+ c n x n wiele problemów można sprowadzić do maksymalizacji lub minimalizacji pewnej funkcji celu, przy ograniczonych zasobach i antagonistycznych warunkach programowanie liniowe znalazło szerokie zastosowanie w teorii decyzji, np. do optymalizacji planu produkcyjnego Rok akademicki 2009/2010, Wykład nr 7 51/56 Rok akademicki 2009/2010, Wykład nr 7 52/56 Programowanie liniowe Przykład: Fabryka produkuje urządzenia A i B. W ciągu jednego dnia można wytworzyć łącznie 200 urządzeń. Wyprodukowanie urządzenia A zajmuje 3 roboczogodziny, a B - 4 roboczogodziny. Dzienna liczba dostępnych roboczogodzin wynosi 600. W ciągu jednego dnia należy wyprodukować min. 50 urządzeń A i min. 50 urządzeń B. Zysk ze sprzedaży urządzenia A to 1000 PLN, a B - 1200 PLN. Ile urządzeń A i B należy dziennie wyprodukować, aby zysk był jak największy? Warunki ograniczające: Funkcja celu: x A + x B 200 f 1000 x A + 1200 x B 3 x + 4 x 600 x, x A A B B 50 Algorytmy siłowe Algorytm siłowy (brute force) - opiera się na sukcesywnym sprawdzaniu wszystkich możliwych kombinacji w poszukiwaniu rozwiązania problemu Zazwyczaj nieoptymalny, ale najprostszy w implementacji W programowaniu termin ten odnosi się do dowolnego algorytmu, który rozwiązuje problem przez weryfikację i ocenę wszystkich wariantów postępowania

Rok akademicki 2009/2010, Wykład nr 7 53/56 Rok akademicki 2009/2010, Wykład nr 7 54/56 Algorytmy probabilistyczne Algorytmy można podzielić na deterministyczne i probabilistyczne Dane wejściowe Algorytm deterministyczny Dane wyjściowe Dane wejściowe Algorytm probabilistyczny Dane wyjściowe Generator liczb losowych Działanie algorytmu deterministycznego jest całkowicie zależne od warunków początkowych (wejście), tzn. dla takich samych danych wejściowych algorytm zawsze zwraca taki sam wynik Algorytm probabilistyczny albo randomizowany (randomized algorithm) do swojego działania używa losowości (generatora liczb pseudolosowych) Algorytmy probabilistyczne Główną zaletą algorytmów probabilistycznych jest działanie w średnim przypadku, dzięki czemu złośliwe dane wejściowe nie wydłużają jego działania Algorytm Las Vegas: Zawsze zwraca prawidłową odpowiedź, ale jego czas działania nie jest z góry ustalony (np. szukanie litery a w tablicy zawierającej połowę liter a i połowę liter b ) Algorytm Mone Carlo: Kończy się w ustalonym czasie, ale może z pewnym prawdopodobieństwem zwrócić zły wynik lub zwrócić wynik tylko z pewną dokładnością (np. obliczanie całek oznaczonych) Rok akademicki 2009/2010, Wykład nr 7 55/56 Rok akademicki 2009/2010, Wykład nr 7 56/56 Algorytmy probabilistyczne - algorytm Monte Carlo Koniec wykładu nr 7 Obliczanie przybliżonej wartości całki oznaczonej metodą Monte Carlo: Dla funkcji f(x), której całkę chcemy obliczyć w przedziale [x p,x k ] wyznaczamy prostokąt obejmujący pole pod wykresem tej funkcji o wysokości h i długości podstawy (x k -x p ) Losujemy n punktów i zliczamy te punkty n w, które wpadają w pole pod wykresem funkcji Wartość całki obliczana jest na podstawie wzoru przybliżonego: I xk x p xk I f ( x) dx x p nw f ( x) dx h( xk x p ) n Dziękuję za uwagę!