Temat 1: Algorytmika i Algorytmy.

Podobne dokumenty
5 lekcji o algorytmach - Co to jest algorytm?

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

KARTA PRACY UCZNIA. Klasa II

Definicje. Algorytm to:

Podstawy Programowania Algorytmy i programowanie

Algorytm. Krótka historia algorytmów

Algorytm. Algorytmy Marek Pudełko

Algorytm. a programowanie -

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytmy i schematy blokowe

Technologie informacyjne - wykład 12 -

Wprowadzenie do algorytmiki

Zapisywanie algorytmów w języku programowania

Wykład z Technologii Informacyjnych. Piotr Mika

Algorytmy, reprezentacja algorytmów.

1 Wprowadzenie do algorytmiki

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

POLITECHNIKA OPOLSKA

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

POLITECHNIKA OPOLSKA

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

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VI wg podstawy programowej z VIII 2008r.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

Algorytmika i pseudoprogramowanie

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

Sposoby przedstawiania algorytmów

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

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

Wstęp do informatyki- wykład 2

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI W KLASIE III GIMNAZJUM

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Definicja algorytmu brzmi:

O ALGORYTMACH I MASZYNACH TURINGA

I semestr WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VI. Wymagania na ocenę dopuszczającą. Dział programu: Liczby naturalne

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VII SZKOŁY PODSTAWOWEJ

WYMAGANIA NA POSZCZEGÓLNE OCENY MATEMATYKA KL.VII

Matematyka z kluczem. Szkoła podstawowa nr 18 w Sosnowcu. Przedmiotowe zasady oceniania klasa 7

MATEMATYKA. klasa VII. Podstawa programowa przedmiotu SZKOŁY BENEDYKTA

SZCZEGÓŁOWE WYMAGANIA EDUKACYJNE DLA KLAS 4-6 SP ROK SZKOLNY 2015/2016

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

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI W KLASIE V

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Programowanie w języku Python. Grażyna Koba

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

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY Z MATEMATYKI W KLASIE IV

Kryteria ocen z matematyki w klasie IV

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Liczby. Wymagania programowe kl. VII. Dział

Programowanie i techniki algorytmiczne

Wymagania edukacyjne z matematyki w klasie VII szkoły podstawowej

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

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY 7SP. V. Obliczenia procentowe. Uczeń: 1) przedstawia część wielkości jako procent tej wielkości;

Programowanie komputerów

ALGORYTMY I PROGRAMY

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik

Temat 20. Techniki algorytmiczne

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

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

MATEMATYKA Z PLUSEM DLA KLASY VII W KONTEKŚCIE WYMAGAŃ PODSTAWY PROGRAMOWEJ. programowej dla klas IV-VI. programowej dla klas IV-VI.

Algorytm. Krótka historia algorytmów

Wymagania edukacyjne z matematyki : Matematyka z plusem GWO

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VII

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Metody numeryczne w przykładach

Wymagania edukacyjne z matematyki w klasie III gimnazjum

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

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

WYMAGANIA NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA KL. 5

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI W KLASIE I GIMNAZJUM

Matematyka Matematyka z pomysłem Klasa 5 Szkoła podstawowa 4 6

podstawowe (ocena dostateczna) 3 Dział 1. Liczby naturalne i dziesiętne. Działania na liczbach naturalnych i dziesiętnych Uczeń:

Matematyka Matematyka z pomysłem Klasa 5 Szkoła podstawowa 4 6

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE IV

Wymagania edukacyjne z matematyki dla klasy VII

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

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

Wymagania edukacyjne z matematyki na poszczególne do klasy VII szkoły podstawowej na rok szkolny 2018/2019

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA UCZNIÓW KLAS IV-VI

SZKOŁA PODSTAWOWA NR 1 IM. ŚW. JANA KANTEGO W ŻOŁYNI. Wymagania na poszczególne oceny klasa VII Matematyka z kluczem

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

EGZAMIN ÓSMOKLASISTY od roku szkolnego 2018/2019

Wymagania na poszczególne oceny szkolne KLASA V

I. Podstawy języka C powtórka

2. Graficzna prezentacja algorytmów

Wymagania edukacyjne z matematyki w klasie IV

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

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

