Algorytmy i struktury danych. wykład 2

Podobne dokumenty
Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

Technologia informacyjna Algorytm Janusz Uriasz

Metody Programowania

Definicje. Algorytm to:

Algorytm. Krótka historia algorytmów

Podstawy Informatyki Maszyna Turinga

Algorytmy, reprezentacja algorytmów.

ECDL Podstawy programowania Sylabus - wersja 1.0

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

Technologie informacyjne - wykład 12 -

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

Podstawy Programowania Algorytmy i programowanie

Algorytm. Algorytmy Marek Pudełko

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy. Programowanie Proceduralne 1

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

Wstęp do informatyki

Wprowadzenie do algorytmiki

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

Algorytmy. Programowanie Proceduralne 1

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

Języki, automaty i obliczenia

POLITECHNIKA OPOLSKA

Schemat programowania dynamicznego (ang. dynamic programming)

POLITECHNIKA OPOLSKA

1. Maszyna Turinga, gramatyki formalne i ONP

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

Maszyna Turinga języki

Języki i metodyka programowania

Metodyki i techniki programowania

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Efektywność algorytmów

Algorytmy i schematy blokowe

Zapis algorytmów: schematy blokowe i pseudokod 1

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Podstawy i języki programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytm. Krótka historia algorytmów

Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania.

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

Praktyka Programowania

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

Obliczenia inspirowane Naturą

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

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

Teoretyczne podstawy informatyki

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

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

Programowanie dynamiczne

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

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

Metodyki i techniki programowania

INFORMATYKA. Algorytmy.

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

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

Języki programowania zasady ich tworzenia

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

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

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

Język programowania PASCAL

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

Język ludzki kod maszynowy

Efektywna analiza składniowa GBK

Podstawy programowania

Definicja algorytmu brzmi:

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Sortowanie przez scalanie

Schematy blokowe. Algorytmy Marek Pudełko

TEORETYCZNE PODSTAWY INFORMATYKI

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Wykład z Technologii Informacyjnych. Piotr Mika

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

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

Wstęp do informatyki- wykład 2

Algorytmy i struktury danych

Poprawność semantyczna

PODSTAWY ALGORYTMIKI

Algorytmy i struktury danych

Podstawy Informatyki. Algorytmy i ich poprawność

Zapisywanie algorytmów w języku programowania

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

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

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

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

Turing i jego maszyny

ALGORYTMY I PROGRAMY

Paradygmaty programowania

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

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

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Maszyna Turinga (Algorytmy Część III)

Algorytmika i pseudoprogramowanie

Transkrypt:

Plan wykładu: Pojęcie algorytmu. Projektowanie wstępujące i zstępujące. Rekurencja.

Pojęcie algorytmu

Pojęcie algorytmu Algorytm skończony zbiór operacji, koniecznych do wykonania zadania z pewnej klasy zadań, przetwarzając dane należące do pewnej klasy danych. Ciekawostka: Słowo algorytm pochodzi od łacińskiej wersji nazwiska perskiego matematyka Muhammad ibn Musa al-chuwarizmi, żyjącego w IX wieku. Algorytm ma przeprowadzić system z pewnego stanu początkowego do stanu końcowego. Algorytm może zostać zaimplementowany jako program komputerowy lub ciąg czynności dla innego urządzenia. Przykładem może tu być maszyna tkająca, wykorzystywana przez chińskich rzemieślników. Najprostszy przykład algorytmu przepis kuchenny: dane: lista produktów, zbiór czynności, wynik: potrawa.

Pojęcie algorytmu Algorytm skończony zbiór operacji, koniecznych do wykonania zadania z pewnej klasy zadań, przetwarzając dane należące do pewnej klasy danych. Algorytmy wykonywane w życiu codziennym: przygotowywanie potraw, jazda samochodem, wchodzenie/wychodzenie z pomieszczenia, kupowanie w sklepach, obsługa pilota telewizyjnego, włączanie/wyłączanie urządzeń, i wiele innych.

