Technologie informacyjne wykład 4 wer. 1.1

Podobne dokumenty
Algorytmy. Formalne metody prezentacji algorytmu. Automat skończony

wer.9 Wojciech Myszka, Maciej Panek grudzień 2014 r.

Programowanie. wer. 7 z drobnymi modyfikacjami! Wojciech Myszka :39:

Algorytm. a programowanie -

Algorytm. Krótka historia algorytmów

Wioletta Karpińska Wydział Matematyki i Informatyki Uniwersytet Łódzki Zajęcia na DUM I w 2017

Technologie Informacyjne Wykład 7

Technologie Informacyjne

1 Wprowadzenie do algorytmiki

Podstawy Informatyki. Algorytmy i ich poprawność

Algorytm. Algorytmy Marek Pudełko

Podstawy Programowania Algorytmy i programowanie

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

Mój pierwszy program. wer. 3 z drobnymi modyfikacjami! Wojciech Myszka :58:

Definicje. Algorytm to:

Programowanie Niskopoziomowe

Wstęp do Informatyki dla bioinformatyków

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

Algorytmika. Algorytmy. prof. dr hab. inż. Joanna Józefowska. Poznań, rok akademicki 2008/2009. Plan wyk ladu Poj

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Co to jest komputer. Zanim przejdziemy do programowania zastanówmy się co to jest komputer.

LEKCJA TEMAT: Zasada działania komputera.

Algorytm. Krótka historia algorytmów

Programowanie komputerów

Algorytmy i schematy blokowe

Podstawy programowania

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

Współczesna problematyka klasyfikacji Informatyki

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2018/2019

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

O ALGORYTMACH I MASZYNACH TURINGA

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Algorytmy, reprezentacja algorytmów.

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Podstawy i języki programowania

Teoria obliczeń i złożoność obliczeniowa

Wstęp do Informatyki. Klasyfikacja oprogramowania

2.8. Algorytmy, schematy, programy

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

Komputer i urządzenia z nim współpracujące.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Wprowadzenie do algorytmiki

System komputerowy. System komputerowy

M T E O T D O ZI Z E E A LG L O G R O Y R TM

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Wprowadzenie do złożoności obliczeniowej

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Test z informatyki. do Liceum Akademickiego do profilu matematyczno-informatycznofizycznego. 31 maja 2014 r., godz. 9.

Język ludzki kod maszynowy

WHILE (wyrażenie) instrukcja;

Informatyka. Michał Rad

Dydaktyka matematyki III-IV etap edukacyjny (wykłady) Wykład nr 6: Nauczanie algorytmów w szkole Semestr zimowy 2018/2019

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

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

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Budowa pierwszych komputerów i ich zastosowanie w matematyce

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

TEORETYCZNE PODSTAWY INFORMATYKI

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy Programowania

Aproksymacja funkcji a regresja symboliczna

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

Technologie informacyjne - wykład 12 -

EGZAMIN MATURALNY Z INFORMATYKI

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Kierunek i poziom studiów: Chemia, pierwszy. Sylabus modułu: Technologia informacyjna (0310-CH-S1-003) 1. Informacje ogólne

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

algorytm przepis rozwiązania przedstawionego zadania komputer urządzenie, za pomocą którego wykonywane są algorytmy

1. Liczby naturalne, podzielność, silnie, reszty z dzielenia

Algorytmy i struktury danych. Wykład 4

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Kod U2 Opracował: Andrzej Nowak

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

WHILE (wyrażenie) instrukcja;

Etap I V Gminnego Konkursu Informatycznego.

Alan M. TURING. Matematyk u progu współczesnej informatyki

Podstawy Informatyki Systemy sterowane przepływem argumentów

d) program działający w środowisku Windows 10. Edytorem tekstu jest: a) Paint b) WordPad c) PowerPoint d) Excel

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. Sieci i sterowniki przemysłowe

PRZEWODNIK PO PRZEDMIOCIE

Rozkład materiału realizacji informatyki w szkole podstawowej w wymiarze 2 godzin w cyklu trzyletnim

Instrukcja obsługi urządzenia DS150E z systemem operacyjnym Windows 7. Dangerfield luty 2010 V1.0 Delphi PSS

