CO TO JEST ALGORYTM?
Podczas różnych lekcji słyszymy zdanie „rozwiąż zadanie”. Większość tych zadań rozwiązujemy według określonych schematów. W pierwszej kolejności wypisujemy dane i zastanawiamy się do jakiego celu dążymy, a więc jaki ma być wynik. Następnie wypisujemy wzory łączące dane z szukanymi bądź twierdzenia, które można zastosować. Przed koniecznością rozwiązywania zadań stajemy również poza szkołą. Robimy to w każdej innej dziedzinie naszego życia, na przykład:
- Pisząc e-maila, telefonując do znajomych i zapraszając ich np. na pogawędkę przy kawie czy herbacie;
- Przygotowując posiłek czy ciasto lub deser;
- Kupując np. buty w sklepie;
- Znajdując najniższego ucznia w klasie;
- Pisząc wypracowanie;
Również przy takim typie zadań musimy określić dane i warunki, które muszą one spełniać. Formułujemy także wynik, który pragniemy uzyskać.
Algorytm to przepis rozwiązania zadania, zawierający opis danych wraz z opisem czynności, które należy wykonać z tymi danymi, aby osiągnąć zamierzony cel.
W procesie rozwiązywania każdego zadania możemy wyróżnić pewne etapy, które nas do niego prowadzą.
Etapy rozwiązywania problemów:
- Sformułowanie zadania;
- Określenie danych wejściowych;
- Określenie celu, czyli wyniku;
- Poszukiwanie metody rozwiązania, czyli algorytmu;
- Przedstawienie algorytmu w postaci:
- opisu słownego;
- listy kroków;
- schematu blokowego;
- języka programowania;
- Analiza poprawności rozwiązania;
- Testowanie rozwiązania dla różnych danych. Ocena efektywności przyjętej metody.
Algorytm musi być:
- Poprawny, tzn. dla każdego poprawnego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników;
- Jednoznaczny – w każdym wypadku jego zastosowania, dla tych samych danych uzyskamy ten sam wynik;
- Szczegółowy, aby wykonawca algorytmu rozumiał opisane czynności i potrafił je wykonać;
- Uniwersalny (ogólny), aby służył do rozwiązywania pewnej grupy zadań, a nie tylko jednego zadania np. sumy dwóch dowolnych liczb naturalnych, a nie tylko 7+2)
Inne cechy algorytmu to:
- skończoność – dla każdego zestawu poprawnych danych wejściowych, algorytm powinien dawać wyniki w skończonej liczbie kroków;
- efektywność (sprawność) – powinien prowadzić do rozwiązania problemu jak najniższym kosztem, czyli w jak najmniejszej liczbie kroków. Należy zoptymalizować pamięć zajętą przez struktury danych wykorzystywane w algorytmie oraz doprowadzić do optymalizacji złożoności obliczeniowej, czyli liczby wykonanych operacji.
Działania niealgorytmiczne – Czy wszystkie działania są algorytmiczne ?
Czy dla każdego zadania można skonstruować algorytm? Czy rozwiązanie każdego zadania polega na wykonywaniu jednoznacznie opisanych, ściśle określonych czynności? Oczywiście, że nie. Istnieją zadania, których realizacji nie można ująć w ramy jakiegoś planu działania. Taki charakter ma np. każda twórczość artystyczna. Konieczna jest do tego wyobraźnia i twórcze działanie, a na to nie ma przepisu.
Budowa algorytmów;
Algorytmy powinny być tak przedstawiane, aby było możliwe ich jednoznaczne odczytanie i zastosowanie. Niektóre algorytmy można opisać w języku potocznym, zwłaszcza wtedy, gdy jego wykonawcą ma być człowiek (w informatyce zajmujemy się opracowywaniem algorytmów, których wykonanie powierzamy komputerom).
Z czego składa się algorytm?
Zawiera on opis danych, opis wyników oraz plan działania, czyli przetworzenia danych. Plan ten można przedstawić w postaci ciągu czynności, które muszą być wykonane w określonej kolejności. Opis czynności występujących w algorytmie nazywamy instrukcjami.
Algorytmy liniowe mają opisy składające się z kroków, które nie zależą od żadnych warunków i są wykonywane w zapisanej kolejności. Istnieją jednak sytuacje, w których dalsze postępowanie w algorytmie zależy od spełnienia określonych warunków. Czasami musimy powtórzyć pewne kroki algorytmu kilka razy.