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

Podobne dokumenty
Programowanie komputerów

Technologie cyfrowe semestr letni 2018/2019

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

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

Programowanie i techniki algorytmiczne

Algorytmy sortujące i wyszukujące

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

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

2.8. Algorytmy, schematy, programy

Programowanie w VB Proste algorytmy sortowania

1 Wprowadzenie do algorytmiki

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Języki i metodyka programowania

Algorytmy. Programowanie Proceduralne 1

Analiza algorytmów zadania podstawowe

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

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

Paradygmaty programowania

Definicje. Algorytm to:

Algorytmy. Programowanie Proceduralne 1

Temat 20. Techniki algorytmiczne

TEORETYCZNE PODSTAWY INFORMATYKI

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Zapisywanie algorytmów w języku programowania

Algorytmika i pseudoprogramowanie

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie do algorytmiki

Technologie informacyjne - wykład 12 -

Programowanie w języku Python. Grażyna Koba

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Jeszcze o algorytmach

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Strategia "dziel i zwyciężaj"

Z nowym bitem. Informatyka dla gimnazjum. Część II

Algorytmy i struktury danych - opis przedmiotu

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

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

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

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

Sortowanie przez wstawianie Insertion Sort

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Algorytmy i struktury danych

ALGORYTMY I PROGRAMY

Złożoność obliczeniowa zadania, zestaw 2

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

Języki programowania zasady ich tworzenia

WYMAGANIA EDUKACYJNE

Podstawy programowania w języku C

Efektywna analiza składniowa GBK

INFORMATYKA SORTOWANIE DANYCH.

Algorytm. a programowanie -

Technologie cyfrowe semestr letni 2018/2019

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Poprawność algorytmów

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

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

Nowa podstawa programowa przedmiotu informatyka w szkole ponadpodstawowej

Wykład z Technologii Informacyjnych. Piotr Mika

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

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Algorytmy i struktury danych

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Złożoność algorytmów. Wstęp do Informatyki

Metody Kompilacji Wykład 1 Wstęp

Podstawy i języki programowania

Programowanie w języku C++ Grażyna Koba

Kompletna dokumentacja kontenera C++ vector w -

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Informatyka 1. Złożoność obliczeniowa

Podstawy algorytmiki Dariusz Piekarz

Sortowanie Shella Shell Sort

Struktury Danych i Złożoność Obliczeniowa

Sortowanie - wybrane algorytmy

Algorytmy przeszukiwania wzorca

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

EGZAMIN MATURALNY 2012 INFORMATYKA

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Temat: Programujemy historyjki w języku Scratch tworzymy program i powtarzamy polecenia.

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

EGZAMIN MATURALNY 2013 INFORMATYKA

Algorytmy, reprezentacja algorytmów.

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

Algorytmy i struktury danych

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

EGZAMIN MATURALNY 2013 INFORMATYKA

Transkrypt:

Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015

Zadanie algorytmiczne: wyszukiwanie dane wejściowe: lista elementów L, szukany element x wynik: indeks elementu x, lub 1 jeśli elementu nie ma na liście Przeszukiwanie liniowe: porównuj kolejne elementy z szukanym elementem x. Złożoność obliczeniowa: O(n) http://www.algorytm.org/dla poczatkujacych/szukanie zadanego elementu.html 2

Zadanie algorytmiczne: wyszukiwanie dane wejściowe: posortowana lista elementów L, szukany element x wynik: indeks elementu x, lub 1 jeśli elementu nie ma na liście Wyszukiwanie binarne: 1) podziel tablicę na dwie połowy. 2) jeśli szukany element jest mniejszy niż początek drugiej połowy, szukaj w pierwszej połowie. 3) jeśli element jest większy niż początek drugiej połowy, szukaj w drugiej połowie 4) wróć do punktu 1 biorąc odpowiednią połowę listy 3 http://www.algorytm.org/dla poczatkujacych/szukanie polowkowe binarne.html

Zadanie algorytmiczne: wyszukiwanie dane wejściowe: posortowana lista elementów L, szukany element x wynik: indeks elementu x, lub 1 jeśli elementu nie ma na liście Złożoność obliczeniowa: liczba podziałów na pół : N/2x = 1 N = 2x X = log2n Czyli dla wyszukiwania binarnego złożoność obliczeniowa to O(logN) 4 http://www.algorytm.org/dla poczatkujacych/szukanie polowkowe binarne.html

Zadanie algorytmiczne: wyszukiwanie dane wejściowe: (nie)posortowana lista elementów L, szukany element x wynik: indeks elementu x, lub 1 jeśli elementu nie ma na liście Złożoność obliczeniowa: wyszukiwanie sekwencyjne O(N) Wyszukiwanie binarne O(logN) zysk dla N=1000 1000/log(1000) = 150 wartość przybliżona! http://www.stoimen.com/blog/2012/07/03/computer algorithms balancing a binary search tree/ 5

Zadanie algorytmiczne: problem komiwojażera dane wejściowe: lista miast, tabela odległości między każdą parą miast. wynik: najkrótsza ścieżka łącząca wszystkie miasta, każde z miast tylko raz wariant decyzyjny: odpowiedź na pytanie Czy istnieje ścieżka o długości mniejszej niż X, gdzie X należy do danych wejściowych. 6

