Wstęp do informatyki

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

Wst p do informatyki. Algorytmy i struktury danych. Piotr Fulma«ski. 23 listopada Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n widać, że to definicja w pętli. Silnia rekurencyjnie n! = n * (n-1)!

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

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

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

Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

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

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.

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

ALGORYTMY I STRUKTURY DANYCH

1. Algorytmy Składniki algorytmu Podstawowymi elementami każdego algorytmu są dane oraz operacje Metody opisu algorytmu

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Algorytmy i struktury danych

Algorytmy i struktury danych. wykład 2

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

Algorytmy, reprezentacja algorytmów.

2.8. Algorytmy, schematy, programy

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

LibreOffice Calc VBA

Technologie Informatyczne Wykład VII

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmy. Programowanie Proceduralne 1

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

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Algorytmika i pseudoprogramowanie

Algorytmy i schematy blokowe

Algorytmy. Programowanie Proceduralne 1

Technologie informacyjne - wykład 12 -

Paradygmaty programowania

Rekurencja (rekursja)

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

Podstawy Programowania Algorytmy i programowanie

Wprowadzenie do algorytmiki

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Definicja algorytmu brzmi:

Definicje. Algorytm to:

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Technologie informacyjne Wykład VII-IX

Wstęp do programowania. Różne różności

Język ludzki kod maszynowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Języki programowania zasady ich tworzenia

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Podstawy programowania. Podstawy C# Przykłady algorytmów

Wstęp do programowania

Podstawy Programowania

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Pascal - wprowadzenie

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

1 Podstawy c++ w pigułce.

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

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

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

Język programowania PASCAL

1 Podstawy c++ w pigułce.

Python wstęp do programowania dla użytkowników WCSS

Algorytm. Krótka historia algorytmów

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

Bloki anonimowe w PL/SQL

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

1. Algorytmy Składniki algorytmu Podstawowymi elementami każdego algorytmu są dane oraz operacje Metody opisu algorytmu

Zasady Programowania Strukturalnego

Algorytmika i Programowanie VBA 1 - podstawy

Zapisywanie algorytmów w języku programowania

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

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

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

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

Wstęp do Informatyki

Podstawy programowania w języku C

Szczegółowy program kursów szkoły programowania Halpress

Algorytm i złożoność obliczeniowa algorytmu

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

ECDL Podstawy programowania Sylabus - wersja 1.0

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Liczby losowe i pętla while w języku Python

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

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

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

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Poprawność semantyczna

Transkrypt:

Wstęp do informatyki Algorytmy i struktury danych Piotr Fulmański Wydział Matematyki i Informatyki, Uniwersytet Łódzki, Polska 30 października 2009

Spis treści 1 Algorytm 2 Przetwarzane informacje 3 Struktury danych 4 Metody opisu algorytmów

Algorytm Nazwa Termin algorytm pochodzi od nazwiska perskiego astronoma i matematyka żyjącego na przełomie VIII i IX w n.e. W 825 roku Muhammad ibn Musa al-chorezmi (al-khawarizmy) napisał traktat, w którym podał wiele precyzyjnych opisów dotyczących różnych matematycznych reguł (np. dodawania czy mnożenia liczb dziesiętnych). W XII wieku dzieło to zostało przetłumaczone na łacinę jako Algoritmi de numero Indorum, co należało rozumieć następująco: Algoritmi o liczbach Indyjskich. Pojawiające się tutaj po raz pierwszy słowo Algoritmi było oczywiście inaczej zapisanym nazwiskiem matematyka. Większość ludzi rozumiała jednak tytuł bardziej jako Algorytmy o liczbach Indyjskich a stąd już blisko do Algorytmy na liczbach indyjskich (arabskich). W ten oto sposób precyzyjnie opisaną metodę obliczeniową zaczęto nazywć algorytmem (łac. algorismus).

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Nieformalna definicja Nie ma jednej uniwersalnej definicji algorytmu. W potocznym tego słowa znaczeniu, algorytm oznacza sposób postępowania, przepis na coś, schemat działania. Bardziej formalnie Algorytm - w matematyce oraz informatyce to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. wyróżniony początek i koniec warunek jednoznaczności warunek dyskretności warunek uniwersalności warunek efektywności

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Algorytm Miejsce Miejsce algorytmu na przykładzie implementacji oprogramowania rozwiązującego postawiony problem. problem komputer (czas, wewnętrzna reprezentacja danych, oprogramowanie) język (dostępne konstrukcje i typy danych) algorytm program

