PODSTAWY ALGORYTMIKI

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

Schematy blokowe. Algorytmy Marek Pudełko

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA

Definicje. Algorytm to:

Programowanie komputerów

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

1 Wprowadzenie do algorytmiki

Technologie informacyjne - wykład 12 -

Algorytm. Krótka historia algorytmów

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

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

Algorytm. a programowanie -

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

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

Algorytmika i pseudoprogramowanie

ECDL Podstawy programowania Sylabus - wersja 1.0

Język ludzki kod maszynowy

Algorytmy i schematy blokowe

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

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

Podstawy programowania

Algorytm. Krótka historia algorytmów

Programowanie w języku Python. Grażyna Koba

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

Języki programowania zasady ich tworzenia

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Zapisywanie algorytmów w języku programowania

Programowanie i techniki algorytmiczne

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie do algorytmiki

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

Język programowania PASCAL

Wykład z Technologii Informacyjnych. Piotr Mika

KARTA KURSU. Wstęp do programowania

Algorytmy i struktury danych. wykład 2

Wstęp do programowania

Algorytmy od problemu do wyniku

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

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

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

ALGORYTMY I PROGRAMY

Języki i metodyka programowania

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

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

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

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

Podstawy programowania.

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

Technologia informacyjna Algorytm Janusz Uriasz

Języki programowania deklaratywnego

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

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

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

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

Programowanie strukturalne

2. Graficzna prezentacja algorytmów

Opis efektów kształcenia dla modułu zajęć

Definicja algorytmu brzmi:

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Podstawy Programowania C++

Podstawy Programowania Algorytmy i programowanie

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

Podstawy Informatyki. Algorytmy i ich poprawność

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

PODSTAWY INFORMATYKI Co dzisiaj?

Zapis algorytmów: schematy blokowe i pseudokod 1

Metody Programowania

Języki i paradygmaty programowania. I. Wprowadzenie

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Temat 20. Techniki algorytmiczne

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Algorytmy, reprezentacja algorytmów.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

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

INFORMATYKA POZIOM ROZSZERZONY

INFORMATYKA POZIOM ROZSZERZONY

Algorytmy i struktury danych

Wprowadzenie do programowania

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

1 Podstawy c++ w pigułce.

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

Algorytmy i struktury danych

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

Programowanie w Turbo Pascal

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

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

1 Podstawy c++ w pigułce.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

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

Metodyki i techniki programowania

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

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

Paradygmaty programowania

Transkrypt:

1 PODSTAWY ALGORYTMIKI Algorytm sposób rozwiązania danego problemu Może być opisany słownie, może być przedstawiony wzorem matematycznym lub za pomocą schematów blokowych. Programowanie jest to metoda rozwiązania problemu, poprzez podanie w określonej postaci algorytmu rozwiązania. W ćwiczeniach, realizowanych w ramach niniejszego kursu, algorytm wyrażony będzie w języku MathLAB i będzie nazywany programem. Programy składają się z ciągu instrukcji zapisanych w określonym języku programowania, których wykonanie prowadzi do zrealizowania przez komputer postawionego mu zadania. Przygotowując program komputerowy należy go podzielić na mniejsze części (moduły) i zająć się osobno każdym poszczególnym zadaniem. Zadany do wykonania problem należy sformułować w sposób jednoznaczny. Dany problem dzieli się na kolejne cząstkowe problemy. Następuje podzielenie problemu na problemy cząstkowe, które łącznie wpływają na rozwiązanie problemu.

