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



Podobne dokumenty
Struktura i działanie jednostki centralnej

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Definicje. Algorytm to:

Języki formalne i techniki translacji

Logiczny model komputera i działanie procesora. Część 1.

Wykład z Technologii Informacyjnych. Piotr Mika

Architektura komputerów

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Architektura komputerów

1 Wprowadzenie do algorytmiki

Zasady analizy algorytmów

Architektura typu Single-Cycle

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

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

Podstawy Informatyki. Sprawność algorytmów

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

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Algorytmy. dr Dariusz Banaś (UJK) Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów. wersja 0.9. Start.

Magistrala systemowa (System Bus)

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

Zapis algorytmów: schematy blokowe i pseudokod 1

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

ALGORYTMY 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

Architektura komputerów. Asembler procesorów rodziny x86

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

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

TEORETYCZNE PODSTAWY INFORMATYKI

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

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

Podstawy Programowania

INFORMATYKA SORTOWANIE DANYCH.

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Technika mikroprocesorowa I Wykład 2

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Podstawy działania i programowania procesorów. 1. Architektura emulatora maszyny RAM

Organizacja typowego mikroprocesora

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

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

1. Analiza algorytmów przypomnienie

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Algorytm. a programowanie -

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Podstawy Programowania C++

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Architektura komputerów

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Efektywność algorytmów

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Ilość cyfr liczby naturalnej

WSPOMAGANIE NAUCZANIA PRZEDMIOTU ALGORYTMY I STRUKTURY DANYCH Z WYKORZYSTANIEM SYMULATORA MASZYNY RAM. Piotr Miszczak, Wojciech Kozioł

Zadanie 1. Potęgi (14 pkt)

Architektura komputerów Wykład 2

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Przykładowe pytania DSP 1

Podstawy Programowania Algorytmy i programowanie

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura komputerów wer. 7

Podstawy i języki programowania

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Technologie Informacyjne

Algorytmy. Programowanie Proceduralne 1

Architektura komputerów

Algorytm. Krótka historia algorytmów

ALGORYTMY I PROGRAMY

Język programowania: Lista instrukcji (IL Instruction List)

Technologie informacyjne - wykład 12 -

Sortowanie Shella Shell Sort

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Architektura komputerów wer. 3

Wstęp do programowania

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

Wprowadzenie do algorytmiki

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Algorytmy i schematy blokowe

Algorytmy i struktury danych Matematyka III sem.

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

Podstawy programowania

Wprowadzenie do złożoności obliczeniowej

Programowanie i techniki algorytmiczne

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Projektowanie. Projektowanie mikroprocesorów

Podstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;

Mikroprocesor Operacje wejścia / wyjścia

Przetwarzanie potokowe pipelining

Podstawy programowania w języku C

LEKCJA TEMAT: Współczesne procesory.

Architektura komputerów

Sortowanie przez wstawianie Insertion Sort

Transkrypt:

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 komputera; zapis algorytmu w formie umożliwiającej wykona go przez komputer; Schemat logiczny komputera urządzenia ( układy ) wejścia i wyjścia: komunikacja ze światem procesor: przetwarza informacje (wykonuje instrukcje), steruje pozostałymi elementami pamięć: przechowuje informacje (dane i programy) magistrale komunikacyjne: łączą pozostałe elementy Maszyna RAM taśma wejściowa: ciąg liczb całkowitych taśma wyjściowa : ciąg liczb całkowitych, wypisywanych przez program procesor: wykonuje instrukcje pamięć: komórki 0,,,,; przechowują liczby całkowite Komórka 0: akumulator program: ciąg instrukcji do wykonania licznik rozkazów: wskazuje na instrukcję, która aktual powinna być wykonana Maszyna RAM taśma wejściowa RAM: szczegóły Pamięć: skończona liczba komórek etykietowanych 0,,,.. Komórka 0 nazywana rejestrem lub akumulatorem Każda komórka może przechowywać dowolną liczbę całkowitą Taśma wejściowa i wyjściowa to urządzenia sekwencyjne: taśma wejściowa: dane dla programu (wejście) taśma wyjściowa: wyniki programu (wyjście) Urządze sekwencyjne: program przemieszcza się tylko w jednym kierunku, zawsze do następnej pozycji; każdy element czytany tylko jeden raz; taśma wyjściowa