Przetwarzane informacje Ograniczona informacja Informacja przechowywan w komputerze i przez niego przetwarzana stanowi pewien niewielki wycinek rzeczywistości zawierający dane niezbędne do rozwiązania postawionego problemu. Musimy się zastanowić jakie informacje są nam niezbędne, jakie mogą pomóc a jakie są całkiem niepotrzebne. Musimy się zastanowić jak będziemy reprezentować wybrane przez nas informacje. Ostatni punkt prowadzi nas do pojęcia typu danej (struktury danej).

Przetwarzane informacje Ograniczona informacja Informacja przechowywan w komputerze i przez niego przetwarzana stanowi pewien niewielki wycinek rzeczywistości zawierający dane niezbędne do rozwiązania postawionego problemu. Musimy się zastanowić jakie informacje są nam niezbędne, jakie mogą pomóc a jakie są całkiem niepotrzebne. Musimy się zastanowić jak będziemy reprezentować wybrane przez nas informacje. Ostatni punkt prowadzi nas do pojęcia typu danej (struktury danej).

Przetwarzane informacje Ograniczona informacja Informacja przechowywan w komputerze i przez niego przetwarzana stanowi pewien niewielki wycinek rzeczywistości zawierający dane niezbędne do rozwiązania postawionego problemu. Musimy się zastanowić jakie informacje są nam niezbędne, jakie mogą pomóc a jakie są całkiem niepotrzebne. Musimy się zastanowić jak będziemy reprezentować wybrane przez nas informacje. Ostatni punkt prowadzi nas do pojęcia typu danej (struktury danej).

Przetwarzane informacje Ograniczona informacja Informacja przechowywan w komputerze i przez niego przetwarzana stanowi pewien niewielki wycinek rzeczywistości zawierający dane niezbędne do rozwiązania postawionego problemu. Musimy się zastanowić jakie informacje są nam niezbędne, jakie mogą pomóc a jakie są całkiem niepotrzebne. Musimy się zastanowić jak będziemy reprezentować wybrane przez nas informacje. Ostatni punkt prowadzi nas do pojęcia typu danej (struktury danej).

Przetwarzane informacje Ograniczona informacja Informacja przechowywan w komputerze i przez niego przetwarzana stanowi pewien niewielki wycinek rzeczywistości zawierający dane niezbędne do rozwiązania postawionego problemu. Musimy się zastanowić jakie informacje są nam niezbędne, jakie mogą pomóc a jakie są całkiem niepotrzebne. Musimy się zastanowić jak będziemy reprezentować wybrane przez nas informacje. Ostatni punkt prowadzi nas do pojęcia typu danej (struktury danej).

Struktury danych Struktury danych Struktura danych jest takim sposobem przechowywania danych w komputerze aby ułatwiać ich wykorzystanie. Często rozsądny wybór struktury danych pozwala na wykorzystanie efektywniejszych algorytmów.

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Typ danej Struktury danych Najpopularniejszy podział rozróżnia typy proste, nazywany też typami wbudowanymi i typy złożone typy złożone z typów prostych. Do typów prostych zaliczamy zwykle: typy liczbowe (np. całkowity, zmiennoprzecinkowy, stałoprzecinkowy) typ znakowy (znaki alfanumeryczne) typ logiczny Do typów złożonych (nazywanych też strukturami) zaliczamy zwykle: tablicę/listę słownik zbiór rekord plik kolejkę stos drzewo

Przykłady zapisu tablic w różnych językach Ada: -- definicja typu tablicowego type TableType is array(1.. 100) of Integer; -- definicja zmiennej określonego typu tablicowego MyTable : TableType; Visual Basic: Dim a(1 to 5,1 to 5) As Double Dim MyIntArray(10) As Integer Dim MySingleArray(3 to 5) As Single

Przykłady zapisu tablic w różnych językach C: char my_string[40]; int my_array[] = {1,23,17,4,-5,100}; Java: int [] counts; counts = new int[5]; PHP: $pierwszy_kwartal = array(1 => Styczeń, Luty, Marzec ); Python: mylist = ["List item 1", 2, 3.14]

Przykłady zapisu słownika Python: d = {"key1":"val1", "key2":"val2"} x = d["key2"] d["key3"] = 122 d[42] = "val4"

