Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawy informatyki (2)

Podobne prezentacje


Prezentacja na temat: "Podstawy informatyki (2)"— Zapis prezentacji:

1 Podstawy informatyki (2)
wykład : 15 godz. ćwiczenia : 15 godz. Prowadzący: dr inż. Jacek Piątkowski

2 Dodawanie binarne + + Reguły dodawania cyfr binarnych . 1 10 przykład:
Kodowanie liczb Dodawanie binarne Reguły dodawania cyfr binarnych . + 1 10 przykład: + +

3 Notacja uzupełnieniowa do dwóch
Reprezentacja liczb całkowitych Notacja uzupełnieniowa do dwóch Do reprezentacji każdej wartości w notacji U2 wykorzystuje się tę samą ustaloną liczbę bitów. - Wartość najbardziej znaczącego bitu decyduje o znaku reprezentowanej wartości. - Bit znaku ( sign bit ) 0 – wartość dodatnia 1 – wartość ujemna Obecnie: - najpopularniejszy system reprezentacji liczb całkowitych - wykorzystuje się notację 32-bitową zakres:  ÷ 

4 Notacja uzupełnieniowa do dwóch
Reprezentacja liczb całkowitych Notacja uzupełnieniowa do dwóch Przykład – system 4-bitowy -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 1 2 4 -8 waga 3 bit  Ciągi bitów reprezentujące wartości dodatnie i ujemne czytane od strony prawej do lewej są identyczne aż do pozycji pierwszej jedynki (włącznie). Od tego miejsca pozostałe wartości bitów są swoimi uzupełnieniami.

5 Notacja uzupełnieniowa do dwóch
Reprezentacja liczb całkowitych Notacja uzupełnieniowa do dwóch Algorytm wyznaczania liczby przeciwnej: - wykonaj negację kolejnych bitów liczby wejściowej, - dodaj 1. 123 NOT + -123 -99 NOT + 99

6 Dodawanie w notacji uzupełnieniowej do dwóch
Reprezentacja liczb całkowitych Dodawanie w notacji uzupełnieniowej do dwóch 7 - 4 + 3  Należy odrzucić ewentualny dodatkowy bit wyniku ze skrajnej lewej pozycji powstały w wyniku przeniesienia. 4 - 7 + - 3 (3)

7 Problem przepełnienia
Reprezentacja liczb całkowitych Problem przepełnienia Problem przepełnienia (overflow) - powstaje wówczas gdy wartość, którą potrzeba zakodować, nie mieści się w zakresie wartości danego systemu reprezentacji liczb. - może wystąpić w przypadku dodawania dwóch wartości dodatnich lub dwóch wartości ujemnych. 7 + ? -2 7 - + ? 2 Błąd łatwy do wykrycia bowiem : suma liczb dodatnich daje wynik ujemny i odwrotnie ...

8 Notacja z nadmiarem Przykład – notacja z nadmiarem 8
Reprezentacja liczb całkowitych Notacja z nadmiarem Przykład – notacja z nadmiarem 8 -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7  Różnica w stosunku do systemu uzupełnieniowego do dwóch polega na odwróceniu bitu znaku.

9 Reprezentacja liczb rzeczywistych
Kodowanie w systemie zmiennoprzecinkowym bazuje na systemie pozycyjnym wagowym; opiera się na podziale liczby na część ułamkową zwaną mantysą, oraz część wykładnika potęgi podstawy systemu zwanego cechą; - umożliwia zapis liczb rzeczywistych z ustalonym błędem względnym. M – mantysa ( w postaci znormalizowanej tzn. z pierwszą liczbą po przecinku większą od zera ) ; p – podstawa systemu ( zgodnie z zapisem pozycyjnym wagowym ) E – cecha ( exponent ) – wykładnik potęgi umożliwiający przesunięcie przecinka liczby rzeczywistej tak by uzyskać znormalizowaną postać mantysy.

10 System zmiennoprzecinkowy
Reprezentacja liczb rzeczywistych System zmiennoprzecinkowy bit znaku 0 - wartość dodatnia ; 1 - wartość ujemna cecha mantysa Ilość bitów przeznaczonych na cechę decyduje o zakresie liczbowym. Ilość bitów przeznaczonych na mantysę decyduje o błędzie zapisu. * Wg standardu IEEE IEEE – Institute of Electrical and Electronics Enginieers bit znaku ( 8 bitów ) ( 23 bity ) - Liczba rzeczywista ( 4 bajty )* bit znaku ( 11 bitów ) ( 52 bity ) - Liczba rzeczywista podwójnej precyzji ( 8 bajtów )*