Egzamin gimnazjalny z matematyki 2016 analiza

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Matematyka klasa 7 Wymagania edukacyjne na ocenę śródroczną.

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE V. Temat lekcji Punkty z podstawy programowej z dnia 14 lutego 2017r.

Transkrypt:

Temat 1: Algorytmika i Algorytmy. Algorytm to skończony zbiór jasno zdefiniowanych czynności koniecznych do wykonania pewnego zadania w skończonej liczbie kroków. Ma on przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Algorytm może zostać zaimplementowany 1 w postaci programu komputerowego lub układu elektronicznego. Kiedy podczas tego procesu programiści popełnią błąd (ang. bug), może to doprowadzić do poważnych skutków. Dla przykładu błędy w implementacji algorytmów bezpieczeństwa mogą pozwolić hackerowi na włamanie do systemu. Algorytm często porównuje się do przepisu kulinarnego. Dla przykładu, aby zrobić bigos należy w określonej kolejności oraz odstępach czasowym (imperatyw czasowy) dodawać właściwe rodzaje kapusty i innych składników. Może istnieć kilka różnych przepisów dających na końcu bardzo podobną potrawę. Główna różnica między algorytmem kulinarnym i komputerowym tkwi w zdolności jego wykonawcy do zrozumienia języka przepisu. Kucharz jest dużo bardziej inteligentny od komputera. Wiele algorytmów jasnych dla człowieka, staje się niezrozumiałe dla maszyny. W niektórych krajach, jak USA, algorytmy mogą zostać opatentowane 2, jeżeli dają się zaimplementować w jakimś praktycznym celu. Opatentowanie algorytmów spowalnia rozwój informatyki, bo jeden producent może uzyskać monopol, np. na pisanie oprogramowania tworzącego pewne typy plików (np. GIF). Wiele koncernów komputerowych prowadzi między sobą prawnicze spory dotyczące własności do niektórych patentów. 1 Implementacja (realizacja) to działanie polegające na szczególnym zastosowaniu ogólnej teorii lub standardu. Jedna teoria lub standard może mieć wiele różnych implementacji różniących się użytymi rozwiązaniami (na przykład algorytmem) i stopniem zgodności. Przykładem implementacji standardu HTML są różne przeglądarki internetowe, edytory HTML a nawet czytniki poczty elektronicznej które potrafią wyświetlać wiadomości w tym formacie. 2 Patent - oficjalny dokument wydawany przez urzędy patentowe, który umożliwia zastrzeżenie prawa do zarobkowego wykorzystania danego wynalazku przez osoby fizyczne lub prawne składające wniosek o jego zastrzeżenie. W języku codziennym patentem nazywa się także sam opatentowany wynalazek. Zastrzeżenie patentowe umożliwia prawne ściganie osób, które w celach zarobkowych wykorzystują bez zgody właściciela dany patent. 1

Algorytmy komputerowe Implementacja Komputery przetwarzają przekazywane im informacje z wykorzystaniem pewnych algorytmów. Program jest algorytmem zapisanym w języku zrozumiałym dla maszyny (asemblerze 3 ). Zwykle algorytmy pracują na pewnych danych wejściowych i uzyskują z nich dane wyjściowe. Informacje zapisane w pamięci maszyny traktuje się jako jej stan wewnętrzny. Niektóre algorytmy mają za zadanie wyłącznie przeprowadzanie komputera z jednego stanu wewnętrznego do innego. Każdy algorytm komputerowy musi być wyrażony w bardzo rygorystycznie zdefiniowanym języku. Ludzie często komunikując się przesyłają między sobą informację wieloznaczne. Komputery mogą reagować tylko na całkowicie jednoznaczne instrukcje. Jeżeli dany algorytm da się wykonać na maszynie o dostępnej mocy obliczeniowej i pamięci oraz akceptowalnym czasie, to mówi się że jest obliczalny. Poprawne działanie większości algorytmów implementowanych w komputerach opiera się na kolejnej realizacji pewnego zestawu warunków. Jeżeli, któryś z nich nie zostanie spełniony, to program kończy się komunikatem błędu. Czasami podczas implementacji algorytmu ważny warunek zostanie pominięty Dla przykładu, mamy program dzielący przez siebie dwie liczby. Użytkownik każe mu dzielić przez zero. Aplikacja bez sprawdzenia warunku dzielnik nierówny zero zawiesi się w takiej sytuacji. 3 Asembler to język programowania, w którym zasadniczo jedno polecenie odpowiada jednemu rozkazowi procesora. Jest to język powstały na bazie języka maszynowego poprzez zastąpienie kodów maszynowych pisanych binarnie lub szesnastkowo ich mnemonicznymi odpowiednikami. Dzięki zamianie liczb na tzw. mnemoniki można pisać programy w miarę zrozumiałe dla człowieka, a jednocześnie bezpośrednio tłumaczone na kod maszynowy procesora zapewniając pełną kontrolę programową. Pierwszym asemblerem był skonstruowany przez Konrada Zuse - układ elektromechaniczny przygotowania taśmy perforowanej z programem dla maszyny Z4 (moduł Planfertigungsteil). Pozwalał na wprowadzanie i odczyt rozkazów i adresów w sposób zrozumiały dla człowieka. 2

