Silnia w pascalu - iteracyjnie

 

Algorytm rozwiązywania równania liniowego


Algorytm iteracyjny obliczania funkcji silnia

program silnia_rek;
var n,s,i: integer;
begin
  write('Podaj n: ');
  readln(n);
  i:=1;
  s:=1;
  while i<=n do begin
    s:=s*i;
    i:=i+1;
  end;
  writeln(n,'! = ',s);
  readln;
end. 

 

 Pierwszą linię programu możemy traktować jako ozdobnik, jednak wymagany przez składnię języka pascal. Każdy program w pascalu musi się zaczynać słowem kluczowym program poprzedzającym nazwę programu, nie wnosi nic do realizacji algorytmu. Druga linia ma charakter pomocniczy. Wiemy, że nasz algorytm korzysta z trzech zmiennych przechowujących liczby całkowite. W pascalu wszystkie zmienne muszą być zadeklarowane przed rozpoczęciem bloku kodu. Deklarując zmienną musimy podać jakiego typu dane będą w niej przechowywane.

 Trzecia linia zawierająca słowo kluczowe begin odpowiada blokowi startowemu (1) naszego algorytmu.

 Linie od 4 do 5 realizują operację wejścia/wyjścia (2), w której pobierane są dane wejściowe - liczbę dla której chcemy obliczyć wartość funkcji silnia.

 W linii 6 nadajemy wartość początkową zmiennej pomocniczej i, numerującej kolejne kroki pętli iteracyjnej naszego algorytmu, a w linii 7 przypisujemy zmiennej s wartość początkową 1. Linie 6-7 realizują krok (3) algorytmu.

 Instrukcja while jest odpowiednikiem bloku wyboru (4) z naszego algorytmu. Instrukcje zawarte w liniach 9 - 10 (blok 5) będą wykonywane tak długo dopóki jest spełniony warunek w instrukcji while, czyli dopóki i jest mniejsze lub równe n Gdy stale zwiększane i stanie się większe od n przechodzimy do instrukcji za pętlą while, rozpoczynających się w linii 12, w której następuje wypisanie wyniku (6).

 Instrukcja readln w linii 13 nie ma żadnego związku z wykonaniem algorytmu dzielenia. Służy ona zatrzymaniu programu do czasu naciśnięcia klawisza enter, co zapobiega natychmiastowemu zamknięciu okienka z programem.

 Instrukcja end. z linii 14 kończy działanie programu (blok końca algorytmu (7)).