11 System zmiennoprzecinkowy
Reprezentacja liczb rzeczywistych System zmiennoprzecinkowy Sposób interpretacji liczb. Przykład kodowany w systemie 8-bitowym. Ciąg bitów : • Bit znaku : liczba dodatnia • Cecha ( liczba całkowita kodowana w notacji z nadmiarem ) - 3 bity nadmiar = 4 ( 2 (3-1) ) - wartość cechy : przecinek ( kropka ) o dwie pozycje w prawo • Mantysa : zatem po przesunięciu kropki :

12 System zmiennoprzecinkowy
Reprezentacja liczb rzeczywistych System zmiennoprzecinkowy Przykład : Ciąg bitów : 1 • Bit znaku : liczba ujemna • Cecha - 3 bity nadmiar = 4 ( 2 (3-1) ) - wartość cechy : przecinek ( kropka ) o jedną pozycję w lewo • Mantysa : zatem po przesunięciu kropki :

13 System zmiennoprzecinkowy
Reprezentacja liczb rzeczywistych System zmiennoprzecinkowy Przykład : Liczba : 2 ¾ • Cecha powinna mieć wartość 2 tj ( w 3-bitowej notacji z nadmiarem 4 ) Wynik :

14 System zmiennoprzecinkowy
Reprezentacja liczb rzeczywistych System zmiennoprzecinkowy Przykład : Liczba : /8 .0 1 1 1 mantysa znormalizowana ( z pierwszą liczbą po przecinku większą od zera ) 1 1 • Cecha powinna mieć wartość - 1 tj ( w 3-bitowej notacji z nadmiarem 4 ) Wynik : 1

15 Błędy zaokrągleń Przykład : 1 0 .1 0 1 1 1
Reprezentacja liczb rzeczywistych Błędy zaokrągleń Przykład : Liczba : ,625 = 2 5/8 1 1 utracony bit • Cecha powinna mieć wartość 2 tj ( w 3-bitowej notacji z nadmiarem 4 ) Wynik : czyli: 2½ a nie 2 5/8

16 Błędy zaokrągleń Sytuacje prowadzące do powstania błędów zaokrągleń :
Reprezentacja liczb rzeczywistych Błędy zaokrągleń Sytuacje prowadzące do powstania błędów zaokrągleń : brak możliwości zapisu całej reprezentacji binarnej danej liczby; dodawanie do bardzo dużych liczb wartości bardzo małych, które bywają obcinane; brak skończonego rozwinięcia ułamka danej liczby jak np. w systemie dziesiętnym 1/3 = 0,333333(3) 0,25 = ( 0,111111(1) )5 0,1 = ( (0011) )2 0,3 = ( (0011) )2

17 Reprezentacja liczb rzeczywistych
Błędy zaokrągleń Przykład - kodowany w systemie 8-bitowym (4 bity do zapisu mantysy ) Należy wykonać dodawanie : 2 ½ + 1/8 + 1/8 Sposób 1 – wartości dodawane od lewej do prawej. 2 ½ + 1/8 = 2 5/8 czyli: 2½ a nie /8 utracony bit Dodanie kolejnej wartości 1/8 nic nie zmieni i wynik końcowy to 2½ Sposób 2 – wartości dodawane od prawej do lewej. 1/8 + 1/8 = 1/4 .0 1 1/4 + 2 ½ = 2 3/4 czyli: OK.

18 Błędy zaokrągleń • Czasami wystarczy tylko zmienić jednostki obliczeń.
Reprezentacja liczb rzeczywistych Błędy zaokrągleń W wielu jednak przypadkach problemy wynikające z błędów zaokrągleń można bardzo łatwo wyeliminować. • Czasami wystarczy tylko zmienić jednostki obliczeń. - zamiast liczyć z dokładnością do 0,01 zł – liczyć w groszach; - zamiast liczyć z dokładnością do 0,001m – liczyć w mm. • Czasami trzeba zaprojektować cały cykl obliczeń, czy też dokonać normalizacji przetwarzanych danych. • Regułą jest np. by sumowanie wielu liczb zaczynać od wartości małych, by uzyskana w ten sposób wartość nie była obcięta przy jej dodaniu do wartości dużo większej.

19 Algorytmy Algorytm - zbiór uporządkowanych, jednoznacznych i wykonywalnych kroków, które określają skończony proces. Algorytm jest tworem abstrakcyjnym, natomiast jego formalną reprezen- tacją jest (przeznaczoną do wykonania przez komputer) jest program. Pomimo, że algorytm musi mieć jednoznacznie określoną kolejność wykonywania jego kroków nie oznacza to jednak, że zawsze kroki muszą być wykonywane wg. porządku : krok1, krok2, krok3, itd.. Istnieją algorytmy zwane równoległymi ( parallel algorithms ), które składają się z kilku ciągów kroków, z których każdy jest przeznaczony do wykonywania na innym procesorze komputera wieloprocesorowego. Struktura takiego algorytmu reprezentuje wiele wątków, które rozdzielają się i ponownie łączą po wykonaniu przez poszczególne procesory fragmentów całego zadania.