Klasyfikacja Badaniem algorytmów zajmuje się algorytmika. Istnieje wiele różnych sposobów podziału algorytmów na grupy. Problem ten wzbudza kontrowersje. Podstawowe paradygmaty tworzenia algorytmów komputerowych: dziel i zdobywaj dzielimy problem na kilka mniejszych i je znowu dzielimy, aż ich rozwiązaniach nie staną się oczywiste (rekurencja 4 ), programowanie dynamiczne problem dzielony jest na kilka, ważność każdego z nich jest oceniana i po pewnym wnioskowaniu wyniki analizy niektórych prostszych zagadnień wykorzystuje się do rozwiązania głównego problemu, metoda zachłanna nie analizujemy podproblemów dokładnie, tylko wybieramy najbardziej obiecującą w tym momencie drogę rozwiązania, programowanie liniowe oceniamy rozwiązanie problemu przez pewną funkcję jakości i szukamy jej minimum, poszukiwanie i wyliczanie kiedy przeszukujemy zbiór danych aż do odnalezienie rozwiązania, probabilistyczne rozwiązanie algorytm działa poprawnie z bardzo wysokim prawdopodobieństwem, ale wynik nie jest pewny, heurystyka 5 człowiek na podstawie swojego doświadczenia tworzy algorytm, który działa w najbardziej prawdopodobnych warunkach, rozwiązanie zawsze jest przybliżone. Najważniejsze techniki implementacji algorytmów komputerowych proceduralność algorytm dzielimy na szereg podstawowych procedur, wiele algorytmów dzieli wspólne biblioteki standardowych procedury, z których są one wywoływane w razie potrzeby, praca po kolei wykonywanie kolejnych procedur algorytmu, według kolejności ich wywołań, na raz pracuje tylko jedna procedura, praca równoległa wiele procedur wykonywanych jest w tym samym czasie, wymieniają się one danymi, rekurencja procedura wywołuje sama siebie, aż do uzyskania wyniku lub błędu, objektowość procedury i dane łączymy w pewne obiekty reprezentujące najważniejsze elementy algorytmu oraz stan wewnętrzny wykonującego je urządzenia. Przykłady 4 Rekursja albo rekurencja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w programowaniu i w matematyce odwoływanie się (np. funkcji lub definicji) do samej siebie. 5 Heurystyka - metoda znajdowania rozwiązań dla której nie ma gwarancji znalezienia rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązań tych używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny, lub gdy nie jest nawet znany (np. przy przewidywaniu pogody). Metodę używa się też często do znajdowania rozwiązań przybliżonych, na podstawie których później wylicza się ostateczny rezultat pełnym algorytmem. 3

