Паскал- яке аз забонҳои барномасозӣ мебошад. Дар байни забонҳои алгоритмии сатҳи баланд ба мисли ФОРТРАН, АЛГОЛ-60, ПЛ/1 ва БЕЙСИК забони алгоритмии Паскал ҷои сазоворро ишғол мекунад. Аз ин рӯ, дар замони ҳозира, қариб барои ҳамаи моделҳои МЭҲ транслятор аз ин забон мавҷуд аст. Дар баробари пайдошавии трансляторҳои MS-PASСAL ва TURBO-PASCAL дар ибтидои солҳои 80-ум, мавқеъи Паскал дар миқёси ҷаҳонӣ боз ҳам пурқувваттар гардид. Бесабаб нест, ки дар аксари кулли университетҳо ва мактабҳои олии ҷаҳон забони алгоритмии Паскал ҳамчун курси асосӣ ба донишҷӯён омӯзонида мешавад.
Версияи нахустини забон соли 1968 аз тарафи профессори кафедраи техникаи ҳисоббарори институти технологияи федералии Швейтсария Никлаус Вирт ҳамчун алтернатив ба забонҳои ФОРТРАН ва АЛГОЛ-60 пешниҳод шуда буд.
Тараққиёти пуравҷи забони Паскал сабаби дар соли 1973 пайдо гардидани Паскали стандартӣ гардид. Бояд қайд намоем, ки барои поси хотираи математик ва файласуфи франсуз Блез Паскал ба ин забон номи ПАСКАЛ дода шуд. Китоби мазкур дар натиҷаи аз ҷониби муаллифон солҳои тӯлонӣ хондани лексияҳо ва бурдани корҳои амалӣ-лабораторӣ дар шӯъбаи математикаи амалии факултаи механикаю математикаи Донишгоҳи Миллии Тоҷикистон арзи вуҷуд кардааст.
Дастур аз чор боб иборат мебошад. Дар боби аввал рӯйхати символҳои асосии забон мафҳумҳои асосӣ, структураи программа, операторҳои асосии забон ва тарзи тасвири шаклҳои содда оварда шудаанд. Боби дуюм ба тасвири шаклҳои мураккаб (RECORD, ARRAY, SET) бахшида шудааст. Дар боби сеюм бошад, протседураҳо, функсияҳо ва тарзи муроҷиат ба онҳо муҳокима шудааст. Дар мисолҳои мушаххас вобастагӣ ва муносибати параметрҳои формалию аслӣ нишон дода мешавад.
Дар боби чорум бошад, барои иҷро намудани корҳоиамалӣ-лабораторӣ мисолу масъалаҳои гуногунмазмуни фаровон, аслан аз курси математикаи олӣ пешкаш карда шудааст. Алгоритми ҳалли баъзе аз ин мисолу масъалаҳо муҳокима карда шудаанд. Ба ақидаи мо мисолу масъалаҳои ин боб барои ғанӣ гардонидани дониши компютерӣ ва математикии донишҷӯён кӯмаки калон хоҳад расонд.
Дар хотимаи китоб якчанд фармонҳое оварда шудаанд, ки тавассути онҳо байни компютер ва программасоз «диалог» барқарор кардан муяссар мегардад. Солҳои пешин адабиётҳо бо забони русӣ фаровон буданд ва студентоназ онҳо пурсамар истифода мебурданд. Дар чанд соли охир миқдори чунин адабиётҳо коҳиш ёфтааст ва дастрас кардани онҳо корест басо душвор. Ба ақидаи мо, дастраси хонандагони арҷманд гардидани китоби мазкур ба ҳалли ин проблема то андозае кӯмак мерасонад. Дар муҳокимаи бандҳои алоҳида, дотсенти кафедраи моделсозӣ ва информатика Қуртаков Қ.Ш., муаллими калони кафедраи механика ва методҳои ҳисоббарорӣ номзади илмҳои физикаю математика Олимшоев Р. иштирок намуда, маслиҳатҳои пурарзиш доданд. Аз ин рӯ, муаллифон ба онҳо изҳори миннатдорӣ баён мекунанд.
БОБИ I. ЗАБОНИ АЛГОРИТМИИ ПАСКАЛ
1.1. АЛИФБОИ АСОСИИ ЗАБОНИ ПАСКАЛ
Дар забони алгоритмии (алгорифмии) Паскал маҷмӯи ҳарфҳо, ададҳо ва символҳои зерин истифода карда мешавад:
ҳарфҳои лотинӣ аз A то Z
рақамҳои арабӣ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
аломатҳои китобат . , : ; ..
аломатҳои амалҳои арифметикӣ + — * /
аломатҳои амалҳои мантиқӣ > < = >= <= <>
символҳои махсус () { } [ ] ' := (* *)
1.2. МАЪЛУМОТҲО Вобаста ба тарзи нигоҳдории маълумотҳо дар хотираи МЭҲ, онҳоро ба ду гурӯҳ ҷудо кардан мумкин аст: доимиҳо ва тағйирёбандаҳо. Маълумотҳои доимӣ гуфта, маълумотҳоеро меноманд, ки ҳангоми кори программа қимати онҳо тағйир намеёбад. Қимати маълумотҳои тағйирёбанда ҳангоми кори программа тағйир меёбанд. Дар забони Паскал доимиҳо намуди ададӣ, мантиқӣ, ва символӣ истифода бурда мешаванд. ДОИМИҲО. Доимиҳои ададӣ бутун ва ҳақиқӣ мешаванд. 1) Доимиҳои бутун (INTEGER). Доимии бутун гуфта, пайдарпаи рақамҳоро меноманд. Пеш аз доимии бутун аломати (-) гузошта мешавад (агар доимии бутун манфӣ бошад). Мисол: 143, −745, 62712. Доимиҳои бутун дар Паскал шарти зеринро бояд қаноат кунонанд. |М|<231-1=2•109(барои МЭҲ Системаи Ягона). 2) Доимиҳои ҳақиқӣ (REAL). Дар забони паскал ду тарзи навишти ададҳои ҳақиқӣ мавҷуд аст. Якум, дар намуди касри даҳӣ (ба ҷои вергул нуқта гузошта мешавад). Дуюм, намуди дараҷагӣ. Мисол: 17.54,-3.42,22.156,3.0,-5.0 0.15Е-10 (0.15•10-10),-14.5Е7 (-14.5•107) Доимии ҳақиқӣ дар Паскал дар фосилаи (10-78; 10+78) тағйир меёбад (барои МЭҲ Системаи Ягона), яъне 10-78 10+78
(х=10-78 чун нули мошинӣ қабул карда мешавад).
3) Доимиҳои мантиқӣ (BOOLEAN). Ду доимии мантиқии TRUE (дуруст) ва FALSE (нодуруст) мавҷуд аст. 4) Доимиҳои символӣ (CHAR). Символи аз ҳарду тараф бо апостроф гирифташуда доимии символӣ номида мешавад. Мисолҳо:`B`, `5`, `+`, `C`. 5) Доимиҳои сатрӣ. Пайдарпаии символҳое, ки аз ҳар ду тараф бо апостроф гирифта шудаанд, доимиҳои сатрӣ (ё сатрҳои символӣ) номида мешаванд. Миқдори символҳо аз 256 зиёд нест. Мисолҳо: `DUSHANBE`, `AKRAM`, `125+74`. 6) Доимиҳои шакли ALFA. Сатри символии дарозии як калимаи мошинӣ доштаро доимии шакли ALFA меноманд.
Мисолҳо барои МЭҲ Системаи Ягона:
`DUSHANBE`, `MAN`, `15+B-C7L`.
1.3. ИДЕНТИФИКАТОРҲО
Пайдарпаии ҳарфҳою рақамҳое, ки бо ҳарф сар мешавад ва миқдори символҳо аз ҳашт зиёд нест идетификатор номида мешавад. Мисолҳо: X, X1, F5, COR, LAB, DUST, DUST52. Идентификаторҳо барои номгузории объектҳои гуногун хизмат мекунанд. Масалан, дар геометрия масоҳату ҳаҷмро мувофиқан тавассути идентификаторҳои S ва V, дар физика фишор ва вақтро мувофиқан бо идентификаторҳои P ва T ишора мекунанд. Ҳамин тариқ, идентификатор барои ишора намудани бузургии тағйирёбанда хизмат мекунад.
1.4 ШАКЛИ ТАҒИРЁБАНДАҲО Ҳар як тағирёбандае, ки дар программа истифода бурда мешавад, бояд тасвир бояд тасвир карда шавад. Дар забони Паскал якчанд шакли тағирёбандаҳо мавҷуд аст. Як қисми тасвири шаклҳоро ҳоло ва қисми дигарашро дар бандҳои охир дида мебароем.
1.5 ШАКЛҲОИ СКОЛЯРӢ. 1) Шакли бутун (INTEGER). Тағирёбандаҳои шакли INTEGER ҳангоми иҷрошавии программа фақат қимати бутун қабул мекунанд. Чунин тағирёбандаҳо дар фасли VAR (тағирёбанда) тасвир карда мешаванд. Масалан, агар дар программа тағирёбандаҳои X,Y,A1 ва F дорои шакли бутун бошанд, дар фасли VAR ичунин тасвир карда мешаванд: VARX, Y, A1, F: INTEGER; 2) Шакли ҳақиқӣ (REAL). Тағирёбандаҳои шакли ҳақиқӣ (REAL) ҳангоми иҷрошавии программа қиматҳои ҳақиқӣ қабул мекунанд ва дар фасли VAR-и программа тавассути оператори REAL тасвиро карда мешаванд. VARX, B, Z, L: REAL Баъди чунин тасвир дар хотираи мошин барои тағирёбандаҳои шакли ҳақиқии X, B, Z ва L ҷой ҷудо карда мешавад ва ҳинни иҷрошавии программа ин тағирёбандаҳо қимати ҳақиқӣ қабул мекунад. 3) Тағирёбандаҳои шакли мантиқӣ (BOOLEAN). Тағирёбандаҳои шакли мантиқӣ ҳангоми иҷрошавии программа яке аз қиматҳои мантиқии TRUE ё FALSE (TRUE (дуруст), FALSE (нодуруст))-ро қабул менамоянд. Дар фасли VAR-и программа тағирёбандаҳои ин шакл чунин тасвир карда мешаванд: VAR L1, L2,M, F, Z: BOOLEAN; 4) Тағирёбандаҳои шакли символӣ (CHAR). Қимати тағирёбандаҳои шакли символӣ яке аз символҳои имконпазир мебошанд ва дар фасли VAR тавассути оператори CHAR тасвир карда мешаванд. Масалан: Y1, Y2, Y3, A, B, BAL, KOR: CHAR; Ба ҳар як символи ҷадвали символҳои барои транслятор дастрас рақами мувофиқ гузошта мешавад. Барои муайян намудани рақами символ ва баракс аз рӯи рақами додашуда ёфтани символи мувофиқ, функсияҳои ORD (C) ваCHR (I) мавҷуданд. Масалан: қимати ORD (C) адади бутун, яъне рақами символии C ва қимати CHR(I) символест, ки дорои рақами 1 мебошад. 5) Тағирёбандаҳои шакли ALFA. Қимати тағирёбандаҳои ин шакл маълумотҳои маълумотҳои символие мебошанд, ки калимаи мошиниро ташкил медиҳанд. Ба тағирёбандаҳои ин шакл амалҳои нисбатро тадбиқ кардан мумкин аст. Аломати амалҳои нисбат: = (баробар), <> (нобаробар), < (хурд), >(калон), <= (хурд ё баробар), >= (калон ё баробар). Бояд қайд бикунем, ки ба ҳамаи тағирёбандаҳои шакли сколярӣ амалҳои нисбатро тадбиқ кардан мумкин аст. 6) Тағирёбандаҳои шакли сатрӣ (STRING). Қимати тағирёбандаҳои ин шакл доимиҳои сатрӣ мебошанд. Тағирёбандаҳои ин шакл дар программа тавассути оператори STRING тасвир карда мешванд. Дар ҳолати умумӣ ин оператори тасвир намуди зерин дорад: STRING [M]. Дар навишт STRING калимаи асосии забон буда, M -шумораи зиёдтарини элементҳои сатри додашуда мебошад. Қайд мекунем, ки қимати M аз 255 зиёд нест. 7) Шакли номбаркунӣ (ғайристандартӣ). Намуди умумии тасвири шаклҳои ғайристандартӣ: TYPE NOM = (WORD1, WORD2, …, WORDN); NOM — идентификатори шакл(идентификатори дилхоҳ),WORD1, WORD2, …, WORDN-қиматҳои мушаххасе, ки тағирёбандаи шаклиNOM метавонад қабул намояд. Ин қиматҳо ба тартиби зайл WORD1<WORD2<…<WORDN ҷойгирифта ҳисоб меёбанд.
1.6. ИФОДАҲО 1) Функсияҳоистандартӣ. Рӯйхати функсияҳои стандартӣ дар зер оварда мешаванд.
Навишти математикӣ Навишт дар Паскал sinx SIN(X) Cosx COS(X) Inx (x>0) LN(X) Ex EXP(X)
SQRT(X)
ABS(X) X2 SQR(X) arctg x ARCTG(X)
X-ифодаи арифметикӣ. Барои ҳисоб намуданиқиматҳоифунксияҳои arcsin x, arcos x, arcctg x функсияи стандартии ARCTN(x) истифода бурда мешавад. Ин вобастагиҳо чунинанд:
; ; .
Барои ҳисоб намудани бузургии формулаи зеринро истифода бурдан мумкин аст: xn=en lnx. 2) Амалҳои арифметикӣ. + (ҷамъ), -(тарҳ), *(зарб), /(тақсим), DIV(қисми бутуни ҳосили тақсим), MOD (бақия аз тақсим). 3) Амалҳои мантиқӣ. Дар забони Паскал амалҳои мантиқии ФТВ (зарби мантиқӣ), OR (ҷамъи мантикқӣ) ва NOT (инкор) истифода карда мешаванд. Оиди амалҳои нисбат дар боло Сухан ронда будем. 4) Ифодаҳои арифметикӣ. Ифодаҳои арифметикӣ аз ададҳо, тағирёбандаҳо, функсияҳои арифметикӣ, тавассути қавсҳо ва аломати амалҳои арифметикӣ сохта мешаванд. 5) Ифодҳои мантиқӣ (Булӣ). Ифодаҳои мантиқӣ низ, аз қиматҳои мантиқӣ,тағирёбандаҳои мантиқӣ, нисбатҳо тавассути қавсҳо ва аломатҳои амалҳои мантиқӣ сохта мешаванд.
1.7. СОХТИ ПАСКАЛ-ПРОГРАММА Программа дар забони Паскал аз ду қисм (бахш) иборат аст: сарлавҳаи программа ва блоки программа. Сарлавҳаи программа намуди зерин дорад: PROGRAM HOM (INPUT, OUTPUT, X, Y, …); PROGRAM-калимаи асосии забон буда, маънояш программа мебошад, HOM-номи программа мебошад. Ба сифати HOM дилхоҳ идентификаторро қабул кардан мумкин аст (ғайр аз идентификаторҳои стандартӣ); INPUT ва OUTPUT -файлҳоимувофиқан дохилкунӣ ва хориҷкунӣ мебошанд; X, Y, … — файлҳои берунае, ки дар программа истифода карда мешаванд. Агар дар программа фақат файлҳои дохилкунию хориҷкунӣ истифода шаванд, онгоҳ сарлавҳаи программа чунин навишта мешавад: PROGRAM HOM (INPUT, OUTPUT); агар, фақат файли дохилкунӣ истифода карда шавад, онгоҳ: PROGRAM HOM (INPUT); Блок. Блоки программа нисбатан конструксияи мураккаб буда, аз шаш фасл иборат мебошад: 1) Фасли нишонаҳо (LABEL), 2) Фасли доимиҳо (CONST), 3) Фасли шаклҳо (TYPE), 4) Фасли тағирёбандаҳо (VAR), 5) Фасли протседураҳо ва функсияҳо, 6) Фасли амалиёт (операторҳо). Вобаста ба мураккабии программа, навиштани ҳамаи фаслҳои блок ҳатмӣ намебошад. Ҳар яке аз ин фаслҳоро шарҳ медиҳем. 1) Фасли нишонаҳо (LABEL). Дар программа нишонаҳо барои ба қайд гирифтани операторҳои иҷрошаванда истифода бурда мешаванд. Дар забони Паскалба сифати нишонаҳо бутунҳои бе аломате, ки миқдори рақамҳояшон аз чор зиёд нест, қабул карда мешаванд. Нишона пеш аз оператор навишта мешавад ва баъди он символи : гузошта мешавад. 2) Фасли доимиҳо (CONST). Бисёр бузургиҳое мавҷуданд, ки дорои қиматҳои доимӣ мебошанд ва дар программа истифода бурда меша-ванд. 3) Фасли шаклҳо (TYPE). Агар дар программа шаклҳои ғайри стандартӣ дохил карда шаванд, чунин шаклҳо дар фасли TYPE тасвир карда меша-ванд. Намуди умумии ин фасл чунин аст:
TYPE T1=< намуди шакл >; T2=<намуди шакл>;…
Дар ин конструксия TYPE калимаи асосии забон буда маънояш шакл мебошад; T1 ва T2 идентификатори шаклҳо мебошанд. 4) Фасли тағирёбандаҳо (VAR). Дар ин фасл тағирёбандаҳое, ки дар программа истифода бурда мешаванд, бояд тасвир карда шаванд. Дар намуди умумӣ ин фасл чунин аст: VAR V1, V2, …: T1; C1, C2,…: T2;… Дар навишт маънои VAR тағирёбанда буда, T1 ва T2 мувофиқан шаклҳои тағирёбандаҳои V1, V2,… ва C1, C2,… мебошанд. 5) Фасли протседураҳо ва функсияҳо. Агар дар программа протседураҳо ё протседура-функсияҳо истифода бурда шаванд, онҳо дар ҳамин фасл, яъне фасли панҷум тасвир карда мешаванд. Баъди омӯхтани протседураҳо ва сохтани программаҳои мушаххас, боз ба шарҳи иловагии ин фасл бармегардад. 6) Фасли операторҳо. Дар намуди умумӣ ин фасл шакли зерин дорад: BEGIN S1; S2;…; SK END. Дар инҷо BEGIN ва END қавсҳои оператории кушоянда ва пӯшанда мебо-шанд BEGIN-аввал; END-охир); S1, S2,…, SK-операторҳои иҷроша-вандаи забон мебошанд.
1.8 ОПЕРАТОРҲО (ОПЕРАТОРҲОИ ИҶРОШАВАНДА) 1) Оператори бахшанда. Оператори бахшанда яке аз оператоҳои асосии забон буда, барои ҳисобкунии ифодаҳо хизмат мекнад. Оператори бахшан-да намуди зерин доард: V:=A; Дар ин навишт V-тағирёбанда буда, A-ифода мебошад (:=аломати бахшидан). Дар намуди умумӣ тарзи иҷрошавии ин оператор чунин аст: дар навбати аввал ифодаи A ҳисоб карда мешавад. Ҳангоми навишти ин оператор бояд якхелагии шаклҳои тарафҳои чап ва рост риоя карда шавад, вагарна хатоии дағал содир карда мешавад. 2) Оператори дохилкунӣ. Ҳар як забони алгорифмӣ дорои операторҳои дохилкунӣ ва хориҷкунӣ мебошанд. Тавассути оператори дохилкунӣ маълумотҳои додашудаи масъала ба хотираи мошин дохил карда мешаванд. Намуди умумии ин оператор чунин аст: READ (V1, V2,…, VN); Дар ин конструксия READ калимаи асосии забон буда, маънои дохил кунед-ро дорад; V1, V2,…, VN-тағирёбандаҳои яке аз шаклҳо; INTEGER, CHAR, REAL (ё намуди умумикардашудаи онҳо). Ҳангоми иҷрошавии ин оператор дар хотираи мошин қиматҳои V1, V2,…, VN навишта меша-ванд. 3) Оператори хориҷкунии маълумотҳо (қиматҳо). Намуди умумии ин оператор чунин аст: WRITELN (P1, P2,…, PN); WRITELN-номи протседураи хориҷкунӣ ва P1, P2,…, PN-рӯйхати бузургиҳое, ки қиматҳои онҳо бояд ба чоп дода шаванд. Ба сифати P1, P2,…, PN тағирёбандаҳо, ифодаҳо ва матнҳоро қабул кардан мумкин аст. Дар ин оператор формати чопро транслятор муайян мекунад. 4) Оператори гузариш. Намуди умумии ин оператор чунин аст: GOTO N; GOTO- калимаи асосии забон буда, маънояш «гузашта шават ба» мебо-шад; N-нишона буда, дар фасли LABEL ҷой дода мешавад. Тавассути ин оператор идоракунӣ ба операторе дода мешавад, ки дорои нишонаи N аст. 5) Оператори таркибӣ. Дар бисёр мавридҳо ба мо зарур меояд, ки гурӯҳи операторҳоро якҷоя намуда, мантиқан як оператор нишон диҳем. Барои иҷрои ин вазифа оператори таркибӣ хизмат мекунад. Намуди оператори таркибӣ чунин аст: BEGIN S1, S2,…; SN END; S1, S2,…, SN-операторҳо мебошанд. 6) Оператори шартӣ. Оператори шартӣ ҳангоми санҷидани ин ё он шарт ва ҳисоб намудани ифодаҳои шарт васеъ истифода бурда мешавад. Ду намуди навишти ин оператор мавҷуд аст: оператори шартии «пурра» ва оператори шартии «кӯтоҳкардашуда». Оператори шартии пурра чунин аст: IF B THEN S1 ELSE S2; Дар ин ҷо IF, THEN ва ELSE-калимаҳои асосии забон буда, мувофиқан дорои маъноҳои (IF-агар), (THEN-онгоҳ) ва (ELSE- вагарна) мебошанд. B-ифодаи мантиқӣ ва S1, S2-операторҳо мебошанд. Тарзи иҷрошавии ин оператор чунин аст: дар аввал ифодаи мантиқии B ҳисоб карда мешавад; агар қимати B TRUE бошад, оператори S1 иҷро карда мешавад. Оператори шартии «кӯтоҳкардашуда» намуди зерин дорад: IF B THEN S; Дар ин ҷо B-ифодаи мантиқӣ ва S-оператор мебошанд. Тарзи иҷрошавии ин оператор чунин аст: дар аввал B ҳисоб карда мешавад, агар қимати он TRUE бошад, онгоҳ оператори S иҷро карда мешавад. Агар B қимати FALSE қабул намояд, онгоҳ ин оператор ягон амалро иҷро накарда, идоракунӣ ба оператори навбатӣ дода мешавад. Боз як намуди дигари ин оператор мавҷуд аст, ки онро оператори интихоб низ мегӯянд. Бояд қайд кунем, ки ин оператор ҳаммаънои тағирдиҳандаҳои (переключатель, селектор) Алгол-60 мебошад. Намуди умумии ин оператор чунин аст: CASE N OF M1,…, MN: S1; K1, …, KL: S2; …………….. END; Дар ин навишт CASE ва OF калимаҳои асосии забон буда, мувофиқан маъноҳои «дар ҳолати» ва «аз» — ро доранд; M1, …, MN, K1, K2,…, KL, …-нишонаҳо буда, S1, S2,…-операторҳо мебошанд. N-тағирдиҳанда (селектор) номида мешавад. Нишонаҳои оператори CASE аз нишонаҳои LABEL фарқ мекунанд, яъне дар фасли LABELнавишта намешаванд. Ин маънои онро дорад, ки твассути оператори гузариш ба ин нишонаҳо гузаштан мумкин нест. Қимати тағирёбандаи N яке аз нишонаҳои оператори CASE мебошад. Тарзи иҷрошавии ин оператор чунин аст: агар N яке аз қиматххои M1, M2, … MN-ро қабул кунад, онгоҳ оператори S1 иҷро мегардад ва пас навбат ба оператори баъди END омада дода мешавад; агар N яке аз қиматҳои K1, K2,…, KL- ро қабул кунад, онгоҳ оператори S2 иҷро мегардад ва пас идоракунӣ ба оператори баъди END омада дода мешавад ва ҳоказо. 7) Операторҳои сикл. Чӣ тавре медонем ҳангоми ҳалли бисёр масъалаҳо бо алгорифмҳое дучор моем, ки гурӯҳи амалҳо чунин карат такрор меёбанд, яъне табиати сиклӣ доранд. Аз ин рӯ дар ҳамаи забонҳои алгорифмӣ оператори сикл мавҷуд аст. Дар забони паскал се намуди оператори сикл мавҷуд аст. а) Сикли намудани WHILE (то даме ки). Намуди умумии ин оператор чунин аст: WHILE B DO S; Дар ин конструксия WHILE ва DO калимаҳои асосии забон буда, мувофиқан маънои «то даме ки» ва «иҷро кунед»-ро доранд; B- ифодаи мантиқӣ ва S -оператор мебошанд. Тарзи иҷрошавии ин оператор чунин аст: дар аввал ифодаи мантиқии B ҳисоб карда мешавад, агар ин қимат TRUE бошад, онгоҳ оператори S иҷро карда мешавад. Ва ин кор то қимати FALSE қабул намудани ифодаи B давом мекунад. Ҳангоми қимати FALSE қабул намудани B кори ин оператор хотима меёбад ва идоракунӣ ба оператори навбатӣ дода мешавад. б) Сикли намуди REPEAT. Намуди ин оператор чунин аст: REPEAT ГО UNTIL B; Дар ин навишт ГО-гурӯҳу операторҳо ва B -ифодаи мантиқӣ мебошанд; REPEAT ва UNTIL калимаҳои асосии забон буда, мувофиқан маъноҳои «такрор кунед» ва «то» -ро доранд. Тарзи иҷрошавии ин оператор чунин аст: то вақти дуруст қабул намуди ифодаи B гурӯҳи операторҳоро иҷро карда мешаванд. Ҳангоми қимати дуруст (TRUE) қабул намудани B кори оператор хотима меёбад ва навбат ба оператори оянда дода мешавад. в) Сикли намуди FOR (барои). Намуди ин оператор чунин аст: FOR I:= A1 TO A2 DO S; Дар ин конструксия FOR, TO ва DO калимаҳои асосии забон буда, мувофиқан маъноҳои «барои», «то» ва «иҷро кунед»-ро доранд; A1, A2 ифодаҳо буда (ё шакли INTEGER шакли CHAR), S -оператор мебошад. Тағирёбандаи I (ё шакли бутун ё символӣ) параметри сикл намида мешавад. Агар A1, A2 ададҳои бутун ва I тағирёбандаи шакли INTEGER бошад, онгоҳ қадам доимо 1 қабул карда мешавад. Дар ин ҳолат, барои ҳамаи қиматҳои I=A1 то A2 бо қадами 1 оператори S иҷро карда мешавад. Агар A1, A2 доимиҳои шакли символӣ бошанд, онгоҳ I бо тағирёбандаи шакли символӣ бошад. Эзоҳ. Дар ҳолати камшавии қиматҳои параметри сикл ин оператор чунин навишта мешавад: FOR I :=A2 DOWNTO A1 DO S; Дар ин навишт DOWNTO калимаи асосии забон буда, маънои «ба поён ба» -ро дорад. Дар ин ҳолат, ҳангоми адаҳои бутун будани A1, A2(A1 A2) қадам −1 қабул карда мешавад. 8) Оператори холӣ. Ҳангоми ҳалли бисёр масъалаҳо, вобаста ба иҷрошавии ин ё он шарт, ба мо зарурат пайдо мешавад, ки дар як ҳолат ҳисобкуниро давом диҳем ва дар дигар ҳолат ҳисобкуниро қатъ намоем. Дар чунин мавридҳо зарурати истифодаи оператори холӣ ба миён меояд. Оператори холӣ намуди зерин дорад: M: M — нишона. Ин оператор мувофиқи вазифаи худ, пеш аз калимаҳои асосии END ё END. навишта мешавад. Масалан, 20: END. ё 90: END Ба ин нишонаҳо, тавассути оператори GOTO гузашта мешавад. Аз конструксияи ин оператор бармеояд, ки оператори холӣ ягон амалро иҷро намекунад. 1) Баъзе иловаҳо оиди протседураи хориҷкунӣ. Чи тавре дар боло қайд карда будем, протседураи хориҷкунӣ намуди WRITELN (P1, P2, …, PN); дорад. Тавассути ин оператор қиматҳои P1, P2, …, PN дар файли OUTPUT навишта шуда, пас ба чоп дода мешаванд. Боз намуди WRITE (P1, P2,…, PN); низ истифода карда мешавад. Тавассути ин оператор қиматҳои P1, P2, …, PN фақат дар файли OUTPUT навишта мешаванд. Мо қайд карда будем, ки формати чопро транслятор муайян мекунад. Вобаста ба синфи МЭҲ формати чоп гуногун мебошад. Масалан, формати чоп барои МЭҲ Системаи Ягона чуни наст:
Шакл CHAR ALFA BOOLEAN INTEGER REEL M K Дарозии майдон 1 8 5 12 24 16
M-дарозии майдони умумӣ барои адад; K-дарозии майдон барои қисми касрии адад.
БОБИ II. ШАКЛҲОИ МУРАККАБ Дар забони паскал массивҳо, маҷмӯъҳо, навиштҳо ва файлҳо ба шаклҳои мураккаб дохил мешаванд.
2.1. МАССИВҲО Дар зери мафҳуми массив гурӯҳи охирноки маълумоҳои якхела (ҳамшакл) фаҳмида мешавад. Масалан, массиви ададҳои бутун ё массиви хонаҳо дар хиёбони Рӯдакӣ. Ҳар як элементи (онсори) массив тавассути номи массив ва индекс ишора карда мешавад. Вобаста ба миқдори индексҳои индексҳои элементҳо, массивро якченака, дученака, сечанака ва ғайра меноманд. Массивҳо дар математика ва забонҳои алгорифмӣ васеъ истифода карда мешаванд. Масалан, координатаҳои векторро массиви якченака, элементҳои матрисаро массиви дученака номидан мумкин аст. Массивҳоро ё дар фасли VAR ё дар фаслҳои TYPE ва VAR тасвир мекунанд. Тасвири массивҳо дар фасли VAR. Дар ин фасл массив чунин тасвир карда мешавад: A: ARRAY [TYPE1, TYPE2,…,TYPEN] OF TYPE C; Дар ин ҷо A -номи массив, ARRAY ва OF калимаҳои асосии забон буда, мувоқан маъноҳои (массив) ва (аз)-ро доранд. TYPE C — шакли элементҳои массивро тасвир мекунад ва шакли асосӣ (базавӣ) номида мешавад. TYPE1, TYPE2,…, TYPEN- шакли индексҳои массивро муайян мекунанд. Чи тавр мебинем, массиви N-ченаки A тасвир ёфтааст. Дар программа конструксияи дар боло оварда шуда баъди калимаи VAR ҷой дода мешавад. Тасвири массивҳо дар фаслҳои TYPE ва VAR.Чи тавре қайд кардем, массивҳоро дар фаслҳои TYPE ва VAR низ тасвир мекунанд. Намуди умумӣ: TYPE NOM= ARRAY [TYPE1, TYPE2,…,TYPEN] OF TYPE C; VAR A: NOM; Дар ин ҷо NOM-номи шакл (идентификатори дилхоҳ). Эзоҳ. Агар якчанд массив дорои индексҳои шакли якхела ва шакли базавии якхела бошанд, онгоҳ дар фасли VAR онҳоро дар як рӯйхат ҳамроҳ мекунанд. Бигузор массивҳои A,B,C,X дорои индексҳои шакли якхела шакли базавии якхела мебошанд. Онгоҳ дар фасли VAR: VAR A,B,C,X: ARRAY [TYPE1,…,TYPE N] TYPE C; Дар фаслҳои TYPE ва VAR: TYPE T= ARRAY [TYPE1, TYPE2,…,TYPEN] OF TYPE C; VAR A,B,C,X: T;
2.2. МАҶМӮЪҲО (SET) Дар забони Паскал бо маҷмӯъҳои охирноки A ва B шаклҳои зеринро иҷро кардан мумкин аст: 1) Ҷамъ, зарб ва аз як маҷмӯъ тарҳ кардани маҷмӯъи дигар.
Навишти муқарарӣ Навишт дар Паскал AB A+B Ab A*B A\B A-B
2) Ба ҳам муқоиса намудан. A=B, A< >B, A>=B, (B<=A). Тавассути амалҳои= ва < > муодилаи (баробар ё нобаробар будан) A ва B санҷида мешавад. Тавассути амалҳои>=, ё<= шарти ба A тааллуқ доштани B (ё A ва B) санҷида мешавад. Натиҷаи амалҳои=, < >, >=, <= ё TRUE ё FALSE мебошад. Ҳангоми истифодаи маҷмӯъҳо онҳоро дар программа бояд тасвир кард. Маҷмӯъҳоро ё дар VAR ё дар фасли TYPE ва VAR тасвир мекунанд. Тасвири маҷмӯъ дар фасли VAR намуди зерин дорад: VAR NM: SET OF TYPE C; Дар ин ҷо NM-номи маҷмӯъ; TYPE C-шакли базавӣ, яъне шакли элементҳои маҷмӯъ. Тасвири маҷмӯъ дар фаслҳои TYPE ва VAR чунин намуд дорад:
TYPE NS= SET OF TYPE C;
VAR NM: NS; Дар ин ҷо NS-номи шакл. Масалан, дар навишти VAR SOL: SET OF 1920..1950; A: SET OF CHAR; Ду маҷмӯъ SOL: ва A-тасвир ётаанд. Маҷмӯъи A-маҷмӯъи символӣ тасвир ёфтааст, яъне элементҳои он символҳо мебошанд. Маҷмӯъи SOL ҳамчун бутун тасвир ёфтаст ва метавонад дилхоҳ зермаҷмӯъи маҷмӯи [1920, 1921,…,1950]-ро қабул намояд. Якчанд имкониятҳои тасвирро дида мебароем: дар тасвири TYPE NM= SET OF 3..9; VAR X, Y, Z, T: NM; қиматҳои имконпазири тағирёбандаҳои X,Y, Z, T зермаҷмӯъҳои маҷмӯъи [3, 4, 5, 6, 7, 8, 9] мебошанд (маҷмӯъи холӣ ҳам). Баъди чунин тасвир мо навишта метавонем: X:=[4,5]; Z:=[5, 6, 3, 2]; Y:=[5, 7, 9]; T:=[3, 9, 7]; X:= Y+3; X:=Y*Z; T:=X-Y; ва ғайра. 3) Ҳангоми тасвири маҷмӯъҳо элементҳои маҷмӯъро ба таври зерин низ нишон додан мумкин аст: TYPE N=(1, 3, 5, 7, 9, 11); VAR K: SET OF N; ё TYPE= (L1, L2,…, LK); VAR X, Y: SET OF P; Баъди чунин тасвирҳо мо метавонем нависем: K:=[3, 5]; K:=[3, 7, 11, 5]; X:= [L1, L2]; Y:=[L5, L6, L9]; (K 11). Масалан, навиштиK:=[9,7,12]; ғалат аст, элементи 12 ба маҷмӯъи [1, 3, 5,7, 9, 11] шомил нест.
2.3. АМАЛИ IN Намуди умумӣ чунин аст: X IN A; Дар ин ҷо A -бузургии шакли SET яъне маҷмӯъ; X-бузургии шакли базавӣ, яъне элементи маҷмӯъ. Тавассути ин амал ба бузургии шакли SET шомил будан ё набудани бузургии шакли базавӣ санҷида мешавад. Ҳангоми X C қимати (X IN C) -TRUE ва ҳангоми X C қимати (X IN C)- FALSE мебошад. Дар ҳолатҳои алоҳида қимати X IN A метаваонад номуайян бошад. Масалан, ҳангоми тасвири VAR A: SET OF 1..50; X: INTEGER; баъди оператори X:=70; қимати (X IN A) метавонад муайян бошад.
2.4. НАВИШТҲО (RECORD) Дар забони Паскал навишт гуфта, ҷамъи охирноки майдонҳоро меноманд. Ҳар майдон дорои ном (идентификатори дилхоҳ) ва шакл мебошад. Майдонҳои гуногун метавонанд шаклҳои гуногун дошта бошанд. Номҳои майдонҳо ва шаклҳои онҳо ҳангоми тасвири навишт нишон дода мешаванд. Тасвири навишт дар фасли VAR намуди зерин дорад: VAR HOM: RECORD L1: r1; L2: r2,…, LK: rK END; Дар ин ҷо RECORD (навишт) ва END (охир) калимаҳои асосии забон буда, хизмати қавсҳои оператории кушояндаю пӯшандаро иҷро мекунанд. L1, L2,…, LK-номи майдонҳо ва r1, r2, …, rK- шаклҳои мувофиқи ин майдонҳо бошанд. L1, L2, …, LK метавонанд дар навбати худ рӯйхати майдонҳо бошанд. HOM-номи навишт мебошад. Шакли навишт дар фасли TYPE дар ҳолати умумӣ ин тавр навишта мешавад: TYPE T= RECORD ID 11, ID 12,…, ID 1 N: TYPE1;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ID N1, ID N2, …, ID NM: TYPE N END; Дар ин ҷо ID K-идентификатори (номи) майдонҳо, TYPE T-шакли майдонҳоо ва T-номи шакл мебошанд. Шаклҳои майдон барои шакли T асосӣ (базавӣ) номида мешаванд.
2.5 ОПЕРАТОРИ WITH ¬(ҲАМРОҲКУНӢ) Намуди ин оператор чунин аст: WITH A DO S; Дар ин ҷо A-номи тағирёбандаи шакли RECORD, S-оператор. Ҳангоми дар оператори S бо унсурҳои A кор кардан, номи A-ро навиштан шарт нест. Масалан: WITH OILA [PAD] DO BEGIN HOM:=7; RUS:=15; SOL:=1949 END.
БОБИ III. ПРОТСЕДУРАҲО ВА ФУНКСИЯҲО Дар ҳамаи забонҳои алгоритмии сатҳи баланд ва ҷумла дар забони алгоритмии Паскал низ протседураҳо ва функсияҳо васеъ истифода бурда мешаванд. Тавре, ки мо медонем, ҳангоми ҳалли масъалаҳои калонҳаҷм, дар бисёр мавридҳо ба мо лозим меояд, ки чандин борҳоро ҳисобу китобро аз рӯи як алгоритм анҷом диҳем. Дар чунин мавридҳо ба мо имконият дода мешавад, ки алгоритмро як бор тасвир намуда, дилхоҳ бор ба он муроҷиат намоем. Бояд қайд намоем, ки тарзи тасвири протседураҳо ва функсияҳои Паскал ба тарзи тасвири подпрограммаҳо (SUBROUTINE) функсияҳои (FUNCTION) забони FORTRAN наздик мебошад. Дар забони Паскал протседураҳо ва функсияҳо дар фасли панҷуми программаи асосӣ тасвир карда мешаванд.
3.1. ПРОТСЕДУРАҲО Протседура аз ду қисм: сарлавҳаи протседура ва тани протседура (блок) иборат мебошад. Сарлавҳаи протседура намуди зерин дорад: PROTCEDURE NP (<парметрҳои формалӣ>); PROTCEDURE — калимаи асосии забон буда, маънои зерпрограммаро дорад. NP-номи протседура (идентификатори дилхоҳ). Бояд қайд намоем, ки параметрҳои формалӣ дорои шакл мебошанд. Дар ҳолати умумӣ Тани протседура аз фаслҳои LABEL, CONST, TYPE, VAR протседураҳо ва аз функсияҳо, инчунин фасли операторҳо иборат мебошад (агар зарурият мавҷуд бошад). Инак протседура намуди зерин (дар ҳолати умумӣ) дорад: PROTSEDURE NP (<параметрҳои формалӣ>); LAREL; CONST; TYPE; VAR; Протседураҳо ва функсияҳо
BEGIN
END; Ҳангоми набудани зарурият, ғайр аз сарлавҳаи протседура ва фасли операторҳо, дигар фаслҳоро нанавиштан мумкин аст.
3.2. ОПЕРАТОРИ ПРОТСЕДУРА Ба протседура тавассути оператори протседура муроҷиат карда мешавад, ки намуди он чунин аст: NP(<параметрҳои аслӣ>); Бояд миқдор ва шакли параметрҳои формалию аслӣ ба ҳам мувофиқ оянд. Дар ин маврид, параметрҳои формалӣ ба параметрҳои аслӣ иваз карда мешаванд ва протседура ҳамчун программаи воқеъӣ иҷро карда мешавад.
3.3. ПАРАМЕТР-ТАҒИРЁБАНДА Ҳоло ҳолатеро пеши назар меорем, ки гурӯҳи параметрҳои формалиро тағирёбандаҳо ташкил медиҳанд. Агар пеш аз як қисми параметрҳои формалӣ калимаи асосии VAR омада бошад, онгоҳ чунин параметрҳоро параметри тағирёбанда меноманд.
3.4. ПАРАМЕТР-ҚИМАТ Он тағирёбандаҳое, ки ба сифати параметри формалӣ омадаанд ва дар рӯйхатиVAR вуҷуд надоранд, параметр-қимат номида мешаванд. Ҳангоми муроҷиат ба протседура ин параметрҳо ба қимати параметрҳои аслии ба худ мвофиқ иваз карда мешаванд.
3.5. ФУНКСИЯ Функсия нисабат ба протседура конструксияи содда мебошад. Алгоритме, ки дар он фақат як қимат ҳисоб карда мешавад, чун қоида ба намуди функсия тасвир карда мешавад. Функсия ҳам ба мисли протседура аз сарлавҳа ва блок иборат мебошад. Сарлавҳаи функсия дар намуди умумӣ чунин аст: FUNCTION NF (P1: T1;…; PK: TK): TYPE; P1, P2,…, PK- параметрҳои формалӣ; T1, T2,…, TK-шаклҳои параметрҳои формалӣ; NF-номи функси (идентификатори дилхоҳ); TYPE-шакли функсия (шакли натиҷа). Ба функсия чун функсияҳои стандартӣ аз дилхоҳ ифода муроҷиат кардан мумкин аст. Барои ин кифоя аст, киноми он ва параметрҳои аслиро нишон диҳем.
ZIYO 2012