PODSTAWY INFORMATYKI Co dzisiaj?



Podobne dokumenty
Wstęp do informatyki- wykład 2

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA

PODSTAWY ALGORYTMIKI

Schematy blokowe. Algorytmy Marek Pudełko

Efektywność algorytmów

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

Podstawy Informatyki. Sprawność algorytmów

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

Definicje. Algorytm to:

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

Technologie informacyjne - wykład 12 -

Algorytm. a programowanie -

Zaawansowane algorytmy i struktury danych

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

Algorytm. Krótka historia algorytmów

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

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

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

1 Wprowadzenie do algorytmiki

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Temat 20. Techniki algorytmiczne

Wprowadzenie do algorytmiki

Programowanie i techniki algorytmiczne

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytmy i schematy blokowe

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

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

INFORMATYKA SORTOWANIE DANYCH.

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

Metodyki i techniki programowania

Wykład 2. Poprawność algorytmów

Metodyki i techniki programowania

Algorytm. Krótka historia algorytmów

ALGORYTMY I PROGRAMY

TEORETYCZNE PODSTAWY INFORMATYKI

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

Algorytmika i pseudoprogramowanie

Technologia Informacyjna

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Zapis algorytmów: schematy blokowe i pseudokod 1

Podstawy Informatyki. Algorytmy i ich poprawność

Programowanie komputerów

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Programowanie w VB Proste algorytmy sortowania

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

Sortowanie - wybrane algorytmy

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

Informatyka 1. Złożoność obliczeniowa

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Zapisywanie algorytmów w języku programowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

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

Program nauczania informatyki w gimnazjum Informatyka dla Ciebie. Modyfikacja programu klasy w cyklu 2 godzinnym

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

Technologia informacyjna Algorytm Janusz Uriasz

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Algorytmy i struktury danych

Przede wszystkim autor ma oficjalne prawo do autorstwa utworu, rozpowszechniania go pod wyznaczonym pseudonimem, kontroli nad

Wykład z Technologii Informacyjnych. Piotr Mika

Wprowadzenie do złożoności obliczeniowej

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

Wstęp do programowania

Wstęp do Informatyki. Klasyfikacja oprogramowania

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

Zasady analizy algorytmów

Wstęp do informatyki- wykład 1 Systemy liczbowe

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Innowacja pedagogiczna dla uczniów pierwszej klasy gimnazjum Programowanie

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy, reprezentacja algorytmów.

Podstawy Programowania Algorytmy i programowanie

Języki i metodyka programowania

Programowanie w języku Python. Grażyna Koba

INFORMATYKA

WYMAGANIA EDUKACYJNE

1. Analiza algorytmów przypomnienie

Podstawy i języki programowania

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Programowanie strukturalne

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

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

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

Algorytmy i struktury danych. wykład 2

Podstawy programowania

Algorytm. Algorytmy Marek Pudełko

Algorytmy i Struktury Danych.

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

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

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Transkrypt:

PODSTAWY INFORMATYKI Co dzisiaj? Algorytm, algorytmika Sortowanie Złożoność obliczeniowa Oprogramowanie Licencje 1