algorytm Euklidesa algorytmy sortowania algorytmy kompresji algorytmy sztucznej inteligencji algorytmy przeszukiwania drzew: min-max algorytm unifikacji algorytmy kryptograficzne algorytm genetyczny algorytm kwantowy algorytm Luhna Błędy w implementacji Kiedy komputery stały się powszechne, algorytmy zaczęto masowo wykorzystywać do rozwiązywania problemów życia codziennego. Dzisiaj w miliardach maszyn cyfrowych działają niezliczone zastępy umieszczonych w nich programów. Wiele z nich oblicza stan konta w banku, inne kompresują dźwięk podczas rozmowy telefonicznej itp. Jednak rewolucja cyfrowa niesie ze sobą niebezpieczeństwo błędnych implementacji algorytmów. Kody źródłowe programów zabezpieczających większość dzisiejszych systemów przed niepowołanym atakiem mogą okazać się pełne błędów. W takiej sytuacji są one narażone na atak cyberterrorystyczny na światową skalę. Ratunkiem jest tutaj stosowanie jawnych implementacji algorytmów, których kod źródłowy jest otwarty dla każdego. W ten sposób zwiększa się szansa na odnalezienie błędów i ich szybką naprawę. Nie mniej ważne jest stałe aktualizowanie najważniejszych programów przez administratorów ważnych sieci komputerowych. Algorytmy poza komputerami Implementacja algorytmu w ogólności oznacza występowanie pewnego podobieństwa pomiędzy algorytmem opisanym w ludzkim języku do fizycznego zjawiska lub procesu. Czasami algorytm może być podstawą budowy przez ludzi urządzenia, jak np. komputer. Jednak o implementacji możemy mówić również, kiedy pewien system zachowuje się podobnie do algorytmu. Dla przykładu mózg ptaka implementuje arytmetykę w postaci sieci neuronowej. Dzięki temu zwierzę jest w stanie porównywać pewne odstępy czasu. W przypadku maszyn algorytm może zostać zaimplementowany jako pewna sieć połączeń elektrycznych, pneumatycznych bądź mechanicznych. Przykładem może być tutaj analogowy regulator obrotów z pierwszych silników parowych, realizujący algorytm P (proporcjonalny). Przy takim podejściu sukces nie oznacza zatrzymanie algorytmu, lecz utrzymywanie pewnego stanu systemu. Możemy np. powiedzieć, że algorytm utrzymywania życia działa poprawnie, aż do śmierci organizmu. Poprawny algorytm ma utrzymywać pewne parametry żywej istoty (np. temperaturę) w pewnym zakresie. 4

Przyszłość algorytmów Ograniczenia algorytmów Prawie każdy algorytm komputerowy musi kiedyś zakończyć swoją pracę. Oznacza to, że problem musi być rozwiązany z wykorzystaniem dostępnych zasobów obliczeniowych w skończonym czasie. Jeżeli algorytm dla coraz większego zbioru danych powoduje wzrost czasu obliczeń szybciej niż to wynikałoby z funkcji wielomianowej, to mówi się że nie jest obliczalny. Przykład algorytmu Wyobraź sobie że masz nieposortowaną listę przypadkowych liczb. Masz znaleźć największą z nich. Istnieje wiele algorytmów rozwiązujących ten problem. Jeden z najszybszych można przedstawić listę poleceń: 1. Rozpocznij pracę 2. Stwórz rejestr przechowujący bieżącą wartość elementu tabeli i wczytaj do niego pierwszy element listy, jeżeli to się nie uda wypisz na wyjście wartość błędną. 3. Stwórz rejestr przechowujący największą liczbę, nadaj jej bieżącą wartość elementu tabeli. Początek pętli - wczytaj kolejny element tabeli, a jeżeli to się nie uda zakończ pętlę. Jeżeli bieżąca wartość elementu tabeli, jest większa od rejestru największej liczby, to wpisz ją do tego rejestru. Powróć do początku pętli. 4. Wypisz na wyjście wartość z rejestru największej liczby. 5. Zwolnij rejestr bieżącej wartości oraz największej liczby i zakończ pracę wypisując na wyjście wartość sukcesu. Historia algorytmów Początki Słowo algorytm pochodzi od nazwiska arabskiego matematyka z IX wieku Muhammada ibn Musa Alchwarizmiego. Początkowo słowem algorism nazywano czynności konieczne do wykonywania obliczeń z użyciem dziesiętnego systemu liczbowego. Obecne znaczenie słowa algorytm jako zestawu ścisłych reguł powstało wraz z rozwojem matematyki i techniki. Wynalezienie zbiorów zasad pozwalających na obliczanie parametrów konstruowanych maszyn, stało się podstawą rewolucji przemysłowej zapoczątkowanej w końcu XVIII stulecia. Jednak dopiero zbudowanie maszyn, które same mogły realizować pewne proste algorytmy, stało się przełomem. Ogromnego postępu dokonał w tej dziedzinie w 1842 roku Charles Babbage, który na podstawie swoich doświadczeń sformułował ideę maszyny analitycznej zdolnej do realizacji złożonych algorytmów matematycznych. 5

