Informatyka PWSZ Tarnów

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
DYSKRETYZACJA SYGNAŁU
dr A Kwiatkowska Instytut Informatyki
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
przetwarzaniu informacji
Badania operacyjne. Wykład 2
Czyli czym się różni bit od qubitu
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Wykład 2 struktura programu elementy języka typy zmienne
Wstęp do programowania obiektowego
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Zapis informacji Dr Anna Kwiatkowska.
Temat 3: Co to znaczy, że komputer ma pamięć? Czy można ją zmierzyć?
Kod Graya.
Bezpieczeństwo danych
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Algorytmy.
opracowanie: Agata Idczak
Podstawy układów logicznych
Podstawy programowania
Technologia informacyjna
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Zastosowania ciągów.
Jednostki w informatyce i system binarny (dwójkowy)
Systemy liczbowe.
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Systemy Liczenia - I Przez system liczbowy rozumiemy sposób zapisywania i nazywania liczb. Rozróżniamy: pozycyjne systemy liczbowe i addytywne systemy.
Wybrane zagadnienia relacyjnych baz danych
Podstawy informatyki 2013/2014
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Wykład 10 typ zbiorowy rekurencja.
Matematyka i system dwójkowy
Algorytmika.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
KARTY DŹWIĘKOWE.
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Danuta Stanek KODOWANIE LICZB Systemy liczenia III.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
opracowała: Anna Mikuć
Systemy liczenia IV Kodowanie i kody Danuta Stanek.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Podstawowe struktury danych. Typy danych.
Typy danych, klucz podstawowy, klucz obcy
Zasady arytmetyki dwójkowej
METODY REPREZENTOWANIA IFORMACJI
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
LICZBY NATURALNE I CAŁKOWITE. Liczby Naturalne Liczby naturalne – liczby używane powszechnie do liczenia (na obiedzie były trzy osoby) i ustalania kolejności.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Podstawy Informatyki.
Technika Mikroprocesorowa 1
Wstęp do Informatyki - Wykład 6
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Informatyka PWSZ Tarnów

Cele kursu Ćwiczenia – zapewnić umiejętności potrzebne do przetrwania studiów Wykład – Prezentacja najbardziej istotnych zagadnień z zakresu technologii informacyjnej, ze szczególnym uwzględnieniem ich dalszego praktycznego zastosowania. Dyskusja bieżących problemów związanych z prezentowanymi zagadnieniami. Wprowadzenie do efektywnego wykorzystania systemów komputerowych i sieciowych.

Ćwiczenia - Pisanie tekstów naukowych (wzory matematyczne, chemiczne, tabele itp.) Darmowe oprogramowanie OpenOffice (Windows, Linux) Obliczenia: numeryczne Język R (do ilustracji wybranych algorytmów Fortran) arkusz kalkulacyjny Excel, Euler - symboliczne Maxima, Euler - Wizualizacja danych naukowych – R, gnuplot, - Edytory struktur molekularnych – Avogadro - obsługa systemów operacyjnych Windows i Linux - podstawowe komendy systemu - oprogramowanie narzędziowe (edytory, archiwizatory) - oprogramowanie sieciowe - oprogramowanie antywirusowe

Informatyka???

Nauka o komputerach??

Różne definicje informatyki: a) Informatyka jest to dziedzina wiedzy i działalności człowieka zajmująca się gromadzeniem, przetwarzaniem i wykorzystywaniem informacji. Informatyka zajmuje się również badaniem, jak te informacje przetworzyć.

b) Informatyka to dziedzina, która zajmuje się przetwarzaniem informacji za pomocą pewnych schematów postępowania (zwanych algorytmami). Wynikiem takiego procesu jest znów informacja. Przy czym poprzez przetwarzanie nie należy wyłącznie rozumieć „zamianę” czy „przekształcenie” jednej informacji w drugą. Do zadań informatyki należy również wyszukiwanie oraz udostępnianie czy prezentacja informacji. Wszystko to będziemy jednak traktowali jako szersze ujecie „przetwarzania”. c 2009 by P. Fulmanski, Uniwersytet Łódzki. Wersja z dnia: 9 stycznia 2010

c) Informatyka – nauka o przetwarzaniu informacji przy użyciu środków technicznych. W. Turski: d) Informatyką określa się całokształt działalności obejmującej wiedzę i umiejętności jej wykorzystania, a dotyczącej zastosowania metod i środków technicznych do sprawnego: - zbierania, - przetwarzania (analizy), - przechowywania informacji (danych) - przesyłania informacji w celu sprawnego i określonego (celowego) działania danego systemu. e) Informatyka (computer science, computing science, information technology (IT) ) – dziedzina nauki i techniki zajmująca się przetwarzaniem informacji – w tym technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje. Romuald Marczyński