20 Algorytmy Przykład. Algorytm Euklidesa znajdowania największego wspólnego dzielnika całkowitych liczb dodatnich. Krok 1. Przypisz zmiennym x i y odpowiednio większą i mniejszą wartość wejściową. Krok 2. Podziel x przez y, a resztę z dzielenia nazwij r. Krok 3. Jeśli r nie jest zerem, to przypisz zmiennej x wartość y, zmiennej y wartość r i powróć do kroku 2; w przeciwnym razie aktualna wartość zmiennej b jest poszukiwanym największym wspólnym dzielnikiem.

21 Algorytmy Przykład : Powyższa instrukcja nie jest jednak algorytmem !
Krok 1. Sporządź listę wszystkich całkowitych liczb dodatnich. Krok 2. Uporządkuj listę malejąco (od liczby największej do najmniejszej). Krok 3. Pobierz pierwszy element uporządkowanej listy. Powyższa instrukcja nie jest jednak algorytmem ! Kroki 1 i 2 nie są możliwe do wykonania .

22 Algorytmy Sformułowanie algorytmu wymaga zastosowania pewnej formy jego zapisu – zastosowania pewnego języka przekazu np.: - opisu słownego, - instrukcji obrazkowej (jak np. w przypadku instrukcji wiązania krawata), - wzoru matematycznego np. : W wielu jednak przypadkach (zwłaszcza opisów słownych) sformułowany algorytm może okazać się niejednoznaczny na przyjętym poziomie szczegółowości.

23 Algorytmy Przykład niejednoznaczności opisu słownego:
. . . . . . do obliczenia wyniku końcowego użyj liczby pierwszej spośród wszystkich zgromadzonych liczb. - pierwszej w kolejności gromadzenia ? - może jednak dowolnej liczby pierwszej ? Problem niejednoznaczności zapisu algorytmu może być wyeliminowany poprzez zastosowanie określonego zestawu konstrukcji pierwotnych . Każda konstrukcja pierwotna jest zdefiniowana za pomocą: 1. składni ( syntax ) – opisującej symboliczną reprezentację konstrukcji, 2. semantyki ( semantics ) – opisującej znaczenie danej konstrukcji.

24 Algorytmy Zapisywanie algorytmów na tym poziomie szczegółowości byłoby
Zestaw konstrukcji pierwotnych do reprezentacji algorytmów przeznaczo- nych do wykonywania na komputerze mógłby być określony przez zbiór rozkazów maszynowych danego komputera. Zapisywanie algorytmów na tym poziomie szczegółowości byłoby jednak niezwykle żmudne i trudne, prowadziłoby do powstawania wielu błędów, a w wielu przypadkach wręcz nie do zrealizowania . Obecnie do zwięzłego zapisu algorytmu w fazie jego projektowania wykorzystywane są takie rozwiązania jak: - pseudokod, - sieci działań (schematy blokowe), - diagramy ( klas, współpracy, przepływu danych, ...)

25 Algorytmy Pseudokod Pseudokod - forma zapisu algorytmu składająca się ze struktur składniowo-semantycznych przypominających elementy składniowe występujące w języku programowania. Opracowanie pseudokodu polega na zdefiniowaniu spójnej, zwięzłej notacji do reprezentowania powtarzających się struktur semantycznych. Elementy składowe pseudokodu traktuje się jako konstrukcje pierwotne, za pomocą których wyrażane są dalsze pojęcia.

26 Pseudokod przykłady Instrukcja warunkowa if ( jeżeli ) if ( warunek )
Algorytmy Pseudokod przykłady Instrukcja warunkowa if ( jeżeli ) if ( warunek ) { instrukcja_1 } else { instrukcja_2 } if ( warunek ) { instrukcja } if ( rok jest przestępny ) { podziel wynik przez 366 } else { podziel wynik przez 365 } if ( sprzedaż maleje) { obniż cenę o 5 % }

27 Pseudokod przykłady Instrukcja while ( dopóki ) while ( warunek )
Algorytmy Pseudokod przykłady Instrukcja while ( dopóki ) Sprawdź warunek instrukcja Warunek fałszywy prawdziwy while ( warunek ) { instrukcja } while ( są jeszcze bilety ) { sprzedaj bliet }

28 Pseudokod przykłady Instrukcja do while ( wykonuj dopóki ) do
Algorytmy Pseudokod przykłady Instrukcja do while ( wykonuj dopóki ) Sprawdź warunek instrukcja Warunek fałszywy prawdziwy do { instrukcja } while ( warunek ) do { pobieraj dane } while ( baza pusta )

