8.3.. Izračunati i ispisati sumu prvih n prirodnih brojeva. Koristiti REPEAT petlju.

Opis rješenja: Početna vrijednost varijable s (suma) je 0, a kontrolne varijable i jedan (1). Vrijednost sume s se uvećava za vrijednost kontrolne varijable i (s+i=0+1=1). Izračunata vrijednost se pridružuje varijabli s sa izrazom (s=s+i) (odnosno s:=s+i). Vrijednost kontrolne varijable i se uvećava za 1 te se dodaje na vrijednost sume s (s+i=1+2=3). Ovo je nova vrijednost sume s. Proces uvećanja kontrolne varijable i i dodavanja na vrijednost sume se ponavlja sve dok je vrijednost kontrolne varijable i manja ili jednaka n.

Opis programa: Vrijednost varijable n (koliko će se sabrati brojeva) se upisuje na početku.  Zatim se postavljaju početne vrijednosti varijable s (s:=0) i varijable i (i:=1). REPEAT petlja počinje sa izrazom s:=s+i. Računar izvodi prvo desni dio ovog izraza. Vrijednost varijable s se uvećava za vrijednost varijable i (s+i). Ova vrijednost se pridružuje varijabli s. Zatim se uvećava vrijednost varijable i. Petlja se ponavlja sve dok vrijednost varijable i ne bude veća od n. Izračunata vrijednost s se ispisuje na kraju programa.
Postavljanje početne vrijednosti sume je u liniji 8, a uvećanje vrednosti sume je u liniji 11. Ispis vrijednosti sume u liniji 14.

Tabela 8.30. Suma do n

**

Listing programa

Ekran

Opis

1

PROGRAM Suma_1_n;

 

Naslov programa

2

VAR

 

Promjenljive

3

  i, n, s : Integer;

 

 

4

BEGIN

 

Početak programa

5

  WRITELN('Suma 1_n');

1-n

Naslov

6

  WRITE('Do broja ');

Do broja

 

7

  READLN(n);

3

 

8

  s := 0;

 

Početne vrijednosti sume

9

  i:= 1;

 

Početne vrijednosti i

10

  REPEAT

 

Početak petlje

11

    s: = s + i;

 

Uvećanje sume

12

    i := i + 1;

 

Slijedeći

13

  UNTIL i>n;

 

? Kraj petlje

14

  WRITELN('Suma 1_ ',n,' je ',s);

Suma 1_3 je 6

Ispis sume

Listing programa:

PROGRAM p08312001;
{suma prvih N prirodnih brojeva}
USES
  WinCrt;
VAR
  i, n, s : Integer;
BEGIN
  WRITELN('Suma 1_n');
  WRITE('Do broja ');
  READLN(n);
  s := 0; 
  i := 1;
  REPEAT
    s: = s + i;
    i := i + 1;
  UNTIL i>n;
  WRITELN('Suma 1_ ',n,' je ',s);
END.

Index