6. Өрнектер
Өрнек – стандарт процедураларды және функцияларды, тұрақтыларды, айнымалылардың мәні арқылы, амалдардың ретін есте сақтап, мәні есептелетін формула. Жалпы түрі:
<өрнектін аты>=<мәні есептелетін формула>
мұнда <өрнектін аты> - идентификатор.
Фортранда өрнек екі түрде кездеседі: арифметикалық және логикалық.
1) Арифметикалық өрнектер арифметикалық операндтардан, арифметикалық амалдардың таңбасынан және ашылатын және жабылатын жай жақшалардан құрастырылған. Арифметикалық операндтарға таңбасыз тұрақтылар, айнымалылар және бүтін, нақты, комплексті түрдегі стандартты функциялар жатады.
Фортранда келесі арифметикалық амалдар бар:
** - дәреже
*, / - көбейту, бөлу
+, - - санның таңбасы
+, - - қосу, алу
Қарапайым арифметикалық өрнек бір арифметикалық операндтан тұрады. Мысалы, А, 3.14, Р(х). Мұнда Р(х) – стандартты немесе қосалқы программада сипатталған функция, Р – функциянын аты, х – функциянын аргументі (нақты параметр).
Күрделі арифметикалық өрнек бірнеше арифметикалық операндтардан құрылған арифметикалық амалдармен біріктіріліп. Мысалы,
X+Y
3.5+7*K-Z
SQRT(X)**2+C15*Y(3).
Мұнда SQRT(x) және Y(3) – функциялар. Бірінші операндтын алдында – (минус) таңбасы кездесуі мумкін. Мысалы,
-SIN(X)
-6+A**K-Z15
Кез келген арифметикалық өрнек жай жақшанын ішіне алуға болады және басқа арифметикалық өрнектерде операнд ретінде қолданыу мүмкін. Сонымен, арифметикалық өрнектін өте күрделі құрамында бір бірімен кіріктірілген жақшалар кездесуі мүмкін. Мысалы,
A*(B+C)
1.4/(A+B)-X2
((A+1)*3+2)*X-(X+2)**2.
Арифметикалық
өрнектерде қатарынан екі арифметикалық
амал жазылмайды: k=12/-a - қате, k=12/(-a) –
дұрыс және көбейту амалы * таңбасымен
айқын жазылады. Арифметикалық өрнек
сандық операндтан және арифметикалық
амалдардан құрылған. Өрнектегі амалдар
солдан оңға қарай ретіне сәйкес, ал
дәреже оңнан солға қарай орындалады.
Жақшанын ішіндегі жазылған өрнек бірінші
орындалады. Мысалы, -a+b+c →
,
→
a**b**c
Дұрыс қойылмаған жақша өрнектін мәніне әсер етеді:
K=2**8/2+2 ! 130
K=2**(8/2+2) ! 64
K=2**(8/(2+2)) ! 4
Арифметикалық амалдарда:
- нольге бөлуге болмайды;
- нольді теріс дәрежеге немесе ноль дәрежесін алуға болмайды
-
теріс операндтың бүтін емес дәрежесін
табуға (a=(-2)**2.2) және a=(-2)**2.2
a=-2**2.2
- бүтін түрдегі айнымалылардың бөліндісің нәтижесінен бүтін бөлігі алнады. Мысалы, а=5, b=3, a/b=[5/3]=[1.67]=1.
- егер дәреженін негізі – бүтін, ал көрсеткіші – бүтін теріс сан болса, онда нәтижесінде дәреже ретінде бүтін бөлігі қарастырлады. Мысалы, А**(6/(-4)) → А**(-1).
- дәреже ретінде комплексті түрдегі мәнді қолдануға болмайды. Мысалы, х**(-2, 0.6).
- еген Х – комплекті түрде, ал У – нақты түрде, онда Х**У – қате.
Арифметикалық өрнектерде реттері (дәрежелері) әртүрлі айнымалыларды қолдануы:
Real*4 x=1.0E+30, y=-1.0E+30, z=5.0 сипаттама берілсін, онда
(x+y)+z → (1.0E+30-1.0E+30)+5.0 → 0+5.0 → 5.0 дұрыс жазу,
ал x+(y+z) → 1.0E+30+(-1.0E+30+5.0) қате, жақшадағы өрнектің операндтарының дәрежелері тең емес.
Арифметикалық өрнекте әр типті операндтарды қолдануға болады. Нәтиженін жалпы түрі келесі ережелермен анықталады:
- егер операндтардың типтері тең болса, онда нәтиженін жалпы түрі осы типте болады.
- егер операндтардың типі тең болмаса, онда нәтиженің түрі деңгейі ең жоғары түрді қабылдайды. Арифметикалық операндтардың типтерінің реті (кемімелі ретімен берілген):
- COMPLEX*8
- COMPLEX*4
- REAL*8
- REAL*4
- INTEGER*4
- INTEGER*2
- INTEGER*1
Ескерту.Екі бүтін санның бөлінуі бүтін санды қайтарады. Мысалы, сипаттама берілсін
Real*4 p,t
P=3/2
T=-5/2
Экранға 1.0 мен -1.0 орнына 1.5 мен -1.5 шығады. Нақты сан шығу үшін p=3./2 немесе p=3/2. немесе t=-5/2.0 немесе t=float(5)/2 жазамыз. Мысалдар,
2**(-2) ! 0 қайтарады, 1/(2**2)=[0.25]=0
2.0**(-2) ! 0.25
-7/3 ! -2
19/10 ! 1
1/4+1/4 ! 0, [0.25]+[0.25]=0
Арифметикалық өрнектің мәні есептелгенде өрнектегі амалдар келесі ретімен орындалады осы кезде жақшалардын және амалдардың ретін ұмытпай. Амалдардың орындалу реті:
1) функциялардың мәнін есептеу;
2) дәрежені алу;
3) қөбейту, бөлу;
4) қосу, алу.
Жақшадағы өрнектін мәні оны операнд ретінде қолданылғанша есептеледі.
2) Логикалық операндтарға қатынас амалдарын қолданамыз:
.LT. – кіші
.LE. – кіші немесе тең
.GT. – үлкен
.GE. – үлкен немесе тең
.EQ. – тең
.NE. – тең емес
Логикалық өрнек логикалық операндтар, логикалық амалдардан және жай жақшалардан тұрады. Логикалық операндтарға логикалық түрдегі тұрақтылар, айнымалылар, функциялар және қатынастар жатады. Логикалық амалдар:
.NOT. – кері
.AND. –және, логикалық көбейту
.OR. – немесе, логикалық қосу
.XOR. – немесеге кері
.EQV. – эквивалентті, тең
.NEQV. – эквивалент емес
Барлық логикалық амалдар, кері амалдан басқа, бинарлы амалдар: екі операндты біріктіреді. Қарапайым логикалық өрнек бір логикалық операндтан немесе алдында кері амалы кездесетін операндтан тұрады. Мысалы,
A
.TRUE.
R.GT.C+0.5
.NOT.A
.NOT..TRUE.
.NOT.R.GT.C+0.5
Мұнда, А – логикалық түрдегі айнымалы, R және C – бүтін немесе нақты түрдегі айнымалылар.
Күрделі логикалық өрнектер бірнеше қарапайым логикалық өрнектерден құрастырылған және логикалық амалдармен біріктірілген. Мысалы,
A.AND..TRUE.
A.OR.R.GT.C+0.5.AND..NOT.L
Мұнда, A және L – логикалық түрдегі айнымалылар, R және C - бүтін немесе нақты түрдегі айнымалылар.
Логикалық өрнектердің кез келгені жақшаға алынып және басқа логикалық өрнектерде операнд ретінде қолдануы мүмкін. Сонымен, логикалық өрнек күрделі құрылымында кіріктірілген жақшаларды қолдануы мүмкін. Мысалы,
A1.AND.((B1.OR.C1).AND..FALSE.)
Y.OR.((X.OR.Z).AND..NOT.Z.OR.X).AND.Z
Логикалық өрнектегі амалдар солдан оңға қарай орындалады, жақшаларды және амалдардың реттерін қарастырып. Амалдардың реттері:
1) арифметикалық өрнектердің мәні;
2) қатынастарды есептеу;
3) кері амалы;
4) логикалық көбейту;
5) логикалық қосу.
Жақшадағы өрнектің мәні операнд ретінде қолданылғанша есептеледі.
Келесі кестеде логикалық амалдардың нәтижелері келтірілген.
X |
y |
and |
or |
xor |
not x |
eqv |
neqv |
T |
T |
T |
T |
F |
F |
T |
F |
T |
F |
F |
T |
T |
F |
F |
T |
F |
T |
F |
T |
T |
T |
F |
T |
F |
F |
F |
F |
F |
T |
T |
F |
Негізгі әдебиеттер:
Вильховченко С.Д. Универсальный программируемый текстовый редактор Multi-Edit 7.xx: 200 советов пользователю. Москва: ABF, 1994.
Немнюгин С., Стесик О. Современный Фортран. Самоучитель. – СПб.: БХВ-Петербург, 2005. – 496 с.
Катцан Г. Язык Фортран 77. Москва: Мир, 1982.
Браух В. Программирование на Фортране 77 для инженеров. Москва: Мир, 1987.
Бартеньев О.В. Современный Фортран. Москва: "Диалог-МИФИ", 1998.
Бартеньев О.В. Фортран для студентов. Москва: "Диалог-МИФИ", 1999.
Қосымша әдебиеттер:
Бухтияров А.М., Маликова Ю.П., Фролов Г.Д. Практикум по программированию на Фортране. Уч. пос. – М.: Наука, 1988. – 288 с.
Кучма Н.Г., Попова Н.В. УМК по дисциплине «Программирование». – Караганда: Изд-во КарГУ, 2005. – 124 с.
Самохин А.Б., Самохина А.С. Фортран и вычислительные методы. Москва: Русина, 1994.
Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. Москва: Наука, 1988.
Ламуатье Ж.-П. Упражнения по программированию на Фортране IV. Перевод с французского В.А. Баяковской. Москва: Мир, 1978.
