Upload
truonghanh
View
216
Download
1
Embed Size (px)
Citation preview
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.
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.AB .LT. A+B je .TRUE.A2*B .GE. 0 je .FALSE
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), (PQ) ≤ (RS), PS == QR
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.
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.
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. IJ .LT. 0e) I .EQ. 1 .OR. .NOT. J .NE. 3 .AND. J .GE. 0
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 blokif 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
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=AB ako je A>B odnosno A=BA ako je A <= B.
PROGRAM USPOREDBA
A=11.2B=31.6
IF(A .GT. B) THENA=A-B
ELSEA=B-A
ENDIFEND
Blokif naredba može imati i jednostavniji (minimalni) oblik:
IF ("logički uvjet") THEN"naredbe"
ENDIF
U ovom obliku "naredbe", koje stoje unutar ifnaredbe 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"
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