Rozwój maszyn liczących Wraz z wynalezieniem pod koniec XIX wieku kart perforowanych elektro-mechaniczne maszyny osiągnęły zdolność realizacji algorytmów przetwarzających ogromne zbiory danych. Karty perforowane stały się wejściem, z którego dane przetwarzały proste algorytmy sumujące. Jako wyjście służyły odpowiednie zegary. Ogromny postęp w tej dziedzinie zawdzięczamy firmie IBM, która zbudowała tego typu urządzenia, aby policzyć wszystkich mieszkańców USA. W XX wieku postęp elektroniki pozwolił na budowę maszyn analogowych potrafiących w swoim wnętrzu odtwarzać pewne algorytmy matematyczne. Mogły one dokonywać operacji arytmetycznych oraz różniczkować i całkować. Komputery Kluczowym stał się moment, w którym badacze zdali sobie sprawę, że maszyny najlepiej radzą sobie z szybkim powtarzaniem bardzo prostych operacji. Algorytm wyrażony w najprostszym z możliwych języków okazał się dla urządzeń najlepszy. Prowadzone podczas II wojny światowej prace kryptologów doprowadziły do zbudowania maszyn łamiących szyfry. Największe zasługi miał tutaj Alan Turing 6. Badacz ten podczas prac nad algorytmami szyfrującymi, zdał sobie sprawę, że każdy z nich da się sprowadzić do zestawu instrukcji realizowanych przez pewną teoretyczną maszynę. Miała ona zdolność do czytania i pisania poleceń z nieskończonej taśmy. Jej rozkazy mogły zawierać polecenia przesunięcia się o ileś kroków głowicy, zapisu/odczytu w jakimś miejscu taśmy nowej instrukcji. Podług tej idei zbudowano pierwsze komputery. Posługiwały się algebrą Boole'a oraz binarnym systemem liczbowym. Kolejne rozkazy były odczytywane z kart perforowanych, a wyniki pojawiały się na świetlnych ekranach bądź w wydrukach. Okazało się, że tak proste maszyny były w stanie realizować bardzo złożone algorytmy matematyczne, jak np. obliczanie trajektorii pocisków czy rakiet. Dzisiaj komputery są powszechne oraz tanie i przez to implementacja w nich właściwych algorytmów stała się bardzo ważną gałęzią gospodarki. Na całym świecie pracują miliony programistów zajmujących się doskonaleniem oprogramowania. 6 Alan Mathison Turing jeden z twórców informatyki. Turing znany jest z prac nad łamaniem niemieckich szyfrów w czasie II wojny światowej korzystając z osiągnięć kryptologów zespół, w którym pracował Turing odkrył zasadę pracy niemieckiej maszyny szyfrującej Enigma, co walnie przyczyniło się do zwycięstwa Sprzymierzonych w II wojnie światowej. Po wojnie zaprojektował jeden z pierwszych elektronicznych, programowanych komputerów. Był również pomysłodawcą tak zwanego testu Turinga eksperymentu będącego próbą formalnego zdefiniowania sztucznej inteligencji. Umarł śmiercią samobójczą w wyniku depresji spowodowanej przymusowym "leczeniem" hormonalnym jego homoseksualizmu. 6