Pojęcie algorytmu Algorytm skończony zbiór operacji, koniecznych do wykonania zadania z pewnej klasy zadań, przetwarzając dane należące do pewnej klasy danych. Algorytmy wykonywane w życiu codziennym: przygotowywanie potraw, jazda samochodem, wchodzenie/wychodzenie z pomieszczenia, kupowanie w sklepach, obsługa pilota telewizyjnego, włączanie/wyłączanie urządzeń, i wiele innych. Gdzie można znaleźć algorytmy?: w systemach komputerowych, w telefonach komórkowych, w aparatach fotograficznych, w urządzeniach mechanicznych, wszędzie tam, gdzie wykonywane czynności można podzielić na powtarzające się czynności.

Pojęcie algorytmu Czynności związane z opracowaniem algorytmu: 1. określenie problemu, 2. określenie danych wejściowych, 3. określenie wyniku, jaki powinien zostać wyznaczony, 4. opracowania rozwiązania problemu. Algorytm powinien spełniać następujące założenia: 1. poprawność 2. jednoznaczność 3. skończoność 4. uniwersalność

Pojęcie algorytmu Czynności związane z opracowaniem algorytmu: 1. określenie problemu, 2. określenie danych wejściowych, 3. określenie wyniku, jaki powinien zostać wyznaczony, 4. opracowania rozwiązania problemu. Algorytm powinien spełniać następujące założenia: 1. poprawność 2. jednoznaczność 3. skończoność 4. uniwersalność dla każdego właściwego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników

Pojęcie algorytmu Czynności związane z opracowaniem algorytmu: 1. określenie problemu, 2. określenie danych wejściowych, 3. określenie wyniku, jaki powinien zostać wyznaczony, 4. opracowania rozwiązania problemu. Algorytm powinien spełniać następujące założenia: 1. poprawność 2. jednoznaczność 3. skończoność 4. uniwersalność dla każdego właściwego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników wykonanie algorytmu dla tych samych danych powoduje wyznaczenie tego samego wyniku

Pojęcie algorytmu Czynności związane z opracowaniem algorytmu: 1. określenie problemu, 2. określenie danych wejściowych, 3. określenie wyniku, jaki powinien zostać wyznaczony, 4. opracowania rozwiązania problemu. Algorytm powinien spełniać następujące założenia: 1. poprawność 2. jednoznaczność 3. skończoność 4. uniwersalność dla każdego właściwego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników każdy algorytm musi kiedyś zakończyć się wykonanie algorytmu dla tych samych danych powoduje wyznaczenie tego samego wyniku

Pojęcie algorytmu Czynności związane z opracowaniem algorytmu: 1. określenie problemu, 2. określenie danych wejściowych, 3. określenie wyniku, jaki powinien zostać wyznaczony, 4. opracowania rozwiązania problemu. Algorytm powinien spełniać następujące założenia: 1. poprawność 2. jednoznaczność 3. skończoność 4. uniwersalność dla każdego właściwego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników algorytm rozwiązuje dowolne zadanie z pewnej grupy zadań każdy algorytm musi kiedyś zakończyć się wykonanie algorytmu dla tych samych danych powoduje wyznaczenie tego samego wyniku

Pojęcie algorytmu Sposoby zapisywania algorytmów: 1. język naturalny 2. schematy blokowe 3. języki formalne 4. funkcje rekurencyjne

Pojęcie algorytmu Sposoby zapisywania algorytmów: 1. język naturalny 2. schematy blokowe 3. języki formalne 4. funkcje rekurencyjne Sposób najbardziej rozpowszechniony. Zalety: prostota zapisu, brak specyficznych konstrukcji formalnych, szeroki zasób słownictwa. Wady: mała precyzja, możliwe błędy interpretacji, miejscami zbyt mała zwięzłość.