Przedmiotowy system oceniania z informatyki

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Transkrypt:

Technologie informacyjne wykład 4 wer. 1.1 Wojciech Myszka 14 listopada 2009 1

Część I Oprogramowanie i różne sprawy z tym związane

User Oprogramowanie: podstawowe, systemowe, użytkowe wer. 1.6 Application Operating System Hardware Wojciech Myszka 7 listopada 2009

Trochę historii... 1. Od czego zacząć? 2. Co to jest program? Program (1973) ciąg dyrektyw mających spowodować określone działanie automatu będący algorytmem zakodowanym w jakimś języku programowania. 3. Co to jest automat? Automat (1973) obiekt działający w pełnym cyklu swojej pracy bez bezpośredniego udziału człowieka zgodnie z założonym algorytmem funkcjonowania.

Trochę historii... 1. Co to jest automat (cd) Automat (2008) urządzenie, maszyna lub ich zestaw, wykonujące samoczynnie cykl czynności lub operacji określony konstrukcją lub programem, nie wymagające bezpośredniego udziału człowieka. 2. Automat (po angielsku) An automaton (plural: automata or automatons) is a self-operating machine. The word is sometimes used to describe a robot, more specifically an autonomous robot. Used colloquially, it refers to a mindless follower.

Automaty też historia The Canard Digérateur, or Digesting Duck, was an automaton in the form of duck, created by Jacques de Vaucanson in 1739. The mechanical duck appeared to have the ability to eat kernels of grain, and to metabolise and defecate them. While the duck did not actually have the ability to do this - the food was collected in one inner container, and the feces being produced from a second, so that no actual digestion took place - Vaucanson hoped that a truly digesting automaton could one day be designed. Voltaire wrote that "without [...] the duck of Vaucanson, you have nothing to remind you of the glory of France." ("Sans...le canard de Vaucanson vous n auriez rien qui fit ressouvenir de la gloire de la France.") This is often misquoted as "Without the shitting duck, we would have nothing to remind us of the glory of France." Za Wikipedią (Digesting Duck)

Digesting Duck

Cybernetyczny żółw Greya Waltera

Trochę historii... 1. Krosna Jacquarda (1804) 2. Pierwszy program Ada Lovelace dla maszyny analitycznej Charlesa Babbage a (1843) 3. George Bool i algebra Boole a (1847) 4. Zuse Plankalkul pierwszy prawdziwy język programowania komputerów (lata 40) 5. John Von Neumann (1945)

Generacje oprogramowania 1. Pierwsza (1950-) druciki, przekaźniki, przełączniki... 2. Druga (1955-) assembler (język niskiego rzędu bardzo blisko kodu maszynowego podobny do języka MARIE) 3. Trzecia (koniec lat 50.) języki symboliczne 4. Czwarta nie jest potrzebna znajomość języka programowania; komputerowi przekazywana jest informacja CO ma zrobić (a nie JAK ma zrobić jak w przypadku generacji III). Wadą takich narzędzi jest to, że utworzone w ten sposób programy są zasobożerne i nieefektywne. 5. Piąta Na razie w głowach tych, którzy chcą wymyślić co to ma być...

Oprogramowanie komputera Program binarny: 1. Zależy od procesora 2. Zależy od Systemu Operacyjnego

Oprogramowanie komputera Program binarny: 1. Zależy od procesora 2. Zależy od Systemu Operacyjnego Jak powstaje oprogramowanie? Języki programowania: 1. Język maszynowy 2. Assembler 3. Makro assembler 4. Języki wysokiego rzędu 5. Systemy automatycznego tworzenia programów

Warstwy oprogramowania komputera 1. Firmware urządzeń 2. Basid Input-Output Sysetm (BIOS) 3. Oprogramowanie systemowe (System operacyjny, drajwery urządzeń,... ) 4. Narzędzia programistyczne (wszystko co potrzebne do napisania nowego programu) 5. Oprogramowanie użytkowe Podział dosyć sztuczny i często trudny do zauważenia.

Model oprogramowania komputera

