Informatyka dla gimnazjum/Algorytmy

Z Wikibooks, biblioteki wolnych podręczników.

Algorytm to skończony, uporządkowany zbiór jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania, w ograniczonej liczbie kroków.

Pojęcie algorytmu nie ogranicza się jedynie do programowania, codziennie mamy do czynienia z algorytmami, chociaż nawet nie jesteśmy tego świadomi. Weźmy np. algorytm wyjścia na dwór.

Jeżeli spałeś musisz: a) wstać b) ubrać się, następnie jeżeli nie masz kluczy musisz ich poszukać, jeżeli chcesz jechać rowerem musisz: a) zabrać klucze od zapięcia do roweru (jeżeli ich nie masz musisz ich poszukać) b) wziąć bidon z wodą c) wziąć rower, następnie wyjdź, po czym zamknij drzwi, jeżeli wziąłeś rower to wsiądź na niego i przejedź się.

Jak widać, możemy ułożyć sobie wiele algorytmów, jednak te w świecie rzeczywistym są nieco bardziej ogólnikowe, niż te komputerowe, co widać na pierwszy rzut oka po tym, że ten podany algorytm jest zapisany w języku polskim. Do zapisu algorytmów komputerowych (czyli takich, z których są złożone programy komputerowe) używa się języków programowania. Dzielą się one na języki niskopoziomowe - sztandarowym ich przykładem jest Assembler - jak i języki wysokopoziomowe - takie jak Delphi, C czy C++ - dla ujednolicenia przyjmijmy składnię (czyli sposób zapisu algorytmów) języka C, jednak przedstawione listingi będą bardzo ogólnikowe i nie będą mogły służyć jako podstawy do pisania programów, skoncentrujmy się raczej na istocie algorytmów.

Załóżmy że chcemy zapisać nasz algorytm w języku C, część kodu (tak programiści nazywają swoje algorytmy zapisane w wybranym przez nich języku) mogłaby wyglądać np. tak:

if(spie) {     // Jeżeli spałeś musisz:
 wstan();      // a) wstać 
 ubierz_sie(); // b) ubrać się
}
if(nie_mam_kluczy) { // jeżeli nie masz kluczy
 szukaj(klucze);     // musisz ich poszukać
}
if(chce_jechac_rowerem) {        // jeżeli chcesz jechać rowerem musisz:
 wez_klucze_od_roweru()          // a) wziąć klucze od zapięcia do roweru, 
 if(nie_mam_kluczy_od_roweru) {  // jeżeli ich nie masz
  szukaj(klucze_od_roweru);      // musisz ich poszukać
  wez_klucze_od_roweru();        // (po czym je wziąć)
 }
 wez_bidon();  // b) wziąć bidon z wodą
 wez_rower();  // c) wziąć rower
}
wyjdz();          // następnie wyjdź,
zamknij_drzwi();  // po czym zamknij drzwi

if(wziąłem_rower) { // jeżeli wziąłeś rower
 wsiądź_na_rower(); // to wsiądź na niego
 przejedź_się();    // i przejedź się
}

Nie wdając się w szczegóły, dlaczego zostało to zapisane tak a nie inaczej, warto tylko zauważyć, że użyto if(<warunek>) { <wykonaj> }. "if" po angielsku oznacza nic innego, jak "jeżeli". Po if(<warunek>) następuje klamra otwierająca { gdzie są umieszczone instrukcje do wykonania i na końcu }, w ten sposób jeżeli warunek byłby nieprawdziwy, czyli gdybyśmy np. mieli klucze [if(nie_mam_kluczy)] to twierdzenie nie_mam_kluczy byłoby fałszywe a więc instrukcja [szukaj(klucze);] nie doszłaby do skutku, bo po co szukać kluczy które i tak już mamy? Oczywiście sposobów zapisu algorytmów jest mnóstwo niekoniecznie trzeba pisać w C, algorytm można napisać także w języku polskim, istota rzeczy tkwi w wykonywaniu kolejnych działań które zawsze doprowadzą nas do jakiegoś konkretnego wyniku a jeżeli nie to przynajmniej powiedzą nam gdzie zrobiliśmy błąd.

Na koniec dla zainteresowanych już kompletny w pełni działający kod programu zapisanego w C.

#include <stdio.h> 
    
int main()
{
 printf("Cześć to ja! Twój komputer!\n");
 return 0;
}

Ten kawałek kodu można bez większych problemów skompilować (a więc zamienić z postaci kodu w C do postaci kodu zrozumiałego dla komputera) w systemie Linux po prostu kopiując te 7 linijek do pliku tekstowego o nazwie program.c i wydając komendę

gcc program.c -o program

później można go do woli uruchamiać komendą

./program

Jeśli zainteresował Cię powyższy przykład, zapraszamy do lektury WikiKsiążki na temat programowania w języku C.