Pojęcie algorytmu Sposoby zapisywania algorytmów: 1. język naturalny 2. schematy blokowe 3. języki formalne 4. funkcje rekurencyjne Sposób najbardziej rozpowszechniony. Zalety: prostota zapisu, brak specyficznych konstrukcji formalnych, szeroki zasób słownictwa. Wady: mała precyzja, możliwe błędy interpretacji, miejscami zbyt mała zwięzłość. Jest to sformalizowany zapis algorytmów. Zalety: stosowanie symboli graficznych i linii połączeń, łatwość interpretacji, łatwość wyznaczania bloków funkcjonalnych. Wady: techniczny brak możliwości przedstawiania dużych algorytmów.

Pojęcie algorytmu Sposoby zapisywania algorytmów: 1. język naturalny 2. schematy blokowe 3. języki formalne 4. funkcje rekurencyjne Sposób najbardziej rozpowszechniony. Zalety: prostota zapisu, brak specyficznych konstrukcji formalnych, szeroki zasób słownictwa. Wady: mała precyzja, możliwe błędy interpretacji, miejscami zbyt mała zwięzłość. Sposób najczęściej stosowany w praktyce. Zalety: stosowanie dowolnego języka programowania lub specjalnej notacji, zapewnia jednoznaczność zapisu. Jest to sformalizowany zapis algorytmów. Zalety: stosowanie symboli graficznych i linii połączeń, łatwość interpretacji, łatwość wyznaczania bloków funkcjonalnych. Wady: techniczny brak możliwości przedstawiania dużych algorytmów.

Pojęcie algorytmu Sposoby zapisywania algorytmów: 1. język naturalny 2. schematy blokowe 3. języki formalne 4. funkcje rekurencyjne Sposób stosowany wszędzie tam, gdzie łatwo można przedstawić rozwiązanie problemu przy pomocy rekurencji. Sposób najczęściej stosowany w praktyce. Zalety: stosowanie dowolnego języka programowania lub specjalnej notacji, zapewnia jednoznaczność zapisu. Sposób najbardziej rozpowszechniony. Zalety: prostota zapisu, brak specyficznych konstrukcji formalnych, szeroki zasób słownictwa. Wady: mała precyzja, możliwe błędy interpretacji, miejscami zbyt mała zwięzłość. Jest to sformalizowany zapis algorytmów. Zalety: stosowanie symboli graficznych i linii połączeń, łatwość interpretacji, łatwość wyznaczania bloków funkcjonalnych. Wady: techniczny brak możliwości przedstawiania dużych algorytmów.

Pojęcie algorytmu - schematy blokowe Symbole używane do tworzenia schematów blokowych: Symbol START Znaczenie Symbol określa miejsce rozpoczęcia czynności związanych z algorytmem. Można zdefiniować tylko jedno takie miejsce w całym schemacie. STOP Symbol określa miejsce zakończenia algorytmu. Możliwe jest definiowanie wielu miejsc zakończenia. A:= A + 10; Blok operacyjny, definiuje czynności wykonywane na danym etapie algorytmu. TAK A = B? NIE Symbol określa blok decyzyjny (rozgałęzienie). Pisz n Symbol określa blok wejście i wyjścia. Symbole połączeń między blokami (linia). Czasem po wyjściu z węzła używa się strzałki w celu określenia kierunku przepływu sterowania.

Pojęcie algorytmu - przykład Przykład algorytmu: Przedstawić algorytm obliczania n y= i=1 x (i)

Pojęcie algorytmu - przykład Przykład algorytmu: Przedstawić algorytm obliczania Rozwiązanie: a. opis za pomocą notacji: 1. y = 1 : idź do 2 2. i = 1 : idź do 3 3. y = y *x(i) : idź do 4 4. czy i = n? : tak_(idź do 6) nie_(idź do 5) 5. i = i + 1 : idź do 3 6. koniec n y= i=1 x (i)

Pojęcie algorytmu - przykład Przykład algorytmu: Przedstawić algorytm obliczania n y= i=1 x (i) Rozwiązanie: a. opis za pomocą notacji: b. opis przy pomocy schematu blokowego: 1. y = 1 : idź do 2 2. i = 1 : idź do 3 3. y = y *x(i) : idź do 4 4. czy i = n? : tak_(idź do 6) nie_(idź do 5) 5. i = i + 1 : idź do 3 6. koniec START y = 1 i = 1 i = i +1 y = y * x(i) NIE i = n? TAK STOP

