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
|
 |