TEMAT 2: Zapisywanie i analiza algorytmów. Aby zająć się pisaniem programów, należy nabyć pewnych umiejętności, do których na pewno trzeba zaliczyć: zdolność logicznego myślenia, jasnego formułowania problemów do rozwiązania, podawanie czytelnych i jednoznacznych odpowiedzi. Chęć nabycia tych umiejętności zmusza do tego, aby starannie wykonywać swoją pracę. Widać z tego, że pewne nawyki są przydatne nie tylko w informatyce, ale również w naszym codziennym życiu. Jeżeli potrafimy rozwiązywać problemy za pomocą komputera, wykorzystując języki programowania, to znaczy, że programujemy. Zanim jednak poznamy konkretny język programowania i zaczniemy pisać jakikolwiek program, należy nauczyć się posługiwania się algorytmami. Komputer jest tylko maszyną, którą wykorzystujemy do własnych celów, bo komputer nie myśli, lecz tylko wykonuje polecenia. Dlatego krok po kroku trzeba mu podać czynności, jakie ma wykonać. Co to jest algorytm? Wydaje się, że najbardziej przystępną definicją będzie określenie algorytmu jako przepisu prowadzącego do rozwiązania zadania, problemu. W przepisie tym podaje się opis czynności, które trzeba wykonać, oraz dane, dla których algorytm będzie określony. Co w takim przepisie może się znaleźć? Może być to np. przypisanie zmiennej określonej wartości (np. za x podstaw 3), wyświetlenie w danym momencie wyniku obliczeń, pobranie danych z dostępnej bazy danych. Mówimy, że podajemy instrukcje lub że będzie wykonana operacja. Dane (stałe, zmienne, parametry), które są przetwarzane za pomocą instrukcji, nazywamy obiektami. Wyróżnia się wiele obiektów - mogą to być liczby naturalne, rzeczywiste, znaki, słowa. Rozwiązanie dowolnego problemu polega na wykonaniu w określonej kolejności akcji na obiektach. Zbiór tych akcji nazywamy algorytmem. Jakie mogą być rodzaje algorytmów? iteracyjne - rodzaj algorytmu i programu, w których wielokrotnie wykonuje się pewne instrukcje, dopóki nie zostanie spełniony określony warunek, rekurencyjne - takie procedury, które w swojej definicji posiadają wywołanie samej siebie, sekwencyjne - instrukcje wykonywane są w porządku, w jakim zostały wprowadzone. W jaki sposób można przedstawić algorytm? Pierwszy i najprostszy to opis słowny, np. po lekcjach pójdę do kiosku i kupię gazetę. Innymi przykładami mogą być: podyktowanie przez telefon przepisu na zaparzenie herbaty czy wyjaśnianie koledze, jak należy rozwiązać zadanie z matematyki. Przykładów takich zachowań, kiedy widzimy, że występuje jakaś kolejność przewidywalnych działań, można podawać bardzo wiele. To są przykłady opisów algorytmicznych. Inny sposób to zapis algorytmu za pomocą schematu blokowego. Aby zapisać algorytm za pomocą takiego schematu, trzeba poznać stosowane symbole i ich znaczenie. Będziemy używać tzw. skrzynki - graficznego sposobu przedstawienia czynności wykonywanych przez komputer. Skrzynki te łączone są za pomocą strzałek. W ten sposób pokazujemy kolejność wykonywania akcji. Skrzynki i wskazują początek i koniec każdego algorytmu. Ze skrzynki wychodzi tylko jedna droga, do skrzynki wchodzi co najmniej jedno połączenie. 7

W skrzynce instrukcyjnej umieszcza się polecenia do wykonania (instrukcje) - podstawienie, obliczenie, wprowadzenie wartości. W skrzynce warunkowej umieszcza się warunek, który decyduje o wyborze dalszej drogi postępowania. Ze skrzynki wychodzą dwa połączenia: TAK (wybierane, gdy warunek jest spełniony), NIE (gdy warunek nie jest spełniony). W skrzynce wejścia/wyjścia umieszcza się wprowadzane dane lub wyprowadzane wyniki. Ze skrzynki wychodzi tylko jedno połączenie. Aby dobrze zrozumieć algorytmy, należy samemu spróbować ułożyć jakiś algorytm. Będzie ciekawiej, gdy zaczniemy zadawać pytania i algorytm rozbudowywać. Zacznijmy od najprostszego, książkowego algorytmu: chcę wyjść z domu i w zależności od pogody wezmę parasol lub nie. Opis słowny postępowania: przed wyjściem z domu sprawdzam jaka jest pogoda: jeżeli pada, zabieram parasol i wychodzę, jeśli nie pada, wychodzę. W tak prostym przypadku spotykamy się z sytuacją, w której występuje sprawdzenie warunku. Słowem, które będzie nas informować, że należy wprowadzić sprawdzenie warunku, jest słowo "jeśli". Opis za pomocą schematu blokowego: 8