Metody opisu algorytmów język naturalny teoretycznie łatwy do napisania (wypunktowanie czynności) często mała precyzja kłopoty implementacyjne schemat blokowy duża przejrzystość i czytelność odzwierciedla strukturę algorytmu wyraźnie zaznaczając występowanie rozgałęzień (punktów decyzyjnych) kłopoty implementacyjne pseudojęzyk ułatwia implementację mniejsza przejrzystość

Metody opisu algorytmów język naturalny teoretycznie łatwy do napisania (wypunktowanie czynności) często mała precyzja kłopoty implementacyjne schemat blokowy duża przejrzystość i czytelność odzwierciedla strukturę algorytmu wyraźnie zaznaczając występowanie rozgałęzień (punktów decyzyjnych) kłopoty implementacyjne pseudojęzyk ułatwia implementację mniejsza przejrzystość

Metody opisu algorytmów język naturalny teoretycznie łatwy do napisania (wypunktowanie czynności) często mała precyzja kłopoty implementacyjne schemat blokowy duża przejrzystość i czytelność odzwierciedla strukturę algorytmu wyraźnie zaznaczając występowanie rozgałęzień (punktów decyzyjnych) kłopoty implementacyjne pseudojęzyk ułatwia implementację mniejsza przejrzystość

Metody opisu algorytmów język naturalny teoretycznie łatwy do napisania (wypunktowanie czynności) często mała precyzja kłopoty implementacyjne schemat blokowy duża przejrzystość i czytelność odzwierciedla strukturę algorytmu wyraźnie zaznaczając występowanie rozgałęzień (punktów decyzyjnych) kłopoty implementacyjne pseudojęzyk ułatwia implementację mniejsza przejrzystość

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Język naturalny Algorytm Euklidesa Przyjrzyjmy się dobrze znanemu przykładowi algorytmowi Euklidesa. 1. Weźmy dwie liczby całkowite dodatnie: a i b. 2. Jeśli b = 0 idź do 3., w przeciwnym razie wykonaj: 2.1. Jeśli a > b to a := a b. 2.2. W przeciwnym razie b := b a. 2.3. Przejdź do 2. 3. a jest szukanym największym dzielnikiem. 4. Koniec

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy symbole Symbole początek i koniec blok instrukcji decyzja/warunek łącznik zapis/odczyt

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy reguły Reguły 1 bloki połączone są zorientowanymi liniami 2 wykonywane są wszystkie instrukcje w bloku albo żadna 3 dalsze operacje nie zależą od poprzednich, chyba że zależności zostały przekazane za pomocą danych 4 kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki 5 do każdego bloku prowadzi dokładnie jedna linia 6 linie mogą się łączyć, a punkt połączenia nazywa się punktem zbiegu

Metody opisu algorytmów Schemat blokowy algorytm Euklidesa Schemat blokowy algorytmu Euklidesa.

Instrukcje Pseudojęzyk nie ma ścisłej definicji. Zwykle formą zapisu przypomina jeden z wielu występujących dziś języków proceduralnych, stanowiąc mieszaninę konstukcji zapożyczonych z wielu z nich, jak na przykład C, Java, PHP czy Python. Szczegóły nie związane z algorytmem (np. zarządzanie pamięcią) zwykle są pomijane. Często bloki kodu, np. występującego w pętli, zastępowane są krótkim wyrażeniem języka naturalnego. Na potrzeby zajęć przyjmujemy następujące formy zapisu. instrukcja podstawienia x:=y; wiek:=12.6; imie:="piotr";

Instrukcje Pseudojęzyk nie ma ścisłej definicji. Zwykle formą zapisu przypomina jeden z wielu występujących dziś języków proceduralnych, stanowiąc mieszaninę konstukcji zapożyczonych z wielu z nich, jak na przykład C, Java, PHP czy Python. Szczegóły nie związane z algorytmem (np. zarządzanie pamięcią) zwykle są pomijane. Często bloki kodu, np. występującego w pętli, zastępowane są krótkim wyrażeniem języka naturalnego. Na potrzeby zajęć przyjmujemy następujące formy zapisu. instrukcja podstawienia x:=y; wiek:=12.6; imie:="piotr";

Instrukcje blok begin instrukcje zawarte w bloku end

Instrukcje instrukcja warunkowa if (WARUNEK) then begin TRUE end if (WARUNEK) then begin TRUE end else begin FALSE end WARUNEK wyrażenie zwracające wartość logiczną, np x=7 x>12 x>12 and y<3 x=5 and (y=1 or z=2) TRUE (FALSE) instrukcje wykonywane, gdy warunek jest prawdziwy (fałszywy)