Algorytm i algorytmika Algorytm skończony, uporządkowany zbiór jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Słowo "algorytm" pochodzi od nazwiska matematyka perskiego أبو ( al-chorezmi (IX wiek) Muhammed ibn Musa.(عبد محمدبنموسىالخوارزمي Algorytmika dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów. Algorytmy sposoby zapisywania Zapis w postaci ciągu kroków (języka potocznego: jeden krok - jedna operacja) Zapis w postaci graficznej - schematy blokowe Zapis w języku programowania Algorytm wyrażony w jakimś języku programowania nazywa się programem. Algorytmy powinny być tak przedstawiane, aby było możliwe ich jednoznaczne odczytanie i zastosowanie. 2

Schematy blokowe Schematy blokowe są tzw. metajęzykiem. Jest to język bardzo ogólny; służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku programowania. Magiczne Bloczki EDGE Diagrammer 5.5 EDraw Flowchart Software 1.6.3 Schematy blokowe Częściami składowymi schematów blokowych są proste figury geometryczne (prostokąt, romb, koło, równoległobok itd.). W tych figurach umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem (np. symbolem instrukcji przypisania może być ":=" jak w Pascalu lub "=" tak, jak w C). 3

Schematy blokowe Jeśli tworząc schemat nie jesteśmy jeszcze zdecydowani w jakim języku będziemy pisali nasz program lub tworzymy schemat dla kogoś, to lepiej jest stosować notację bardziej symboliczną, np. instrukcję przypisania zapisywać jako strzałkę skierowaną od wartości przypisywanej do zmiennej. Licznik 0 Opis schematów Poszczególne elementy schematu łączy się za pomocą strzałek. W większości przypadków blok ma jedną strzałkę wchodzącą i jedną wychodzącą, lecz są także wyjątki. 4

Początek/koniec algorytmu W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oraz dokładnie jedna figura z napisem "Stop". Blok symbolizujący początek algorytmu ma dokładnie jedną strzałkę wychodzącą a blok symbolizujący koniec ma jedną strzałkę wchodzącą. Najczęściej popełnianym błędem w schematach blokowych jest umieszczanie kilku stanów końcowych, zależnych od sposobu zakończenia programu. Jest to niedopuszczalne, w programie mamy dokładnie jedną instrukcję "end." START STOP Opis schematów Figura oznaczająca proces. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. Proces ma dokładnie jedną strzałkę wchodzącą i dokładnie jedną strzałkę wychodzącą. 5

Opis schematów Romb symbolizuje blok decyzyjny. Umieszcza się w nim jakiś warunek (np. "x>2"). Z dwóch wybranych wierzchołków rombu wyprowadzamy dwie możliwe drogi: gdy warunek jest spełniony (strzałkę wychodzącą z tego wierzchołka należy opatrzyć etykietą "Tak") oraz gdy warunek nie jest spełniony (etykieta Nie ). Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące. Opis schematów Równoległobok jest stosowany do odczytu lub zapisu danych. W jego obrębie należy umieścić stosowną instrukcję np. Read(x) lub Write(x) (można też stosować opis słowny np. "Drukuj x na ekran"). Figura ta ma dokładnie jedną strzałkę wchodzącą i jedną wychodzącą. 6

Opis schematów Proces, który został już kiedyś zdefiniowany. Można porównać do procedury, którą definiuje się raz w programie, by następnie móc ją wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie procesu. Jedno wejście i jedno wyjście. Opis schematów Koło symbolizuje tzw. łącznik stronicowy. Przeskok" z jednego miejsca na kartce na inne (np. by nie krzyżować strzałek). Umieszczamy w jednym miejscu łącznik z określonym symbolem w środku (np. cyfrą, literą) i doprowadzamy do niego strzałkę. Następnie w innym miejscu kartki umieszczamy drugi łącznik z takim samym symbolem w środku i wyprowadzamy z niego strzałkę. Łącznik jest często porównywany do teleportacji (z jednego miejsca na kartce do drugiego). Łączniki występują więc w parach, jeden ma tylko wejście a drugi wyjście. A A 7

Opis schematów Łącznik międzystronicowy. Działa analogicznie jak łącznik stronicowy, lecz nie w obrębie strony. Przydatne w złożonych algorytmach, które nie mieszczą się na jednej kartce. Uwaga: jeśli stosujemy oba typy łączników w schemacie, to najlepiej jest stosować liczby do identyfikowania jednych i litery do drugich. Dzięki temu nie dojdzie do pomyłki. 1 1 Iteracja działanie w pętli?! Iteracja to technika algorytmiczna polegająca na wykonaniu tej samej instrukcji n razy. Iteracja oszczędza czas programisty (nie trzeba wpisywać instrukcji n razy, zależnie od liczby zmiennych). Liczba powtórzeń w iteracji jest zwykle z góry określona lub zależy od spełnienia określonego warunku. 8

Silnia Wersja iteracyjna Wersja rekurencyjna silnia(0)=1 silnia(n)=n*silnia(n-1) Sortowanie bąbelkowe (bubblesort) Sprawdzamy całą tablicę od końca, jeżeli trafimy na parę elementów, w której większy poprzedza mniejszy, to zamieniamy je miejscami i znów zaczynamy przeszukiwać tą tablicę od końca. Czynność powtarzamy tak długo aż podczas sprawdzania całej tablicy, nie zajdzie ani jedna zamiana elementów. Realizuje się to najczęściej za pomocą zmiennej logicznej. Algorytm nosi nazwę bąbelkowego, gdyż najmniejsze liczby "wypływają" z dołu tablicy na jej szczyt. 9

Sortowanie bąbelkowe (bubblesort) Przykład zastosowania dla nieuporządkowanego ciągu liczb <<2, 4, 1, 3>>. Sortowanie bąbelkowe (bubblesort) Gdy ciąg wejściowy będzie posortowany, to algorytm wykona tylko jeden przebieg. Najgorszym zestawem danych dla tego algorytmu jest ciąg posortowany nierosnąco. 10

Sortowanie przez zliczanie (countingsort) Zaleta: działa w czasie liniowym (jest szybki) Wada: może sortować wyłącznie liczby całkowite Sposób sortowania: Polega na liczeniu, ile razy dana liczba występuje w ciągu, który mamy posortować. Następnie wystarczy utworzyć nowy ciąg, korzystając z danych zebranych wcześniej. Sortowanie przez zliczanie (countingsort) Przykład: posortować ciąg: 3,6,3,2,7,1,7,1. Po zliczeniu (w jednym kroku) operujemy danymi na temat liczności poszczególnych liczb: Liczba 1 występuje 2 razy Liczba 2 występuje 1 raz Liczba 3 występuje 2 razy Liczba 4 występuje 0 razy Liczba 5 występuje 0 razy Liczba 6 występuje 1 raz Liczba 7 występuje 2 razy Na podstawie tych danych tworzymy ciąg: 1,1,2,3,3,6,7,7. Jest to ciąg wejściowy, ale posortowany. 11

Sortowanie przez zliczanie (countingsort) Proces zliczania odbył się w jednym kroku Nie doszło do ani jednej zamiany elementów Proces tworzenia tablicy wynikowej odbył się w jednym kroku Do przechowywania liczby wyrazów ciągu musimy użyć tablicy, o liczbie elementów równej największemu elementowi ciągu Sortować można jedynie liczby całkowite Schematy blokowe pętla FOR x a x b NIE TAK Blok instrukcji x następna wartość x for ((x=$a; $x<=$b; x++)) do {blok instrukcji} done 12

Schematy blokowe pętla WHILE TAK x>a Blok instrukcji NIE while [ x gt a ] do {blok instrukcji} done Wykonywanie w przypadku spełnienia warunku. Zapętlenie algorytmu Zapętlenie algorytmu to błąd w projektowaniu kroków algorytmu polegający na pominięciu warunku (np. licznika), który kończy działanie w pętli (iterację). W takiej sytuacji iteracja trwa w nieskończoność, gdyż program wykonujący działanie nie wie kiedy ma ją przerwać. 13

Translacja TRANSLACJA to tłumaczenie programu na język wewnętrzny komputera, wykonywane za pomocą wyspecjalizowanego programu, tzw. translatora. Translacja Kompilacja Interpretacja Typy translacji Kompilacja i interpretacja KOMPILACJA - przetłumaczenie programu w całości, tak by mógł on być wykonany przez komputer przy każdorazowym uruchomieniu. Raz skompilowany program nie wymaga już powtórnej operacji tłumaczenia. Do wykonania kompilacji służą programy narzędziowe - kompilatory. INTERPRETACJA - tłumaczenie programu tworzonego w jednym z języków programowania instrukcja po instrukcji, tak by każda wywołana instrukcja była wykonana przez komputer. Tłumaczenie następuje każdorazowo przy uruchomieniu programu. 14

Inne pojęcia PROGRAMOWANIE STRUKTURALNE to rozbicie działania programu na procedury (podprogramy), z których każda odpowiada za rozwiązanie określonego problemu. PROCEDURA to wyodrębniona część programu, mająca jednoznaczną nazwę i ustalony sposób wymiany danych z innymi częściami programu. PARAMETRY to zmienne, poprzez które procedura komunikuje się z innymi fragmentami programu. Parametry formalne to zmienne wpisane w procedurę, które zastępowane są przez konkretne dane (parametry aktualne) w momencie wywołania programu. Złożoność obliczeniowa Jest to jeden z najważniejszych parametrów charakteryzujących algorytm. Decyduje on o efektywności całego programu. Podstawowymi zasobami systemowymi uwzględnianymi w analizie algorytmów są czas działania oraz obszar zajmowanej pamięci. Na złożoność czasową składają się dwie wartości: pesymistyczna, czyli taka, która charakteryzuje najgorszy przypadek działania oraz oczekiwana. Najczęściej algorytmy mają złożoność czasową proporcjonalną do funkcji: log(n)- złożoność logarytmiczna n - złożoność liniowa nlog(n) - złożoność liniowo-logarytmiczna n 2 - złożoność kwadratowa n k - złożoność wielomianowa 2 n - złożoność wykładnicza n! - złożoność wykładnicza, ponieważ n!>2n już od n=4 15

Rzędy wielkości funkcji Służą do opisu czasu działania algorytmu. Istnieją 3 notacje: Notacja O (omikron) Notacja Θ (theta) Notacja Ω (omega) Notacja O (omikron) Jest to ograniczenie funkcji od góry. Gdy mówimy, że pewna f(n) funkcja jest rzędu g(n), co zapisujemy f(n)=o(g(n)), to znaczy, że istnieje taki argument n 0, od którego począwszy, dla każdego niemniejszego od n 0 wartości funkcji f(n) są niewiększe od wartości funkcji g(n) z dokładnością do stałej c. Na prawo od punktu od n 0 funkcja f(n) znajduje się pod funkcją c*g(n), czyli jest przez nią ograniczona z góry. Jest to asymptotyczna granica górna. Służy do szacowania czasu działania algorytmu w przypadku pesymistycznym. 16

Notacja Θ (theta) Notacja ta ogranicza funkcję f(n) od góry, tak jak notacja O oraz dodatkowo od dołu. Oznacza to, że jeżeli f(n)=θ(g(n)), to istnieje taki argument n 0, od którego począwszy dla każdego argumentu od niego niemniejszego: wartości funkcji f(n) są niewiększe od wartości funkcji g(n) z dokładnością do stałej c 1 wartości funkcji f(n) są niemniejsze od wartości funkcji g(n) z dokładnością do stałej c 2 Na prawo od punktu od n 0 funkcja f(n) znajduje się pod funkcją c 1 *g(n), czyli jest przez nią ograniczona z góry i nad funkcją c 2 *g(n), czyli jest przez nią ograniczona z dołu Jest to asymptotyczne oszacowanie dokładne. Notacja Ω (omega) Notacja ta ogranicza funkcję f(n) od dołu. Oznacza to, że jeśli f(n)=ω(g(n)), to istnieje taki argument n 0, od którego począwszy dla każdego argumentu od niego niemniejszego funkcja f(n) jest niemniejsza niż g(n) z dokładnością do stałej c. Na prawo od punktu od n 0 funkcja f(n) znajduje się nad funkcją c*g(n). Jest to asymptotyczna granica dolna. Służy więc do oszacowania działania algorytmu w najlepszym przypadku. 17

Oprogramowanie Oprogramowanie tworzą programiści w procesie programowania. Oprogramowanie jako przejaw twórczości jest chronione prawem autorskim. Twórcy zezwalają na korzystanie z niego na warunkach określanych w licencji. Rodzaje licencji Licencje własnościowe (ang. proprietary licences, closed source - kodźródłowy niedostępny) Wolne oprogramowanie (open source, kod źródłowy jest udostępniony) Domena publiczna (dzieła, z których nastąpiło zrzeczenie się domniemanego autorstwa przez ich twórcę, dane ogółowi do dyspozycji, de facto brak licencji) Nieznana licencja 18

Licencje własnościowe Freeware (użytek bez ograniczeń, (zwykle) bez prawa do deassemblacji/dekompilacji binariów) Demo (wersja demonstracyjna) Trialware (czasowe ograniczenia, zaimplementowana pełna funkcjonalność lecz (najczęściej) na pewnych zasadach) Shareware (programy na licencji testowej, funkcjonalność (zwykle) zaimplementowana, lecz niedostępna do czasu rejestracji) Donation-ware (można "odpłacić" twórcy przekazując darowiznę/podarki, np. postcardware dobrowolne wysłanie pocztówki, beerware - funduje się piwo i wiele innych) Abandonware (często NIEUZNAWANA PRAWNIE!, programy niewspierane już traktowane jako porzucone, a więc nieprzynoszące zysków autorowi) Firmware (licencja na oprogramowanie układowe, modyfikacja zwykle zabroniona) Adware (darmowe, pokazujące reklamy) Wolne oprogramowanie Licencje Copyleft ((na ogół) dzieła pochodne muszą być na tej samej licencji, zakaz rozpowszechniania bez źródeł) - przy redystrybucji programu nie można wprowadzać ograniczeń odmawiając wolności innym. General Public License (w różnych rewizjach tejże licencji, również tzw. Lesser /Library GPL) zasady licencyjne określone przez konsorcjum Free Software Foundation, zakazujące redystrybucji oprogramowania w formie czysto binarnej; udostępniane wraz z postacią źródłową. Licencje permisywne (brak ograniczeń nakładanych na licencjonowanie dzieł pochodnych) np. trójklauzulowa licencja BSD (bez konieczności reklamowania twórcy dzieła). 19

Dodatkowo Pełna wersja program komercyjny bez żadnych ograniczeń. Rozprowadzanie w innych mediach (np. w internecie) jest niezgodne z prawem Licencja jednostanowiskowa (one-site licence) instalacja nabytego oprogramowania tylko w jednym komputerze. Licencja jednostanowiskowa, jak każda, nie zabrania sporządzenia kopii zapasowej oprogramowania. Licencja grupowa (site licence) użytkowanie oprogramowania w sieci lub w zestawie komputerów: szkoła, pracownia; określenie maksymalnej liczby stanowisk. Rodzaje licencji Licencja GPL (General Public Licence) zasady licencyjne określone przez konsorcjum Free Software Foundation, zakazujące redystrybucji oprogramowania w formie czysto binarnej; udostępniane wraz z postacią źródłową. Licencja typu Public Domain licencja dobroczynna czyniąca z oprogramowania własność ogółu, w myśl której autor lub autorzy oprogramowania zrzekają się praw do upowszechniania oprogramowania na rzecz ogółu użytkowników. Nieznana licencja program nie posiadający pliku licencyjnego lub innej formy dokumentu określającego sposób jego licencjonowania. 20

Oprogramowanie Wersje testowe: alfa testowanie składników, beta testowanie całego systemu przez użytkowników; często "final beta" są darmowe, ale z błędami. Dziękuję za uwagę 21