Maszyna Turinga

Maszyna Turinga Maszyna Turinga jest to abstrakcyjny automat, służący do analizy algorytmów. Maszyna Turinga składa się nieskończenie długiej taśmy, podzielonej na kratki oraz głowicy przesuwającej się nad taśmą. Głowica ma możliwość odczytywania i zapisywania symboli. Pewnym przybliżeniem maszyny Turinga jest komputer klasy PC.

Maszyna Turinga Maszyna Turinga jest to abstrakcyjny automat, służący do analizy algorytmów. Maszyna Turinga składa się nieskończenie długiej taśmy, podzielonej na kratki oraz głowicy przesuwającej się nad taśmą. Głowica ma możliwość odczytywania i zapisywania symboli. Pewnym przybliżeniem maszyny Turinga jest komputer klasy PC. Podstawowe definicje: Zbiór symboli S={s i } Napis ciąg symboli alfabetu S, Głowica zbiór symboli, które będą przetwarzane przez maszynę Turinga alfabet, rozróżnia, odczytuje i zapisuje symbole alfabetu S na taśmie, przyjmuje jeden ze stanów q 1,..., q m, Stan maszyny określa stan głowicy q j i odczytany przez nią symbol s i S ij =(s i, q j ), Ruch głowicy Opisuje akcje, jaką ma wykonać głowica maszyny Turinga. Ruch głowicy jest reakcją maszyny na stan S ij i jest opisany przez R ij =(s k, K, q l ), gdzie: s k jest symbolem, który ma być zapisany przez głowicę, K określa sposób przesunięcia głowicy, q l jest stanem do którego ma przejść głowica.

Maszyna Turinga Tablica charakterystyczna maszyny Turinga jest to funkcja jednoznacznie określająca ruch R ij głowicy G, związany ze stanem S ij.

Maszyna Turinga Tablica charakterystyczna maszyny Turinga jest to funkcja jednoznacznie określająca ruch R ij głowicy G, związany ze stanem S ij. Przykład tablicy charakterystycznej: T q 1... q j... q m s 1 R 11... R 1j... R 1m.................. s i R i1... R ij... R im.................. s n R n1... R nj... R nm

Maszyna Turinga Tablica charakterystyczna maszyny Turinga jest to funkcja jednoznacznie określająca ruch R ij głowicy G, związany ze stanem S ij. Przykład tablicy charakterystycznej: T q 1... q j... q m s 1 R 11... R 1j... R 1m.................. s i R i1... R ij... R im.................. s n R n1... R nj... R nm Schemat maszyny Turinga: q i R ij G s k

Maszyna Turinga Twierdzenie: Każdy algorytm jest deterministyczny, jeśli można go zrealizować na odpowiednio zaprogramowanej maszynie Turinga.

Maszyna Turinga - przykład Przykład: W zbiorze napisów trzyliterowych utworzonych z liter a, b i c poprawny jest tylko napis abc.opracować algorytm rozpoznawania takiego napisu.

Maszyna Turinga - przykład Przykład: W zbiorze napisów trzyliterowych utworzonych z liter a, b i c poprawny jest tylko napis abc.opracować algorytm rozpoznawania takiego napisu. Rozwiązanie: 1. Pobierz symbol. Jeśli pobrano a, to pobierz następny symbol i idź do 2, w przeciwnym przypadku idź do 4. 2. Jeśli pobrany został symbol b, to pobierz następny symbol i przejdź do 3, w przeciwnym przypadku idź do 4. 3. Jeśli pobranym symbolem jest c, to idź do 5, w przeciwnym przypadku idź do 4. 4. Wyprowadź informację napis nieprawidłowy. 5. Wyprowadź informację napis prawidłowy.

