czwartek, 4 września 2014

ALGORYTM

1) DEFINICJA ALGORYTMU - Algorytm jest przepisem opisującym krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu.

    Przykład :
    Algorytm gotowania jajka na miękko.

        1. Włóż jajko do gotującej się wody.
         2. Zanotuj czas początkowy t0.
         3. Oczytaj czas aktualny t.
         4. Oblicz D t = t - t0.
         5. Jeśli D t < 3 min., to przejdź do kroku 3.
         6. Wyjmij jajko z gotującej się wody. Zakończ algorytm.

2) RODZAJE ALGORYTMÓW :
    - LINIOWE :

    Algorytm liniowy to taki, w którym nie określono żadnych warunków. Jest też nazywany sekwencyjnym,       gdyż każdy z kroków w tym algorytmie następuje sekwencyjnie, czyli wykonanie jednej sekwencji powoduje     przejście bezpośrednio do następnej.

    Przykład :
    Algorytm liniowy w postaci listy kroków – obliczanie obwodu prostokąta

    Dane: bok a i b
    Lista kroków:
    1. Początek algorytmu
    2. Podaj bok a
    3. Podaj bok b
    4. oblicz obwód: ob:=2*a+2*b
    5. Wyprowadź wartość ob
    6. Koniec algorytmu

    - WARUNKOWE :

  Algorytm warunkowy to taki, w którym wykonanie instrukcji uzależnione jest od spełnienia lub          niespełnienia warunku.

  Przykład :
  Algorytm warunkowy w postaci listy kroków – obliczanie obwodu prostokąta

    Dane: bok a i b
    Lista kroków:
    1. Początek algorytmu
    2. Podaj bok a
    3. Podaj bok b
    4. Czy bok a>0?
       jeśli tak idź do kroku 5,
       jeśli nie podaj komunikat wyjściowy: "nie można obliczyć obwodu" i zakończ algorytm.
    5. Czy bok b>0?
       jeśli tak idź do kroku 6
       jeśli nie podaj komunikat wyjściowy: "nie można obliczyć obwodu" i zakończ algorytm.
    6. Oblicz obwód Ob:=2*a+2*b
    7. Wyprowadź wartość Ob
    6. Koniec algorytmu

    - ITERACYJNE :

   Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został              spełniony.

Iteracje mogą być realizowane : powtarzanie instrukcji aż zostanie spełniony warunek. Ten rodzaj pętli jest nazywany do while i również ma zastosowanie w wielu językach programowania;
  1. konkretną ilość razy (pętla z licznikiem). Ten rodzaj pętli jest nazywany for i ma zastosowanie w wielu językach programowania;
  2. spełnianie warunku tak długo aż zostanie spełniony. Wówczas następuje przejście do instrukcji. Ten rodzaj pętli jest nazywany while do.

    - REKURENCYJNE

Algorytm rekurencyjny to taki, który wywołuje sam siebie do rozwiązania tego samego problemu. Algorytm rekurencyjny jest często realizacją zasady “dziel i zwyciężaj”, która składa się z trzech kroków:

    1) “dzielenia”, tj. podziału problemu na podproblemy;

    2) rekurencyjnego rozwiązania podproblemów, chyba że można je rozwiązać metodą bezpośrednią –           takie postępowanie prowadzi do “zwycięstwa” w sensie czasu rozwiązywania problemu;

    3) “połączenia” rozwiązań podproblemów w rozwiązanie całego problemu.

 Przykłady algorytmów rekurencyjnych: sortowanie przez scalanie, algorytm euklidesa.
    
    Algorytm Euklidesa, postępowanie, którego celem jest znalezienie największej wspólnej miary dwóch   odcinków o długości m i n (lub największego wspólnego dzielnika dwóch liczb m i n). Krótszy z odcinków   (np. n) odkłada się na dłuższym m tyle razy (czyli dzieli się m przez n), aż resztę stanowi odcinek         r1 mniejszy od odcinka n (jeśli reszta jest równa zero, to problem jest już rozwiązany). Następnie odcinek r1 odkłada się na n tyle razy, by otrzymać resztę r2 mniejszą od r1. Jeśli r2 = 0, to r1 jest poszukiwaną wspólną miarą. Jeśli r2 nie równa się 0, to z kolei odkłada się r2 na r1 itd., aż otrzymana reszta rn = 0. Wówczas reszta rn-1 jest poszukiwaną wspólną miarą (lub dzielnikiem).

3) SPOSOBY REPREZENTOWANIA ALGORYTMU :

    - LISTA KROKÓW :

Lista kroków algorytmu jest to przedstawienie w numerowanych punktach kolejnych etapów działania algorytmu.
Jeden punkt zawiera opis jednej operacji. Kolejności wykonywania operacji musi zostać zachowana. W przypadku wykonania jakiejś czynności wielokrotnie (iteracje, itp.) lub w przypadku chęci przejścia do konkretnego punktu z listy, umieszczamy w danym punkcje informację "Przejdź do punktu X", gdzie X, to numer punktu docelowego.
Pierwszy i ostatni punkt listy kroków algorytmu, to zawsze: początek algorytmu oraz koniec algorytmu.
Wszelkie operacje przypisania wartości do zmiennej dokonujemy za pomocą operatora ":=".

Przykład:
1. Początek algorytmu. 
2. Ustaw wartość zmiennej a:=0
3. Jeżeli a > 3 przejdź do punktu 7.
4. Wykonaj wyrażenie a:=a+1
5. Wypisz na ekran wartość a
6. Przejdź do punktu 3.
7. Zakończ algorytm.

    - SCHEMAT BLOKOWY :

Schemat blokowy  jest narzędziem nakierowanym na prezentację kolejnych czynności w projektowanym algorytmie. Realizowane jako diagram, na którym procedura, system albo program komputerowy są reprezentowane przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania.
Cechuje je:
  • zasada budowy,
  • elastyczność zapisów,
  • możliwość zapisu z użyciem składu wybranego języka programowania,
  • łatwa kontrola poprawności algorytmu.
Schematy blokowe pozwalają na prostą zamianę instrukcji na instrukcje programu komputerowego.

Przykład :
 
     - DRZEWA ALGORYTMICZNE :

Drzewo  jest hierarchiczną strukturą danych, którą współczesna informatyka wykorzystuje bardzo często. Nie szukając daleko, katalogi i pliki są zorganizowane na twoim komputerze właśnie w strukturze drzewa. Zastosowań drzew jest całe mnóstwo, dlatego uczeń informatyki powinien dobrze poznać te struktury danych. Mam nadzieję, że informacje zawarte w tym rozdziale okażą się pomocne w osiągnięciu tego celu.

Przykład :




    - PSEUDOKOD :

    Pseudokodem nazywany jest taki sposób zapisu algorytmu, który, zachowując strukturę                charakterystyczną dla kodu zapisanego w języku programowania, rezygnuje ze ścisłych      reguł składniowych na rzecz prostoty i czytelności.

 Przykład : 
jeżeli numer karty kredytowej jest ważny to
    wykonanie transakcji w oparciu o numer karty i zamówienie 
w przeciwnym razie
    wyświetlenie wiadomości o niepowodzeniu
koniec warunku

    - KOD WŁAŚCIWY :

Jest to kod, który można poddać procesowi translacji (kompilacja lub interpretacja).


Przykład :