29 Pseudokod przykłady Operatory Operatory arytmetyczne Algorytmy
operacja zastosowanie = przypisanie inicjowanie zmiennej (obiektu) wartością początkową przypisanie zmiennej nowej wartości Operatory arytmetyczne operator operacja Zastosowanie * mnożenie wyrażenie * wyrażenie / dzielenie wyrażenie / wyrażenie % dzielenie modulo ( reszta z dzielenia ) wyrażenie % wyrażenie + dodawanie wyrażenie + wyrażenie - odejmowanie wyrażenie - wyrażenie

30 Pseudokod przykłady Operatory Operatory logiczne Algorytmy operator
operacja Zastosowanie == równe wyrażenie == wyrażenie != nierówne wyrażenie != wyrażenie < mniejsze niż wyrażenie < wyrażenie <= mniejsze lub równe wyrażenie <= wyrażenie > większe niż wyrażenie > wyrażenie >= większe lub równe wyrażenie >= wyrażenie

31 Pseudokod przykłady Przykład. Algorytm wyszukiwania sekwencyjnego
Algorytmy Pseudokod przykłady Przykład. Algorytm wyszukiwania sekwencyjnego Dana jest lista nazwisk uporządkowanych alfabetycznie. Poszukiwany algorytm dający możliwość sprawdzenia czy na liście znajduje się poszukiwane nazwisko.

32 Przykład. Algorytm wyszukiwania sekwencyjnego
Algorytmy, pseudokod Przykład. Algorytm wyszukiwania sekwencyjnego if ( lista jest pusta ) { nie znaleziono szukanego elementu } else { } element sprawdzany = pierwszy element listy while ( wartość szukana > element sprawdzany oraz są jeszcze elementy do sprawdzenia ) { element sprawdzany = kolejny element listy } if ( wartość szukana == element sprawdzany ) { szukany element został odnaleziony } else { nie znaleziono szukanego elementu }

33 Pseudokod przykłady Przykład. Algorytm sortowania listy
Algorytmy Pseudokod przykłady Przykład. Algorytm sortowania listy Ola Ewa Ala Iza Ula Lista początkowa : Ola Ewa Ala Iza Ula Ola Ala Iza Ula Ola Ewa Ala Iza Ula Ewa Ola Ala Iza Ula Ola Ala Iza Ula Ewa Ewa Ola Ala Iza Ula Ola Ala Iza Ula Ewa

34 Przykład. Algorytm sortowania listy
Algorytmy Przykład. Algorytm sortowania listy Ewa Ola Ala Iza Ula Ewa Ola Iza Ula Ewa Ola Ala Iza Ula Ala Ewa Ola Iza Ula Ewa Ola Iza Ula Ewa Ola Iza Ula Ala Ewa Ola Iza Ula Ala Ewa Ola Iza Ula Ewa

35 Przykład. Algorytm sortowania listy
Ala Ewa Ola Iza Ula Ala Ewa Ola Ula Ala Ewa Ola Iza Ula Iza Ala Ewa Ola Ula Ala Ewa Ola Ula Iza Ala Ewa Ola Ula Ala Ewa Iza Ola Ula Iza

36 Przykład. Algorytm sortowania listy
Ala Ewa Iza Ola Ula Ala Ewa Iza Ola Ala Ewa Iza Ola Ula Ula Ala Ewa Iza Ola Ula Ala Ewa Iza Ola Ula Ala Ewa Iza Ola Ula

37 Przykład. Algorytm sortowania
Algorytmy, pseudokod Przykład. Algorytm sortowania N = 2 while ( N nie przekracza długości listy ) { pobierz N-ty element jako przenoszony; zapamiętaj tymczasowo wartość przenoszonego elementu, pozostawiając po tym elemencie wolne miejsce na liście; while ( jest jeszcze element powyżej wolnego miejsca i element jest większy niż element przenoszony ) przesuń element z listy na pozycję wolnego miejsca tworząc w ten sposób nowe wolne miejsce nad przesuniętym elementem; } wstaw przenoszony element w wolne miejsce na liście; N = N + 1;

38 Przykład Algorytm Euklidesa znajdowania największego wspólnego
dzielnika całkowitych liczb dodatnich zapisany pseudokodem x = liczba większa y = liczba mniejsza r = x % y while ( r!=0 ) { x = y y = r } największy wspólny dzielnik to y

39 Algorytmy Przykład. Algorytm Euklidesa znajdowania największego wspólnego dzielnika całkowitych liczb dodatnich. Krok 1. Przypisz zmiennym x i y odpowiednio większą i mniejszą wartość wejściową. Krok 2. Podziel x przez y, a resztę z dzielenia nazwij r. Krok 3. Jeśli r nie jest zerem, to przypisz zmiennej x wartość y, zmiennej y wartość r i powróć do kroku 2; w przeciwnym razie aktualna wartość zmiennej b jest poszukiwanym największym wspólnym dzielnikiem.


Pobierz ppt "Podstawy informatyki (2)"

Podobne prezentacje


Reklamy Google