f) Informatyka (w sensie anglojęzycznego terminu Informatics) jest studiowaniem systemów pozyskujących, reprezentujących, przetwarzających i wytwarzających informacje włączając w to wszystkie obliczeniowe, kognitywne i społeczne aspekty. Zasadniczym przedmiotem zainteresowania jest przetwarzanie (przekształcanie) informacji czy to przez procesy obliczeniowe czy komunikacyjne, czy to przez organizmy żywe czy urządzenia. W tym sensie informatykę należy postrzegać jako dziedzinę znacznie szersza niż informatyka w sensie Computer Science. Można powiedzieć, ze informatyka (w sensie Informatics) ogólnie pojęty aspekt pozyskiwania, przetwarzania, składowania itd. informacji rozciąga zarówno nad maszynami (komputery) jak i istotami żywymi a ogólnie, wszystkim tym co ma jakikolwiek związek z informacja P. Fulmanski, Uniwersytet Łódzki. Wersja z dnia: 9 stycznia 2010

Najważniejsze dziedziny badań współczesnej informatyki - Teoria informacji Teoria informacji zajmuje sie informacją, jej transmisją, jak również kodowaniem danych w celu pewniejszego lub szybszego przesłania jej od nadawcy do odbiorcy. - Algorytmika Tworzenie i badanie algorytmów

Algorytm – w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do niezawodnego wykonania pewnego zadania w skończonym czasie. Powinien spełniać następujące wymagania: 1. Musi posiadać określony stan początkowy, czyli operacje, od której zaczyna sie jego realizacja. 2. Liczba operacji potrzebnych do zakończenia pracy musi być skończona – warunek dyskretnosci. 3. Musi dać się zastosować do rozwiązywania całej klasy zagadnień, a nie jednego konkretnego zadania – warunek uniwersalnosci. 4. Interpretacja poszczególnych etapów wykonania musi być jednoznaczna – warunek jednoznacznosci. 5. Cel musi być osiągnięty w akceptowalnym czasie – warunek efektywnosci. Co oznacza akceptowalny to zależy od zadania. 6. Musi posiadać wyróżniony koniec.

Najważniejsze dziedziny badań współczesnej informatyki (cd.) Bazy danych Grafika komputerowa Programowanie Systemy operacyjne Sieci komputerowe Kryptografia - Sztuczna inteligencja

Informacja ??? a) Informacja (definicja ogólna) to taki czynnik, któremu człowiek może przypisać określony sens (znaczenie), aby móc ją wykorzystywać do różnych celów. Informacja (definicja informatyczna) to zbiór danych zebranych w celu ich przetwarzania i otrzymania wyników (nowych danych)

b) Każdy czynnik zmniejszający stopień´ niewiedzy o jakimś´ zjawisku czy obiekcie nazywamy informacją Tomasz Kwiatkowski Obserwatorium Astronomiczne UAM, Poznań c) Claude Shannon (1948-49) – komunikat ma tym więcej informacji im mniejsze jest prawdopodobieństwo jego wystąpienia. d) Informacja obiektywna W cybernetyce i teorii informacji najbardziej ogólnie: każde rozpoznanie stanu układu, odróżnialnego od innego stanu tego układu (stanu wyróżnionego); wyróżnienie pewnego stanu wyróżnionego (odróżnialnego) z repertuaru (zbioru stanów wyróżnionych). "...w pojęciu informacji istotne jest nie samo zaistniałe zjawisko, lecz jego stosunek do zbioru zdarzeń, które mogły były zaistnieć". Można odróżnić: informację swobodną, kiedy możliwosci (stany, zdarzenia) uważamy za abstrakcyjne i nie przypisujemy im żadnego znaczenia fizycznego, 2. informację związaną, kiedy możliwosci (stany, zdarzenia) mogą być interpretowane jako mikrostany (lub zbiory mikrostanów) pewnego układu fizycznego. Informacja zawarta w stanach układu kwantowego to informacja kwantowa. Wikipedia.pl

Ilość informacji otrzymanej przy zajściu zdarzenia xi (entropia tego zdarzenia, entropia indywidualna) to (Hartley 1928): gdzie: Ii - ilość informacji otrzymanej przy zajściu zdarzenia xi, pi - prawdopodobieństwo zajścia zdarzenia xi, r - podstawa logarytmu. W teorii informacji najczęściej stosuje się logarytm o podstawie r = 2, wówczas jednostką informacji jest bit (szanon). Przy r = e jednostką jest nat (nit), natomiast przy r = 10 - dit (hartley).

2. Przeciętna ilość informacji przypadająca na zajście zdarzenia z pewnego zbioru n zdarzeń (entropia bezwarunkowa tego zbioru, entropia przeciętna) jest średnią arytmetyczną ważoną ilości informacji otrzymywanej przy zajściu poszczególnych zdarzeń, gdzie wagami są prawdopodobieństwa tych zdarzeń (Shannon 1948): gdzie: H(X) - entropia bezwarunkowa zbioru X, n - liczba zdarzeń w zbiorze, pi - prawdopodobieństwo zajścia zdarzenia xi.

Przechowywanie i przekazywanie informacji KOMUNIKAT – zakodowana wiadomość zawierająca pewną ilość informacji; Bit – BInary digiT – cyfra binarna – jednostka informacji wywodząca się z prawdopodobieństwa wystąpienia komunikatu (p=0,5)