W algorytmie tym wykorzystujemy skrzynkę warunkową, ponieważ mamy do czynienia z sytuacją, gdy tok dalszego postępowania zależy od dokonanego wyboru (dokładnie: zależy od pogody). Z innym przykładem prostego algorytmu mamy w sytuacji obliczania objętość prostopadłościanu o krawędziach długości: 3cm, 5cm, 8cm. Opis słowny postępowania: aby obliczyć objętość, należy pomnożyć przez siebie długości trzech krawędzi wychodzących z jednego wierzchołka; długości muszą mieć jednakowe miano. Z podanej treści zadania wynika, że mamy dane długości potrzebnych krawędzi w jednakowych jednostkach. Zadanie to nie sprawi nikomu żadnej trudności. Warto jednak pomyśleć, czy nie można byłoby ułożyć takiego algorytmu, za pomocą którego obliczymy objętość każdego prostopadłościanu. Opis słowny działania algorytmu: - podaj długość pierwszej krawędzi; a:= W przykładzie tym wykonywane czynności następują jedna po drugiej. Instrukcje wykonywane są w takim porządku, w jakim zostały zapisane. Jest to przykład algorytmu zapisanego w postaci sekwencji. - podaj długość drugiej krawędzi; b:= - podaj długość trzeciej krawędzi; c:= - wykonaj obliczenie V:= a*b*c - podaj wynik; V:= Spróbuj rozwiązać samodzielnie: Zapisz drugi algorytm za pomocą schematu blokowego. Jakimi cechami musi charakteryzować się dobry algorytm? 9

TEMAT 3: Instrukcje iteracyjne pętle. Spotykamy się często z takim sytuacjami, że musimy wykonywać pewną czynność aż do momentu, gdy odniesiemy sukces np. 'zrób dziesięć pompek', 'będziesz tak długo czytać wiersz, aż nauczysz się go na pamięć' lub 'dopóki będziesz siedzieć cicho, nie zapytam cię'. Z tego wynika, że możemy spotkać się z trzema sytuacjami: gdy musimy wykonać czynność bądź zadaną ilość razy, bądź do momentu spełnienia warunku. Wykonaj instrukcję r razy np. przeczytaj wiersz trzy razy. o Opis słowny działania algorytmu: Przeczytaj wiersz pierwszy raz. Przeczytaj wiersz drugi raz. Przeczytaj wiersz trzeci raz. W tym przypadku mamy algorytm zapisany w postaci sekwencji. o Schemat blokowy: Opis słowny działania algorytmu: 6. Przeczytaj wiersz trzy razy. 7. Czytaj wiersz. 8. Czy przeczytałeś wiersz trzy razy? a) jeśli tak, przejdź do kroku 4, b) jeśli nie, przejdź do kroku 2. 9. Przeczytałeś wiersz trzy razy. Występuje tutaj sprawdzenie warunku. Gdy warunek nie jest spełniony, czynność trzeba wykonać jeszcze raz. 10

Schemat blokowy: Powtarzaj wykonanie instrukcji aż do spełnienia warunku. Przykładem takiego algorytmu może być zmienione poprzednie zadanie: Czytaj wiersz tak długo, aż nauczysz się go na pamięć. Opis słowny działania algorytmu: Wykonywanie polecenia "przeczytaj wiersz" trwa tak długo, aż nauczysz się go na pamięć. 1.Przeczytaj wiersz. 2.Czy umiesz wiersz na pamięć? a) jeśli tak, przejdź do kroku 3, b) jeśli nie, przejdź do kroku 1. 3.Gratulacje, nauczyłeś się wiersza na pamięć! 11