Maszyna Turinga - przykład Przykład: W zbiorze napisów trzyliterowych utworzonych z liter a, b i c poprawny jest tylko napis abc.opracować algorytm rozpoznawania takiego napisu. Rozwiązanie: 1. Pobierz symbol. Jeśli pobrano a, to pobierz następny symbol i idź do 2, w przeciwnym przypadku idź do 4. 2. Jeśli pobrany został symbol b, to pobierz następny symbol i przejdź do 3, w przeciwnym przypadku idź do 4. 3. Jeśli pobranym symbolem jest c, to idź do 5, w przeciwnym przypadku idź do 4. 4. Wyprowadź informację napis nieprawidłowy. 5. Wyprowadź informację napis prawidłowy. Schemat blokowy: START Pobierz symbol a TAK Pobierz symbol b TAK Pobierz symbol c TAK NIE NIE NIE KONIEC niepoprawny KONIEC niepoprawny KONIEC niepoprawny KONIEC poprawny

Maszyna Turinga - przykład Przykład: W zbiorze napisów trzyliterowych utworzonych z liter a, b i c poprawny jest tylko napis abc.opracować algorytm rozpoznawania takiego napisu. Rozwiązanie: 1. Pobierz symbol. Jeśli pobrano a, to pobierz następny symbol i idź do 2, w przeciwnym przypadku idź do 4. 2. Jeśli pobrany został symbol b, to pobierz następny symbol i przejdź do 3, w przeciwnym przypadku idź do 4. 3. Jeśli pobranym symbolem jest c, to idź do 5, w przeciwnym przypadku idź do 4. 4. Wyprowadź informację napis nieprawidłowy. 5. Wyprowadź informację napis prawidłowy. Schemat blokowy: 1 Pobierz START symbol a TAK 2 3 Pobierz TAK Pobierz b symbol symbol c TAK NIE NIE NIE KONIEC 4 niepoprawny 4 Stany głowicy maszyny Turinga KONIEC niepoprawny 4 KONIEC niepoprawny KONIEC poprawny 5

Maszyna Turinga - przykład Przykład: W zbiorze napisów trzyliterowych utworzonych z liter a, b i c poprawny jest tylko napis abc.opracować algorytm rozpoznawania takiego napisu. Oznaczenia: a, b, c - symbole alfabetu, P operacja pobierz symbol, N operacja nie rób nic, q n przejdź do stanu n. Tablica charakterystyczna maszyny Turinga: q 1 q 2 q 3 q 4 q 5 a Pq 2 Nq 4 Nq 4 Nq 4 Nq 5 b Nq 4 Pq 3 Nq 4 Nq 4 Nq 5 c Nq 4 Nq 4 Nq 5 Nq 4 Nq 5

Programowanie wstępujące

Programowanie wstępujące Programowanie wstępujące (ang. bottom-up design) polega na określeniu podstawowych zadań, których wykonanie będzie konieczne do realizacji algorytmu. Tak zdefiniowane zadania wykorzystuje się do budowy większych fragmentów algorytmu, aż do zbudowania modułowego rozwiązania problemu. Ten typ projektowania stosuje się najczęściej w językach proceduralnych, gdzie Podstawowe problemy są rozwiązywane przez procedury, a cały algorytm jest realizowany przez kompletny program.

Programowanie zstępujące

Programowanie zstępujące Programowanie zstępujące (ang. top-down design) polega na dekompozycji zadań wykonywanych przez algorytm na podzadania, które są łatwe do implementacji W ogólności problem dzieli się na mniejsze podproblemy, które są następnie dzielone na kolejne podproblemy, aż do podproblemów, których rozwiązanie jest oczywiste. Zalety programowania zstępującego: systematyzacja, modularność, przejrzystość kodu, przenośność rozwiązań.

Programowanie zstępujące Programowanie zstępujące (ang. top-down design) polega na dekompozycji zadań wykonywanych przez algorytm na podzadania, które są łatwe do implementacji W ogólności problem dzieli się na mniejsze podproblemy, które są następnie dzielone na kolejne podproblemy, aż do podproblemów, których rozwiązanie jest oczywiste. Zalety programowania zstępującego: systematyzacja, modularność, przejrzystość kodu, przenośność rozwiązań. Tego typu postępowanie pozwala na uwzględnienie wszelkich aspektów jakie mają być realizowane przez algorytm.

