Informatyka dla gimnazjum/Algorytmy
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.