Ilość bitów k = log2 (p) = - log2 (p) p – prawdopodobieństwo wystąpienia komunikatu Np. p = 1 k = 0 p = 0,5 k = 1 p = 0,01 k = 6,64 p = 1/256 k = 8 (bajt) kod komunikatu – słowo kodowe długość słowa kodowego – (const – stała lub var – zmienna) B (bajt - byte) – 8 bitów - (binarne słowo kodowe o długości 8 znaków) 28 = 256 KB = 1024 B (210) np. (10000111)2 = (135)10 kB = 1000 B === k = tysiąc (kilo) (11111111)2 = (255)10 MB = 1024 KB GB = 1024 MB (gigabajt) TB = 1024 GB (terabajt) PB = 1024 TB (petabajt)

1 Zapisy dwójkowe ą zbyt długie do łatwego pamiętania kod hexadecymalny – bajt dzielony na półbajty (ang. „nibble”) i każdy jest kodowany w systemie 16-kowym, np. 010 = O16 1010 = A16 1210 = C16 1510 = F16 1 7 D == #7D

kod ósemkowy – podstawa 8 BCD – Binary Coded Decimal (59)10 = 0101 1001 (158)10 = (10011110)2 = #9E = (256)8 = (000101011000)BCD

Liczba jest pewnym abstrakcyjnym bytem wykorzystywanym do zliczania i mierzenia. Symbol lub słowo jezyka naturalnego wyrazajace liczbę nazywamy numerałem lub cyfrą (ang. numeral, digit) a w jezyku potocznym, po prostu liczbą. i XXXIV to dwa różne numerały reprezentujące tę samą liczbę System liczbowy (SL) jest sposobem reprezentacji liczb przy uzyciu cyfr (numerałów) w jednolity sposób. Rodzaje systemów liczbowych: Unarny SL – każda liczba naturalna jest reprezentowana przez n-krotne powtórzenie znaku reprezentującego jednostkę np. IIII Takie systemy nazywamy addytywnymi (żeby znaleźć wartość liczby należy dodać wartości reprezentowane przez cyfry (tutaj jednostki)

Rzymski SL Symbol Wartość I 1 (unus) V 5 (quinque) X 10 (decem) L 50 (quinquaginta) C 100 (centum) D 500 (quingenti) M 1000 (mille) Do zapisu większych liczb używano dodatkowych symboli: | (pionowa kreska) – liczba pomiędzy takimi kreskami mnożona przez 100 |MC| = (1000+100)*100 = 110 000 = (1000+100)*1000 = 1 100 000 Jeżeli przed symbolem o większej wartości występował symbol o mniejszej wartości to oznaczało to odejmowanie. Jeżeli dana liczba mogła być zapisana na wiele sposobów to poprawny był zapis bardziej zwarty: np. IX zamiast VIIII

Pozycyjnym systemem liczbowym (ang. positional numeral system) nazywamy parę (b;D), Gdzie: b jest liczbą naturalną nazywaną podstawą systemu (ang. base), D jest skończonym zbiorem b symboli {s0; s1; : : : ; sb}, nazywanych cyframi (ang. digits). System taki nazywamy systemem liczbowym o podstawie b (ang. base-b system). Każda liczba jest jednoznacznie reprezentowana jako ciąg cyfr a jej wartość zależy zarówno od cyfr jak i pozycji na jakich one wystepuja. Wartosc v ciagu dkdk-1 …. d1d0 obliczamy według ponizszej formuły” v = dkbk + dk-1bk-1 + : : : + d1b1 + d0b0 (2.1) gdzie d0; : : : ; dk to cyfry danego SL.

System dwójkowy: Przejście z systemu dziesiętnego na dwójkowy (algorytm) – zamieniamy liczbę x zapisaną w systemie dziesiętnym na jej dwójkowy odpowiednik y: 1) Początek 2) Niech z = x 3) Podziel z przez 2, zapamiętaj wynik jako q 4) Jeżeli q jest całkowite zapisz 0 5) Jeżeli q nie jest całkowite zapisz 1 6) Jako nową wartość z weź całkowitą część liczby q 7) Jeżeli z jest różna od zera idź do punktu 3 8) Jeżeli z jest równe 0 idź do punktu 9 9) Koniec Poszczególne wyniki zapisuj od prawej do lewej! x = z = 37510 | 187*2 +1 (q =187, r = 1, y = 1) z = 187 | 93*2 +1 (q =93 , r = 1, y = 11) z = 93 | 46*2 +1 (q =46 , r = 1, y = 111) z = 46 | 23*2 +0 (q =23 , r = 0, y = 0111) z = 23 | 11*2 +1 (q =11 , r = 1, y = 10111) z = 11 | 5*2 +1 (q = 5 , r = 1, y = 110111) z = 5 | 2*2 +1 (q = 2 , r = 1, y = 1110111) z = 2 | 1*2 +0 (q = 1 , r = 0, y = 01110111) z = 1 | 0*2 +1 (q =0 , r = 1, y = 101110111) z = 0

Ułamki 0,11012 = 1*2-1 + 1*2-2 + 0*2-3 + 1*2-4 = 0,5 + 0,25 + 0 + 0,0625 = 0,812510 Zamiana ułamka dziesiętnego na dwójkowy: 1. Start. 2. Niech w = x. 3. Mnożymy w przez 2. 4. Jeśli wynikiem operacji mnożenia jest liczba większa od jedności, zapisujemy na boku 1. 5. Jeśli wynikiem operacji mnożenia jest liczba mniejsza od jedności, zapisujemy na boku 0. 6. Ułamkową część wyniku – po odrzuceniu ewentualnej części całkowitej – zapisujemy jako w. 7. Jeśli w jest różne od 0, przechodzimy z powrotem do kroku 2. 8. Jeśli w jest równe 0, kończymy procedurę. 9. Koniec.