Schemat blokowy: Dopóki warunek nie jest spełniony, wykonuj podane instrukcje. Są to polecenia typu: 'dopóki jest zimno, noś czapkę', 'dopóki nie poprawisz ocen, nie pójdziesz grać w piłkę', 'dopóki nie zdasz egzaminu, nie będziesz jeździć samochodem' itd. 2. Dopóki jest czerwone światło dla pieszych, stój i czekaj. Opis słowny działania algorytmu: 1.Stój. 2.Czy świeci się czerwone światło na przejściu dla pieszych? a) jeśli tak, przejdź do kroku 1, b) jeśli nie, przejdź do kroku 3. 3.Możesz przejść przez ulicę, zachowując ostrożność. Stój tak długo, aż nie zapali się zielone światło! Warunkiem, który musi zostać spełniony, jest zmiana światła. 12

Schemat blokowy: Przykładów tego rodzaju algorytmów jest bardzo wiele. W zasadzie większość czynności można opisać algorytmem. Będą one mniej lub bardzie rozbudowane, a zależy to od tego, do jakiego stopnia można przewidzieć zachowanie lub wykonywanie czynności w różnych sytuacjach. Algorytmami iteracyjnymi będą te, w których stosujemy pętlę tzn. zapis, w którym nakażemy wykonanie pewnej akcji jeszcze raz po sprawdzeniu warunku, który trzeba spełnić. 13

TEMAT 4: Przykłady algorytmów w matematyce i fizyce. Matematyka 1. Zbuduj algorytm, za pomocą, którego można obliczyć drugą i trzecią potęgę danej liczby. BUDOWA ALGORYTMU: - podaj liczbę a, - oblicz kwadrat liczby a, - oblicz sześcian liczby a, - podaj wartość kwadratu liczby a, - podaj sześcian liczby a. 2. Zbuduj algorytm służący do rozwiązania równania typu ax + b = 0 BUDOWA ALGORYTMU: - podaj wartość współczynnika a, - podaj wartość współczynnika b, - jeżeli a = 0, to sprawdź b, - jeżeli b = 0, to napisz, że jest to równanie tożsamościowe (nieskończenie wiele rozwiązań), - jeżeli b 0, to napisz, że jest to równanie sprzeczne (nie ma rozwiązań), - jeżeli a 0, to oblicz x x:= - b/a - napisz rozwiązanie równania x:= 14

Fizyka 1. Przedstaw za pomocą algorytmu sposób na obliczanie gęstości ciała stałego. BUDOWA ALGORYTMU: 1. Zmierz masę ciała stałego m:= 2. Zmierz za pomocą menzurki objętość ciała V:= 3. Oblicz gęstość ciała 4. Podaj gęstość ciała (g/cm³) r:= 2. Zapisz za pomocą algorytmu sposób na rozpoznawanie rodzaju ruchu ciała ze względu na zmianę prędkości. 1. Podaj prędkość początkową V 1 := 2. Podaj prędkość końcową V 2 := 3. Oblicz przyrost prędkości ΔV := V 2 - V 1 4. Czy ΔV=0? a) jeśli tak, pisz: ruch jednostajny, b) jeśli nie, sprawdź, czy ΔV > 0 1. jeśli tak pisz: ruch jednostajnie przyspieszony, 2. jeśli nie pisz: ruch jednostajnie opóźniony. Problemy do samodzielnego rozwiązania - matematyka: 1. Na podstawie zadania 1 zbuduj algorytm obliczający kolejne potęgi podanej liczby (np. czwartą i piątą). 2. Zbuduj algorytm obliczający pierwiastek kwadratowy i sześcienny danej liczby. 3. Zapisz algorytm opisujący postępowanie przy poszukiwaniu pomyślanej liczby (z podanego zakresu w możliwie najmniejszej liczbie prób). 4. Zapisz algorytm rozwiązywania równania typu ax + b = c 5. Zapisz algorytm obliczający sumę pięciu liczb. 6. Zapisz algorytm obliczania średniej z pięciu liczb. 7. Dane są długości trzech odcinków. Zbadaj, czy można zbudować z nich trójkąt. 8. Podaj algorytm obliczania pola figur płaskich: a) kwadratu, b) prostokąta, c) dowolnego trójkąta, d) trójkąta równobocznego, e) trapezu, f) rombu, g) równoległoboku. 15