Programowanie zstępujące Programowanie zstępujące (ang. top-down design) polega na dekompozycji zadań wykonywanych przez algorytm na podzadania, które są łatwe do implementacji W ogólności problem dzieli się na mniejsze podproblemy, które są następnie dzielone na kolejne podproblemy, aż do podproblemów, których rozwiązanie jest oczywiste. Zalety programowania zstępującego: systematyzacja, modularność, przejrzystość kodu, przenośność rozwiązań. Tego typu postępowanie pozwala na uwzględnienie wszelkich aspektów jakie mają być realizowane przez algorytm. Algorytm projektuje się w formie modułów, dzięki czemu pewne elementy można wykorzystać ponownie.

Programowanie zstępujące Programowanie zstępujące (ang. top-down design) polega na dekompozycji zadań wykonywanych przez algorytm na podzadania, które są łatwe do implementacji W ogólności problem dzieli się na mniejsze podproblemy, które są następnie dzielone na kolejne podproblemy, aż do podproblemów, których rozwiązanie jest oczywiste. Zalety programowania zstępującego: systematyzacja, modularność, przejrzystość kodu, przenośność rozwiązań. Dzięki modularności kod staje się czytelny cecha pożądana w przypadku pracy zespołowej. Tego typu postępowanie pozwala na uwzględnienie wszelkich aspektów jakie mają być realizowane przez algorytm. Algorytm projektuje się w formie modułów, dzięki czemu pewne elementy można wykorzystać ponownie.

Programowanie zstępujące Programowanie zstępujące (ang. top-down design) polega na dekompozycji zadań wykonywanych przez algorytm na podzadania, które są łatwe do implementacji W ogólności problem dzieli się na mniejsze podproblemy, które są następnie dzielone na kolejne podproblemy, aż do podproblemów, których rozwiązanie jest oczywiste. Zalety programowania zstępującego: systematyzacja, modularność, przejrzystość kodu, przenośność rozwiązań. Tego typu postępowanie pozwala na uwzględnienie wszelkich aspektów jakie mają być realizowane przez algorytm. Opracowane moduły najczęściej można łatwo dostosować do podobnych problemów. Dzięki modularności kod staje się czytelny cecha pożądana w przypadku pracy zespołowej. Algorytm projektuje się w formie modułów, dzięki czemu pewne elementy można wykorzystać ponownie.

Iteracja

Iteracja Iteracja jednokrotne wykonanie jednego z elementów algorytmu. Realizacja iteracji: a. w języku C: przy pomocy pętli for, przy pomocy pętli while, przy pomocy pętli do..while.

Iteracja Iteracja jednokrotne wykonanie jednego z elementów algorytmu. Realizacja iteracji: a. w języku C: przy pomocy pętli for, przy pomocy pętli while, przy pomocy pętli do..while. b. w języku Pascal: przy pomocy pętli for, przy pomocy pętli while...do, przy pomocy pętli repeat..until.

Iteracja Iteracja jednokrotne wykonanie jednego z elementów algorytmu. Realizacja iteracji: a. w języku C: przy pomocy pętli for, przy pomocy pętli while, przy pomocy pętli do..while. b. w języku Pascal: przy pomocy pętli for, przy pomocy pętli while...do, przy pomocy pętli repeat..until. c. w schemacie blokowym: A = B[i] NIE i = n? TAK

Iteracja Iteracja jednokrotne wykonanie jednego z elementów algorytmu. Realizacja iteracji: a. w języku C: przy pomocy pętli for, przy pomocy pętli while, przy pomocy pętli do..while. b. w języku Pascal: przy pomocy pętli for, przy pomocy pętli while...do, przy pomocy pętli repeat..until. c. w schemacie blokowym: d. w opisie słownym: przez wskazanie kroku do którego ma zostać przekazane sterowanie. A = B[i] NIE i = n? TAK

Rozejście / rozgałęzienie

Rozejście / rozgałęzienie Rozejście lub rozgałęzienie zmiana sterowania w algorytmie, czyli wykonanie innych, alternatywnych czynności po pojawieniu się określonych danych lub okoliczności. W językach programowania do realizacji rozgałęzień wykorzystuje się instrukcję warunkową if lub instrukcję wyboru case.