Często używanym sposobem przedstawiania algorytmu rozwiązania określonego zadania jest utworzenie schematu blokowego. Schemat blokowy przedstawia w sposób graficzny zbiór operacji i wzajemnych powiązań między nimi, które określają kolejność wykonywanych operacji. Schematy blokowe są tzw. metajęzykiem. Oznacza to, że 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. Częściami składowymi schematów blokowych są proste figury geometryczne, np. 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ć ":=" tak, jak w Pascalu lub "=" tak, jak w C) 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. Do graficznego przedstawiania i analizy schematów blokowych można użyć programu Magiczne Bloczki (http://www.algorytm.org/downloads/kurs/mb.zip 2 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 (omówię je poniżej). Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem "Stop" oznaczająca koniec algorytmu. 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 przecież dokładnie jedną instrukcję "end." Blok symbolizujący początek algorytmu ma dokładnie jedną strzałkę wychodzącą a blok symbolizujący koniec ma co najmniej jedną strzałkę wchodzącą. Jest to 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ą.

3 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. Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące. 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ą. Ta figura symbolizuje proces, który został już kiedyś zdefiniowany. Można ją 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. Podobnie jak w przypadku zwykłego procesu i tu mamy jedno wejście i jedno wyjście. Koło symbolizuje tzw. łącznik stronicowy. Może się zdarzyć, że chcemy "przeskoczyć" z jednego miejsca na kartce na inne (np. by nie krzyżować strzałek). Możemy w takim wypadku posłużyć się łącznikiem. Umieszczamy w jednym miejscu łącznik z określonym symbolem w środku (np. cyfrą, literą) i doprowadzamy do nie go 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. Ten symbol to łącznik międzystronicowy. Działa analogicznie jak pierwszy, 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.

4 Podstawowe elementy graficzne, zwane węzłami, które występują na schemacie blokowym a) Węzeł funkcyjny Jest to prostokąt, w którym znajdują się instrukcje. Z węzła funkcyjnego wychodzi tylko jedno połączenie. b) Węzeł warunkowy Jest to romb, w którym umieszcza się sprawdzany warunek. Warunek może przyjąć jedną z dwóch wartości: Tak (T) lub Nie (N). Jeżeli warunek logiczny jest spełniony, otrzymujemy wartość logiczną Tak, jeśli nie jest spełniony Nie. Z rombu wychodzą dwa połączenia. Jedno z nich reprezentuje spełnienie warunku Tak, drugie połączenie jest dla warunku Nie. Program właściwy zbudowany jest z węzłów podstawowych: Przez każdy węzeł prowadzi droga prowadząca z wejścia do wyjścia.

5 1. Węzeł funkcyjny Konstrukcje różnych rodzajów węzłów 2. Sekwencja dwóch węzłów funkcyjnych 3. Węzły, które tworzą warunek prosty 4. Węzły, które tworzą warunek złożony

6 5. Węzły, które tworzą cykl program działa w pętli warunkowej WHILE warunek wyrażenia END 6. Węzły, które tworzą iterację program działa w pętli.

7 Przykładowy algorytm Zdefiniujmy iteracyjną wersję silni. Dla przypomnienia: rekurencyjna definicja silni wygląda następująco 0!=1 n!=n* (n-1)!

Algorytm 1: Oblicz pole koła o zadanym promieniu 8

Algorytm 2: Oblicz wartość średnią z sumy pierwszych dziesięciu liczb Przykład iteracji wielokrotne wykonywanie określonych instrukcji 9

Algorytm 3: Rozwiąż równanie liniowe ax+b=0 10

11 Algorytm 4: Oblicz wartość bezwzględną liczby Przykład warunku złożonego IF warunek wyrażenie ELSEIF warunek wyrażenie ELSE wyrażenie END

12 Algorytm 5: Obliczanie wartości y y = ( x 1) x 0 2 2 dla dla dla A = A > A < x 0 x

Algorytm 6: Rozwiąż równanie drugiego stopnia Ax 2 +Bx+C=0 13

14 Algorytm 7: Algorytm wykorzystujący instrukcję wyboru SWITCH wyrażenie wyboru CASE przypadek, wyrażenie,..., wyrażenie CASE {przypadek_1, przypadek_2, przypadek_3,...} wyrażenie,..., wyrażenie OTHERWISE, wyrażenie,..., wyrażenie END W jakim przedziale wiekowym mieści się osoba o zadanej liczbie lat?

15 Algorytm 7: Wpisywanie danych do tablicy jednowymiarowej Wczytanie danych do tablicy i następnie wstawienie danych z tablicy do arkusza

16 Algorytm 7: Wpisywanie danych do tablicy dwuwymiarowej Przykład pętli bezwarunkowej FOR zmienna = wartość, wyrażenie,..., wyrażenie END Wczytanie danych do tablicy dwuwymiarowej

Algorytm 7: Przykład rekurencji obliczanie ilości znaków w nazwisku Rekurencja zachodzi wtedy, gdy podprogram wywołuje sam siebie za pośrednictwem innego podprogramu. Oznacza to, że w tekście pierwszego podprogramu znajduje się wywołanie drugiego, w tekście drugiego wywołanie pierwszego. 17

