9
Programiranje: Relacijski i Logički izrazi  Matematička podloga za ove vježbe sastoji se od elemenata koje smo susreli pri rješavanju nejednadžbi ili pri konstruiranju skupova npr. u R, skupu realnih brojeva. Relacijski operatori Riječ "relacija" znači "odnos". U matematici ste upoznali odnose među veličinama, a upravo to je i tema ovog poglavlja - uspoređivanje veličina, točnije uspoređivanje brojevnih veličina. Skupovi brojeva koje ste do sad upoznali ( N, Z, Q, R) uređeni su skupovi. To znači da za svaka dva broja a, b iz nekog od tih skupova vrijedi jedna od slijedeće tri tvrdnje: 1) a < b 2) b < a 3) a = b Osim toga, svaki neprazni podskup uređenog skupa i sam je uređen. Budući da su skup integer i skup real  brojeva koje koristimo u FORTRANu podskupovi skupa R, onda su i oni uređeni skupovi.  Relacijski operatori su binarni operatori koji uspoređuju operande i kojih je rezultat logička istina (.TRUE.) ili laž (.FALSE.) Ima ih nekoliko, no prije nego što ih upoznamo i objasnimo, recimo nešto o vrlo specifičnom načinu zapisa tih operatora: Svi relacijski operatori imaju isti opći oblik: . «ime_operatora» . Uočite točke ispred i iza imena operatora, koje ste već susreli kao sastavni dio logičkih konstanti .TRUE. i .FALSE. Kao i kod, već nam znanih, aritmetičkih operatora, relacijski operatori pišu se između dvaju operanada: operand1   . «ime_operatora» .    operand2 gdje su operandi  aritmetički izrazi. Vrlo važno je uočiti da se radi o aritmetičkim izrazima. Svaka evaluacija aritmetičkog izraza na kraju rezultira numeričkom vrijednošću, pa stoga takve vrijednosti možemo uspoređivati po veličini.

Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Embed Size (px)

Citation preview

Page 1: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Programiranje: Relacijski i Logički izrazi  

Matematička podloga za ove vježbe sastoji se od elemenata koje smo susreli prirješavanju nejednadžbi ili pri konstruiranju skupova npr. u  R, skupu realnih brojeva.

Relacijski operatori

Riječ   "relacija"   znači   "odnos".   U   matematici   ste   upoznali   odnose   međuveličinama,   a   upravo   to   je   i   tema   ovog   poglavlja   ­   uspoređivanje   veličina,   točnijeuspoređivanje brojevnih veličina. Skupovi brojeva koje ste do sad upoznali (N, Z, Q, R)uređeni su skupovi. To znači da za svaka dva broja a, b iz nekog od tih skupova vrijedijedna od slijedeće tri tvrdnje:

1) a < b2) b < a3) a = b

Osim toga, svaki neprazni podskup uređenog skupa i sam je uređen.  Budući  da suskup  integer  i skup  real    brojeva koje koristimo u FORTRANu podskupovi skupa  R,onda su i oni uređeni skupovi. 

Relacijski   operatori  su   binarni   operatori   koji   uspoređuju   operande   i   kojih   jerezultat logička istina (.TRUE.) ili laž (.FALSE.)

Ima ih nekoliko, no prije nego što ih upoznamo i objasnimo, recimo nešto o vrlospecifičnom načinu zapisa tih operatora:

Svi relacijski operatori imaju isti opći oblik:

. «ime_operatora» .

Uočite točke ispred i iza imena operatora, koje ste već susreli kao sastavni dio logičkihkonstanti .TRUE. i .FALSE.

Kao i kod, već nam znanih, aritmetičkih operatora, relacijski operatori pišu se izmeđudvaju operanada: 

operand1    . «ime_operatora» .     operand2

gdje su operandi    aritmetički izrazi.  Vrlo važno je  uočiti  da se radi  o aritmetičkimizrazima.   Svaka   evaluacija   aritmetičkog   izraza   na   kraju   rezultira   numeričkomvrijednošću, pa stoga takve vrijednosti možemo uspoređivati po veličini.

Page 2: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Tablica relacijskih operatora:

< .LT.> .GT.≤ .LE.≥ .GE.= .EQ.≠ .NE.

Evaluaciju relacija Fortran obavlja obavlja u 3 koraka:

1. Izračuna vrijednosti operanada s lijeve i s desne strane operatora2. Usporedi dobivene vrijednosti 3. Daje odgovor na pitanje " da li je istina da je Op1 «operator» Op2 "

NB! pitanje koje FORTRAN ovdje postavlja nije "koji je od operanada veći / manji it.d. ?" nego, upravo kao što gore piše! Na pr. "Da li je istinita ili lažna tvrdnja :Op1 < Op2 ?"

Naravno,  ovaj postupak vrijedi i za jednostavne varijable  kao i za složene aritmetičkeizraze: 

