2. Algorytmy, programy i dane



Na początku wprowadzimy kilka pojęć. Większość z nich jest już prawdopodobnie Wam znana.

Algorytmem nazywamy metodę rozwiązania danego problemu.
Aby rozwiązać jakiś problem, wykonujemy kolejno pewne czynności, które nazywać będziemy krokami. Krokiem może być zarówno bardzo prosta czynność, nazywana w programowaniu operacją elementarną, jak i całkiem złożona sekwencja prostych czynności, którą będziemy nazywali podprogramem

W celu rozwiązania problemu należy wykonać pewne czynności w określonej kolejności. Czynności te nazywamy kolejnymi krokami algorytmu. Krokiem może być prosta operacja, którą w programowaniu nazywamy operacją elementarną lub bardziej złożone operacje, które będziemy nazywali podprogramem.

Istotną cechą algorytmu jest jego ogólność, co oznacza, że nie podaje on metody rozwiązania pojedynczego problemu, lecz całej grupy problemów podobnych.

Każdy sposób rozwiązania problemu można przedstawić na różne sposoby, ale dla komputerów istnieje potrzeba jasnego, formalnego opisu, który uwzględnia nawet najmniejsze szczegóły. W związku z tym stosuje się języki programowania, które zostały stworzone z myślą o precyzji i jednoznaczności. Te języki posiadają specjalną składnię i słownictwo, które umożliwiają komputerom zrozumienie i wykonywanie określonych zadań zgodnie z intencją programisty. Bez tego formalnego opisu, komputer nie byłby w stanie efektywnie przetwarzać informacji ani wykonywać określonych instrukcji.

Programem nazywamy zapis algorytmu w danym języku programowania.
Programowanie to proces tworzenia zestawu instrukcji, które komputer może wykonywać w celu rozwiązania konkretnego problemu lub wykonania określonego zadania. W praktyce, programowanie polega na pisaniu kodu źródłowego przy użyciu specjalnych języków programowania, które komputer może zrozumieć i wykonać. Programowanie wymaga logicznego myślenia, rozwiązywania problemów oraz zrozumienia potrzeb użytkownika lub sytuacji, które mają być obsłużone przez stworzony program. Oprócz samego pisania kodu, programowanie obejmuje również testowanie, debugowanie oraz optymalizację programów w celu zapewnienia ich poprawnego działania i efektywności. Programowanie jest kluczowym elementem w tworzeniu oprogramowania oraz rozwoju technologii informatycznych.

Istotną częścią działania algorytmu jest operowanie na danych. Oznacza to, że algorytm pobiera dane wejściowe, przetwarza je zgodnie z określonymi krokami i generuje wynik lub wyjście. Na początku algorytm otrzymuje dane wejściowe, które mogą być w różnych formach, takich jak liczby, tekst, obrazy, czy inne struktury danych. Następnie, algorytm wykonuje określone operacje na tych danych, przestrzegając określonych reguł i warunków logicznych, aby osiągnąć zamierzony rezultat. Operowanie na danych może obejmować różne czynności, takie jak manipulacja liczbami, porównywanie wartości, sortowanie danych, czy też przeszukiwanie kolekcji danych w celu znalezienia określonych informacji. Wynik działania algorytmu może być przekazywany jako wyjście, które może być dalej wykorzystane lub wyświetlone użytkownikowi.

Komputer wykonuje program składający się z ciągu instrukcji, które dotyczą danych o różnych nazwach.
Podkreślmy to wyraźnie: wszystkie dane są w pełni niezależne od programu.




Rozważmy teraz prosty przykład obliczeniowy.

Problem 1:

Dla danych wartości x, y, z obliczyć i napisać wartość następującego wyrażenia:

 w=\left( x+y \right) \cdot \left( x-z \right)

Problem ten może być przeznaczony do rozwiązania zarówno przez człowieka, który ma wykonać obliczenie i pokazać (napisać na kartce) jego wynik, jak i przez komputer, który ma ten wynik wyświetlić (wypisać) na ekranie. Trzeba tu przy tym wyraźnie podkreślić, że sformułowanie "dla danych ... " oznacza konieczność pobrania wartości tych danych:
    • człowiek może je pobrać z zewnątrz (przeczytać z kartki itp.) lub po prostu ustalić - "pobrać " z własnej głowy,
    • komputer (a ściślej jego procesor, czyli jednostka wykonująca obliczenia) też może te dane pobrać z zewnątrz (wczytać z klawiatury, na której napisze je użytkownik lub wczytać z dowolnego pliku) albo też po prostu może je ustalić - wylosować.
A więc bardziej precyzyjne sformułowanie Problemu 1 może mieć postać:

Problem 1 - uściślony:
Wczytać wartości danych x, y, z, po czym obliczyć i napisać wartość następującego wyrażenia:

 w=\left( x+y \right) \cdot \left( x-z \right)

W języku naturalnym algorytm rozwiązania tego problemu, niezależnie od tego, dla kogo jest on przeznaczony, możemy zapisać następująco:

Algorytm 1:
  • wczytaj wartości danych wejściowych x, y, z
  • oblicz wartość danej wyjściowej\ ( w=\left( x+y \right) \cdot \left( x-z \right) \)
  • napisz wartość danej wyjściowej w
Tu niezwykle istotna uwaga: należy odróżniać od siebie dwa podmioty związane z algorytmem:
    1. wykonawca algorytmu (człowiek lub komputer) wykonuje po kolei wszystkie polecenia algorytmu, zaczynając od pobrania danych.
    2. użytkownik algorytmu (inny człowiek, użytkownik komputera) podaje dane niezbędne do wykonania algorytmu.
To ważne: podawanie danych nie należy do algorytmu - bo to robi kto inny. Zadaniem algorytmu jest wczytywanie danych, które ten ktoś podał.