SOISK - SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Tomasz Puchała

ALGORYTMIKA

Pięć lekcji z działu ALGORYTMIKA

(materiał pozyskany ze strony www.interklasa.pl )

 

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?

  1. iteracyjne - rodzaj algorytmu i programu, w których wielokrotnie wykonuje się pewne instrukcje, dopóki nie zostanie spełniony określony warunek,

  2. rekurencyjne - takie procedury, które w swojej definicji posiadają wywołanie samej siebie,

  3. 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 START i STOP wskazują po-czątek i koniec każdego algorytmu. Ze skrzynki START wychodzi tylko jedna droga, do skrzynki STOP wchodzi co najmniej jedno połączenie.

W skrzynce instrukcyjnej umieszcza się po-lecenia do wykonania (instrukcje) - podsta-wienie, 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:

 


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.


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.


 

*                *                *


 

Spróbuj rozwiązać samodzielnie:

  1. Zapisz drugi algorytm za pomocą schematu blokowego.

  2. Jakimi cechami musi charakteryzować się dobry algorytm?

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.

  1. Wykonaj instrukcję r razy np. przeczytaj wiersz trzy razy.

    1. Opis słowny działania algorytmu:

      START

          1. Przeczytaj wiersz pierwszy raz.

          2. Przeczytaj wiersz drugi raz.

          3. Przeczytaj wiersz trzeci raz.

      STOP

      W tym przypadku mamy algorytm zapisany w postaci sekwencji.

    2. Schemat blokowy:

    3.  
    4. Można też wykonać to inaczej:

Opis słowny działania algorytmu:

START

      1. Przeczytaj wiersz trzy razy.

      2. Czytaj wiersz.

      3. Czy przeczytałeś wiersz trzy razy?
        a) jeśli tak, przejdź do kroku 4,
        b) jeśli nie, przejdź do kroku 2.

      4. Przeczytałeś wiersz trzy razy.

STOP

Występuje tutaj sprawdzenie warunku. Gdy warunek nie jest spełniony, czynność trzeba wykonać jeszcze raz.

Schemat blokowy:

Powtarzaj wykonanie instrukcji aż do spełnienia warunku.

  1. 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:

START

    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ęć!

STOP

Wykonywanie polecenia "przeczytaj wiersz" trwa tak długo, aż nauczysz się go na pamięć.

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.

  1. Dopóki jest czerwone światło dla pieszych, stój i czekaj.

Opis słowny działania algorytmu:

START

    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ść.

STOP

Stój tak długo, aż nie zapali się zielone światło! Warunkiem, który musi zostać spełniony, jest
zmiana światła.

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ć.

Spróbuj rozwiązać sam:

Twoim zadaniem będzie znalezienie przykładów zachowań algorytmicznych w życiu codziennym, które można zapisać jako iteracje.

1. Zbuduj algorytm, za pomocą, którego można obliczyć drugą i trzecią potęgę danej liczby.

BUDOWA ALGORYTMU:

START

- podaj liczbę a,
- oblicz kwadrat liczby a,
- oblicz sześcian liczby a,
- podaj wartość kwadratu liczby a,
- podaj sześcian liczby a.

STOP

 

2. Zbuduj algorytm służący do rozwiązania równania typu ax + b = 0

BUDOWA ALGORYTMU:

START

- 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

 

- napisz rozwiązanie równania x:=

STOP

 

Problemy do samodzielnego rozwiązania:

  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. Zapisz algorytm obliczania średniej ocen ze świadectwa szkolnego.

  8. Dane są długości trzech odcinków. Zbadaj, czy można zbudować z nich trójkąt.

  9. Sprawdź, czy trójkąt o bokach a, b, c jest trójkątem prostokątnym.

  10. 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.

  11. Podaj algorytm obliczający pole powierzchni całkowitej i objętość:
    a) sześcianu,
    b) graniastosłupa,
    c) walca.

1. Przedstaw za pomocą algorytmu sposób na obliczanie gęstości ciała stałego.

BUDOWA ALGORYTMU:

START

  1. Zmierz masę ciała stałego m:=

  2. Zmierz za pomocą menzurki objętość ciała V:=

  3. Oblicz gęstość ciała

 

  1. Podaj gęstość ciała (g/cm³) r:=

STOP

 


2. Zapisz za pomocą algorytmu sposób na rozpoznawanie rodzaju ruchu ciała ze względu na     zmianę prędkości.

START

  1. Podaj prędkość początkową V1:=

  2. Podaj prędkość końcową V2:=

  3. Oblicz przyrost prędkości ΔV := V2 - V1

  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.

STOP

Zadania do samodzielnego rozwiązania:

  1. Zapisz drugi algorytm za pomocą schematu blokowego.

     

  2. Zapisz za pomocą algorytmu sposób obliczania ciężaru ciała na:
    a) Ziemi,
    b) Księżycu,
    c) Marsie,
    d) Wenus.

     

  3. Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy znamy przyrost prędkości ciała oraz czas, w którym ten przyrost nastąpił.

     

  4. Zapisz algorytm obliczania drogi w ruchu:
    a) jednostajnym po linii prostej,
    b) jednostajnym po okręgu,
    c) jednostajnie przyspieszonym.

     

  5. Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy znamy wartość siły wypadkowej działającej na ciało oraz masę tego ciała. (II zasada dynamiki).

     

  6. Zapisz algorytm obliczania:
    a) pracy,
    b) mocy,
    c) energii potencjalnej ciężkości,
    d) energii kinetycznej ciała,
    e) oporu elektrycznego (prawo Ohma).

     

  7. Zapisz algorytm opisujący własności obrazu w zależności od długości ogniskowej i odległości ciała od soczewki lub zwierciadła dla:
    a) zwierciadeł płaskich,
    b) zwierciadeł wklęsłych,
    c) zwierciadeł wypukłych,
    d) soczewek skupiających,
    e) soczewek rozpraszających.

 

 

 

Materiał pozyskany ze strony www.interklasa.pl