Dla 0, 4062510, otrzymujemy: 0,40625 | 2 * 0,40625 = 0,8125 0,8125 | 2 * 0,8125 = 1,625 0,625 | 2 * 0,625 = 1,25 0,25 | 2 * 0,25 = 0,5 0,5 | 2 * 0,5 = 1,0 0,0 | koniec Czyli 0,4062510 = 0,011012 Kłopot? x = 0,3 0,3 | 2 * 0,3 = 0,6 0,6 | 2 * 0,6 = 1,2 0,2 | 2 * 0,2 = 0,4 0,4 | 2 * 0,4 = 0,8 0,8 | 2 * 0,8 = 1,6 0,6 | ... Otrzymujemy ułamek dwójkowy okresowy, warto sprawdzić czy poprzestanie na 5-ciu cyfrach dwójkowych zapewni dobrą dokładność 0,010012 = 0,25 + 0,03125 = 0,2812510 ?

Dane (informacja, którą najczęściej przetwarzamy): Liczby Całkowite Rzeczywiste Zespolone Wartości logiczne Tekstowe Dźwięki Grafika (obrazy)

Liczby Całkowite Używane zazwyczaj do numerowania elementów list (spisów), liczenia czynności (także sterowania wykonaniem działań w komputerze) Mogą zajmować w pamięci komputera:

1 bajt, zakres wartości: bez znaku od 0 do 255 ze znakiem od -128 do 127 2 bajty, zakres wartości: bez znaku od 0 do 65 535 ze znakiem od -32 768 do 32 767 4 bajty, zakres wartości: bez znaku od 0 do 4 294 967 295 ze znakiem od -2 147 483 648 do 2 147 483 647 8 bajtów, zakres wartości: bez znaku od 0 do 18 446 744 073 709 551 615 ze znakiem od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807

Liczby rzeczywiste 23 to cecha liczby Są niezbędne w obliczeniach naukowych i technicznych, Zwykle posługujemy się zapisem wykładniczym: np. 6,02*1023 w tym przykładzie 6,02 to tzw. mantysa 23 to cecha liczby Do zapisania liczb w pamięci komputera używamy liczb dwójkowych, czyli cecha i mantysa muszą być w ten sposób pamiętane. Kolejne liczby części ułamkowej mantysy odpowiadają kolejnym potęgom ujemnym liczby 2 np. 0,87510 = 0,1112 Jak zapamiętać położenie przecinka????

Skorzystamy z faktu, że zapis wykładniczy nie jest jednoznaczny co oznacza, że ta sama liczba może być zapisywana na nieskończenie wiele sposobów: 6,02*1023 = 60,2*1022 = 602,0*1021 = 0,602*1024 = ….. itd.. Jeżeli przyjmiemy umowę, że część całkowita mantysy jest zawsze równa zero, to możemy zrezygnować z pamiętania tej części liczby ograniczając się do pamiętania ułamka. Aby pamiętane liczby były możliwie dokładne umowa zakłada, że ułamek dwójkowy musi mieć na pierwszym miejscu jedynkę, czyli zawsze zaczyna się od ½ (tzw. warunek normalizacji zapisu). W tej sytuacji można zrezygnować z pamiętania przecinka. Pierwszy bit w zapisie mantysy pełni rolę znaku liczby, stąd sama mantysa zaczyna się od drugiego bitu, gdzie zawsze powinna być liczba (dwójkowa) 1. Jej brak oznacza błędną pracę pamięci lub procesora!

Cecha jest pamiętana jako całkowita liczba (dwójkowa) ze znakiem i jest przechowywana w bajcie następującym po bajtach pamięci przechowujących mantysę. Większość współczesnych procesorów operuje na dwu typach liczb rzeczywistych: 4- bajtowe (3 bajty mantysy, 1 bajt cechy), zakres wartości ±1,4 * 10 ±38 z dokładnością do 7 cyfr znaczących. Ta dokładność i zakres wartości wystarcza do większości obliczeń inżynierskich. 8- bajtowe (7 bajtów mantysy, 1 bajt cechy), zakres wartości ±1,4 * 10 ±308 z dokładnością 13-14 cyfr znaczących. Zastosowania: obliczenia naukowe, technika kosmiczna, jądrowa, itp..

Dane tekstowe Teksty pamiętane są jako liczby odpowiadające poszczególnym znakom drukarskim. Używane są jedno- i dwu-bajtowe systemy kodowania tekstów. Typowe: ASCII – American Standard Code for Information Interchange – oparty o słowo 8 bitowe, np. Spacja 32 # 20, 0 (zero) 48 #30 A 65 # 41 a 97 # 61 ASCII zwykły – (7 bitowe) ASCII rozszerzony (8 bitowe) Unicode – rozszerzenie standardowego kodu ASCII – kodowanie znaków na 2B (pierwszy bajt zgodny z ASCII) Ą 0104 ą 0105 Ć 0106 ć 0107, ń 0144 Pozwala kodować teksty większości języków, włącznie z azjatyckimi.