RAM: cykl główny procesora Pobierz instrukcję do wykonania wskazywaną przez licznik rozkazów Pobierz argumenty instrukcji do wykonania Wykonaj instrukcję Uaktualnij licznik rozkazów (o ile został zmieniny przez instrukcję) Wykona programu Powtarzaj cykl główny procesora aż do momentu gdy: Licznik rozkazów wskazuje na żadną instrukcję LUB Wykonana została instrukcja HALT RAM: instrukcje Składnia: <etykieta> <instrukcja> <argument> Instrukcje wejścia/wyjścia: Read Write Czyta kolejną liczbę z taśmy wejściowej Wypisuje liczbę na końcu taśmy wyjściowej Przesła do / z akumulatora: Load Store Prześlij do akumulatora Prześlij zawartość akumulatora do innej komórki Instrukcje arytmetyczne: Add Sub Mult Div RAM: instrukcje cd Dodaj zawartość akumulatora i argument Od akumulatora odejmij argument Pomnóż zawartość akumulatora przez argument Podziel zawartość akumulatora przez argument (wynik zakrąglony w dół) Rezultat jest zawsze umieszczany w akumulatorze. RAM: instrukcje cd RAM: argumenty Halt: zakończ działa programu Uwaga: halt jest koczne, Jeśli licznik rozkazów wskazuje na pozycję zawierającążadnej instrukcji, program rówż się zatrzymuje. Argument liczba = liczba ^ liczba etykieta Znacze zawartość komórki o numerze liczba wartość liczba adresow pośred: zawartość komórki, której numer znajduje się w komórce o numerze liczba etykieta instrukcji

Argumenty instrukcji: przykład load : zawartość komórki numer pobierz (skopiuj) do akumulatora load =: umieść liczbę w akumulatorze load ^: do akumulatora pobierz (skopiuj) zawartość komórki, której numer znajduje się w komórce Argumenty instrukcji: przykład div : podziel zawartość akumulatora przez zawartość komórki numer div =: podziel zawartość akumulatora przez liczbę div ^: podziel zawartość akumulatora przez zawartość komórki, której numer znajduje się w komórce WYNIK jest zawsze umieszczany w akumulatorze! Argumenty instrukcji: przykład Komórka 0 4 6 7 Wartość 90 Instrukcja div div = div ^ Nowa wartość komórki 0 0 (90/) 8 (90/) 6 (90/) Kod RAM: przykład Wejście: a, b liczby Wyjście: a + b Read a, b c a+b write c Start Stop Skojarze z komórkami pamięci: a b c Translacja na kod RAM: Read Read Load Add Store Write Halt Jump Jzero Jgtz Instrukcje RAM: skoki Skok bezwarunkowy Skok pod warunkiem, że w akumulatorze znajduje się zero Skok pod warunkiem, że w akumulatorze znajduje się liczba większa od zera Argument: etykieta instrukcji Etykieta: napis umieszczony z lewej strony instrukcji ( jest wymagana). RAM przykład: maksimum z dwóch liczb Wejście: a, b liczby Wyjście: maksimum liczb a, b Czytaj a, b a-b>0 Wypisz b Wypisz a et Skojarze: a b Ćwicze. uzupełnij powyższy schemat o bloki Start i Stop. READ READ LOAD SUB JGTZ et WRITE HALT et WRITE HALT

Translacja schematu blokowego na kod RAM Skojarz zmienne z komórkami pamięci Translacja każdego bloku schematu blokowego osob! Zaznacz instrukcje odpowiadające każdemu blokowi! Przekształć warunki sprawdzane w schemacie blokowym do jednej z postaci wyraze = 0 wyraze > 0 Używaj skoków aby zmienić odpowiednio licznik rozkazów (przejść do odpowiedgo fragmentu programu). Skojarzona z komórką j Schemat blokowy kod RAM x <expr> + <expr> oblicz <expr>, zachowaj w pewnej komórce i oblicz <expr>, wynik masz w akumulatorze! dodaj <expr> do <expr>: add i zachowaj wynik w komórce j: store j et Schemat blokowy RAM <expr> = 0 et oblicz <expr>, wynik masz w akumulatorze; wykonaj skok warunkowy: jzero et Kod odpowiadający podaj pod instrukcją skoku et <expr> jzero et et jump et et jump et et Suma ciągu liczb Wejście: ciąg liczb zakończony zerem! Wyjście: suma wszystkich liczb w ciągu loop s s + a Start s 0 Read a a=0 etkon Write s Stop loop s s + a s 0 Suma ciągu liczb, cd Start Read a a=0 etkon Write s Skojarzenia komórek i zmiennych: a s Stop load =0 store loop read load JZERO etkon load add store jump loop etkon write Suma ciągu liczb złożość czasowa Rozmiar danych: n liczba elementów do zsumowania (bez ostatgo zera) Złożość schematu blokowego: + n + = n + 4 Złożość programu w kodzie RAM: + 7n + 4 = 7n + 6 Która złożość poprawna? 4