Rozejście / rozgałęzienie Rozejście lub rozgałęzienie zmiana sterowania w algorytmie, czyli wykonanie innych, alternatywnych czynności po pojawieniu się określonych danych lub okoliczności. W językach programowania do realizacji rozgałęzień wykorzystuje się instrukcję warunkową if lub instrukcję wyboru case. Przykład: if liczba = 100 then // czynności dla tego przypadku else if liczba > 100 then if liczba < 200 then // czynności, gdy liczba większa 100 // i jednocześnie mniejsza od 200 else // czynności, gdy liczba większa lub // równa 200 else // czynności, gdy liczba mniejsza lub // równa 100

Rozejście / rozgałęzienie Rozejście lub rozgałęzienie zmiana sterowania w algorytmie, czyli wykonanie innych, alternatywnych czynności po pojawieniu się określonych danych lub okoliczności. W językach programowania do realizacji rozgałęzień wykorzystuje się instrukcję warunkową if lub instrukcję wyboru case. Przykład: if liczba = 100 then case liczba of // czynności dla tego przypadku 0..99: else // liczba mniejsza lub równa 100 if liczba > 100 then break; if liczba < 200 then 100: // czynności, gdy liczba większa 100 // liczba równa 100 // i jednocześnie mniejsza od 200 break; else 101..199: // czynności, gdy liczba większa lub // liczba większa do 100 i mniejsza od 200 // równa 200 break; else else // czynności, gdy liczba mniejsza lub // pozostałe przypadki // równa 100 end;

Rekurencja

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Rekurencja jest jedną z podstawowych technik programowania. Ze względu na własności programowanie rekurencyjne może ułatwić rozwiązanie pewnej klasy zadań.

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Rekurencja jest jedną z podstawowych technik programowania. Ze względu na własności programowanie rekurencyjne może ułatwić rozwiązanie pewnej klasy zadań.

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Rekurencja jest jedną z podstawowych technik programowania. Ze względu na własności programowanie rekurencyjne może ułatwić rozwiązanie pewnej klasy zadań. Niebezpieczeństwa związane z rekurencją: możliwe wielokrotne wykonywanie tych samych obliczeń, nieprzejrzystość kodu algorytmu, nieskończone wykonywanie kodu błędny warunek zakończenia, możliwe większe zużycie pamięci każde wywołanie funkcji powoduje alokacje pewnej ilości pamięci.

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Przykład:

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Przykład: Algorytm rekurencyjny: krok 1: rysuj trójkąt, krok 2: zastosuj przekształcenie skalujące współrzędne trójkąta, powodujące zmniejszenie jego powierzchni o 5%, krok 3: zastosuj przekształcenie obracające współrzędne trójkąta o 5 stopni względem środka trójkąta, krok 4: wykonaj algorytm od kroku 1.

Rekurencja Rekurencja polega na odwołaniu się funkcji do samej siebie. Przykład: Algorytm rekurencyjny: krok 1: rysuj trójkąt, krok 2: zastosuj przekształcenie skalujące współrzędne trójkąta, powodujące zmniejszenie jego powierzchni o 5%, krok 3: zastosuj przekształcenie obracające współrzędne trójkąta o 5 stopni względem środka trójkąta, krok 4: wykonaj algorytm od kroku 1. Algorytm rekurencyjny z zakończeniem: krok 1: przypisz poziomowi wartość 1, krok 2: rysuj trójkąt, krok 3: zastosuj przekształcenie skalujące współrzędne trójkąta, powodujące zmniejszenie jego powierzchni o 5%, krok 4: zastosuj przekształcenie obracające współrzędne trójkąta o 5 stopni względem środka trójkąta, krok 5: jeśli poziom jest mniejszy niż 20, to zwiększ poziom o 1, krok 6: jeśli poziom jest równy 20 to zakończ algorytm, krok 7: wykonaj algorytm od kroku 2.

Koniec wykładu