Wielkości logiczne Informacja typu „tak” – „nie” Prawda/Fałsz Zwykle kodowana wg. standardu: 0 – Fałsz 1 - Prawda Wystarcza 1 bajt, często, ze względów technicznych wielkości logiczne zapisuje się 2 lub 4 bajtach. Jest to „rozrzutność” z punktu widzenia użycia pamięci ale pozwala to zwiększyć wydajność obliczeń ze względu na konstrukcję nowoczesnych procesoró

Zapisywanie sygnałów analogowych w technice cyfrowej (dyskretyzacja)

Okres próbkowania Ts to odstęp czasu pomiędzy pobieraniem kolejnych próbek. Częstotliwość próbkowania to odwrotność okresu próbkowania: . Aby spróbkowany sygnał z postaci cyfrowej dało się przekształcić bez straty informacji z powrotem do postaci analogowej, musi być spełnione twierdzenie Kotielnikowa-Shannona o próbkowaniu. Mówi ono, że częstotliwość próbkowania nie może być mniejsza niż podwojona szerokość pasma sygnału. Jeśli ten warunek nie jest spełniony, wówczas występuje zjawisko aliasingu. ( nieodwracalne zniekształcenie sygnału). Przykład praktycznego wykorzystania Ludzkie ucho słyszy dźwięki do częstotliwości około 20 kHz. Według twierdzenia Kotielnikowa-Shannona, częstotliwość zapisu cyfrowego musi być zatem większa niż 40 kHz, aby nie dało się usłyszeć przekłamań (tzw. częstotliwość Nyquista). Stąd 44 100 próbek na sekundę (44,1 kHz) dla każdego kanału, na płycie CD-Audio przyjęto za wartość wystarczającą.

Kwantyzacja Jest to drugi (po próbkowaniu) etap procesu przetwarzania sygnału analogowego na cyfrowy. Sygnały analogowe mogą przyjmować dowolne wartości Zapis cyfrowy używa słów o skończonej liczbie bitów, a co z tym idzie narzuca ograniczenia na zbiór wartości zapisywanego sygnału. Dozwolone wartości nazywane są poziomami reprezentacji (cyfrowej) kwantyzacja polega na przypisaniu wartości analogowych do najbliższych (liczbowo) poziomów reprezentacji błąd kwantyzacji - różnica pomiędzy wartością skwantowaną i oryginalną

Sygnał cyfrowy – mała częstość próbkowania i słaba rozdzielczość Sygnał analogowy Kwantyzacja Sygnał cyfrowy – zwiększona częstość próbkowania i poprawiona rozdzielczość

Rodzaje kwantyzacji: Skalarna – kwantuje się pojedyncze wartości 2) Wektorowa – jednocześnie kwantuje się dwie lub więcej wartości Kw. skalarna może być: Równomierna Nierównomierna -Równomierna stosuje stałe odległości pomiędzy poziomami reprezentacji -Nierównomierna dostosowuje położenia poziomów do rozkładu prawdopodobieństwa wartości sygnałów analogowych Bardziej dokładne omówienie konwersji A/D można znaleźć np. na stronie: „Próbkowanie teoria i praktyka” - artykuł w Internecie http://www.promusic.pl/artykuly/artykuly-single-view/artykul/probkowanie-teoria-i-praktyka/ Zawiera przystępny opis problemów związanych z konwersją danych analogowych do postaci zapisu cyfrowego

Algorytmy i struktury danych Informacja przechowywana w komputerach jest tylko pewnym wycinkiem świata rzeczywistego – stanowi jego abstrakcyjny model. Abstrakcja oznacza tu ignorowanie tych cech danego rzeczywistego obiektu, które dla rozwiązania danego problemu nie są potrzebne. Jeżeli chcemy rozwiązać problem to musimy zdecydować jakie dane będą przetwarzane i jak będą one przechowywane w komputerze Typy danych: - proste - złożone Proste – (wbudowane) - liczbowe (całkowite, zmiennoprzecinkowe) - znakowe (teksty) - logiczne (prawda, fałsz) …