Złożość asymptotyczna Notacja dużego O : igrujemy stałe zależne od zapisu algorytmu / modelu obliczeń; np., 0n, n+7, n są podobne (funkcje liniowe); Lecz 00n and n istot się różnią! Pyt.: Która z nich jest większa? Odp.: n Pyt.: Dlaczego? A: Szybciej roś! Złożość asymptotyczna Notacja dużego O formal: f(n) = O(g(n)) wtedy i tylko wtedy gdy (wtw) istje stała c>0 i liczba naturalna m>0 ie, że f(n) c g(n) dla każdego n>m. Złożość asymptotyczna - intuicja f(n) = O(g(n)) Złożość asymptotyczna przykłady 00 n = O(n ), gdyż 00 n 00 n dla każdego n>0. wtw g(n) roś co najmj samo szybko jak f(n) gdy n n +00n-0 = O(n ), gdyż n +00n-0 7 n dla każdego n>60. n =O( n ), gdyż n n dla każdego n>. [jak to pokazać?] Złożość asymptotyczna przykłady n / 000 O(n), gdyż dla każdego c>0 mamy: n / 000 > c n dla skończe wielu n. W szczególści, rówść n / 000 > c n zachodzi dla każdego n spełniającego n > 000 max(c,). Złożość asymptotyczna przykłady 00 n = O(n) 00 n = O(n ) n / 000 O(n) 77 n+ = O(n) n +00n-0 = O(n ) n +00n-0 = O(n ) n +00n-0 O(n) n =O( n ) n O(n )

Suma ciągu liczb złożość czasowa Rozmiar danych: n liczba elementów do zsumowania (bez ostatgo zera) Złożość schematu blokowego: + n + = n + 4 Złożość programu w kodzie RAM: + 7n + 4 = 7n + 6 Złożość asymptotyczna: O( n ) Problem Wejście: n liczba naturalna; a,a,...,a n ciąg liczb naturalnych z przedziału [0,9] Wyjście: elementy a,a,...,a n wypisane w porządku malejącym Przykład Wejście: ; 0, 7, 9, 9,,, 6, 7, 6,, Wyjście: 0,,,,, 6, 6, 7, 7, 9, 9 Algorytm Nadaj licznikom K 0,,K 9 wartość zero. Wczytaj n Dla i=,,,n powtarzaj: Wczytaj a K a K a + Dla i=0,,,,9 powtarzaj: Powtórz K i razy: Wypisz i Zamiast K i używamy zmiennej złożonej K o elementach K[0],,K[9]: elementy K[0],,K[9] tego samego typu; indeksowane kolejnymi liczbami naturalnymi K tablica (p. tablice w Ansi C) Implementacja K[0],,K[9] sąsied komórki pamięci licznik: zlicza liczbę wystąpień pewnego zdarzenia Wstaw 0 do K[0]..K[9] wczytaj n i n i = 0? wczytaj a 4 j 0 7 Skojarzenia: K[0]..K[9]: komórki..4 n : C i : C a : C4 j : C Uwaga: komórkę C i będziemy też oznaczać przez C[i] Assign 0 to C[]..C[4] read C C C C = 0? read C4 4 C 0 7 Skojarzenia: K[0]..K[9]: C[]..C[4] n : C i : C a : C4 j : C Uwaga: komórkę C i będziemy też oznaczać przez C[i] K[a] K[a]+ j > 9? 8 C[C4+] C[C4+]+ C > 9? 8 6 i i- Powtórz K[j] razy: wypisz j 6 C C- Repeat C[C+] times: write C Stop j j + 0 9 The end C C + 0 9 6

Assign 0 to C[]..C[4] b C6 4 C6< C[C6] 0 C6 C6- a c d load =4 #a store 6 Lb: load = #b sub 6 jgtz l load =0 #c store ^6 load 6 #d sub = store 6 jump Lb C[C4+] C[C4+]+ load 4 # add = store 7 load ^7 add = store ^7 ogólj 9 Repeat C[C+] times: C7 C+ write C C8 C[C7] load #9a add = store 7 load ^7 store 8 L9b: load 8 #9b jgtz L9c jump L0 L9c: write #9c load 8 #9d sub = store 8 jump L9b 9b C8>0 Write C C8 C8-9a 9c 9d 0 Problem Wejście: n liczba naturalna; a,a,...,a n ciąg liczb całkowitych z zakresu [0,k], k<n. Wyjście: elementy ciągu a,a,...,a n wypisane w porządku malejących Rozwiąza Zamiast tablicy rozmiaru 0, użyj tablicy rozmiaru k. złożość Rozmiar danych: n? n + k? Pamięć: proporcjonalna do k, czyli O( k ) Czas: proporcjonalny do n+k, czyli O( n+k ) : gdy n > k: O( n + k ) = O( n ) gdy n k: O( n + k ) = O( k ) złożość Czas: proporcjonalny do n+k, czyli O( n+k ) : gdy n > k: O( n + k ) = O( n ) gdy n k: O( n + k ) = O( k ) Uwaga Jeśli k>>n: potrzebujemy większej pamięci niż długość ciągu! czas obliczeń proporcjonalny do k, czyli znacz większy od n (czy i algorytm jest praktyczny?). 7

Podsumowa.Maszyna RAM model komputera: Zmienna liczbowa komórka w pamięci Operacje arytmetyczne wykonaj operację na akumulatorze i (ewentual) zawartości innej komórki Cykl główny procesora Pętle skoki licznik rozkazów..adresowa pośred i jego zastosowania!.notacja asymptotyczna w szacowaniu złożości 4.Problem sortowania; sortowa przez zlicza: jak działa? kiedy przydatne? 8