Zadanie algorytmiczne: problem komiwojażera Algorytm siłowy (ang. brute force): sprawdzamy wszystkie możliwe ścieżki, dla każdej liczymy długość, wybieramy najkrótszą. Złożoność obliczeniowa: Możliwe ścieżki: 1 2 3 4 5 6 7 równoważna 7 6 5 4 3 2 1 (kierunek obiegu nie jest 1 3 2 4 5 6 7 równoważna 7 6 5 4 2 3 1 istotny, czyli po dwie równoważne drogi)... Ponieważ ścieżka jest zamknięta to droga 1 2 3 4 5 6 7 jest równoważna 7 1 2 3 4 5 6 itd. (N możliwych początków, czyli N dróg równoważnych) Liczba nierównoważnych ścieżek: (N 1)!/2 Złożoność obliczeniowa tego algorytmu to O(N!) 7

Zadanie algorytmiczne: problem komiwojażera Algorytm siłowy (ang. brute force): sprawdzamy wszystkie możliwe ścieżki, dla każdej liczymy długość, wybieramy najkrótszą. By Saurabh.harsh (Own work) via Wikimedia Commons CC BY SA 3.0 8

Zadanie algorytmiczne: problem komiwojażera http://www.daveperrett.com/articles/2010/12/07/comp sci 101 big o notation/ Złożoność obliczeniowa O(N!): już przy 20 miastach trzeba wykonać 2432902008176640000 = 2.4x1018 operacji. Zakładając, że komputer sprawdza 106 dróg na sekundę sprawdzenie 20 miast zajęło by 2.5x1012 sekund, czyli 76 000 lat. 9

Zadanie algorytmiczne: problem komiwojażera Największe znane rozwiązanie (2006 rok): 85900 miast. Rozwiązanie użyte do planowania drogi lasera produkującego układy scalone. Ścisłe algorytmy inne niż siłowy mają złożoność O(N22N) Szybsze rozwiązania można uzyskać metodami przybliżonymi, które dają rozwiązania bliskie optymalnemu. http://www.math.uwaterloo.ca/tsp/pla85900/index.html 10

http://xkcd.com/627/ CC BY NC 2.5 11

Języki programowania Język programowania: zestaw symboli i gramatyka używane do tworzenia programów komputerowych. Języki wysokiego poziomu (np. C++, Python, Java) są skonstruowane tak, by ułatwić zrozumienie programu (kodu). Języki niskiego poziomu (np. assembler) używają konstrukcji możliwie najbliższych do wykonywanych rzeczywiście przez procesor. 12

Projektowanie programów 13

Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały dla procesora. Wynikiem kompilacji jest program, który można uruchomić. W czasie kompilacji jest analizowany cały kod, co oznacza, że nie może w nim być nigdzie błędów językowych. Interpretacja: wykonywanie kodu programu krok po kroku, bez analizy poprawności językowej całości. Interpretacja jest prowadzona do napotkania błędu w kodzie, lub poprawnego zakończenia działania programu. Języki kompilowane: C++ Języki interpretowane: PHP, Java, Python Wszystkie przykłady na następnych slajdach pochodzą ze strony http://brain.fuw.edu.pl/edu/ti:programowanie_z_pythonem 14

Struktury danych: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. zmienna: miejsce na konkretne dane. Zmienna ma swoją nazwę, typ i wartość. 15

Struktury danych: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. zmienna: miejsce na konkretne dane. Zmienna ma swoją nazwę, typ i wartość. 16

Wyrażenia: operacje na zmiennych, wzory. 17

Struktury danych: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. lista (macierz jednowymiarowa): zestaw podstawowych elementów, np. liczb. 18

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. jeśli Q : jeżeli zadanie logiczne, oznaczone symbolem Q jest prawdziwe, np: Q x>0 19

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. jeśli Q : jeżeli zadanie logiczne, oznaczone symbolem Q jest prawdziwe, np: Q x>0 20

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. jeśli Q : jeżeli zadanie logiczne, oznaczone symbolem Q jest prawdziwe, np: Q x>0 21

Lista obecności 22

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. jeśli Q : jeżeli zadanie logiczne, oznaczone symbolem Q jest prawdziwe, np: Q x>0 bezpośrednie następstwo: wykonaj A potem B 23

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. iteracja ograniczona: wykonaj A dokładnie N razy 24

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. iteracja ograniczona: wykonaj A dokładnie N razy 25

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. iteracja warunkowa: dopóki Q, wykonuj A 26

Struktury sterujące: elementy algorytmu zawiadujące kolejnością wykonywania instrukcji. iteracja warunkowa: dopóki Q, wykonuj A 27

Funkcje: elementy algorytmu wykonujące określone obliczenia dla zadanych danych wejściowych (argumentów). Często bloki programu wykonujące jakąś czynność są zamykane w funkcje, które nie wymagają żadnych argumentów 28

Funkcje: elementy algorytmu wykonujące określone obliczenia dla zadanych danych wejściowych (argumentów). 29

Funkcje: elementy algorytmu wykonujące określone obliczenia dla zadanych danych wejściowych (argumentów). 30

Funkcje: elementy algorytmu wykonujące określone obliczenia dla zadanych danych wejściowych (argumentów). 31

Wejście/wyjście: interface dostarczania danych do programu i przekazywania wyników na zewnątrz programu. 32

Materiały Jerzy Mieścicki, Wstęp do informatyki nie tylko dla informatyków Dawid Harel, Rzecz o istocie informatyki. Algorytmika http://brain.fuw.edu.pl/edu/ti:programowanie_z_pythonem 36