Podstawy programowania komputerów (wg Zdzisław Szyjewski, Instytut Informatyki w Zarządzaniu, Uniwersytet Szczeciński) http://iiwz.univ.szczecin.pl/zszyjewski/progr1 18 Podstawowe pojęcia: zasady działania komputera definicja pojęć program i programowanie algorytmizacja problemu środowisko pracy programisty języki programowania Program jest to przekład problemu użytkownika na język maszyny (komputera). Programy stanowią skonkretyzowane sformułowanie abstrakcyjnych algorytmów na podstawie określonej reprezentacji i struktury danych (Niklaus Wirth). Algorytmy + Struktury danych = Programy Umiejętność programowania to specyficzny dla komputerów algorytmiczny sposób postawienia zadania, rozwiązanie go przy pomocy standardowych mechanizmów dostępnych w różnych językach programowania.

Algorytm jest zbiorem reguł pozwalającym mechanicznie wykonywać wszystkie czynności odpowiadające pewnemu typowi pracy. W informatyce jest to rozkład zadania na operacje elementarne akceptowalne przez komputer. 19 Podział czasu programowania Projektowanie programu 1/3 Kodowanie programu 1/6 Testowanie programu 1/2 Metody specyfikacji algorytmu opis słowny zapis matematyczny pseudokodowanie metody graficzne metody tablicowe Definicja języka alfabet litery, cyfry, znaki specjalne składnia zbiór reguł definiujących sposób konstruowania łańcucha symboli semantyka określenie, jak te łańcuchy symboli należy rozumieć (wykonywać)

20 Środowisko programowania pamięć stała procesora system operacyjny oprogramowania podstawowe języki programowania wewnętrzne symboliczne wyższego rzędu Podstawowe pojęcia i zasady bajt słowo maszynowe rejestr systemy liczenia i prezentacji system ósemkowy system heksadecymalny Wady i zalety języka wewnętrznego trudny w użyciu łatwo o błędy powolny proces programowania trudna modyfikacja pełne wykorzystanie pamięci stałej optymalizacja obliczeń Język symboliczny język symboliczny, zwany assemblerem, wprowadza ułatwienia dla programisty. Są to: o mnemoniczne nazwy operacji o operowanie nazwami a nie adresami o możliwość stosowania makrooperacji o możliwość swobodnego modyfikowania programu

21 Języki proceduralne: ukierunkowane na problem, a nie na procesor postać programu czytelna dla człowieka całkowite operowanie na nazwach uogólnione nazwy operacji Języki proceduralne ukierunkowane na obliczenia (np. ALGOL, FORTRAN): bogaty aparat obliczeniowy słabe wspomaganie definiowania i operowania na danych Języki proceduralne ukierunkowane na przetwarzanie danych (np. COBOL, PL/1): cztery podstawowe działania bogaty aparat definiowania i operowania na danych Inne języki proceduralne uniwersalne BASIC ADA PASCAL C Inne języki proceduralne specjalizowane (np. SIMULA symulacje komputerowe, PROLOG systemy ekspertowe, LISP operowanie na strukturach listowych, RPG generator programów, MATLAB obliczenia numeryczne i wizualizacja wyników) Tok procesu programowania podstawowe fazy programowania projektowanie, kodowanie, testowanie rekurencyjny charakter toku prac wykorzystanie sprzętu komputerowego faza testowania

22

23 Kodowanie programu wybór języka organizacja pisania programu praca indywidualna praca zespołowa szkielet programu plan testów stosowane narzędzia Suchy przebieg programu współpraca w zespole eliminacja prostych błędów formalnych logicznych pierwsza faza testowania inne spojrzenie na program, korzystanie z cudzych doświadczeń Testowanie programu Testowanie programu ma dwa główne cele: wykrycie i usunięcie błędów ocenę niezawodności Jak wygląda testowanie programu? plan testów poprawność formalna poprawność logiczna zgodność ze specyfikacją testowanie niezawodności Rekurencyjny charakter prac programistycznych eliminowanie błędów wcześniej wykryty błąd mniej kosztuje konieczność powrotu do wcześniejszych faz i ponowna sekwencyjna realizacja Fazy testowania testowanie sytuacji normalnych testowanie sytuacji krańcowych testowanie wyjątków testowanie współdziałania programów test systemu

24 Ocena niezawodności programu dane testowe i rzeczywiste testy obciążenia testy odporności testowanie bezpieczeństwa Proces kompilacji programu postacie programu źródłowa, wynikowa proces kompilacji kompilatory translacja konsolidacja ładowanie interpretacja programu interpretery Interpretacja programu Interpreter tłumaczy oraz od razu wykonuje każdą pojedynczą instrukcję