7.2.. Napisati program za izračunavanje vrijednosti z prema izrazu:

Opis rješenja: Zadatak ima tri različita izraza za izračunavanje varijable z. Izložena je jedna od mogućih varijanti rješenja. Koristiće se dvije IF THEN ELSE  naredbe i to tako da je druga IF naredba u ELSE dijelu prve naredbe. Prva IF naredba u dijelu THEN rješava jedna mogućnost, a sa druga IF naredba preostale dvije mogućnosti.

Opis programa: Logičkim izrazom a>0  u prvoj IF naredbi se provjerava da li je broj pozitivan. Ako je ovaj logički izraz istinit (a veće od 0) varijabla z prima vrijednost prema izrazu z := b - a. Inače se sa drugom IF naredbom provjerava da li je vrijednost varijable a u intervalu -3<a<=0. Provjera ovog intervala se izvodi sa logičkim izrazom koji mora koristiti naredbu AND, budući da se varijabla može porediti samo sa jednim logičkim operatorom. Ako  je ovaj logički izraz (-3<a AND a<=0) istinit varijabli z se pridružuje vrijednost prema izrazu: z := a / 3. Inače, ako je izraz lažan pridruživanje se izvodi sa izrazom z := 2 * b.

Tabela 7.8. Izračunavanje vrijednosti z prema izrazima

Tekstualni algoritam

Listing programa

Ekran

 

PROGRAM PP3_8;

 

 

VAR

 

 

  a, b, z : Real;

 

 

BEGIN

 

 

  Write('Dva broja ');

Dva broja

1. upis varijable a ,b

  Readln(a, b);

3 6

2. ako je a>0

  IF a>0 THEN

 

2.1. tada je z := b - a

    z := b - a

 

       inače,                                                                                                          

  ELSE

 

2.2. ako je -3<a AND a<=0

    IF (-3<a) AND (a<=0) THEN

 

    2.2.1. tada je z := a / 3

      z := a / 3

 

  inače je

    ELSE

 

    2.2.2. z= 2 * b;

      z := 2 * b; ;

 

3. ispiši a, b, z

  Writeln('a=', a, ' b=', b, ' z=', z);

a=3 b=6 z= 2

 

END.

 

Listing programa:

I varijanta   3x if
PROGRAM P07211018;
USES
  WinCrt;
VAR                            { deklarisanje promjenljivih }
  a, b, z : Real;              { realne promjenljive }
BEGIN
  Write('Dva broja ');         { ulazne promjenljive }
  Readln(a, b);                { ulaz - ucitavanje promjenljivih }
  
     IF a > 0 then z := b - a;                     { ako je a vece od 0 tada z := b - a }
     IF (-3 < a) AND (a <= 0) then z := a / 3;     { ako je a iz opsega tada z := a / 3}
     IF a <= -3 then z := 2 * b;                   { ako je a manje ili jednako -3 tadaz := 2 * b }
     
  Writeln('a=', a, ' b=', b, ' z=', z);
END.


II varijanta   if then else
PROGRAM P07211018;
USES
  WinCrt;
VAR                            { deklarisanje promjenljivih }
  a, b, z : Real;              { realne promjenljive }

BEGIN
  Write('Dva broja ');         { ulazne promjenljive }
  Readln(a, b);                { ulaz - ucitavanje promjenljivih }
  IF a > 0 THEN                { ako je a vece od 0 tada z := b / a }
    z := b - a                 { a vece od 0, z := b - a  }
  ELSE
    IF (-3 < a) AND (a <=0 ) THEN  { ako je a iz opsega tada }
      z := a / 3                   { ako je a iz opsega tada z := a / 3}
    ELSE
      z := 2 * b;                  { ako je a manje ili jednako -3 tada z := 2 * b }
  Writeln('a=', a, ' b=', b, ' z=', z);   { izlaz - ispis }
END.

Ispis na ekranu:

Index