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

Opis rješenja: Zadatak ima tri različita izraza za izračunavanje varijable y. 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. Jasno je da se zadatak može riješiti i sa tri IF THEN naredbe, ili sa dvije IF THEN naredbe koje koriste GOTO naredbu za skok na kraj.

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 y prima vrijednost prema izrazu y:=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 y se pridružuje vrijednost prema izrazu: y:=a+3. Inače, ako je izraz lažan pridruživanje se izvodi sa izrazom y:=a+b.

Tabela 7.8. Izračunavanje vrijednosti z prema izrazima

Tekstualni algoritam

Listing programa

Ekran

 

PROGRAM PP3_8;

 

 

VAR

 

 

  a, b, y : 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 y=b/a

    y:=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 y=a+3

      y:=a+3

 

  inače je

    ELSE

 

    2.2.2. y=a+b

      y:=a+b;

 

3. ispiši a, b, y

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

a=3 b=6 y= 2

 

END.

 

Listing programa:

PROGRAM P07211018;
USES
  WinCrt;
VAR
  a, b, y : Real;
BEGIN
  Write('Dva broja ');
  Readln(a, b);
  IF a>0 THEN 
    y:=b/a
  ELSE
    IF (-3 < a) AND (a <=0 ) THEN
      y:=a+3 
    ELSE
      y:=a+b;
  Writeln('a=', a, ' b=', b, ' y=', y);
END.

Ispis na ekranu:

Index