Primjer: 1.2 < 3.4  <­­­­­>  1.2 .LT. 3.4   je .TRUE.3.4 < 1.2  <­­­­­>  3.4 .LT. 1.2   je .FALSE.ali zato je              3.4 .GT. 1.2     .TRUE.

Primjer: Ako je A=5.0 i B= 6.5

OndaA .NE. B             je        .TRUE. A .EQ. B             je                 .FALSE.

ili npr.A­B .LT. A+B  je  .TRUE.A­2*B .GE.  0    je    .FALSE

Page 3: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Zadatak 8:  Neka je P=23.33, Q=32.22, R=32.2 i  S=23.33. Napiši  u Fortranu i provjeriistinitost tvrdnji:

a) P == Q, R ≥ P,  P ≠ Sb) P ≤ S,    P ≥ S,  P == Sc) Q ≤ R,   R ≤ Q, Q == Rd) (P+Q) < (2*R), (P­Q) ≤ (R­S), P­S == Q­R

Logički operatori

To  su   operatori   koji   proizlaze   iz   govornih   jezika,   i   predstavljaju   veznike   inegaciju. U govoru oni povećavaju mogućnosti jezika i izražavanja. U FORTRANu, tioperatori služe strogoj logičkoj konstrukciji složenih tvrdnji (ovdje "složenih" ne znači"kompliciranih" nego "sastavljenih od jednostavnijih...")

Njihov opći oblik i rezultat su isti kao i za relacijske operatore:

operand1 . «ime_operatora» . operand2

te, kao i u slučaju relacijskih operatora, pitanje koje se ovdje postavlja je "da li je tvrdnjaistinita ili lažna?"

Logički su operatori uglavnom binarni, osim operatora negacije koji  je unarni operator.Negacija u FORTRANU zapisuje se ovako:

.NOT. operand

Za razliku od pretkodnog slučaja, operandi nisu aritmetički, nego  logički ili relacijskiizrazi. 

Tablica logičkih operatora

i .AND.

ili .OR.

ne .NOT.

Page 4: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Pravila koja definiraju djelovanje logičkih operatora su slijedeća:

Operator .AND. Izraz  OP1 .AND.  OP2  je  .TRUE. ako i samo ako su logičke vrijednosti obaoperanda   .TRUE.    Inače je .FALSE.

Operator  .OR.   Izraz OP1 .OR. OP2 je  .TRUE. ako   bar jedan od operanada ima logičkuvrijednost .TRUE.   Inače je .FALSE.

Operator .NOT.  Izraz .NOT. OP je:.FALSE. ako je izraz OP .TRUE..TRUE. ako je izraz OP .FALSE.Drugim riječima, negacija istinitu tvrdnju pretvara u lažnu i obratno.

Uklopimo   sad   sve   poznate   nam   operatore   u   jedinstvenu   tablicu   koja   određujeredoslijed izvođenja operacija:

Prioriteti operatora:Zagrade    (    )Aritmetički operatori (po ranije definiranim prioritetima)Relacijski operatori (svi istog prioriteta).NOT..AND..OR. 

Konačno, definirajmo sada i  logički izraz  kojeg smo spomenuli ranije: Logičkiizraz  je   izraz sastavljen od logičkih operanada povezanih logičkim operatorima.  Pritome,   logički operandi mogu biti  relacijski ili logički izrazi.

Primjer: Za zadane vrijednosti varijabli, evaluirajte logičke izraze

A=3, B=4, C=5, D=3

   (A.LT.B) .AND. (C.GE.D)    prelazi u   (.TRUE.) .AND. (.TRUE.)  a to je    .TRUE.

    (B.LT.D)  .OR. .NOT. (D.GT.A)   ­­>   (.FALSE.) .OR. .NOT. (.FALSE.) ­­> .FALSE.   .OR.        .TRUE.   a  to je  .TRUE.

Page 5: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Zadatak    Napišite  u  FORTRANu,   a   zatim   provjerite  istinitost  slijedećih   tvrdnji  zaproizvoljno odabrane vrijednosti varijabli (sami zadajte vrijednosti varijabli)a) 0<x<1    b) ­500 <= x <= 2000y+y2

c) a >= b ili a ≠ cd) a = b ili a > b i a > 0e) 10 < x < 20 ili 100 <= x <= 200f) x >=0 i x < 113

Zadatak   Za I=1 i J=2 izračunaj logičke izrazea) I .LE. Jb) .NOT. (I .LE. 3 .OR. J .GE. 0)c) I .LE. 10 .AND. J .GE. 2d) I+J .GT. 0 .OR. I­J .LT. 0e) I .EQ. 1 .OR. .NOT. J .NE. 3 .AND. J .GE. 0

Page 6: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Programiranje: Blok IF naredba

Do ovog trenutka upoznali smo samo najjednostavnije naredbe i operatore. Većje i taj dio programskog jezika dovoljan da napišemo programe koji računaju i ispisujurezultate. 

Ipak, strogo uzevši, prethodno poglavlje, o logičkim i relacijskim operatorima,samo za sebe nije od velike koristi jednostavno zato što se rijetko pojavljuje potreba zapukim utvrđivanjem istinitosti neke tvrdnje.