Model oprogramowania komputera Zakłada się, że (we współczesnych i nowoczesnych) systemach komputerowych oprogramowanie aplikacyjne nie ma bezpośredniego dostępu do sprzętu. Poprawną komunikację zapewniają: standardowe interfejsy (protokół komunikacyjny) urządzeń standardowe interfejsy (programistyczne) BIOSu standardowe interfejsy (programistyczne) Systemu Operacyjnego

System Operacyjny i jego funkcje Podstawowy element oprogramowania komputera stanowiący rodzaj interfejsu pomiędzy sprzętem (hardware), a cała resztą świata. Jedną z podstawowych funkcji Systemu Operacyjnego jest obsługa (zapewnienie niezbędnej komunikacji) wszystkich komponentów komputera. Realizowane jest to przez tak zwane sterowniki (driver) i urządzenia wirtualne.. Inne funkcje usługowe to zarządzanie zasobami (przydział zasobów) komputera na rzecz programów i użytkowników: przydział pamięci, przydział miejsca na dysku, przydział czasu procesora, rezerwacja wszelkich zasobów, dbanie o równomierne wykorzystanie zasobów. Ochrona zasobów/danych

Podstawowe koncepty Dwa tryby pracy: 1. System Operacyjny 2. Program użytkowy Maszyna wirtualna (rodzaj kapsułki dzięki której program myśli, że ma do wyłącznej dyspozycji cały komputer. Proces (task) Wątek (thread) Urządzenie wirtualne

Diagram stanu

Diagram stanu Klikamy na ikonę Nowy Gotowy

Diagram stanu Klikamy na ikonę Nowy Gotowy System Operacyjny czeka na zasoby i uruchamia Gotowy Uruchomiony

Diagram stanu Klikamy na ikonę Nowy Gotowy System Operacyjny czeka na zasoby i uruchamia Gotowy Uruchomiony Po pewnym czasie (gdy upłynie timeout) Uruchomiony Gotowy

Diagram stanu Klikamy na ikonę Nowy Gotowy System Operacyjny czeka na zasoby i uruchamia Gotowy Uruchomiony Po pewnym czasie (gdy upłynie timeout) Uruchomiony Gotowy Oczekiwanie na reakcję użytkownika Uruchomiony Zablokowany

Diagram stanu Klikamy na ikonę Nowy Gotowy System Operacyjny czeka na zasoby i uruchamia Gotowy Uruchomiony Po pewnym czasie (gdy upłynie timeout) Uruchomiony Gotowy Oczekiwanie na reakcję użytkownika Uruchomiony Zablokowany Reakcja użytkownika Zablokowany Gotowy

Diagram stanu Klikamy na ikonę Nowy Gotowy System Operacyjny czeka na zasoby i uruchamia Gotowy Uruchomiony Po pewnym czasie (gdy upłynie timeout) Uruchomiony Gotowy Oczekiwanie na reakcję użytkownika Uruchomiony Zablokowany Reakcja użytkownika Zablokowany Gotowy Program wykona instrukcję STOP Uruchomiony Koniec

Historia Uniksa http://www.levenez.com/unix/

Historia Windows http://www.levenez.com/windows/

Oprogramowanie użytkowe Oprogramowanie użytkowe (Application Software) to podklasa oprogramowania komputera służąca do realizacji zadań, które chce wykonać użytkownik. Przykłady: procesory tekstu, edytory, arkusze kalkulacyjne, programy do odtwarzania plików multimedialnych,... oprogramowanie napisane przez użytkownika... gry?...

Warstwy oprogramowania (raz jeszcze)

Część II Algorytmy początek zasadniczej części wykładu

Algorytmy. Podstawowe konstrukcje algorytmiczne (przegląd, podział zadania, programowanie dynamiczne, rekurencja,... wer. 1.4 Wojciech Myszka 10 listopada 2009

Krótkie podsumowanie Wiemy: 1. co to jest komputer 2. z jakich elementów jest skonstruowany. 3. co to jest procesor... 4. i jak działa 5. troszeczkę o tym, że komputery potrzebują programów 6. co to jest program Nie bardzo wiemy: 1. skąd się bierze program 2. i czy na pewno jest niezbędny...

Jak powstaje program Na podstawie http://www.projectcartoon.com/

Jak powstaje program To był oczywiście żart... Ale to jest jakoś tak: Rozmowa z klientem Projekt i algorytm(y) Programowanie Testy Dokumentacja Instalacja u klienta Eksploatacja/Wsparcie...

Jak powstaje program To był oczywiście żart... Ale to jest jakoś tak: Rozmowa z klientem Projekt i algorytm(y) Programowanie Testy Dokumentacja Instalacja u klienta Eksploatacja/Wsparcie...

Algorytm Słowo algorytm jest bardzo nowe (w pewnym sensie). Pochodzi od nazwiska Muhammed ibn Musa Alchwarizmi perskiego matematyka (IX w) i pierwotnie oznaczało (każde) obliczenia w dziesiętnym systemie obliczeniowym. Algorytm to jednoznaczny przepis przetworzenia w skończonym czasie pewnych danych wejściowych do pewnych danych wynikowych. (Wikipedia) Czasami rezygnuje się z żądania skończoności. Czasami, jeżeli algorytm się nie kończy nazywamy go metodą obliczeniową.

Algorithm In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing. It is formally a type of effective method in which a list of well-defined instructions for completing a task will, when given an initial state, proceed through a well-defined series of successive states, eventually terminating in an end-state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as probabilistic algorithms, incorporate randomness.

Algorytm I Przepis kucharski Składniki: 22 dag twardej czekolady półsłodkiej, 2 łyżki stołowe wody, 1 filiżanki cukru pudru, 6 jajek 4 rozdzielonych na żółtka i białka...

Algorytm II Przepis kucharski Przepis: Włóż czekoladę z dwiema łyżkami stołowymi wody do garnka o podwójnym dnie. Kiedy czekolada się rozpuści, domieszaj cukier puder; dodaj po trochu masło. Odstaw. Ubijaj żółtka około 5 minut, aż staną się gęste i nabiorą koloru cytrynowego. Delikatnie dołóż czekoladę. Ponownie lekko podgrzej, aby rozpuścić czekoladę, jeśli to będzie konieczne.

Algorytm III Przepis kucharski Domieszaj rum i wanilię. Ubijaj białka aż do spienienia. Ubijając dodaj 2 łyżki stołowe cukru i ubijaj dalej, aż utworzą się sztywne pagórki. Delikatnie połącz białka z masą czekoladowo-żółtkową. Wlej do oddzielnych naczyń, które będą podane na stół. Ochładzaj przez co najmniej 4 godziny. Wedle życzenia podawaj z bitą śmietaną. Wyjdzie z tego 6 do 8 porcji.

Algorytm Euklidesa Oto jedna z jego wersji algorytmu Euklidesa: Dane są dwie dodatnie liczby całkowite m i n, należy znaleźć ich największy wspólny dzielnik (NWD) tj. największą dodatnią liczbę całkowitą, która dzieli całkowicie zarówno m jak i n. 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Dzielenie z resztą Dygresja bo 5 3 = 12 3 = 1.6666(6) = 1.6667 = 1 reszta 2 1 3 + 2 = 5

Algorytm Euklidesa Przykład l m n r 24 44 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 24/44 = 0 r 24 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 24 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 44/24 = 1 r 20 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 24 20 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 24 20 24 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 24 20 24 20 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 24 20 4 24/20 = 1 r 4 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład l m n r 24 44 24 44 24 20 24 20 4 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 24 20 4 20 l 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 24 20 4 20 4 l 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 24 20 4 20 4 0 20/4 = 5 r 0 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Przykład m n r 24 44 24 44 24 20 24 20 4 20 4 0 l 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Skończoność Po pierwsze powinien być skończony; oznacza to, że po skończonej (być może bardzo dużej) liczbie kroków algorytm się zatrzyma. 1 Pytanie pomocnicze: Co gwarantuje, że algorytm Euklidesa zakończy się w skończonej liczbie kroków? Procedura, która ma wszystkie cechy algorytmu poza skończonością nazywana jest metodą obliczeniową. Podaj przykłady metod obliczeniowych realizowanych przez rzeczywiste komputery. 1 Ale sama skończoność to jednak za mało z praktycznego punktu widzenia dobry algorytm powinien gwarantować, że obliczenia zostaną zakończone w skończonym ale rozsądnym czasie!

Cechy algorytmu II Dobre zdefiniowanie Po drugie powinien być dobrze zdefiniowany. Każdy krok algorytmu musi być opisany precyzyjnie. Wszystkie możliwe przypadki powinny być uwzględnione, a podejmowane akcje dobrze opisane. 2 Oczywiście język naturalny nie jest wystarczająco precyzyjny może to prowadzić do nieporozumień. z tego powodu używa się bardziej formalnych sposobów zapisu algorytmów, aż po języki programowania... 2 Zwracam też uwagę, że algorytmy kucharskie nie są odpowiednio precyzyjne: co to znaczy lekko podgrzej?

Cechy algorytmu III Dane wejściowe Po trzecie powinien mieć precyzyjnie zdefiniowane dane wejściowe. Pewne algorytmy mogą nie mieć danych wejściowych (mieć zero danych wejściowych). Dane wejściowe to wartości, które muszą być zdefiniowane zanim rozpocznie się wykonanie algorytmu.

Cechy algorytmu IV Dane wyjściowe Po czwarte zdefiniowane dane wyjściowe. Daną wyjściową algorytmu Euklidesa jest liczna n która jest naprawdę największym wspólnym dzielnikiem danych wejściowych. Osobną sprawą jest pokazanie skąd wynika, że wynik algorytmu Euklidesa jest rzeczywiście NWD liczb m i n.

Cechy algorytmu V Efektywność Po piąte algorytm powinien być określony efektywnie to znaczy jego operacje powinny być wystarczająco proste by można je (teoretycznie?) wykonać w skończonym czasie z wykorzystaniem kartki i ołówka.

Problem 1 Wejście: Dwie liczby J i K Wynik: Liczba J 2 + 3K Prosty problem wymagający wykonania elementarnych obliczeń arytmetycznych na dwu liczbach wejściowych.

Problem 2 Wejście: Liczba dodatnia K Wynik: Suma liczb całkowitych od 1 do K Problem arytmetyczny, ale liczba obliczeń zmienia się w zależności od danych wejściowych.

Problem 3 Wejście: Liczba dodatnia K Wynik: TAK gdy K jest liczbą pierwszą, NIE, gdy taką nie jest. Problem decyzyjny. Zadanie jest również arytmetyczne, ale wynik nie jest numeryczny.

Problem 4 Wejście: Lista L słów w języku polskim. Wynik: Lista L uporządkowana alfabetycznie (leksykograficznie) Nie jest to problem arytmetyczny, konieczne jest operowanie na zmiennej liczbie danych słów.

Problem 5 Wejście: Mapa drogowa z zaznaczonymi miastami i odległościami między nimi, na której są wyróżnione dwa miasta A i B. Wynik: Opis najkrótszej ścieżki (trasy) od A do B Problem poszukiwania wśród wszystkich najlepszego wariantu rozwiązania

Problem 6 Wejście: Zbiór osób znajdujących się w pomieszczeniu. Wynik: Wysokość osoby najwyższej (najniższej).

Problem 6 Wejście: Zbiór osób znajdujących się w pomieszczeniu. Wynik: Wysokość osoby najwyższej (najniższej). lub Wskazanie osoby najwyższej

Problem 6 Wejście: Zbiór osób znajdujących się w pomieszczeniu. Wynik: Wysokość osoby najwyższej (najniższej). lub Wskazanie osoby najwyższej Do czego sprowadza się różnica między tymi algorytmami?

Przykład 7

Przykład 8

Przykład 9

Algorytmy podsumowanie Zadanie algorytmiczne składa się ze: scharakteryzowania dopuszczalnego, być może nieskończonego zbioru potencjalnych zestawów danych wejściowych; specyfikacji pożądanych wyników jako funkcji danych wejściowych. Zakłada się, że zadany jest albo zestaw dozwolonych akcji (operacji) podstawowych albo konfiguracja sprzętowa, w którą je wbudowano. Rozwiązanie zadania algorytmicznego stanowi algorytm złożony z elementarnych instrukcji zadających akcje z ustalonego zbioru.

Część III Charles Babbage

Charles Babbage ur. 26 grudnia 1791 r. zm. 18 października 1871 Ukończył uniwersytet w Cambridge. Zajmował się organizacją produkcji w fabrykach. Zwolennik wysokiej specjalizacji siły roboczej. Poświęcił 35 lat życia na konstruowanie maszyn liczących: Maszyna różnicowa Drukarka do maszyny różnicowej Maszyna analityczna

Maszyna różnicowa Rodzaj kalkulatora opertego na metodach różnicowych. Zrobiona z brązu. Składała się z 25 000 elementów. Ważyła 13 600 kg. Nie została nigdy ukończona. Fragment złożony po śmierci Babbage a przez jego syna z części znalezionych w szopie.

Maszyna analityczna I Mechaniczny komputer ogólnego zastosowania. Pierwsza idea 1837, nie został ukończony do śmierci (1871). Główne zadanie tablicowanie funkcji logarytmicznych i trygonometrycznych przybliżanych wielomianami interpolacyjnymi. Napędzany silnikiem parowym. Programowany za pomocą kart perforowanych (krosna Jacquarda!). Urządzenia wyjściowe: drukarka, ploter i dzwonek. Pamięć: 1000 liczb 50. cyfrowych. Arytmometr wykonywał cztery operacje, porównania i pierwiastki kwadratowe.

Maszyna analityczna II Język programowania zbliżony do współczesnych języków programowania (MARIE!). Ocenia się, że koncept był znacznie bardziej zaawansowany niż późniejsze (lata 40. XX w) konstrukcje. Ideę Babbage a najlepiej zrozumiałą Ada Augusta hrabina Lovelance napisała pierwszy program (i została uznana za pierwszą programistkę). Podjęto próbę realizacji maszyny. Zaangażowany w nią był syn Babbage a.

Czasy współczesne 1. Podjęto szereg prób realizacji komputerów Babbage a Back Computer History Museum, Mountain Viev, CA i filmik(i) na YouTube Z klocków Lego Z elementów Meccano

Część IV Prawa autorskie, patenty i inne takie

Prawo autorskie (USA) Prawo autorskie: ochrona przed nieautoryzowanym kopiowaniem. Ochronie nie podlegają: niezakończone prace tytuły i krótkie frazy, slogany pomysły artykuły użytkowe

Prawo patentowe (USA) Prawo patentowe: ochrona idei przed wykorzystaniem Lata 70-te: Oprogramowanie traktowane było jako zapis algorytmu matematycznego, a te podobnie jak prawdy naukowe nie podlegały patentowaniu. Lata 80-te: Amerykański Sąd Najwyższy zmusił Urząd Patentowy do zmiany zdania. Programy komputerowe stawały się coraz częściej fragmentem procesów technologicznych. Lata 90-te: W długotrwałym procesie decyzyjnym uznano, że praktycznie każdy program komputerowy może być opatentowany.

Prawo patentowe (Europa) Nie można patentować: 1. Odkryć, teorii naukowych i metod matematycznych. 2. Dzieła sztuki (aesthetic creations) 3. Schematy, zasady i metody rozumowania używane podczas przemyśleń, rozgrywanie gier, prowadzenia biznesu oraz tworzenia programów komputerowych 4. Sposobów prezentowania informacji. Prawo patentowe przewiduje, że w pewnych sytuacjach metody komputerowe mogą być patentowane. Od 1978 EPO udzieliła ok. 30000 patentów zaimplementowane komputerowo wynalazki.

Prawo patentowe (Polska) 1. W zasadzie programy nie podlegają patentowaniu. 2. W praktyce na terenie Polski podlegają ochronie patenty softwareowe. 3. Warto poczytać o tym na stronach Piotra VaGli Waglowskiego w dziale patenty.

Prawo w sieci Piotr Waglowski, Prawo w sieci. Zarys regulacji internetu, Wydawnictwa HELION, Gliwice 2005 obieg informacji w internecie własność intelektualna handel elektroniczny zagrożenia historia regulacji w Polsce i na świecie

Wolna kultura Lawrence Lessig, Wolna kultura, Wydawnictwa Szkolne i Pedagogiczne SA, Warszawa 2005 http://www.futrega.org/wk/ multimedia patenty publikacje naukowe ocena naukowców inspiracja prac naukowych