Instrukcje instrukcja pętli do-while i while do while (WARUNEK) begin begin instrukcje instrukcje end end while (WARUNEK);

Instrukcje instrukcja pętli for for i:=1 to 10 step 1 do begin instrukcje end for i in NAZWA do begin instrukcje end NAZWA nazwa zmiennej reprezentującej listę, słownik, kolejkę, zbiór itp.

Funkcja Funkcja jako czarna skrzynka wykonująca określone zadanie. wywołanie funkcji: NazwaFunkcji(argumenty); x:=funkcja(arg1,arg2,arg3); definicja funkcji (ciało funkcji): function NazwaFunkcji(argumenty) begin instrukcje return zwracanawartosc; end

Funkcja Funkcja jako czarna skrzynka wykonująca określone zadanie. wywołanie funkcji: NazwaFunkcji(argumenty); x:=funkcja(arg1,arg2,arg3); definicja funkcji (ciało funkcji): function NazwaFunkcji(argumenty) begin instrukcje return zwracanawartosc; end

Funkcja Funkcja jako czarna skrzynka wykonująca określone zadanie. wywołanie funkcji: NazwaFunkcji(argumenty); x:=funkcja(arg1,arg2,arg3); definicja funkcji (ciało funkcji): function NazwaFunkcji(argumenty) begin instrukcje return zwracanawartosc; end

Iteracja i rekurencja Iteracja Iteracja (łac. iteratio) to czynność powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Rekurencja Rekurencja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w logice, programowaniu i w matematyce odwoływanie się np. funkcji lub definicji do samej siebie.

Iteracja i rekurencja Iteracja Iteracja (łac. iteratio) to czynność powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Rekurencja Rekurencja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w logice, programowaniu i w matematyce odwoływanie się np. funkcji lub definicji do samej siebie.

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n Silnia rekurencyjnie n! = n * (n-1)! Silnia function SilniaI(n) function SilniaR(n) begin begin i:=0; if (n=0) then s:=1; begin while (i<n) do return 1; begin end i:=i+1; else s:=s*i; begin end return n*silniar(n-1); return s; end end end

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n Silnia rekurencyjnie n! = n * (n-1)! Silnia function SilniaI(n) function SilniaR(n) begin begin i:=0; if (n=0) then s:=1; begin while (i<n) do return 1; begin end i:=i+1; else s:=s*i; begin end return n*silniar(n-1); return s; end end end

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n Silnia rekurencyjnie n! = n * (n-1)! Silnia function SilniaI(n) function SilniaR(n) begin begin i:=0; if (n=0) then s:=1; begin while (i<n) do return 1; begin end i:=i+1; else s:=s*i; begin end return n*silniar(n-1); return s; end end end

Drzewo wywołań rekurencyjnych podczas obliczania wartości 4! 5*SilniaR(4).. 4*SilniaR(3).... 3*SilniaR(2)...... 2*SilniaR(1)........ 1*SilniaR(0).......... <-------1......... <-------1*1....... <-------2*1..... <-------3*2.. <---------4*6 24

Definicja ciągu Fibonacciego Dla n > 1 mamy fib n = fib n 1 + fib n 2, natomiast wyrazy 1. i 0. przyjmują wartość 1. Fibonacci rekurencyjnie function FibR(n) begin if ( n=0 or n=1) then begin return 1; end return FibR(n-1)+FibR(n-2); end

Definicja ciągu Fibonacciego Dla n > 1 mamy fib n = fib n 1 + fib n 2, natomiast wyrazy 1. i 0. przyjmują wartość 1. Fibonacci rekurencyjnie function FibR(n) begin if ( n=0 or n=1) then begin return 1; end return FibR(n-1)+FibR(n-2); end

Czas

Drzewo wywołań rekurencyjnych podczas obliczania 5. wyrazu ciągu Fibonacciego FibR(5) +--FibR(4) +--FibR(3) +--FibR(2) +--FibR(1) +--FibR(0) +--Fib(1) +--FibR(2) +--FibR(1) +--FibR(0) +--FibR(3) +--FibR(2)...

Liczba wywołań 0 1 1 1 2 3 3 5 4 9 5 15 6 25 7 41 8 67 9 109 10 177 15 1973 20 21891 25 242785 30 2692537

Fibonacci iteracyjnie function FibI(n) begin i:=1; x:=1; y:=1; while (i<n) begin z:=x; i:=i+1; x:=x+y; y:=z; end return x; end