U usmenom dijelu auditornih vježbi spomenuli smo, a sada ćemo to i ovdje naglasiti,da   se program u pravilu izvodi "odozgor prema dolje", naredbu po naredbu, dakleonim redom kojim pišemo, odnosno čitamo tekst programa.

Neka   pravila,   međutim   imaju   iznimke.   Ovakvo   "sekvencijalno"   izvođenjeprograma ima i nekih ozbiljnih nedostataka. Vrlo često, tok izvođenja je potrebno nagloi temeljito promijeniti, ovisno o uvjetima koji se stvaraju za vrijeme rada programa.

Mehanizam koji omogućava da ovisno o situaciji izvođenje programa "promijenismjer" je blok­if naredba

Jedan od oblika te naredbe je: 

IF ("logički uvjet") THEN"naredbe1"

ELSE"naredbe2"

ENDIF

Naredbu   možemo   opisati   ovako:   ako   je   u   zagradi   istinita   tvrdnja  (tj.  uvjet   jezadovoljen),   onda   obavljamo  naredbe   1   inače   (tj.  ako  izraz  nije   istinit)  obavljamonaredbe 2

Za   ilustraciju,   pogledajmo   prilično   običnu   situaciju   u   kojoj   se   možemo   naći   usvakodnevnom   životu.   Pretpostavimo   da   smo   krenuli   na   put   automobilom.   Očito,jedan od uvjeta za putovanje je i stanje u rezervoaru za gorivo:

     IF (IMA DOSTA BENZINA) THEN               IDEMO DIREKTNO ZA OPATIJU     ELSE

IDEMO NA PUMPUNASTAVLJAMO ZA OPATIJU

     ENDIF

Page 7: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Posve isti efekt pstižemo i drukčije postavljenim pitanjima:

IF (NEMA DOSTA BENZINA) THENIDEMO NA PUMPUNASTAVLJAMO ZA OPATIJU

ELSEIDEMO DIREKTNO ZA OPATIJU

ENDIF

Primjer 9 u programiranju

IF (X .GT. 0.0) THENY=LOG(X)Z=X*Y

ELSEY=135.7Z=X+Y

ENDIF

Zadatak    Napiši program koji računa A=A­B ako je A>B odnosno A=B­A ako je A <= B.

PROGRAM USPOREDBA

A=11.2B=31.6

IF(A .GT. B) THENA=A-B

ELSEA=B-A

ENDIFEND

Page 8: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

Blok­if naredba može imati i jednostavniji (minimalni) oblik:

IF ("logički uvjet") THEN"naredbe"

ENDIF

U ovom obliku "naredbe", koje stoje unutar  if­naredbe izvode se samo ako je logičkiuvjet istinit. Ako nije, "naredbe" se neće izvesti nego preskočiti, a program izvođenjenastavlja iza ključne riječi endif.

Nasuprot tome, imamo i složeniji  oblik,  odnosno Potpuni oblik IF naredbe je

IF ("logički uvjet1") THEN"naredba"..."naredba"ELSEIF ("logički uvjet2") THEN

"naredba"..."naredba"

ELSEIF ("logički uvjet3") THEN"naredba"..."naredba"

...ELSEIF ("logički uvjetN") THEN

"naredba"..."naredba"

ELSE"naredba"..."naredba"

ENDIF

Ilustrirajmo Potpunu IF naredbu, ponovo primjerom vožnje automobilom:

IF (IMA BENZINA DO OPATIJE) THENIDEMO DIREKTNO U OPATIJU

   ELSEIF (IMA BENZINA DO RIJEKE) THENIDEMO U RIJEKUU RIJECI "TANKAMO"

Page 9: Programiranje: Relacijski i Logički izrazi - rgn.hrrgn.hr/~isharma/studenti/userfiles/3-Logicki_izrazi_i_Blok_IF... · skup integer i skup ... c) Q ≤ R, R ≤ Q, Q == R d) (P+Q)

NASTAVLJAMO ZA OPATIJU   ELSEIF (IMA BENZINA DO DELNICA) THEN

IDEMO U DELNICEU DELNICAMA "TANKAMO" IDEMO NA RUČAKNASTAVLJAMO ZA OPATIJU

   ELSEOSTAJEMO DOMA

ENDIF

Primjer u programu:

IF (X .GT. 0.0) THENY=LOG(X)

ELSEIF (X . EQ. 0.0) THENWRITE (6,100)

ELSEWRITE (6,200)

ENDIF

100 FORMAT (/,'Rezultat nije definiran')200 FORMAT (/,'Rezultat je kompleksni br.')

Zadatak  Napišite program koji računa

F={ ex , za x>0,

√∣x∣, za x<0π , za x=0

Zadatak Napišite program koji računa

F={cos( x2)−sin(x3) , za x≥34.4tg( x2−√ x) , za 0<x<34.4

sin( x) , inače