Tablica - pozwala zapamietać wyłącznie elementy tego samego typu. Typy złożone – konglomeraty zmiennych prostych lub innych typów złożonych Tablice Słowniki Zbiory Rekordy Klasy Pliki Kolejki Stosy Drzewa Tablica - pozwala zapamietać wyłącznie elementy tego samego typu. Tablice zapewniają dostęp swobodny – do każdego elementu dostęp odbywa się w identyczny sposób i można się do nich odwoływać w dowolnej kolejności. Odwołanie się do danego elementu odbywa się poprzez tzw. Indeksowanie (oprócz nazwy tablicy podajemy numer elementu, do którego chcemy się odwołać T[10] := 5 W niektórych językach programowania wymagane jest podanie rozmiaru tablicy i sposobu indeksowania Np. T3: Array[-2..8] of Real T4: Array[1..10] [1..5] [1..6] of Integer

Ada: -- definicja typu tablicowego type TableType is array(1 .. 100) of Integer; -- definicja zmiennej okreslonego typu tablicowego MyTable : TableType; Visual Basic: Dim a(1 to 5,1 to 5) As Double Dim MyIntArray(10) As Integer Dim MySingleArray(3 to 5) As Single C: char my_string[40]; int my_array[] = {1,23,17,4,-5,100}; Java: int [] counts; counts = new int[5]; PHP: $pierwszy_kwartal = array(1 => ’Styczen’, ’Luty’, ’Marzec’); Python: mylist = ["List item 1", 2, 3.14]

Słownik: Zbiór obiektów, do których możemy dotrzeć podając tzw klucz – identyfikator (hasło) wskazujące na dany obiekt (wartość). Obiekty w słowniku nie posiadają kolejności. Operacje na słowniku (Python) d = {"key1":"val1", "key2":"val2"} x = d["key2"] d["key3"] = 122 d[42] = "val4„ Rekord Pozwala przechowywać obiekty różnego typu – elementy rekordu to tzw. pola type osoba is record imie: napis; nazwisko: napis; wiek: Integer; end

Rekord: Zawiera dane różnego typu definicja type osoba is record imie: napis; nazwisko: napis; wiek: Integer; end użycie o: osoba; wypisz(o.imie); o.wiek := 12;

Klasa Oprócz informacji o cechach obiektu zawiera rónież informację o dozwolonych na tym obiekcie działaniach (funkcjach, jakie obiekt może wykonywać) class Samochod: marka: String; pojemnosc: Float; kolor: Color; Jedz(kierunek); StanLicznika(); Stop(); UruchomSilnik(); end

Wykorzystanie: x,i: Float; i:=0; myCar = new Samochod(); myCar.marka="Nissan"; myCar.pojemnosc=1.8; myCar.UruchomSilnik(); x=myCar.StanLicznika(); myCar.Jedz("przod"); while(i<10) begin i=myCar.StanLicznika()-x; end myCar.Stop(); Polecenie Definiuje obiekt klasy Samochod (operator „new”)

Obiekt to konkretna realizacja klasy Pojęcia związane z klasą Obiekt to konkretna realizacja klasy Dziedziczenie (ang. Inheritance) – pozwala tworzyc obiekty wyspecjalizowane na podstawie obiektów bardziej ogólnych. Nie trzeba definiować całości cech i funkcjonalności a jedynie te, które róznia obiekt specjalizowany od ogólniejszego. pojazd: własnosci (dane): predkosc, połozenie działania: Stój, PoruszajSie pojazdCzterokołowy: taki sam jak typ pojazd oraz dodatkowo własności: iloscDobrychKół działania: SkrecWLewo, SkrecWPrawo wodnosamolot: taki sam jak typ pojazd oraz dodatkowo własnosci: szybkoscToniecia działania: Startuj, Laduj pojazdKosmiczny: własnosci: zapasPowietrza

Abstrakcja (ang. abstraction) Rózne traktowanie tego samego obiektu 5. pojzadMarsjanski: taki sam jak typ pojazdCzterokołowy oraz taki sam jak typ pojazdKosmiczny oraz własnosci: stanNaładowaniaAkumulatorów działania: RozłózBaterieSłoneczne, ŁadujAkumulatory Abstrakcja (ang. abstraction) Rózne traktowanie tego samego obiektu Samochód–Nissan–srodek transportu Enkapsulacja (ang. Encapsulation) - ukrywanie implementacji, (syn. Hermetyzacja). Obiekt nie może zmieniać stanu wewnętrznego innych obiektów w sposób dowolny – każdy obiekt udostępnia innym tzw. interfejs, który narzuca ograniczenia na współprace pomiędzy obiektami. Np.. obiekt Kontobankowe nie powinien dopuścić by dowolny inny obiekt mogł zmienic pole StanKonta Polimorfizm (ang. Polymorphism) – (wielopostaciowość) operacje na obiektach klas rodzicielskich można przenosić na klasy pochodne.

Plik Sekwencyjna struktura, której elementy ustawione są jeden za drugim. Tymi elementami mogą być rekordy, tablice i inne typy złożone. Liczba elementów może być dowolna (ograniczenia może narzucać nośnik pliku). Elementy pliku można dopisywać na końcu pliku, można je pobierać (czytać), można łączyć dwa pliki. Plik można również tworzyć i otwierać (udostępniać do przetwarzania). Kolejka Struktura o nieokreślonym rozmiarze, zwykle złozona z obiektów tego samego typu. Elementy te tworzą ciąg – ważne: początek kolejki (ang. head , głowa) i koniec (ang. Tail, ogon). Kolejka jest obsługiwana – pierwszy element (głowa) jest pierwszym obslugiwanym, nowy trafia zawsze na koniec kolejki stajac się jej nowym ogonem. Elementy obsłużone są usuwane z kolejki. Taka kolejka to tzw. FIFO (First In First Out). Warianty: kolejka priorytetowa (kolejność każdego obiektu w kolejce wynika z przypisanego mu priorytetu. Kolejka cykliczna – pierwszy element ma poprzednika (ogon kolejki)

Stos Podobny do kolejki (dowolna liczba elementów), rózni się sposobem obsługi: Ostatni dodany element jest pierwszym obsługiwanym. LIFO – Last In First Out Drzewo Strukture drzewa tworzą: korzeń, węzły, gałęzie i liście. Od korzenia odchodzą węzły pierwszego poziomu, z nimi mogą być połączone węzły drugiego poziomu, itd.. Węzeł, z którego nie odchodzą dalsze węzły to liść. Droga która łączy korzeń z danym liściem to gałąź. Jęzeli od węzła n-tego poziomu odchodzi węzeł (węzły) poziomu n+1szego to mówimy, że węzeł n-ty jest rodzicem węzlą n+1szego, natomiast n+1szy jest jego dzieckiem. Drzewa można wykorzystać np. w algorytmach sortowania. Przykład (wg. P. Fulmańskiego) – zasady: Każdy węzeł przechowuje jedną liczbę, Każdy rodzic może mieć tylko dwójkę dzieci Po lewej stronie każdego węzła wypisujemy wartości mniejsze od liczby w węźle, Po prawej stronie liczby wieksze od przechowywanej w węźle Liczby z drzewa wypisujemy podając najpierw wartości na lewo od węzła, potem z węzła, potem z prawej strony węzła

Liczby sortowane: 15,10,17,16,18,4,12,11. Etap 1 Etap 2 Etap 3 Etap 4 Etap 5 15 15 15 15 15 / / \ / \ / \ 10 10 17 10 17 10 17 / / \ 16 16 18 Etap 6 Etap 7 Etap 8 15 15 15 / \ / \ / \ 10 17 10 17 10 17 / / \ / \ / \ / \ / \ 4 16 18 4 12 16 18 4 12 16 18 / 11

Przykłady algorytmów: - algorytmy obliczeniowe obliczanie wartości takich jak: pierwiastki, NWN, NWD, rozwiązania równań

Algorytm znajdujący pierwiastki równania kwadratowego (zapis w pseudojęzyku) Czytaj: a,b,c If (a=0) then begin Pisz( „To nie jest równanie kwadratowe”) end else D:= b^2-4*a*c if (D < 0) then RR := -b/(2*a); IM:= Sqrt(-D)/(2*A); Pisz( „Dwa rozwiązania zespolone:”, „X1 =„ , RR,”+i*”,IM, „X2 =„ , RR,”-i*”,IM) else if(D=0) then X1 = -b/(*a) Pisz( „X1 = X2 =„ , X1)

else begin X1 := (-b+sqrt(D))/(2*a); X2 := (-b-sqrt(D))/(2*a); Pisz( „X1 =„ , X1, „X2 =„, X2) end

Algorytm sortowania przez wstawianie Tablica A zawiera N nieuporządkowanych liczb For i:=1 to N-1 step 1 do begin for j:=i+1 to N step 1 do if (A[i] < A[j]) then w := A[i]; A[i] := A[j]; A[j] = w; end Porządkowanie rosnące czy malejące?

Algorytmy iteracyjne i rekurencyjne Łac. Iteratio – powtarzanie algorytmy ieracyjne powtarzają pewien zestaw instrukcji Obiekt jest rekurencyjny jeżeli występuje we własnej definicji (powołuje się na siebie) N! = 1*2*3*….*N, 0!= 1 Iteracyjnie: Function Silnia(N) begin i:=0; s:=1; while (i < N) do i := i+1 s = s*i; end return(s);

Silnia, wersja rekurencyjna Function SilniaR(N) begin if (n=0) then return (1); end return n*SilniaR(n-1);

Ciag Fibonacciego, dla n > 1, Fibn := Fibn-1 + Fibn-2; Fib1 = Fib0 = 1 Przykład bardzo nieskutecznej rekursji function FibR(n) begin if (n=0 or n=1) then return (1); end return (FibR(n-1)+FibR(n-2));

Wersja iteracyjna function FibIt(n) begin i := 1; # licznik q := 0; # zmienna robocza x := 1; # wyraz n-1 y := 1; # wyraz n-2 while (i<n) do tmp := y; # zapamietaj wyraz n-2 y := y+x; # przesun wyraz n-2 na kolejna wartosc ciagu x := q; # przesun wyraz n-1 na kolejna wartosc ciagu # -- na wartosc wyrazu n-1 przed jego # przesunieciem i:=i+1; // zmieniamy stan licznika licznika end return (x);

Algorytmy wyszukiwania: Dwa przypadki: Wyszukujemy liczbę w zbiorze nieuporządkowanym – wyszukiwanie liniowe Wyszukujemy liczbę w zbiorze uporządkowanym (rosnąco lub malejąco) - przeszukiwanie liniowe lub - przeszukiwanie połówkowe (binarne) – bardziej wydajne

Algorytm szukania połówkowego Dla tablicy uporządkowanej rosnąco (Zapis graficzny)

Przykład (wg. T. Lubiński, http://www. algorytm Przykład (wg. T.Lubiński, http://www.algorytm.org/: Niech będzie dana tablica 5-elementowa, a = {1, 2, 4, 6, 7}. Poszukajmy w niej element x = 2. -Na początku l = 1, p = 5. -Wybieramy element środkowy s = (1 + 5) / 2 = 3. -Sprawdzamy czy a[3] jest równe 2? Nie, element ten jest równy 4, jest on większy od 2 zatem modyfikujemy p = s - 1 = 3 - 1 = 2. -Wybieramy element środkowy s = (1 + 2) / 2 = 1. Sprawdzamy czy a[1] jest równe 2? Nie, element ten jest równy 1, jest on mniejszy od 2 zatem modyfikujemy l = s + 1 = 1 + 1 = 2. -Wybieramy element środkowy s = (2 + 2) / 2 = 2. Sprawdzamy czy a[2] jest równe 2? Tak, znaleźliśmy szukany element pod indeksem 2. Poszukajmy teraz element x = 5. Na początku l = 1, p = 5. -Wybieramy element środkowy s = (1 + 5) / 2 = 3. -Sprawdzamy czy a[3] jest równe 5? Nie, element ten jest równy 4, jest on mniejszy od 5 zatem modyfikujemy l = s + 1 = 3 + 1 = 4. -Wybieramy element środkowy s = (4 + 5) / 2 = 4. Sprawdzamy czy a[4] jest równe 5? Nie, element ten jest równy 6, jest on większy od 5 zatem modyfikujemy p = s - 1 = 3. -W tym momencie l jest większe od p, zatem kończymy wyszukiwanie. -Elementu o wartości 5 nie ma w przeszukiwanej tablicy.

Złożoność obliczeniowa algorytmu Miara ilości zasobów (czas, liczba operacji, pamięć) jakie potrzebuje algorytm Zwykle jest funkcją rozmiaru danych wejściowych (nie zawsze!) Np. obliczanie wartości wyznacznika z macierzy NxN metodą rozwijania wg. dopełnień algebraicznych ma złożonośc N! Tę sama wartośc można obliczyć metodą rozkładu macierzy na iloczyn dwóch macierzy trójkątnych (np.. metoda Crouta) ze złożonością N3 Złożoność czasowa – miara jest zwykle liczba operacji a nie rzeczywisty czas Złożoność pamięciowa – miara ilości pamieci niezbędnej do realizacji zadania

Przetwarzanie sekwencyjne i równoległe Przetwarzanie sekwencyjne – wykonywanie instrukcji programów kolejno jedna za drugą. Przetwarzanie współbieżne – wykonywanie instrukcji programów równocześnie na tym samym procesorze (z podziałem czasu procesora). Przetwarzanie równoległe – wykonywanie instrukcji programów równocześnie na różnych procesorach

Praktyczna realizacja algorytmu – jezyki programowania Pierwsze komputery (lata 40te i pierwsza połowa lat pięćdziesiątych ubiegłego wieku były programowane bezpośrednio w kodach dwójkowych – każdy rozkaz procesora to liczba. 2) Pierwsza połowa lat pięćdziesiątych – assembler rozkazy procesora pisane przez człowieka w formie skrótów poleceń np. add (dodaj), mult (mnóż), div (dziel) itp. 3) Lata 54-57, firma IBM wprowadza język wysokiego poziomu FORTRAN (FORmula TRANslator) 1960 – FORTRAN IV 1966 – FORTRAN 66 ….. FORTRAN 2008

Język wysokiego poziomu uniezależniał kod programu od budowy komputera, ten sam program mógł pracować na maszynach różnych firm czy na nowych modelach komputerów. Człowiek pisze kod (program) w języku wysokiego poziomu jako tekst, język jest zbliżony do języka naturalnego (mówionego). Jak każdy język ma alfabet, słownik, reguły gramatyki, składni i ortografii. Na komputerze pracuje program tłumaczący, który czyta napisany przez człowieka program i tłumaczy go na jezyk dwójkowych rozkazów procesora. Program tłumaczący (translator lub interpreter) jest tworzony dla konkretnego modelu komputera. Translator czyta całą treść programu, analizuje poprawność po czym tworzy kod dwójkowy, zwykle optymalizując organizację kodu. Dwójkowy kod może być później wielokrotnie wykorzystywany. Interpreter czyta pojedyncze rozkazy, analizuje je i od razu je wykonuje. Ponowne wykonanie programu oznacza rozpoczęcie całego procesu analizy kodu od początku.

W ciągu 60 ostatnich lat pojawiło się kilkaset różnych języków programowania. Większość z nich nie jest powszechnie używana, niektóre były intensywnie rozwijane przez kilka czy kilkanaście lat po czym zniknęły. Języki rozpowszechnione to np. C, C++, FORTRAN, Lisp, COBOL, Python, Ruby, Pascal Ważne języki z grupy „wymarłych” to np. Algol 60 czy PL/1, Algol 68 Do dziś informatycy opisują wiele algorytmów przy użyciu pseudojęzyka wzorowanego na Algolu 60, mimo, że translatory tego języka zniknęły z powszechnego użytku w pierwszej połowie lat siedemdziesiątych.

Przykłady programów w języku wysokiego poziomu (Fortran 90) program p1 ! ! Program oblicza pole powierzchni i obwód koła o promieniu r real r, pole, obwod, pi pi = 4*atan(1.0) ! Obliczamy i zapamietujemy pi write (*,*) ‘ wpisz promien kola’ ! Prosimy o dane read(*,*) r ! Czytamy dane pole = pi*r**2 ! Wykonujemy obwod = 2*r*pi ! obliczenia ! Wyswietlamy wyniki write(*,*) ‘ pole kola =‘, pole write(*,*) ‘ jego obwod =‘, obwod end