Пешгуфтор 
 Ҳамқадам бо асру бо даврон мебояд будан,
 Бо хабар аз илму аз ирфон мебояд шудан.
 Ҳеҷ роҳе нест, ки бепоён бошад дар ҷаҳон,
 Бо ирода бо ҳавас бо ҷон мебояд шудан.
 (Муллошараф Арабов) 
 Барноманависӣ низ ҳунар буда, бо мақсади бартараф
 намудани баъзе мушкилоти ҷомеа бо истифода аз ягон забони
 барноманависӣ навишта мешавад. Вақте ки шахс барнома
 менависад, метавонад ба компютер ҳамчун роҳбар муомила кунад.
 Барои навиштани барнома забонҳои барноманависии зиёде
 мавҷуданд, ки аз байни онҳо якчанд забон маъмулу машҳур ва
 пурқудрат буда, мавриди писанди барномасозон ва омӯзандагон
 гардидаанд. Забони PascalABC.NET низ аз зумраи чунин забонҳост.
 Забонҳои барноманависӣ бо гузашти замон такмилу густариш
 меёбанд. Забони PascalABC.NET дар айни ҳол низ дар ҳолати рушд
 ва инкишоф қарор дорад. 
 Баъди соҳибистиқлол гардидани Тоҷикистон, чӣ дар
 мактабҳои миёна ва чӣ дар коллеҷу донишгоҳҳо омӯзиши компютер
 ва барномасозӣ ба роҳ монда шудааст. Вале мутаасифона, то кунун
 адабиёти фарогири ин соҳа бо забони давлатӣ кам ба чашм мерасад.
 Аз ин хотир, муаллиф кӯшиш ба харҷ додааст, ки барои хонандагон
 ин китобро пешкаш намояд. 
 Китоби мазкур тарзе навишта шудааст, ки хонандагони он
 метавонанд бе ягон душворӣ ва доштани маълумоти иловагӣ ба
 ғайр аз информатикаи мактабӣ, асосҳои барноманависиро ба таври
 комил омӯзанд. Барои ин зарур аст, ки ҳар мавзӯъро бодиққат
 хонда, барномаҳои овардашударо таҳлил кунанд. Дар охири ҳар боб
 барои мустаҳкамкунӣ саволҳо ва мисолҳои мувофиқ барои кори
 мустақилона оварда шудааст. Мақсади овардани ин мисолҳо аз он
 иборат аст, ки хонанда дониши омӯхтаашро санҷида, маҳорати
 барноманависиашро сайқал диҳад. 
 Китоб бобро дарбар гирифта, ҳамчун воситаи асосӣ барои
 азхудкунии асосҳои барноманависӣ дар забони 
 PascalABC.NET/Паскал ба ҳисоб меравад. Аз ин китоб хонандагон
 метавонанд, дар як муддати кӯтоҳ асосҳои забони Паскалро ба
 таври пурра омӯхта, заминае барои омӯзиши забонҳои дигар пайдо
 кунанд. 
 Бояд қайд кард, ки ин китоб натанҳо ҳамчун воситаи
 худомӯзӣ, балки воситаи методиву таълимӣ низ ба ҳисоб меравад.
 Ҳамаи барномаҳои ин китоб дар компютер иҷро ва тест карда
 шудаанд. 
 Дар охири китоб феҳристи васеи адабиёт ҷой дода шудааст,
 ки барои пурратар омӯхтани забони PascalABC.NET/Паскал кӯмак
 мекунанд. 
 Аз баски ин китоб бори аввал чоп мешавад, шояд он аз
 нуқсону ғалатҳо орӣ набошад. Аз ин рӯ, муаллиф аз ҳамаи
 хонандагон эҳтиромона хоҳиш менамояд, ки ҳар гуна фикру
 мулоҳизаи хешро оид ба мазмуни китоб ба нишонаи (почтаи)
 электронии cool.araby@mail.ru ирсол намоянд. 
 Мо умедворем, ки фикру дархости беғаразонаи Шумо барои
 беҳтар шудани сифати китоби мазкур дар оянда кӯмак хоҳанд кард.
 Муаллиф ба шахсоне, ки фикру мулоҳизаҳои худро оид ба
 мазмуни китоб беғаразона ба онҳо мерасонанд, қаблан 
 миннатдории худро баён месозад. 
 Муаллиф ба муқарризон Мирзоахмедов Ф., Замонов М.З.,
 Негматова Г.Д., Ашӯров Х.М., муҳаррир Абдукаримов М.Ф. ва
 дигар шахсоне, ки дар рафти навиштани китоб маслиҳатҳои муфид
 дода, таваҷҷуҳ зоҳир намуданд, миннатдории бепоёни худро баён
 месозад. 
 БОБИ. МАЪЛУМОТИ УМУМӢ ДОИР БА ЗАБОНИ 
 БАРНОМАСОЗИИ PASCALABC.NET /ПАСКАЛ 
 Таърихи пайдоиши забони Паскал 
 Соли профессори шветсариягии институти технологии
 (www.ethz.ch) шаҳри Тсюрих, Никлаус Вирт (Nicklaus Wirt) дар
 бораи забони барноманависии нав бо номи Паскал маводеро нашр
 намуд. Ӯ номи математик ва философи асри -ро, ки нахустин
 шуда, калкулятори механикиро сохтааст, яъне Блез Паскалро ба
 забони барноманависии худ гузошт. Забони Паскал асосан барои
 омӯзиши барноманависӣ сохта шудааст. 
 Ҳангоми сохтани забони мазкур Вирт кӯшиш ба харҷ дод, ки
 консепсияи барноманависии сохтаёфтаро дар Паскал ба кор барад.
 Барноманависии сохтаёфта навъи барноманависие мебошад, ки дар
 он сохтори барнома ба намуди дарахтшакли (иерархияи) модулҳои
 бо ҳам алоқаманд, ки дар ҳар кадомашон операторҳои бахшиш,
 шартӣ ва даврӣ пайдарпай навишта ва иҷро карда мешаванд,таркиб
 ёфтааст. 
 Ин навъ барноманависиро аввалин маротиба олими 
 ҳолландӣ Эдсгер Дейкстрӣ (Edsger Dijkstra) кор карда баромадааст.
 Соли Н. Вирт дар яке аз конфронсҳо дар Рим, оиди
 забони Паскал маърӯза намуд. Дейкстрӣ бошад, дар бораи
 “барноманависии сохтаёфта”. Дар маърузаи худ Дейскри қайд
 намуд, ки ҳангоми сохтани дилхоҳ алгоритм метавон аз оператори
 гузариш истифода накарда, ба ҷойи он пайдарпай ва қисм-қисм
 барномаро иҷро намуд. Дар ин сурат барнома ба намуди “аз боло ба
 поён" навишта мешавад, яъне аввал модулҳои бузург ва баъд
 модулҳои кӯчак иҷро карда мешаванд. Мақсади асосии ин навъ
 барноманависӣ даст кашидан аз оператори гузариш буд. Зеро то ин
 дам ҳамаи барномаҳоро оператори гузариш идора мекард.
 Оператори мазкур суръати иҷроиши барномаро суст намуда,
 қобиляти хоноии онро кунд менамояд. 
 Дар ин конфронс Вирт ақидаи Дейкстрӣ-ро омӯхта, онро дар
 Паскал истифода намуд. Илова бар ин, элементҳои беҳтарини
 забони Алголро низ дар Паскал илова кард. Ҳангоми сохтани Паскал
 Вирт кӯшиш ба харҷ дод, ки қисматҳои асосии Паскалро ба намуди
 модулҳои аз ҳамдигар новобаста нависад. 
 Илова бар ин, Вирт дар сохтани забонҳои дигар низ иштирок
 намудааст. Ба монанди Modula ва Modula. Соли бошад, Вирт
 дар бораи забони Алгол маводеро нашр намуд. Забони дигари
 сохтаи Вирт ин забони Оберон мебошад, ки дар он воситаи
 барноманависии ба объектҳо нигаронидашуда истифода шудааст.
 Забони мазкурро вай соли барои компютерҳои фардии -
 разрядаи Ceres, ки дар асоси протсессорҳои RISC NS кор
 мекарданд, сохтааст. 
 Ба имконҳои дигар забонҳо нигоҳ накарда, ширкати Борланд
 махсус ба забони Паскал диққати ҷиддӣ дод. Аз ин рӯ забонҳои
 дигар ба монанди Модула ва Оберон қудрати худро аз даст доданд.
 Имконҳои забонҳои Модула ва Оберон дар версияи Паскал,
 ки Делфӣ ном дорад, бештар истифода шудаанд. Дар ибтидо забони
 Делфӣ ба варианти классикии Паскал шабоҳат дошт. Сипас, ба он
 баъзе имконяиҳои нав илова намуданд, ки дар натиҷа хеле густариш
 ёфт. 
 Хосияти асосии забони Паскал - ин ба таври кулли
 типикунонидашуда ва барноманависии сохтаёфта (зербарномавӣ)
 ба ҳисоб меравад. 
 Версияи нахустини забони Паскал аз хатогиҳо орӣ набуд.
 Масалан, дар он имкониятҳои ба функсия равон кардани массивҳо,
 воситаи қулайи кор бо хотираи динамикӣ, истифодаи 
 зербарномаҳои дар дигар забонҳо навишташуда ва ғайра вуҷуд
 доштанд. Ба таври комил забони Паскалро дар ҳамон вақт У. Брайан
 таҳлил намуда, соли ҳамаи камбудиҳои забони Паскалро дар
 мақолае бо номи “Барои чӣ Паскал забони дӯстдоштаи ман ба ҳисоб
 намеравад” баён кард. Ин мақола вақте чоп шуд, ки дар он замон
 аллакай забони Модула- вуҷуд дошт. Якчанд хатогиҳои дигар
 Паскал соли аз тарафи стандарти ISO бартараф карда шудаанд..
 Аз соли сар карда, забони Паскал забони асосии
 омӯзишӣ қарор гирифт. Ибтидо соли дар СССР барои омӯзиш
 дар мактабҳои миёна, забони Паскал ҳамчун асосҳои информатика
 ва техникаҳои ҳисоббарорӣ мавриди истифода қарор гирифт.
 Яке аз компиляторҳои машҳури Паскал, ки солҳои дароз
 истифода мешавад, Turbo Pascal мебошад, ки аз тарафи ширкати
 Borland барои системаҳои омилии DOS сохта шудааст. 
 Компилятори дигари Паскал бо номи Delphi барои системаҳои
 омилии Windows низ сохта шудааст. Ҳар ду компиляторҳо хело
 маъмул ва машҳур мебошанд. 
 Таърихи пайдоиши забони Делфӣ 
 Дар соли барноманавис Андерс Ҳейлсберг (Anders
 Hejlsberg) барои компютерҳои фардии Nascom-, ки дорои
 протсессори Z буданд, компилятори Blue Label Pascal-ро сохт.
 Компилятори мазкур аз тарафи ширкати Борланд литсензия карда
 шуд. Таҳти сарварии Ҳейлсберг соли ширкати Borland муҳити
 интегронидашудаи коркарди нахустини Паскалро бо номи Turbo
 Pascal. барои компютерҳои фардии IBM PC сохт. Компилятори
 сохташуда доллар арзиш дошт. Дар компилятори мазкур
 таҳриргар, отладкаи (хатозудоии) сода, муҳити иҷроиш ва муқоваи
 матнӣ вуҷуд дошт. 
 Соли бо сарварии Никлаус Вирт дар фирмаи Apple бо
 номи Object Pascal версияи васеъшудаи Паскал сохта шуд.
 Соли Ҳейлсберг ба ширкати Microsoft ба кор гузашт.
 Маҳз бо кӯшишу талоши Ӯ забони C# сохта шуд, ки алҳол сабаби
 тараққиёти технологияи.Net гардидааст. 
 Миёнаҳои соли Ҳейлсберг ба сохтани муҳити графикии
 Паскал шурӯъ намуд. Дар натиҷа соли бо номи Делфӣ муҳити
 графикии Паскал ба фурӯш бароварда шуд. Фарқияти асосии Делфӣ
 нисбат ба версияҳои дигари Паскал дар он буд, ки дар Делфӣ
 воситаи хуби лоиҳасозӣ ва кор кардан бо равзанаи форм вуҷуд дошт.
 Сар карда аз версияи нахустин МИК-и Делфӣ манбаи додаҳои
 шакли муштарӣ-серверро пуштибонӣ мекард. 
 Муҳити интегронидашудаи коркард 
 Делфӣ аз номи шаҳри Юнони қадим, ки маркази одамони
 ҳотиф ба ҳисоб мерафт, гирифта шудааст. Дар он замон ширкати
 бузурги созандаи сервери манбаи доддаҳо бо номи Oracle (оракул)
 вуҷуд дошт. 
 Дар ибтидо мехостанд Делфиро AppBuilder (созандаи лоиҳа)
 ном гузоранд, аммо пеш аз пайдоиши Делфӣ дар ширкати Novell бо
 номи Visual AppBuilder компилятор аллакай мавҷуд будааст. Аз ин
 рӯ, ба менеҷери ширкати Борланд зарур омад, ки маҳсулоташро
 Делфӣ номгузорӣ кунад. 
 То ҳол қариб ҳар сол версияҳои нави Делфӣ пайдо мешаванд.
 Соли Делфӣ пайдо шуд. Соли бошад, Делфӣ бароварда
 шуд, ки имконияти кор кардан бо компонентҳои Web-технологияро
 дар сатҳи кооперативӣ фароҳам меовард. 
 Ба ҳамин монанд, ҳар сол версияҳои нав ба нави Делфӣ пайдо
 шудан гирифтанд. Соли Делфӣ, соли Делфӣ, соли 
 Делфӣ, соли Делфӣ ва ғайра. 
 Нисбат ба версияҳои дигар Делфӣ мукаммалтар буда, айни
 ҳол истифода бурда мешавад. 
 Соли Делфӣ пайдо шуд, ки версияи нахустини Делфӣ
 дар зери платформаи.Net ба ҳисоб меравад. Дар ин версия
 имконияти кор кардан бо компонентҳои.Net ва китобхонаҳои нави
 Борланд VCL.Net вуҷуд дошт. 
 Соли Delphi пайдо шуд, ки дар он 
 истифодабаранда метавонист технологияи.NET ро истифода барад
 ё набарад. 
 Соли версияи Delphi пайдо шуд, ки қисми набори
 маҳсулоти Borland Developer Studio (BDS) ба ҳисоб мерафт. Дар
 зери ин тамға Delphi, Delphi.NET, C++Builder ва C#
 Builder бароварда шудаанд. 
 Дар Юнони қадим шахсонеро ки ҳодисаҳоро пешгӯи карда, маслиҳатҳои бохирадона
 медоданд ҳотиф (Oracle) мегуфтанд. 
 Соли Turbo Delphi пайдо шуд, ки аз дигар маҳсулот бо
 мавҷудияти версияи ғайритиҷоратии Turbo Delphi Explorer фарқ
 карда, дорои ду версия буд: 
 Win; 
 Microsoft.NET 
 Дар моҳҳои апрел-майи соли ҳама интизори он буданд,
 ки версияи Делфӣ дар зери номи Highlander пайдо мешавад. Аммо
 ғайричашмдошт моҳи феврали соли Delphi пайдо шуд. Ин
 версияи Делфӣ танҳо барои сохтани замимаҳои намуди Win
 пешбинӣ шуда буд, яъне фарогири Delphi.NET., C#Builder ва
 С++Builder набуд. 
 Соли версияи Delphi Prism (for.NET) пайдо шуд, ки дар
 муқоиса бо дигар версияҳои Делфӣ дар он имконияти сохтани
 лоиҳаҳо барои версияҳои гуногуни Framework, аз ҷумла. ва.
 вуҷуд дошт. Маҳсулоти мазкур воситаҳои Windows Forms,
 ASP.NET, Windows Presentation Foundation (WPF), Silverlight,
 Parallel FX ва LINQ-ро пуштибонӣ мекард. 
 Соли версияи Delphi пайдо шуд, ки бо чунин
 хусусиятҳо аз версияҳои дигар фарқ мекард: 
 -ба намуди қарордодӣ пуштибонӣ кардани Юникод 
 -методҳои анонимӣ 
 -типи умумикардаи generics 
 Соли версияи Delphi пайдо шуд, ки он таркиби
 RAD Studio буда, ҳамроҳи он C++ Builder ва Delphi Prism
 низ вуҷуд доштанд. 
 Соли ширкати Embarcadero Technologies барои
 технологияи.NET – Delphi Prism -ро баровард. 
 Ибтидои соли дар таркиби RAD Studio Delphi XE пайдо
 шуд, ки номи Delphi XE - ро дошт. Дар ин пакет С++Builder, Delphi
 Prism ва RadPHP вуҷуд доштанд. 
 Ба ҳамин монанд, RAD Studio Delphi XE, RAD Studio Delphi
 XE, RAD ва Studio Delphi XE пайдо шуданд. 
 Қайд. Сар карда аз версияи Delphi то охирин версияи он
 имконияти навиштани барномаҳои консолӣ вуҷуд дорад. Дар
 барномаҳои намуди консолӣ метавон, барномаҳои Паскалро
 навишт. Бо дигар суханҳо, версияи консолӣ - ин Паскал дар дохили
 Delphi мебошад. Аз ин рӯ, дӯстдорони забони Паскал метавонанд аз
 он муҳит истифода баранд. 
 Сухане чанд роҷеъ ба технологияи.NET 
 Microsoft.NET Framework – ин маҷмӯи хизматрасониҳои
 шабакавӣ ва замимаи фаъоли пешрафтаи фирмаи Microsoft буда,
 бисёр вақт ба шакли кӯтоҳ.NET (дот нет ё нуқта нет хонда мешавад)
 низ навишта мешавад. Имрӯзҳо технологияи.NET-ро қариб ҳама
 дар шабака истифода мекунанд. 
 Аз нуқтаи назари техникӣ яке аз мақсадҳои сохтани.NET ин
 таъмини якҷоя коркунии барномаҳои дар забонҳои гуногун
 навишташуда мебошад. Масалан, классҳо ва методҳои 
 (зербарномаҳои) дар забони C++ барои Microsoft.NET
 навишташуда, метавонанд аз ҷониби метод ва класҳои дар Delphi
 навишташуда мавриди истифода қарор гиранд (даъват карда
 шаванд), ва ё ин ки дар C# метавон аз имкониятҳои Visual Basic.NET
 истифода кард ва ғайра. 
 Тавре қайд кардем,.NET имрӯзҳо хеле маъмул ва машҳур
 мебошад. Аз ин ҷост, ки дар таркиби (дистрибутиви) СО Windows
 ё Windows вуҷуд дошта, ҳангоми насби Windows / ба таври
 автоматӣ насб карда мешавад. 
 Маҳз ҳамин технологияи.NET буд, ки дар компилятори
 PascalABC.NET метавон, барномаҳои якчанд забонро аз ҷумла С#-
 ро навишт. Дар ин сурат барои баъзе забонҳо насби плагинҳои
 мувофиқ ҳатмӣ мебошад. 
 Стандартҳои забони Паскал 
 Соли Никлаус Вирт якҷоя бо Кетлин Ҷенсен (Kathleen
 Jensen) стандарти Паскалро кор карда баромаданд. Сипас, стандарти
 байналхалқӣ ISO ва стандарти миллии Америка забони Паскалро
 стандарт кунониданд. Баъдан се стандарти дигаре барои Паскал
 сохта шуданд, ки иборатанд аз: Unextended Pascal (ибтидоӣ),
 Extended Pascal (васеъшуда), Object-Oriented Extensions to Pascal
 (БОН васеъшудаи Паскал). Дар ҷадвали зерин стандартҳои Паскал
 бо солашон оварда шудаанд: 
 Стандартҳои Паскал 
 Ном Вариант Кӣ ва дар куҷо Соли 
 стандартро сохт сохтан 
 Pascal Ибтидоӣ Н. Вирт, Кетлин 
 Standard Йенсен 
 Pascal Ибтидоӣ ISO: 
 Standard ANSI/IEEE 
 X.: 
 Unextended Ибтидоӣ ISO: 
 Pascal 
 Extended Васеъшуд ANSI/IEEE 
 Pascal а X.: 
 ISO/IEC 
 Object- БОН ANSI/X-TR- 
 Oriented васеъшуда: 
 Extensions to 
 Pascal 
 Тавре қайд кардем, Object Pascal - ро ширкати Apple ва Turbo
 Pascal-ро ширкати Borland сохтааст. Аз ин рӯ, вазифаи асосии
 стандарт пешниҳоди стандарти ягонаи тарзи навиштани барномаҳо
 ва ислоҳи хатоҳои қаблӣ ба ҳисоб меравад. 
 Барноманависии ба объектҳо нигаронидашуда 
 Версияҳои замонавии Object Pascal 
 Қадами устувор дар тараққиёти забон - ин пайдоиши
 компиляторҳои ғайритиҷорати (озод) –и забони Паскал Free Pascal
 ва GNU Pascal ба ҳисоб мераванд. Компиляторҳои мазкур кӯчониши
 барномаи дар он навишташударо дар байни платформҳо ва
 системаҳои омилии гуногун таъмин мекунанд. Масалан, забони
 GNU Pascal зиёда аз платформ ва зиёда аз системаҳои омилии
 гуногунро пуштибонӣ мекунад. Free Pascal бошад, реҷаи якҷоягӣ ва
 мутобиқати шеваҳои гуногуни забонҳоро таъмин мекунад. Масалан,
 бо забони Turbo Pascal, Delphi ва ғайра пурра мутобиқат мекунад.
 Маҳз ин мутобиқат аст, ки дар аксар озмунҳои байналмилалӣ аз Free
 Pascal истифода карда мешавад. 
 Таърихи пайдоиши Pascal ABC ва Pascal ABC.NET 
 Соли кормандони факултети механика, математика ва
 илмҳои компютерии донишгоҳои Ҷанубии федералӣ (Ростов-на-
 Дону, Россия) бо роҳбарии С. С. Михайлкович забони Pascal ABC -
 ро сохтанд. Мақсади муаллифон сохтани муҳити омӯзишии
 барноманависии нисбатан замонавӣ, дар муқоиса бо Borland
 Pascal ва Turbo Pascal ва нисбатан сода назар ба Borland Delphi буд.
 Дар ин забон бисёр имконияти Delphi бо иловакуниҳои махсус
 истифода бурда шудаанд. 
 Интерпретатори PascalABC дар муҳити Delphi барои Win
 сохта шуда, татбиқи забон тақрибан бо Object Pascal мувофиқат
 мекунад. 
 Дар PascalABC амали ишорагари типикунонидашуда ва типи
 complex (барои кор бо ададҳои комплексӣ) илова карда шудааст.
 Забони Pascal ABC компилятори навъи front-end мебошад. Аз
 ин ҷост, ки он файли намуди.exe ҳангоми иҷроиш эҷод нанамуда,
 ба ҷойи он дар хотира дарахти барномаҳо месозад, ки онҳо тавассути
 интерпретатори дохилӣ иҷро карда мешаванд. Дар натиҷаи ин амал
 суръати иҷроиши барнома дар PascalABC тақрибан маротиба
 нисбат ба Borland Pascal, ва маротиба нисбат ба Borland Delphi
 оҳиста буд. 
 Ба ҳамаи ин нигоҳ накарда, дар ИДМ солҳои -
 PascalABC хеле маъмул шуд. Тақрибан солҳои системаи
 муосири барноманависӣ PascalABC.NET, ки дар зери Microsoft.NET
 кор карда, ҳангоми иҷроиш файлҳои иҷроишӣ (.exe) месохт, пайдо
 шуд. 
 Забони PascalABC.NET низ дар факултети механика,
 математика ва илмҳои компютерии донишгоҳи Ҷанубии Федералӣ
 (Ростов-на-Дону, Россия) сохта шудааст. PascalABC.NET забони
 сода, барои омӯзиш қулай ва ройгон мебошад. 
 Бояд қайд кард, ки PascalABC.NET ҳамчун як забон набуда,
 балки системаи барноманависӣ мебошад. Зеро дар он имконияти
 истифодабарии китобхонаҳои стандартии забонҳои дигари
 технологияи.NET-ро пуштибоникунанда: C#, Visual Basic.NET,
 Delphi.NET, Delphi Prism ва ғайра мавҷуд мебошад. 
 Тавре қайд кардем, компилятори PascalABC.-NET озод буда,
 метавон онро аз сомонаи “http://pascalabc.net” ба таври ройгон
 дастрас кард. Айни ҳол версияи. - и PascalABC.NET вуҷуд дорад,
 ки дар он имконияти сохтани замимаҳои Windows бо истифода аз
 Form ва компонентҳо вуҷуд дорад. 
 Ҳангоми насби PascalABC.NET. бо он якҷоя маводи
 зерин насб карда мешаванд: 
 гардонидашудаи пайғомҳо оиди хатогӣ дар вақти 
 иҷроиш); 
 маълумотнома оиди классҳои Framework ); 
 ҳои тайёр дар PascalABC.NET (chm файл, Мб). 
 Фарқияти PascalABC.NET аз PascalABC 
 Забони PascalABC.NET версияи замонавии PascalABC ба
 ҳисоб рафта, бо чунин хосиятҳо аз PascalABC фарқ мекунад:
 барноманависии дигар; 
 муқова ва ғайра. 
 Дар забони PascalABC.NET имкониятиҳои нав илова карда
 шудаанд ба монанди: 
 тағйирёбандаҳои навъи зербарнома; 
 ҳои += -= *= /= барои ададҳои ҳақиқӣ; 
 муаррифӣ: var a: integer:=; 
 умуми: var a:=қимат; 
 LinkedList, Dictionary, SortedDictionary; 
 ) 
 Хосиятҳои асосии забони Паскал 
 Забони Паскал забони барноманависии сатҳи боло буда,
 барои омӯзиши барноманависӣ воситаи хубе ба ҳисоб меравад.
 Барномаҳое, ки тавассути забони Паскал навишта мешаванд, аз
 нуқтаи назари навишти барнома сода буда, қобиляти даркашон осон
 ва бавуҷудоии хатогӣ дар онҳо камтар мебошад. 
 Бояд қайд кард, ки забонҳои барноманависӣ ба чор даста
 тақсим мешаванд: 
 Ассамблер; 
 (забони дархостҳо ва ғайра). 
 Забони Паскал барои омӯзиш созгор буда, дорои 
 хусусиятҳои хоси зерин мебошад: 
 навиштани ҳарфи калон аз хурд ҳеҷ фарқе надорад. Аз ин ҷо дар он
 дастурҳои зерин бо ҳам баробарқувва мебошанд: 
 For, FOR, FOR, fOR,... 
 мерасад; 
 Алифбои забони Паскал 
 Дилхоҳ забони гуфтугӯӣ барои навиштани маълумоти худ
 дорои алифбои хос мебошад. Алифбо имконияти навиштани фикру
 ақида ва дархостҳои одамонро фароҳам меорад. Забони Паскал дар
 қатори дигар забонҳои барноманависӣ низ дорои алифбои хос
 мебошад, яъне барнома аз рамзҳо (ҳарфҳо)-и забон сохта мешавад.
 Аломатҳои (элементҳои) асосии алифбои забони Паскал инҳо
 мебошанд: 
 “”, /, \,?, №,;, %,:,(),+,; 
 Ҳассосият ба ҳуруфот ва эзоҳ дар забони Паскал
 Забони Паскал нисбат ба ҳуруфот (регистр) ҳассос
 намебошад. Бинобар ин дар он навишти калимаҳоиABC, 
 Abc,ABc,aBC, AbC, abc аз ҳамдигар тафовуте надоранд. Дар
 забони мазкур калимаҳои калидӣ метавонанд бо ҳарфи хурд ё
 калон навишта шаванд. 
 Ҳангоми навиштани барнома қитъае аз рамзи (коди) барнома
 ва ё дастуреро, ки барои хонанда нофаҳмост, метавон эзоҳ дод. Эзоҳ
 аслан яксатра ва бисёрсатра мешавад. Эзоҳи яксатра бо ду рамзи
 хати каҷ (слеш) навишта мешавад. Масалан://Ин эзоҳи барнома аст.
 Ин сатрро барнома сарфи назар мекунад, яъне сатре, ки пас
 аз // навишта шудааст, хонда намешавад. Эзоҳи бисёрсатра бошад,
 дар дохили қавсҳои системавӣ “{ }” ё аломати “(* *)” навишта
 мешавад. Мисол: 
 { ин эзоҳи 
 бисёрсатра 
 аст } 
 (* ин эзоҳи 
 бисёрсатра 
 аст *) 
 Компилятор ва интерпретатор 
 Барномасоз бояд донад, ки забони барноманависӣ дар
 компютер хислати барномаро муайян мекунад, на роҳҳои иҷроиши
 онро. Барои иҷроиши барнома аз транслятор истифода бурда
 мешавад. 
 Транслятор (англ. translator) - ин барномаи тарҷумон буда,
 барномаи дар ягон забони барноманависӣ навишташударо ба
 варианти охирон, яъне фармонҳои мошинӣ ва ё коди мошинӣ
 табдил медиҳад. 
 Транслятор ба сурати компилятор ё интерпретатор истифода
 бурда мешавад. 
 Компилятор (англ. compiler) барнома ё маҷмӯае аз
 барномаҳои компютерӣ аст, ки матни дар забонҳои барноманависии
 сатҳи боло навишташударо хонда, онро ба забони сатҳи поён (Target
 Language), монанди Ассамблер ё забони сатҳи мошинӣ табдил
 медиҳад. (Дар компилятор амали тарҷумаи барнома якбора иҷро
 карда мешавад). 
 Интерпретатор (англ. interpreter — мутарҷим, мутарҷими
 шифоҳӣ) ба монанди компилятор кор карда, барномаро сатр ба сатр
 тарҷума ва иҷро мекунад. 
 Дилхоҳ забони барноманависӣ, вобаста аз мақсади сохтанаш
 дорои компилятор ё интерпретатор мебошад. Азбаски забони
 Паскал барои ҳалли масъалаҳо пешбинӣ шудааст, бинобар ин
 суръати иҷроиш дар он муҳим мебошад, аз ин рӯ, он аз компилятор
 истифода мекунад. 
 Забони Бейсик, ки барои навомӯзон сохта шудааст, аз
 интерпритатор истифода мекунад, яъне дар он барнома сатр ба сатр
 хонда ва иҷро карда мешавад. 
 Муҳити интегронидашудаи коркард 
 Муҳити интегронидашудаи коркард (МИК) ё IDE (Integrated
 development environment) - системаи воситаҳои барномавӣ
 мебошад, ки барноманависон онро барои коркарди таъминоти
 барномавӣ истифода мебаранд. 
 МИК дорои воситаҳои зерин мебошад: 
 Бисёр МИК-ҳои ҳозиразамон дорои мурургари (браузери)
 классҳо, равзанаи дарахтшакли объектҳо ва диаграммаи
 дарахтшакли классҳо (барои БОН) мебошанд. МИК- забонҳои
 Eclipse, Embarcadero RAD Studio, Qt Creator, NetBeans, Xcode ва
 Microsoft Visual Studio, Borland Delphi чунин аст. 
 Калимаҳои калидии забони Паскал 
 Яке аз хусусиятҳои забони Паскал дар он аст, ки аз
 калимаҳои монанд (мушобеҳ) бо калимаҳои гуфтугӯии рӯзмарра
 истифода мебарад. Баъзе аз ин калимаҳо дар Паскал маъно ва
 вазифаи хос доранд ва аз инру онҳоро калимаҳои калидӣ меноманд.
 Дар ҷадвали зерин калимаҳои калидии забони Паскал оварда
 шудаанд, ки ба онҳо бо тадриҷ дар мавзӯъҳои оянда шинос
 мешавем. 
 𝑠(cid:)(cid:) (cid:)(cid:)(cid:)(cid:) (cid:)(cid:) (cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:) (cid:)(cid:)(cid:) (cid:) (cid:)(cid:)𝑠(cid:)
 (cid:)(cid:)(cid:) (cid:)(cid:) (cid:)(cid:)(cid:)
 (cid:)(cid:) (cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)
 (cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)
 (cid:)ℎ(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)𝑠(cid:) 
 (cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:) (cid:) (cid:) (cid:)
 (cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:) (cid:) (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)
 Қайд. Ист и (cid:)фℎод(cid:)(cid:)а(cid:)и кали(cid:)м(cid:)(cid:)а(cid:)ҳои калидӣ ба сифати номи
 тағйирёбандаҳо, ф у н(cid:)к(cid:)с(cid:)иℎяҳо в(cid:)а(cid:) ғ(cid:)а(cid:)й(cid:)р(cid:)(cid:)а(cid:) мумкин нест.
 Идентификаторҳо (identifiers) 
 Идентификатор номе аст, ки ба унсурҳои забони Паскал
 гузошта мешавад. Бо суханҳои дигар, идентификатор аз
 пайдарпайии ҳарфу рақамҳо ва символҳои махсус таркиб ёфта,
 ҳангоми навиштани барнома барои номгузории объектҳои гуногун
 ба монанди: тағйирёбандаҳо, суроғаҳо, функсияҳо, файлҳо ва ғайра
 истифода бурда мешавад. Идентификаторҳо дар забони Паскал бо
 ду даста тақсим карда мешаванд: 
  идентификаторҳои стандартӣ; 
  идентификаторҳое, ки тавассути барномасоз муаррифӣ карда
 мешаванд. 
 Идентификаторҳои стандартӣ монанди калимаҳои калидӣ
 маънои хос доранд. Дар ҷадвали зерин асоситарини онҳо оварда
 шудаанд. Бо тадриҷ дар оянда ба онҳо шинос хоҳем шуд.
 (cid:)(cid:)𝑠 (cid:)(cid:) (cid:)(cid:)𝑠(cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:) (cid:) (cid:)(cid:)(cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:) (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)
 (cid:)ℎ(cid:)(cid:) (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)
 (cid:)ℎ(cid:) 𝑠(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)
 (cid:)(cid:)𝑠 𝑠(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 𝑠(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)
 (cid:)(cid:)(cid:)𝑠(cid:) (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:) (cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)
 Ҳангоми истифодаи идентификаторҳо бояд ба меъёрҳои
 зерин риоя кард: 
  идентификатор бояд бо ҳарфи лотинӣ ва ё рамзи махсуси хати
 поён (_) сар шавад. Ба мисли: abc, ABC, AB, ab, _abs, a, a,
 _a, a_b; 
  номи идентификатор танҳо аз ҳарфу рақамҳо ва рамзи хати
 поён (_) таркиб карда мешавад; 
  калимаҳои калидиро ба сифати идентификатор истифода
 бурдан қатъиян манъ аст; 
  дар Паскал ҳангоми номгузории идентификаторҳо байни
 ҳарфҳои калон ва хурд фарқ гузошта намешавад. Аз ин ҷо
 идентификаторҳои var, Var, VaR, VAR, vaR, vAr бо
 ҳамдигар баробармаъно мебошанд; 
  дарозии идентификатор набояд аз символ (рамз) зиёд бошад.
 (Дар стандарти ANSI миқдори символҳои идентификатор
 номаҳдуд аст. Дар Турбо Си идентификатор то символ шуда
 метавонад.); 
  идентификатор бояд, калимаи пайваст бошад. Ба монанди:
 My_num, speed_of_body, my_text_file ва ғайра; 
  ба ғайр аз рамзи хати поён (_) дигар рамзҳо, ба монандӣ *, @, /
 ва ғайра наметавонанд дар номи идентификаторҳо истифода
 шаванд. 
 Намунае аз идентификаторҳои дуруст: 
 var, my_var, a, a, my_file, my_num, my_real, _x.
 Намунае аз идентификаторҳои нодуруст: 
 var, a, my num, $num, @x, one*two. 
 Аз сабаби он ки Var калимаи калидӣ аст, бинобар ин он
 наметавонад ҳамчун идентификатор истифода шавад. 
 Идентификаторҳои боқимонда бошанд, аз қонуни номгузории
 идентификаторҳо берунанд, аз ин рӯ истифодаи онҳо мумкин нест.
 Саволҳо барои мустаҳкамкунӣ 
 шудааст? 
 аз тарафи кь сохта шудааст? 
 он вуҷуд дорад? 
 фикатор истифода кард? 
 БОБИ. ДОДАҲО, АМАЛҲО, ОПЕРАТОРҲО ВА 
 ИФОДАҲО ДАР ЗАБОНИ ПАСКАЛ 
 Муқаддима 
 Мо ҳар рӯз бо додаҳое сарукор дорем ва хостаҳои худро
 тавассути онҳо бароварда месозем. Масалан, барои хариду фурӯш
 бо додаҳое мисли сомонӣ, сомонӣ,, сомонӣ ва ғайра сарукор
 мегирем. Дар хона, ҷойи кор, кӯча, бозор ва ғайра аз номи меваю
 сабзавот, мисли картошка, помидор, тарбуз, ҳандала; номи одамон
 монанди Алӣ, Валӣ, Саид ва ғайра истифода мебарем. Акнун
 мебинем, ки забони Паскал бо ин додаҳо чӣ гуна бархурд мекунад,
 яъне он бо кадом навъи додаҳо сарукор дорад? Додаҳое, ки мо
 истифода мебарем, чӣ тавр дар хотираи компютер нигоҳ дошта
 мешаванд ва Паскал чӣ тавр дар байни онҳо фарқ мегузорад? Барои
 ба ин саволҳо ҷавоб гардонидан, навъи додаҳоеро, ки Паскал аз онҳо
 истифода мекунад муфассал мавриди баҳс қарор медиҳем.
 Бояд қайд кард, ки барои ҳалли ягон масъала дар дилхоҳ
 барнома бояд муайян бошад, ки додаҳо (data)–и он масъала чӣ
 гунаанд ва ба он додаҳо чӣ амал иҷро карда мешавад? Дар забони
 барномасозии Паскал ду намуди додаҳо мавҷуданд: доимӣ ва
 тағйирёбанда. Додаҳои доимӣ додаҳоеанд, ки дар тамоми тӯли
 барнома қимати худро тағйир намедиҳанд, аммо додаҳои
 тағйирёбанда бошанд, баръакс амал мекунанд, яъне қимати худро
 метавонанд дар дилхоҳ ҷойи барнома тағйир диҳанд, қимати нав
 қабул кунанд ва ғайра. Додаҳо метавонанд аз навъ (тип ё type)-ҳои
 гуногун иборат бошанд. Ба монанди бутун, ҳақиқӣ (касрӣ), рамзӣ,
 сатрӣ ва ғайра. Ба ғайр аз ин, додаҳо маҳаллӣ, умумӣ ва минтақавӣ
 мешаванд. Пеш аз истифодабарӣ додаҳо бояд муаррифӣ карда
 шаванд. Дар забони Паскал додаҳоро танҳо пеш аз оғози барномаи
 асосӣ метавон муаррифӣ кард. Дар вақти муаррифкунӣ аввал
 калимаи калидии var, сипас, номи дода ва пас аз номи дода аломати
 ду нуқта (:) навишта шуда, баъд навъи (типи) он нишон дода
 мешавад. Тарзи муаррифӣ намудани як дода ба сурати зерин аст:
 var номи_дода: навъи_дода; 
 Навъи додаҳо дар Паскал ба сурати зерин дастабандӣ карда
 мешаванд: 
 навъ аст; 
 метавон ба ғайр аз намуди муқаррарӣ боз ба намудҳои даҳӣ
 (decimal), ҳаштӣ (octal) ва шонздаҳӣ ( hexadecimal) истифода
 кард. 
 ҳақиқӣ дар якҷоягӣ; 
 шуморишӣ ва арифметикӣ дар якҷоягӣ. Аз сабаби он ки ин навъ
 додаҳо бо додаҳои навъи худ қобили муқоиса ҳастанд, бинобар
 ин онҳоро скалярӣ мегӯянд. Яъне, барои онҳо операторҳои
 муқоиса ҷой доранд; 
 мешаванд: массивҳо, сохторҳо (structures) ва қисмҳо (union).
 Ин навъ додаҳо барои сохтани тағйирёбандаҳое, ки ба таври
 мантиқӣ ба ҳамдигар алоқаманданд, истифода бурда мешаванд. Дар
 оянда ба ин навъ додаҳо пурратар шинос мешавем. 
 Додаҳои намуди тартибӣ 
 Ба додаҳои намуди тартибӣ типҳои бутун, мантиқӣ, рамзӣ,
 шуморишӣ ва фосила дохил мешаванд. Ҳоло ҳар яке аз ин типҳоро
 мавриди баҳс қарор медиҳем. 
 Додаҳои навъи ададӣ 
 Додаҳои навъи адади дар Паскал бо ду даста тақсим карда
 мешаванд: бутун ва ҳақиқӣ. Адад (дода)-ҳои бутун ададҳое ҳастанд,
 ки дар навишти онҳо аломати вергул иштирок намекунад. Ададҳои
 ҳақиқӣ бошанд, тавассути аломати вергул (дар Паскал нуқта)
 навишта мешаванд, ки қисми пеш аз вергулро қисми бутун ва
 қисмати пас аз вергулро қисми ҳақиқӣ мегӯянд. Аз ин ҷо шояд чунин
 саволе пайдо шавад: додаҳои навъи бутунро метавон ба сурати
 ҳақиқӣ, ки қисми ҳақиқии онҳо сифр мебошад, ифода кард. Пас, дар
 Паскал чаро аз навъи бутун истифода бурда мешавад? Сабабаш дар
 он аст, ки дар аксар компютерҳо ҳисобкунӣ бо ададҳои бутун нисбат
 ба ададҳои ҳақиқӣ саҳеҳтар аст ва фазои ҳофизае, ки барои ададҳои
 бутун ҷудо карда мешавад, нисбат ба фазое, ки барои ададҳои
 ҳақиқӣ ҷудо карда мешавад, камтар аст. Аз тарафи дигар, тамоми
 ададҳо (додаҳо) дар ҳофизаи компютер ба намуди дуӣ захира карда
 мешаванд. Аз ин рӯ, тарзи захираи ададҳои бутун аз ададҳои ҳақиқӣ
 фарқ мекунад, бинобар ин шакли дӯии ададҳои ва, гуногун
 аст. 
 Додаҳои навъи бутун дар навбати худ ба якчанд гурӯҳ тақсим
 карда мешаванд. Дар ҷадвали зерин ҳамаи навъҳои бутун ва фосилаи
 қиматҳои онҳо оварда шудаанд: 
 № Навъ Фосилае, ки аз он Дарозӣ бо 
 қимат қабул мекунад байт 
 (cid:)(cid:)(cid:)(cid:) … 
 𝑠ℎ(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) −… 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) −… 
 (cid:)(cid:)(cid:)(cid:)... 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) −… 
 − 
 𝑠(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) − 
 Намунае аз додаҳои навъи бутун иборатанд аз,,, 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) − 
 ва ғайра. 
 Қайд. Мувофиқати баъзе типҳои бутуни забонҳои С/C++ бо
 забони Паскал дар ҷадвали зерин оварда шудаанд: 
 № Баъзе типҳои Мувофиқати онҳо 
 бутуни С/ C++ дар Паскал 
 (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 𝑠ℎ(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) 𝑠(cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)
 𝑠(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)ℎ(cid:)(cid:) 𝑠ℎ(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)
 Додаҳои н(cid:)а(cid:)в𝑠ъ(cid:)и(cid:) (cid:)ҳ(cid:)ақ(cid:)и (cid:)қℎӣ(cid:) б(cid:)о ду тарз ист(cid:)и(cid:)ф(cid:)о(cid:)да карда метавонем.
 Тарзи якум, нам(cid:)у(cid:)ди𝑠(cid:) (cid:)м(cid:)уқ(cid:)а(cid:)р (cid:)р(cid:)а(cid:)р(cid:)ӣ, яъне байни қ−исми бутун ва касрии
 адади ҳақиқӣ аломати вергул (дар забони Паскал нуқта (dot))
 гузошта мешавад. Масалан,.,.,, ва ғайра.
 Тарзи дуюм ки scienti ficnotation номида мешавад. Як навъи
 кӯтоҳнависӣ дар қолаби дараҷагӣ (экспонентсиалӣ) буда, дар он
 адад ба ду қисм ҷудо карда мешавад: қисми мантиса (montica) ва
 қисми дараҷа (exponent). Қисми дараҷагӣ одатан пас аз қисми
 мантисаса меояд. Байни ин ду қисм ҳарфи Е навишта мешавад, ки
 он ҳарфи аввалаи калимаи Exponent-дараҷа мебошад. Қисми
 дараҷагӣ бояд дар нишондиҳанда (ё дараҷа)-и омада, ба мантиса
 зарб шавад. Тарзи умумии тасвири адад бо ин равиш шакли зеринро
 дорад:. 
 Дар ин ҷо m-мантисаа (қисми бутуни адад), E-ишораи дараҷа
 ва p бошад, дараҷа ё қисми дар(cid:)аҷ(cid:)а ±ме(cid:)бошад. Ба мисолҳои зерин
 таваҷҷуҳ фармоед: 
 Бояд қайд кард, −ки қимати дараҷа наметавонад адади
 Е− = ∗ = ∗ =, 
 ғайрибутун бошад. 
 Додаҳои навъи ҳақиқӣ низ ба якчанд даста тақсим карда
 мешаванд. Дар ҷадвали зерин ҳамаи навъҳои ҳақиқӣ ва фосилаи
 қиматҳои имконпазири онҳо оварда шудаанд: 
 № Навъ Фосилае, ки аз он қимат Дарози бо 
 қабул мекунанд байт.E-….E.E-….E 
 𝑠(cid:)(cid:)(cid:)(cid:)(cid:).E-….E 
 (cid:)(cid:)(cid:)(cid:).E-….E 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:).….Е 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:).….Е 
 (cid:)(cid:)(cid:)(cid:) 
 Дар ин ҷадвал ҳарфи Е намуди экспонентсиалии (дараҷагии)
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 –и адади ҳақиқиро ифода мекунад. Масалан, адади.Е- ба
 баробар аст. Дар ин ҷадвал сутуни дарозӣ бо байт дарозии ҳар
 як −типро бо байт ифода мекунад (мушаххас мекунад, ки барои кад.ом∙
 навъ чӣ қадар байт аз фазои ҳофиза лозим аст). Намунае аз ададҳои
 ҳақиқӣ иборатанд аз: /, /, /,. ва ғайра.
 Қайд: Типи Real барои якҷоякоркунии версияҳои кӯҳнаи
 Delphi ва Borland Pascal сохта шудааст. Қолаби ин тип барои оилаи
 протсессорҳои Intel ноқулай мебошад, аз ин ҷо иҷрои амалиёт бо
 типи Real нисбат ба типҳои дигар оҳистатар (дертар) мебошад.
 Тавре қайд кардем, адади ҳақиқии дараҷаи - ро метавон
 тавассути ҳарфи Е навишт. Масалан, адади – ро метавон низ
 ба чунин тарз ифода кард кард: Е ё Е ё.Е ё Е.
 Қайд. Ба ғайр аз ин типҳои ададӣ дар ∙муҳити.NET типҳои
 нав пайдо шуданд. Дар ҷадвали зерин якчандтои онҳо оварда
 шудаанд. 
 № Навъ Фосилае, ки аз он қимат Дарозӣ 
 қабул мекунад бо байт 
 -... 
 (cid:)(cid:)(cid:) до 
 (cid:)(cid:)(cid:)(cid:) 
 Додаҳои навъи мантиқӣ 
 Додаҳои навъи мантиқӣ додаҳоеанд, ки аз ду қимати
 имконпазир true (ҳақ) ва false (ноҳақ) метавонанд танҳо якеашро
 қабул кунанд. Бо суханҳои дигар, агар қимати тағйирёбандаҳои
 навъи ададӣ ягон адад бошад, қимати тағйирёбандаҳои навъи
 мантиқӣ танҳо true (ҳақ) ё false (ноҳақ) шуда метавонад. Типҳои
 мантиқии забони Паскал дар ҷадвали зерин оварда шудаанд:
 № Тип Андоза 
 байт 
 байт 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 байт 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 байт 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)
 Дар Object Pascal типи асосии мантиқӣ ин Boolean ба ҳисоб
 меравад. Типҳои боқи 
 (cid:) 
 м 
 (cid:)(cid:) 
 он 
 (cid:) 
 д 
 (cid:) 
 а 
 (cid:) (cid:) 
 б 
 (cid:) 
 арои якҷоякоркунӣ бо дигар забонҳо
 ва системаҳои омилӣ пешбинӣ шудаанд. 
 Тағйирёбандаҳои навъи Boolean метавонанд танҳо дорои
 қимати true (ҳақ) ё false (ноҳақ) бошанд, аммо тағйирёбандаҳои
 навъҳои ByteBool, WordBool ва LongBool метавонанд қиматиҳои
 гуногун қабул кунанд. Барои навъҳои мазкур дилхоҳ адади нулӣ
 ҳамчун False ва қимати ғайринулӣ ҳамчун True фаҳмида мешавад.
 Қайд. Дар забони Паскал барои навъҳои мантиқӣ 
 нобаробарии false<true ҳамавақт ҷой дорад. 
 Додаҳои навъи (типӣ) рамзӣ 
 Додаҳои навъи рамзӣ тавассути калимаи char муаррифӣ
 гардида, ба таври пешфарз дар хотира як байт ҷойро ишғол
 мекунанд. Мувофиқи кодгузории стандарти ASCII (American
 Standard Code for Information Intercheng) ва ebсd (extended binary-
 coded decimal interchange code) ҳар як рамз дорои коди муайян аст.
 Дар забони Паскал рамзҳо дар дохили нохунаки якто-якто
 (апостроф) навишта мешаванд. Дар типи рамзӣ варианти
 васеъшудаи символҳои ASCII нигоҳ дошта мешаванд. Сохтори
 кодҳои варианти васеъшудаи ASCII иборатанд аз: 
 мешавад: қисми I (стандарти ASCII) – коди рамзҳои аз то,
 қисми II коди символҳои аз то. 
 – символҳои идоракунанда (..); 
 – рақамҳо (..); 
 – ҳарфҳои калони алифбои лотинӣ (..); 
 – ҳарфҳои хурди алифбои лотинӣ (..); 
 – аломатҳои нуқтагузорӣ (препинания); 
 –рамзҳои алифбоҳои миллӣ (масалан русӣ); 
 – аломатҳои нуқтагузорӣ (препинания); 
 – символҳои псевдографикӣ. 
 Рақамҳо ва символҳои алифбо бефосила дар ҷадвал ҷойгир
 карда шудаанд. Масалан, рақами ’’ дорои коди, рақами ’’
 дорои коди, рақами ’’ дорои коди ва ҳоказо рақами ’’
 дорои коди мебошад. 
 Ба ҳамин монанд, барои алифбои лотинӣ ҳарфи ’А’ дорои
 коди, ҳарфи ’В’ дорои коди ва ғайра мебошад. 
 Типи символӣ типи ба тартибгузошта мебошад. Тартиби
 коди символҳо дар ҷадвали кодгузорӣ муайян карда шудааст. Аз ин
 ҷо бармеояд, ки символи ‘Z’ нисбат ба символи ’В’ калонтар
 мебошад. 
 Додаҳои навъи шуморишӣ 
 Дар зери мафҳуми додаҳои навъи шуморишӣ дастаи додаҳои
 бутуни доимӣ фаҳмида мешавад, ки ҳар яке аз онҳо дорои қимати
 муайян мебошад. Тарзи муаррификунии додаҳои навъи мазкур
 намуди зеринро дорад: 
 Type 
 Colors = (red, white, blue); 
 Ин навъ додаҳоро баъдтар мавриди баҳс қарор медиҳем.
 Додаҳои навъи фосила 
 Навъи(типи) фосила қисмати ягон типро дарбар мегирад.
 Тавре медонем, фосилаи қиматҳои навъи бутун аз - то 
 мебошад, ки тавассути калимаи integer муаррифӣ карда мешавад.
 Метавон қисме аз навъи бутунро, масалан, фосила аз то - ро
 интихоб карда, номе барои он гузошт ва дар ҳолати лозимӣ аз он
 истифода кард. Навъе ки қисмати навъи стандартиро (мавҷудро) дар
 бар мегирад, навъи фосила (subrange) номида мешавад. Барои
 эълони навъи фосила аз калимаи калидии type истифода бурда
 мешавад. Тарзи муаррифии ин навъ додаҳо чунин шакл дорад:
 type номи навъи фосила=сарҳади поёни..сарҳади болоӣ;.
 Барои номгузории тағйирёбандаҳои фосила низ аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. Қимати
 имконпазири ин навъ додаҳо метавонад дар байни сарҳади поёнӣ ва
 болоӣ мехобанд. Дастурҳои зеринро дар назар гиред. 
 type smalint=..; 
 subchar=’A’..’F’; 
 дар ин ҷо ду навъи фосила бо номҳои smalint ва subchar эълон карда
 шудаанд, ки smalint қимати аз то ва subchar қимати аз ’A’ то ’F’-
 ро қабул мекунад. Яке аз ҷиҳатҳои мусбати истифодаи навъи фосила
 сарфаҷӯии ҳофиза мебошад. Масалан, агар дар барнома фақат аз
 ададҳои фосилаи аз то истифода бурда шавад, истифодаи
 навъи бутун зарур набуда, кифоя аст, ки аз навъи фосила истифода
 карда шавад. 
 Навъҳои додаҳои сохторӣ 
 Ҳар як типи сохторӣ аз маҷмӯӣ элементҳо таркиб дода
 мешавад. Ҳар як элемент дар навбати худ метавонад ба типи
 сохторӣ дохил бошад. Ҳоло додаҳои ин навъро мухтасар дида
 мебароем. 
 Додаҳои навъи массив 
 Массив маҷмӯи додаҳои аз ҷиҳати навъ ба ҳамдигар монанд
 мебошанд, ки элементҳои он аз ҳамдигар танҳо бо рақами
 тартибиашон фарқ мекунад. Массив бо шакли зерин муаррифӣ карда
 мешавад: 
 <номи массив> = array [<индек>] of <тип>; 
 дар ин ҷо: 
 <номи массив> - номи дурусти идентификатор; 
 Array, of – Калимаҳои калидӣ; 
 <индекс> - рӯйхати индексҳои(зернависҳои) массив ва навъи
 онҳо; 
 <тип> - дилхоҳ типи Паскал. 
 Қайд. Мавзӯи массивҳоро баъдтар мавриди баҳс қарор
 медиҳем. 
 Додаҳои навъи record 
 Record – ин сохтори додаҳое мебошад, ки аз элементҳои
 гуногун сохта шудааст. Баръакси массивҳо элементҳои record
 метавонанд аз навъҳои гуногун таркиб ёфта бошанд. Сохтори
 муаррификунии додаҳои навъи мазкур чунин шакл дорад:
 <номи тип> = record <майдонҳо ё элементҳо> end; 
 дар ин ҷо: 
 <номи тип> -идентификатор буда, номи record-ро ифода мекунад;
 record, end – калимаҳои калидӣ; 
 Қайд. Азбаски record-ҳо як бахши бузургӣ барноманависӣ
 мебошанд, бинобар ин додаҳои ин навъро дар мавриди баҳс қарор
 намедиҳем. 
 Додаҳои навъи маҷмӯҳо 
 Маҷмӯъ – ин набори додаҳои мантиқан ба ҳам пайваст буда,
 дар Турбо Паскал миқдори элементҳо он аз то то шуда
 метавонад. Додаҳои навъи маҷмӯҳо чунин муаррифӣ карда
 мешавад: 
 <номи тип> = SET OF <элементҳо (навъи элементҳо)>;
 Ин навъ додаҳоро баъдтар мавриди баррасӣ қарор медиҳем.
 Додаҳои навъи сатрӣ 
 Додаҳои навъи сатри бо ёрии калимаи калидии string (сатр)
 муаррифӣ гардида, дар ҳама версияҳои Паскал истифодаи васеъ
 доранд. Додаҳои навъи мазкур ба массивҳои навъи рамзӣ монанд
 буда, дарозии онҳо дар Турбо Паскал то символ шуда метавонад.
 Ин навъ додаҳо тавассути калимаи калидии string муаррифӣ карда
 мешаванд. Додаҳои навъи мазкур дар дохили нохунаки якто-якто
 (апостроф) навишта мешаванд. Намунае аз додаҳои навъи сатрӣ: ‘I
 am a Student’, ‘My name is Ali’ ва ғайра. 
 Қайд. Ин навъ додаҳоро баъдтар дар боби коркарди сатрҳо
 муфассал мавриди баҳс қарор медиҳем. 
 Додаҳои навъи файл 
 Дар зери мафҳуми файл минтақаи номгузошташудаи 
 хотираи компютер фаҳмида мешавад. Ҳар як файл дорои се характер
 мебошад: якум - ҳар як файл дорои ном мебошад, ки тавассути он
 дар як барнома метавон бо чанд файл кор кард; дуюм- файл дорои
 додаҳои аз ҷиҳати навъ якхела мебошад; сеюм- дарозии файл
 вобаста аз хотира мебошад. 
 Додаҳои навъи файлро метавон бо яке аз усулҳои зерин
 муаррифӣ кард: 
 <ном>= FILE OF <тип>; 
 <ном>=TEXT; 
 <ном> = FILE; 
 дар ин ҷо ном - номи файл буда, барои номгузории файлҳо аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. 
 FILE, OF – калимаи калидӣ (файл, аз); 
 TEXT –номи типи стандартии файлҳо; 
 <тип> - дилхоҳ типи Паскал ба ғайр аз файл. 
 Вобаста аз муаррификунӣ се намуди файлҳо вуҷуд доранд:
  файлҳои навъдор (дӯӣ) (бо ёрии калимаи 
 калидии FILE OF… муаррифӣ карда мешаванд); 
  файлҳои матнӣ (аз типи TEXT); 
  · файлҳои бетип (аз типи FILE). 
 Қайд. Мавзӯӣ файлҳоро баъдтар дида мебароем. 
 Додаҳои навъи зербарнома 
 Типи зербарнома — ин типи нав мебошад, ки аз тарафи
 ширкати Borland дохил карда шудааст. Типи мазкур дар стандарти
 Паскал вуҷуд надошт. Типи зербарнома имконият медиҳад, ки
 зербарномаҳо ба сифати параметри фармалӣ равон карда шаванд.
 Барои муаррифии типи зербарнома номи зербарнома истифода
 бурда мешавад. Мисол: 
 Type 
 Proc = procedure; 
 Proc = procedure(var X, Y: Integer); 
 StrProc = procedure(S: String); 
 MathFunc = function(X: Real): Real: 
 DeviceFunc = function(var F: Text): Integer; 
 MaxFunc = function(A, B: Real; F: MathFunc): Real;
 Пас аз иҷрои ин амал дар барнома метавон тағйирёбандаҳои
 навъи зербарномаро ба сурати зерин муаррифӣ кард: 
 var p:proc; 
 f, f: mathfunc; 
 ar: array [..n] of proc; 
 Қайд. Ин мавзӯъро баъдтар мавриди баҳс қарор медиҳем.
 Додаҳои навъи объект 
 Навъи объект — ин сохтори додаҳои аз элементҳо 
 ташкилёфта мебошад, ки ҳар элемент майдон барои нигоҳ доштани
 додаи навъи муайян ё метод барои иҷрои ягон амал бо объектҳо
 мебошад. Ин навъ додаҳо ҳангоми омӯзиши БОН истифода бурда
 мешавад. Аз ин хотир, онҳоро мавриди баҳс қарор намедиҳем.
 Додаҳои навъи ишорагарҳо 
 Ишорагар ин тағйирёбандаест, ки суроға ё маҳалли
 тағйирёбандаи дигарро нигоҳ медорад, яъне қимати ишорагар
 суроғае аз ҳофиза аст. Аз ин рӯ метавон, ба қимати як дода ба таври
 ғайримустақим бо ёрии суроғааш аз ҳофиза дастёби пайдо кард. Дар
 забонҳои кӯҳна, ба монанди Algol, Gobol, Fortran ин навъ
 тағйирёбандаҳо пешбинӣ нашуда буд, аммо дар забонҳои Паскал,
 PL/ ин гуна тағйирёбанда пешбинӣ шудааст. 
 Қайд. Ишорагарҳо як бахши бузургӣ забони Паскал ба ҳисоб
 мераванд, аз ин рӯ онҳоро дар ин китоб мавриди баҳс қарор
 намедиҳем. 
 Тағйирёбандаҳо 
 Тағйирёбандаҳо навъе аз идентификаторҳо буда, барои
 номгузории калимаҳои ҳофиза истифода бурда мешаванд. Қимат
 (муҳтаво)-и калимаҳои ҳофиза дар рафти иҷроиши барнома
 метавонад тағйир ёбад. Бо суханҳои дигар, тағйирёбанда гуфта,
 бузургие (додае)-ро меноманд, ки дар тамоми тӯли барнома
 метавонад тағйир ёбад, яъне қиматҳои гуногун қабул кунад,
 қиматашро тағйир диҳад ва ғайра. Тағйирёбандаҳо барои коркарди
 додаҳо истифода шуда, бо ёрии номашон муайян карда мешаванд.
 Номи тағйирёбанда бояд бо ҳарф сар шавад ва наметавонад калимаи
 калидии забон бошад, яъне истифодаи калимаҳои калидии забонро
 наметавон ба сифати номи тағйирёбанда истифода кард.
 Аз сабаби он ки тағйирёбандаҳо низ як навъ идентификатор
 мебошанд, бинобар ин ҳангоми номгузории онҳо аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. Ҳангоми
 номгузорӣ диққат бояд дод, то номи тағйирёбандаҳо бо номи
 идентификаторҳои стандартӣ ва калимаҳои калидӣ мувофиқат
 накунад. 
 Намунае аз номи тағйирёбандаҳо: 
 a, a, my_var, my_str, x, my_num ва ғайра. 
 Қайд. Ҳангоми сохтани барнома кӯшиш кардан лозим аст,
 то номи тағйирёбандаҳо ба муҳтавои онҳо мувофиқат кунад. Ин
 амал аз вуқуъи хатогиҳо пешгирӣ мекунад. 
 Эълони навъи тағйирёбандаҳо 
 Ҳар як тағйирёбанда дар забони Паскал бояд пеш аз
 истифодабарӣ муаррифӣ карда шавад, яъне муайян шавад, ки он ба
 кадом навъ тааллуқ дорад ва чӣ қадар хотираро банд мекунад.
 Масалан, тағйирёбандае бо номи my_var ҳамон вақт дар барнома
 шинохта мешавад, ки агар навъи он муайян карда шуда бошад.
 Барои таъини навъи тағйирёбанда аз равиши зерин истифода бурда
 мешавад: 
 var номи тағйирёбанда: навъ; 
 дар ин ҷо var калимаи калидӣ буда, ҳангоми эълони тағйирёбандаҳо
 истифода бурда мешавад. Ба сифати навъ яке аз навъҳои қаблан
 мавриди баҳс қарор додаамон истифода бурда мешаванд.
 Барои муаррифӣ намудани тағйирёбанда, бояд ба қоидаҳои
 зерин риоя кард: 
  барои эълон намудани якчанд тағйирёбанда аз як навъ, онҳо аз
 ҳамдигар бо рамзи «,» ҷудо навишта мешаванд; 
  новобаста аз қимат ва навъи тағйирёбанда, як маротиба аз
 калимаи var истифода бурда мешавад; 
  номи тағйирёбанда маънидор буда, бояд ба барномаи сохташуда
 мувофиқат кунад; 
  номи тағйирёбанда бояд ҳатман ба ҳарф ё рамзи хати поён сар
 шавад; 
  номи тағйирёбанда набояд калимаҳои калидии забон бошад;
  барои навъҳои гуногун бояд номҳои гуногун истифода шавад,
 яъне бо як ном дар як барнома ду тағйирёбандаро ҳарчанд, ки аз
 навъҳои гуногунанд, муаррифӣ кардан мумкин нест. Ба таври
 дигар, ду тағйирёбанда набояд ҳамном бошанд. 
 Шояд дар зеҳни хонанда саволе пайдо шавад, ки чӣ ниёзест
 аз муаррифӣ намудани тағйирёбанда ва он дар барноманависӣ чӣ
 аҳамияте дорад? Барои ба ин савол ҷавоб гардонидан, биёед мисоли
 аз дунёи воқеӣ ва аз зиндагии ҳаррӯзаамонро меорем. Масалан,
 падари Шумо мехоҳад, ки ягон рафиқ ё ҳамкораш ва ё каси дигареро
 барои меҳмонӣ ба хона даъват кунад. Пеш аз даъвати меҳмон ба
 аҳли хонандон (модаратон, хоҳаратон) мефаҳмонад, ки имрӯз фалон
 одам ба хона мҳмон мешавад (кӣ будани меҳмонро ба аҳли хонадон
 мефаҳмонад). Дар натиҷа аҳли хонадон вобаста ба он хӯроки
 лозимӣ омода мекунад. Ба ҳамин монанд, барои истифода бурдани
 дилхоҳ тағйирёбанда аввал он муаррифӣ карда мешавад. Ҳангоми
 муаррифӣ намудани тағйирёбанда ба компилятор гуфта мешавад,
 ки ин тағйирёбанда аз кадом навъ аст, вобаста ба навъи он дар
 ҳофиза ҷойи муайян банд карда шуда, амалҳои лозимӣ дар болои он
 иҷро карда мешавад. 
 Тавре аз олами воқеӣ медонем, вобаста аз мавқеи иҷтимоӣ,
 ҷои кор ва ғайра меҳмонҳо ҳар хел мешаванд. Дар забони Паскал
 низ додаҳо дорои навъҳои гуногун мебошанд. 
 Пас аз донистани ин маълумот тарзи муаррифӣ намудани
 тағйирёбандаҳоро аз нав ба таври возеҳтар дида мебароем. Масалан,
 бигузор тағйирёбандаи х аз навъи бутун бошад. Пас, барои
 муаррифӣ намудани он дар забони Паскал аз равиши зерин
 истифода мебарем: 
 var x: integer 
 Барои муаррифӣ кардани якчанд тағйирёбандае, ки аз ҷиҳати
 навъ якхела мебошанд, як маротиба навиштани навъ кифоягӣ
 мекунад. Қолаби умумии ин равиш шакли зеринро дорад:
 var var,var,…, varn: data_type; 
 дар ин ҷо data_type навъи додашуда, var,var,…, varn бошанд,
 тағйирёбандаҳои якум, дуюм ва ҳоказо n-ум мебошанд. Масалан,
 тарзи муаррификунии тағйирёбандаҳои x, y ва z, ки аз навъи бутун
 мебошанд, чунин шакл дорад: 
 var x,y,z:integer 
 Ба ғайр аз ин, метавон ҳар як тағйирёбандаро алоҳида-
 алоҳида муаррифӣ кард. Ба монанди: 
 var x:integer; y:integer; z:integer; 
 Тавре аён аст, равиши аввала хеле сода ва осон мебошад.
 Намунае аз муаррифии тағйирёбандаҳо: 
 var sum:integer; 
 var a,b,c,d:real; 
 var a,b: integer; 
 x, y:real; 
 st:string; 
 bl:Boolean; 
 ch:char; 
 Қайд. Дар PascalABC.NET имконияти муаррифӣ кардани
 тағйирёбандаҳои универсалӣ вуҷуд низ дорад. Барои эълони чунин
 тағйирёбандаҳо типи мувофиқ нишон дода нашуда, танҳо пас аз
 қимат бахшидан ва иҷрои амалиёти лозимӣ типи тағйирёбанда
 маълум карда мешавад. Тарзи муаррифии чунин тағйирёбандаҳо
 шакли зеринро дорад: 
 var тағйирёбанда:=қимат; 
 Мисол: var x:=; 
 Қимат бахшидан ба тағйирёбандаҳо 
 Тағйирёбандаҳо маҳалли захира ва бозёбии додаҳо
 мебошанд. Бинобар ин ба онҳо пас аз эълонкунӣ аввал қимат
 бахшида, сипас аз он истифода бурда мешавад. Дар забони Паскал
 барои қимат бахшидан ба тағйирёбандаҳо аз ду роҳ истифода бурда
 мешавад: 
 Дар равиши аввал пас аз муаррифӣ намудан ба 
 тағйирёбандаҳо қимат бахшида мешавад. Масалан, эълони
 тағйирёбандаҳои a,b аз навъи бутун, x, y аз навъи ҳақиқӣ, st аз навъи
 сатрӣ, bl аз навъи мантиқӣ, ch аз навъи рамзӣ ва қимат бахшидан ба
 онҳо чунин шакл дорад: 
 var a,b;integer; 
 x, y:real; 
 st:string; 
 bl:Boolean; 
 ch:char;... 
 a:=; b:=; 
 x:=.; y:=.; 
 st:=’I am learning Pascal’; 
 bl:=true; 
 ch:=’A’; 
 Равиши дигари қимат бахшидан ба тағйир-ёбандаҳо
 истифода аз операторҳои дохилкунӣ мебошад, ки тавассути он
 қимати лозимӣ аз клавиатура ё ягон дастгоҳи вурудии дигар дохил
 карда мешавад. Дар ин равиш ба тағйирёбандаҳо ҳангоми иҷроиши
 барнома қимат бахшида мешавад. Мисол: 
 var a,b;integer;... 
 read(a,b); 
 Дар ин мисол қимати a ва b аз клавиатура ҳангоми иҷроиши
 барнома тавассути оператори read дохил карда мешаванд.
 Оператори read-ро бошад баъдтар пурра мавриди баҳс қарор
 медиҳем. 
 Ба ҳамин монанд, метавон ба тағйирёбандаҳои дигар типҳо
 низ қимати аввала бахшид. 
 Барои қимат бахшидан ба тағйирёбандаҳо бояд меъёрҳои
 зеринро риоя кард: 
 клавиатура ё ягон дастгоҳи вурудии дигар дохил кард;
 бахшиш истифода бурда мешавад; 
 якто-якто навишта мешаванд; 
 ё false бошанд; 
 ба тағйирёбандаи дигар бахшид. Барои иҷрои ин амал, навъи
 тағйирёбандаҳо низ нақш мебозанд; 
 Қайд. Дар PascalABC.NET имконияти қимати аввала
 бахшидан ҳангоми муаррификунӣ вуҷуд дорад. Тавассути ин
 механизм метавон ҳангоми муаррификунӣ дар ҳол ба 
 тағйирёбандаҳо қимати аввала бахшид. Масалан, дар дастури
 зерин тағйирёбандаи х аз навъи бутун муаррифӣ карда шуда, ба
 сифати қимати аввала ба он қимати бахшида шудааст.
 var x:integer:=; 
 Ин навъ тағйирёбандаҳоро метавон дар дилхоҳ ҷойи
 барнома муаррифӣ кард. 
 Доимиҳо (constant) 
 Дар математика баъзе бузургиҳое ҳастанд, ки қимати доимӣ
 доранд, ба монанди, ғайра. Дар 
 барноманависӣ низ ин равиш истифода бурда мешавад. Пас,
 доимиҳо бузургиҳое ҳаста(cid:)нд≈, ки, дар тамео≈ми,тӯли в баа рнома қимати
 худро тағйир намедиҳанд. Барои эълон намудани доимиҳо аз
 калимаи калидии const истифода бурда мешавад. Дар забони Паскал
 доимиҳо бо ду гурӯҳ тақсим мешаванд: 
 Барои муаррифии ҳар ду навъ доимиҳо аз калимаи калидии
 const истифода бурда мешавад. Аз сабаби он ки доимиҳо низ як навъ
 идентификатор мебошанд, пас барои номгузории доимиҳо аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. Намунае аз
 муаррифии доимиҳо ба сурати зайл аст: 
 const 
 a=; 
 b='Computer scince'; 
 c=true; 
 x:integer=; 
 PI:double=.; 
 Дар ин ҷо доимиҳои a,b ва c бенавъ муаррифӣ гардидаанд,
 аммо доимии x аз навъи бутун бо қимати ва доимии PI аз навъи
 double бо қимати. муаррифӣ гардидааст.
 Барои муаррифӣ ва истифодаи доимиҳо бояд ба меъёрҳои
 зерин риоя кард: 
 тағйирёбандаҳо муаррифӣ карда мешаванд; 
 истифода бурда мешавад; 
 тағйирёбандаҳо) ҳамном бошад. 
 Амалҳо 
 Тағйирёбандаҳо ва доимиҳо барои нигоҳ доштани додаҳо
 истифода бурда мешаванд. Ҳадафи барноманависӣ иҷрои ягон амал
 бо ин додаҳо мебошад. Бари иҷрои ягон амали хос аз амалҳо
 истифода бурда мешавад. Аз нуқтаи назари риёзӣ медонем, ки
 нишонаи ҷамъ (+) ду қиматро бо ҳам ҷамъ мекунад, яъне x+y. Дар
 ин ҷо аломати + -ро амал (operator), x ва y – ро объектҳои амал
 (operand) меноманд 
 Баъзан ба ҷои калимаи амал, аз амалгар низ истифода карда
 мешавад. Амалҳоро метавон ба сурати зерин дастабандӣ кард:
 Илова бар ин, амалҳо ягона (унарӣ), дугона (бинорӣ) ва
 сегона(тернерӣ) мешаванд: 
  агар амал дорои як объекти амал бошад, онро ягона мегӯянд.
  агар амал дорои ду объекти амал бошад онро дугона мегӯянд.
  агар амал дорои се объекти амал бошад онро сегона мегӯянд.
 Амалҳои арифметикӣ 
 Амалҳои арифметикӣ амалҳое мебошанд, ки барои 
 иҷрокунии амалҳои муҳосиботӣ бо додаҳо истифода мешаванд. Дар
 ҷадвали зерин амалҳои мазкур оварда шудаанд: 
 Номи Нишона Намунаи Намунаи 
 амал (symbol)-и амалҳои амалҳои 
 амал арифметикӣ арифметикӣ 
 дар дар забони 
 математика Паскал 
 Ҷамъ 
 Тарҳ 
 Тақсим + (cid:)+(cid:) (cid:)+(cid:)
 − (cid:)−(cid:) (cid:)−(cid:)
 Зарб / a (cid:)/(cid:)
 Бақия аз b 
 тақсим ∗ (cid:)(cid:) (cid:)∗(cid:)
 қисми (cid:)(cid:)(cid:) - (cid:) (cid:)(cid:)(cid:) (cid:) (cid:) (cid:)(cid:)(cid:) (cid:)
 бутуни 
 тақсим (cid:)(cid:)(cid:) (cid:) (cid:)(cid:)(cid:) (cid:)
 Ҳамаи ин амалҳо ба ғайр аз амали бақия аз тақсим ва қисми
 бутуни тақсим дар тамоми забонҳои барноманависӣ як хел истифода
 бурда мешаванд. Оператори mod -ро remainder operator ё modulus
 operators низ мегӯянд, ки бақияи тақсими адади a-ро бо адади b
 муайян мекунад. Оператори div бошад, ҳангоми тақсим намудани
 адади a бо адади b, қисми бутуни тақсимро муайян мекунад.
 Намунае аз мисолҳои амалҳои mod ва div: 
 № Қимати Қимати a mod a div 
 амалванди a амалванди b b b 
 Қайд. Дар сурати қимати амалванди якум (тақсимшаванда)
 аз қимати амалванди дуюм (тақсимкунанда) хурд будан, натиҷаи a
 mod b ба амалванди якум (тақсимшаванда) баробар шуда, натиҷаи
 a div b ба баробар мешавад. 
 Илова бар ин, дар забони Паскал, амалҳои зерин низ
 мавҷуданд: 
 Номи амал Нишона Намунаи Намунаи 
 (symbol)-и амал дар амал дар 
 амал математика забони 
 Паскал 
 Як воҳид 
 афзоиш 
 (increment) (cid:)(cid:)(cid:) (cid:) = (cid:)+ (cid:)(cid:)(cid:)((cid:))
 Як воҳид 
 коҳиш 
 (decrement) (cid:)(cid:)(cid:) (cid:) = (cid:)− (cid:)(cid:)(cid:)((cid:))
 Бахшиш 
 Амалҳои афзоиш ва коҳиш ба намуди пешфарз қимати
 амалвандро(аргументро) м:у=вофиқан як(cid:) в=оҳ(cid:)ид афзоиш(cid:): =ё (cid:)коҳиш
 медиҳанд. Барои ба таври дилхоҳ афзоиш ва коҳиш додани қимати
 амалванд(аргумент) амалҳои мазкурро ба шакли зерин истифода
 мебаранд: 
 Номи амал Нишона Намунаи амал дар Намунаи 
 (symbol)-и математика амал дар 
 амал забони 
 Паскал 
 Т воҳид 
 афзоиш 
 (increment) (cid:)(cid:)(cid:) (cid:) = (cid:)+Т (cid:)(cid:)(cid:)((cid:),Т)
 Т воҳид 
 коҳиш 
 (decrement) (cid:)(cid:)(cid:) (cid:) = (cid:)−Т (cid:)(cid:)(cid:)((cid:),Т)
 Амали бахшиш (default assignment operator) бошад, дар
 навишт шакли ‘:=’ –ро дошта, ба сурати зерин амал мекунад:
 идентификатор:=ифода; 
 Ин амал аввал қимати ифодаро ҳисоб намуда, сипас онро ба
 тағйирёбандаи нишондодашуда мебахшад. Барои иҷрои ин амал
 бояд типи ифода ва типи тағйирёбандае, ки натиҷа дар он қарор
 мегирад, мувофиқат кунад. 
 Амалҳои муқоисакунӣ (relation operators) 
 Амалҳои муқоисакунӣ барои дар байни ду тағйирёбанда
 муносибат ё робита барқарор намудан хизмат мекунанд. Бо
 суханҳои дигар, амалҳои мазкур барои муқоисаи қимати ду бузургӣ
 истифода мешаванд. Дар ҷадвали зерин амалҳои муқоисакунӣ
 оварда шудаанд: 
 Номи амал Нишона Нишона Истифода Қимати 
 (symbol)- (symbol)-и барии амал дар 
 и амал амал дар амалҳои забони 
 дар ма- Паскал муқоисаку Паскал 
 тематика нӣ дар 
 забони 
 Паскал 
 Калон а калон 
 аз b 
 Хурд > > (cid:) > (cid:) а хурди b
 Калон ё а калон ё 
 баробар < < (cid:) < (cid:) баро-
 ≥ >= (cid:) >= (cid:) бари b
 Хурд ё а хурд ё 
 баробар баробари 
 ≤ <= (cid:) <= (cid:) b
 Баробар а айнан 
 баробари 
 = == (cid:) == (cid:) b
 Нобаробар a 
 нобароба 
 ≠ <> (cid:) <> (cid:) ри b
 Барои амалҳои муқоисакунӣ ва мантиқӣ калимаҳои калидӣ
 бо номи true ва false истифода бурда мешаванд. Дар забони Паскал
 ҳар гуна шарти дуруст ҳамчун true ва шарти нодуруст бошад,
 ҳамчун false фаҳмида мешавад. 
 Амалҳои байтӣ 
 Дар забони Паскал якчанд амале мавҷуд аст, ки онҳоро
 амалҳои байтӣ мегӯянд. Сабаби амали байти гуфтани онҳо дар он
 аст, ки онҳо аввал қимат (адад)-и додашударо ба намуди дуӣ табдил
 дода, баъд бо он амали лозимиро иҷро мекунанд. Воқеан, ҳамаи
 додаҳое, ки мо истифода мебарем, дар компютер ба намуди дуӣ
 (пайдарпайии ва ) захира карда мешаванд. Дар ин ҷо ё 
 хурдтарин воҳиди ахбор буда, ба бит баробар мебошад. Амалҳои
 байтӣ барои иҷрои ягон амал бо ин битҳо истифода бурда мешаванд.
 Амалҳои мазкур иборатанд аз: 
 Амали ва (and) –амали кор бо битҳо (хусусан, системаи дӯи)
 буда, чунин амал мекунад: дар сурати ҳам амалванди якум ва ҳам
 амалванди дуюми он ҳақ будан ба қимати ҳақ доро буда, дар дигар
 ҳолатҳо ба қимати ноҳақ доро мешавад, яъне: 
 (cid:) (cid:) (cid:) (cid:)(cid:)(cid:) (cid:)
 Мисоли. Бигузор х= ва у= бошад. Онҳоро ба намуди
 системаи дӯи мегардонем: 
 (cid:) 
 (cid:)Аз ин ҷо, натиҷаи x and y= and = мешавад.
 (cid:) (cid:)(cid:)А(cid:)м (cid:)али ё (or) - амали кор бо битҳо буда, ба қимати ҳақ дорост,
 агар аққалан қимати яке аз амалвандҳои додашуда ҳақ бошад, яъне
 (cid:) (cid:) (cid:) (cid:)(cid:) (cid:)
 Мисоли. Бигузор х= ва у= бошад. Онҳоро ба намуди
 системаи дӯи мегардонем: 
 (cid:) 
 (cid:) 
 Аз ин ҷо, x or y= or = мешавад. 
 (cid:) (cid:)(cid:) (cid:) 
 Амали ё (xor)-амали кор бо битҳо буда, ба қимати ҳақ доро
 аст, агар танҳо қимати яке аз амалвандҳои додашудаи он ҳақ бошад,
 яъне: 
 (cid:) (cid:) (cid:) (cid:)(cid:)(cid:) (cid:)
 Мисоли. Бигузор х= ва у= бошад. Онҳоро ба намуди
 системаи дӯи мегардонем: 
 (cid:) 
 (cid:) 
 (cid:) (cid:)(cid:) 
 П 
 (cid:) 
 а с 
 (cid:), аз ин ҷо мешавад. 
 Амали тарҳ (инкор) not – амали кор бо битҳо буда, ба қимати
 ҳақ доро аст, агар (cid:)қ и(cid:)м(cid:)а(cid:)т (cid:)и =амал в(cid:)а(cid:)н(cid:)д и д=одашуда ноҳақ бошад ё
 баръакс, яъне: 
 not x 
 (cid:) 
 Кӯчиш ба чап (А shl В) –ин амал адади А-ро дар намуди дуӣ
 фарз намуда, баъд онро В разряд ё мавқеъ ба тарафи чап мекӯчонад.
 Мисоли. Бигузор А= ва В= бошад. Дар аввал А-ро ба
 намуди дуӣ мегардонад, сипас онро В мавқеъ ба тарафи чап
 мекӯчонад, яъне: 
 А 
 Кӯчиш ба ду мавқеъ 
 А shl 
 Аз ин ҷо А shl B= shl = мешавад. 
 Кӯчиш ба рост (А shr В) - ин амал адади А-ро дар намуди дуӣ
 фарз намуда, баъд онро В разряд ё мавқеъ ба тарафи рост
 мекӯчонад. 
 Мисоли. Бигузор А= ва В= бошад. Оногоҳ дар аввал А-
 ро ба намуди дуӣ мегардонад, яъне 
 А 
 Кӯчиш ба ду мавқеъ 
 А shr 
 Аз ин ҷо А shr B= shr = мешавад. 
 Амалҳои мантиқӣ (logical operators) 
 Амалҳои мантиқӣ амалҳое ҳастанд, ки барои иҷрокунии
 амале болои ифодаҳои мантиқӣ истифода бурда шуда, дорои қимати
 ҳақ (true) ва ноҳақ (false) мебошанд. Ин амалҳо имконияти сохтани
 ифодаҳои мураккабро фароҳам меоранд. Дар ҷадвали зерин амалҳои
 мантиқӣ оварда шудаанд: 
 № Номи Аломат Аломат Номи амал 
 амал (symbol)-и (symbol)-и дар 
 амал дар амал дар математика 
 забони математика 
 Паскал 
 ∩ Конъюнксия 
 U Дизъюнксия 
 (cid:)(cid:)(cid:)−ва (cid:)(cid:)(cid:) − ~ Инкор
 Ин (cid:)а(cid:)м−алёҳо дар алге(cid:)б(cid:)раи Булл чунин таъриф дода мешаванд:
 Ко(cid:)н(cid:)ъ(cid:)ю−нкнсеияи му(cid:)ло(cid:)ҳ(cid:)изаҳои A ва B гуфта, ҳамин гуна
 мулоҳизаи С-ро меноманд, ки ба қимати ҳақ (true) доро аст, агар
 ҳам мулоҳизаи А ва ҳам мулоҳизаи В баробари true, яъне ҳақ бошанд.
 Дар акси ҳол бошад, дорои қимати ноҳақ (false) мешавад.
 Мулоҳизаҳои Мулоҳизаҳои Мулоҳизаи якум and 
 якум дуюм мулоҳизаи дуюм 
 False False False 
 False True False 
 True False False 
 True True True 
 Дизъюнксияи мулоҳизаҳои A ва B гуфта, ҳамин гуна
 мулоҳизаи С-ро меноманд, ки ба қимати ҳақ (true) доро аст, агар
 ақаллан яке аз мулоҳизаҳои А ва ё В ба қимати true, яъне ҳақ доро
 бошад. Дар акси ҳол бошад, дорои қимати ноҳақ (false) мешавад.
 Мулоҳизаи Мулоҳизаи Мулоҳизаи якум or 
 якум дуюм мулоҳизаи дуюм 
 False False False 
 False True True 
 True False True 
 True True True 
 Инкори мулоҳизаи А гуфта, мулоҳизаи -ро меноманд, ки
 он ба қимати ҳақ дорост, агар амалванди он ба қимати ҳақ доро
 бошад, дар акси ҳол, ба қимати ноҳақ баробар мА̅ ешавад.
 № Мулоҳиза not мулоҳиза 
 False True 
 True False 
 Мисол. Бигузор тағйирёбандаҳои a,b,c,d аз навъи бутун
 буда, мувофиқан ба,,, баробар бошанд. Дар ҷадвали зерин
 барои намуна чанд ифодаеро меорем: 
 № Ифодаҳо Натиҷаи 
 мантиқӣ 
 true 
 false 
 ((cid:) < ) (cid:)(cid:)(cid:) ((cid:) > ) True
 ((∗(cid:)+) >= (cid:)) (cid:)(cid:) (cid:) ((cid:) > (cid:)) True
 ((cid:) == )(cid:)(cid:) ((cid:) < ((cid:)+ )) False
 Қайд. Ҳангом(и(cid:) /(cid:)и)ст=и=ф(cid:)ода амалҳои мантиқӣ, агар
 амалвандҳои онҳо яг(о(cid:)н <иф(cid:)о)д(cid:)а(cid:) б(о(cid:)ш<анд), он гоҳ он ифодаҳо дар дохили
 қавс навишта мешаванд. 
 Амалҳои сатрӣ 
 Амалҳои сатрӣ барои иҷрои ягон амал бо сатрҳо истифода
 бурда мешаванд. Масалан, амали +ду сатрро ба ҳамдигар пайваст
 мекунад. Дар оянда ин мавзӯъро пурратар мавриди баҳс қарор
 медиҳем. 
 Амалҳои @ ва ^ 
 Дар забони Паскал якчанд амалҳое мавҷуданд, ки адрес ё
 маҳалли физикии тағйирёбандаи додашуда (нишондодашуда)-ро
 метавонад ба барномасоз дастрас гардонад. Дар ҷадвали зерин
 намунаи мисоли ин амалҳо оварда шудаанд. 
 № Номи амал Аломат Навишт Амали 
 и амал иҷрокунанда 
 Суроға @ @a Суроғаи 
 (адрес) тағйирёбандаи а- 
 ро нишон 
 медиҳад 
 Нишона ^ ^a Қимати додае, ки 
 (ссылка ё суроғаи он дар 
 reference ) тағйирёбандаи а 
 захира шудааст, 
 бармегардонад 
 Амали @ суроғаи як тағйирёбанда ва амали ^ муҳтавои
 тағйирёбандаеро, ки суроғааш тавассути @ ба даст омадааст
 мушаххас мекунад. Бо суханҳои дигар, амали ^ барои дастёбии
 ғайримустақим ба ҳофиза ба кор меравад. Ба даструҳои зерин диққат
 диҳед: 
 m:=; 
 p:=@m; //суроғаи тағйирёбандаи m 
 n:=p^; { қимати тағйирёбандае, ки суроғаи он дар p
 захира шудааст.} 
 Амалҳои ягона (Unary operators) 
 Амалҳои ягона амалҳое мебошанд, ки фақат дорои як
 амалванд мебошанд. Ин амалҳо дар ҷадвали зерин гирд оварда
 шудаанд: 
 № Номи амал Рамз Истифодаи 
 (symbol)-и амал дар 
 амал забони Паскал 
 Ҷамъи унарӣ 
 (unary plus) 
 Тарҳи унарӣ + а+= 
 (unary minus) 
 Зарби унарӣ − а−= 
 Тақсими унарӣ 
 Амали ҷамъи унарии а+= ба ифод∗аи а:=а+, тарҳ(cid:)и∗ у=нарии а-
 = ба а:=а-, зарби унарии a*= ба a:=a*/ ва амали тақс(cid:)и/м=и унарии
 a/= ба a:=a/ эквивалент мебошад. 
 Қайд. Амали тақсими унарӣ танҳо барои тағйирёбандаҳои
 навъи ҳақиқӣ пешбинӣ шудааст. 
 Тартиби иҷрои амалҳо (Аввалияти амалҳо) 
 Ифодаҳо дастурҳое ҳастанд, ки аз амалҳо, тағйирёбандаҳо,
 доимиҳо ва ғайра сохта мешаванд. Ҳар ифода дорои натиҷа буда,
 дар он амалҳо бо тартиби хосе иҷро карда мешаванд. Баъзан ҳангоми
 навиштани ифода барои ба даст овардани натиҷаи матлуб зарур
 мешавад, ки тартиби иҷрои амалҳо ба назар гирифта шавад. Аз ин
 рӯ, ҳангоми навиштани як ифода, зарурати донистани аввалияти
 амалҳо пеш меояд, яъне лозим мешавад, ки тартиби иҷрои амалҳоро
 бидонем. Бигузор ифодаи зерин, ки дар он x= ва y= аст, дода
 шуда бошад: 
 z:=x+y div 
 Дар ин ифода амали бахшиш, ҷамъ ва div вуҷуд дорад. Агар
 х-ро бо у ҷамъ намуда, сипас натиҷаро ба тақсим кунем, қимати z
 ба баробар мешавад. Агар у-ро ба тақсим карда, сипас натиҷаро
 ба х ҷамъ кунем, қимати z ба баробар мешавад. Барои натиҷаи
 матлубро ба даст овардан, зарур аст, ки аввалияти амалҳо ба назар
 гирифта шавад. Дар ҷадвали зерин тартиби иҷроиши амалҳо оварда
 шудаанд: 
 Аввалият Амалҳо Категорияи амалҳо 
 Якум (тартиби + - not @ Амалҳои унарӣ 
 олӣ) 
 Дуюм * / div mod and as Амалҳои бинории 
 shl shr навъи зарб 
 Сеюм + - xor or Амалҳои бинории 
 навъи ҷамъ 
 Чорум (тартиби = <> < > <= >= in Амалҳои бинории 
 паст) is навъи муносибат 
 Тавре аз ин ҷадвал дида мешавад, дар мисоли овардашуда,
 аввал амали div ва сипас амали ҷамъ иҷро карда мешавад. Аз ин рӯ,
 натиҷаи дуруст z:= мебошад. Агар дар ифода қавс иштирок кунад,
 аввал амалҳои дохили қавс ва баъд, амалҳои берун аз қавс мувофиқи
 тартиби дар ҷадвал нишондодашуда иҷро карда мешаванд.
 Қайд. Ин амалҳо дар оянда ба тадриҷ омӯхта мешаванд.
 Табдилдиҳии навъҳо ва амалҳо бо онҳо 
 Баръакси забонҳои оилаи C/C++ дар забони Паскал
 имконияти ба таври автоматӣ табдилдиҳии навъ вуҷуд надорад. Ба
 истиснои аз навъи бутун ба ҳақиқӣ. Масалан, бигузор 
 тағйирёбандаҳои X ва Y ба сурати зерин муаррифӣ шуда бошанд:
 var 
 х:Integer; 
 у:Real; 
 Пас, дастури у:= х + аз нуқтаи назари синтаксис дуруст
 буда, дастури х:=. нодуруст мебошад. Сабаб дар он аст, ки дар
 ифодаи якум табдилдиҳӣ аз навъи бутун ба ҳақиқӣ шудааст, ки он
 дар Паскал қобили қабул мебошад. Дар ифодаи дуюм бошад, ба
 тағйирёбандаи бутун қимати ҳақиқӣ бахшида шудааст, ки он аз рӯи
 синтаксиси Паскал нодуруст мебошад. 
 Бояд қайд кард, ки ба таври автоматӣ вуҷуд надоштани амали
 табдилдиҳӣ маънои онро надорад, ки дар Паскал воситаи
 табдилдиҳии навъ вуҷуд надорад. Албатта, чунин восита вуҷуд
 дорад. Барои иҷрои табдилдиҳӣ аз якчанд функсияҳо истифода
 бурда мешавад. Дар ҳолати хусусӣ, барои аз навъи ҳақиқӣ ба бутун
 табдил додан аз функсияҳои round ва trunc истифода бурда мешавад.
 Функсияи round адади навъи real-ро то ба қисми бутунаш наздик
 шудан, яклухт мекунад. Функсияи trunc бошад, қисми касрии адади
 навъи real-ро бурида гирифта, қисми бутуни онро бармегардонад.
 Бо назардошти тағйирёбандаҳои қаблан муаррификарда,
 ифодаи х:= у/х нодуруст буда, ифодаи х:= round(у/х) дуруст
 мебошад. 
 Барои табдилдиҳии додаҳо аз навъи char (символ) ба бутун
 аз функсияи ord ва аз типи бутун ба типи рамзӣ (char) аз функсияи
 chr истифода бурда мешавад. 
 Дар PascalABC.NET барои табдилдиҳии навъҳо аз 
 функсияҳои зиёде истифода мебаранд, ки асоситарини онҳо дар
 ҷадвали зерин оварда шудаанд. 
 function StrToInt(s: string): integer; 
 Сатри додашудаи s-ро ба адади бутуни навъи integer табдил
 медиҳад. 
 function StrToInt(s: string): int; 
 Сатри додашудаи s-ро ба адади бутуни навъи int табдил
 медиҳад. 
 function StrToFloat(s: string): real; 
 Сатри додашудаи s-ро ба адади ҳақиқии навъи real табдил
 медиҳад. 
 function TryStrToInt(s: string; var value: integer): boolean;
 Сатри додашудаи s-ро ба адади ҳақиқии навъи integer
 табдил дода, онро дар тағйирёбандаи value мебахшад. Дар
 сурати бо муваффақият анҷом наёфтани ин амал, функсия
 қимати false бармегардонад. 
 function TryStrToInt(s: string; var value: int): boolean;
 Сатри додашудаи s-ро ба адади ҳақиқии навъи int
 табдил дода, онро дар тағйирёбандаи value мебахшад. Дар
 сурати бо муваффақият анҷом наёфтани ин амал, функсия
 қимати false бармегардонад 
 function TryStrToFloat(s: string; var value: real): boolean;
 Сатри додашудаи s-ро ба адади ҳақиқии навъи real табдил
 дода, онро дар тағйирёбандаи value мебахшад. Дар сурати бо
 муваффақият анҷом наёфтани ин амал, функсия қимати false
 бармегардонад 
 function TryStrToFloat(s: string; var value: single): boolean;
 Сатри додашудаи s-ро ба адади ҳақиқии навъи single
 табдил дода, онро дар тағйирёбандаи value мебахшад. Дар
 сурати бо муваффақият анҷом наёфтани ин амал, функсия
 қимати False бармегардонад 
 procedure Str(r: real; var s: string); 
 Адади ҳақиқии r - ро ба навъи сатрӣ табдил дода, натиҷаро
 ба тағйирёбандаи s мебахшад. 
 function IntToStr(a: integer): string; 
 Адади бутуни a-ро бо намуди сатрӣ табдил медиҳад.
 function IntToStr(a: int): string; 
 Адади бутуни a-ро бо намуди сатрӣ табдил медиҳад.
 function FloatToStr(a: real): string; 
 Адади ҳақиқии a-ро бо намуди сатрӣ табдил медиҳад.
 Ба ғайр аз ин, барои ҳар як навъи додаҳои ададӣ, дар
 PascalABC.NET функсияҳои мувофиқ вуҷуд доранд, ки аз якчандтои
 онҳо дар ҷадвали зерин оварда шудаанд: 
 Parse – Адади додашударо аз навъи сатрӣ ба ададӣ табдил
 медиҳад. 
 tryParse – Адади додашударо аз навъи сатрӣ ба ададӣ табдил
 медиҳад. Дар сурати бо муваффақият анҷом наёфтани ин амал,
 қимати True - ро бармегардонад. 
 ToString - Адади додашударо ба навъи сатр табдил медиҳад.
 Ду функсияи аввала бо навъи додаҳо кор мекунанд.
 Функсияи сеюм ToString бошад, бо тағйирёбандаҳо кор мекунад.
 Масалан, дастури k:=integer.Parse('') сатри ‘’ – ро ба навъи бутун
 табдил дода, ба тағйирёбандаи k мебахшад. Дастури k.ToString()
 бошад, адади k - ро бо навъи сатрӣ табдил медиҳад. 
 Ифодаҳо (expression) 
 Ифодаҳо маҷӯи маънидоре мебошанд, ки бо ёрии амалҳои
 арифметикӣ, мантиқӣ, муқоисакунӣ ва ғайра тартиб дода мешаванд.
 Ифодаҳоро ба сурати зерин метавон дастабандӣ кард: 
 Ифодаҳои арифметикӣ ифодаҳое ҳастанд, ки бо ёрии
 амалҳои арифметикӣ аз рӯи қоидаи хосе тартиб дода шудаанд.
 Масалан: 
 № Ифодаҳои риёзӣ Ифодаҳои забони Паскал 
 (a+b)c 
 ((cid:)+(cid:))∗(cid:)
 Дар мисо a ли аввал адади a бо ад(cid:)ад/и((cid:) b+ ҷ(cid:)а)мъ гардида, сипас
 натиҷа бо c заbрб+ кcарда мешавад. Дар мисоли дуюм бошад, аввал b
 бо c ҷамъ гардида, сипас адади а бо натиҷа тақсим карда мешавад.
 Вобаста аз таркиби ифода ифодаҳои арифметикӣ ба ҳақиқӣ
 ва бутун ҷудо мешаванд. 
 Намунае аз ифодаҳои бутун: mod; div.
 Намунае аз ифодаҳои ҳақиқӣ: sin(x)+cos(y);. 
 Ҳангоми тартиб додани ифодаҳои арифме 
 − 
 ти 
 (cid:)± 
 к 
 √ 
 ӣ 
 (cid:) 
 б 
 − 
 о 
 (cid:)
 я 
 (cid:)
 д ба 
 (cid:) 
 меъёрҳои зерин риоя кард: 
 Қайд. Барои дуруст ҳисоб намудани қимати ифодаҳо ба
 мавзӯи аввалияти амалҳо диққат диҳед. 
 Набояд фаромӯш кард, ки ҳар як ифода, аз ҷумла ифодаи
 арифметикӣ, ду шакли навишт дорад, математикӣ ва Паскал.
 Мисол. Ифодаи математики зеринро дар забони Паскал
   
 yx  
   
 y 
  +xy  
 нависед: 
 +x 
 x 
 Ҳал. Ифодаи мазкур дар Паскал ба сурати зерин навишта
 мешавад: 
 Ифодаҳои муқоисакунӣ ифодаҳое ҳастанд, ки бо ёрии амалҳои
 муқоиса∗ку(cid:)н∗ӣ (бо ∗ри(cid:)о−яи қ/о(cid:)н)у/н(и /м(а(cid:)хс∗у(cid:)се) т+ашк∗ил(cid:) )ка∗р(да +меш∗ав(cid:)ан∗д(cid:). ).
 Қимати ифодаҳои муқоисакунӣ ҳақ ва ё ноҳақ шуда
 метавонад, яъне агар шартҳои гузошташуда дуруст бошанд, қимати
 ифодаи муқоисакунӣ ҳақ ва дар сурати акс, ба қимати ноҳақ баробар
 мешавад. Дар аксари забонҳои барномасозӣ,алалхусус дар забони
 Паскал қимати ҳақ-ро true ва қимати ноҳақро false мегӯянд.
 Намунаи мисолҳои ифодаҳои муқоисакунӣ дар ҷадвали зерин
 оварда шудаанд: 
 № Ифодаҳои Ифодаҳои забони Паскал 
 риёзӣ 
 Ифодаҳои (cid:)м>ан(cid:)тиқӣ ифодаҳое ҳа(cid:)ст>ан(cid:)д, ки аз ифодаҳои
 арифметикӣ ва (м(cid:)у+қо(cid:)и)са≥ку(cid:)нӣ аққалан б(о(cid:) я+к (cid:) а)м>а=ли(cid:) мантиқӣ ташкил
 карда шудаанд. Нисбат ба ду ифодаҳои пешин ин навъ ифодаҳо
 мураккабтар ва печидатар мебошанд. Қимати ифодаҳои мантиқӣ ба
 ҳақ ва ё ба ноҳақ баробар шуда метавонад. 
 № Ифодаҳои Ифодаҳои забони Паскал 
 риёзӣ 
 (cid:) > (cid:) > (cid:) ((cid:) > (cid:) ) (cid:)(cid:)(cid:) ((cid:) > (cid:))
 (cid:) (cid:) 
 ≤ < (cid:)(cid:) 
 (((cid:)/(cid:)) <= ((cid:)/(cid:))) (cid:)(cid:)(cid:) (( (cid:)/(cid:))
 (cid:) (cid:) < ∗(cid:)∗(cid:))
 (cid:) ≤ (cid:) ((cid:) < (cid:)) (cid:)(cid:) ((cid:) == (cid:))
 Ифодаҳои байти ифодаҳое ҳастанд, ки дар онҳо амалҳои кор
 бо байтҳо истифода шудааст. 
 Ифодаҳои сатрӣ ифодаҳое ҳастанд, ки барои иҷрои ягон амал
 бо сатрҳо пешбини шуда, дар онҳо функсияҳои кор бо сатрҳо ё ( ва)
 амалҳо бо сатрҳо истифода бурда мешавад. Ин навъ ифодаҳоро
 баъдтар мавриди баҳс қарор медиҳем. 
 Операторҳо 
 Операторҳо ҳукмҳое ҳастанд, ки сабаби иҷро кардани амале
 мегарданд. Дар забони Паскал операторҳои зерин истифода бурда
 мешаванд: 
 сода (хаттӣ) иҷро карда мешаванд. Намунаи операторҳои сода:
 а) бахшиш:=; 
 б) хондан ва навиштан (дохилкунӣ ва хориҷкунӣ); 
 в) даъват (фурӯхони)-и функсия; 
 г) гузариши бешарт ё равон кардани барнома ба нуқтаи
 нишондодашуда, яъне goto; 
 алгоритмӣ таркиб ёфтаанд, ба монанди: 
 a) операторҳои мураккаб (compound statement) - операторҳое
 мебошанд, ки аз ду ё зиёда операторҳои сода таркиб ёфтаанд;
 b) операторҳои даврӣ (repetitive statement) - операторҳое мебошанд,
 ки дар асоси алгоритмҳои даврӣ сохта шудаанд; 
 c) операторҳои шартӣ (conditional stament) -операторҳое ҳастанд, ки
 дар асоси алгоритмҳои шартӣ сохта шудаанд. 
 Қайд. Дар оянда ин операторҳоро ба таври пурра шарҳ
 медиҳем. 
 Функсияҳои стандартии забони Паскал 
 Забони Паскал монанди дигар забонҳо аз функсияҳои
 стандартии зиёде истифода мебарад. Дар ҷадвали зерин рӯйхати
 якчандто аз ин функсияҳо оварда шудаанд: 
 № Истифо- Истифодаи Маъно ва мафҳум 
 даи функсия 
 функсия дар забони 
 дар мате- Паскал 
 матика 
 Қимати мутлақи адади х-ро 
 ҳисоб мекунад. 
 |(cid:)| (cid:)(cid:)𝑠((cid:)) Квадрати адади x-ро ҳисоб
 мекунад: x*x. 
 (cid:) 𝑠(cid:)(cid:)((cid:)) Синуси адади х-ро ҳисоб
 мекунад. 
 𝑠(cid:)(cid:)(cid:) 𝑠(cid:)(cid:)((cid:)) Косинуси адади х-ро ҳисоб
 мекунад. 
 (cid:)(cid:)𝑠(cid:) (cid:)(cid:)𝑠((cid:)) Тангенси адади х-ро ҳисоб
 мекунад. 
 (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)((cid:)) Арктангенси адади х-ро
 ҳисоб мекунад. 
 (cid:)(cid:)(cid:)(cid:)(cid:) (cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)((cid:) ) Экспоненти адади х-ро ҳисоб
 мекунад. 
 (cid:)(cid:) (cid:)(cid:)(cid:)((cid:)) Қимати логарифми
 натуралии адади х-ро ҳисоб 
 (cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)((cid:)) мекунад (x>).
 Қимати логарифми даҳии 
 адади х-ро ҳисоб мекунад 
 (cid:)(cid:)(cid:) (cid:)(cid:)(cid:)((cid:)) (x>).
 Қимати логарифми 
 натуралии адади х-ро ҳисоб 
 (cid:)(cid:)(cid:) (cid:)(cid:)((cid:)) мекунад (x>).
 Қимати решаи квадратии 
 адади х-ро ҳисоб мекунад 
 √(cid:) 𝑠(cid:)(cid:)(cid:) ((cid:)) (x )
 Адади а-ро ба дараҷаи х - ме-
 (cid:) 
 ба≥рдорад. 
 (cid:) (cid:)(cid:)(cid:)(cid:)(cid:)((cid:),(cid:))
 ё 
 (cid:)(cid:)(cid:)( (cid:)
 ∗(cid:)(cid:)((cid:))) ((cid:) Адади ҳақиқиро то калон
 > ) шудан аз қисми бутунаш 
 − (cid:)(cid:)(cid:)(cid:) яклухт мекунад
 Ҳангоми адади a - ро бо b 
 тақсим намудан қисми 
 − (cid:) (cid:)(cid:)(cid:) (cid:) бутунро ҳисоб намуда, қисми
 бақияро ба назар намегирад.
 - Ҳангоми адади a - ро бо b 
 тақсим намудан қисми 
 (cid:) (cid:)(cid:)(cid:) (cid:) бақияро ҳисоб на-муда,
 қисми бу-тунро ба назар 
 намегирад. 
 - Қисми бутуни адади ҳақиқии 
 x - ро бармегардо-над. 
 - (cid:)(cid:)(cid:)(cid:)(cid:)((cid:)) Ададҳои тасодуфии порчаи
 [, x] - ро бармегардонад. 
 - (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)((cid:)) Қимати x - ро то наздик
 шудан ба қисми бутун яклухт
 (cid:)(cid:)(cid:)(cid:)(cid:)((cid:)) мекунад.
 - Тоқ будани аргу-ментро 
 санҷида, ба қимати true доро
 (cid:)(cid:)(cid:)((cid:)) мешавад, агар аргумент тоқ
 бошад. Дар сурати ҷуфт 
 будани аргумент қимати 
 false - ро соҳиб мешавад. 
 - ASCII - коди символи х - ро
 бармегардонад. 
 - (cid:)(cid:)(cid:)((cid:)) Бо дода шудани рақами
 қимати символи ASCII коди 
 (cid:)ℎ(cid:)((cid:)) онро муайян мекунад.
 - С имволе, ки коди он дар 
 кодгузории Unicode ба w 
 (cid:)ℎ(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)((cid:)б)аробар аст, бар-мегардонад.
 - А дади бутуни навъи word - 
 ро ки Unicode символи с-ро 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(с)ифода мекунад,
 бармегардонад. 
 - Қимати x+ - ро ҳисоб 
 мекунад. 
 - 𝑠(cid:)(cid:)(cid:)((cid:)) Қимати x- - ро ҳисоб
 мекунад. 
 - (cid:)(cid:)(cid:)(cid:)((cid:)) Қисми ҳақиқии адади x ро
 меёбад. 
 - (cid:)(cid:)(cid:)(cid:)((cid:)) Қисми бутуни адади x ро
 бармегардонад. 
 (cid:)(cid:)(cid:)((cid:) ) Қимати доимии π.
 Аломати х-ро муайян 
 (cid:) (cid:)(cid:) мекунад. 
 - 𝑠(cid:)(cid:)(cid:) 𝑠(cid:)(cid:)(cid:)((cid:)) Радиани кунҷи додашударо
 бо градус бармегар-донад. 
 - (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)((cid:)) Градуси кунҷи додашударо
 бо радиан бармегар-донад. 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)(cid:)( (cid:)) Синуси гиперболикии х -ро
 ҳисоб мекунад. 
 𝑠ℎ(cid:) 𝑠(cid:)(cid:)ℎ((cid:)) Косинуси гиперболикии х -ро
 ҳисоб мекунад. 
 (cid:)ℎ(cid:) (cid:)(cid:)𝑠ℎ((cid:)) Тангенси гиперболикии х -ро
 ҳисоб мекунад. 
 (cid:)ℎ(cid:) (cid:)(cid:)(cid:)ℎ((cid:)) Арксинуси х - ро ҳисоб
 мекунад. 
 (cid:)(cid:)(cid:)𝑠(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)𝑠(cid:)(cid:)((cid:)) Арккосинуси х-ро ҳисоб
 мекунад. 
 (cid:)(cid:)(cid:)(cid:)(cid:)𝑠(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)𝑠((cid:)) Арктангенси х-ро ҳисоб
 мекунад. 
 (cid:)(cid:)(cid:)(cid:)(cid:)(cid:) (cid:)(cid:)(cid:)(cid:)(cid:)(cid:)((cid:))
 - Максимуми ададҳои а ва b ро
 бармегардонад. 
 - (cid:)(cid:)(cid:)((cid:),(cid:)) Минимуми ададҳои а ва b ро
 ҳисоб мекунад. 
 - (cid:)(cid:)(cid:)((cid:),(cid:)) Қимати тағйирёбандаи а - ро
 бо қимати тағйирёбандаи b 
 𝑠(cid:)(cid:)(cid:)((cid:),(cid:)) иваз мекунад.
 Қайд. Дар версияҳои кӯҳнаи Паскал имконияти аз реша
 баровардани адади манфӣ ва тақсим ба сифр ба ҳолатҳои истисноӣ
 меовард. Вале дар PascalABC.NET ин ду амал бе даъвати ҳолатҳои
 истисноӣ кор мекунад. Масалан, қимати ифодаи r:= / ба
 “бесконечность” ва қимати ифодаи t:= sqrt(-) ба “NaN” баробар
 мебошад. 
 Саволҳо барои мустаҳкамкунӣ 
 мешаванд? 
 муаррифӣ кард? 
 Масъалаҳо барои кори мустақилона 
 Ифодаҳои зеринро дар забони Pascal нависед: 
 = = 
 (cid:)  x 
 (cid:) (cid:) −((cid:)+(cid:)) (cid:)y (cid:) +√((cid:)+(cid:))arctg
 y  tg   
 x x xsin 
 x 
  
 sin 
 = 
 y  .arctgx 
 x 
 (cid:) (cid:) + √((cid:)+(cid:))
  
  x cos 
 y  cos  .x 
 y  .arctgx 
 x 
  (ex cos(x) 
 y  ctg x x y  arcsinx 
 x x 
   
  y ctg  
 y  arctg cosx x x  
 x cos 
 x 
 (cid:) = (cid:) + (cid:) − (cid:) = (cid:) − (cid:)
 (cid:) = (cid:) − √(cid:) − (cid:) = (cid:) − (cid:) + 
 (cid:) = (cid:)(cid:)(cid:)𝑠(cid:)(cid:) (cid:)+(cid:) (cid:) = (cid:) + 
 (cid:) = (cid:) (cid:)(cid:) | 𝑠(cid:)(cid:) (cid:) + (cid:) | (cid:) = 𝑠(cid:)(cid:) (cid:)(cid:) (cid:) − (cid:)(cid:)𝑠 (cid:)(cid:) (cid:)
 (cid:) = (cid:)(cid:)(cid:)(cid:)(cid:) 𝑠ℎ (cid:) + 𝑠ℎ (cid:) (cid:) = (cid:)((cid:)(cid:)𝑠 (cid:)− 𝑠(cid:)(cid:) (cid:))
 ∙(cid:)(cid:) (cid:)ℎ (cid:) 
 (cid:) 
 (cid:) = (cid:) ((cid:)(cid:)𝑠(cid:) + 𝑠(cid:)(cid:)(cid:)) (cid:) = (cid:)·(𝑠(cid:)(cid:) (cid:)(cid:) (cid:) − (cid:)(cid:)𝑠 (cid:)(cid:) (cid:))
 БОБИ 
 (cid:).= 
 Ш 
 √ 
 А 
 К 
 + 
 Л 
 (cid:) 
 И 
 ·(cid:) 
 У 
 (cid:)(cid:) 
 М 
 (cid:)(cid:) 
 У 
 √ 
 М 
 (cid:) 
 ИИ БАРН 
 (cid:) 
 О 
 = 
 М 
 (cid:) 
 А 
 ·( 𝑠 
 Д 
 (cid:)(cid:)
 А 
 (cid:) 
 Р 
 − 
 З А 
 (cid:)(cid:)
 Б 
 𝑠 
 О 
 (cid:)(cid:)
 Н 
 (cid:))
 И 
 ПАСКАЛ 
 Муқаддима 
 Дар бобҳои ва мо бо баъзе элементҳои забони Паскал
 шинос шудем. Дар ин боб бошад, бо шакли умумии барнома дар
 забони Паскал шинос хоҳем шуд. Шакли умумии як барнома дар
 забони Паскал чунин аст: 
 program номи барнома; 
 Бахши эълонкуниҳо 
 begin 
 д⋮астурҳои асосии барнома; Қисми тани барнома 
 end. 
 Ҳар барнома дар забони Паскал, бо калимаи калидии program
 оғоз гардида, дорои ном мебошад. Барои номгузории барнома низ аз
 қонуни номгузории идентификаторҳо истифода бурда мешавад. Пас
 аз номгузории барнома бахши эълонкуниҳо сар мешавад, ки дар ин
 бахш нишонаҳо (label), доимиҳо (const), типҳо (type),
 тағйирёбандаҳо (var) ва зербарномаҳо (procedure ва function) эълон
 карда мешаванд. Бо ин элементҳо бо тадриҷ дар оянда китоб шинос
 хоҳем шуд. Пас аз ин дар дохили begin ва end дастурҳои асосии
 барнома навишта мешаванд. Ин қисматро қисми асосии барнома ва
 ё тани барнома ном мебаранд. 
 Фаромӯш набояд кард, ки пас аз end аломати нуқта гузошта
 мешавад. Агар дар барнома якчандто end истифода шавад, он гоҳ ба
 ғайр аз end-и охирон пас аз end-ҳои дигар аломати нуқта вергул (;)
 гузошта мешавад. 
 Қайд. Дар версияи PascalABC.NET номгузории барнома
 зарур намебошад, аз ин рӯ истифодаи дастури program дар он
 ҳатмӣ нест. 
 Равишҳои сохтани барнома 
 Барноманависӣ низ яке аз методҳои ҳал намудани масъала
 мебошад. Пеш аз сохтани барнома аввал бояд моҳияти масъала дарк
 карда шуда, сипас вобаста ба талаботи масъала барнома навишта
 шавад. Аз ин хотир агар мо моҳияти масъаларо хуб дарк карда
 тавонем, пас бо осонӣ метавонем барномаи онро нависем. Барои
 навиштани як барнома бояд марҳалаҳои зеринро иҷро кард:
 Ҳар яке аз ин марҳалаҳоро шарҳ медиҳем. 
 Муайян намудани хостаҳои масъала – ин аст, ки пеш аз ҳама
 бояд масъала пурра дарк карда шуда, чизҳои барои он лозим ба назар
 гирифта шавад. Дар сурати дарк накардани масъала, ҳал намудани
 он ғайриимкон мебошад. Бинобар ин, агар мо масъаларо бори
 нахустин хонда, ба моҳияташ сарфаҳм нарафтем, бояд бори дигар
 онро хонем. То замоне, ки ба моҳияти масъала сарфаҳм наравем,
 наметавонем барои ҳалли он барнома нависем. Аз ин рӯ, ин марҳала
 марҳалаи асосӣ ба ҳисоб меравад. 
 Таҳлили масъала – шомили муайян намудани вурудиҳо ва
 хуруҷиҳои масъала мебошад. Дар ин бахш бояд ба саволҳои зерин
 ҷавоб дод: чӣ дода шудааст? чиро бояд ёфт? барои ҳалли масъала чӣ
 чиз намерасад? масъала барои чӣ ҳал карда мешавад? ва ғайра.
 Агар марҳалаҳои ва ба хуби иҷро карда нашаванд,
 масъала дуруст ҳал нахоҳад шуд. Аз ин рӯ, масъаларо сараввал
 хонда, сипас вурудиҳо ва хуруҷиҳои онро мушаххас кардан лозим
 аст. Барои ба моҳияти марҳалаи якум ва дуюм сарфаҳм рафтан,
 масъалаи мушаххасеро дида мебароем. 
 Масъала. Тарафҳои росткунҷа дода шудаанд. Талаб карда
 мешавад, ки масоҳати он ҳисоб карда шавад. 
 Таҳлил. Тавре медонем, барои ҳисоб намудани масоҳати
 росткунҷа донистани бар ва дарозии он зарур мебошад. Аз ин рӯ,
 бояд ба сифати бар ва дарозӣ ягон ададро пеши назар гирифта, сипас
 масоҳати росткунҷаро ҳисоб намуд. Дар ҷадвали зерин вурудӣ ва
 хуруҷиҳои масъалаи додашуда оварда шудаанд: 
 Вурудиҳо Хуруҷиҳо 
 Дарозии росткунҷа Масоҳати росткунҷа 
 Бари росткунҷа 
 Вақте ки вурудиҳо ва хуруҷиҳои масъала муайян карда
 шаванд, бояд формулае, ки робитаи байни онҳоро мушаххас
 мекунад, тартиб дода шавад. Барои масъалаи додашуда формулаи
 умумӣ чунин шакл дорад: 
 Масоҳат:=бар*дарозӣ; (S=a*b). 
 Дар баъзе мавридҳо мумкин аст, робитаи байни вурудиҳо ва
 хуруҷиҳо бо ин содагӣ анҷом нагирад ва зарур ба фарзҳо ва
 гипотезаҳои хосе бошад. Агар мо додаҳои вурудӣ ва хуруҷиро аз
 ҳам ҷудо карда натавонем, он гоҳ баъд аз формулаи навишташуда,
 ҳарфҳои пас аз амали баробар омада, додаҳои вурудӣ ва пеш аз
 аломати баробар омада, додаҳои хуруҷӣ мебошанд. Масалан, дар
 ифодаи ) додаҳои вурудӣ a ва b буда, P- хуруҷӣ
 мебошад. Агар пас аз амали баробар як ҳарф чанд маротиба низ
 такрор ша(cid:)ва=д, о(н(cid:) т+ан(cid:)ҳо як маротиба дохил карда мешавад. Аз ин ҷо
 барои ифодаи 
 додаҳои вурудӣ низ a ва b мебошанд. 
 Дар тарроҳи(cid:)и =алг(о(cid:)ри+тм(cid:)и) +ма√с(cid:)ъа−ла +зар(cid:)ур аст, ки марҳалаи
 анҷоми кори масъала дақиқан равшан шавад. Сипас, муайян карда
 шавад, ки оё алгоритми масъала дуруст кор мекунад ё не? Барои
 ҳалли масъала кадом намуд алгоритмҳо вуҷуд доранд? Алгоритми
 содатарини ҳалли масъала низ вуҷуд дорад? Ин марҳала марҳалаи
 душвортарини ҳалли масъала ба ҳисоб меравад. Аз ин лиҳоз
 маслиҳат дода мешавад, ки баъзе ҷузъиёти масъала сарфи назар
 карда шуда, аз равиши боло ба поён (top down design) истифода
 бурда шавад. Дар ин равиш аввал марҳалаҳои асосии масъала ҳал
 карда мешаванд ва сипас бо ҳалли марҳиллаи боқимонда, масъала
 пурра ҳал мегардад. Аксари алгоритмҳо дорои марҳалаҳои зерин
 мебошанд: 
 Вақте ки марҳалаҳои асосии масъала муайян шуданд,
 метавон ҳар марҳаларо алоҳида-алоҳида иҷро кард. 
 Яке аз марҳалаҳои тарроҳи алгоритм идоракунии он ба ҳисоб
 меравад. Аз ин ҷо барои мо зарур аст, ки ҳар марҳалаиро монанди
 компютер иҷро намуда, бовари ҳосил кунем, ки он мувофиқи хостаи
 мо амал мекунад. Агар хатогиҳои алгоритм дар ин марҳала
 (марҳалаи ҳалли масъала) ислоҳ карда шаванд, сабаби сарфаҷӯии
 вақт мегардад. 
 Дар марҳалаи амалисозӣ, алгоритм бояд ба барнома табдил
 дода шавад. Бо суханҳои дигар, ҳар қисмҳои алгоритм бояд бо як ё
 якчанд дастурамалҳои забони барномасозӣ табдил дода шавад.
 Дар марҳалаи санҷиши барнома, барнома бояд комилан
 санҷида (тест карда) шавад, то муайян шавад, ки оё он ба талабот
 ҷавобгӯ ҳаст ё не. Дар қисми санҷишӣ, бояд барнома барои додаҳои
 гуногун чанд маротиба санҷида шавад, то муайян гардад, ки
 натиҷаи барнома ба натиҷаҳои интизоршаванда мувофиқат
 мекунанд ё не. 
 Дастурҳои дохилкуни ва хориҷкунӣ 
 Додаҳо бо се усул ба тағйирёбандаҳо бахшида шуда, дар
 ҳофиза захира карда мешаванд: 
 Дар мавзӯъҳои қаблӣ ду равиши авваларо то андозае мавриди
 баҳс қарор дода будем. Равиши сеюмро бошад, ҳоло мавриди баҳс
 қарор медиҳем. Барои он ки барнома тавонад бо додаҳои гуногун
 кор кунад, бояд додаҳо дар вақти иҷроиши барнома дохил карда
 шаванд. Хондани додаҳо аз вурудӣ ва дар ҳофиза нигоҳ доштани
 онҳо амали вурудӣ ном дорад. Пас аз иҷрои амали вурудӣ барнома
 натиҷаҳои лозимиро ҳисоб намуда, дар ҳофиза захира мекунад. Ин
 натиҷаҳо метавонанд ба саҳифаи тасвир ё файл хориҷ карда шаванд.
 Дастури writeln 
 Ин дастур барои чопи иттилоот истифода бурда мешавад.
 Дастури мазкур натиҷаи барномаро ба саҳифаи тасвир хориҷ
 мекунад. Тавассути ин дастур натанҳо натиҷа, балки метавон
 иттилооти гуногунро хориҷ намуд. Пас аз хориҷ намудани иттилоот
 тавассути дастур курсор дар сатри нав қарор мегирад. Тарзи
 истифодабарии ин дастур шакли зеринро дорад: 
 writeln(рӯйхати додаҳои хуруҷӣ); 
 дар ин ҷо ба сифати додаҳои хуруҷӣ метавонанд додаҳои дилхоҳ
 навъ истифода шаванд. Масалан, барномаи зерин пайғоми Hello
 Word – ро дар саҳифаи тасвир чоп мекунад: 
 program test; 
 begin 
 writeln('Hello World!'); 
 end. 
 Тавассути як дастури writeln метавон якчанд қиматро низ чоп
 кард. Дар ин сурат бояд иттилоот лозимӣ аз ҳамдигар бо аломати
 вергул ҷудо навишта шаванд. Дар мисоли зерин қимати ададҳои
 бутуни a ва b чоп карда мешаванд: 
 writeln(a,b); 
 Тавассути дастури writeln метавон додаҳои гуногун-навъро
 низ хориҷ кард. Масалан, 
 writeln('Қимати а=', a, ' аст'); 
 Илова бар ин, дастури writeln корбурди дигаре низ дорад,
 яъне он метавонад ҳамчун як сатри холиро низ чоп кунад. Дар ин
 сурат он бе қавс навишта мешавад. 
 Writeln('m=', m); 
 Writeln; 
 Writeln('n=', n); 
 Қолаббандии хуруҷи барнома 
 Ҳангоми хориҷкунии иттилоот метавон шакли хуруҷиро низ
 муайян кард. Масалан, метавон муайян кард, ки иттилооти
 хориҷшуда чӣ қадар фазои саҳифаи тасвирро ишғол мекунад. Ин
 амалро қолаббандии иттилоот ё муайян намудани дарозии майдони
 хуруҷӣ мегӯянд. Барои муайян намудани дарозии майдон бояд пас
 аз тағйирёбандаи хуруҷӣ аввал аломати ду нуқта (:) ва баъд дарозии
 майдон бо адади бутун нишон дода шавад. Дар як дастури хуруҷӣ
 якбора метавон барои якчанд додаи хуруҷӣ қолаб муайян кард.
 Ҳангоми хориҷкунӣ вобаста аз навъи додаҳо қолаби хуруҷӣ
 сохта мешавад. 
 Қолаббандии ададҳои бутун 
 Барои қолаббандии хуруҷӣ ададҳои бутун, пас аз 
 тағйирёбандаи навъи бутун аломати ду нуқта (:) ва баъд дарозии
 майдон навишта мешавад. Агар дарозии нишондода адади манфӣ
 бошад, он гоҳ он ҳамчун як рақам ҳисобида мешавад. 
 Мисол. 
 program test; 
 var 
 x, y: integer; 
 begin 
 x:=; 
 y:=; 
 writeln('x=', x:, ' y=', y:); 
 end. 
 Натиҷа: x= y= 
 Тавре дида мешавад, дар ин ҷо барои адади х, мавқеъ ва
 барои адади у бошад, мавқеъ нишон дода шудааст. Ҳафт мавқеъе,
 ки барои х нишон дода шуда буд, аввал се рақами х аз рост, сипас
 чор фосила гузошта шудааст. Барои у бошад ду мавқеъ нишон дода
 шудааст, ки он аз дарозии адади у хурд мебошад, аз ин рӯ он ба назар
 гирифта намешавад. 
 Қолаббандии ададҳои ҳақиқӣ 
 Барои қолаббандии ададҳои ҳақиқӣ аз ду усул истифода
 мебаранд: 
 Равиши аввал ба равише, ки дар мавриди ададҳои бутун
 истифода карда будем, монанд мебошад. 
 Шакли умумии равиши дуюм чунин аст: 
 writeln(a:n:n); 
 дар ин ҷо a - ягон тағйирёбандаи навъи ҳақиқӣ, n дарозии майдоне,
 ки барои хориҷ намудани қимати тағйирёбанда пешбинӣ шудааст ва
 n-миқдори разрядҳои пас аз вергул мебошад. Бо суханҳои дигар, аз
 сабаби он ки адади ҳақиқӣ аз ду қисм таркиб ёфтааст, бинобар ин
 барои ҳар як қисми он алоҳида-алоҳида дарозӣ нишон дода
 мешавад. 
 Агар дарозии n аз миқдори рақамҳои пас аз вергули адад
 хурд бошад, он гоҳ Паскал адади додашударо то n разрияди пас аз
 вергул яклухт намуда, баъд хориҷ мекунад. Масалан, дар барномаи
 зерин барои хориҷ намудани адади ҳақиқии. аз якчанд
 қолаб истифода бурда шудааст: 
 program test; 
 var 
 x: real; 
 begin 
 x:=.; 
 writeln('x=', x); //. 
 writeln('x=', x:); //. 
 writeln('x=', x:); //. 
 writeln('x=', x::); //. 
 writeln('x=', x::); //. 
 writeln('x=', x::); //. 
 writeln('x=', x::); //. 
 writeln('x=', x::); // 
 end. 
 Натиҷаи барнома мувофиқи ҳар сатр дар тарафи рости он ба
 намуди эзоҳ нишон дода шудааст. Шакли пурраи он бошад, дар поён
 оварда шудааст: 
 x=. 
 x=. 
 x=. 
 x=. 
 x=. 
 x=. 
 x=. 
 x= 
 Қолаббандии сатрҳо 
 Ҳангоми хориҷкунӣ сатрҳо дар тарафи рости майдон
 навишта мешаванд, бинобар ин агар дарозии нишондодашуда аз
 дарозии сатр зиёдтар бошад, он гоҳ дар тарафи чап ҷойи холӣ
 гузошта мешавад. Дар сурати акс дарозӣ сарфи назар мегардад.
 Дастури write 
 Яке аз даструҳои хориҷкунии дигар, дастури write мебошад,
 ки амали ба дастури writeln монандро иҷро мекунад. Фарқияти
 асосии дастури write аз дастури writeln дар он аст, ки пас аз
 хориҷкунӣ тавассути дастури writeln курсор дар сатри нав қарор
 мегирад, аммо дар дастури write курсор дар сатри ҷорӣ пас аз қимати
 хориҷшуда қарор гирифта, ба сатри нав намегузарад. Мисол:
 program test; 
 var 
 x, y: integer; 
 begin 
 x:=; y:=; 
 write('x=', x); 
 write(' y=', y); 
 writeln; 
 write('Ин намунаи хориҷкунӣ аст.'); 
 end. 
 Натиҷаи барнома шакли зеринро дорад: 
 x= y= 
 Ин намунаи хориҷкунӣ аст. 
 Дастури readln 
 Дастури readln барои хондани иттилоот аз дастгоҳи вурудӣ
 истифода бурда мешавад. Дар ин ҷо дастури вурудӣ гуфта,
 клавиатура ва ё дигар воситаҳои дохилкунӣ дар назар гирифта
 мешавад. Дар ин дастур дастгоҳи вурудӣ гуфта, танҳо клавиатура
 дар назар дошта мешавад. Тарзи истифодаи дастури мазкур шакли
 зеринро дорад: 
 readln(рӯйхати тағйирёбандаҳои вурудӣ); 
 Агар дар дастури мазкур зарурати дохил намудани қимати
 зиёда аз як тағйирёбанда мавҷуд бошад, он гоҳ онҳо аз ҳамдигар бо
 аломати вергул ҷудо карда мешаванд. Ҳангоми иҷрои дастури
 мазкур барнома мунтазири дохил намудани қимати 
 тағйирёбандаҳои вурудӣ мегардад. Пас аз дохил намудани қимати
 тағйирёбандаҳо идоракунии барнома ба сатрҳои баъдӣ мегузарад.
 Дастури мазкур бо тағйирёбандаҳои гуногуннавъ муносибатҳои
 гуногун дорад. Дар ҷадвали зерин тарзи истифодаи додаҳои навъҳои
 гуногун тавассути дастури readln оварда шудаанд; 
 Навъи Амале, ки иҷро Мисол 
 № тағйирё мекунад Додаҳои Додаҳои 
 банда вурудӣ хондашуда 
 Char Як символро мехонад xyz x 
 Integer Фазои холии ибтидои 
 ададро сарфи назар 
 карда, символҳои 
 баъди онро то фазои 
 холӣ ё пахши 
 тугмачаи Enter 
 мехонад. 
 Real Фазои холии иб-тидои.. 
 ададро сарфи назар 
 карда, символҳои 
 баъди онро то фазои 
 холӣ ё пахши 
 тугмачаи Enter 
 мехонад. 
 String Тамоми символҳои xyz ab xyz ab 
 вуру-диро то пахши 
 тугмачаи Enter 
 мехонад. 
 Мисол. Барномае нависед, ки бо дода шудани бар ва дарозии
 росткунҷа, масоҳати онро ҳисоб кунад. 
 program test; 
 var 
 a, b, S: integer; 
 begin 
 Write('a=');Readln(a); 
 Write('b=');Readln(b); 
 S:= a * b; 
 Writeln('S=', S); 
 end. 
 Натиҷаи барнома шакли зеринро дорад: 
 a= 
 b= 
 S= 
 Қайд. Ҳангоми истифодаи сатрҳо ва ададҳо дар як дастури
 readln кӯшиш намоед, ки аввал иттилооти ададӣ ва баъд
 иттилооти сатриро дохил кунед. Зеро интиҳои додаҳои сатрӣ
 пахши тугмачаи Enter буда, охири адад фазои холӣ ба ҳисоб
 меравад. Дар сурати акс ворид намудани адади дохил намуда, низ
 дар охири сатр илова карда мешавад. 
 Дастури read 
 Дастури read низ монанди дастури readln барои хондани
 иттилоот аз вурудӣ истифода бурда мешавад. Фарқияти дастури read
 аз дастури readln дар он аст, ки дар дастури read символҳои иловагии
 дар хати дохилкунӣ вуҷуд дошта хонда намешаванд ва дастурҳои
 readln ё read –и баъдӣ метавонанд онҳоро хонанд. Дар дастури readln
 бошад, символҳои иловагии сатри вурудӣ нест карда мешаванд.
 Тарзи истифодаи дастури мазкур шакли зеринро дорад: 
 readln(рӯйхати тағйирёбандаҳои вурудӣ); 
 Мушоҳидаи саҳифаи хуруҷии барнома 
 Пас аз иҷрои барнома дар Turbo Pascal ё Free Pascal додаҳои
 лозими хориҷ карда шуда, дар ҳол равзанаи хуруҷӣ маҳкам карда
 мешавад, яъне идоракунӣ ба равзанаи коди лоиҳа бармегардад. Дар
 ин сурат мушоҳидаи натиҷаҳо ғайриимкон мебошад. Барои интизор
 нигоҳ доштани саҳифаи хуруҷӣ аз дастури read ё readln истифода
 бурда мешавад. Дар ин ҳолат яке аз дастурҳои мазкур, пас аз
 интиҳои барнома ва пеш аз end-и охирон бе аргумент навишта
 мешавад. Дастури мазкур сабаб мешавад, ки саҳифаи тасвир то
 дохил намудани ҳамаи иттилооти лозимӣ ва мушоҳидаи натиҷа
 интизор нигоҳ дошта шавад. 
 Дастури uses 
 Бо истифода аз дастури uses метавон аз барномаҳое, ки
 қаблан навишта шудааанд ва дар Паскал вуҷуд доранд, истифода
 кард. Илова бар ин, метавон, барномае навишт, ки дигарон дар
 барномаҳои дигар аз он истифода кунанд. Чунин барномаҳоро unit
 мегӯянд. Тарзи истифодабарии дастури uses чунин шакл дорад:
 uses номи unit; 
 Яке аз чунин unit-ҳо unit-и crt мебошад, ки барои идораи
 саҳифаи тасвир пешниҳод шудааст. Тарзи пайваст кардани он чунин
 шакл дорад: 
 uses crt; 
 Баъдтар ин мавзӯъро мавриди баҳс қарор медиҳем.
 Қайд. unit-ҳо асосан паз аз номи барнома ва пеш аз
 муаррифӣ намудани доимиҳо ва тағйирёбандаҳо пайваст карда
 мешаванд. 
 Дастури gotoxy 
 Ҳангоми хориҷкунӣ иттилоот дар мавқеи нахустини ҷойи
 холигии саҳифаи тасвир навишта мешаванд. Ба ғайр аз ин метавон
 ҷойи хуруҷи иттилоотро муайян кард. Барои иҷрои ин амал аз
 дастури gotoxy, ки дар unit-и crt мавҷуд аст, истифода кард. Тарзи
 истифодабарии ин дастур шакли зеринро дорад: 
 gotoxy(сатр, сутун); 
 Дастури мазкур муайян мекунад, ки иттилоот дар кадом сатр
 ва кадом сутун хориҷ шавад. Масалан, дастури gotoxy(, )
 курсорро ба сатри панҷум ва сутуни даҳум интиқол медиҳад.
 Функсияҳои дигари дохилкунӣ ва хориҷкунии PascalABC.NET
 Ба ғайр аз функсияҳои дохилкунӣ ва хориҷкунии мавриди
 баҳс қарордодаамон, дар PascalABC.NET функсияҳои дигаре низ
 вуҷуд доранд, ки асоситарини онҳо дар ҷадвали зерин оварда
 шудаанд: 
 function ReadInteger: integer; 
 Қимати тағйирёбандаи навъи integer-ро, ки аз 
 клавиатура дохил карда шудааст, бармегардонад. 
 function ReadReal: integer; 
 Қимати тағйирёбандаи навъи real-ро, ки аз клавиатура
 дохил карда шудааст, бармегардонад. 
 function ReadString: integer; 
 Қимати тағйирёбандаи навъи string-ро, ки аз 
 клавиатура дохил карда шудааст, бармегардонад. 
 function ReadChar: integer; 
 Қимати тағйирёбандаи навъи char-ро, ки аз 
 клавиатура дохил карда шудааст, бармегардонад. 
 function ReadBoolean: integer; 
 Қимати тағйирёбандаи навъи Boolean-ро, ки аз 
 клавиатура дохил карда шудааст, барме-гардонад. 
 procedure writelnFormat(formatstr: string; a,b,...);
 Қимати тағйирёбандаҳои a,b,...-ро бо мувофиқа аз
 сатри formatstr хориҷ мекунад ва курсорро ба сатри нав
 мекӯчонад. 
 Ҳамаи функсияҳои дар ҷадвал овардашуда, ба ғайр аз
 функсияи writelnFormat, тарзи истифодабарии сода доранд. Аз ин рӯ,
 танҳо функсияи writelnFormat - ро мавриди баҳс қарор медиҳем. Дар
 функсияи мазкур параметри formatstr барои қолаббандии додаҳои
 хуруҷӣ пешбинӣ шудааст. Намунае аз мисоли дастури мазкур.
 program test; 
 var 
 s: string; 
 i: integer; 
 begin 
 // Табдилдиҳии бутун ба сатрӣ 
 i:=; 
 s:= i.ToString; 
 writelnFormat('Адади бутни: {} пас аз табдилдиҳӣ ба
 навъи сатрӣ: ''{}''', i, s); 
 // Табдилдиҳии сатр ба навъи бутун 
 s:= ''; 
 if integer.TryParse(s, i) then 
 writelnFormat('Сатри: ''{}'' пас аз табдилдиҳӣ ба навъи
 бутун: {}', s, i); 
 var a:=; 
 var b:=; 
 var c:=; 
 // Ба тартиби баръакс хориҷ намудани ададҳои a, b ва с
 WritelnFormat('{},{},{}', a, b, c); 
 // Муайян намудани васеъгии майдони хориҷкунӣ 
 WritelnFormat('{,:f}',.); 
 (* Барои ададҳои ҳақиқӣ муайян намудани миқдори
 рақамҳои пас аз аломати вергул *) 
 WritelnFormat('{:f}',.); 
 end. 
 Дар ин ҷо ба сифати параметри formatstr, дар дохили қавси
 системавӣ нишон додани адади бутун, рақами тартибии додаҳои
 хуруҷиро ифода мекунад. Набояд фаромуш кард, ки додаҳои хуруҷӣ
 сар карда аз рақамгузорӣ карда мешаванд. Дар ин мисол ба сифати
 параметри formatstr нишон дода шудани '{},{},{}', маънои адади
 сеюм, дуюм ва якумро дорад Қолаби дигари параметри formatstr
 чунин шаклро дорад:{N,M:Axx}, ки дар ин ҷо N-мавқеи чопи адад,
 M- васеъгии майдон ва Axx қолаби ададиро ифода мекунад.
 Масалан, қолаби ададии {: f} дар мисоли овардашуда, то се
 рақами пас аз вергул чоп намудани адади ҳақиқиро ифода мекунад.
 Натиҷаи барнома шакли зеринро дорад: 
 Адади бутни: пас аз табдилдиҳӣ ба навъи сатрӣ:
 '' 
 Сатри: '' пас аз табдилдиҳи ба навъи бутун:,, 
 Қайд. Функсияи readInteger метавон амали хондан
 (дохилкуниро сода гардонад. Ҳоло якчанд мисолҳоро дида мебароем.
 Мисол. 
 Begin 
 //Дохилкунии як адад 
 var a:= readInteger; 
 //Дохилкунии ду адад 
 var (x, y):= readInteger; 
 //Дохилкунии се адад 
 var (b, c, d):= readInteger; 
 end. 
 Саволҳо барои мустаҳкамкунӣ 
 кадомҳоянд? 
 Паскал медонед? 
 Масъалаҳо барои кори мустақилона 
 Масъалаҳои типи Begin 
 миёнаи арифметикӣ ва геометрии онҳоро ҳисоб кунад.
 разрядҳои садӣ ва даҳии онро иваз кунад. 
 дар ин ҷо лаҳзаи вақтро h бо соат ва m бо дақиқа ифода мекунад.
 Вақти кӯтоҳтарине (бо да<қиℎқа≤), ки,то ≤бо(cid:) ҳа≤м вох)ӯрдани ақрабакҳо
 мегузарад, муайян карда шавад. 
 периметри онро ҳисоб кунад. 
 (cid:) (cid:) 
 Қайд. Периметри росткунҷа бо ёрии формулаи 
 ҳисоб карда мешавад. 
 (cid:)на)висед, ки дар ҳолати тоқ будани онҳо қимати, дар дигар
 ҳолатҳо қимати аз як фарқкунанда хориҷ кунад. 
 Қайд. Аз оператори шартӣ ва даврӣ истифода бурдан
 мумкин нест. 
 рақами якум бар сеюм ва дуюм бар чорум пайдо мешавад, ёфта
 шавад. 
 миёнаи арифметикӣ ва геометрии рақамҳои онро ҳисоб кунад.
 адади бутун) давр зад. Муайян карда шавад, ки аз оғози
 шабонарӯз чанд дақиқаи пурра гузаштааст. 
 квадрати рақамҳои онро ҳисоб кунад. 
 фоизи адади b-ро муайян кунад. 
 Қайд. Барои p(cid:) фоизи адади b-ро ёфтан р ва b- ро бо ҳам зарб
 намуда, натиҷаро ба тақсим кардан лозим аст. 
 онро ба қолаби пулӣ гардонад. 
 дода шудани қиматҳои a ва b қимати ифодаи Z=f(f(a+b)) - ро
 ҳисоб кунад. 
 Барномае нависед, ки дилхоҳ соли ҳиҷриро ба мелодӣ гардонад.
 Қайд. Барои соли ҳиҷриро ба мелодӣ гардонидан, аз
 формулаи ва соли мелодиро ба ҳиҷрӣ 
 Ҳ 
 гардонидан, аз формулаи истифода карда 
 М = Ҳ−+ 
 мешавад. 
 М− 
 Ҳ = М−+ 
 Муайян кунед, ки пули гузоштаи он дар муддати вақти t чӣ қадар
 зиёд мешавад ва чӣ қадар даромад меоварад? 
 аъзои нахустин ва фарқи он ҳисоб кунед.,. Масоҳат ва периметри онро ёбед. 
 бо Фаренгейт" навиштааст. Ин ҳароратро бо селси(cid:)я,г(cid:)а,р(cid:)д онед.
 нахустин ва махраҷи он ҳисоб кунед. 
 -ро ҳаноми мавҷуд будан(cid:)и р·е(cid:)ш +а, б(cid:)о ·д(cid:)о д=а ш (cid:)у д,ани коэффитсиентҳо
 {,,,,, бо ис(cid:)т и·ф(cid:)о д+а а(cid:)з ф·о(cid:)рм =ул а(cid:)ҳ о,и, y= ( · – · )/D (дар ин ҷо D = · – 
 (cid:) ·(cid:) а(cid:)ст ) (cid:)ҳи со(cid:)б к(cid:)у нед. (cid:) =
 ((cid:) ·(cid:)– (cid:) ·(cid:))/(cid:) (cid:) (cid:) (cid:) (cid:) (cid:) (cid:)
 (cid:) (cid:) 
 Масъалаҳои типи Integer 
 ) Адади серақама дода шудааст. Ададе ёфта шавад, ки ҳангоми
 ҷойивазкунии рақамҳои якуму дуюми он ҳосил мешавад (
 натиҷа: ). 
 ) Адади чоррақама дода шудааст. Ҳосили зарб ва ҳосили чамъи
 квадрати рақамҳои он ёфта шавад. 
 ) Адади чоррақама дода шудааст. Ададе, ки ҳангоми аз рост ба чап
 хондани ин адад пайдо мешавад ёфта шавад. ( натиҷа: )
 ) Адади чоррақама дода шудааст. Ададе, ки ҳангоми ҷойивазкунии
 рақами якум бар дуюм ва сеюм бар чорум пайдо мешавад ёфта
 шавад. Масалан аз адади адади пайдо мешавад.
 ) Аз адади серақамаи x рақами якуми он партофта шуд. Адади
 боқимонда ба зарб карда, пас аз он ба рақами сеюми
 партофташуда ҷамъ карда шуд. Дар натиҷа адади ҳосил
 гардид. Адади x- ро ёбед. 
 ) Аз адади серақамаи x рақами дуюми он партофта шуд. Ҳангоми
 ба адади ҳосилшудаи дурақама аз тарафи рост рақами дуюми х-
 ро ҳамроҳ намуданд адади ҳосил шуд. Адади x- ро ёбед.
 ) Аз адади серақамаи x рақами охирони он партофта шуд. Пас аз он
 амали ҷойивазкунии рақамҳо дар адади дурақамаи ҳосилшуда
 иҷро гашт. Ба ин адад аз тарафи чап рақами охирони
 партофташудаи адади х ҳамроҳ карда шуд. Дар натиҷа адади n
 ҳосил гардид. Ҳангоми дохил намудани қимати n адади x ёфта
 шавад ( ). 
 Рақами≤ м(cid:)ув≤офиқи асри он муайян карда шавад. Ба назар
 гирифта шавад, ки оғози асри -ум соли аст.
 у- адади бутун) давр зад. Муайян карда шавад, ки аз оғози
 шабонарӯз чанд дақиқаи пурра гузашт. ≤ у ≤,
 рақамҳои онро ёбед. 
 истифода бурда, рақами садии онро хориҷ кунед. 
 бақиянокро истифода бурда, рақами ҳазории онро хориҷ кунед.
 сипас, рақами даҳии онро хориҷ кунед. 
 рақамҳои онро ҳисоб кунед. 
 зада, дар охири он нависед. 
 дар аввал нависед. 
 сешанбе,-чоршанбе, - панҷшанбе, - ҷумъа, - шанбе, -
 якшанбе. Адади бутуни К, ки дар фосилаи - мехобад дода
 шудааст. Рақами ҳафтаи рузи К-уми сол ёфта шавад, агар
 маълум бошад, ки дар ин сол -уми январ рӯзи … буд.
 a) якшанбе 
 b) душанбе 
 c) сешанбе 
 d) чоршанбе 
 e) панҷшанбе 
 f) ҷумъа 
 g) шанбе 
 сешанбе, -чоршанбе, - панҷшанбе, - ҷумъа, - шанбе, -
 якшанбе. Адади бутуни К, ки дар фосилаи - ва адади
 бутуни N, ки дар фосилаи - мехобад дода шудааст. Рақами
 ҳафтаи рузи К-уми сол ёфта шавад, агар маълум бошад, ки дар
 ин сол -уми январ рӯзи ҳафтаи N-ум буд. 
 Масъалаҳои типи Boolean 
 серақама аз рост ба чап ва аз чап ба рост якхел хонда мешавад.
 мулоҳизаи «Ақалан яке аз ададҳои А ва В тоқ нестанд» санҷида
 шавад. 
 санҷед. «Адади a.... мебошад» 
 a) «мусбат» 
 b) «манфӣ» 
 c) «тоқ» 
 d) «ҷуфт» 
 e) «дурақамаи ҷуфт » 
 f) « дурақамаи тоқ» 
 санҷед. 
 a) «Суммаи рақамҳои адади n адади ҷуфт мебошад»
 b) «Қимати миёнаи арифметикии рақамҳои адади n адади тоқ
 мебошад» 
 c) «Адади n аз рост ва аз чап якхел хонда мешавад
 (Палиндром).» 
 d) «Рақамҳои адади n бо тартиби афзуншавӣ ҷойгир
 мебошанд» 
 e) «Рақамҳои адади n бо тартиби камшавӣ ҷойгир мебошанд»
 зеринро санҷед. «Секунҷаи тарафҳояш ба a, b ва c баробар
 мавҷуд аст.» 
 (ададҳои бутуни аз то ) дода шудаанд. Бо назардошти он ки
 катакчаи поёнии тарафи рости тахтаи шоҳмот (,) сиёҳ аст,
 дурустии мулоҳизаи зеринро санҷед. «Катакчаи (майдони)
 додашуда ранги сафед дорад». 
 ( ) (ададҳои бутуни аз то ) дода шудаанд. Бо назардошти
 он ки катакчаи поёнии тарафи рости тахтаи шоҳмот (,) сиё(cid:)ҳ,а(cid:)с т,
 д(cid:)у р,у(cid:)с тии мулоҳизаи зеринро санҷед. «Майдонҳои додашуда
 ранги якхела доранд». 
 ( )-ро ба назар гирифта, дурустии мулоҳизаи
 «муодилаи квадр(cid:)ат(и(cid:)и≠ ), решаҳои ҳақиқӣ дорад»
 са(cid:)нҷ=ид(cid:)а ш−ава(cid:)д(cid:).
 зеринро санҷед: «Нобаробариҳои ҷой доранд». 
 зеринро санҷед: «Нобаробариҳои (cid:) > ва (cid:) ≥ ҷой доранд».
 зеринро санҷед: «Нобаробарии (cid:) > ё (cid:) ҷ≤ой− дорад».
 ифода мекунанд, дода шудаан(cid:)д. <Ду (cid:)ру с<ти (cid:)и мулоҳизаи зеринро
 санҷед. 
 a) «Нуқта бо координатаҳои x ва y дар чоряки якуми
 ҳамвории декартӣ мехобад.» 
 b) «Нуқта бо координатаҳои x ва y дар чоряки дуюми
 ҳамвории декартӣ мехобад.» 
 c) «Нуқта бо координатаҳои x ва y дар чоряки сеюми
 ҳамвории декартӣ мехобад.» 
 d) «Нуқта бо координатаҳои x ва y дар чоряки чоруми
 ҳамвории декартӣ мехобад.» 
 e) «Нуқта бо координатаҳои x ва y дар чоряки якуми ё
 дуюми ҳамвории декартӣ мехобад.» 
 f) «Нуқта бо координатаҳои x ва y дар чоряки якуми ё
 сеюми ҳамвории декартӣ мехобад.» 
 g) «Нуқта бо координатаҳои x ва y дар чоряки дуюм ё
 чоруми ҳамвории декартӣ мехобад.» 
 ( ) (ададҳои бутуни аз то ) дода шудаанд. Дурустии
 мулоҳизаи зеринро санҷед: 
 (cid:),(cid:)
 «(cid:)...,(cid:)б о як ход метавонад аз катакчаи ба катакчаи
 гузарад.» 
 a) «шоҳ» 
 ((cid:),(cid:))
 b((cid:)),«(cid:)ф и) л» 
 c) «асп» 
 d) «пиёдагард» 
 e) «фарзин» 
 f) «рух» 
 диапазони - хобанда) муайян карда мешавад. Адади якум
 рақами амудиро (ҳангоми аз поён ба боло шуморидан) ва адади
 дуюм рақами уфуқиро (ҳангоми аз чап ба рост шуморидан) ифода
 мекунад. Ададҳои натуралии a, b, c, d дода шудаанд.
 а) дар майдони (a, b) фил истодааст. Муайян карда шавад, ки
 фил ба майдони (c, d) таҳдид карда метавонад ё не?
 б) дар майдони (a, b) шоҳ истодааст. Муайян карда шавад, ки
 оё шоҳ бо як равиш (ҳаракат) ба майдони (c, d) гузашта
 метавонад ё не? 
 в) дар майдони (a, b) рух истодааст. Муайян карда шавад, ки
 оё рух бо як равиш (ҳаракат) ба майдони (c, d) гузашта
 метавонад ё не? 
 г) дар майдони (a, b) пиёдагард истодааст. Муайян карда
 шавад, ки оё пиёдагард бо як равиш (ҳаракат) ба майдони (c,
 d) гузашта метавонад ё не? 
 БОБИ. СОХТОРИ ОПЕРАТОРҲОИ ИДОРАКУНӢ 
 Муқаддима 
 Дар ҳар забони барномасозӣ операторҳои идоракунӣ мавқеи
 махсусро ишғол мекунанд. Ин операторҳо ба компилятор (ва ё
 барномасоз) имконият медиҳанд, ки як қитъаи барнома аз рӯи
 шарти гузошташуда як ё якчанд маротиба иҷро шавад. Забони
 Паскал нисбат ба забонҳои дигар ин операторҳоро ба таври васеътар
 истифода мебарад. Барои бо ин операторҳо сарукор гирифтан, бояд
 мафҳумҳои true ва false –ро дар ёд гирифт, зеро ҳар оператори
 идоракунӣ вобаста ба шарти гузошташуда амал мекунад ва то
 замоне, ки шарт дуруст аст, иҷро мегардад. Тавре дар мавзӯъҳои
 гузашта қайд кардем, дар забони Паскал қимати ҳақ ба true ва
 қимати ноҳақ ба false ифода мегардад. Операторҳои идоракунӣ дар
 забони Паскал инҳо мебошанд: 
 барномаи аслӣ. 
 Операторҳои шартӣ 
 Яке аз намудҳои алгоритм алгоритми шартӣ ба ҳисоб
 меравад, ки он дар забони Паскал истифодаи васеъ дорад.
 Алгоритми мазкур дар забони Паскал бо ёрии ду оператор case…of
 ва if…then иҷро карда мешавад. Ба монанди ин навъи алгоритмҳо,
 операторҳои шартӣ операторҳое мебошанд, ки ҳангоми ҷой
 доштани шарт баъзе қисматҳои барнома иҷро мешаванду 
 баъзеашон не. 
 Оператори if…then - оператори шартӣ буда, бо ду тарз
 истифода бурда мешавад: if ва else if…then. Навъи якум дар ҳолате
 истифода бурда мешавад, ки барнома аз як шарт иборат бошад.
 Навъи дуюм бошад, барои ҳалли масъалаҳое, ки дорои якчанд шарт
 мебошанд, истифода бурда мешаванд. Тарзи истифодаи навъи якум,
 яъне if ба сурати зерин аст: 
 if ифодаи мантиқӣ then 
 оператор; 
 Дар ин равиш ҳангоми дуруст будани шарти гузошташуда,
 операторҳои баъди шарт иҷро мегарданд. 
 Мисоли. Адади бутуни а дода шудааст, агар он мусбат
 бошад, бо он - ро илова кунед. Дар ҳолати акс онро бетағйир
 гузоред. Натиҷаи ҳосилшуда хориҷ карда шавад. 
 program test; 
 var 
 a: integer; 
 begin 
 read(a); 
 if a > then 
 a:= a +; 
 writeln('a=', a); 
 end. 
 Тавре дида мешавад, дар мисоли овардашуда пас аз шарти
 гузошташуда қимати тағйирёбандаи а ду воҳид зиёд карда шудааст.
 Дар ҳолати дуруст будани шарти ин амал иҷро карда мешавад.
 Агар пас аз оператори if (condition) символи нуқтавергул
 гузорем, дар ин сурат шарт шарти маҳдуд номида шуда, иҷро
 намегардад. Дар ҳолати баръакс, операторҳои баъди шарт иҷро
 мегарданд. Агар ҳангоми иҷрои шарт якчанд операторро вобаста ба
 шарт иҷро карданӣ шавем, он гоҳ операторҳои мазкур дар дохили
 begin ва end навишта мешаванд, яъне: 
 if ифодаи мантиқӣ then 
 begin 
 Маҷмӯи операторҳо (дастурҳо); 
 end; 
 Мисоли. Тағйирёбандаҳои (типи бутун) а ва b дода
 шудаанд. Қимати онҳоро тавре иваз кунед, ки дар тағйирёбандаи
 b максимуми онҳо қарор гирад. Натиҷаи ҳосилшударо хориҷ кунед.
 Ҳал. Агар қимати b аз қимати а калон бошад, он гоҳ зарурати
 иҷрои ягон амал пеш намеояд, бинобар ин танҳо шарти - ро
 месанҷем. 
 Қайд. Барои бо ҳамдигар мубодила намудани қиам>ат(cid:)и ду
 тағйирёбанда, як тағйирёбандаи дигари ёрирасон низ истифода
 бурда мешавад. 
 program test; 
 var 
 a, b, h: integer; 
 begin 
 read(a, b); 
 if a > b then 
 begin 
 h:= a; 
 a:= b; 
 b:= h; 
 end; 
 writeln('a=', a, ' b=', b); 
 end. 
 Тавре мушоҳида кардем, агар пас аз шарт зарурати иҷроиши
 якчанд ифода (дастур) пеш ояд, он гоҳ дастурҳои мавриди назар дар
 дохили begin ва end навишта мешаванд. Дар ин ҷо низ ҳангоми ҳақ
 будани шарти гузошташуда дастурҳои дохили begin ва end иҷро
 мешаванд ва дар сурати нодуруст будани шарт, дастурҳои берун аз
 begin ва end иҷро карда мешаванд. 
 Агар барномаи аз якчанд шарти бо ҳам вобаста иборат
 бошад, дар ин сурат ин равиш ба кор намеояд. 
 Барои ҳалли ин гуна масъалаҳо ва масъалаҳое, ки дорои
 якчанд шарт мебошанд, аз намуди дуюми оператори if…then, ки
 if…then else ном дорад, истифода мебарем. Тарзи истифодаи ин
 оператор чунин аст: 
 if (ифодаи мантиқӣ) then 
 begin 
 Маҷмӯи операторҳои 
 end 
 else 
 begin 
 Маҷмӯи операторҳои 
 end 
 Маҷмӯи операторҳои дигар 
 Дар ин ҷо ҳангоми дуруст (true) будани ифодаи мантиқӣ
 маҷмӯи операторҳои дохили begin ва end - и якум иҷро мешаванд ва
 идоракунӣ ба сатри маҷмӯи операторҳои дигар (Next statements)
 мегузарад. Ҳангоми нодуруст (false) будани он ифодаи дохили begin
 ва end - дуюм, яъне маҷмӯи операторҳои (Statements ) иҷро
 мегарданд. 
 Мисоли. Ду адади бутун дода шудааст. Барномае нависед,
 ки хурдтарини онҳоро ёбад. 
 Матни барнома: 
 program test; 
 var 
 a, b, min: integer; 
 begin; 
 Writeln('Ададҳои a ва b-ро дохил кунед!'); 
 read(a, b); 
 if (a > b) then 
 min:= a 
 else 
 min:= b; 
 WriteFormat('min( {}, {} )= {}', a, b, min);
 end. 
 Иҷроиши ин барнома чунин сурат мегирад: аввал шарти
 санҷида мешавад. Агар қимати а аз b хурд бошад, қимати ба
 тағйирёбандаи min бахшида мешавад, вагарна (else) қимати b(cid:) б<а
 (cid:)тағйирёбандаи min бахшида мешавад. (cid:)
 Қайд. Пеш аз дастури else, яъне пас аз сатри қабл аз он
 аломати нуқта вергул гузошта намешавад. 
 Операторҳои шартии мураккаб (nestedif-else) 
 Оператори if…then метавонад ба намуди мураккаб иҷро
 гардад. Ин сохтори оператори шартӣ барои масъалаҳое, ки дорои
 шартҳои зиёд мебошанд, истифода мешавад. Тарзи истифодаи ин
 оператор ба сурати зайл аст: 
 if (ифодаи мантиқӣ_) then 
 begin 
 Маҷмӯи операторҳои_; 
 end 
 else if (ифодаи мантиқӣ_) then 
 begin 
 Маҷмӯи операторҳои_; 
 end 
 if (ифодаи мантиқӣ_) then 
 begin 
 Маҷмӯи операторҳои_; 
 end 
 -------------- - - -- -- 
 if (ифодаи мантиқӣ_N) then 
 begin 
 Маҷмӯи операторҳои_N; 
 end 
 else 
 begin 
 Маҷмӯи операторҳои_N+; 
 end. 
 Мисоли. Барномае нависед, ки решаҳои муодилаи
 квадратии – ро ҳисоб намуда хориҷ кунад. 
 Қайд. Аз нуқтаи назари математика, медонем, ки
 дискримина(cid:)н(cid:)т и +му(cid:)о(cid:)ди+ла(cid:)и= квадратии
 шакли 
 (cid:)(cid:) +(cid:)(cid:)+(cid:) = 
 - ро дошта, дорои се шарт ё ҳолат мебошад. Вобаста аз ин
 ҳолатҳо решаҳои муодила(cid:)и к=ва (cid:)дра−тӣ(cid:) ҳ(cid:)исоб карда мешаванд. Дар
 поён ҳолатҳои мазкур оварда шудаанд.. 
 (cid:), =
 −(cid:) 
 = 
 ± 
 √ (cid:) 
 будан решаҳои муодила баробаранд, яъне 
 (cid:) 
 Матни барнома: (cid:)
 х = х = −(cid:).
 program test; 
 var 
 a, b, c, D, X, X: real; 
 begin 
 write('Adadhoi a va b-ro dohil kuned!'); 
 Readln(a, b, c); 
 D:= power(b, ) - * a * c; 
 if D > then 
 begin 
 X:= (-b - sqrt(D)) / * a; 
 X:= (-b + sqrt(D)) / * a; 
 WriteFormat('D={}, X={}, X={}', D, X, X);
 end 
 else if D = then 
 begin 
 X:= -b / * a; 
 X:= X; 
 WriteFormat('D={}, X={}, X={}', D, X, X);
 end 
 else if D < then 
 begin 
 Write('Муодила ҳалҳои ҳақиқӣ надорад.'); 
 end; 
 end. 
 Намунае аз натиҷаи кори барнома: 
 Adadhoi a va b-ro dohil kuned! 
 D= X=- X= 
 Тавре дидем, дар операторҳои шартӣ операторҳои мантиқӣ ё
 ифодаҳое, ки аз онҳо таркиб ёфтаанд, ба сифати шарт (condition)
 истифода шудаанд. Операторҳои мантиқӣ ҳатман бо яке аз
 операторҳои шартии =; >=; <=; <>; >; <истифода бурда мешаванд.
 Мисоли. Адади бутуни a дода шудааст. Барномае нависед,
 ки шарти дар байни ададҳои ва ҷойгир будани онро санҷад.
 Матни барнома: 
 program test; 
 var 
 a: integer; 
 begin 
 readln(a); 
 if(a > ) and (a < ) then 
 WriteFormat('Адади {} дар байни ададҳои ва 
 мехобад', a); 
 end. 
 Қайд. Агар дар ин мисол танҳо зарурати санҷидани шарти
 дар байни ва ҷойгир будани a талаб карда шуда бошад, он гоҳ
 барномаи онро метавон ба чунин шакл навишт: 
 program test; 
 var 
 a: integer; 
 y: boolean; 
 begin 
 readln(a); 
 y:= (a > ) and (a < ); 
 Writeln(y); 
 end. 
 Мисоли. Барномае нависед, ки қимати ифодаи шартии
 зеринро ҳисоб кунад. 
 x+y, xϵ[;] ё у <>, 
 Матни ба 
 f( 
 р 
 x 
 н 
 ) 
 ом 
 = 
 а 
 {: 
 xy 
 program test; xy, дар акси ҳол 
 var 
 f: real; 
 x, y: integer; 
 begin 
 Write('Adadhoi x va y-ro dohil kuned!'); 
 readln(x, y); 
 if ((x >= ) and (x <= ) or (y <> ) and (x <> )) then
 f:= (x + y) / ( * x * y) 
 else 
 f:= * x * y; 
 Write('f=', f); 
 end. 
 Оператори case...of 
 Бигузор масъала дорои якчанд шарт бошад ва талаб карда
 шавад, ки аз маҷмӯи шартҳои гузошташуда як ва ё якчанд шарти
 интихобшудааш иҷро карда шаванд. Барои иҷрои ин амал аз
 оператори case истифода бурда мешавад. Агар дар оператори if-else
 ҳангоми дурустии шарти гузошташуда, яке аз ду дастури додашуда
 иҷро карда шавад. Аммо дар оператори case аз маҷмӯи дастурҳо
 (шартҳо) танҳо дастуре, ки бо шарти гузошташуда мувофиқ аст,
 иҷро карда мешавад. Тарзи умумии истифодаи ин оператор шакли
 зеринро дорад: 
 case ифода of 
 қимати: statement; 
 қимати: statement; 
 - - - - - - - - - - - - - - - - 
 else 
 statements; 
 end; 
 Ин оператор чунин иҷро карда мешавад: аввал қимати ифода
 ҳисоб карда шуда, ба қиматҳои дар дастурҳо нишондодашуда
 муқоиса карда мешавад. Агар он бо қимати ягон сатр мувофиқ ояд,
 он гоҳ идоракунии барнома ба он сатр равона карда мешавад. Дар
 ин ҷо ба сифати ифода метавон ифодаи додаҳои навъи бутун, рамзӣ
 ва шумориширо истифода кард. Дар ин сохтор case маънои интихоб,
 of маънои аз, else маънои вагарнаро дорад. 
 Мисоли. Барномае нависед, ки ҳангоми дохил намудани
 рақами аз то номи онро барорад. 
 Матни барнома: 
 program test; 
 var 
 n: integer; 
 begin 
 writeln('Адади n-ро дохил кунед!'); 
 read(n); 
 case n of: write('як');: write('ду');: write('се');: write('чор');: write('панҷ'); 
 else write( 'намедонам'); 
 end; 
 end. 
 Тавре дида мешавад, дар ин ҷо аввал қимати тағйирёбандаи
 n дохил карда мешавад, сипас дар дастури case қимати он синҷида
 мешавад. Агар қимати он ба кадом сатре, ки мувофиқ ояд, ҳамон
 сатр иҷро карда шуда, вобаста ба қимати дохил кардашуда, яке аз
 пайғомҳои як, ду, се, чор, панҷ хориҷ карда шуда, идоракунӣ ба
 дастурҳои пас аз case…of мегузарад. Дар ҳолате, ки қимати n аз 
 боло ва ё аз як хурд аст, калимаи «намедонам» хориҷ карда мешавад.
 Баръакси дигар забонҳо дар забони Паскал метавон якчанд
 қиматро дар як сатр низ навишт. Дар ин ҳолат қиматҳо аз ҳамдигар
 бо аломати вергул ҷудо карда мешаванд. Илова бар ин, метавон
 додаҳои навъи фосиларо низ дар оператори case истифода кард.
 Мисоли. Барномае нависед, ки бо дохил кардани рақамҳои
 аз то пайғоми рақам ва бо дохил кардани ҳарфҳои лотинӣ ва
 русӣ пайғоми ҳарфро хориҷ кунад. 
 Матни барнома: 
 program test; 
 var 
 c: char; 
 begin 
 read(c); 
 case c of 
 ''..'': writeln('Рақам'); 
 'A'..'Z', 'a'..'z', 'а'..'я', 'А'..'Я', 'ё', 'Ё': writeln('Ҳарф');
 end; 
 end. 
 Қайд. Дар дастури case of истифодаи else ҳатмӣ набуда,
 вобаста аз шарти масъала ва хоҳиши барномасоз истифода карда
 мешавад. 
 Тавре, ки қаблан қайд кардем, дар версияи нави Паскал (сар
 карда аз PascalABC.NET.) имконияти истифодаи сатрҳо дар
 оператори case мавҷуд аст. Ҳоло мисолеро дида мебароем. Мисол.
 begin 
 var Country:= ReadString; 
 write('Пойтахт: '); 
 case Country of 
 'Тоҷикистон': writeln('Душанбе'); 
 'Россия': writeln('Москва'); 
 'Франтсия': writeln('Париж'); 
 'Италия': writeln('Рим'); 
 'Германия': writeln('Берлин'); 
 else writeln('Дар база мавҷуд нест!'); 
 end; 
 end. 
 Операторҳои такрорӣ 
 Дар табиат ҳама гуна ҳодисаҳо ба намуди даврӣ иҷро
 мешаванд. Масалан, гардиши шабонарӯз, ақрабаки соат, гардиши
 Замин дар атрофи Офтоб ва ғайра. Дар забонҳои барномасозӣ низ
 барои ҳалли масъалаҳои хусусияти даврӣ дошта, ба монанди ҳисоб
 намудани суммаҳо, факториали адад, якчанд маротиба иҷро
 намудани ягон қисмати барнома ё дастур ва ғайра операторҳои
 даврӣ вуҷуд доранд. Ин операторҳо имконияти якчанд маротиба
 иҷроиши як дастур ва ё як қитъаи барномаро фароҳам меоранд.
 Пайдарпайии дастурҳое, ки ҳангоми дар дохили давр навишта
 мешаванд, тани давр ном доранд. Як маротиба иҷроиши операторро
 як қадам ё итератсия меноманд. Шарте, ки дар аввал гузошта
 шудааст ва охиррасии даврро муайян мекунад, параметри давр
 номида мешавад. Муҳимтарин ва ё асоситарин операторҳои даврӣ
 дар забони Паскал сето мебошанд, ки дутоашонро операторҳои
 даврӣ бо шарти пешоянду пасоянд ва яктоашро оператори даврии
 параметрдор меноманд. 
 Оператори даврии параметрдор 
 Оператори даврии параметрдор for ном дошта, операторе
 мебошад, ки дар он қимати ибтидоӣ ва интиҳоии давр нишон дода
 мешавад. Дар ин оператор метавон миқдори такроршавии дастурҳои
 мавриди назарро муайян кард. Бигузор маротиба хориҷ намудани
 ягон қимат ё пайғом тавассути оператори даврии параметрдор талаб
 карда шавад. Аз ин ҷо чунин саволе ба миён меояд: “Чӣ гуна метавон
 дастури for - ро маҷбур сохт, ки маротиба амали хориҷкуниро
 такрор кунад?” 
 Барои ба ин савол ҷавоб гардонидан ба мо шуморанда лозим
 меояд, ки ҳар маротиба иҷрошавии барномаро ҳисоб кунад. Ин
 шуморанда бояд дорои қимати ибтидоӣ ва қимати интиҳоӣ бошад.
 Барои мисоли мо ба оператори for гуфта мешавад, ки қимати
 ибтидоии шуморандаро ва қимати интиҳоии шуморандаро 
 бигирад. Вақте ки қимати ҷории шуморанда ба мерасад, амали
 хориҷкунӣ ба охир расонида шуда, идоракунии барнома ба
 дастурҳои пас аз for мегузарад. 
 Дастури мазкур бо ду тарз истифода бурда мешавад. Тарзи
 истифодаи ин оператор ба сурати зерин аст: 
 for шуморанда:=қимати аввала to қимати интиҳоӣ do
 begin 
 Маҷмӯи дастурҳо; 
 end; 
 for шуморанда:=қимати интиҳоӣ downto қимати аввала do
 begin 
 Маҷмӯи дастурҳо; 
 end; 
 Дар ин ҷо шуморанда, як тағйирёбандаи навъи бутун,
 символӣ ва ё шуморишӣ буда, параметри давр номида мешавад. Ба
 намуди пешфарз ҳар маротиба қимати шуморанда як воҳид зиёд
 карда мешавад. Амали такроршавӣ то замоне, ки қимати шуморанда
 аз қимати интиҳоӣ хурд аст, дар шакли якум ва калон аст, дар шакли
 дуюм иҷро карда мешавад. Маҷмӯи дастурҳои дохили begin ва end-
 и баъди оператори for-ро тани давр меноманд. Агар вобаста аз давр
 танҳо зарурати иҷроиши як дастур пеш ояд, метавон онро бе
 истифода аз begin ва end навишт. 
 Оператори мазкур чунин амал мекунад: пас аз ҳар
 такроршавӣ шарти гузошташуда санҷида мешавад. Агар он ба
 қимати ҳақ доро бошад, дастурҳои дохили давр аз сари нав як
 маротиба иҷро карда мешаванд, дар сурати акс идоракунӣ ба
 дастурҳои баъд аз давр мегузарад. 
 Дар ёд бояд дошт, ки қимати шуморандаро дар дохили давр
 тағйир додан мумкин нест. 
 Қайд. Дар PascalABC.NET имконияти муаррифии шуморанда
 дар дохили давр вуҷуд дорад аз ин ҷо метавон оператори for - ро ба
 чунин шакл низ муаррифӣ кард: 
 for var шуморанда: тип:= қимати ибтидоӣ to 
 қимати интиҳоӣ do 
 <маҷмӯи дастурҳо> 
 Илова бар ин, метавон аз усули дигар, ки дар он типи
 шуморанда ба таври автоматӣ муайян карда мешавад, истифода
 кард. 
 for var шуморанда:= қимати ибтидоӣ to қимати интиҳоӣ do
 <маҷмӯи операторҳо> 
 Норасоии ин навъ истифодабари дар он аст, ки 
 тағйирёбандаи шуморандаро пас аз давр наметавон истифода
 бурд. 
 Мисоли. Барномае нависед, ки суммаи ҳамаи ададҳои
 натуралии аз то -ро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 var 
 i, S: integer; 
 begin 
 S:=; 
 for i:= to do 
 S += i; 
 writeFormat('Суммаи ададҳои натуралии аз то ба {}
 баробар аст.', S); 
 end. 
 Тавре ки аён аст, дар ин ҷо ду тағйирёбанда аз навъи бутун
 S ва i муаррифӣ карда шудааст. Сипас, дастури for i:= to do иҷро
 карда мешавад. Дар ин дастур аввал ба шуморанда (i) қимати
 ибтидоии бахшида шудааст, яъне i:=. Пас аз ин to оператори
 for-ро маҷбур месозад, ки то қимати i баробари шудан, иҷро
 гардад. Ҳар маротиба қимати шуморанда ба тағйирёбандаи S
 бахшида шуда, сипас як воҳид зиёд карда мешавад. Бинобар ин
 ҳангоме, ки қимати i ба баробар мешавад, барнома корашро ба
 охир мерасонад ва идоракуни ба дастури хориҷкунӣ мегузарад.
 Натиҷаи барнома шакли зеринро дорад: 
 Суммаи ададҳои натуралии аз то ба баробар аст.
 Ин барномаро ба шаклҳои зерин низ навишта метавонем:
 Шакли якум: 
 program test; 
 var 
 S: integer; 
 begin 
 S:=; 
 for var i:= to do 
 S += i; 
 writeFormat('Суммаи ададҳои натуралии аз то ба {}
 баробар аст.', S); 
 end. 
 Шакли дуюм: 
 program test; 
 var 
 S: integer; 
 begin 
 S:=; 
 for var i: integer:= to do 
 S += i; 
 writeFormat('Суммаи ададҳои натуралии аз то ба {}
 баробар аст.', S); 
 end. 
 Қайд. Дар PascalABC.NET типи стандартӣ барои ададҳои
 калон, яъне BigInteger мавҷуд аст. Типи мазкур имконияти ҳал
 намудани масъалаҳоеро, ки пештар ҳамчун масъалаи олимпиадавӣ
 ба ҳисоб мерафтанд ба таври сода фароҳам меорад. 
 Мисоли. Барномае нависед, ки! –ро ҳисоб кунад.
 begin 
 var p: BigInteger:=; 
 for var i:= to do 
 p:= p * i; 
 Write(p); 
 end. 
 Сохтори даврҳои мураккаб ё дохилиҳам 
 Дар дохили як ҳалқа метавон ҳалқаи дигарро низ навишт,
 вале дар ин навишт бояд диққат дод, ки ҳалқаҳо ҳамдигарро маҳдуд
 накунанд. Дар ин намуд операторҳо аввал оператори берунӣ иҷро
 мешавад, баъд операторҳои дохилӣ. Дар ёд бояд дошт, ки ҳангоми
 як маротиба иҷрошавии ҳалқаи беруна ҳалқаи дохилӣ пурра иҷро
 карда мешавад. Ҳоло бо мисоле ин амалро дида мебароем.
 Мисоли. Истифодаи даврҳои мураккаб. 
 program test; 
 var 
 i, j: integer; 
 begin 
 for i:= to do 
 begin 
 writeFormat(' Қиматҳои i ={}', i); 
 for j:= to do 
 writeFormat(' Қиматҳои j ={}', j); 
 writeln; 
 end; 
 end. 
 Барномаи мазкур дар ҳар хориҷкунӣ қимати i қимати j-ро 
 маротиба хориҷ мекунад. Натиҷаи барнома намуди зеринро дорад:
 Қиматҳои i = Қиматҳои j = Қиматҳои j = Қиматҳои j =
 Қиматҳои j = 
 Қиматҳои i = Қиматҳои j = Қиматҳои j = Қиматҳои j =
 Қиматҳои j = 
 Қиматҳои i = Қиматҳои j = Қиматҳои j = Қиматҳои j =
 Қиматҳои j = 
 Мисоли. Барномае нависед, ки ҷадвали зарбро дар саҳифаи
 тасвир хориҷ кунед. 
 program test; 
 var 
 i, j: integer; 
 begin 
 for i:= to do 
 begin 
 for j:= to do 
 write(i * j, ' '); 
 writeln; 
 end; 
 end. 
 Ин барнома як қимати i-ро интихоб карда, ба ҳамаи қиматҳои
 j зарб мекунад. Натиҷаи ин барнома ба сурати зерин аст:
 Мисоли. Барномае нависед, ки ададҳои натуралии аз то
 - ро ба сурати зерин хориҷ кунад: 
 Матни барнома: 
 program test; 
 var 
 i, j: integer; 
 begin 
 for i:= to do 
 begin 
 for j:= to do 
 write( * (j - ) + i, ' '); 
 writeln; 
 end; 
 end. 
 Оператори даврӣ бо шарти пешоянд 
 Дар оператори даврӣ бо шарти пешоянд шарти ба охиррасии
 давр дар аввал гузошта мешавад ва чанд маротиба такрор шудани ин
 оператор дар аввал муайян набуд, то ҳақ будани қимати шарти
 гузошташуда, иҷро карда мешавад. Аввал шарти гузошташуда
 санҷида мешавад, баъд операторҳои дохили ҳалқа иҷро гардад.
 Тарзи истифодаи ин оператор ба сурати зерин аст. 
 Тарзи истифодаи оператор 
 while condition do while шарт do 
 begin begin 
 Statements маҷмӯи операторҳо 
 end; end; 
 Маҷмӯи операторҳои дохили ҳалқаро тани давр меноманд ва
 то ҳақ будани шарти гузошташуда такроран иҷро карда мешаванд.
 Намуди умумии иҷроиши оператори мазкур чунин аст: дар аввал
 шарти гузошташуда санҷида мешавад, агар қимати он ҳақ бошад,
 пас операторҳои дохили ҳалқа як маротиба иҷро мегарданд. Баъд аз
 ин, аз сари нав қимати шарти гузошташуда санҷида мешавад. Агар
 он ба қимати ҳақ доро бошад, дастурҳои дохили давр аз сари нав як
 маротиба иҷро карда мешаванд. Чанд маротиба иҷро шудани давр
 дар ибтидо маълум набуда, аз қимати шарт вобаста дорад.
 Мисоли. Барномае нависед, ки ҳамаи ададҳои натуралии
 аз як то -ро хориҷ кунад. 
 Матни барнома: 
 program test; 
 var 
 i: integer; 
 begin 
 i:=; 
 while i < do 
 begin 
 inc(i); //i:=i+; 
 write(i, ' '); 
 end; 
 end. 
 Дар ин ҷо inc(i) ва write(i, ' ') операторҳои дохили давр буда,
 ифодаи inc(i) пас аз ҳар итератсия қимати i-ро як воҳид зиёд намуда,
 шарти гузошташударо месанҷад. Агар қимати i ба баробар шавад,
 иҷроиши давр боз дошта шуда, идоракунӣ ба операторҳои баъди
 давр мегузарад. 
 Бояд қайд кард, ки дар ин ҷо inc(i) қимати i-ро ҳар маротиба
 як воҳид зиёд мекунад. Дастури мазкур ба дастурҳои i:=i+ ва i+=
 баробарқувва аст. 
 Натиҷаи барнома: 
 Мисоли. Ду адади бутун дода шудаанд. Барномае нависед,
 ки КТУ-и ин ададҳоро тавассути алгоритми Евклид ҳисоб намуда,
 хориҷ кунад. 
 Қайд. Барои ба моҳияти алгоритми Евклид шинос шудан,
 мисоли мушаххасе, яъне КТУ-и ададҳои ва ро дида мебароем.
 Тарзи ёфтани КТУ-и ин ададҳо чунин аст: 
 КТУ(, )= КТУ(, -)= КТУ(, -) = КТУ(, )= КТУ(,
 )=. 
 Тавре аён аст, дар ин алгортм адади хурдтар аввал
 навишта шуда, аз адади калон адади хурд тарҳ карда мешавад. Ин
 амал то замоне, ки қимате яке аз ададҳои додашуда ба баробар
 нест, иҷро карда мешавад. 
 Матни барнома 
 program test; 
 var 
 a, b, KTU: integer; 
 begin 
 write('Ададҳои a ва b-ро дохил кунед!'); 
 readln(a, b); 
 while a <> b do 
 begin 
 if a > b then 
 a:= a - b 
 else 
 b:= b - a; 
 end; 
 KTU:= a; 
 writeln('KTU=', KTU); 
 end. 
 Чӣ хеле дида мешавад,дар ин мисол ибтидо миқдори
 иҷроиши тани давр маълум набуда, вобаста ба шарти гузошташуда,
 кори давр ба охир мерасад. 
 Оператори даврии бо шарти пасоянд repeat 
 Оператори repeat ҳам монанди оператори while амал
 мекунад, вале дар ин оператор аввал операторҳои дохили ҳалқа иҷро
 гардида, баъд шарти гузошташуда санҷида мешавад. Аз ин рӯ,
 оператори мазкурро оператори даврӣ бо шарти пасоянд меноманд.
 Тарзи истифодаи ин оператор намуди зеринро дорад: 
 Repeat 
 Маҷмӯи операторҳои дохили давр; 
 until <шарт> 
 Мисоли. Барномае нависед, ки ададҳои ҷуфти аз то n -
 ро хориҷ кунад: 
 Матни барнома 
 program test; 
 var 
 i, n: integer; 
 begin 
 Read(n); 
 i:=; 
 repeat 
 write(i, ' '); 
 inc(i, ); //i:=i+; 
 until i > n; 
 end. 
 Мисоли. Пайдарпайии ададҳои Фибоначӣ аз рӯи қоидаи
 зерин ҳисоб карда мешаванд:. 
 Барномае нависед, ки ададҳои Фибоначчии аз адади
 дода(cid:)ш у д=аи n, к а л о(cid:)н н=аб уд,а р о (cid:) х (cid:) о р=иҷ(cid:) к (cid:) у − н а д+. (cid:)(cid:)−, (cid:) =,,…
 Матни барнома: 
 program test; 
 var 
 f, f, h, n: integer; 
 begin 
 Write('Адади n - ро дохил кунед! '); 
 Readln(n); 
 f:=; f:=; 
 write(f, ' ', f, ' '); 
 repeat 
 h:= f + f; 
 write(h, ' '); 
 f:= f; 
 f:= h; 
 until (h + f) > n; 
 writeln; 
 end. 
 Операторҳои continue ва break 
 Операторҳои break операторе мебошанд, ки ҷараёни
 иҷроиши барномаро қатъ намуда, идоракунӣ (контролӣ) барномаро
 ба поёнии блоке, ки худаш дар дохили он аст, интиқол медиҳад.
 Оператори мазкур сабаби баромадан аз ягон блоки барнома гардида,
 бештар дар операторҳои даврии while, do/while ва for истифода
 мешавад. Масалан, дар барномаи зерин оператори break сабаб
 мешавад, ки оператори даврии for корашро пеш аз муҳлат қатъ
 кунад. 
 Матни барнома: 
 program test; 
 var 
 i: integer; 
 begin 
 for i:= to do 
 begin 
 write(i, ' '); 
 if i = then 
 break; 
 end; 
 writeln; 
 WritelnFormat('Давр ҳангоми i={} будан аз кор
 мемонад.', i) 
 end. 
 Аз матни барнома аён аст, ки то ҳангоми i= будан қимати
 i-ро ба чоп медиҳад ва оператори break иҷро мегардад. Баъди иҷрои
 оператори мазкур давр кори худро ба итмом расонида, идоракунӣ ба
 операторҳои пас аз давр мегузарад. 
 Натиҷаи барнома чунин шакл дорад: 
 Давр ҳангоми i= будан аз кор мемонад. 
 Оператори continue (идома) бошад, операторест, ки барои
 гузаштан аз як қисмати барнома ба қисмати дигари он истифода
 бурда мешавад. Яъне ин оператор аз такрори ҷории давр як ҳалқаро
 сарфи назар мекунад ва ё як ҳалқаро нодида мегузарад. Ин оператор
 низ дар операторҳои даврии while, do/while ва for истифода бурда
 мешаванд. Масалан, дар барномаи зерин оператори continue сабаби
 сарфи назар шудани як итератсия гардидааст: 
 Матни барнома: 
 program test; 
 var 
 i: integer; 
 begin 
 for i:= to do 
 begin 
 if i = then 
 continue; 
 write(i, ' '); 
 end; 
 end. 
 Чунончи мушоҳида гардид, оператори continue дар
 оператори даврии for як итератсияро, яъне i=-ро сарфи назар
 намуд. Натиҷаи барнома чунин шакл дорад: 
 Оператори гузариши бе шарт (goto) 
 Оператори goto барои гузаштан аз як қисмати барнома ба
 қисмати дигари он ба кор бурда мешавад. Ҳангоми истифодаи
 оператори мазкур барои гузаштан ба мавқеи лозимӣ бояд нишона
 истифода бурда шавад. Ба сифати нишонаи оператор метавон ягон
 идентификатори сохтаи барномасоз ва ё ададҳои бутуни бе аломатро
 истифода кард. Пеш аз истифодабарӣ нишона низ муаррифӣ карда
 мешавад. Барои муаррифии нишона аз калимаи калидии label
 истифода карда мешавад. Тарзи истифодаи ин оператор шакл
 зеринро дорад: 
 goto label 
 Дар ин ҷо label нишонаест, ки дар аввали ягон сатри барнома
 навишта шудааст. Пас аз нишона бояд аломати ду нуқта гузошта
 шавад.Тарзи истифодабарии оператори goto. 
 begin 
 goto; 
 ⋮ 
 end; 
 ⋮: write(‘Барнома ба охир расид!’); 
 Мисол. Барномае нависед, ки суммаиададщои аз то n-ро
 ҳисоб кунад. 
 Матни барнома 
 program test; 
 label; 
 var 
 i, n, S: integer; 
 begin 
 S:=; 
 i:=; 
 read(n);: S += i; 
 inc(i); 
 if i <= n then 
 goto; 
 write('S=', S); 
 end. 
 Қайд. Пас аз иҷрои ҳар як давр, қимати i санҷида мешавад,
 агар шарт дуруст бошад, идоракунӣ ба сатре, ки оператори goto
 ба он ишора кардааст (дар ин мисол ), мегузарад. Ва бо ҳамин
 монанд ин амал то замоне ки шарти гузошташуда дуруст аст,
 такроран иҷро мегардад. 
 Агар дар барнома зарурати истифодаи якчанд нишона пеш
 ояд, он гоҳ онҳоро метавон низ тавассути як label муаррифӣ кард.
 Намунаи муаррифии якчанд нишона: 
 label,,, my_label; 
 Қайд. Тавассути оператори goto наметавон идоракуниро ба
 дохили ягон дастури даврӣ интицол дод. 
 Саволҳо барои мустаҳкамкунӣ 
 бурда мешавад? 
 мешаванд? 
 оператори repeat истифода бурда шавад? 
 шартӣ якҷоя истифода шаванд? 
 барнома чанд давр метавонад дохилиҳам бошад? 
 шартии if истифода кард? 
 Масъалаҳо барои кори мустақилона 
 Масъалаҳои типи If 
 набошанд, он гоҳ бо ҳам зарб карда шаванд. Дар ҳолати акс ба
 онҳо қимати сифр бахшида шавад. 
 калонтарини онҳо ёфта шавад. 
 шавад. 
 ададҳои хурдтарин ва калонтарин ҷойгир аст) хориҷ карда шавад.
 оё онҳо қуллаҳои секунҷаро ифода мекунан ё не. 
 шудаанд. Кадоме аз ин суръатҳо тезтар мебошад? 
 шудааст. Кадоме аз ин ду ҷисмҳо зиччии зиёд дорад?
 муодилаи ёфта шаванд. 
 а) доаи(cid:)ра+ да(cid:)р(cid:) д+ох(cid:)ил=и квадрат ҷой мегирад ё не?
 б) квадрат дар дохили доира ҷой мегирад ё не? 
 бебақия тақсим шавад натиҷаи тақсим ва дар ҳолати акс
 иттилооти матниmи «адади m ба адади n бебақия тақсим
 намешавад» бароварда шавад. 
 а) оё суммаи рақамҳои он адади дурақама мешавад ё не?
 б) оё он аз суммаи рақамҳояш калон аст ё не? 
 а) оё рақами дуюми он сифр аст? 
 б) оё рақами якуми он тоқ аст? 
 секунҷаи баробартараф мебошад ё не. 
 (cid:),(cid:),(cid:)
 шавад, ки оё роткунҷаи бо тарафҳои бударо дар дохили
 росткунҷаи бо тарафҳои c в(cid:)а, (cid:)d, (cid:)б,у(cid:)да ҷойгир кардан мумкин аст ё
 не. (cid:) ва (cid:)
 чоряк ҷойгир будани онро муайян кунед. 
 онҳо мавҷуд буда муайян карда шавад. 
 шавад. Сол аз шабонарӯз иборат аст, агар он бе бақия ба 
 тақсим шавад, ба истиснои солҳое, ки ба тақсим мешаванду
 ба не. Дар акси ҳол аз шаонарӯз иборат мебошад.
 набор муайян карда шавад. 
 ҳамин ақибмонӣ идома ёбад, баъд аз кадом муддати камтарини
 вақт соат боз аз нав вакти аниқро нишон хоҳад дод?
 Масъалаҳои типи Case 
 моҳ (январ, феврал,…., декабр) ва фасли сол (зимистон, баҳор,
 тобистон, тирамоҳ) хориҷ карда шавад. 
 -ҷамъ, -тарҳ, -зарб, - тақсим. Рақами иҷроиши амал ва ду
 адади бутуни мусбати ғайрисифрӣ дода мешавад. Амали
 интихобшуда бо ин ададҳо иҷро гашта натиҷа ба чоп бароварда
 шавад. 
 сешанбе,…, -шанбе, -якшанбе. Адади бутуни -и фосилаи -
 ҷойгирбуда дода шудааст. Номи рӯзи ҳафтаро барои рӯзи
 уми сол муайян кунед, агар маълум бошад, кКи якуми январи
 ин сол сешанбе аст. 
 муайян бо ададҳои,,, рақамгузорӣ гаштааст. Дар ҳолати
 дохил намудани адади чоррақамаи ихтиёрӣ ва дохил намудани
 яке аз ададҳои муайянкардашуда, қисми интихобшудаи адади
 чоррақама ба чоп бароварда шавад. 
 мебошад. Адади натуралии n, ки рақами солро ифода менамояд,
 дода шудааст. Таърихи ҳамаи рӯзҳоеро, ки дар моҳҳои январ,
 феврал, …., декабри ин сол рӯзи санитарӣ ба онҳо мувофиқ меояд,
 ба тартиб бароред. 
 сешанбе, …, -шанбе, -якшанбе. Адади бутуни К-и фосилаи -
 ҷойгирбуда дода шудааст. Номи рӯзи ҳафтаро барои рӯзи К-
 уми сол муайян кунед, агар маълум бошад, ки якуми январи ин
 сол шанбе аст. 
 сешанбе, …, -шанбе, -якшанбе. Адади бутуни К-и фосилаи -
 ҷойгирбуда дода шудааст. Номи рӯзи ҳафтаро барои рӯзи К-
 уми сол муайян кунед, агар маълум бошад, ки якуми январи ин
 сол чоршанбе аст. 
 сешанбе, …, -шанбе, -якшанбе. Ададҳои бутуни ва 
 m дода шудааст. Номи рӯзи ҳафтаро барои рӯзи К-уми сол
 муайян кунед, агар маълум бошад, ки якуми январКи ∈ин[ с,ол р]узи
 m∈ ас[т., ] 
 фосилаи - хобанда ) дода шудааст. Сиёҳ будани майдони
 поёнии чапи тахта (х)-ро ба назар гирифта, муайян кунед, ки оё
 майдони сафед аст? 
 (ададҳои (бху,туу)ни дар фосилаи - хобанда ) дода шудааст. Сиёҳ
 будани катакчаи чапи поёнии тахта (х)-ро ба назар ги(р(cid:)и ф,(cid:)т а),
 муайян кунед, ки оё ранги майдонҳои (х, у) ва якхела аст?
 муайян мекунанд, дода шудааст. Қиматҳои (D(cid:),в(cid:)а )М-ро барои
 санаи ба санаи додашуда гузаштаро муайян кунед. 
 муайян мекунанд, дода шудааст. Қиматҳои D ва М-ро барои
 санаи ба санаи додашуда баъдинаро муайян кунед. 
 рақамгузорӣ гаштаанд: - катет a, – гипотенуза, –
 баландӣ h, ки ба гипотенуза фароварда шудааст(h=c/), –
 масоҳат S=c·h/. Рақами яке аз ин элементҳо бо қ(cid:)им=ат(cid:)а√ш дода
 шудааст. Қимати дигар элементҳои секунҷа ёфта шавад.
 диаметр, D=R, -дарозӣ,, -масоҳати давра,. 
 Рақами яке аз ин элементҳо ва қимати он дода шудааст, қимати
 элементҳои боқимондаро ҳи(cid:)со=б к(cid:)ун(cid:)ед. (cid:) = (cid:)(cid:)
 бо намуди … дода шудаанд. Номи адади k –ум
 (cid:) ( ≤ (cid:) ≤ ) 
 муайян карда шавад. 
 ба намуди …..… дода шудаанд.
 Номи адади k –ум( м≤уай(cid:)я≤н кард)а шавад.
 шудааст: аз оғози лаҳзаи ҳар як соат тӯли дақиқа ранги сабз
 равшанӣ медиҳад, пас аз он тӯли як сония ранги зард ва баъд тӯли
 ду сония ранги сурх, тӯли се сония боз ранги сабз ва ғ. (ва боз
 такрор меёбад). Қимати ҳақиқии t, ки вақтро бо дақиқа аз оғози
 вақти гузашта ифода мекунад дода шудааст. Муайян карда
 шавад, ки дар ин лаҳзаи вақт кадом ранг равшанӣ медиҳад.
 «Ҷ» — ҷануб, «Ғ» — ғарб, «С» — шарқ) фармони рақамӣ қабул
 кунад: — давом додани ҳаракат, — гардиш ба чап, – —
 гардиш ба рост. Рамзи s — мавқеи ҷории робот ва адади бутуни
 N — фармони ба он равонкардашуда дода шудааст. Самти
 роботро пас аз қабул кардани ин фармон муайян кунед.
 хориҷ кунед. 
 кунед. 
 Масъалаҳои типи For 
 ) Ададиҳои бутуни n ва k дода шудаанд. n маротиба адади k-ро
 хориҷ кунед. 
 ) Суммаи ҳамаи ададҳои мукаммали порчаи [..]-ро ҳисоб
 кунед. 
 ) Суммаи қисмҳои даҳии ҳамаи ададҳои серақамаро ҳисоб кунед.
 ) Ададҳои содаи порчаи аз то ёфта шаванд. 
 ) Суммаи ҳисоб карда шавад. 
 ) Суммаи 
 ҳисоб карда шавад. 
 +++⋯+(cid:) 
 ) Суммаи 
 ҳисоб карда шавад. 
 +++⋯+ 
 ) Суммаи 
 ҳисоб карда шавад. 
 ++ +⋯+ 
 Оператори шарт ӣ и стифода бурд(cid:)а+ на шавад.
 ) Барномае нави 
 − 
 се 
 д 
 +, к 
 и 
 − 
 б 
 ⋯ 
 о д 
 + 
 од 
 ( 
 а 
 − 
 ш 
 ) 
 удани 
 (cid:) 
 қимати )- ро, ки ба 
 намуди қатор дода шудааст ҳисоб кунад. 
 (cid:) (cid:)(cid:)𝑠((cid:)
 ∞ 
 (cid:) (cid:)
 (cid:) (cid:) (cid:) (−) (cid:)
 ) Адади бутуcнosи( (cid:)N) =(N>−) дод+а шу−дааст+. ⋯Су=мм∑аи зеринро ҳисоб!!! (cid:)= ((cid:))!
 кунед. 
 ) Маблағ(cid:)и дар (cid:)б−онк гузошташуда сомонӣ аст. Ҳар моҳ ҳаҷми
 он Р фоиз +зиёд ме+ша⋯ва+д (cid:)(Р-адади ҳақиқӣ Бо фоизи
 додашудаи Р муайян кунед, ки пас аз чанд моҳ маблағи
 гузошташуда аз с. зиёд мешавад(. М<и(cid:)қд<ори )ё.фташудаи
 моҳҳо K (адади бутун) ва ҳаҷми умумии маблағи дар бонк
 гузошташуда пас аз зиёдшавӣ S (S-адади ҳақиқӣ)-ро хориҷ кунед.
 ) Барномае нависед, ки маълумотҳои зеринро дар чунин шакл
 хориҷ кунад: 
 а) б) 
 ) Барномае нависед, ки дар намуди ҷадвали зерин ададҳоро хориҷ
 кунад: 
 а) б) 
 ) Барномае нависед, ки дар намуди ҷадвали зерин ададҳоро хориҷ
 кунад: 
 а) б) 
 ) Барномае нависед, ки ҷадвали зерин хориҷ кунад: 
 ) Барномае нависед, ки ҷадвали зерин хориҷ кунад: 
 ) Адади натуралии n ( дода шудааст. Талаб карда мешавад,
 ки барномаи ҳисобкунии қимати ифодаи 
 барнома та(cid:)рт≤иб д)ода шавад. 
 +++ 
 )⏟ А д…а д… и н атуралии n ( дода шудааст. Талаб карда мешавад,
 (cid:)−маротиба 
 ки барномаи ҳисобкунии қимати ифодаи 
 +++…n…(cid:)≤ ба)рнома тартиб дода шавад.
 ) Адади натуралии дода шудааст. N –то ададҳои
 аввале, ки аз тақсимкунандаҳои сода танҳо,, -ро доранд
 (пайдарпайии Ҳем(ми≤нг)(cid:), ≤бо та)ртиби афзуншавиашон ба чоп
 бароред. Масалан адади аввалае, ки ин шартро қаноат
 мекунонанд, инҳоянд:,,,,,,,,, 
 ) Барномае нависед, ки қимати суммаи зеринро ҳисоб кунад.
 (cid:) (cid:) (cid:)
 ) Адади натуралии х дода ш∏уда∑аст∏. М(и(cid:)қд+ор(cid:)и т+ар(cid:)з)ҳои дар суммаи
 (cid:)= (cid:)= (cid:)=
 чор адади натуралӣ тасвир кардани он: -ро ёбед, 
 ки дар ин ҷо мебошанд 
 ) Адади натуралии n ( дода шудаахст=. Т(cid:)а+ла(cid:)б +ка(cid:)рд+а (cid:)мешавад,
 ки барномаи(cid:) ≤ҳ(cid:)ис≤об(cid:)ку≤ни(cid:)и қимати ифодаи +++n…n
 барнома тартиб дода (cid:)ша≤вад). 
 ) Ададҳои аз то n ро бо миқдори имконпазири 
 максималии ҷуфтҳо тавре ҷудо кардан лозим аст, ки суммаи
 ададҳо дар ҷуфтҳо (ад≤ади(cid:) ≤сода б)о−шад. Миқдори ҷуфтҳоро чоп
 кунед. Масалан, ҳангоми n= як ҷуфт (,) ва ҳангоми n= сетои
 ин гуна ҷуфт-(,), (, ) ва (, ) мешаванд. 
 ) Пайдарпайии ададҳои бутун,,,… дода шудааст. Чор
 аъзои навбатии ин пайдарпайиро муайян кунед. 
 Масъалаҳои типи While 
 ) Адади натуралӣ дода шудааст. Муайян карда шавад, ки оё
 пайдарпаии рақамҳои он аз тарафи рост ба чап ба таври
 афзуншавӣ ҷойгир шудаанд ё не. Масалан, барои адади 
 ҷавоб дуруст аст, барои адади бошад ҷавоб нодуруст аст.
 ) Адади ҳақиқии а дода шудааст. Қимати n, ки барояш
 а аст, ёфта шавад. 
 + ++⋯+(cid:) > 
 каратӣ мебошад?. 
 Амалҳои тақсимро истифода набурда муайян кунед, ки натиҷаи
 тақсими В бар А чанд мешавад? ((cid:) > (cid:))
 ) Шаҳрванд дар бонк барои худ суратҳисоб кушода дар он 
 сомонӣ гузошт. Ҳар моҳ маблағи гузошташуда % аз ҳисоби
 маблағи мавҷудбуда зиёд мешавад. Муайян карда шавад, ки
 суммаи маблағи гузошташуда пас аз,, …, моҳ чанд
 сомониро ташкил медиҳад. 
 ) Суммаи ҳамаи ададҳои дурақамаро ёбед, ки решаи квадратии
 онҳо адади тоқ мебошад. 
 ) Қори Исмат як миқдор тангаҳои тиллоиро дар сандуқ ҷойгир
 намуда, соли дуюм аз он ҷо якчанд тангаро гирифт. Аз соли сеюм
 сар карда, вай ба сандуқ ба миқдори тангаҳои ду соли пешина
 танга ҳамроҳ мекард. 
 Талаб карда мешавад, ки барномаи муайянкунии миқдори
 тангаҳоеро, ки дар соли дуюм аз сандуқ гирифтан лозим аст,
 сохта шавад, агар дар соли якум ба сандуқ У-то танга ҷойгир
 намуда, дар соли Х-ум дар сандуқ Z-то танга мавҷуд бошад.
 ) Маблағи дар бонк гузошташуда сомонӣ аст. Ҳар моҳ ҳаҷми
 он Р фоиз зиёд мешавад (Р-адади ҳақиқӣ Бо фоизи 
 додашудаи Р муайян кунед, ки пас аз чанд моҳ маблағи
 гузошташуда аз зиёд мешавад. Миқ(дор<и (cid:)ёф<ташу)д.аи моҳҳо
 K (адади бутун) ва ҳаҷми умумии маблағи дар бонк гузошташуда
 пас аз зиёдшавӣ S (S-адади ҳақиқӣ)-ро хориҷ кунед.
 ) Адади натуралӣ дода шудааст. Муайян карда шавад, ки оё
 пайдарпаии рақамҳои он аз тарафи рост ба чап ба таври
 афзуншавӣ ҷойгир шудаанд ё не. Масалан, барои адади 
 ҷавоб дуруст аст, барои адади бошад ҷавоб нодуруст аст.
 ) Адади ҳақиқии а дода шудааст. Қимати n, ки барояш
 а аст, ёфта шавад. 
 ) Адади бутуни а до да ш удааст. Муайян карда шавад, ки он адади
 + ++⋯+(cid:) > 
 дараҷаи аст. 
 ) Адади бутуни а дода шудааст. Муайян карда шавад, ки он
 адади дараҷаи аст. 
 ) Адади бутуни а дода шудааст. Муайян карда шавад, ки дар
 навишти он адади вомехурад ё не? 
 ) Адади бутуни N (> ) дода шудааст. Чунин адади хурдтарини K-
 ро ёбед ки квадратии он аз N зиёд шавад: K > N. Функсияи аз
 решабарорӣ истифода бурда нашавад. 
 ) Адади бутуни N (> ) дода шудааст. Чунин адади калонтарини
 K-ро ёбед ки квадрати он аз N зиёд нашавад:. Функсияи
 аз решабарорӣ истифода бурда нашавад. 
 ) Адади бутун дода шудааст. Ададеро хориҷ кун 
 (cid:) 
 ед, 
 ≤ 
 ки 
 (cid:) 
 аз рақамҳои 
 он вале бо тартиби баръакс ҷойгир бошанд. 
 ) Адади бутуни N (> ) дода шудааст. Чунин адади хурдтарини K-
 ро ёбед ки барои он нобаробарии иҷро шавад. 
 ) Адади бутуни N (> ) дода шудаас(cid:)т. Чунин адади калонтарини
 > (cid:) 
 K-ро ёбед ки барои он нобаробарии < N иҷро шавад. 
 ) Адади ҳақиқии ( >) дода шудаа(cid:)ст. Пайдарпайии ададҳои
 ҳақиқии A K чунин муайян кра мешаванд: 
 A =(cid:) (cid:), A K = + /A K–, K =,, ….
 Рақами тартибии нахустини K ёфта шавад, ки барои он шарти
 зерин иҷро мегардад 
 |A K – A K– | <, 
 аъзоҳои A K– ва A K хориҷ карда шаванд. 
 ) Адади ҳақиқии ( >) дода шудааст 
 (cid:). Пайдарпайии ададҳои 
 ҳақиқии A K чунин муайян карда мешаванд: 
 A =, A (cid:)= (cid:), A K = (A K– + ·A K– )/, K =,, ….
 Рақами тартибии нахустини K ёфта шавад, ки барои он шарти
 зерин иҷро мегардад 
 |A K – A K– | <, 
 аъзоҳои A K– ва A K хориҷ карда шаванд. 
 ) Факториали адад дода шудааст. Худи а(cid:)дад муайян карда шавад.
 ) Хурдтарин каратноки умумии ду адади натуралии додашуда
 ёфта шавад. 
 ) Адади натуралӣ дода шудааст. Миқдори рақамҳои он ва суммаи
 рақамҳои он ҳисоб карда шавад. 
 БОБИ. ЗЕРБАРНОМАҲО ВА МОДУЛҲО 
 Муқаддима 
 Барномаҳое, ки то ҳол навиштем хеле барномаҳои хурд буда,
 амали хосеро анҷом медоданд. Илова бар ин, барномаҳо метавонанд
 аз якчанд қисми мантиқии вобаста иборат бошанд ва ҳар қисмат
 амали хосеро анҷом диҳад. Ҳар як бахшро метавон алоҳида навишта,
 сипас дар якҷой онҳоро ҷамъ намуда, ҳалли матлуби масъаларо ба
 даст овард. Барномае, ки барои ҳалли қисмате аз масъала навишта
 мешавад, зербарнома ном дорад. Таҷрибаҳо нишон доданд, ки агар
 барномаи калонро ба қисматҳои хурд, ба монанди зербарнома ҷудо
 кунем, идора намудани барнома хеле сода мегардад. 
 Бояд қайд кард, ки ҳар зербарнома дорои ду ҷанба мебошад:
 Дар ҷанбаи эълонкунӣ дастурҳои барнома, ки кори
 барномаро ифода мекунанд, навишта мешаванд. Дар ҷанбаи
 фурӯхонӣ бошад, дастурҳои зербарнома иҷро карда мешаванд.
 Барномае, ки зербарномаро даъват мекунад, барномаи 
 даъваткунанда ва зербарномае, ки даъват карда мешавад,
 зербарномаи даъватшаванда номида мешавад. 
 Зербарнома дар ҳар забони барноманависӣ шакли гуногун
 дошта, бо усулҳои хос муаррифӣ карда мешавад. Масалан, дар
 забонҳои С++ зербарномаро функсия дар забони Бейсик function
 мегӯянд. Дар забони Паскал бошад, зербарномаро функсия ва
 протседура мегӯянд. Пас, барои ҳалли масъалаи калон онро ба
 қисматҳо ҷудо намуда, барои ҳар қисмат барномаи алоҳида навишта
 мешавад. Дар охир зербарномаҳои навишташударо ҷамъ оварда,
 ҳалли матлубро соҳиб шудан мумкин аст. Ин равишро 
 барномасозии модулӣ (modular programming) мегӯянд. 
 Дар забони Паскал ду намуди зербарномаҳо мавҷуданд: якум,
 зербарномаҳои стандартӣ, ки онҳоро зербарномаҳои тайёр низ
 мегӯянд. Ин зербарномаҳо бо пайваст кардани модули лозимӣ ба кор
 омода мегарданд. бо ин зербарномаҳо аллакай шинос ҳастем,
 намунаи чунин зербарномаҳо: sqrt(x), power(x,n), sin(x) ва ғайра.
 Дуюм, зербарномаҳое, ки худи барномасоз барои осон намудани
 идоракунии барнома менависад ва дар ҷои лозимии барнома аз онҳо
 истифода мекунад. Ин намуд зербарномаҳо дар навбати худ ба ду
 қисм ҷудо мешаванд: 
 Дар ин боб ин навъ зербарномаҳоро мавриди истифода қарор
 медиҳем. 
 Шояд баъзе хонандагони мо суол кунанд, ки ба таври
 мушаххас зербарнома барои чӣ лозим аст ва он ба барномасоз чӣ
 имкониятро фароҳам меорад? 
 Барои ба ин савол ҷавоб гардонидан матлаби зеринро дида
 мебароем, ки аз чунин имконияти зербарномаҳо иборат мебошад:
 ҳаҷман калон ба якчанд қисматҳо тақсим карда мешавад. Ҳар
 як қисмат алоҳида буда, амали хосеро анҷом медиҳанд. Аз ин
 рӯ, метавон ҳар яки онҳоро ба таври алоҳида навишта, санҷиш
 кард. Агар онҳо бехато бошанд, пас, дар функсияи асосӣ
 метавон онҳоро ба кор бурд. Ин амал ислоҳи хатогиҳо ва
 тағйири барномаро хеле осон мегардонад. 
 бошад, ки ба як қисмати барнома тағйироте дохил карда шавад,
 зарур нест, ки тамоми барнома аз назар гузаронида, таҳлил
 карда шавад, балки тағйироти зарурӣ вобаста ба функсияе, ки
 ба он тағйирот алоқаманд аст, дохил карда мешавад.
 истифодаи як қисмати барнома дар якчанд ҷойҳо пеш меояд.
 Агар он қисмат ба намуди як зербарнома навишта шавад, дигар
 зарурате намешавад, ки он қисматро пурра дар ҷойи лозимӣ аз
 сари нав навишта шавад, танҳо даъват намудани он кифоя аст.
 Ин амал коди барномаро хело сода ва кӯтоҳ мегардонад.
 имконпазир месозад. Навиштани баъзе барномаҳо моҳҳо ва
 ҳатто солҳо тӯл мекашанд. Аз ин ҷо чунин барномаҳоро ба
 қисмҳо ҷудо намуда, дар ихтиёри чанд барноманавис
 мегузоранд. Ҳар яке қисмати ба худ хосро менависад. Ба ин
 тартиб дар навиштани як барнома шахсони гуногун иштирок
 намуда, бо ҳамдигар ҳамкорӣ мекунанд. 
 истифода қарор мегирад. 
 Барои ба моҳияти зербарнома дурусттар сарфаҳм рафтан,
 мисолеро дида мебароем: ҳамаи мо медонем, ки ҳар давлат дар худ
 шоҳ (ҳукмрон) дорад. Худи шоҳ наметавонед тамоми корҳои
 давлатиро иҷро намояд ва ҳамаи қисматҳои давлатро идора кунад,
 аз ин ҷо зарурат ба шахсоне пайдо мешавад, ки бо корҳои давлатӣ
 ва идоракунӣ ба ӯ кӯмак кунанд. Аз ин рӯ, давлатро ба вилоятҳо,
 шаҳрҳо, ноҳияҳо, ҷамоаҳо ва деҳаҳо тақсим мекунанд ва барои ҳар
 кадомаш як роҳбаре таъйин мекунад. Роҳбарони мазкур бар замми
 он ки дар ягон ҷо роҳбаранд, ба роҳбари олӣ, яъне шоҳ итоат
 мекунанд. Бо ин равиш идоракунии як давлати бузург хеле сода
 мегардад. Зербарномаҳо дар забони Паскал низ ба ин сурат амал
 мекунанд. Барномаи асосӣ ҳамчун шоҳ хизмат намуда, 
 зербарномаҳо бошанд бо он пайравӣ мекунанд ва ҳамчуноне ки як
 вилоят ба ноҳияҳо тақсим мешавад. Як зербарнома низ метавонад,
 дар дохилаш зербарномаи дигареро даъват кунад, яъне барои
 зербарномаи дигар зербарномаи аслӣ бошад. 
 Дар забони барномасозии Паскал зербарномаҳо пас аз
 унвони барнома ва пеш аз барномаи аслӣ эълон карда мешаванд.
 Қолаби умумии барномае, ки дар он зербарнома истифода
 (муаррифӣ) шудааст, шакли зайлро дорад: 
 program номи барнома; 
 Пайвасти модулҳо 
 Эълони нишонаҳо; 
 Эълони доимиҳо 
 Эълони навъи додаҳо (типҳо) 
 Эълони тағйирёбандаҳо 
 Эълони зербарнома 
 begin 
 Дастурҳои зербарнома; 
 end; 
 begin 
 Дастурҳои барномаи асосӣ; 
 end; 
 Тавре ки қайд кардем, дар забони Паскал ду намуди
 зербарномаҳо вуҷуд доранд: 
 Зербарномаҳои procedure зербарномаҳое ҳастанд, ки
 метавонад якчанд қиматро ба барномаи даъваткунанда равон кунад.
 Зербарномаҳои function бошанд, зербарномаҳое ҳастанд, ки
 фақат дорои як натиҷа мебошанд, яъне фақат як қиматро ба
 барномаи даъваткунанда бармегардонанд. 
 Аввал зербарномаҳои procedure ва баъд зербарномаҳои
 функсияро мавриди баҳс қарор медиҳем. 
 Протседура (Procedure) 
 Зербарномаҳои procedure зербарномаҳое ҳастанд, ки бо
 калимаи калидии procedure эълон карда шуда, метавонанд якчанд
 натиҷаро ба барномаи даъваткунанда равон кунанд. Ҳар як procedure
 дорои ном мебошад, ки дар барнома даъватшаванда тавассути он
 муроҷиат карда мешавад. Пас аз эълони номи procedure нишонаҳо,
 доимиҳо, навъҳо ва тағйирёбандаҳои он муаррифӣ карда мешавад.
 Пас аз ин, дар дохили begin ва end дастурҳои асосии барнома
 навишта мешавад. Тарзи умумии эълони як procedure шакли зеринро
 дорад: 
 procedure номи зербарнома 
 бахши эълонкуниҳо; 
 begin 
 дастурҳои procedure; 
 end; 
 Мисоли. Зербарномае нависед, ки бо дода шудани
 тарафҳои росткунҷа масоҳати онро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 procedure area; 
 var 
 a, b, S: integer; 
 begin 
 Writeln('Бар ва дарозии росткунҷаро дохил кунед!');
 readln(a, b); 
 S:= a * b; 
 writeFormat('Масоҳати росткунҷаи дарозиаш ба {} ва бараш
 ба {} баробар аст ба {}', a, b, S); 
 end; 
 begin 
 area; 
 end. 
 Дар ин барнома зербарномае бо номи area муаррифӣ гардида,
 дар барномаи аслӣ даъват карда шудааст. Ин зербарнома бо дода
 шудани бар ва дарозии росткунҷа масоҳати онро ҳисоб намуда,
 натиҷаро хориҷ мекунад. Тавре ки аён аст, ин зербарнома ягон
 қиматеро ба барномаи аслӣ барнамегардонад. Дар барномаи асосӣ
 зербарномаи мазкур даъват карда шудааст. Вақте ки амали хондан
 ба амал меояд ҳамаи дастурҳои зербарнома як-як иҷро карда
 мешаванд. Пас аз ин идоракунӣ ба дастурҳои баъд аз даъват
 мегузарад. 
 Параметрҳои зербарнома 
 Дар мисоли қаблӣ тавре дидем, бар ва дарозии росткунҷа дар
 дохили зербарнома дохил карда шудаанд. Аз ин ҷо чунин савол ба
 миён меояд: агар дарозӣ ва барӣ росткунҷа дар барномаи аслӣ хонда
 шаванд, оё онҳоро метавон ба зербарнома равон кард? Бале, ҳар
 барнома метавонад иттилооти хондаашро ба зербарнома равон
 кунад. Иттилоотеро, ки ба зербарнома равон карда мешаванд,
 параметр ном доранд. Барои иҷрои амали мазкур зербарнома бояд
 бо параметр эълон карда шавад. Параметрҳое, ки дар бахши эълони
 зербарнома истифода бурда мешаванд, параметрҳои маҷозӣ ном
 доранд. Параметрҳое, ки ҳангоми даъвати зербарнома истифода
 мешаванд, параметрҳои ҳақиқӣ (воқеӣ) номида мешаванд. Тарзи
 эълони зербарномаи дорои параметр чунин шаклро дорад:
 procedure номи_зербарнома (параметрҳои маҷозӣ ва
 навъи онҳо); 
 бахши эълонкуниҳо; 
 begin 
 дастурҳои procedure; 
 end; 
 Тавре мушоҳида кардем, як зербарнома дорои ном ва навъ
 буда, дар дохили қавс аргументҳо ва навъи онҳо навишта мешаванд.
 Албатта, дар сурати вуҷуд доштани аргументҳо. Ҳангоми бо
 параметр эълон намудани зербарнома бояд ба меъёрҳои зерин риоя
 кард: 
  миқдори параметрҳои маҷозӣ ва воқеӣ бояд бо ҳам баробар
 бошанд; 
  навъи параметрҳои маҷозӣ ва воқеӣ бояд бо ҳам якхела бошанд;
  параметрҳои воқеӣ ва маҷозӣ метавонанд якном ва ё гуногунном
 бошанд; 
  параметрҳо аз ҳамдигар бо аломати вергул ҷудо карда мешаванд;
  тартиб ва типи ҷойгиршавии параметрҳои воқеӣ ва маҷозӣ бояд
 яксон бошад. 
 Мисоли. Зербарномаи параметрдоре нависед, ки қимати
 миёнаи арифметикии ду адади додашударо ҳисоб кунад. 
 Матни барнома: 
 program test; 
 var 
 x, y: real; 
 procedure MAR(a, b: real); 
 var 
 S: real; 
 begin 
 S:= (a + b) /; 
 writeFormat('Қимати миёнаи арифметикии ададҳои {} ва
 {} баробар аст ба {}', a, b, S); 
 end; 
 begin 
 Writeln('Ададҳои x ва y-ро дохил кунед!'); 
 readln(x, y); 
 MAR(x, y); 
 end. 
 Дар ин барнома тавре мушоҳида мешавад, протседуоае бо
 номи MAR, ки дорои ду параметр мебошад, муаррифӣ шудааст. Дар
 ин зербарнома a, b параметрҳои маҷозӣ ва x,y параметрҳои воқеӣ
 мебошанд. Қиматҳо x ва y аз барномаи аслӣ хонда шуда, сипас ба
 сифати параметр ба зербарнома равон карда мешаванд. Қимати
 параметрҳои воқеӣ ба параметрҳои маҷозӣ нусхабардорӣ карда
 мешаванд, пас аз ин, дар байни онҳо ҳеҷ робитае вуҷуд дошта
 наметавонад. Бинобар ин ҳангоми даъвати зербарнома x ва y
 қиматҳои худро ба тартиб ба a ва b нусхабардорӣ мекунанд.
 Ба функсия равон кардани параметрҳо 
 Параметрҳои зербарномаи procedure ба ду даста тақсим
 мешаванд: 
 Дар равиши аввал худи аргументҳо ба зербарнома фиристода
 намешаванд, танҳо нусха (copy)-и онҳо фиристода мешавад. Аз ин
 сабаб ҳар тағйироте, ки дар зербарнома ба амал меояд,ҳеҷ таъсире
 ба ин тағйирёбанда дар барномаи аслӣ (даъваткунанда) намегузорад.
 Мисоли. Протседурае нависед, ки қимати адади бутуни
 додашударо воҳид зиёд кунад. 
 Матни барнома: 
 program test; 
 var 
 N: integer; 
 procedure qimat(adad: integer); 
 begin 
 adad +=; 
 end; 
 begin 
 Writeln('Ададҳои N-ро дохил кунед!'); 
 readln(N); 
 writelnFormat('Қимати N пеш аз даъвати зербарнома= {}',
 N); 
 qimat(N); 
 writelnFormat('Қимати N пас аз даъвати зербарнома= {}',
 N); 
 end. 
 Дар ин мисол қимати тағйирёбандаи N ду маротиба, як
 маротиба пеш аз даъвати зербарнома ва маротибаи дигар пас аз
 даъвати зербарнома хориҷ карда шудааст. Тавре аён аст, ҳангоми
 даъвати зербарномаи qimat(N), қимати N ба параметри маҷозии
 зербарнома равон карда шуда, дар он ҷо панҷ воҳид зиёд карда
 мешавад. Новобаста аз ин, баъди даъвати зербарнома низ дар
 барномаи аслӣ қимати тағйирбандаи N тағйир намеёбад, балки
 ҳамон тавре, ки ҳаст, хориҷ мегардад. Натиҷаи барнома ба сурати
 зерин аст: 
 Ададҳои N-ро дохил кунед! 
 Қимати N пеш аз даъвати зербарнома = 
 Қимати N пас аз даъвати зербарнома = 
 Бояд қайд кард, ки ҳангоми қимати тағйирёбандаро ба
 зербарнома равон кардан, мубодилаи иттилоот яктарафа мебошад,
 яъне ҳангоми даъвати функсия қимати параметри воқеӣ ба
 параметри маҷозӣ нусхабардорӣ мешавад. Вале пас аз даъвати
 зербарнома қимати параметри маҷозӣ ба параметри воқеӣ
 нусхабардорӣ намешавад. 
 Дар равиши дуюм бошад, мубодилаи иттилоот дутарафа аст.
 Сабабаш дар он аст, ки дар ин равиш на қимати тағйирёбанда, балки
 суроғаи он ба зербарнома равон карда мешавад. Аз ин ҷост, ки ҳар
 тағйироте, ки болои он дар зербарнома ба амал меояд, дар барномаи
 асосӣ низ таъсири худро мегӯзорад. Барои он ки компилятор
 тавонад дар байни параметрҳо фарқ гузорад, пеш аз параметрҳои
 тағйирёбанда калимаи var навишта мешавад. Ба сифати намуна
 мисоли - ро бо ин шакл менависем. 
 Матни барнома: 
 program test; 
 var 
 N: integer; 
 procedure qimat(adad: integer); 
 begin 
 adad +=; 
 end; 
 begin 
 Writeln('Ададҳои N-ро дохил кунед!'); 
 readln(N); 
 writelnFormat('Қимати N пеш аз даъвати зербарнома= {}',
 N); 
 qimat(N); 
 writelnFormat('Қимати N пас аз даъвати зербарнома= {}',
 N); 
 end. 
 Натиҷаи барнома намуди зеринро дорад: 
 Ададҳои N-ро дохил кунед! 
 Қимати N пеш аз даъвати зербарномаи qimat()= 
 Қимати N пас аз даъвати зербарномаи qimat()= 
 Аз сабаби он ки ҳангоми даъвати зербарномаи qimat суроғаи
 тағйирёбандаи асосӣ ба сифати параметр ба он равон карда мешавад,
 бинобар ин ҳар тағйироте, ки дар зербарнома барои он ба вуҷуд
 меояд, дар барномаи аслӣ низ таъсир мерасонад. Аз ин ҷост, ки пеш
 аз даъвати зербарнома қимати N ба баробар буда, пас аз даъвати
 зербарнома қимати N ба баробар мешавад. 
 Илова бар ин, ба сифати параметри як зербарнома метавон
 якчанд параметри тағйирёбанда ва якчанд параметри қимат
 истифода кард. 
 Мисоли. Зербарномае нависед, ки бо дода шудани бар ва
 дарозии росткунҷа масоҳат ва параметри онро ҳисоб кунад.
 Матни барнома: 
 program test; 
 var 
 a, b, P, S: integer; 
 procedure MasPer(x, y: integer; var P: integer; var S: integer);
 begin 
 P:= * (x + y); 
 S:= x * y; 
 end; 
 begin 
 Writeln('Ададҳои a ва b-ро дохил кунед!'); 
 readln(a, b); 
 MasPer(a, b, P, S); 
 writelnFormat('P={}, S={} ', P, S); 
 end. 
 Тавре ки дида мешавад, дар ин мисол зербарномаи MasPer
 дорои чор параметр буда, аз онҳо дутоаш x ва y параметри қимат ва
 дутои дигараш P ва S параметри тағйирёбанда мебошанд.
 Ҳангоми даъвати зербарномаи MasPer қиматҳои a ва b дар x ва y
 нусхабардорӣ карда мешаванд. Пас аз амали нусхабардорӣ дар
 дохили зербарнома периметр ва масоҳати росткунҷа ҳисоб карда
 мешавад. Дар барномаи аслӣ қиматҳои ҳисобкардашуда тавассути
 тағйирёбандаҳои P ва S хориҷ карда мешаванд. 
 Мисоли. Зербарномае нависед, ки ҷои қимати ду
 тағйирёбандаи додашударо иваз намояд. 
 Матни барнома: 
 program test; 
 procedure Swap(var x, y: integer); 
 begin 
 var v:= x; 
 x:= y; 
 y:= v; 
 end; 
 begin 
 var a:=; 
 var b:=; 
 Swap(a, b); 
 WriteFormat('a={}, b={}', a, b); 
 end. 
 Тағйирёбандаҳои навъи протседура 
 Ба ғайр аз навъҳои стандартӣ дар забони PascalABC.net
 метавон, тағйирёбандаҳоро аз навъи протседура низ муаррифӣ кард.
 Чунин тағйирёбандаҳоро тағйирёбандаҳои протседуравӣ меноманд
 ва чунин муаррифӣ мекунанд: 
 var pr: procedure(a, b: real; var res: real);
 Роҳи дигари муаррифии тағйирёбандаҳои протседуравӣ ин
 аввал сохтани типи протседура ва сипас эълони тағйирёбандаҳои
 лозимӣ аз он навъ мебошад. Аниқаш, 
 Type 
 BinOpType = procedure(a, b: real; var res: real);
 Муаррифии тағйирёбандаҳо аз навъи BinOpType 
 var 
 pr: BinOpType; 
 То замони ба онҳо бахшидани қимат, тағйирёбандаҳои
 протседуравӣ дорои қимати nil мебошанд. Nil доимии сифрӣ буда,
 ҳамчуни қимати ибтидоӣ барои баъзе объектҳо хизмат мекунад.
 Баъди муаррифии тағйирёбандаҳои типи протседура ба он
 лозим аст, ки қимат бахшида шавад. Қимати тағйирёбандаҳои
 протседуравӣ ягон протседура бо руйхати аргументҳояш мебошад.
 Пас аз оне, ки номи протседура ба тағйирёбандаҳои протседуравӣ
 бахшида мешавад, онро метавон тавассути тағйирёбандаҳои
 протседуравӣ даъват намуд. Тарзи даъвати протседура бо истифода
 аз тағйирёбандаҳои протседуравӣ чунин шакл дорад: 
 <номи тағйирёбандаҳои протседуравӣ>(<руйхати
 параметрҳо>); 
 Барои ба моҳияти ин амал шинос шудан, ба барномаи зерин
 таваҷҷуҳ намоед: 
 program test; 
 type 
 BinOpType = procedure(a, b: real; var res: real);
 var 
 pr: BinOpType; 
 procedure AddOp(a, b: real; var res: real); 
 begin 
 res:= a + b; 
 end; 
 procedure MultOp(a, b: real; var res: real); 
 begin 
 res:= a * b; 
 end; 
 begin 
 pr:= AddOp; 
 var r: real; 
 pr(,, r); {Даъвати протседура бо истифода аз
 тағйирёбандаҳои протседуравӣ} 
 writeln(r); 
 pr:= MultOp; 
 pr(,, r); 
 writeln(r); 
 end. 
 Тавре дида мешавад, дар иҷо ду протседура бо номи AddOp
 ва MultOp муаррифӣ гардидааст, ки мувофиқан сумма ва ҳосили
 зарби ду адади бутуни додашударо ҳисоб мекунанд. Дар барномаи
 асосӣ тавассути тағйирёбандаи протседуравии pr, ки аз навъи
 BinOpType муаррифӣ гардидааст, ин протседураҳо бо навбат даъват
 карда шудаанд. 
 Даъвати якчанд протседура бо истифода аз тағйирёбандаҳои
 типа протседура 
 Яке аз хусусиятҳои дигари тағйирёбандаҳои типи протседура
 аз он иборат аст, ки тавассути онҳо метавон якчанд протседураро
 дар як вақт даъват кард. Барои иҷрои ин амал аввал рӯйхати
 протседураҳо сохта мешавад. Барои илова намудани протседура ба
 руйхат аз амали ҷамъи унарӣ ва барои хориҷ намудани протседура
 аз руйхат аз тарҳи унарӣ истифода мебаранд. Ба сифати намуна ба
 барномаи зерин диққат диҳед: 
 program test; 
 type 
 ActionType = procedure; 
 procedure Eat; 
 begin 
 writeln('Вақти хӯрок хурдани донишҷӯ расид');
 end; 
 procedure Think; 
 begin 
 writeln('Вақти фикр кардани донишҷӯ расид'); 
 end; 
 procedure Sleep; 
 begin 
 writeln('Вақти хоб кардани донишҷӯ расид'); 
 end; 
 procedure Sport; 
 begin 
 writeln('Вақти варзиш кардани донишҷӯ расид');
 end; 
 var 
 pr: ActionType; 
 begin 
 pr += Sleep; 
 pr += Eat; 
 pr += Think; 
 pr += Sport; 
 pr; 
 pr -= Eat; 
 pr; 
 end. 
 Тавре дида мешавад, дар ин барнома чор протседура
 муаррифӣ гардидааст. Дар барномаи асосӣ ба тағйирёбандаи pr, ки
 аз навъи ActionType муаррифӣ гардидааст, ҳамаи протседураҳо
 бахшида шуда, сипас тавассути он даъват карда шудаанд. Баъд
 протседураи Eat бо истифода аз амали тарҳи ягона аз рӯйхат нест
 карда шуда, бори дигар протседураҳо даъват карда шудаанд.
 Натиҷаи барнома шакли зеринро дорад: 
 Даъвати аввал: 
 Вақти хоб кардани донишҷӯ расид 
 Вақти хӯрок хурдани донишҷӯ расид 
 Вақти фикр кардани донишҷӯ расид 
 Вақти варзиш кардани донишҷӯ расид 
 Даъвати дуюм: 
 Вақти хоб кардани донишҷӯ расид 
 Вақти фикр кардани донишҷӯ расид 
 Вақти варзиш кардани донишҷӯ расид 
 Зербарномаҳои намуди функсия (function) 
 Зербарномаҳои функсия зербарномаҳое ҳастанд, ки ба
 барномаи даъватшаванда танҳо як қимат бармегардонад. Ин навъ
 зербарномаҳо низ дар мавқее, ки зербарномаҳои протседура
 муаррифӣ мегардиданд, муаррифӣ карда мешаванд. Функсиҳо низ
 дорои ду ҷанба мебошанд: ҷанбаи муаррифӣ ва ҷанбаи даъват. Ҳар
 як функсия дорои ном буда, барои номгузории он аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. Пас аз
 номи функсия параметрҳои он ва пас аз он навъи натиҷаи функсия
 нишон дода мешавад. Баъди иҷрои амалиёти лозимӣ натиҷаи
 ниҳоии функсия ба номи функсия бахшида мешавад (ба нуцти
 даъватшаванда баргардонида мешавад). Дар барномаи асосӣ
 қимате, ки функсия бармегардонад, ба ягон тағйирёбанда бахшида
 мешавад. Нисбат ба протседураҳо истифодаи функсияҳо содатар
 мебошад. Аз ин рӯ зербарномаҳоеро, ки дорои як натиҷа мебошанд,
 тавассути функсияҳо навиштан беҳтар аст. Параметрҳои функсия
 монанди параметрҳои протседура метавонанд параметрҳои бо қимат
 ва ё параметрҳои тағйирёбанда бошанд. Вале дар функсия аз
 параметрҳои бо қимат истифода кардан беҳтар аст. Тарзи умумии як
 функсия шакли зеринро дорад: 
 function номи_функсия( параметрҳои маҷозӣ ва навъи
 онҳо):навъи натиҷаи функсия; 
 Бахши эълонкуниҳо 
 begin 
 дастурҳои функсия 
 end; 
 Мисоли. Функсияе нависед, ки суммаи адад-ҳои аз то n-
 ро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 var 
 n, Sum: integer; 
 function SumN(N: integer): integer; 
 var 
 S: integer:=; 
 begin 
 for var i:= to N do 
 S += i; 
 SumN:= S; 
 end; 
 begin 
 read(n); 
 Sum:= SumN(n); 
 writeln(Sum); 
 end. 
 Тавре дида мешавад, дар мисоли овардашуда пас аз
 муаррифии тағйирёбандаҳои n ва Sum функсияи SumN муаррифӣ
 гардидааст, ки дорои як параметри қимат мебошад. Пас аз ном ва
 параметри функсия навъи натиҷаи функсия нишон дода шудааст.
 Баъд аз ин тағйирёбандаи S муаррифӣ карда шуда, ба он қимати
 нулӣ бахшида шудааст. Дар дохили begin ва end дастурҳои асосии
 функсия, ки иборат аз ҳисоб намудани суммаи ададҳои аз як то N
 навишта шудааст. Дар охир пас аз ҳисоб намудани сумма қимати он
 ба номи функсия бахшида шудааст. Дар барномаи асосӣ функсияи
 навиштаамон пас аз дохил намудани қимати n даъват карда шудааст.
 Тавре дида мешавад, ҳангоми даъват натиҷаи функсия ба
 тағйирёбандаи Sum бахшида шуда, сипас хориҷ карда шудааст.
 Илова бар ин, дар забони Паскал бо номи Result 
 тағйирёбандаи глобалӣ вуҷуд дорад, ки ҳангоми истифодаи он зарур
 нест, ки дар охир натиҷаи функсия ба номи функсия бахшида шавад.
 Мисоли. Функсияе нависед, ки решаи дараҷаи сеӣ адади
 ҳақиқии додашударо ҳисоб кунад. 
 program test; 
 var 
 n, p: real; 
 function powerA(A: real): real; 
 begin 
 Result:= power(A,.); 
 end; 
 begin 
 Read(n); 
 p:= powerA(n); 
 writeln(p); 
 end. 
 Тавре дида мешавад, натиҷаи функсия ба тағйирёбандаи
 Result бахшида шудааст. Бояд қайд кард, ки зарурати эълони
 тағйирбандаи Result вуҷуд надорад, зеро он ба намуди қарордодӣ ба
 компилятор фаҳмо мебошад. 
 Қайд. Қимат баргардонидани функсия, маънои онро дорад,
 ки натиҷаи функсия ба нуқтаи даъватшудаи он равон карда
 мешавад. 
 Функсияҳои бозгаштӣ (рекурсивӣ ) 
 Функсияҳои бозгаштӣ функсияҳое мебошанд, ки худро дар
 дохили худ даъват мекунанд. Бо суханҳои дигар, функсияҳои
 бозгаштӣ функсияҳои даъваткунандаи худ дар дохили худ
 мебошанд. Функсияҳои бозгаштӣ дар ҳар даъват бо параметрҳои
 гуногун кор мекунанд. Аз сабаби он ки функсияҳи бозгаштӣ вақти
 зиёдро мегиранд, аз онҳо камтар истифода бурда мешавад. Баъзан
 навиштани зербарномаҳои бозгаштӣ нисбат ба зербарномаҳои одӣ
 содатар мебошад, бинобар ин онҳо дорои аҳамияти хосе мебошанд.
 Барои ба ин матлаб пурратар шинос шудан, функсияе менависем, ки
 факториали адади додашударо ҳисоб кунад 
 Ба мо маълум аст, ки факториали адад ҳосили зарби ададҳои
 аз як то худи адад мебошад,яъне 
 n!=***…*(n-)*n, аз ин ҷо n!=n*(n-)!,!=.
 Тавре дидем, дар сатри дуюм факториал мустақи-ман ҳисоб
 нашуда, балки ба намуди n(n-)! ҳисоб карда шудааст.
 Дар функсияҳои бозгаштӣ ин амал чунин иҷро карда
 мешавад: 
 n!=n*(n-)*(n-)*… 
 Ин амал то замоне давом мекунад, ки аргументи функсия ба
 баробар шавад, яъне: 
 n!=n*(n-)*(n-)*…* 
 ва аз охир сар карда, ҳамаи элементҳо ба ҳамдигар зарб карда
 мешаванд. Барои ба моҳияти функсияҳои бозгаштӣ шинос шудан
 мисоли мушаххасеро дида мебароем. 
 Мисоли. Адади бутуни n дода шудааст. Факториали онро
 бо истифода аз функсияи бозгаштӣ ҳисоб кунед. 
 Матни барнома: 
 program test; 
 var 
 n: integer; 
 F: longint; 
 function factN(N: integer): longint; 
 begin 
 if n <= then 
 Result:= 
 else 
 Result:= n * factN(n - ); 
 end; 
 begin 
 Read(n); 
 F:= factN(n); 
 writeln(F); 
 end. 
 Акнун ҷараёни иҷроиши функсияи навиштаамонро ҳангоми
 N = будан дида мебароем. 
 Даъвати аввал: 
 if <= then 
 Result:= 
 else 
 Result:=*factN(-); 
 Даъвати дуюм: 
 if <= then 
 Result:= 
 else 
 Result:=*factN(-); 
 Даъвати сеюм: 
 if <= then 
 Result:= 
 else 
 Result:=*factN(-); 
 Даъвати чорум: 
 if <= then 
 Result:= 
 else 
 Result:=*factN(-); 
 Даъвати панҷум: 
 if <= then 
 Result:= 
 else 
 Result:=*factN(-); 
 Тавре дида мешавад, дар даъвати панҷум, натиҷаи шарти
 <= дуруст буда, қимати дар номи функсия қарор мегирад ва ба
 даъвати чорум баргардонида мешавад. Дар даъвати чорум қисми
 else, яъне * иҷро шуда, натиҷаи он дар номи функсия қарор
 мегирад ва ба даъвати сеюм баргардонида мешавад. Дар даъвати
 сеюм қисми else, яъне *(**) иҷро шуда, натиҷаи он дар номи
 функсия қарор мегирад ва ба даъвати дуюм баргардонида мешавад.
 Дар даъвати дуюм қисми else, яъне *(***) иҷро шуда, натиҷаи
 он дар номи функсия қарор мегирад ва ба даъвати якум
 баргардонида мешавад. Дар даъвати якум низ қисми else, яъне *
 (****) иҷро шуда, натиҷаи он дар номи функсия қарор
 мегирад ва натиҷаи он, яъне ба барномаи даъваткунанда
 баргардонида мешавад. Намуди графикии ин амал чунин аст:!:=*=!:=*=!:=*=!:=*= 
 Ҷараёни даъвати бозгашт (рекурсия) 
 Бояд қайд кард, ки функсияҳои бозгаштӣ дар ҳар даъват ҷои
 наве аз ҳофизаро банд намуда, идентификаторҳои худро дар он
 захира мекунанд. 
 Дар забонҳои Basic ва Fortran равиши бозгаштӣ пешбинӣ
 нашудааст. Дар баъзе забонҳои дигар ин равиш пешбинӣ шудааст,
 вале ҳангоми муаррифӣ намудани функсия бояд ба таври ошкор
 муайян карда шавад, ки функсия аз навъи бозгаштӣ аст ё не, то
 компилятор онро аз дигар функсияҳо фарқ кунад. 
 Барои боз ҳам хубтару беҳтар шинос шудан ба ин навъ
 функсияҳо мисоли дигареро дида мебароем. 
 Мисоли. Бо истифода аз функсияҳои бозгаштӣ суммаи n
 адади аввали натуралиро ҳисоб кунед. 
 Матни барнома: 
 program test; 
 var 
 n, Sum: integer; 
 function SumN(N: integer): integer; 
 begin 
 if n <= then 
 Result:= n 
 else 
 Result:= n + SumN(n - ); 
 end; 
 begin 
 Read(n); 
 Sum:= SumN(n); 
 writeln(Sum); 
 end. 
 Илова бар ин, ба сифати аргументи функсияҳои бозгаштӣ,
 метавон массивҳоро низ истифода кард. 
 Ба сифати намуна, функсияи бозгаштие менависем, ки
 суммаи элементҳои массиви додашударо ҳисоб кунад. 
 Матни барнома: 
 program test; 
 var 
 n, Sum: integer; 
 function SumN(N: integer): integer; 
 begin 
 if n <= then 
 Result:= n 
 else 
 Result:= n + SumN(n - ); 
 end; 
 begin 
 Read(n); 
 Sum:= SumN(n); 
 writeln(Sum); 
 end. 
 Қайд. Мавзӯи функсияҳои бозгаштӣ хело калон мебошад. Аз
 ин лиҳоз, дар ин китоб он пурра мавриди баҳс қарор дода
 нашудааст. 
 Оператори exit 
 Оператори exit операторе мебошад, ки сабаби баромадан аз
 дохили функсия пеш аз анҷомрасии кори функсия мегардад.
 Оператори мазкур дар муқоиса бо оператори break имконият
 медиҳад, ки кори зербарнома ба охир расонида шуда, дар ҳол аз
 якчанд ҳалқаҳои такрорӣ берун баромада шавад. 
 Мисол. N адади натуралӣ дода шудааст. Функсияе нависед,
 ки дар дохили маҷмӯи ададҳои додашуда мавҷуд будани адади k-ро
 муайян кунад. 
 Матни барнома: 
 program test; 
 function Find(n: integer; k: integer): boolean;
 begin 
 for var i:= to n do 
 begin 
 var x:= ReadInteger; 
 if x = k then 
 begin 
 Result:= true; 
 exit; 
 end; 
 end; 
 Result:= false; 
 end; 
 begin 
 Writeln(Find(, )); 
 end. 
 Дар ин мисол маҷмӯи ададҳо якто-якто дохил карда шуда,
 шарти мавҷудияти k санҷида мешавад. Агар адади k пайдо шавад,
 оператори exit кори функсияро ба охир мерасонад. 
 Ба аргументҳои функсия бахшидани қимати аввала 
 Ҳангоми даъвати функсия аргументҳое, ки ба он равона
 карда мешаванд, бояд дорои ягон қимат бошанд, вагарна барнома ба
 хатогӣ рӯ ба рӯ мешавад. Дар забони Паскал барномасоз метавонад
 ҳангоми пешнамунасозӣ ба аргументҳои функсия қимати ибтидоӣ
 бахшад. Пас аз ин, агар дар вақти даъвати функсия аргументҳо
 нишон дода нашаванд низ, барнома ба хатогӣ рубарӯ намешавад.
 Зеро функсия ба таври автоматӣ ҳамон қиматҳои ибтидоиро ба
 сифати қимати аргументҳо истифода мекунад. 
 Мисол. Функсияе нависед, ки ҳаҷми параллелопи-педро
 ҳангоми дода шудани баландӣ, дарозӣ ва бари он ҳисоб кунад.
 Матни барнома: 
 program test; 
 function HajmParall(a: integer:=; b: integer:=; h: integer:= ): integer; 
 begin 
 Result:= a * b * h; 
 end; 
 begin 
 writeln('Ҳаҷми параллелопипед бо қиматҳои ибтидоӣ:=',
 HajmParall()); 
 writeln('Ҳаҷми параллелопипед бо дода шудани дарозӣ
 ва бар:=:', HajmParall(, )); 
 writeln('Ҳаҷми параллелопипед бо дода шудани дарозӣ,
 бар ва баландӣ:=:', HajmParall(,, )); 
 end. 
 Тавре ки аз ин ҷо дида мешавад, ҳангоми пешнамунасозии
 функсия барои аргументҳои он қимати бахшида шудааст. Дар
 оператори хориҷкунии якум ҳар чанд, ки функсия дорои аргумент
 намебошад, вале ба таври автоматӣ қиматҳои авваларо қабул
 мекунад. Дар оператори хориҷкунии дуюм бошад, танҳо дарозӣ ва
 бари параллелопипед нишон дода шудаасту халос. Баландии он ба
 таври автоматӣ қимати авваларо қабул мекунад. Дар охир бошад,
 параметрҳо пурра нишон дода шудаанд. Натиҷаи барнома шакли
 зеринро дорад: 
 Ҳаҷми параллелопипед бо қиматҳои ибтидоӣ:= 
 Ҳаҷми параллелопипед бо дода шудани дарозӣ ва бар:=:
 Ҳаҷми параллелопипед бо дода шудани дарозӣ, бар ва
 баландӣ:=: 
 Қайд. Ҳангоми ба аргументҳои функсия бахшидани қимати
 ибтидоӣ, то истифодаи параметр он ҳамчун қимати параметри
 функсия фаҳмида мешавад. 
 Сарборгузории функсияҳо 
 Забони Паскал имконият медиҳад, ки якчанд функсия бо як
 ном ва набори аргументҳои гуногун муаррифӣ карда шаванд. Чунин
 амалро сарборигузории функсия меноманд. Компилятор ҳангоми
 даъвати функсия ба навъи аргументҳои он назар меафканад. Агар
 аргументҳои он ба кадом варианти функсия, ки мувофиқ оянд,
 ҳамон варианти функсия даъват ва иҷро карда мешавад.
 Мисол. Функсияе нависед, ки квадрати адади навъи
 дилхоҳро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 function Kvadrat(n: integer): integer; 
 begin 
 Result:= n * n; 
 end; 
 function Kvadrat(n: double): double; 
 begin 
 Result:= n * n; 
 begin 
 WritelnFormat('Квадрати адади бутуни {} баробар
 аст ба:{}',, Kvadrat()); 
 WritelnFormat('Квадрати адади ҳақиқии {} баробар
 аст ба:{}',., Kvadrat(.)); 
 end. 
 Тавре дида мешавад, дар ин ҷо ду функсия бо як ном, вале бо
 аргументҳои гуногунавъ муаррифӣ карда шудаанд. Дар функсияи
 асосӣ бо ёрии оператори хориҷкунӣ ин функсия бо аргументҳои
 гуногун даъват карда шудааст. Натиҷаи барнома шакли зеринро
 дорад: 
 Квадрати адади бутуни баробар аст ба: 
 Квадрати адади ҳақиқии. баробар аст ба:. 
 Истифодаи протседура ва функсияҳо 
 ба сифати параметр 
 Дар забони Паскал илова ба тағйирёбандаҳои дигар навъ,
 протседура ва функсияҳо низ метавон ба сифати параметр дар
 зербарномаҳо истифода кард. Истифодаи ин амал имконияти дар
 дохили як зербарнома истифодаи зербарномаи дигарро фароҳам
 меорад. Ба сифати намуна мисоли зеринро дида мебароем: талаб
 карда мешавад, ки қимати cosx ва sinx -ро бо истифода аз функсия
 ҳисоб намоед. 
 function MySin(X: Real): Real; 
 begin 
 MySin:= Sin(X); 
 end; 
 function MyCos(X: Real): Real; 
 begin 
 MyCos:= Cos(X); 
 end; 
 type 
 TTrigFunct = function(X: Real): Real; 
 var 
 F, F: TTrigFunct; 
 Res, Res: real; 
 begin 
 F:= MyCos; 
 F:= MySin; 
 Res:= F(.); 
 Res:= F(.); 
 writeln(Res, ' ', Res); 
 end. 
 Дар ин ҷо пас аз сохтани функсияи MySin ва MyCos бо номи
 TTrigFunct типе аз навъи Function(X:Real):Real сохта шудааст. Тавре
 ки дида мешавад, функсияҳои MySin ва MyCos тавассути
 тағйирёбандаҳои навъи TTrigFunct ва инчунин ба намуди муқаррарӣ
 даъват карда шудаанд. 
 Пешнамунасозии зербарномаҳо 
 Пеш аз истифода дар забони Пакал бояд зербарномаҳо
 муаррифӣ карда шаванд. Баъзан пеш аз муаррифӣ, зарурати
 истифода аз зербарнома пеш меояд. Дар ин сурат бояд ба
 компилятор гуфта шавад, ки зербарномаи мавриди назар баъдан
 муаррифӣ карда мешавад. Барои иҷрои ин амал аз дастури forward
 истифода бурда мешавад. Дар поён тарзи истифодаи дастури forward
 ҳам барои проседураҳо ва ҳам барои функсияҳо оварда мешавад:
 procedure номи протседура(параметрҳо);forward; 
 function номи функсия(параметрҳо): типи натиҷаи функсия;
 forward; 
 Бояд қайд кард, ки тавассути дастури forward қолаби
 зербарнома муаррифӣ мешавад, на худи зербарнома ба пуррагӣ.
 Ба сифати намуна дар мисоли зерин протседураи proc аввал
 дар протседураи proc истифода шуда, сипас муаррифӣ гардидааст.
 program test; 
 procedure proc(n: integer); forward; 
 procedure proc(n: integer); 
 begin 
 writeln('proc'); 
 if n > then 
 proc(n - ); 
 end; 
 procedure proc(n: integer); 
 begin 
 writeln('proc'); 
 if n > then 
 proc(n - ); 
 end; 
 begin 
 proc(); 
 end. 
 Қайд. Дар PascalABC.NET имконияти ба таври кутоҳ
 муаррификунии функсияҳо мавҷуд аст. Дар ин ҳола метавон типи
 функсияро низ нишон надод. Илова бар ин ба таври кутоҳ
 муаррификунии протседураҳо низ мавҷуд аст. Мисол. 
 function Sqr(x: integer):= x * x * x; 
 function CircleLen(r: real): real:= * Pi * r; 
 function Hypot(a, b: real):= sqrt(a * a + b * b);
 function Len(x, y, x, y: real):= Hypot(x - x, y - y);
 function DigitCount(x: integer):= abs(x).ToString.Length;
 function Максимум(a, b, c: real): real:= Max(Max(a, b), c);
 procedure Хориҷ<Дилхоҳ_тип>(x: Дилхоҳ_тип):= Println(x);
 begin 
 Println(Sqr(), CircleLen()); 
 Println(Hypot(, ), Len(,,, )); 
 Println(DigitCount(-)); 
 Хориҷ(Максимум(,, )); 
 end. 
 Модулҳо 
 Агар хоҳем, ки зербарномаҳои қаблан навиштаатонро дар
 барномаҳои нав истифода барем, зарур аст, ки онҳоро ба сурати
 модул нависем. Модул аз рӯи амал ва робита ба зербарномаҳо
 монанд буда, аз рӯи муаррификунӣ барномаи мустақил мебошад.
 Илова бар ин, модулҳо дар файли ҷудогона навишта мешаванд, аз
 ин рӯ онҳоро барномаҳои ҷудогонаи иҷроишӣ меноманд. Файлҳое,
 ки дар онҳо модулҳо навишта шудаанд, дорои пасванди.tpu,.ppu, ва.pcu мебошанд. 
 Барноманависи моҳир метавонад амалеро, ки истифодаи
 чандкарата дошта, дар Паскал ба намуди пешфарз вуҷуд надорад, ба
 сурати модул навишта, дар барномаҳои гуногун истифода кунад.
 Ҳар як модул дорои ду бахши асосӣ ба номҳои интерфейс
 (Interface) ва пиёдасозӣ (Implementation) буда, илова бар ин, дорои
 як бахши ихтиёри бо номи бахшидани қимати ибтидоӣ (initialization)
 низ мебошад. Сохтори умумии як модул шакли зеринро дорад:
 unit <номи модул>; 
 Interface 
 <бахши интерфейс> 
 Implementation 
 <бахши пиёдасозӣ> 
 begin 
 <бахши қимати аввала бахшидан> 
 end. 
 Барои ба ин сохтор шинос шудан, ҳар яке аз ин бахшҳоро дар
 алоҳидагӣ мавриди баҳс қарор медиҳем. 
 Номи модул (Unit) 
 Ҳар як модул дорои номи махсус мебошад. Барои 
 номгузории модулҳо низ аз қонуни номгузории идентификаторҳо
 истифода бурда мешавад. Номи модул пас аз калимаи калидии Unit
 навишта шуда, бояд ба номи файле, ки дар он навишта шудааст (бе
 назардошти пасванди файл, яъне.pas), мувофиқат кунад. Тавассути
 номи модул, метавон онро дар модули дигар ё барномаи асосӣ
 пайваст кард. Барои иҷрои ин амал пас аз калимаи калидии uses
 номи модул навишта мешавад. Агар тавассути дастури мазкур
 зарурати пайвасти якчанд модул пеш ояд, он гоҳ онҳо аз ҳамдигар
 бо аломати вергул (,) ҷудо навишта мешаванд. Тарзи истифодаи
 дастури uses чунин аст: 
 uses <Рӯйхати модулҳо>; 
 Бахши интерфейс (Interface) 
 Бахши интерфейс тавассути калимаи калидии interface оғоз
 гардида, бахши асосии модул ба ҳисоб меравад. Дар ин бахш
 тағйирёбандаҳои умумӣ муаррифӣ ва зербарномаҳои асосӣ
 пешнамунасозӣ карда мешаванд. Ҳангоми дар ин бахш муаррифӣ
 намудани тағйирёбандаҳо ва пешнамунасозии функсияҳо ба онҳо
 метавон аз модули дигар ё барномаи асосӣ дастрасӣ пайдо кард.
 Барномаҳо ё модулҳое, ки аз модулҳои дигар истифода мекунанд,
 муштарӣ (client) номида мешаванд. Масалан, бахши интерфейси
 модули muodila, ки барои ҳисоб намудани решаҳои муодилаи
 квадратӣ пешбинӣ шудааст, шакли зеринро дорад: 
 unit muodila; 
 Interface 
 var x, x:real; 
 procedure mk(a,b,c:real)... 
 Барои муаррифии (пайваст намудани) модули мазкур дар
 барнома тавассути дастури uses ба сурати зерин амал кардан лозим
 аст. 
 uses muodila; 
 Баъд аз ин имконияти истифодаи ҳамаи объектҳои дар бахши
 интерфейс муаррифишуда, барои истифода дастрас мешаванд.
 Бахши пиёдасозӣ (Implementation) 
 Бахши пиёдасозӣ бо ёрии калимаи калидии implementation
 оғоз гардида, дар ин бахш зербаномаҳое ки дар бахши интерфейс
 пешнамуна шуда буданд, шарҳ дода (амалӣ карда) мешаванд. Дар
 бахши мазкур метавон идентификаторҳои нав низ муаррифӣ кард.
 Аз сабаби он ки идентификаторҳои дар ин бахш муаррифишуда,
 қобили дастёбӣ нестанд, ин бахшро бахши хусусӣ меноманд.
 Ҳангоми навиштани бахши пиёдасозӣ зикр намудани
 рӯйхати параметрҳои марбут ба зербарномаҳое, ки дар бахши
 интерфейс омадаанд, лозим нест. Агар рӯйхати параметрҳо дар
 бахши пиёдасозӣ зикр шавад, бояд ба параметрҳое, ки дар бахши
 интерфейс омадаанд, якхела бошанд. Он гоҳ зарур аст, ки рӯйхати
 параметрҳоро ҳам дар бахши интерфейс ва ҳам дар бахши пиёдасозӣ
 зикр кард. 
 Бахши қимати аввала бахшидан 
 Агар модул дорои бахши initialization бошад, он гоҳ он
 тавассути калимаи калидии Begin оғоз гардиlа бо End ба охир
 мерасад. Дар ин бахш ба тағйирёбандаҳое, ки дар бахши интерфейс
 муаррифӣ шудаанд, қимати аввала бахшида мешавад. Бахши мазкур
 метавонад мавҷуд набошад, ё холи бошад. Дар ҳолати аввала
 калимаи End бо аломати нуқта (.) навишта мешавад, дар ҳолати
 дуюм байни Begin ва End холӣ гузошта мешавад. 
 Иҷроиши модул 
 Пас аз он ки модули нав навишта шуд, қабл аз истифодабарӣ
 бояд онҳоро тарҷума карда шавад. Дар PascalABC.NET равиши
 тарҷумаи модул ба барномаи муқаррарӣ якхела мебошад. Ҳангоми
 дар барномаи дигар истифода намудани модул бояд ба пасванди он
 диққат дод. Дар ин ҷо се пасванди маъмули модулҳоро мавриди баҳс
 қарор медиҳем: 
 дорои пасванди.tpu (turbo pascal unit) сохта мешавад.
 мешавад, ки дорои пасвандҳои.ppu ва.o мебошанд. Дар файли
 якум қисми интерфейси модул ва дар файли дуюм қисми
 пиёдасозӣ нигоҳ дошта мешавад. 
 коди модул ба забони мошини табдил дода намешавад. Дар
 сурати бо муваффақият иҷро шудани ин амал файле бо
 пасванди.pcu сохта мешавад. 
 Дар муҳити барноманависии забонҳои Turbo Pascal ва Free
 Pascal се реҷаи тарҷума вуҷуд дорад: Compile, Make ва Build. Дар
 реҷаи Compile бояд ҳамаи модулҳои истифодашаванда пештар иҷро
 карда шуда бошанд. Барнома дар реҷаи иҷроиши Make ҳамаи
 модулҳои пайвастшуда бо файлҳои мувофиқ ба муҳити 
 барноманависӣ.tpu ё.o муқоиса карда мешавад. Агар ягонто аз ин
 файлҳо пайдо нашавад, амали ҷустуҷӯи файл бо номи модули пайдо
 нашуда ва пасванди.pas иҷро карда мешавад. Реҷаи Build нисбат ба
 дигар реҷаҳо пурқудраттар мебошад. Ҷустуҷӯ ва иҷроиши файлҳо
 (бо пасванди.pas) дар ин реҷа новабаста аз вуҷуд доштан ё
 надоштани файлҳои модул ба амал меояд. 
 Истифодаи модул дар модули дигар 
 Ҳар модул метавонад аз модули дигар истифода намояд.
 Ҳангоми истифодаи модул дар модули дигар номи модул дар бахши
 интерфейси модули нав тавассути калимаи uses навишта мешавад.
 Бигузор талаб карда шавад, ки модули sum дар модули нав истифода
 бурда шавад. Барои иҷрои ин амал аз дастуроти зерин истифода
 бурда мешавад. 
 Interface uses sum; 
 Шакли нави модулҳо дар pascalABC.NET 
 Дар pascalABC.NET модулҳоро метавон ба шакли кӯтоҳтар
 низ муаррифӣ кард. Шакли умумии ин навъ чунин аст: 
 unit <номи модул>; 
 <бахши муаррификуниҳо> 
 [begin 
 <операторҳо>] 
 end. 
 Барои ин навъ модулҳо дар бахши муаррификунии типҳо,
 доимиҳо, тағйирёбандаҳо ва зербарномаҳо навишта мешаванд.
 Бахши операторҳо бошад, бахши қимати аввала бахшидан ба ҳисоб
 меравад. 
 Модулҳои стандартии Паскал 
 Яке аз модулҳои стандартии забони Pascal ин модули crt
 мебошад, ки барои идора намудани равзанаи хуруҷӣ истифода бурда
 мешавад. Ҳангоми пайвасти модули мазкур барои иҷрои барнома
 тугмачаҳои Shift ва F якҷоя пахш карда мешаванд. 
 Тавассути модули мазкур метавон ранги замина, ранги
 ҳуруфот, андозаи равзанаи хориҷкунӣ, мавқеи курсор ва ғайраро
 идора кард. 
 Барои заминаи равзанаи хориҷкуниро иваз кардан аз
 протседураи TextBackground() ва барои ранги ҳуруфоти равзани
 хуруҷиро иваз кардан аз протседураи TextColor() истифода бурда
 мешавад. Ҳар ду ин протседураҳо дорои як аргумент буда, ба сифати
 аргумент дар онҳо метавон номи ранг ва ё қимати рангро навишт.
 Дар ҷадвали зерин ранги асосӣ бо қимати ададиашон оварда
 шудаанд: 
 № Номи ранг бо Доимие, ки но-ми Қимати 
 тоҷикӣ рангро ифо-да ранг 
 мекунад. 
 Сиёҳ Black 
 Обӣ Blue 
 Сабз Green 
 Кабуд Cyan 
 Сурх Red 
 Бунафш Magenta 
 Қаҳваранг Brown 
 Хокистарранг Lightgray 
 и равшан 
 Хокистар- Darkgray 
 ранги тира 
 Обии равшан Lightblue 
 Сабзи равшан Lightgreen 
 Кабуди Lightcyan 
 равшан 
 Сурхи равшан Lightred 
 Бунафши Lightmagenta 
 равшан 
 Зард Yellow 
 Сафед White 
 Қайд. Ҳамаи ин рангҳо дар модули crt ба намуди статикӣ
 муаррифӣ крда шудаанд. Аз ин рӯ барои ба онҳо дастрас шудан
 метавон аз номи модул ва аломати нуқта низ истифода кард
 мисол: crt.Red. 
 Мисолҳо оиди модул 
 Мисоли. Модуле нависед, ки дар он функсия барои ҳисоб
 намудани суммаи ду адади бутун вуҷуд дошта бошанд. 
 Матни барнома(модул): 
 unit sum; 
 interface 
 function sum(a: integer; b: integer): integer;
 implementation 
 var 
 a, b: integer; 
 function sum(a: integer; b: integer): integer;
 begin 
 sum:= a + b; 
 end; 
 end. 
 Пас аз навиштани модул онро бо номи sum дар файли
 алоҳида сабт карда, бо пахши тугмачаи F онро иҷро мекунем. Барои
 истифодабарии модули мазкур дар барномаи асосӣ аз дастури зерин
 истифода карда мешавад: 
 uses sum; 
 Истифода аз модул: 
 program test; 
 uses 
 sum; 
 var 
 a, b, c: integer; 
 begin 
 read(a, b); 
 write(sum(a, b)); 
 end. 
 Мисоли. Модуле нависед, ки дар он протседура барои
 ҳисоб намудани решаҳои муодилаи квадратӣ вуҷуд дошта бошад.
 Матни модул 
 unit muodila; 
 interface 
 var 
 x, x: real; 
 procedure mk(a, b, c: real); 
 implementation 
 procedure mk(a, b, c: real); 
 var 
 d: real; 
 begin 
 d:= b * b - * a * c; 
 if d > then 
 begin 
 x:= (-b + sqrt(d)) / ( * a); 
 x:= (-b - sqrt(d)) / ( * a); 
 WritelnFormat('x={}, x={} ', x, x); 
 end 
 else if d = then 
 begin 
 x:= -b / ( * a); 
 x:= x; 
 WritelnFormat('x={}, x={} ', x, x); 
 end 
 else 
 Write('Муодила ҳалли ҳақиқӣ надорад!'); 
 end; 
 end. 
 Пас аз навиштани модул онро бо номи muodila дар файли
 алоҳида сабт мекунем. 
 Истифодаи модули muodila дар барномаи асосӣ: 
 program test; 
 uses 
 muodila; 
 var 
 a, b, c: real; 
 begin 
 read(a, b, c); 
 mk(a, b, c); 
 end. 
 Мисоли. Модуле нависед, ки дар он функсия барои ҳисоб
 намудани суммаи квадрати ду адади додашуда ва протседура барои
 хориҷ намудани қимати ду адад дар он вуҷуд дошта бошад.
 Матни барнома 
 unit MyLib; 
 interface //бахши интерфейс 
 const 
 MyPi =.; 
 var 
 size: integer:=; 
 function AddSquares(a, b: real): real; 
 procedure InvertPrint(a, b: integer); 
 implementation // бахши пиёдасозӣ 
 var 
 i: integer; 
 function MySqr(a: real): real; 
 begin 
 Result:= a * a; 
 end; 
 function AddSquares(a, b: real): real; 
 begin 
 Result:= MySqr(a) + MySqr(b); 
 end; 
 procedure InvertPrint(a, b: integer); 
 begin 
 write(b, ' ', a); 
 end; 
 end. 
 Модули сохташударо бо номи myLib.pas сабт мекунем.
 Истифодаи модул. 
 program test; 
 uses 
 MyLib; 
 var 
 n: integer; 
 begin 
 writeln(size); 
 writeln(AddSquares(, )); 
 InvertPrint(, ); 
 end. 
 Мисоли. Модуле нависед, ки дар он протседура барои
 ҷустуҷӯи элемент дар массив вуҷуд дошта бошад. 
 Матни модул: 
 unit Search; 
 interface 
 type 
 arr = array[..] of integer; 
 var 
 s: string; 
 procedure binary_search(x: integer; Ar: arr; var s: string);
 procedure line_search(x: integer; Ar: arr; var s: string);
 implementation 
 var 
 a, b, c, i: integer; 
 procedure binary_search(x: integer; Ar: arr; var s: string);
 begin 
 a:=; b:=; s:= 'NO'; 
 while a <= b do 
 begin 
 c:= a + (b - a) div; 
 if (x < Ar[c]) then 
 b:= c - 
 else if (x > Ar[c]) then 
 a:= c + 
 else 
 begin 
 s:= 'YES'; break; 
 end; 
 end; 
 end; 
 procedure line_search(x: integer; Ar: arr; var s: string);
 begin 
 s:= 'NO'; 
 for i:= to do 
 begin 
 if (Ar[i] = x) then 
 begin 
 s:= 'YES'; break; 
 end; 
 end; 
 end; 
 end. 
 Ҳамаи ин код бояд дар файли алоҳида навишта бо номи
 Search сабт шавад. Акнун дар барномаи асосӣ ин модулро пайваст
 мекунем. 
 program test; 
 uses 
 Search; 
 var 
 mas: arr; 
 n, j: integer; str: string; 
 y: char; 
 begin 
 writeln('Enter the array elements'); 
 for j:= to do 
 readln(mas[j]); 
 write('Enter number search: '); readln(n); 
 write('This array is ordered? (y/n) '); readln(y);
 if y = 'y' then 
 binary_search(n, mas, str) 
 else 
 line_search(n, mas, str); 
 write(str); 
 end. 
 Tuple-ҳо 
 Tuple-ҳо – навишти беном мубошанд, ки дар забони
 PascalABC.NET истифоди васеъ доранд. Намунаи типи tuple:
 (string,integer), қимати типи tuple: (‘Алӣ’,). Миқдори максималии
 элементҳои tuple ба (маҳдудияти.NET) баробар мебошад. Барои
 дастрасӣ пайдо кардан ба элементҳои tuple аз зернависи онҳо
 ситифода бурда мешавад. Мисол t[], t[]. Ҳангоми истифодабарӣ,
 зернавис бояд адади доимӣ бошад. 
 Tuple-ҳо куллан усули барноманависиро дар PascalABC.NET
 тағйир доданд. Ҳоло бо якчанд мисол онҳоро дида мебароем.
 Мисоли. Сохтан, қимати аввла бахшидан ва хориҷкунии
 tuple. 
 Begin 
 var t: (string, integer); 
 // бахшидани қимат ба tuple 
 t:= ('Алӣ', ); 
 Println(t); 
 Println(t[], t[]); 
 var name: string; 
 var age: integer; 
 // қимат бахшидан ба tuple 
 (name, age):= t; 
 Println(name, age); 
 end. 
 Мисоли. Истифодаи tuple ба сифати swap. 
 Begin 
 var a:=; 
 var b:=; 
 Println(a, b); 
 (a, b):= (b, a); 
 Println(a, b); 
 var c:=; 
 Println(a, b, c); 
 (a, b, c):= (b, c, a); 
 Println(a, b, c); 
 //(a,b):= (,,); // хатогӣ тарафи 
 чап дарозтар аст! 
 end. 
 Tuple-ҳо метавонанд қимат низ баргадонанд. 
 Мисоли. Масоҳат ва периметри росткунҷаро бо дода
 шудани тарафҳояш ҳисоб кунед. 
 function SP(a, b: real):= (a * b, * (a + b));
 begin 
 var S, P: real; 
 (S, P):= SP(, ); 
 Println(S, P); 
 (S, P):= SP(, ); 
 Println(S, P); 
 end. 
 Мисоли. Ду адади бутун дода шудааст. Калонтарин
 каратии умуми (ККУ)-и онҳо ёфта шавад. 
 begin 
 var (a,b):=ReadInteger; 
 while b > do 
 (a, b):= (b, a mod b); 
 Println(a); 
 end. 
 Мисоли. Пайдарпайии ададҳои Фибоначӣ аз рӯи қоидаи
 зерин ҳисоб карда мешаванд:. 
 Барномае нависед, ки n адади аввалаи ин пайдарпайиро хориҷ
 кунад(cid:). =, (cid:) =, (cid:)(cid:) = (cid:)(cid:)− + (cid:)(cid:)−, (cid:) =,,…
 Begin 
 var n:= ReadInteger; 
 var a:=; 
 var b:=; 
 Print(a); 
 for var i:= to n do 
 begin 
 Print(b); 
 (a, b):= (b, a + b); 
 end; 
 end. 
 Лямбда –ифодаҳо 
 Лямбда-ифодаҳо-функсияҳои кутоҳ (блоки коди беном) буда, аз
 нуқтаи назари корбарӣ хело сода мебошанд. Онҳо навиштан ва
 фаҳмидани матни барномаро хеле сода мекунанд. Ба сифати
 функсияҳои кутоҳ дар барномнависӣ метавон аз лямбда-ифодаҳо
 истифода кард. Ин навъ ифодаҳо айни ҳол қариб дар тамоми
 забонҳои муосири барномасозӣ мавҷуд мебошанд. Типи содаи
 лямбда-ифодаҳо: 
  T->T – функсия бо як параметри типи T буда, қимати
 типи T-ро бармегардонад. 
  (real,real) -> boolean – функсия бо ду параметри ҳақиқӣ буда,
 қимати мантиқӣ бармегардонад. 
 Лямбда-ифодаҳо як бахши калони барноманависӣ ба ҳисоб
 мераванд, бинобар онҳоро пурра мавриди баҳс қарор намедиҳем.
 Танҳо якчанд мисоли кучакеро дида мебароему халос. 
 Мисоли. Бо дода шудани радиуси давра дарозии он,
 ро ҳисоб кунед. 
 Var (cid:) 
 (cid:) = (cid:)(cid:)− f: real->real; 
 begin 
 f:= R -> * pi * R; 
 var R:= ReadReal; 
 writeln(f(R)); 
 end. 
 Мисоли. Бо дода шудани дарозӣ ва бари росткунҷа,
 масоҳат ва параметри онро ёбед. 
 var (cid:) (cid:)
 (cid:) = f: (Integ(cid:)er=,Inte(g(cid:)e+r)-(cid:)>)Integer;
 begin 
 f:= (a, b) -> a * b; 
 var (a, b):= ReadInteger; 
 writeln('P=', f(a, b)); 
 f:= (a, b)-> * (a + b); 
 writeln('P=', f(a, b)); 
 end. 
 Саволҳо барои мустаҳкамкунӣ 
 он дар чист? 
 барем? 
 накард? 
 зарур аст? 
 мешавад? 
 интихоб карда мешавад? 
 Free Pascal аз ҳамдигар чӣ фарқ доранд? 
 Масъалаҳо барои кори мустақилона 
 ∞ 
 (cid:) (cid:)+
 (cid:) (cid:) (cid:) (−) (cid:)
 (cid:)− + − +⋯ = ∑!!! (cid:)= ((cid:)+)! 
 пайдарпайии ададҳои ҳақиқии -ро чоп кунад. 
 (cid:)(cid:) 
 (cid:) =,(cid:)(cid:) =, (cid:) =,,…
 охирин ин пайдарпайи меб(cid:)ошад. Зербарномае нависед, ки
 суммаи қисмҳои касрии ин ададҳоро ҳисоб кунад. 
 муайян кунад, ки оё бо ёрии ин порчаҳо секунҷа сохтан мумкин
 аст? (cid:),(cid:),(cid:) 
 (cid:) = { 
 min(max(m,n),masxi(nx(,ny)!)), агар (cid:) < бошад.
 ифодаи зерин зербарнома нависед. 
 max((cid:),(cid:),(cid:))−min( (cid:),(cid:),(cid:))
 (cid:) = 
 (cid:)(cid:)𝑠(cid:)+ 
 шудаанд: max ((cid:),(cid:),(cid:))
 (cid:) = 
 (cid:) = 
 { 
 Зербарномае нависед, ки бо д(cid:)о д=а шудани адади бутуни n (n )
 элементи n-уми ин па(cid:)йд (cid:) а=рп(cid:)ай (cid:)− и ро+ ҳ(cid:)и (cid:) с − о б +ку(cid:)н (cid:) а − д..
 ≥ 
 ) ) 
 √ + √ +√+⋯+√ √ +√+√+√… 
 (cid:) = √ +((cid:)+)√+((cid:)+)√+((cid:)+)√+⋯
 н(cid:)о м=и р(cid:)а+қам((cid:)р+о.б.а( (cid:)чо+п (д(cid:)иҳ+ад((cid:). М+а(cid:)с)ал)ан): ….)
 Дохилкунӣ: ≤ 
 (cid:) ≤Хориҷкунӣ:биступанҷ 
 онҳо зербарнома нависед. 
 Маълум аст, ки дараҷаи n-и адади х бо ёрии формулаи зерин
 ҳисоб карда мешавад. 
 (cid:) 
 в (cid:) и 
 = 
 сед 
 {, к(cid:)и− р,а а г с а м р и (cid:) с = еку н ҷ б а о и ш а р д осткунҷаро бо ёрии
 рамзи ситорача «*»т(cid:)а(cid:)свир, кунаадг. ар (cid:) ≠ бошад.
 шуд. Мақсади бозӣ аз он иборат буд, ки се то сутунча дода
 мешаванд. Дар сутунчаи якум ҳалқаҳо бо тартиби 
 калоншавиашон ҷойгиранд. Талаб карда мешавад, ки ҳалқаҳоро
 ба сутунчаи дигар (сеюм) тавре гузаронед, ки тартиби
 ҷойгиршавиашон дигар нашавад, яъне ҳеҷ гоҳ ҳалқаи калон дар
 болои ҳалқаи хурд қарор нагирад. Илова бар ин, бояд ҳалқаҳо
 якто-якто кӯчонида шаванд. Дар поён барои якчанд ҳалқа расми
 бозӣ оварда шудааст. Зербарномаи бозгаштие нависед, ки кори
 ин бозиро иҷро кунад. 
 ба системаи ҳисобии дуӣ тартиб дода шавад. 
 Зербарномае нависед, ки қимати миёнаи арифметикии ададҳои
 содаи воридшуда ва функсияи дигар нависед, ки қимати миёнаи
 ададҳои содаи воридшударо ҳисоб кунад. Агар чунин ададҳо
 набошанд, пайғоми муносибе чоп кунад. 
 мешаванд. Зербарномае нависед, ки суммаи ададҳои сода ва
 суммаи ададҳои ғайри содаи дохили пайдарпайиро ҳисоб кунед.
 Барои муайянкунии ададҳои сода функсия нависед. 
 ба системаи ҳисобии даҳӣ тартиб дода шавад. 
 кунед. Функсияи гиперболи ҳангоми ба қатор паҳн кардан шакли
 зеринро мегирад: (cid:) 
 ∞ 
 n+ 
 х x x!! n=(n+)! 
 суммаи тақсимкунандаҳои дигараш (бе худи адад) баробар
 бошад. Функсияе нависед, ки ададҳои «дӯст»-и порчаи […n]-ро
 барорад. 
 Суммаи периметр ва суммаи масоҳати онҳо муайян карда шавад.
 (Протседураи муайянкунии периметр ва масоҳат аз рӯи асосҳо ва
 баландии трапетсия тартиб дода шавад.) 
 даҳӣ ба системаи ҳисобии N - ӣ тартиб дода шавад. Қимати N аз
 клавиатура дохил карда мешавад (≤ ). 
 N ≤ 
 БОБИ. МАССИВҲО(ARRAYS) 
 Муқаддима 
 То ҳол барои захира кардани додаҳо аз тағйирёбандаҳои
 навъҳои char, boolean, integer, real ва ғайра истифода кардем, ки ҳар
 кадом тағйирёбанда дар ҳофиза танҳо барои нигоҳ доштани як
 қимат истифода мешуданд. Ба сифати намуна, дастурҳои зеринро
 дар назар гиред: 
 var 
 x:integer; 
 ch:char; 
 logic: Boolean; 
 y:real; 
 Ин дастурҳо тағйирёбанди х-ро аз навъи бутун, ch-ро аз
 навъи рамзӣ, logic–ро аз навъи мантиқӣ ва y–ро аз навъи ҳақиқӣ
 эълон мекунанд. Ҳар яке аз ин тағйирёбандаҳо дар ҳофиза танҳо
 барои нигоҳ доштани як қимат истифода мешавад. Аммо ин навъ
 тағйирёбандаҳо ҳамеша талаботи моро қонеъ карда наметавонанд.
 Масалан, мехоҳем адади бутунро дар ҳофиза нигоҳдорӣ кунем.
 Барои иҷрои ин амал, ба мо зарур аст, ки аз тағйирёбандаи навъи
 бутун истифода кунем. Ин амалро шояд барои қимат карда
 тавонем, вале агар хоҳем, ки қимати бутунро дар ҳофиза
 нигоҳдорӣ кунем, он гоҳ барои онҳо тағйирёбанда муаррифӣ
 кардан лозим меояд, ки ин раванди барноманависиро мушкил
 мегардонад. Албатта, роҳи ҳалли ин масъала мавҷуд аст. Дар ин хел
 мавридҳо аз тағйирёбандаҳои индексдор, ки массив ном доранд,
 истифода бурда мешавад. Ҳангоми истифодаи тағйирёбандаҳои
 индексдор новобаста аз миқдори қиматҳои додашуда, танҳо аз як
 тағйирёбанда истифода бурда мешавад. Дар ин сурат, ҳар як
 қиматро як элемент меномем ва барои дастёбӣ ба он (ҳар як
 элемент) аз рақами тартибии он, ки зернавис ё индекс ном дорад,
 истифода мебарем. Ба сифати намуна, дар поён ба намуди графикӣ
 тағйирёбандаи индексдоре бо номи а, ки дорои элемент буда,
 элементҳои он аз сар карда рақамгузорӣ шудаанд оварда шудааст.
 Дар ин ҷо ҳар як катакча ҳамчун як элемент фаҳмида
 мешавад. Тавре аён аст, тағйирёбандаҳои индексдор бо як низоми
 хосе дар ҳофиза захира карда мешаванд. Тавассути ин низом
 метавон дар дилхоҳ ҷойи массив (катакча) қимат гузошт ва ба ҳар
 қимат дастрасӣ пайдо кард. Чунин навъ тағйирёбандаҳоро
 (тағйирёбандаҳои индексдорро) массив (array) меноманд. Умуман,
 массив чунин таъриф дода мешавад: 
 Таъриф. Гурӯҳи элементҳои дорои хусусият, навъ ва
 сифати якхела, ки аз ҳамдигар танҳо бо зернавис фарқ
 мекунанд, массив номида мешавад. 
 Аз ин ҷо метавон маҷмӯи элементҳои якҷинсаро бо як ном
 муаррифӣ кард. Ба ғайр аз ин, метавон ҷадвали дорои m-сатр ва n-
 сутун ( (i=…n ва j=…m))-ро, ки элементҳои он дорои сифати
 якхела мебошанд, бо як ном муаррифӣ кард. Аз нуқтаи назари
 алгебра(cid:), (cid:) м (cid:) ассивҳое, ки як зернавис доранд, вектор ва массивҳое, ки
 ду зернавис доранд, матритса ном доранд. 
 Барои номгузории массивҳо низ аз қонуни номгузории
 идентификаторҳо истифода бурда мешавад. 
 Муаррифӣ намудани массивҳо 
 Тавре қаблан зикр кардем, ҳар гуна дода дар забони Паскал
 пеш аз истифодабарӣ бояд муаррифӣ карда шавад. Массивҳо низ
 пеш аз истифодабарӣ муаррифӣ карда мешаванд. Як хусусияте, ки
 барои дигар додаҳо набуда, танҳо барои массивҳо хос мебошад, ин
 индекси массив аст, ки дар вақти муаррификунии массивҳо нишон
 дода мешавад. Фосилаи қиматҳои индекси массив пас аз номи
 массив дар дохили қавси квадратӣ «[ ]» навишта мешавад. Тарзи
 муаррифии массивҳо дар Паскал шакли зайлро дорад: 
 var <идентификатор>: array[<фосилаи индекс>] of
 навъи элементҳо> 
 Дар ин ҷо array калимаи калидӣ буда, танҳо барои муаррифии
 массивҳо истифода бурда мешавад. Баъд аз array дар дохили қавси
 квадратӣ навъи индексҳои массив нишон дода шудааст, ки
 метавонад аз навъи символӣ, мантиқӣ, фосила ва ё шуморишӣ
 бошад. Бояд қайд кард, ки ба сифати индекси массив наметавон
 додаҳои навъи ҳақиқиро истифода кард. Монанди дигар додаҳо
 массивҳо низ метавонанд аз дилхоҳ навъи стандартӣ муаррифӣ
 гарданд. Навъи лозимӣ пас аз калимаи of навишта мешавад.
 Масалан, массиви дорои элементе ки аз навъи бутун аст, чунин
 муаррифӣ карда мешавад: 
 var x:array[..] of integer; 
 Зернависи (индекси) нахустини массив вобаста аз тарзи
 муаррификунӣ оғоз мегардад. Дар массиви х индекси нахустин 
 мебошад. Илова бар ин, метавон массиви дорои элементро ба
 сурати зерин муаррифӣ кард: 
 var x:array[..] of integer; 
 Ба ғайр аз ин, ин индексҳои массив метавонад манфӣ низ
 бошанд. Ба дастурҳои зерин диққат диҳед: 
 var 
 x:array[-..] of integer; 
 y:array[-..] of real; 
 Тавре қайд кардем, ба сифати навъи массив метавон аз
 дилхоҳ навъ (стандартӣ ва ғайристандартӣ) истифода кард.
 Илова бар ин, дар забони Паскал массивҳоро метавон ба
 сурати дигар низ муаррифӣ кард. Дар ин навъ аввал бо истифода аз
 дастури type навъи лозимӣ сохта шуда, сипас массивҳо аз он навъ
 муаррифӣ карда мешаванд. Тарзи сохтани тип барои массив шакли
 зеринро дорад: 
 type номи_типи=array[<навъи индекс>] of <навъи 
 элементҳо> 
 Пас аз сохтани тип метавон массивҳои лозимиро аз он тип
 муаррифӣ кард. Тарзи муаррифии массив аз типи сохташуда чунин
 шакл дорад: 
 var массив, массив, …, массивn: номи_типи; 
 Масалан, 
 type 
 TArrayType = array [..] of Integer; (* Эълони типи
 массив *) 
 var arr, arr, arr: TArrayType; (*эълони се массив аз
 типи сохташуда *) 
 Барои ба элементи дилхоҳи массив дастрас шудан, аввал
 номи массив, баъд индекси он дар дохили қавси квадратӣ навишта
 мешавад. Масалан, барои элементи чоруми массиви arr-ро ба
 тағйирёбандаи с бахшидан, аз ифодаи зерин истифода бурдан
 мумкин аст: c:=a[]. 
 Ин ифода як нусхаи элементи чоруми массиви arr-ро ба
 тағйирёбандаи с мебахшад. 
 Андозаи ҳофизае, ки барои массивҳо ҷудо карда мешавад, ба
 миқдор ва навъи элементҳои массив вобастагӣ дорад. Ба сифати
 намуна, агар массив аз навъи бутун буда, дорои элемент бошад
 дар ҳофиза байт ҷойро ишғол мекунад. Сабабаш дар он аст, ки
 навъи бутун байт ҷойро дар ҳофиза банд мекунад ва ин бо миқдори
 элементҳои массив зарб карда мешавад, яъне *=. 
 Ба массивҳо бахшидани қимати аввала 
 Монанди тағйирёбандаҳои одӣ ҳангоми муаррификунии
 массивҳо, метавон ба онҳо қимати аввала бахшид. Қимати аввалаи
 массив пас аз навъи массив дар дохили қавси муқаррарӣ навишта
 мешаванд. Масалан, барои қимати аввала бахшидан ба массиви
 навъи бутуни х аз дастури зерин истифода бурда мешавад:
 var x:array[..] of integer:=(,,); 
 Роҳи дигари қимати аввала бахшидан, ба намуди доимии
 навъдор муаррифӣ кардани массивҳо мебошад. Дастурҳои зеринро
 дар назар гиред: 
 type 
 arr:array[..] of integer; 
 const 
 a:arr=(,,,,,,,,,); 
 Дастури аввал бо номи arr навъи массив муаррифӣ мекунад.
 Дар дастури дуюм бошад, массиви а аз навъи arr муаррифӣ намуда,
 ба он қимати ибтидоӣ бахшида шудааст. Мисол: 
 program test; 
 const 
 n =; 
 var 
 x: array[..n] of integer:= (,,,,,,,,, );
 i: integer; 
 begin 
 for i:= to n do 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end. 
 Дохилкунӣ ва хориҷкунии элементҳои массив 
 Тавре қайд кардем, ҳангоми муаррификунӣ метавон ба
 массив қимати аввала бахшид, вале баъзан баъди ба кор
 даромадани барнома зарурати дохил намудани элементҳои массив
 пеш меояд. Ҳангоме ки элементҳои массив ба барнома дохил карда
 мешаванд, зарурати дидани натиҷаи амалиёти иҷрошуда ба он
 элементҳо пеш меояд. Барои иҷро ин мақсад, элементҳои массив
 хориҷ карда мешаванд. Дохилкунӣ ва хориҷкунии элементҳои
 массив монанди тағйирёбандаҳои муқаррарӣ сурат мегирад. Вале
 фарқият дар он аст, ки дар массивҳо зернавис низ нишон дода шуда,
 аз ягон оператори даврӣ истифода карда мешавад. 
 Мисол. Барномае нависед, ки аввал элементҳои массивро
 дохил намуда, сипас ба намуди зерин хориҷ намояд: 
 massiv []=el; 
 massiv []=el; 
 - - - - - - - - - - - 
 massiv [n]=eln; 
 Матни барнома: 
 program test; 
 const 
 n =; 
 type 
 arr = array[..n] of integer; 
 var 
 x: arr; 
 i: integer; 
 begin 
 for i:= to n do 
 read(x[i]); 
 for i:= to n do 
 writelnFormat('x [{}]={}', i, x[i]); 
 end. 
 Дар ин ҷо андозаи массив ҳамчун як доимӣ муаррифӣ карда
 шуда, ба баробар мебошад. Сипас, то замоне ки шарти оператори
 даврӣ ҳақ аст, аз клавиатура элементҳои массив дохил карда
 мешаванд. Ҳангоми ба охир расидани давр идоракунӣ ба даври
 дуюм мегузарад ва то он замоне ки давр дуруст аст, элементҳои
 массив хориҷ карда мешаванд. 
 Бо ададҳои тасодуфӣ пур намудани элементҳои массив
 Агар массив барои ягон масъалаи санҷишӣ истифода шуда
 бошад, пас метавон элементҳои онро аз ададҳои тасодуфӣ пур кард.
 Барои иҷрои ин амал, аз функсияи rand() ва ё randomize() истифода
 бурда мешавад. Дар функсияҳои мазкур метавон ҳудуди болоӣ ва
 поиниро нишон дод. Масалан, агар талаб карда шавад, ки
 элементҳои массиверо аз ададҳои тасодуфии аз калон набуда пур
 кунед. Барои иҷрои ин амал аз дастури зерин истифода бурдан
 мешавад: 
 A[i]:=random(). 
 Барои бо ададҳои манфии аз - то пур кардани массив, ин
 дастур ба сурати зерин истифода бурда мешавад: 
 A[i]:=random()-. 
 Агар барои функсия аргумент нишон дода нашуда бошад,
 компилятор ба таври ихтиёрӣ аз ададҳои бузург бо андозаи типи
 додашуда массивро пур мекунад. 
 Мисол. Барномае нависед, ки дар он элементҳои массив ба
 таври тасодуфӣ интихоб карда шуда, дар саҳифаи тасвир нишон
 дода шаванд. 
 program test; 
 const 
 n =; 
 type 
 arr = array[..n] of integer; 
 var 
 x: arr; 
 begin 
 for var i:= to n do 
 x[i]:= random(); 
 for var i:= to n do 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end. 
 Тавре мебинем, дар ин ҷо аввал андозаи массив ҳамчун адади
 доимӣ тавассути дастури const муаррифӣ карда шуда, сипас навъе
 барои массив бо номи arr муаррифӣ карда шудааст. Пас аз ин
 массиви х аз навъи arr муаррифӣ карда шудааст. Дар барномаи
 асосӣ тавассути оператори даврии for элементҳои массив аз ададҳои
 тасодуфӣ пур карда шуданд. Сипас, дар дохили ҳалқаи мазкур
 элементҳои массив хориҷ карда шудаанд. 
 Натиҷаи барномаи шакли зеринро дорад: 
 x []=; x []=; x []=; x []=; x []=; x
 []=; x []=; x []=; x []=; x []=; 
 Қайд. Дар PascalABC.NET барои қимати аввала бахшидан
 ба массивҳо ва хориҷ намудани элементҳои массив воситаҳои нав
 вуҷуд доранд. Ҳоло бо мисоле ин амалҳоро дида мебароем. Баъдтар
 ин масъаларо дида мебароем. 
 Ҷустуҷӯи элементи калонтарин ва рақами тартибии он дар
 массив 
 Масъала. Массиви а дорои n элемент мебошад. Барномае
 нависед, ки элементи калонтарин ва рақами тартибии онро муайян
 кунад. 
 Алгоритми ин масъала чунин аст: аввал ду тағйирёбанда ба
 номҳои max ва nmax муаррифӣ карда, фарз мекунем, ки элементи
 аввала аз ҳама калонтар аст. Сипас, элементи мазкурро ба
 тағйирёбандаи max ва рақами тартибии онро ба тағйирёбандаи nmax
 мебахшем. Баъд аз он max ба элементҳои ояндаи массив муқоиса
 карда мешавад. Чунончи, агар он аз max калонтар бошад, қимати он
 ба max ва рақами тартибии он ба nmax бахшид мешавад, дар акси
 ҳол max ва nmax бетағйир гузошта мешаванд. Ин амал барои
 элементҳои боқимондаи низ иҷро карда мешавад. Барои пурратар
 фаҳмо шудани ин амал онро дар ҷадвали зерин гирд меорем.
 № 
 Массиви 
 додашуда 
 Қимати max 
 Қимати nmax 
 Барномаи ёфтани элементи калонтарин ва рақами тартибии он:
 program test; 
 const 
 n =; 
 type 
 arr = array[..n] of integer; 
 var 
 x: arr; 
 i, j, max, nmax: integer; 
 begin 
 for i:= to n do 
 begin 
 x[i]:= random(); 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end; 
 max:= x[]; nmax:=; 
 for i:= to n do 
 if max < x[i] then 
 begin 
 max:= x[i]; 
 nmax:= i; 
 end; 
 writeln; 
 writeFormat('max={}, nmax={}', max, nmax);
 end. 
 Тавре дида мешавад, дар ин ҷо элементҳои массив аз ададҳои
 тасодуфии аз калон набуда, пур карда шудаанд. Сипас, барнома
 аз рӯи алгоритми дар боло овардашуда амал намуда, элементи
 калонтарин ва рақами тартибии онро мебарорад. 
 Массивҳои динамикӣ 
 Ба намуди пешфарз ҳангоми муаррифӣ намудани массив дар
 хотира вобаста ба андозаи он маҳал (ҷой)-е ҷудо карда мешавад.
 Вале дар баъзе масъалаҳо андозаи массив пешакӣ маълум набуда,
 дар баъзеи дигарашон ҳангоми иҷро намудани барнома зарурати
 андозаи массивро тағйир додан пеш меояд. Аз ин рӯ истифодаи
 массиви динамикӣ (хотираи динамикӣ) пеш меояд. 
 Ҳангоми ба намуди статикӣ (static) муаррифӣ намудани
 массив, барои нигоҳ доштани элементҳои он як блоке аз ҳофиза
 ҷудо карда мешавад. Агар массив ба намуди динамикӣ муаррифӣ
 гардад, он гоҳ барои он чунин ҷой ҷудо (reserve) карда намешавад.
 Бо суханҳои дигар, ҳангоми ба намуди динамикӣ муаррифӣ
 намудани массив андозаи он нишон дода намешавад. Дар ин ҳолат
 андозаи массив пас аз иҷрои барнома мушаххса карда мешавад.
 Тарзи умумии муарррифии массиви динамикӣ дар забони 
 pascalABC.NET шакли зеринро дорад: 
 var номи_массив: array of тип; 
 Тавре дида мешавад, дар ин ҷо андозаи массив нишон дода
 нашудааст. Барои ҷудо намудани ҳофиза ба элементҳои массив
 метавон аз ду роҳ истифода кард: 
 Ба сифати намуна, бо номи а аз навъи бутун муаррифӣ намудани
 массиви динамикӣ шакли зеринро дорад: 
 var a: array of integer; 
 Тавассути зербарномаи SetLength ҷудо намудани ҳофиза
 барои массиви а чунин шакл дорад: 
 SetLength(a,); 
 Бо иҷроиши зербарномаи мазкур, барои массиви а ба андозаи
 элемент ҷой ҷудо карда мешавад. 
 Ин амал тавассути оператори new ба сурати зерин иҷро карда
 мешавад: 
 a:= new integer[]; 
 Тавре дида мешавад, дар ин усул типи массив низ нишон
 дода мешавад. 
 Бояд қайд кард, ки тавассути оператори new ҷудо намудани
 ҳофиза танҳо барои pascalABS.NET хос мебошад. 
 Дар ҳар ду усул ҳангоми ҷудо намудани ҳофиза ба сифати
 қимати ибтидоӣ ба элементҳои массив қимати сифрӣ бахшида
 мешавад. 
 То ҷудо намудани ҳофиза, қимати тағйирёбандаи массиви
 динамикӣ nil мебошад. 
 Агар дар ягон ҷойи барнома зарурати озод намудани ҳофизаи
 барои массив ҷудо шуда, пеш ояд, он гоҳ, ба массив қимати nil
 бахшидан зарур аст, яъне: 
 a:= nil; 
 Мисол. Барномае нависед, ки суммаи элементҳои массиви
 динамикии додашударо ҳисоб кунад. 
 program test; 
 var 
 x: array of integer; 
 i, n, S: integer; 
 begin 
 S:=; 
 read(n); 
 x:= new integer[n]; 
 for i:= to n - do 
 begin 
 x[i]:= random(); 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end; 
 for i:= to n - do 
 S += x[i]; 
 nil - 
 доимии сифрӣ, ки холи будани ягон объектро ифода
 мекунад. 
 writeln; 
 writeFormat('S={}', S); 
 end. 
 Қайд. Ҳангоми тавасссути оператори new ҷудо намудани
 ҳофиза барои элементҳои массив, элементҳо сар карда аз сифр
 рақамгузорӣ карда мешаванд. 
 Ду массиви динамикие, ки навъи онҳо якхела мебошад,
 метавон якеашро ба дигараш бахшид: 
 var a: array of integer; 
 var a: array of integer; 
 a:= a; 
 Барои нусхаи элементҳои як массивро ба массиви дигар
 бахшидан аз функсияи Copy истифода мебаранд: 
 a:= Copy(a); 
 Барои андозаи массивҳои динамикиро муайян кардан, аз
 функсия Length ва ё хосияти Length истифода карда мешавад:
 L:= Length(a); 
 L:= a.Length; 
 Зербарномаҳо барои таҳия намудани (сохтани) массиви динамикӣ
 function Arr<T>(params a: array of T): array of T; 
 Массиви бо қиматҳои нишондодашуда бармегардонад. 
 function Arr<T>(a: sequence of T): array of T; 
 Массиви бо қиматҳои аз пайдарпайи бармегардонад 
 function ArrFill<T>(count: integer; x: T): array of T;
 Массиви иборат аз count элементи x бармегардонад.
 function ArrGen<T>(count: integer; gen: integer -> T): array of T;
 Массиви иборат аз count элемент ки тавассути gen(i) таҳия
 шудаанд бармегардонад 
 function ArrGen<T>(count: integer; gen: integer -> T; from:
 integer): array of T; 
 Массиви иборат аз count элемент ки тавассути gen(i), сар
 карда i=from таҳия шудаанд, бармегардонад 
 function ArrRandom(n: integer:=; a: integer:=; b: integer:=
 ): array of integer; 
 Массиви иборат аз n элемент, ки бо ададҳои тасодуфӣ пур
 карда шудаанд бармегардонад. 
 function ArrRandomInteger(n: integer:=; a: integer:=; b:
 integer:= ): array of integer; 
 Массиви иборат аз n элемент, ки бо ададҳои тасодуфӣ пур
 карда шудаанд бармегардонад. 
 function ArrRandomReal(n: integer:=; a: real:=; b: real:= ):
 array of real; 
 Массиви иборат аз n элемент, ки бо ададҳои тасодуфии
 ҳақиқӣ пур карда шудаанд бармегардонад. 
 function ReadArrInteger(n: integer): array of integer;
 Дохилкунии массиви навъи бутун. 
 function ReadArrReal(n: integer): array of real; 
 Дохилкунии массиви навъи сатрӣ. 
 function ReadArrReal(prompt: string; n: integer): array of real;
 Дохилкунии массиви навъи ҳақиқӣ. 
 function ReadArrString(n: integer): array of string;
 Дохилкунии массиви навъи сатрӣ. 
 Мисоли. Аз фосилаи аз то массиве тартиб диҳед, ки
 дорои элемент бошад. 
 var (cid:) (cid:) 
 (cid:) a, b: integer; 
 begin 
 var n:= ReadInteger; 
 a:= -; b:=; 
 //Бо ададҳои тасодуфӣ пур кардани массив 
 var x:= ArrRandom(n, a, b); 
 //Хориҷкунии массив 
 x.Println; 
 end. 
 Мисоли. Массиве тартиб диҳед, ки элементҳои он n
 адади аввалаи ҷуфт бошанд. 
 Begin 
 var n:= ReadInteger; 
 //Бо ададҳои ҷуфт пур кардани ммассив 
 var a:= ArrGen(n, i -> * i ); 
 //Хориҷкунии массив 
 a.Println; 
 end. 
 Илова ва нест намудани элемент дар массив 
 Бигузор массиви дорои n – элемент дода шудааст. Талаб
 карда мешавад, ки элементи k-уми он нест карда шавад. Бигузор k
 рақами тартибии ягон элемент бошад, он гоҳ элементҳои массив
 чунин тағйир меёбанд: элементи k+-ум ҷойи элементи k-ум ва
 элементи k+m - ум ҷойи элементи k+m--умро ишғол мекунад.
 Барои хубтар шинос шудан ва дарк намудани ин матлаб, ҳамаи
 элементҳои массивро дар дохили як ҷадвал ба сурати зерин тасвир
 мекунем: 
 k k+ k+ k+ n- n 
 Бо ибораи д∙и∙∙гар, элементи k-ум с∙а∙∙рфи назар шуда, аз
 элемент k+-ум сар карда, ҳар як элемент як мавқеъ ба тарафи чап
 кӯчонида мешаванд. Дар натиҷа элементҳои массив n- то мешавад.
 Матни барнома: 
 program test; 
 var 
 x: array of integer; 
 i, k, n: integer; 
 begin 
 write('n:=');Read(n); 
 write('k:=');Read(k); 
 x:= new integer[n + ]; 
 writeln('Элементҳои массив пеш аз несткунӣ');
 for i:= to n do 
 begin 
 x[i]:= random(); 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end; 
 for i:= k to n - do 
 x[i]:= x[i + ]; 
 n -=; 
 writeln; 
 writeln('Элементҳои массив пас аз несткунӣ');
 for i:= to n do 
 writeFormat('x [{}]={}; ', i, x[i]); 
 x:= nil; 
 end. 
 Натиҷаи барнома шакли зеринро дорад: 
 n:= 
 k:= 
 Элементҳои массив пеш аз несткунӣ 
 x []=; x []=; x []=; x []=; x []=; x []=; x
 []=; x []=; x []=; x []=; 
 Элементҳои массив пас аз несткунӣ 
 x []=; x []=; x []=; x []=; x []=; x []=; x
 []=; x []=; x []=; 
 Барои нест кардани ягон элементе ё элементҳо аз массив,
 метавон аз функсияҳо низ истифода бурд. Ва ё ба ҳамин монанд, дар
 мавқеи лозимии массив метавон элементи нави илова намуд.
 Мисол. Барномае нависед, ки пас аз элементи якуми манфии
 массив адади -ро гузорад. 
 Барои ҳалли ин масъала амалҳои зерин иҷро карда мешаванд:
  мавқеи нахустини элементи мусбатро ёфта, бо k ишора мекунем;
  k элементи аввалаи массив бетағйир гузошта мешаванд;
  ҳамаи элементҳо сар карда аз рақами (k+)-ум ба тарафи рост як
 мавқеъ кӯчонида мешаванд; 
  дар ҷойи элементи (k+)-ум адади навишта мешавад.
 Матни барнома: 
 program test; 
 var 
 i, n, k, m: integer; 
 a: array [..] of integer; 
 begin 
 readln(n); 
 for i:= to n do 
 read(a[i]); 
 for i:= to n do 
 if a[i] < then 
 begin 
 k:= i; 
 break; 
 end; 
 for i:= n + downto k + do 
 a[i]:= a[i - ]; 
 a[k + ]:=; 
 for i:= to n + do 
 write(a[i], ' '); 
 readln; 
 end. 
 Ин барнома низ монанди барномаи пешина буда, фақат
 баръакси он амал мекунад. 
 Массивҳо бо зернависи рамзӣ 
 То ҳол массивҳое, ки истифода кардем, зернависи онҳо аз
 навъи бутун ё фосила иборат буд. Илова бар ин, рамзҳоро (фосилаи
 рамзҳоро) ҳамчун зернависи массив низ истифода кардан мумкин
 аст. Барои ба моҳияти ин навъ массивҳо сарфаҳм рафтан дастурҳои
 зеринро дар хотир мегирем: 
 var ch:array['A'..'D'] of char; 
 Ин дастур массиверо бо номи ch муаррифӣ мекунад, ки
 дорои чор элемент мебошад. Элементҳои ин массив иборатанда аз:
 ch['A'], ch['B'], ch['C'], ch['D']; 
 Мисол. Барномае нависед, ки дар сатри дода-шуда миқдори
 такроршавии ҳар як рамзро муайян кунад. 
 Матни барнома: 
 program test; 
 type 
 letter = 'A'..'Z'; 
 arr = array[letter] of integer; 
 var 
 S: string; 
 ch: char; 
 x: arr; 
 i, j, k, n, m: integer; 
 begin 
 for ch:= 'A' to 'Z' do 
 x[ch]:=; 
 writeln('Сатрро дохил кунед!'); 
 read(S); 
 for i:= to length(S) do 
 begin 
 ch:= upcase(S[i]); 
 if (ch >= 'A') and (ch <= 'Z') then 
 x[ch] +=; 
 end; 
 writeln('Рамз миқдори такроршавӣ'); 
 for ch:= 'A' to 'Z' do 
 if x[ch] <> then 
 writeln(ch:, x[ch]:); 
 end. 
 Натиҷа: 
 Сатрро дохил кунед! 
 Mo zaboni Pascal mekhonem. 
 Рамз миқдори такроршавӣ 
 A 
 B 
 C 
 E 
 H 
 I 
 K 
 L 
 M 
 N 
 O 
 P 
 S 
 Z 
 Оператори foreach 
 Ҳангоми кор кардан бо массивҳо баъзан зарурати коркарди
 ҳар як элементи массив пеш меояд. Масалан, барои ҳисоб намудани
 суммаи элементҳои массив зарур аст, ки ба ҳар як элемент муроҷиат
 карда шавад. Зарурати иҷрои ин амал ҳангоми ҳисоб намудани
 қимати миёнаи арифметикии элементҳои массив, ҷустуҷӯи
 элементи калонтарини массив ва амсоли инҳо пеш меояд. Барои
 ҳалли ин масъалаҳо метавон аз варианти дигари оператори даврии
 for, ки foreach ном дорад, истифода кард. Дар солҳои охир ин
 оператор қариб дар ҳамаи забонҳои барноманависӣ пайдо шудааст.
 Тарзи истифодаи оператори мазкур шакли зеринро дорад:
 foreach тағйирёбандаи_итератсионӣ in контейнер do
 оператор 
 foreach тағйирёбандаи_итератсионӣ:тип in контейнер do
 оператор 
 Дар ин ҷо тағйирёбандаи итератсионӣ, тағйирёбандаест, ки
 ҳар маротиба якто-якто элемент-ҳои массивро дида мегузарад. Ба
 сифати контейнер метавон, массивҳои динамикӣ, сатрҳо, маҷмӯҳо
 инчунин дилхоҳ контейнерҳое, ки интерфейси IEnumerator - ро
 (масалан, List<T>, Dictionary<T,T> ва ғайра) қаноат мекунонанд,
 истифода кард. Типи тағйирёбандаи итератсионӣ бояд бо типи
 контейнер мувофиқат кунад. Дар ин китоб танҳо истифодаи
 оператори foreach барои массивҳо мавриди баҳс қарор дода
 мешавад. 
 Оператори foreach дар ҳар итератсия як элементи массивро
 гирифта, дар тағйирёбандаи итератсионӣ нигоҳ медорад. Оператори
 мазкур то ба даст овардани ҳамаи элементҳои массив (контейнер)
 давом меёбад. 
 Тавре медонем, ҳангоми истифодаи оператори for барои
 иҷрои ягон амалиёт бо элементҳои массив, параметри он бояд дорои
 як қимати ибтидоӣ ва як қимати интиҳоӣ бошад ва он ба сифати
 зернависи массив истифода бурда мешавад. Аммо ҳангоми
 истифодаи оператори foreach баъзе аз ин амалҳо ба таври автоматӣ
 иҷро карда мешаванд. 
 Мисол. Барномае нависед, ки бо истифода аз оператори
 foreach суммаи элементҳои массивро ҳисоб кунад. 
 var 
 x: array of integer; 
 i, S, n: integer; 
 begin 
 write('n:=');Read(n); 
 Ҳар маротиба иҷроиши оператори давриро як итератсия (қадам) меноманд.
 x:= new integer[n]; 
 S:=; 
 writeln('Элементҳои массиви додашуда:'); 
 for i:= to n - do 
 begin 
 x[i]:= random(); 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end; 
 writeln; 
 foreach m: integer in x do 
 S += m; 
 writeln('S=', S); 
 x:= nil; 
 end. 
 Натиҷаи барнома шакли зеринро дорад: 
 n:= 
 Элементҳои массиви додашуда: 
 x []=; x []=; x []=; x []=; x []=; x []=;
 x []=; x []=; x []=; x []=; 
 S= 
 Барои аз дохили оператори foreach баромадан метавон аз
 оператори break истифода кард. 
 Бояд қайд кард, ки дар оператори foreach тағйирёбандаи
 итератсионӣ танҳо барои хандани элементҳои массив пешбинӣ
 шудааст. Аз ин рӯ, тавассути он наметавон ягон элементи массивро
 тағйир дод. 
 Муайян намудани андозаи массив 
 Барои муайян намудани миқдори элементҳои массив аз
 функсияи length() ва ё хосияти length метавон истифода кард. Тарзи
 истифодаи функсияи length() ва хосияти length мувофиқан дар поён
 оварда шудааст: 
 Функсияи Length(): Length(номи массив); 
 Хосияти Length: номи_массив.Length; 
 Ба ҳамин монанд, индексҳои массиви динами-кӣ аз оғоз
 гардида, ба Length- ба охир мерасад. Барои намуна, ба барномаи
 зерин диққат диҳед: 
 program test; 
 var 
 x: array of integer; 
 i, S, n: integer; 
 begin 
 write('n:=');Read(n); 
 x:= new integer[n]; 
 S:=; 
 writeln('Элементҳои массиви додашуда'); 
 for i:= to x.Length - do 
 begin 
 x[i]:= random(); 
 writeFormat('x [{}]={}; ', i, x[i]); 
 end; 
 x:= nil; 
 end. 
 Массивҳои навъи рамзӣ 
 То ҳол мо массивҳое, ки истифода кардем аз навъи ададӣ
 буданд. Илова бар ин, дар забони Паскал метавон массивҳоро аз
 навъи рамзӣ низ муаррифӣ кард. Бо истифода аз ин навъ массивҳо
 метавон сатрҳоро низ захира кард. Тарзи муаррифии ин навъ
 массивҳо чунин аст: 
 var x[..] of char; 
 Мисол. Массиве аз навъи char муаррифӣ намуда, сипас
 элементҳои онро аз ҳарфҳои калони алифбои забони лотинӣ пур
 кунед. 
 Матни барнома: 
 var 
 x: array[..] of char; 
 i: integer; 
 ch: char; 
 begin 
 for i:= to do 
 x[i]:= chr( + i); 
 for i:= to do 
 write(x[i], ' '); 
 end. 
 Дар ин ҷо аз функсияи chr истифода бурда шудааст, ки он
 адади додашударо ба символ табдил медиҳад. Баъдтар дар мавзӯи
 сатрҳо ин матлабро мавриди баҳс қарор хоҳем дод. 
 Натиҷаи барнома: 
 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 Қайд. Мувофиқи стандарти ASCII ҳар як рамз дорои коди
 хос мебошад. Масалан, коди ҳарфи А – и алифбои лотинӣ ба 
 баробар буда, коди ҳарфи B бошад, ба баробар аст ва ҳоказо.
 Массивҳо ба сифати аргументи зербарнома 
 Массивҳоро метавон ба сифати аргументи зербарнома низ
 истифода кард. Массивҳо бо ду роҳ ба зербарнома равон карда
 мешаванд. Агар массив аз рӯи қимат ба зербарнома равон карда
 шавад, ҳамаи элемантҳои он ба зербарнома нусхабардорӣ карда
 шуда, ҳар амале, ки болои элементҳои он дар зербарнома иҷро карда
 мешавад, ҳеҷ таъсир ба он элементҳо дар барномаи асосӣ
 намегузорад. Дар сурати ба зербарнома ҳамчун параметри
 тағйирёбанда равон кардани массив, суроғаи массив ба зербарнома
 равон карда мешавад ва ҳар тағйироте, ки бо элементҳои он дар
 зербарнома иҷро карда мешавад, дар барномаи даъватшаванда низ
 асари худро мегузорад. Барои сарфаҷӯии ҳофиза ҳангоми равон
 кардани массивҳо маслиҳат он аст, ки вай ҳамчун параметри
 тағйирёбанда равон карда шавад. 
 Пеш аз истифодаи массив ба сифати параметри зербарнома
 маслиҳат дода мешавад, ки аввал типе барои массив муаррифӣ карда
 шавад. 
 Мисоли. Зербарномае нависед, ки элементҳои ҷуфти
 массивро воҳид зиёд кунад. 
 Матни барнома: 
 program test; 
 const 
 n =; 
 type 
 simple = array[..n] of integer; 
 var 
 x: simple; 
 i: integer; 
 procedure threeIncArray(y: simple; m: integer);
 var 
 i: integer; 
 begin 
 for i:= to m do 
 if y[i] mod = then 
 y[i] +=; 
 Writeln('Элементҳои массив дар дохили зербарнома!');
 for i:= to m do 
 writeformat(' x [{}]={},', i, y[i]); 
 end; 
 //%%%%%%%%%%%%%%%%%%%%%% 
 begin 
 Writeln('Элементҳои массивро дохил кунед!'); 
 Writeln; 
 for i:= to n do 
 readln(x[i]); 
 Writeln('Элементҳои массив пеш аз даъвати 
 зербарнома!'); 
 for i:= to n do 
 writeformat(' x [{}]={},', i, x[i]); 
 Writeln; 
 threeIncArray(x, n); 
 Writeln; 
 Writeln('Элементҳои массив пас аз даъвати 
 зербарнома!'); 
 for i:= to n do 
 writeformat(' x [{}]={},', i, x[i]); 
 end. 
 Матн ва амалкарди зербарномаи овардашуда, хеле сода
 мебошад, аз ин рӯ ҳоҷат ба шарҳу тавзеҳ надорад. Ҳаминро
 хотирнишон кардан кифоя аст, ки дар барномаи асосӣ элементҳои
 массив дохил карда шуда, сипас ба зербарнома равон карда
 мешаванд. Дар зербарнома элементҳои ҷуфти массив воҳид зиёд
 карда шуда, як маротиба ба пуррагӣ ҳамаи элементҳои массив хориҷ
 карда мешаванд. Ҳар тағйироте, ки дар зербарнома ба элементҳои
 массив ба амал меояд, таъсири худро ба ҳамон элемент дар барномаи
 аслӣ намегузорад. Сабабаш дар он аст, ки дар ин мисол массив аз
 рӯӣ қимат ба зербарнома равон карда шудааст ва мубодилаи
 иттилоот яктарафа мебошад. Натиҷаи барнома шакли зеринро
 дорад: 
 Элементҳои массивро дохил кунед! 
 Элементҳои массив пеш аз даъвати зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x []=,
 x []=, x []=, x []=, 
 Элементҳои массив дар дохили зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x []=,
 x []=, x []=, x []=, 
 Элементҳои массив пас аз даъвати зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x []=,
 x []=, x []=, x []=, 
 Барои ба зербарнома ҳамчун параметри тағйирёбанда равон
 кардани массив, дар параметри зербарнома пеш аз тағйирёбандаи
 навъи он калимаи var навишта мешавад. Ба сифати намуна мисоли 
 - ро бо чунин навъ аз сари нав менависем. 
 Матни барнома: 
 program test; 
 const 
 n =; 
 type 
 simple = array[..n] of integer; 
 var 
 x: simple; 
 i: integer; 
 procedure threeIncArray(var y: simple; m: integer);
 var 
 i: integer; 
 begin 
 for i:= to m do 
 if y[i] mod = then 
 y[i] +=; 
 Writeln('Элементҳои массив дар дохили зербарнома!');
 for i:= to m do 
 writeformat(' x [{}]={},', i, y[i]); 
 end; 
 begin 
 Writeln('Элементҳои массивро дохил кунед!'); 
 Writeln; 
 for i:= to n do 
 readln(x[i]); 
 Writeln('Элементҳои массив пеш аз даъвати зербарнома!');
 for i:= to n do 
 writeformat(' x [{}]={},', i, x[i]); 
 Writeln; 
 threeIncArray(x, n); 
 Writeln; 
 Writeln('Элементҳои массив пас аз даъвати зербарнома!');
 for i:= to n do 
 writeformat(' x [{}]={},', i, x[i]); 
 end. 
 Натиҷаи кори барнома: 
 Элементҳои массивро дохил кунед! 
 Элементҳои массив пеш аз даъвати зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x
 []=, x []=, x []=, x []=, 
 Элементҳои массив дар дохили зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x
 []=, x []=, x []=, x []=, 
 Элементҳои массив пас аз даъвати зербарнома! 
 x []=, x []=, x []=, x []=, x []=, x []=, x
 []=, x []=, x []=, x []=, 
 Мураттабсозӣ ва ҷустуҷӯии элементҳо дар массив 
 Мураттабсозӣ ва ҷустуҷӯи элементе дар дохили як маҷмӯъ
 дар аксар ҷойҳо, хусусан дар системаҳои иттилоотии ҷустуҷӯӣ,
 тиҷоратӣ, ёфтани луғат аз фарҳанг, ёфтани китоб аз китобхона ва
 ғайра корбурди зиёде дорад. Мақсади асосии мураттабсозӣ (sorting)
 аз рӯи қоидаи муайяне (аз рӯи алифбо, ё зиёдшавии қимат) ба тартиб
 гузоштани додаҳо(дар массив, элементҳо) мебошад, ки он ҷустуҷӯи
 элементи заруриро осон мегардонад. Чунончи, агар додаҳо аз рӯи
 қоидаи муайяне дастабандӣ нашуда бошанд, ёфтани як унсури
 муайян дар дохили онҳо душвор, ҳатто имконнопазир мегардад.
 Масалан, фарҳанг (dictionary) - ро, ки дар он луғатҳои зиёде
 мавҷуданд, пеши назар меорем. Агар дар фарҳанг калимаҳо аз рӯи
 алифбо ҷо ба ҷо нашуда бошанд, барои ҷустуҷӯи калимаи мавриди
 ниёз чӣ қадар вақт беҳуда сарф мешавад? Яъне, барои ёфтани он
 калима зарур мешавад, ки ҳамаи саҳифаҳои фарҳангро аз назар
 гузаронем. Агар дар фарҳанг калимаҳо аз рӯи алифбо ҷо ба ҷо шуда
 бошанд, пас, барои ёфтани калимаи мавриди ниёз, танҳо саҳифаи
 лозимиро дидан кифоя аст. Аз ин рӯ аввал алгоритмҳои
 мураттабсозӣ ва баъд алгоритмҳои ҷустуҷӯиро дида мебароем.
 Гурӯҳбандии равишҳои мураттабсозӣ 
 Алгоритмҳои мураттабсозии элементҳои массив ба ду гурӯҳ
 ҷудо карда мешаванд: 
 дар хотираи компютер қарор дода мешаванд; 
 мавриди назар дар ҳофизаҳои беруна нигоҳ дошта
 мешаванд. Барои ин гуна додаҳо истилоҳи файл (File)
 истифода мегардад. Ин мафҳум дар мавзӯҳои оянда
 мавриди баҳс қарор мегирад. 
 Мураттабсозии дохилӣ аз рӯи алгоритм ё равишҳои зерин
 амалӣ карда мешавад: 
 Мураттабсозии ҳубобӣ (buble sort) 
 Яке аз содатарин равишҳои мураттабсозӣ мураттабсозии
 ҳубобӣ мебошад. Гарчанде дар муқоиса нисбат ба равишҳои дигар
 ҷойи поёнтареро ишғол мекунад, вале ин равиш хело сода буда, ба
 истифодабаранда фаҳмо мебошад. Вожаи bubble мафҳуми илмӣ
 набуда, танҳо дар луғат ба маънои ҷӯшидан ва ғулғула кардан
 омадааст. Вақте ки зарфи обро ҷӯшонидем, ҳубобчаҳои ҳаво, ки дар
 об мавҷуданд, дар сатҳи об ҳаракат мекунанд. Дар равиши мазкур
 элементи калонтарин ба ҳубобчаҳои зарфи об монанд, ҳар маротиба
 ба самти боло ё интиҳо ҳаракат мекунад. Аз ин ҷост, ки ин навъ
 мураттабсозиро мураттабсозии ҳубобӣ номидаанд. 
 Дар равиши мураттабсозии мазкур элементи якум ба
 элементи дуюм муқоиса карда мешавад. Чунончи, агар эементи
 якум аз дуюм калонтар бошад, ҷойи онҳо иваз карда мешавад.
 Сипас, ин амал дар мавриди элементи дуюму сеюм ва ҳамин тариқ,
 барои ҳамаи элементҳои боқимонда сурат мегирад, яъне дар охир
 элементи n--ум бо элементи n-ум муқоиса карда мешавад, агар
 элементи n-–ум аз элементи n-ум калон бошад, ҷояшон иваз карда
 мешавад. Вақте ки ин амал як маротиба иҷро карда шуд, элементи
 калонтарин дар охир қарор мегирад. Акнун фарз мекунем, ки
 элементи n-уми массив вуҷуд надорад. Амали пештар иҷро
 кардаамонро ба (n-) элементи боқимонда якбор иҷро карда,
 элементи калонтаринро дар ҷойи (n-)-ум қарор медиҳем. Агар ин
 амалро (n-) маротиба такрор карда, ҳар маротиба як хонаро нодида
 гирем, дар охир элементҳои массив ба тартиби зиёдшавиашон ба
 намуди зерин ҷо ба ҷо карда мешаванд: 
 Агар хоҳем, ки элементҳои массив бо тартиби камшавиашон
 (отсортировать) ҷойги(cid:)р[ к]а≤рд(cid:)а [ш]ав≤ан⋯д,≤ ҳа(cid:)н[г(cid:)о]ми муқоисакунӣ ҷойи
 элементи хурдтаринро аз мавқеи a[i-] ба a[i] баръакси равиши
 боло иваз мекунем. Дар ин сурат элементҳои массив ба сурати зерин
 ҷо ба ҷо карда мешаванд. 
 Мисол. Барномае нависед, ки элементҳои массиви 
 додашударо аз рӯи (cid:)ра[ви]ш≥и (cid:)ҳу[бо]б≥и ⋯бо ≥та(cid:)р[т(cid:)и−би ]зиёдшавиашон ҷо ба
 ҷо гузорад. 
 Матни барнома: 
 program test; 
 const 
 N =; 
 var 
 a: array [..N] of integer; 
 begin 
 for var i:= to N do 
 a[i]:= Random(); 
 writeln('Элементҳои массиви a пеш аз мураттабкунӣ: ');
 for var i:= to N do 
 write(a[i], ' '); 
 writeln; 
 for var i:= n downto do 
 for var j:= to i - do 
 if a[j + ] < a[j] then 
 Swap(a[j + ], a[j]); 
 writeln('лементҳои массиви a пас аз мураттабкунӣ: ');
 for var i:= to N do 
 write(a[i], ' '); 
 end. 
 Дар ин ҷо аввал массиве аз навъи бутун, ки дорои n (n=)
 элемент мебошад, муаррифӣ карда шудааст. Баъд элементҳои
 массив аз ададҳои тасодуфӣ пур карда шуда, бо ёрии оператори
 хориҷкунӣ хориҷ карда шудаанд. Сипас, ду давр истифода шудааст.
 Даври якум шароит фароҳам меоварад, ки (n-)-маротиба барои ҳар
 як элементи массив амали муқоисакуни иҷро карда шавад. Дар
 аввал элементи якум (бо индекси ) бо элементи дуюм муқоиса
 карда мешавад. Агар он аз элементи дуюм калон бошад, ҷойи
 қимати онҳо иваз карда мешавад ва ҳоказо. Баъди иҷрои амалҳои
 мазкур элементҳои массив бори дигар ба сурати зерин хориҷ карда
 мешаванд: 
 Элементҳои массиви a пеш аз мураттабкунӣ: 
 Элементҳои массиви a пас аз мураттабкунӣ: 
 Мураттабсозӣ бо равиши интихоб (selection sort)
 Моҳияти ин навъ мураттабсозӣ аз он иборат аст, ки дар
 миёни элементҳои массив элементи калонтарин ҷустуҷӯ карда
 шуда, ҷойи он ба элементи охирон иваз карда мешавад. Баъд аз он
 фарз карда мешавад, ки элементи n-ум вуҷуд надорад ва аз байни
 (n-)-элементи боқимонда калонтаринаш ҷустуҷӯ карда мешавад.
 Ҳангоми ба даст омадани он ҷояш бо элементи (n-)-ум иваз карда
 мешавад. Амали мазкур n- маротиба такрор карда шуда, дар охир
 танҳо ду элемент якум ва дуюм боқӣ мемонад, ки аз онҳо
 калонтаринаш ба хонаи дуюм ҷой дода мешавад. Ба ҳамин тариқ,
 элементҳои массив ҷо ба ҷо карда мешаванд. 
 Бартарии ин равиш назар ба равиши ҳубобӣ дар он аст, ки
 дар ин навъ мураттабсозӣ ҷойивазкунии элементҳо камтар ба амал
 меояд, зеро дар ин равиш дар ҳар такрор фақат як маротиба
 ҷойивазкунӣ ба амал меояд. 
 Мисол. Барномаи усули ҷо ба ҷо гузории интихоб. 
 Матни барнома: 
 program test; 
 const 
 N =; 
 var 
 a: array [..N] of integer; 
 K: integer; 
 IsFound: boolean; 
 begin 
 for var i:= to N do 
 a[i]:= Random(); 
 writeln('Элементҳои массиви a пеш аз мураттабкунӣ:: ');
 for var i:= to N do 
 write(a[i], ' '); 
 writeln; 
 for var i:= to N - do 
 begin 
 var min:= a[i]; 
 var ind:= i; 
 for var j:= i + to N do 
 if a[j] < min then 
 begin 
 min:= a[j]; 
 ind:= j; 
 end; 
 a[ind]:= a[i]; 
 a[i]:= min; 
 end; 
 writeln('Элементҳои массиви a пас аз мураттабкунӣ:');
 for var i:= to N do 
 write(a[i], ' '); 
 writeln; 
 end. 
 Мураттабсозии гузоришӣ (insertion sort) 
 Бигузор массиви а дорои n элемент бошад, яъне. Барои ба тартиб гузоштани элементҳои массиви мазкур дар
 a,a,a,∙∙∙,an 
 аввал ду элементро мегирем, яъне ва фарз мекунем, ки
 онҳо мураттабанд. Баъд аз он, аъзои сеюм, яъне -ро интихоб
 карда, онро нисбат ба ду аъзои aа в вваал aа дар ҷойи муносибе
 мегузорем, ки маҷмӯи дорои се элемент мураттаб ҳоaс ил мегардад.
 Ба ҳамин монанд, то элементи n-ум давом дода мешавад, ки дар
 охир ҳамаи элементҳои массив ҷо ба ҷо карда мешаванд. Барои ин
 матлабро пурра аз худ кардан массиви дорои -элементро дида
 мебароем. 
 Элементҳои массиви додашуда: - ->,,,;
 қадами: - ->,,,; 
 қадами: --->,,,; 
 қадами: -->,,,; 
 Тавре ки дида мешавад, барои мураттабсозии чор элементи
 массив -итератсия истифода карда шудааст. Барои пурратар фаҳмо
 шудан, массиви дорои элементро пеши назар меорем ва фарз
 мекунем, ки элементи он мураттаб шуда, элементи шашум аз
 элементи чорум хурд (ё баробар ) аст. Ба тағйирёбандаи иловагие
 элементи шашумро бахшида, баъд онро дар ҷойи чорум қарор
 медиҳем. Ба ҳамин монанд, ҳар як элементҳои номураттаби массив
 ба элементҳои ҷойи муносиб иваз карда мешаванд. Дар ҷадвали
 поён ин равиш оварда шудааст. 
 Мисол. Барномаи усули мураттабкунии гузоришӣ навишта
 шавад. 
 Матни барнома: 
 program test; 
 var 
 a: array[..] of integer; 
 i, j, n, sred, left, right, tmp: integer; 
 begin 
 write('Андозаи массивро дохил кунед: '); 
 readln(n); 
 writeln('Элементҳои массив пеш аз мураттабсозӣ:');
 for i:= to n do 
 begin 
 a[i]:= random() +; 
 write(a[i]:); 
 end; 
 writeln; 
 for i:= to n do 
 if a[i - ] > a[i] then 
 begin 
 tmp:= a[i]; 
 left:=; 
 right:= i -; 
 repeat 
 sred:= (left + right) div; 
 if a[sred] < tmp then 
 left:= sred + 
 else right:= sred -; 
 until left > right; 
 for j:= i - downto left do 
 a[j + ]:= a[j]; 
 a[left]:= tmp; 
 end; 
 writeln('Элементҳои массив пас аз мураттабсозӣ:');
 for i:= to n do 
 write(a[i]:); 
 end. 
 Мураттабсозии tag (tag sort) 
 Пештар мо алгоритми мураттабсозиеро бо номи 
 мураттабсозии ҳубобӣ дида баромадем. Акнун фарз мекунем, ки
 массиви дорои андозаи бузург дода шуда бошад. Масалан, дорои
 млн. элемент. Барои ҳар як элементро муқоиса намудан вақти зиёд
 сарф мешавад. Барои ин навъ массивҳо ва массивҳое, ки элементҳои
 онҳо сатрҳо, рамзҳо ва сохторҳо мебошанд, равиши нави
 мураттабсозиро ба намуди tag sort истифода бурда мешавад.
 Моҳияти ин усул аз он иборат аст, ки аввал як массиви нав
 муаррифӣ карда шуда, элементҳои массиви асосӣ ба он бахшида
 мешаванд. Сипас, дар ҳар куҷое, ки ҳоҷати ду элементро ба
 ҳамдигар муқоиса намудан пеш ояд, ин амал хеле сода анҷом
 мегирад, зеро ба ин усул андозаи массив хурд карда мешавад.
 Мантиқи кори равиши мазкур ҳам монанди равиши ҳубобӣ
 мебошад. 
 Мисол. Барномаи усули мураттабкунии тег навишта
 шавад. 
 Матни барнома: 
 program test; 
 const 
 n =; 
 type 
 arr = array[..n] of integer; 
 var 
 a, b: arr; 
 i, j, k, x: integer; 
 begin 
 writeln('Элементҳои массив пеш аз мураттабсозӣ');
 for i:= to n do 
 begin 
 a[i]:= random(); 
 write(a[i], ' '); 
 end; 
 writeln; 
 for k:= to n do 
 b[k]:= k; 
 for i:= to n do 
 for j:= to n - i do 
 if a[b[j]] > a[b[j + ]] then 
 begin 
 x:= b[j]; 
 b[j]:= b[j + ]; 
 b[j + ]:= x; 
 end; 
 writeln('Элементҳои массив пас аз мураттабсозӣ');
 for i:= to n do 
 write(a[b[i]], ' '); 
 end. 
 Мураттабсозии зуд (quick sort) 
 Бигузор элементҳои массив ба сурати ҷадвале бузурге дода
 шуда бошад. Барои онҳоро мураттаб намудан равиши наве бо номи
 мураттабсозии босуръатро дида мебароем.Моҳияти ин навъ мурат-
 табсозӣ аз он иборат аст, ки аввал як элементро аз ҷадвали додашуда
 интихоб намуда, элементҳои боқимондае, ки аз он калонанд, дар
 тарафи рости он ва элементҳои боқимондаро бошад, дар тарафи
 чапи он қарор медиҳем. Дар натиҷа ҷадвали мо ба ду ҷадвал тақсим
 карда мешавад. Амали мазкурро бо он ҷадвалҳо низ иҷро мекунем,
 ки дар натиҷа ҷадвалҳои нав ҳосил карда мешаванд. Ин амалро то
 замоне иҷро мекунем, ки элементҳои ҷадвал ба таври 
 зиёдшавиашон ҷо ба ҷо гузошта шаванд. 
 Элементе, ки дар ибтидо мо интихоб кардем, шояд баъзе
 хонандагон дар бораи чӣ тавр интихоб кардани он суол кунанд. Дар
 аввал ҷадвалро ба намуди уфуқӣ тасаввур карда, хонаи аввал ё
 самти чапи онро бо L ва хонаи охир ё самти рости онро бо К ишора
 мекунем, яъне 
 Ду тағйирёбандаи i ва j интихоб намуда, тағйирёбандаи i-ро
 ба L ва тағйирёбандаи j-ро ба R баробар қарор дода, элементи
 миёнаро чунин интихоб мекунем: 
 Баъд аз он то замоне (маLв+қеRе), ки a[i]<x ва i<R аст,
 (cid:) = a[ ] 
 тағйирёбандаи i-ро ба тарафи рост ҳаракат медиҳем. Ин амалро
 барои тағйирёбандаи j низ иҷро мекунем, яъне то замони a[j]>x
 будан тағйирёбандаи j-ро ба тарафи чап ҳаракат медиҳем, баъд аз
 он ҷойи a[i]-ро ба a[j] иваз мекунем, сипас ба тағйирёбандаи i як
 воҳид илова намуда, аз тағйирёбандаи j як воҳид кам мекунем ва то
 замони -шудан ин амал такрор карда мешавад. Элементеро, ки
 ба сифати элементи мобайнӣ интихоб намуда будем, дар дохили
 ҷадвал ҳ(cid:)а≤ра(cid:)кат дода, дар охир дар ҷойи худ қарор медиҳем. Ҳамин
 тариқ, элементҳои аз он хурдбуда дар тарафи чапи он ва элементҳои
 аз он калон буда дар тарафи росташ қарор мегиранд. Дар натиҷа,
 элементҳои массив мураттаб карда мешаванд. 
 Мисол. Барномае нависед, ки элементҳои массиви 
 додашударо бо равиши мураттабсозии босуръат (quicksort)
 мураттаб созад. 
 Матни барнома: 
 program test; 
 const 
 n =; 
 type 
 arr = array[..n] of integer; 
 var 
 A: arr; 
 first, last, i: integer; 
 {протcедура барои сортировка} 
 procedure quicksort(var mas: arr; first, last: integer);
 var 
 f, l, mid, count: integer; 
 begin 
 f:= first; 
 l:= last; 
 mid:= mas[(f + l) div ]; 
 repeat 
 while mas[f] < mid do inc(f); 
 while mas[l] > mid do dec(l); 
 if f <= l then {ҷойивазкунии элементҳо} 
 begin 
 count:= mas[f]; 
 mas[f]:= mas[l]; 
 mas[l]:= count; 
 inc(f); 
 dec(l); 
 end; 
 until f > l; 
 if first < l then quicksort(A, first, l); 
 if f < last then quicksort(A, f, last); 
 end; 
 begin 
 write('Элементҳои массив пеш аз мураттабсозӣ: ');
 for i:= to n do 
 begin 
 A[i]:= random(); 
 write(A[i]:); 
 end; 
 first:=; last:= n; 
 quicksort(A, first, last); 
 writeln; write('Элементҳои массив пас аз мураттабсозӣ:');
 for i:= to n do 
 write(A[i]:); 
 end. 
 Ҷустуҷӯ кардан (searching) 
 Баъзан лозим меояд, ки дар дохили маҷмӯи элементҳо
 элементеро ҷустуҷӯ кунем. Масалан, ҷустуҷӯи калима дар фарҳанг.
 Барои ба даст овардани ягон калима ҷойи лозимии фарҳангро
 ҷустуҷӯ кардан кифоя аст. Барои ба таври электронӣ ҷустуҷӯ кардан
 якчанд алгоритм ё роҳҳое мавҷуд мебошанд, ки онҳо имконият
 медиҳанд то аз дохили маҷмӯъ элементи лозимӣ дарёфт карда
 шавад. Алгоритмҳои асосии ҷуcтуҷӯӣ инҳо мебошанд: 
 Ҷуcтуҷӯи хаттӣ 
 Яке аз роҳҳои содатарини ҷуcтуҷӯи элемент дар дохили
 массив ё ҷадвали номураттаби додаҳо онаст, ки элементи мавриди
 назарро бо элементҳои якум, дуюм ва ҳоказо n-ум муқоиса намоем.
 Ҳангоми муқоисакунӣ агар элементи мавриди назар ба ягон
 элементи маҷмӯъ мувофиқат кунад, он гоҳ рақами тартибии онро ба
 хотир гирифта, амали ҷуcтуҷӯро хотима мебахшад. Ва дар ҳолати
 акс, пайғоми муносибе хориҷ карда мешавад. 
 Мисол. Функсияе нависед, ки элементи дода-шударо дар
 дохили массив ҷустуҷӯ намуда, ҳангоми пайдо намудани он рақами
 тартибиашро баргардонад. 
 Матни барнома: 
 program test; 
 type 
 Arr = array[..] of integer; 
 var 
 key, i, N: integer; 
 A: Arr; 
 function lineSearch(A: Arr; key: integer): integer;
 begin 
 lineSearch:= -; 
 for var i:= to N do 
 if A[i] = key then 
 begin 
 lineSearch:= i; 
 exit; 
 end; 
 end; 
 begin 
 write('Андозаи массив: '); readln(N); 
 write('Элементи ҷустуҷушаванда: '); read(key);
 write('Массиви додашуда: '); 
 for i:= to N do 
 begin 
 A[i]:= random(); 
 write(A[i], ' '); 
 end; 
 writeln; 
 if (lineSearch(A, key) = -) then 
 writeln('Элемент вуҷуд надорад.') 
 else 
 writeln('Рақами элемент: ', lineSearch(A, key));
 end. 
 Ҷуcтуҷӯи дуӣ ( binary search) 
 Яке аз равишҳои маъмули дигари ҷуcтуҷӯи дар дохили
 ҷадвал (дар ин ҷо массив) равиши дуӣ ба ҳисоб меравад. Равиши
 мазкур дар мавриде, ки элементҳои массив мураттабанд, ба кор
 бурда мешавад. Ин равиш дар муқоиса нисбат ба равиши хаттӣ
 саҳеҳтар ва тезтар мебошад. 
 Алгоритми ин равиш чунин аст: дар аввал ибтидо ва интиҳои
 массивро ба тағйирёбандаҳои L ва m бахшида, элементи мавриди
 назарро бо элементи муқоиса мекунем. Агар онҳо бо
 ҳамдигар баробар бошад, па L с + о h н пайдо шудааст ва агар элементи
 m = 
 мавриди назар аз элементи m-ум калонтар бошад, ба тағйирёбандаи
 h қимати m+ бахшида мешавад. Дар ҳолати элементи мазкур аз
 элементи m-ум хурд будан, ба h қимати m- бахшида, элементи
 мавриди назарро ба элементи ёфтаамон (элементи миёнҷо) муқоиса
 мекунем. Ин амалро то замоне идома медиҳем, ки шарти
 дуруст бошад. Баъд амали мазкур хотима меёбад ва элементи
 мавриди назар ба чоп дода мешавад. L ≤ h 
 Мисол. Функсияе нависед, ки аз элементҳои массиви бо ягон
 равиш мураттабшуда, элементи лозимиро бо равиши дуӣ ҷустуҷӯ
 намуда натиҷаро ба чоп диҳад. 
 Матни барнома: 
 program test; 
 type 
 Arr = array[..] of integer; 
 var 
 key, i, N: integer; 
 A: Arr; 
 function lineSearch(A: Arr; key: integer): integer;
 begin 
 lineSearch:= -; 
 for var i:= to N do 
 if A[i] = key then 
 begin 
 lineSearch:= i; 
 exit; 
 end; 
 end; 
 begin 
 write('Андозаи массив: '); readln(N); 
 write('Элементи ҷустуҷушаванда: '); read(key); 
 write('Массиви додашуда: '); 
 for i:= to N do 
 begin 
 A[i]:= random(); 
 write(A[i], ' '); 
 end; 
 writeln; 
 if (lineSearch(A, key) = -) then 
 writeln('Элемент вуҷуд надорад.') 
 else 
 writeln('Рақами элемент: ', lineSearch(A, key));
 end. 
 Тавре дида мешавад, бо даъвати функсияи Binarysearch()
 элементи лозимӣ аз массив, ҷустуҷӯ карда шуда, рақами артибии он
 баргардонида шудааст. 
 Массивҳои бисёрченака 
 Тавре қаблан гуфтем, массивҳо якченака дученака ва n-
 ченака мешаванд. Массивҳои бисёрченака низ монанди массивҳои
 якченака муаррифӣ карда мешаванд, вале фарқияти дар он аст, ки
 бузургии (ҳар як ченак) ченакҳои массив дар дохили як қавси
 квадратӣ тавассути аломати вергул навишта мешаванд. Тарзи
 муаррифӣ намудани чунин массивҳо шакли зеринро дорад:
 var array_Name:array[size,size,,size n] of data_type
 Дар ин ҷо data_type навъи массив, array_Name-номи массив
 ва size, size, size n мувофиқан ан⋯доза (ченак)-ҳои якум, дуюм
 ва ҳоказо n-ум мебошанд. Дар ин ҷо андоза гуфта, ҳудуди поёнӣ ва
 ⋯, 
 болоии индексҳои массив ба назар дошта мешаванд. Барои ба
 массивҳои n-ченака шинос шудан ҳолати n= -ро дида мебароем.
 Бигузор ба мо ҷадвале дорои n- сатр ва m –сутун дода шуда бошад.
 Дар ин ҷо n-миқдори сатрҳо ва m-миқдори сутунҳо мебошад. Барои
 ба ҳар як элементи ин ҷадвал дастёб шудан, зарурати донистани
 индеки он пеш меояд. Аз нуқтаи назари математика массивҳои
 дученака ин матритсаи дорои n сатр ва m сутун мебошад. Ҳангоми
 n= ва m= будан, матритса шакли зеринро мегирад: 
 a a a 
 Тавре дида мешава[aд, дарa и н ҷaо ҳ]ар як элементи матритса
 дорои ду зернавис буда, яaк е ашa н ишaо н диҳандаи сатр ва дигараш
 нишондиҳандаи сутун мебошад. Масалан, барои элементи сеюми
 сатри дуюмро ба тағйирёбандаи t бахшидан чунин менависем:
 t=. Дар ин ҷо адади нишондиҳандаи сатр ва бошад,
 нишондиҳандаи сутун мебошад. 
 (cid:) 
 Тарзи муаррифӣ намудани массиви дученака шакли зеринро
 дорад: 
 var array_Name [..n,..m]: array of data_type
 Бигузор n= ва m= бошад, он гоҳ мастритсаи a, ки аз навъи
 бутун буда, дорои n сатр ва m сутун мебошад, ба шакли зерин
 муаррифӣ карда мешавад: 
 var a:array[..n,..m]:of integer 
 Агар массиви а-ро, ки индесҳои он сар карда аз рақамгузорӣ
 шудаанд, ҳамчун ҷадвали дорои n сатр ва m сутун пеши назар орем,
 он шакли зеринро мегирад: 
 Дар ҳолати умумӣ массиви дорои n-сатр ва m сутунро
 массиви n бар m (n- in-m array) мегӯянд. Массивҳои сеченака,
 чорченака ва ғайра низ ҳамин тавр муаррифӣ карда мешаванд.
 Корбурди ин гуна массивҳо барои истифодабарандаи одӣ камтар
 аст, аз ин рӯ, онҳоро сарфи назар карда, фақат массивҳои
 дученакаро дида мебароем. 
 Қайд. Дар забони Паскал индекси (зернависи) элементҳои
 массиви ду ченака низ метавонад аз ва ё оғоз гарданд.
 Сохтани тип барои массивҳои дученака 
 Массивҳои дученакаро низ метавон ба намуди муқаррарӣ
 муаррифӣ намуд ва ё аввал типи массив сохта, сипас онро аз он типи
 сохташуда муаррифӣ кард. Намуди муқаррарии муаррифии
 массивҳои дученакаро алакай дида баромадем. Тип барои
 массивҳои дученака низ монанди массивҳои якченака сохта
 мешавад. Ба дастури зерин диққат диҳед: 
 type matr=array[..n,..m]:of integer; 
 Тавассути ин дастур барои массиви дученакаи навъи бутун,
 ки дорои n сатр ва m сутун мебошад, бо номи matr тип сохта
 шудааст. Пас аз сохтани тип тағйирёбандаҳои лозимии массиви
 дученака аз ин навъ муаррифӣ карда мешаванд. 
 var x,y,z:matr; 
 Дар ин ҷо массивҳои дученакаи x, y ва z аз навъи matr
 муаррифӣ карда шудаанд. Ба ҳамин монанд, массивҳои дученакаи
 дигар навъ низ муарифӣ карда мешаванд. 
 Ба массивҳои дученака бахшидани қимати аввала
 Монанди массивҳои якченака ба массивҳои дученака низ
 метавон ҳангоми муаррификунӣ қимати аввала бахшид. Масалан:
 var a: array of array of integer:= ((,,),(,,));
 агар ин массивро ба намуди ҷадвал тасвир кунем, он гоҳ шакли
 зеринро мегирад: 
 дар ин ҷо: 
 array[][]=, array [][]=,array [][]=
 array [][]=, array[][]=, array [][]=
 Илова бар ин, тарзи муаррификунӣ, элементҳои ҳар як сатр
 метавонанд, дар дохили як қавс навишта шаванд: 
 var a: array of array of integer:= ( 
 (,,), 
 (,,) 
 ); 
 Ба ғайр аз ин метавон аввал типи массиви дученакаро
 муаррифӣ карда, сипас массивро аз он тип ҳамчун доимӣ ба қимати
 аввала эълон кард: 
 type mas=array[..,..] of integer; 
 const a: mas=( 
 (-,-,), 
 (,,), 
 (-,,) 
 ); 
 Истифодаи массивҳои дученака 
 Аз нуқтаи назари математика, тавре қаблан гуфтем,
 массивҳои дученакаро матритса мегӯянд. Аз ин рӯ, ба ҷои массиви
 дученака аксаран калимаи матритса истифода бурда мешавад.
 Матритса ин ҷадвали дорои n-сатр ва m-сутун мебошад. Одатан
 рақами сатр бо i ва рақами сутун бо j ишора карда мешавад. Ба
 намуди пешфарз зернавис (индекс) - и массивҳои дученакаи статикӣ
 аз ва зернависи массивҳои дученакаи динамикӣ аз оғоз мегардад.
 Амали дохилкунӣ ва хориҷкунии массивҳои дученака дар дохили
 ду ҳалқаи такрорӣ, ки якеаш ифодакунандаи сатр ва дигараш
 ифодакунандаи сутун мебошад, иҷро карда мешавад. 
 Мисоли. Барномае нависед, ки элементҳои матритсаро
 дохил намуда, сипас ба сурати ҷадвал хориҷ намояд. 
 program test; 
 const 
 n =; m =; 
 var 
 a: array[..n,..m]of integer; 
 i, j: integer; 
 begin 
 for i:= to n do 
 for j:= to m do 
 read(a[i, j]); 
 writeln('Matrix'); 
 for i:= to n do 
 begin 
 for j:= to m do 
 write(a[i][j], ' '); 
 writeln; 
 end; 
 end. 
 Натиҷаи барнома ба сурати зерин аст: 
 Matrix 
 _ 
 Мисоли. Барномае нависед, ки ҳосили зарби элементҳои
 матритсаро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 type 
 matrix = array [..,..] of integer; 
 procedure dokhilkuni(var a: matrix; n, m: integer );
 var 
 i, j: integer; 
 begin 
 for i:= to n do 
 for j:= to m do 
 a[i, j]:= random(); 
 end; 
 procedure print(var a: matrix; n, m: integer);
 var 
 i, j: integer; 
 begin 
 for i:= to n do 
 begin 
 for j:= to m do 
 write(a[i, j]: ); 
 writeln; 
 end; 
 end; 
 var 
 a: matrix; 
 i, j, n, m: integer; 
 p: longint; 
 begin{барномаи асосӣ} 
 writeln('андозаи матритсаро дохил кунед:'); 
 readln(n, m); 
 dokhilkuni(a, n, m); 
 print(a, n, m); 
 p:=; 
 for i:= to n do 
 for j:= to m do 
 if a[i, j] <> then p:= p * a[i, j]; 
 writeln( p ); 
 end. 
 Мисоли. Барномае нависед, ки ҳосили зарби ду матритсаи
 квадратиро ҳисоб кунад. 
 Матни барнома: 
 program test; 
 type 
 matrix = array [..,..] of integer; 
 procedure dokhilkuni(var a: matrix; n: integer );
 var 
 i, j: integer; 
 begin 
 for i:= to n do 
 for j:= to n do 
 a[i, j]:= random(); 
 end; 
 procedure print(var a: matrix; n: integer); 
 var 
 i, j: integer; 
 begin 
 for i:= to n do 
 begin 
 for j:= to n do 
 write(a[i, j]: ); 
 writeln; 
 end; 
 end; 
 procedure Mult(const a, b: Matrix; var c: Matrix; n: integer);
 var 
 i, j, k, cc: integer; 
 begin 
 for i:= to n do 
 for j:= to n do 
 begin 
 cc:=; 
 for k:= to n do 
 cc:= cc + a[i, k] * b[k, j]; 
 c[i, j]:= cc; 
 end; 
 end; 
 var 
 a, b, c: matrix; 
 n: integer; 
 begin{барномаи асосӣ} 
 writeln('Қимати n-ро дохил кунед:'); 
 readln(n); 
 dokhilkuni(a, n); 
 dokhilkuni(b, n); 
 print(a, n); 
 writeln; 
 print(b, n); 
 writeln; 
 mult(a, b, c, n); 
 print(c, n); 
 end. 
 Массивҳои дученакаи динамикӣ 
 Монанди массивҳои якченака, массивҳои дученакаро низ
 метавон ба сурати динамикӣ муаррифӣ ва истифода кард. Дар
 PascalABC.NET матритсаҳои динамики ба шакли зерин муаррифӣ
 карда мешаванд: 
 var номи матритса: array [,] of тип элементҳо
 Барои ҷудо намудани ҳофизаи массивҳои динамикӣ аз
 оператори new истифода бурда мешавад: 
 var b: array [,] of real; 
 begin 
 b:= new real[,]; 
 end. 
 Ҳангоми ҷудо намудани ҳофиза барои матритсаҳо низ
 метавон ба он ҳо қимати аввала бахшид. Ба барномаи зерин диққат
 диҳед: 
 program test; 
 const 
 n =; m =; 
 var 
 a: array [,] of integer; 
 i, j: integer; 
 begin 
 a:= new integer[, ] ((,, ), (,, ), (,, ), (,, ));
 for i:= to n - do 
 begin 
 for j:= to m - do 
 write(a[i, j], ' '); 
 writeln; 
 end; 
 end. 
 Роҳи дигари ҷудо намудани ҳофиза барои матритсаҳо
 истифода аз протседураи SetLength мебошад: 
 SetLength(a,,); 
 Илова бар ин, матритсаҳоро метавон низ ҳамчун массив аз
 массив муаррифӣ кард: 
 var a: array of array of integer; 
 Барои муайян намудани ҳофизаи ин навъ матритсаҳо аз
 протседураи SetLength истифода карда мешавад: 
 SetLength(a,); 
 for i:= to do 
 SetLength(a[i],); 
 Агар хоҳем, ки андозаи матритсаҳои динамикиро тавассути
 оператори new муайян намоем, он гоҳ аввал барои он тип сохта,
 сипас ҳангоми ҷудо намудани ҳофиза аз он истифода мекунем:
 type IntArray = array of integer; 
 var с: array of IntArray;... 
 a:= new IntArray[]; 
 for i:= to do 
 a[i]:= new integer[]; 
 Барои чунин навъ массивҳо низ метавон қимати аввала
 бахшид. Ба дастурҳои зерин диққат диҳед: 
 var a: array of array of integer: 
 = ((,,),(,),(,,)); 
 Тавре қайд кардем, массивҳои дученакаро метавон низ
 ҳамчун массив аз массив муаррифӣ кард, яъне дар ин сурат ҳар як
 элементи массиви якченака ҳамчун массив дар назар гирифта
 мешавад. Барои андозаи ҳар яке аз ин массивҳоро муайян кардан аз
 функсияи Length, ки дорои ду параметр мебошад ва ё методи
 GetLength(n) истифода кардан мумкин аст: 
 L:= Length(a,); 
 L:= a.GetLength(); 
 Ин дастурҳо низ андозаи сатри якуми матритсаи а-ро
 бармегардонанд. Дар мисоли зерин ба сифати намуна аз хосияти
 Length истифода карда шудааст. 
 Матни барнома: 
 program matr; 
 var 
 a: array of array of integer:= ((,, ), (,, ), (,, ));
 i, j: integer; 
 begin 
 for i:= to a[].Length - do 
 begin 
 for j:= to a[i].Length - do 
 write(a[i][j], ' '); 
 writeln; 
 end; 
 end. 
 Саволҳо барои мустаҳкамкунӣ 
 мешавад? 
 бурда мешавад? 
 Масъалаҳо барои кори мустақилона 
 Масъалаҳои типи Array 
 шудааст. Барномае нависед, ки суммаи қисми касрии элементҳои
 онро ҳисоб кунад. 
 Барномае тартиб диҳед, ки аввал элементҳои ба ду каратӣ ва баъд
 элементҳои ба се каратии онро хориҷ кунад. 
 Барномае тартиб диҳед, ки сумма ва ҳосили зарбии қисмҳои бутуни
 массиви додашударо ҳисоб кунад. 
 дар байни элементҳои минималӣ ва максималиро мехобанд, ёфта
 шавад. 
 квадрати элементҳои боқимондаро ҳисоб кунед. 
 нависед, ки миқдор ва суммаи элементҳои ҷуфти онро ҳисоб кунад.
 диҳед, ки элементҳои он аз N ададҳои аввалаи Фибоначӣ иборат
 бошанд. Маълум аст, ки(cid:) а д((cid:)ад>ҳои )Фибоначӣ намуди зеринро доранд.
 ) додаF ш у=даа,с тF. С=умм, а Fи K ҳ=амFа k и − э л+емFе k н − т ҳои аз K то L –и
 массив ҳисоб карда шаванд. < 
 K≤. МLа≤ссиNви якченакаи андозааш N дода шудааст. Дар аввал
 элементҳои манфӣ, баъд мусбат ва дар охир элементҳои нулиионро
 бароред. 
 рақами тартибиашон тоқ адади ҷамъ карда шавад, аз ҳамаи
 элементҳои рақами тартибиашон ҷуфт бошад адади тарҳ карда
 шавад. 
 манфии массив қимати элементи якум ҷамъ карда шавад, аз ҳамаи
 элементҳои қиматашон нол адади b тарҳ карда шавад ва элементҳои
 мусбати он бетағир гузошта шаванд (a, b, c -ададҳои ихтиёрӣ).
 мусбати массив адади a тарҳ карда шавад, аз ҳамаи элементҳои
 манфии массив адади b тарҳ карда шавад ва ба ҳамаи элементҳои
 қиматашон нол адади c ҷамъ карда шавад (a, b, c -ададҳои ихтиёрӣ).
 нависед, ки элементҳои массивро чунин иваз кунад: элементи
 якумро ба элементи n-ум, элементи дуюмро ба элементи n--ум ва
 ҳоказо. 
 нависед, ки m элементи калонтарини массиврро бароред.
 дода шудааст ё не. Агар не, пас элементе, ки ин 
 қонуниятро(тартибро) вайрон мекунад хориҷ карда шавад.
 қиматашон ҷуфт ва мавқеи ҷойгиршавиашон низ ҷуфт аст партофта
 карда шаванд. 
 даҳӣба намуди дӯӣ гардонад. 
 нависед, ки m элементи хурдтарини массивро бо тартиби
 зиёдшавиаш барорад. 
 онро ба системаи шонздаҳӣ гардонад. 
 аввалаш(якумаш) зарб карда шаванд. 
 (сатрҳо, символҳо, ададҳои ҳақиқӣ ва ғайра) амалӣ созед.
 Масъалаҳои типи Matrix 
 сатр калонтарин ва дар сутун хурдтарин мебошад, ёфта шавад.
 ро ҳисоб намуда дар массиви якченакаи A[K] гирд оваред.
 ро ҳисоб намуда, бо элементҳои диоганали асосӣ иваз кунед.
 ҳар як сутунро ҳисоб намуда, ба элементҳои диогонали баръакс иваз
 кунед. 
 сатри онро аз рӯи зиёдшавии қиматҳояшон ҷобаҷо гузоред.
 максималии ҳар як сатри онро ба элементи минималии ҳар як сутун
 иваз намоед. 
 Элементҳои ин ду массивро дар массиви C[X][Y] бо тартиби
 зиёдшавиашон гирд оваред. 
 элементҳои ҳар як сутунионро мураттаб кунад. 
 нависед, ки элементҳои диагонгали асосии онро ба элементи
 диагонали баракс (ёрирасон) иваз кунед. 
 нависед, ки элементҳои ҳар як сатри онро ба тартиби 
 калоншавиашон барорад. 
 аввалаи ҳар як сатрро ба қимати миёнаи арифметикииҳар сатр иваз
 кунед. 
 элементҳои аз диагонали асосӣ поёнро ҳисоб кунед. 
 кунед, ки оё он воҳиди аст? 
 Қайд. Матритса воҳидӣ номида мешавад, агар диагонали
 асосии он аз воҳидҳо ва боқимонда элементҳои он аз нолҳо иборат
 бошанд. 
 элементҳои сутуни якуми массив ҳисоб карда шавад. 
 элементҳои сутуни чоруми массив ҳисоб карда шавад. 
 массив ҳисоб карда шавад. 
 дар ҳар як сатри массив ёфта шавад. 
 мусбии ҳар як сатри массив ёфта шавад. 
 қимати хурдтарини массив ҷойгир аст ёфта шавад. Агар дар массив
 қимати хурдтарин якчандто мавҷуд бошад, пас ҳамоне, ки аз тарафи
 чап аввал омада аст ба назар гирифта шавад. 
 калонтарини сутуни якуми массив ҷойгир аст ёфта шавад. Агар дар
 сутуни якум қимати калонтарин якчандто мавҷуд бошад, пас
 ҳамоне, ки аз боло аввал аст ба назар хориҷ карда шавад.
 хурдтарини он ёфта шаванд. 
 БОБИ. КОР БО САТРҲО ВА РАМЗҲО 
 Муқаддима 
 Барои кор кардан ба иттилооти сатрӣ (string) дар забони
 Паскал аз типи string ва ё массивҳои навъи char истифода бурда
 мешавад. Ба тарзи муаррифӣ ва истифодаи массивҳои навъи char
 алакай аз боби массивҳо шинос ҳастем. Дар ин ҷо бошад, додаҳои
 навъи string - ро мавриди баҳс қарор медиҳем. Дар тағйирёбандаҳои
 навъи string дарозии сатр гуфта, миқдори символҳои сатрро
 меноманд. Дарозии додаҳои навъи мазкур то рамз (символ)
 шуда метавонад. Бояд қайд кард, ки ҷои холӣ низ ҳамчун як символ
 ҳисобида мешавад. Додаҳои навъи string дар дохили нохунаки якто-
 якто навишта шуда, ҳар як символ ҳамчун як байт ҳисобида
 мешавад. 
 Агар дарозии сатр пешакӣ маълум бошад, барноманавис
 метавонад, ҳангоми муаррифӣ, дарозии онро нишон диҳад.
 Монанди массивҳо ва матритсаҳо тағйирёбандаҳои навъи
 сатриро метавон бо намуди муқаррарӣ муаррифӣ намуд ва ё аввал
 типи мувофиқро сохта, сипас аз он тип муаррифӣ кард.
 Мисол. 
 program test; 
 type 
 matrix = array [..,..] of integer;
 type 
 str_type = string[]; 
 const 
 n =; 
 var 
 s: string; 
 s, s: str_type; 
 s: string[n]; 
 s, s, s: string[]; 
 Дар ин ҷо сатри s бе нишон додани миқдори символҳо,
 сатри s бо андозаи n (n=) символ, сатри s, s, s бо андозаи 
 символ аз навъи string муаррифӣ гардидаанд. Аввал бо номи str_type
 навъ сохта шуда, сипас сатрҳои s ва s аз навъи сохташуда
 муаррифӣ карда шудаанд. Тавре аён аст, тағйирёбандаҳои типи
 str_type танҳо то символ қабул карда метавонанду халос.
 Илова бар ин, сатрҳоро метавон низ ба намуди доимӣ
 муаррифӣ кард. Ба дастури зерин диққат диҳед: 
 const s: string = 'PascalABC.NET' 
 Агар тағйирёбандаи сатр дорои қимат набошад, онро сатри
 холӣ меноманд. Сатрҳои холӣ дар дохили нохунаки якто-якто
 навишта мешаванд. Мисол: st:=' '. 
 Барои дастрасӣ ба символҳои сатр метавон монанди
 массивҳо аз зернависи онҳо истифода кард. Масалан, бигузор
 S=’Salom’ бошад, пас S[]=S, S[]=a, S[]=l, S[]=o, S[]=m
 мешавад. 
 Бояд қайд кард, ки қимати тағйирёбандаҳои навъи string
 метавонад дилхоҳ символи ASCII бошад. Мисол: 
 s:='abcde'; 
 x:='abcdeg'; 
 f:='' 
 g:=' '; 
 d:=''; 
 h:='Ин сатр аст'; 
 Амалҳо ба сатрҳо 
 Бо тағйирёбандаҳои навъи сатрӣ метавон амалҳои гуногунро
 иҷро кард. Ба монандӣ: якҷоякунӣ, муқоиса ва ғайра. Ҳангоми
 иҷроиши амали якҷоякунӣ як сатр аз қафои сатри дигар пайваст
 карда мешавад. Барои иҷрои ин амал аз амали ҷамъ (+) истифода
 бурда мешавад. Ба мисоли зерин диққат диҳед: 
 a:= 'Turbo'; 
 b:= ' Pascal'; 
 c:= a + b; 
 Дар ин ҷо натиҷаи тағйирёбандаи с баробар мешавад ба:
 Turbo Pascal. 
 Амали муқоисаи сатрҳо бошад, камтар душвортар аст.
 Амали мазкур аз тарафи чап ба рост символ ба символ иҷро карда
 мешавад. Ин маънои онро дорад, ки аввал символҳои якум, сипас
 дуюм ва ҳоказо муқоиса карда мешаванд. Ҳангоми муқоисаи
 символи холӣ, вай аз дилхоҳ символ хурд ҳисобида мешавад. Бояд
 қайд кард, ки на худи рамзҳо балки коди онҳо муқоиса карда
 мешавад. Тавре медонем, мувофиқи стандарти кодгузории ASCII
 (American standard code for Information Interchange) ва ebsd (extended
 binary-coded decimal interchange code) ҳар рамз дорои коди махсусе
 мебошад. Дар поён ҷадвали символҳо оварда шудааст: 
 Барои ба хонанда фаҳмо шудан якчанд сатрҳоро пеши назар
 меорем: 
 s:='abcde'; 
 x:='abcdeg'; 
 f:='' 
 g:=' '; 
 d:=' '; 
 h:=''; 
 Барои сатрҳои овардашуда, амали муқоиса чунин сурат
 мегирад: 
 x>s {true} 
 f>x; {false} 
 s+h<x; {true} 
 d<g; {true} 
 h<d; {false} 
 Тағйирёбандаҳои навъи char 
 Дар забони Паскал барои кор кардан бо як символ аз
 тағйирёбандаҳои навъи char истифода бурда мешавад. Додаҳои ин
 навъ рамзи ASCII-код буда, ба намуди пешфарз дар хотира як
 байт ҷойро ишғол мекунанд. 
 Дар забони Паскал якчанд доимӣ мавҷуд аст, ки ҳар
 кадомашон ҳамчун як символ фаҳмида мешавад. Доимиҳои аз ҳама
 маъмул инҳо мебошанд: 
 # - рамзи сархат. 
 # – рамзи гузариш ба сатри нав; 
 # - рамзи нохунаки ягона (апостроф). 
 Ба ғайр аз ин барои типи char методҳои статикии зиёде
 мавҷуд аст, ки асоситаринашон дар ҷадвали зерин оварда шудаанд:
 № Номи функсия Маъно ва мафҳум 
 char. isdigit (int c) Қимати true бармегар-донад,
 агар аргументи он яке аз 
 рақамҳои аз то бошад, 
 дар акси ҳол қимати false 
 бармегар-донад. 
 char.IsLetter(c) Қимати true бармегар- 
 донад, агар аргументи он 
 ҳарф бошад, дар акси ҳол 
 қимати false 
 бармегардонад. 
 char.IsLetterOrDigit(c) Қимати true бармегардонад,
 агар аргументи он ҳарф ё 
 рақам бошад, дар акси ҳол 
 қимати false 
 бармегардонад. 
 char.IsLower(c) Қимати true бармегардонад, 
 агар аргументи он ҳарфи 
 хурд бошад, дар акси ҳол 
 қимати false 
 бармегардонад. 
 char.IsUpper(c) Қимати true бармегардонад, 
 агар аргументи он ҳарфи 
 калон бошад, дар акси ҳол 
 қимати false 
 бармегардонад. 
 char.ToLower(c) Агар с ҳарфи калон бошад, 
 онро ба ҳарфи хурд табдил 
 медиҳад. 
 char.ToUpper(c) Агар с ҳарфи хурд бошад, 
 онро ба ҳарфи калон 
 табдил медиҳад. 
 char.ToString(c) Рамзи с - ро ба аз намуди 
 символӣ ба сатри табдил 
 медиҳад. 
 char.Digit рамзи додашударо ба 
 намуди ададӣ табдил 
 медиҳад. 
 char.Code ASCII –коди рамзи 
 додашударо 
 бармегардонад. 
 char.ispunctuation(int c) Қимати true бармегардонад,
 агар аргументи он рамзи 
 пунктуатсия бошад. 
 Зербарномаҳои кор бо сатрҳо ва рамзҳо 
 Барои кор кардан бо сатрҳо ва символҳо аз зербарномаҳои,
 зиёде истифода мебаранд, ки баъзеи онҳо дар ҷадвали зерин оварда
 шудааст. 
 function Chr(a: byte): char - Адади додашударо дар
 кодгузори Windows ба рамз (символ) табдил медиҳад.
 function ChrUnicode(a: word): char - Адади додашу-даро дар
 кодгузори Unicode ба рамз (символ) табдил медиҳад.
 function OrdUnicode(a: char): word - Рамзи додашударо дар
 кодгузори Unicode ба адад табдил медиҳад. 
 function UpperCase(ch: char): char - Рамзи додашуда-ро ба
 регистри болоӣ (ҳарфи калон) табдил медиҳад. 
 function LowerCase(ch: char): char - Рамзи додашударо ба
 регистри поёнӣ (ҳарфи хурд) табдил медиҳад. 
 function UpCase(ch: char): char - Рамзи додашударо ба
 регистри болоӣ (ҳарфи калон) табдил медиҳад. 
 function LowCase(ch: char): char - Рамзи додашу-даро ба
 регистри поёнӣ (ҳарфи хурд) табдил медиҳад. 
 function Succ(c)-рамзи баъд аз с-ро бармегардонад. Мисол:
 Succ('')=''. 
 function Pred(c) - рамзи пеш аз с-ро бармегардонад. Мисол:
 Pred('')=''. 
 function Ord(c) – коди символи с-ро бармегардонад.
 (Unicode) 
 function Chr(i) – символи коди i-ро бармегардонад.
 (Unicode) 
 function Chr(i) – символи коди i-ро бармегардонад.
 (Unicode) 
 function StringOfChar(ch: char; count: integer): string - Сатре
 бармегардонад, ки аз count символи тағйирёбандаи ch
 иборат бошад. 
 function ReverseString(s: string): string - Сатри додашударо
 ба таври баръакс табдил медиҳад. 
 function CompareStr(s,s: string): integer - Сатр-ҳои s ва
 s ро бо ҳамдигар муқоиса намуда, қи-мати манфӣ 
 агар s<s бошад, қимати мусбат агар s>s бошад, 
 агар s=s бошад, бармегардо-над. 
 function LeftStr(s: string; count: integer): string -
 count символи аввали сатри s ро бармегардонад. 
 function RightStr(s: string; count: integer): string
 - count символи охири сатри s ро бармегардонад. 
 function StrToInt(s: string): integer - Сатри додашу-даи s-ро
 ба адади бутуни навъи integer табдил медиҳад. 
 function StrToInt(s: string): int - Сатри додашу-даи s-ро
 ба адади бутуни навъи int табдил медиҳад. 
 function StrToFloat(s: string): real - Сатри додашудаи s-ро
 ба адади ҳақиқии навъи real табдил медиҳад. 
 function TryStrToInt(s: string; var value: integer): boolean -
 Сатри додашудаи s-ро ба адади ҳақиқии 
 навъи integer табдил дода, онро дар тағйирёбандаи value
 мебахшад. Дар сурати бомуваффақият анҷом наёфтани ин
 амал, қимати False бармегардонад. 
 function TryStrToInt(s: string; var value: int): boolean -
 Сатри додашудаи s-ро ба адади ҳақиқии навъи int табдил
 дода, онро дар тағйирёбандаи value мебахшад. Дар сурати
 бомуваффақият анҷом наёфтани ин амал 
 қимати False бармегардонад. 
 function TryStrToFloat(s: string; var value: real): boolean -
 Сатри додашудаи s-ро ба адади ҳақиқии навъи real табдил
 дода, онро дар тағйирёбандаи value мебахшад. Дар сурати
 бомуваффақият анҷом наёфтани ин амал 
 қимати False бармегардонад. 
 function TryStrToFloat(s: string; var value: single): boolean
 - Сатри додашудаи s-ро ба адади ҳақиқии 
 навъи single табдил дода, онро дар тағйирёбандаи value
 мебахшад. Дар сурати бомуваффақият анҷом наёфтани ин
 амал қимати False бармегардонад. 
 function IntToStr(a: integer): string - Адади бутуни a-ро бо
 намуди сатрӣ табдил медиҳад. 
 function IntToStr(a: int): string - Адади бутуни a-ро бо
 намуди сатрӣ табдил медиҳад. 
 function FloatToStr(a: real): string - Адади ҳақиқии a-ро бо
 намуди сатрӣ табдил медиҳад. 
 function StrToFloat(s) - Cатри додашударо ба намуди адади
 ҳақиқӣ табдил медиҳад. 
 function PosEx(subs,s,from=) - Барои ҷустуҷуӣ зерсатри
 subs дар дохили сатри s истифода бурда мешавад. 
 Ҳангоми вуҷуд надоштани зерсатри subs дар дохили сатри
 s мавқеи нахустини онро сар карда аз мавқеи from 
 бармегардонад. Дар ҳолати баръакс қимати 
 бармегардонад. 
 function TrimLeft(s) - Ҳамаи фосилаҳои (ҷойҳои холии)
 аввали сатри s ро нест намуда, онро бармегардонад.
 function TrimRight(s) - Ҳамаи фосилаҳои (ҷойҳои холии)
 охири сатри s ро нест намуда, онро бармегардонад 
 function Trim(s) - Ҳамаи фосилаҳои (ҷойҳои холии) аввал
 ва охири сатри s ро нест намуда, онро бармегардонад
 function string.ToWords- додашударо ба калимаҳо ҷудо
 мекунад. 
 function string.ToReals- додашударо ба ададҳои ҳвқиқӣ
 ҷудо мекунад. 
 function string.split(char)-вобаста ба қимати параметри char
 сатри додашударо ба қисмҳо ҷудо мекунад. 
 Мисоли. Сатри додашударо ба калимаҳо ҷудо намуда
 миқдори онҳоро ҳисоб кунед. 
 begin 
 var S:= 'Ман ба донишгоҳ рафта, дар онҷо дарс мехонам';
 var arr:= S.Split(' '); 
 var n: integer:= arr.Length; 
 for var i:= to n - do 
 writeln(arr[i]); 
 writeln; 
 Writeln('Мидори калимаҳо баробар аст ба:', n); 
 end. 
 Ин мисолро низ метавон ба сурати зерин навишт: 
 Begin 
 var S:= 'Ман ба донишгоҳ рафта, дар онҷо дарс мехонам';
 var arr:= S.ToWords.Println; 
 var n: integer:= S.ToWords.Length; 
 Writeln('Мидори калимаҳо баробар аст ба:', n); 
 end. 
 Мисоли. Якчанд адади ҳақиқӣ ба намуди сатр дода
 шудааст. Суммаи онҳоро ҳисоб кунед. 
 begin 
 var Str:= '... - '; 
 var S: real:=; 
 var arr:= Str.ToReals; 
 var n: integer:= arr.Length; 
 for var i:= to n - do 
 begin 
 write(arr[i], ' '); 
 S:= S + arr[i]; 
 end; 
 Writeln('S=', S); 
 end. 
 Мисоли. Мисолеро дида мебароем, ки дар он якчанд
 имкониятҳои нави кор кардан бо сатрҳо нишон дода шудааст.
 begin 
 var s:= 'бутун = ' +; 
 Println(s); 
 s:= 'ҳақиқӣ = ' +.; 
 Println(s); 
 Println('x' * ); // сатр аз даҳ символи 'x' 
 Println('abc' * ); 
 s:= 'No yes yes no yes No'; 
 // Matches –Бо истифода аз ибораҳои муназзам(регулярных
 выражений) ёфтани ҳамаи зерсатрҳои мавҷудбуда дар дохили
 сатр 
 foreach var m in s.Matches('no', RegexOptions.IgnoreCase) do
 Println(m, m.Index); // зерсатри 'no' ва мавқеи он
 end. 
 Илова бар функсияҳои дар ҷадвал оварда шуда, дар забони
 PascalABC.NET функсияҳои зиёди дагаре низ мавҷуданд. Ҳоло бо
 мисол якчандтои онҳоро дида мебароем. 
 Мисоли. Дар сатри додашуда миқдори калимаҳое, ки бо як
 ҳарф сар шуда бо он ба охир мерасанд муайян карда шавад.
 var 
 k, i, n: integer; 
 begin 
 k:=; 
 var S:= 'Ҳеҷ кас намедонад, ки чаро cари Довуд мудом дард
 мекунад'; 
 var arr:= S.Split(' ').tolo; 
 n:= arr.Length; 
 for i:= to n - do 
 if arr[i][] = arr[i][arr[i].Length] then 
 k:= k +; 
 writeln; 
 Writeln('k=', k); 
 end. 
 Зербарномаҳои асосии кор бо сатрҳо 
 ) Функсияи Length(s) дарозӣ ва ё миқдори символҳои сатри s-ро
 бармегардонад. Протседураи SetLength(s,n) дарозии сатри s-ро
 ба n баробар қарор медиҳад. Намунаи мисоли функсияи мазкур:
 Мисоли. Барномае нависед, ки миқдори символҳои сатри
 додашударо ҳисоб кунад. 
 Матни барнома: 
 program test; 
 var 
 word: string; 
 begin 
 write(' калимаро дохил кунед:'); 
 readln(word); 
 writeln('ин калима иборат аст аз ', length(word), ' ҳарф');
 end. 
 ) Функсияи Copy(s,from,len)- сар карда аз мавқеи from ба андозаи
 len символи сатри s -ро бармегардонад. 
 Мисоли. Барномае нависед, ки аз сатри "Ширкати 
 Microsoft", калимаи 'ширкат'- ро бурида хориҷ кунад.
 Матни барнома: 
 program test; 
 var 
 word: string; 
 word: string[]; 
 begin 
 word:= 'Ширкати Microsoft'; 
 writeln(word); {матни 'ширкати Microsoft' хориҷ карда
 мешавад} 
 word:= copy(word,, ); 
 writeln(word); {матри 'ширкат' хориҷ карда мешавад}
 end. 
 ) Протседураи Insert( (subs,s,form) зерсатри subs - ро сар карда аз
 маҳалли form ба сатри s мегузорад. 
 Мисоли. Барномае нависед, ки сар карда аз мавқеи -уми
 сатри "Донишгоҳи Славянии Тоҷикистон" зерсатри "Россия ва" - ро
 гузорад. 
 Матни барнома: 
 program test; 
 var 
 S, S: string; 
 begin 
 S:= 'Донишгоҳи Славянии Тоҷикистон'; 
 S:= 'Россия ва '; 
 insert(S, S, ); 
 writeln(S); 
 end. 
 ) Протседураи Delete(s,from,len) – сар карда аз маҳали from бо
 андозаи len символҳоро аз сатри s нест мекунад. 
 Мисоли. Барномае нависед, ки аз сатри " Донишгоҳи
 Славянии Россия ва Тоҷикистон" зерсатри ”Славянии”- ро нест
 кунад. 
 Матни барнома: 
 program test; 
 var 
 S: string; 
 begin 
 S:= 'Донишгоҳи Славянии Россия ва Тоҷикистон';
 delete(S,, ); 
 writeln(S); 
 end. 
 ) Функсияи Concat (Str, Str,..., StrN) сатрҳои Str, Str,..., StrN
 ро бо ҳамдигар пайваст мекунад. 
 Мисоли. Барномае нависед, ки сатрҳои " Фирмаи",
 "Компютерии" ва "Microsoft"-ро бо ҳамдигар пайваст кунад.
 Матни барнома: 
 program test; 
 var 
 word: string; 
 word, word: string[]; 
 begin 
 word:= 'фирмаи '; 
 word:= 'Microsoft'; 
 word:= Concat(word, 'Компютерии ', word); 
 writeln(word); {сатри хориҷшуда: 'Фирмаи Компютерии
 Microsoft'} 
 end. 
 ) Функсияи Pos(subs,s) барои ҷустуҷуӣ зерсатри subs дар дохили
 сатри s истифода бурда мешавад. Ҳангоми вуҷуд надоштани
 зерсатри subs дар дохили сатри s қимати ва дар акси ҳол мавқеи
 нахустини ҷойгишавии зерсатри subs - ро дар дохили сатри s
 бармегардонад. Тавассути ин функсия метавон ягон қисми сатрро
 дар дохили дигар сатр ҷустуҷӯ кард. 
 Мисоли. Барномае нависед, ки дар дохили сатри
 додашуда, зерсатри додашударо ҷустуҷӯ кунад. 
 Матни барнома: 
 program test; 
 var 
 Word: string; 
 SearchWord: string[]; 
 Position: Byte; 
 begin 
 Word:= 'фирмаи Microsoft бузургтарин фирма аст.';
 writeln(Word); 
 writeln('калимаи ҷустуҷушвандаро дохил кунед ');
 readln(SearchWord); 
 Position:= Pos(SearchWord, Word); 
 if Position <> 
 then 
 begin 
 write('Калимаи <', SearchWord, '> дар сатри <', Word, '
 вуҷуд дорад,'); 
 writeln('>,сар кардаи аз мавқеи ', Position, '-юм');
 end 
 else 
 write('Калимаи <', SearchWord, '> дар сатри <', Word,
 'вуҷуд надорад.'); 
 end. 
 Функсияҳои табдилдиҳии сатр ба адад ва баръакс 
 Протседураи Str(x,s) адад ва ё ифодаи адади (бутун ё ҳақиқӣ)
 -и х-ро ба намуди сатрӣ табдил дода, натиҷаро ба тағйирёбандаи s
 мебхшад. Мисол: 
 program test; 
 var 
 stroka, stroka, stroka: string; 
 x, y, z: integer; 
 begin 
 x:=; 
 y:=; 
 z:= x + y; 
 writeln(z); 
 str(x, stroka); 
 str(y, stroka); 
 stroka:= stroka + stroka; 
 writeln(stroka); 
 end. 
 Протседураи Val(s,x,errcode) сатри s-ро ба намуди ададӣ
 (бутун ё ҳақиқӣ) табдил дода, натиҷаро батағйирёбандаи х
 мебахшад. Агар амали табдилдиҳӣ бо муваффақият анҷом ёбад, он
 гоҳ қимати параметри errcode ба баробар мешавад. Дар сурати акс,
 параметри errcode ба қимати мавқеи символе, ки боиси хатогӣ шуд,
 доро мегардад. 
 Мисол. 
 program test; 
 var 
 stroka, stroka: string; 
 rog, let: integer; 
 begin 
 stroka:= '..'; 
 stroka:= copy(stroka,, ); 
 val(stroka, rog); 
 let:= - rog; 
 writeln(let); 
 end. 
 Дар поён як мисоли дигареро дида мебароем, ки дар он тарзи
 истифодаи функсияҳои омӯхтаамон истифода шудаанд: 
 program test; 
 var 
 s, s, s: string; 
 begin 
 s:= 'abcdefghijklmno'; 
 writeln('length(s)=', length(s)); 
 writeln('copy(s,,)=' + copy(s,, )); 
 s:= s + 'xyz'; 
 s:= concat(s, 'xyz'); 
 writeln('s+''xyz''=' + s); 
 writeln('concat(s,''xyz'')=' + s); 
 delete(s,, ); 
 writeln('Пас аз delete(s,,) s=' + s); 
 insert('WwWwWwWwWw', s, ); 
 writeln('Пас аз insert(''WwWwWwWwWw'',s,) s=' + s);
 writeln('pos(''wno'',s)=', pos('wno', s)); 
 writeln('pos(''wNo'',s)=', pos('wNo', s)); 
 end. 
 Натиҷа: 
 length(s)= 
 copy(s,,)=defgh 
 s+'xyz'=abcdefghijklmnoxyz 
 concat(s,'xyz')=abcdefghijklmnoxyz 
 Пас аз delete(s,,) s=abcno 
 Пас аз insert('WwWwWwWwWw',s,) 
 s=abcWwWwWwWwWwno 
 pos('wno',s)= 
 pos('wNo',s)= 
 Саволҳо барои мустаҳкамкунӣ 
 мисолҳо биёред. 
 зерсатр гузошта мешавад? 
 Масъалаҳо барои кори мустақилона 
 истифода нашудааст. 
 гузоред, яъне ҷумларо ба ҳиҷҷоҳо тақсим кунед. 
 мувофиқан садонокҳо ва ҳамсадоҳо бошанд. 
 ҷойи калимаи охирон ва аввалаи онро иваз кунад. 
 кунед, ки чанд фисади ҳарфҳои боқимондаро ташкил медиҳанд.
 арифметикии ASCI-коди рамзҳои онро ҳисоб кунад. 
 мерасад ё не. 
 мувофиқан дар ду массив name ва tel хонда захира кунад. Сипас,
 бо ворид кардани номи ягон шахс рақами телефони вайро ёфта
 хориҷ кунад. 
 муайян кунед. 
 усули кӯчиш рамзгузорӣ кунад. Моҳияти ин усул чунин аст:
 Матн ва як адади бутуни фосилаи дода мешавад. 
 Ҳар як ҳарфи алифбо вобаста бо қимати n ба тарафи рост
 кӯчонида мешавад. Масалан, ҳангом(и n<=(cid:) б<удан) ҳарфи A ба D,
 ҳарфи D ба E, ҳарфи E ба F ва ҳоказо кӯчонида мешавад. Пас аз
 иҷрои ин амал, ба ҷои ҳарфи A ҳарфи D, ба ҷои D ҳарфи E, ба ҷои
 ҳарфи E ҳарфи F ва ғайра навишта мешавад. 
 рамзгузошташударо рамзкушоӣ кунад. 
 онро ҳисоб кунад. 
 боҳарфи «А»табдил диҳад. 
 ва «часпондан» калимаи роман тартиб дода шавад. 
 тарафи рост ба чап хондани калима s пайдо мешавад хориҷ карда
 шавад. 
 шудааст. Барномае нависед, ки онро ба системаи даҳӣ гардонад.
 мебошад. Барномае нависед, ки сатри дода шударо ба системаи
 даҳӣ гардонад. 
 ҳисоби даҳӣ ба шонздаҳӣ табдил диҳад. 
 тартибии калима, он калимаро аз сатр хат занед. 
 карда, ба миқдори m рамзро ба сатри S нусхабардорӣ кунад.
 ҷойгиршавии сеюм, шашум, нӯҳум ва ғ. буда ба ҳарфи “а ” иваз
 карда шаванд. 
 бошад, ҳарфҳои дар мавқеи тоқ-ро чоп кунед. Ва агар тоқ бошад,
 ҳарфҳои дар мавқеи ҷуфт чоп карда шаванд. 
 ҷобаҷогузорӣ карда шаванд: якум, дувоздаҳум, дуюм,
 ёздаҳум,…, панҷум, ҳаштум, шашум, ҳафтум. 
 ки ҷумлаи якумро ташкил додаанд дар ҷумлаи дуюм дида
 мешаванд. 
 карда шавад. 
 БОБИ.ФАЙЛҲО 
 Муқаддима 
 То ҳол мо барномаҳое, ки навиштем ва истифода кардем, дар
 онҳо ҳамаи додаҳо аз клавиатура дохил карда шуда, дар
 тағйирёбандаҳо, массивҳо ва ғайра захира карда мешуданд.
 Додаҳое, ки ҳаҷми зиёд доштанд, дар массивҳо захира мешуданд.
 Масалан, барои нигоҳ доштани адади бутун аз массиви навъи
 бутуни андозааш ба баробар истифода карда мешавад. Ин амал
 хуб аст, аммо вақте ки барномаро иҷро карданӣ шавем, ба мо лозим
 меояд, ки адади бутунро ба барнома дохил намуда, сипас амали
 лозимиро бо онҳо иҷро кунем. Дар ин сурат итилооти вурудӣ дар
 RAM захира гардида бо поён расидани кори барнома аз RAM нест
 мегарданд. Бори дигар вақте ки барномаро иҷро карданӣ шавем, боз
 зарурати аз сари нав дохил намудани ин иттилоот пеш меояд. Ин
 корро шояд барои адад карда тавонем, вале барои ва
 миллион адад иҷрои амали мазкур хеле душвор ва дилгиркунанда
 мбошад. 
 Агар додаҳои вурудиро дар диск захира намоем, ҳар
 маротиба аз сари нав дохил кардани онҳо душворӣ пеш намеорад.
 Додаҳо дар диск ба намуди файл захира карда мешаванд. Ҳар як
 файл дорои ном аст ва барнома(компилятор) метавонад файлро бо
 он ном дастёбӣ кунад. Номи файл аз ҳарфҳои лотинии аз A то Z (a
 то z), рақамҳои аз то ва символи хати поён _ иборат буда, дорои
 ду қисм (бахш) мебошад, ки бо аломати нуқта (dot) аз ҳамдигар ҷудо
 карда мешаванд. Қисмати аввалро номи файл ва қисмати дуюм,
 яъне қисмати баъди нуқтаро пасванди файл меноманд. Пасванди
 файл дорои се ҳарф ё чор ҳарф буда, дар кадом барнома навиштани
 онро ифода мекунад. Масалан, файли дар Паскал навишташуда
 дорои пасванди.pas, файли дар C++ навишташуда дорои пасванди.cpp, файлҳои иҷроиш дорои пасванди.bat ё.exe, файли матнӣ дорои
 пасванди.txt ва ғайра мебошад. Намунае аз номи файлҳо иборатанд
 аз: simple.pas, Ali.txt, Vali.bat, said.exe, first. cpp ва ғайра.
 Барои дар диск нигоҳ доштани додаҳо барнома бояд файлро
 кушода иттилооти вурудиро дар он захира кунад. Файлеро ки
 барнома онро барои нигоҳ доштани иттилооти воридкарашуда
 мекушояд, файли хуруҷӣ номида мешавад. 
 Додаҳое ки бо воситаи барнома дар файл захира мешаванд,
 метавонанд ба воситаи барномаи дигар ё ҳамон барнома аз файл
 хонда шуда, мавриди истифода қарор гиранд. Файли вурудӣ
 номида мешавад, агар танҳо барои хондани иттилоот кушода шавад.
 Файлеро, ки дар он ҳам амали хондан ва ҳам навиштани додаҳо
 сурат мегирад, файли вурудӣ-хуруҷӣ ном дорад. 
 Навъи файлҳо дар Паскал 
 Аз рӯи захираи иттилоот файлҳо бо ду даста тақсим карда
 мешаванд: 
  Файлҳои матнӣ; 
  Файлҳои дуӣ. 
 text 
 binary 
 Файли матниро метавон аз тариқи барнома ё аз тариқи
 веросторҳо эҷод кард. Файлҳои матнӣ файлҳое ҳастанд, ки додаҳо
 дар онҳо ба намуди сатре аз символҳо захира карда мешаванд.
 Масалан, ҳангоми дар чунин файлҳо захира намудани адади, он
 ба сурати ‘’, ‘’ ва ‘’ захира карда мешавад. 
 Файли матнӣ ё додаҳои матнӣ додаҳое ҳастанд, ки аз сатри
 символҳо таркиб ёфтаанд ва ҳар сатр бо як рамзи охири хат (eoln) ё
 хати нав ба поён мерасад. Вақте ки ин сатрҳо ба ҳофиза хонда
 мешаванд, функсияи замони иҷро (runtime functions) рамзи хати нав
 (eoln)-ро дар охири ҳар сатр илова мекунад. Ин амалиёт мумкин аст,
 ки дар системаҳои омили гуногун иҷро шавад. Масалан, дар IBM-
 ҳои ибтидоӣ ҳар рамзи хати нав ҳамчун як индекс аз ишорагарҳо
 фаҳмида мешавад. Аз ин рӯ, файлҳои матнӣ дар муҳитҳои гуногун
 мувофиқ мебошанд ва ҳангоми кор кардан бо онҳо бояд дар назар
 дошт, ки файлҳои матнӣ дар як система иҷрошаванда мумкин аст,
 ки дар системаи дигар иҷро нашаванд. 
 Охири файлро доимии eof, ки шакли кӯтоҳшудаи End Of File
 мебошад, муайян мекунад. Бояд қайд кард, ки як файл метавонад
 дорои якчандто eoln бошад, аммо танҳо дорои як eof шуда
 метавонад. 
 Файлҳое ки итилоот дар онҳо ба намуди ададҳои бутун,
 ҳақиқӣ ва ғайра захира карда мешаванд, файлҳои дуӣ ном доранд.
 Бо суханҳои дигар, файли дуӣ бо додаҳои аз дастгоҳи вурудӣ ба
 дастомада, муносибати як ба як менамоянд, яъне додаҳо дар ин навъ
 файлҳо ба намуди пайдарпайии байтҳо захира карда мешаванд. Ба
 таври дигар гӯем, дар қолаби дуӣ компилятор ҳеҷ гуна амалеро рӯи
 байти додаҳо анҷом намедиҳад, балки дақиқан байтҳоро ба ҳамон
 намуде, ки зоҳир мешаванд, мехонад ва менависад. Файлҳои дуӣ
 аслан дар мавриди додаҳои ғайриматнӣ (nontextual data) истифода
 бурда мешаванд. 
 Фарқияти асосӣ байни файлҳои матнӣ ва дуӣ 
 Додаҳои матнӣ ва дуӣ (бинорӣ) аз рӯи хосиятҳои зерин аз
 ҳамдигар фарқ мекунанд: 
 Тавре баён шуд, тарзи захира шудани рамзи охири хат дар
 ду намуди файлҳо аз ҳамдигар фарқ мекунад, яъне дар файлҳои
 навъи матнӣ вуҷуд дораду дар файлҳои дӯӣ не. 
 Фарқияти дигари ин ду навъ файлҳо дар муайянкунии охири
 файл ҳаст. Дар ҳар ду намуд файлҳо барои муайянкунии охири файл
 аз доимии eof истифода мебаранд. Дар файлҳои матнӣ вақте ки
 идоракунӣ (хондан ё навиштан) ба ин мавқеъ расид, онро
 мефаҳмонад, ки файл ба охир расидааст, вале дар файлҳои намуди
 дуӣ eof низ як рамзе аз ҷузъи файл фаҳмида мешавад. Аз ин ҷо
 бармеояд, ки интиҳои файл дар ду намуд файлҳо якхела нест.
 Фарқияти дигари байни ин ду намуд файлҳо дар тарзи захира
 шудани ададҳо мебошад. Дар намуди матнӣ ададҳо ба намуди сатре
 аз рамзҳо дар файл захира карда мешаванд. Дар намуди дӯӣ бошад,
 ҳамон тавре, ки дар хотира ҳастанд, дар файл захира карда
 мешаванд. Масалан, адади бутуни кӯтоҳ( shortint)-и, ки
 дарозиаш ду байт аст ва адади ҳақиқи (float)-и,, ки дарозиаш
 байт аст, ба сурати зерин дар ҳофиза ҷой мегиранд:, 
 Аз ин намоиш дида мешавад, ки дар файҳои матнӣ адади
 бутуни кӯтоҳ, ки аз се рамз борат аст, дар хотира се байтро ишғол
 мекунад ва адади дуюм, ки дорои рамз аст, дар ҳофиза байтро
 ишғол мекунад. Тавре аз мавзӯи сатрҳо медонем, барои як рамз як
 байт ҳофиза ҷудо карда мешавад. Ин ададҳоро агар дар файлҳои
 дуӣ захира кунем, барои адади, ки аз навъи бутуни кӯтоҳ аст, 
 байт ва барои адади ҳақиқии, ҳамаги байт аз ҳофиза банд
 карда мешавад. 
 Кор бо файлҳои матнӣ 
 Барои сохтан ва кушодани як файли матнӣ бояд қадамҳои
 зерин иҷро карда шаванд: 
 муаррифӣ карда мешавад. Тарзи муаррифии тағйирёбандаи
 файл шакли зеринро дорад: 
 Номи тағйирёбандаи файл: text; 
 Барои номгузории тағйирёбандаи файл низ аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. Масалан,
 simple, test, myfile ва ғайра. Мисол: 
 var simple:text; 
 он ки файл дар диск захира шуда ва аз онҷо хонда мешавад,
 бинобар ин барои он бояд дар диск ном интихоб карда шавад.
 Барои тағйирёбандаи файлро ба номи файл (ном ва мавқеи
 ҷойгиршавии файл) пайваст кардан аз зербарномаи assign() ба
 сурати зерин истифода кардан лозим аст: 
 assign(тағйирёбандаи файл, 'номи файл'); 
 Дар ин ҷо тағйирёбандаи файл аз навъи text мебошад, ки
 қаблан муаррифӣ шудааст. Номи файл номест, ки дар дохили диск
 сохта мешавад. Масалан, дастури зерин тағйирёбандаи simple-ро ба
 файли test.txt, ки дар диски D ҷойгир аст пайваст мекунад:
 гирифтани файл, аввал он бояд кушода шавад. Тавассути яке аз
 дастурҳои reset, rewrite ва ё append ин амал иҷро карда
 мешавад. 
 кушодашуда навишта ва ё тавассути протседураи read (readln)
 хонда мешавад. 
 меояд, ки ин амал тавассути протседураи close() иҷро карда
 мешавад. Тарзи истифодаи он шакли зеринро дорад: 
 close(тағйирёбандаи файл); 
 Дастури rewrite 
 Дастури rewrite файлро барои навиштани иттилоот
 мекушояд. Агар файлеро ки ин дастур мехоҳад кушояд, қаблан
 вуҷуд надошта бошад, онро месозад, вале агар вуҷуд дошта бошад,
 додаҳои қаблии онро аз байн мебарад ва онро барои навиштани
 иттилооти нав омода месозад. Бо суханҳои дигар, дастури мазкур
 файлро дар ҳолати хуруҷӣ мекушояд. Тарзи истифодаи дастури
 мазкур шакли зеринро дорад: 
 rewrite(тағйирёбандаи файл); 
 Фармонҳои зерин файли simple-ро барои навиштани
 иттилоот мекушоянд: 
 var simple:text; 
 assign(simple, 'd:outputfile.txt') 
 rewrite(simple); 
 Дастури reset 
 Дастури reset файли мавҷудбударо барои хондани иттилоот
 мекушояд. Агар файлеро, ки дастури reset мехоҳад кушояд, қаблан
 вуҷуд надошта бошад, коре иҷро намегардад. Бо суханҳои дигар,
 дастури мазкур файлро дар ҳолати вурудӣ мекушояд. Тарзи
 истифодаи ин дастур шакли зеринро дорад: 
 reset (тағйирёбандаи файл); 
 Масалан, дастурҳои зерин файли simple-ро барои хондани
 иттилоот мекушояд: 
 var simple:text; 
 assign(simple, 'd:outputfile.txt'); 
 reset(simple); 
 Дастури append 
 Дастури append файли мавҷудбударо барои дар охири он
 илова намудани иттилооти нав мекушояд. Агар файлеро, ки ин
 дастур мехоҳад кушояд, қаблан вуҷуд надошта бошад, пайғоми
 хатогӣ содир мешавад. Агар файл мавҷуд буда кушода бошад, онро
 аввал маҳкам мекунад ва аз сари нав мекушояд. Дастури мазкур
 танҳо барои файлҳои матнӣ пешбинӣ шудааст. Тарзи истифодаи ин
 дастур шакли зеринро дорад: 
 append (тағйирёбандаи файл); 
 Дастурҳои зерин файли simple-ро барои хондани иттилоот
 мекушояд: 
 var simple:text; 
 assign(simple, 'd:outputfile.txt'); 
 append (simple); 
 Қайд. Тавассути дастури rewrite файл танҳо барои хондан,
 тавассути дастури reset файл танҳо барои навиштан ва
 тавассути дастури append файл танҳо барои дар охири он илова
 намудани итиллот кушода мешавад. 
 Пушидани файл 
 Баъд аз анҷоми амалиёти лозимӣ файл бояд маҳкам карда
 шавад. Файлҳои матнӣ тавассути дастурҳои rewrite, reset ё append
 кушода шуда, дар охир бо ёрии дастури close маҳкам карда
 мешаванд. Аз сабаби он ки додаҳо дар файл ба намуди як символ
 навишта намешаванд, бинобар ин Паскал символҳои хуруҷиро дар
 буфери хуруҷӣ (output buffer) захира мекунад. Вақте ки буфери
 хуруҷӣ пур шуд, муҳтавои он ба сурати блок аз символҳо дар файли
 хуруҷӣ захира мешаванд. Ҳангоме ки файли хуруҷӣ баста мешавад,
 символҳои дар буфербуда ҳамроҳи символи охири файл EOF дар
 файл навишта мешавад. Агар файли хуруҷӣ маҳкам карда нашавад,
 иттилооти дар буфер буда метавонанд аз байн раванд. Барои иҷрои
 ин амал аз функсияи close истифода бурда мешавад, ки бо чунин тарз
 истифода мешавад: 
 close(тағйирёбандаи файл); 
 Масалан, барои маҳкам кардани файли simple чунин амал
 карда мешавад: 
 close(simple); 
 Минтақае аз ҳофиза, ки барои муваққатан нигоҳдории додаҳои
 вурудӣ ва хуруҷи истифода мешавад. 
 Навиштани иттилоот дар файли матнӣ 
 Барои навиштани додаҳо дар як файли матнӣ аз 
 протседураҳои write ё writeln истифода бурда мешавад. Ин
 дастурҳоро пештар мо барои навиштани додаҳо дар саҳифаи тасвир
 истифода карда будем. Тарзи истифодаи дастурҳои мазкур барои
 файлҳо шакли зеринро дорад: 
 Write(тағйирёбандаи файл, руйхати иттилооте, ки бояд
 дар файл навишта шаванд); 
 Writeln(тағйирёбандаи файл, руйхати иттилооте, ки бояд дар
 файл навишта шаванд); 
 Амали ин протседураҳо дар файлҳо монанди саҳифаи тасвир
 аст. Додаҳое, ки дохил карда мешаванд, дар буфери вурудӣ (input
 buffer) то замони пахши тугмачаи Enter нигоҳ дошта мешаванд. Пас
 аз пахши тугмачаи Enter рамзи eoln дар интиҳои иттилоот илова
 карда шуда, дар файл навишта мешавад. 
 Мисоли. Барномае нависед, ки ададҳои ҷуфти дурақамаро
 дар файли 'juft.txt' захира кунад. 
 program test; 
 var 
 f: text; 
 i: integer; 
 begin 
 assign(f, 'juft.txt'); 
 rewrite(f); 
 for i:= to do 
 if i mod = then writeln(f, i); 
 close(f); 
 end. 
 Мисоли. Барномае нависед, ки насаб, ном ва номи падари
 рафиқатонро аз клавиатура хонда, дар файл сабт намояд.
 program test; 
 var 
 f: text; 
 nas, nom, nompad: string; 
 begin 
 assign(f, 'dust.txt'); 
 rewrite(f); 
 writeln('Насаби рафиқатонрдохил кунед'); 
 readln(nas); 
 writeln(f, nas); 
 writeln('Номи рафиқатонр дохил кунед'); 
 readln(nom); 
 writeln(f, nom); 
 writeln('Номи падари рафиқатонр дохил кунед');
 readln(nompad); 
 writeln(f, nompad); 
 close(f); 
 end. 
 Хондани додаҳо аз як файли матнӣ 
 Барои хондани додаҳо аз як файли матнӣ аз протседураҳои
 read ё readln истифода мебаранд. Ин протседураҳоро пештар мо
 барои хондани додаҳо аз клавиатура истифода карда будем. Тарзи
 истифодаи протседураҳои мазкур барои файлҳо шакли зеринро
 дорад: 
 read(тағйирёбандаи файл, руйхати иттилооте, ки бояд аз файл
 хонда шаванд); 
 readln(тағйирёбандаи файл, руйхати иттилооте, ки бояд аз файл
 хонда шаванд); 
 Амали ин протседураҳо дар файлҳо монанди саҳифаи тасвир
 аст. Миқдори символҳое, ки тавассути ин протседураҳо аз файл
 хонда мешавад, ба навъи тағйирёбандае, ки дар онҳо зикр шудааст,
 вобастагӣ дорад. Масалан, ҳангоми тавассути тағйирёбандаҳои
 навъи рамзӣ хондани файл танҳо як символ, тавассути 
 тағйирёбандаҳои ададӣ то расидан ба символи пас аз фазои холӣ,
 тавассути сатрҳо то расидан ба рамзи сатри нав (eoln) хонда
 мешавад. Дастури readln символи eoln-ро мехонад, аммо онро
 захира намекунад. Ҳангоми хондани додаҳо аз файл 
 тағйирёбандаҳое, ки дар дастури read ё readln омадаанд, бояд бо
 тағйирёбандаҳое дастури write ё writeln аз рӯи навъ ва тартиби
 ҷойгиршавӣ мувофиқат кунанд. Ин амал сабаби пешгирӣ аз
 хатогиҳо мегардад. 
 Тести интиҳои файл 
 Агар дар файли мавриди назар ду адад навишта шуда бошад
 ва дар байи онҳо аломати фосила мавҷуд бошад, дастури read(f, a)
 танҳо қимати як ададро хонда, рамзи фосиларо ҳамчун охири файл
 мефаҳмад. Аз ин ҷо саволе ба миён меояд, ки чӣ бояд кард, то ҳамаи
 додаҳои файлро ба даст овард? Барои ҳамаи додаҳои файлро ба даст
 овардан бояд пас аз ҳар хониш санҷида шавад, ки оё интиҳои файл
 аст ё не. Барои муайянкунии интиҳои файл функсияи eof() истифода
 бурда мешавад, ки тарзи истифодабарии он чунин аст: 
 eof(тағйирёбандаи файл); 
 Ҳангоме, ки идоракунӣ (control) ба охири файл мерасад,
 функсияи мазкур қимати true бармегардонад. Барои пурра хондани
 иттилооти ягон файл ин функсия ҳамроҳ бо яке аз ҳалқаи такрории
 while ё repeat истифода карда мешавад. 
 Мисол. Барномае нависед, ки иттилооти файли simple-ро,
 ки қаблан дар он ададҳои дурақамаи ҷуфтро захира карда будем,
 хонда дар массиве нигоҳ дорад. 
 program test; 
 var 
 f: text; 
 i: integer; 
 x: array[..] of integer; 
 begin 
 i:=; 
 assign(f, 'juft.txt'); 
 reset(f); 
 while not eof(f) do 
 begin 
 readln(f, x[i]); 
 i +=; 
 end; 
 foreach m: integer in x do 
 write(m, ' '); 
 writeln(i); 
 close(f); 
 end. 
 Нест кардани файл 
 Бо ёрии протседураи erase метавон файлҳои дар диск
 мавҷудро нест кард. Тарзи истифодабарии протседураи мазкур
 шакли зеринро дорад: 
 erase(тағйирёбандаи файл); 
 Файлҳое, ки тавассути протседураи мазкур нест карда
 мешаванд, бояд пушида бошанд, вагарна мумкин аст ҳолати
 истисноӣ ба вуҷуд ояд. Мисоли истифодаи протседураи erase:
 var 
 fp:text; 
 assign(fp,'test.txt'); 
 e⋮rase(fp); 
 Иваз намудани номи файл 
 Барои тағйир додани номи файл аз протседураи rename
 истифода бурда мешавад. Тарзи истифодабарии протседураи
 мазкур шакли зеринро дорад: 
 rename(тағйирёбандаи файл, номи нав); 
 Файлҳое, ки тавассути протседураи мазкур нест карда
 мешаванд бояд пушида бошанд, вагарна мумкин аст ҳолати
 истисноӣ ба вуҷуд ояд. Мисоли истифодаи протседураи rename:
 var 
 fp:text; 
 assign(fp,'test.txt'); 
 r⋮ename(fp, 'first.txt'); 
 Протседураи blockread 
 Протседураи мазк⋮ур ба миқдори нишондодашуда иттилооти
 файли матниро мехонад. Тарзи истифодаарии он шакли зеринро
 дорад: 
 blockread(<тағйирёбандаи файл>, <x>, <миқдори байт>, y>);
 дар ин ҷо x, y – тағйирёбандаҳои муқаррарӣ буда, дар тағйирёбандаи
 якум иттилооти хондашуда ва дар тағйирёбандаи дуюм миқдори
 байтҳои хондашуда нигоҳ дошта мешаванд. 
 Қайд. Истифодаи тағйирёбандаи дувум ҳатмӣ намебошад.
 Протседураи BlockWrite 
 Протседураи мазкур барои дар файли матнӣ навиштани
 иттилоот истифода бурда мешавад. Тарзи истифодаи он шакли
 зеринро дорад: 
 blockwrite(<тағйирёбандаи файл>, <x>, <миқдори байт>,y>);
 Параметрҳои протседураи BlockWrite низ монади 
 параметрҳои протседураи BlockRead мебошанд. 
 Дар мисоли зерин аввал додаҳо тавассути протседураи
 BlockWrite дар файл навишта шуда, сипас тавассути протседураи
 BlockRead ба саҳифаи тасвир бароварда шудаанд. 
 program test; 
 uses 
 crt; 
 var 
 f: file; 
 x, i, n: byte; 
 begin 
 assign(f, 'f'); 
 rewrite(f); 
 write('n = '); readln(n); 
 for i:= to n do 
 begin 
 x:= n - i; 
 blockwrite(f, x, ); {навиштан дар файл} 
 end; 
 reset(f, ); 
 while not eof(f) do 
 begin 
 blockread(f, x, ); {хондан аз файл} 
 write(x, ' '); 
 end; 
 close(f); 
 end. 
 Қайд. Зербарномаҳои BlockRead ва BlockWrite дар
 PascalABC.NET мавыуд намебошанд. 
 Функсия FilePos 
 Мавқеи ҷории файлро ҳамчун адади бутуни дароз (longint)
 бармегардонад. Наҳви истифодаи он чунин шакл дорад: 
 FilePos(f); 
 дар ин ҷо параметр f тағйирёбандаи файл мебошад. 
 Протседураи FSplit 
 Ин протседура барои ба се қисм ҷудо намудани номи файл
 истифода бурда мешавад. Тарзи истифодаи он: 
 FSplit(Path: PathStr; var Dir: DirStr; var Name: NameStr; var
 Ext: ExtStr) 
 дар ин ҷо Path номи пурраи файле, ки бо се компонент ҷудо карда
 мешавад. Дар пapaмeтpи Dir номи каталог ё диске, ки файл дар
 дохили он ҷойгир аст, яъне пеш аз рамзи ‘\’, дар параметри Name—
 номи файл ва дар параметри Ext - пасванди файл бахшида мешавад.
 Тарзи муаррифии параметрҳои PathStr, DirStr, NameStr ва ExtStr дар
 модули стандартии DOS чунин аст: 
 Type 
 PathStr = string[]; 
 DirStr = string[]; 
 NameStr = string[]; 
 ExtStr = string[]; 
 Кор бо файлҳои бинорӣ ё дуӣ 
 Тавре қаблан қайд кардем, додаҳо дар файлҳои матнӣ ба
 сурати рамзҳо захира карда мешаванд. Дар файлҳои дуӣ бошад,
 додаҳо ба сурати пайдарпайи байтҳо навишта ва ё аз он хонда
 мешаванд. Барои кор кардан бо файлҳои дуӣ функсияҳои зиёде
 истифода бурда мешаванд. Барои муаррифӣ намудани файлҳои дуӣ
 ба сурати зерин амал кардан лозим аст: 
 Тарзи муаррифии тағйирёбандаи файл шакли зеринро дорад:
 Номи тағйирёбандаи файл: file of навъи иттилоот;
 Барои номгузории тағйирёбандаи файл низ аз қонуни
 номгузории идентификаторҳо истифода бурда мешавад. File
 сохтори файл буда, иттилооти он метавонанд аз навъи бутун, ҳақиқӣ
 ва ғайра бошад. 
 Илова бар ин, метавон аввал барои файлҳои дуӣ тип сохта,
 сипас, тағйирёбандаҳои лозимиро аз он навъ муаррифӣ кард. Наҳви
 иҷрои ин амал шакли зеринро дорад: 
 Type типи_тағйирёбандаи файл= file of навъи иттилоот;
 var номи тағйирёбандаи файл: типи_тағйирёбандаи файл;
 ⋮ 
 Ба сифати намуна тарзи муаррифии файли дӯии аз навъи
 бутунро дида мебароем, ки шакли зеринро дорад: 
 Type binfile=file of integer; 
 var intfile: binfile; 
 дар ин ҷо аввал навъи файл binfile аз намуди бутун муаррифӣ карда,
 сипас тағйирёбандаи файл бо номи intfile аз навъи binfile муаррифӣ
 карда шудааст. Ин тавр эълонкунӣ маънои онро дорад, ки муҳтавои
 файл ададҳои бутун мебошад. 
 (ном ва мавқеи ҷойгиршавии файл) пайваст карда мешавад;
 кор кардан бо иттилооти он боз (кушода) карда мешавад;
 навишта ва ё тавассути протседураи read() хонда мешаванд;
 меояд, ки ин амал тавассути протседураи close() иҷро карда
 мешавад. Тарзи истифодаи он шакли зеринро дорад: 
 close(тағйирёбандаи файл); 
 Функсияҳои зиёде барои кор кардан бо файлҳои бинорӣ
 мавҷуданд, ки баъдтар дар ин бора қайд хоҳем кард. 
 Файлҳои намуди бутун 
 Файлҳое, ки муҳтавои онҳо ададҳои бутун мебошанд,
 файлҳои намуди бутун ба ҳисоб мераванд. 
 Мисоли. Барномае нависед, ки ададҳои ҷуфти аз то n-ро
 дар файли дуӣ сабт намояд. 
 Матни барнома: 
 program test; 
 type 
 binfile = file of integer; 
 var 
 intfile: binfile; 
 i, n: integer; 
 begin 
 write('n='); read(n); 
 assign(intfile, 'juft.dat'); 
 rewrite(intfile); 
 for i:= to n do 
 if i mod = then 
 write(intfile, i); 
 close(intfile); 
 end. 
 Мисоли. Барномае нависед, ки ададҳои ҷуфти аз то n-
 ро, ки дар дар файли 'juft.dat' мавҷуданд, хонда дар саҳифаи тасвир
 хориҷ кунад. 
 program test; 
 type 
 binfile = file of integer; 
 var 
 intfile: binfile; 
 n: integer; 
 begin 
 assign(intfile, 'juft.dat'); 
 reset(intfile); 
 while not eof(intfile) do 
 begin 
 read(intfile, n); 
 write(n, ' '); 
 end; 
 close(intfile); 
 end. 
 Файлҳои намуди ҳақиқӣ 
 Файлҳое, ки муҳтавои онҳо ададҳои ҳақиқӣ мебошанд,
 файлҳои намуди ҳақиқӣ ба ҳисоб мераванд. 
 Мисол. Барномае нависед, ки n адади ҳақиқии додашударо
 аввал дар файл захира намуда, сипас аз файл онҳоро хонда,
 суммаашонро ҳисоб намуда, хориҷ кунад. 
 program test; 
 var 
 i, n: integer; 
 x, S: real; 
 f: file of real; 
 begin 
 S:=; 
 assign(f, 'file'); 
 write('n= > '); read(n); 
 rewrite(f); 
 for i:= to n do 
 begin 
 write(i, ' адад > '); 
 read(x); 
 write(f, x); 
 end; 
 reset(f); 
 while not eof(f) do 
 begin 
 read(f, x); 
 S += x; 
 end; 
 write('S= ', S::); 
 close(f); 
 end. 
 Функсияи seek() 
 То ҳол барои навиштан ва хондани иттилоот дар файлҳо аз
 равиши тартибӣ истифода карда будем. Дар ин равиш иттилоот бо
 он тартибе, ки дар файлҳо захира гардиданд, хонда мешаванд.
 Равиши тартибӣ равишӣ хуб мебошад, вале агар бихоҳем, ки чанд
 элементи массив ё record - ро аз файли таҳрир кунем, ин равиш
 чандон коромад нест. Файлҳоеро, ки дар онҳо бо ягон элемент агар
 тавонем мустақиман дастрасӣ дошта бошем, файлҳои дастрасии
 мустақим номида мешаванд. Номи дигари файлҳои мустақиман
 дастёбиро файлҳои тасодуфӣ меноманд. Ҳар як фйлҳои дуиро
 метавон ба сурати тасодуфӣ коркард кард. Дар ҳолати тасодуфӣ
 ҳамзамон метавон иттилоотро дар файл навишт ва ё хонд.
 Дар равиши дастёбии тартиби ҳар маротиба як элемент хонда
 шуда, ишорагари файл ба ибтидои элементи баъди равон карда
 мешавад. Бо ин тартиб тамоми иттилоот аз файл хонда мешаванд.
 Агар ишорагари файлро ба элементи дилхоҳ интиқол дода тавонем,
 метавон дар он мавқеъ элементи нав навишт ва ё элементи лозимиро
 хонд. Барои ба мавқеи лозимии файл равон кардани ишорагари
 файл аз функсияи seek истифода бурда мешавад. Тарзи истифодаи
 функсияи мазкур шакли зеринро дорад: 
 seek(ишорагари файл, рақами элемент); 
 Дар функсияи seek пас аз зикри номи файл, рақами элементе,
 ки ишорагари файл бояд ба он ҷо интиқол дода шавад, ишора карда
 мешавад. Амали хондан ва навиштани иттилоот тавассути
 функсияҳои read ва write иҷро карда мешавад. 
 Мисол. Бигузор дар файли бутуни 'juft.dat' ададҳои бутуни
 аз то навишта шуда бошанд. Барномаи зерин сар карда аз
 адади чорум иттилоотро мехонад. 
 program test; 
 type 
 binfile = file of integer; 
 var 
 intfile: binfile; 
 n: integer; 
 begin 
 assign(intfile, 'juft.txt'); 
 reset(intfile); 
 seek(intfile, ); 
 while not eof(intfile) do 
 begin 
 read(intfile, n); 
 write(n, ' '); 
 end; 
 close(intfile); 
 end. 
 Функсияи filesize 
 Барои муайян намудани андозаи файл аз функсияи filesize
 истифода мебаранд. Тарзи истифодаи функсияи мазкур чунин шакл
 дорад: 
 filesize(тағйирёбандаи файл); 
 Ин функсияро барои муайян намудани андозаи файл ва дар
 охири он навиштани иттилоот истифода мебаранд. Намунае аз
 мисоли функсияи fileSize: 
 var 
 f: file of byte; 
 begin 
 assign(f, 'ali.dat'); 
 reset(f); 
 writeln('размери файли ali.dat: ', filesize(f));
 close(f); 
 end. 
 Қайд. Истифодаи функсияи мазкурро барои файлҳои матнӣ
 маслиҳат намедиҳанд. 
 Функсияҳои дигари кор бо файлҳо 
 Барои кор кардан бо файлҳо функсияҳои зиёди дигаре низ
 мавҷуданд, ки маъмултарини онҳо дар ҷадвали зерин оварда
 шудааст: 
 procedure Assign(f: FileType; name: string) -Тағйир-ёбандаи файл f
 ро бо номи файл name пайваст мекунад. 
 procedure AssignFile(f: FileType; name: string-) Тағйир-ёбандаи
 файл f ро бо номи файл name пайваст мекунад. 
 function Eof(f: FileType): boolean - Ҳангоми расидан ба интиҳои
 файли f қимати True бармегардонад. 
 procedure Flush(f: FileType) - Маълумоти буфери файлро дар
 диск менависад. 
 function SeekEof(f: Text): boolean - Символи ҷои холиро сарфи
 назар карда, қимати True бармегардонад, агар идоракунӣ ба
 интиҳои файли матнии f расида бошад. 
 function SeekEoln(f: Text): boolean - Символи ҷои холиро сарфи
 назар карда, қимати True бармегардо-над, агар идоракунӣ ба
 интиҳои сатри файли матнии f расида бошад. 
 procedure Truncate(f: file of T) - Файли дуии f -ро бурида, сар
 карда аз мавқеи ишорагари файл (буридашуда) ҳамаи 
 элементҳоро нест мекунад. 
 Ба сифати намуна мисоли функсияи Truncate меорем, ки
 чунин шакл дорад: 
 Var 
 f: file of longint; 
 i, l: longint; 
 begin 
 assign(f, 'test.tmp'); 
 rewrite(f); 
 for i:= to do 
 write(f, i); 
 writeln('filesize before truncate: ', filesize(f));
 close(f); 
 reset(f); 
 repeat 
 read(f, i); 
 until i =; 
 truncate(f); 
 writeln('filesize after truncate: ', filesize(f));
 close(f); 
 end. 
 Функсияҳои нави кор бо файлҳои матнӣ 
 Функсияҳои OpenRead, OpenWrite, OpenAppend имконияти
 кушодан ва навиштани як сатрро дар файл фароҳам оварда, дорои
 методҳои (зербарномаҳои) зиёде мебошанд, ба монанди:
 f.ReadInteger, f.ReadString,..., f.Eof, f.Close, f.Write(...), f.Name.
 Функсияи ReadLines пайдарпайии сатрҳоро бармегардонад.
 Ҳангоми даъвати он файл кушода мешавад Пайдарпай метавон то ба
 охиррасии файл оператори даврии foreach-ро истифода кард. Пас аз
 анҷоми кори оператори мазкур файл маҳкам карда мешавад.
 Функсияи ReadLines муҳтавои файлро пурра хонда, дар
 ҳофиза нигоҳ намедорад: ҳар лаҳза дар хофиза фақат як сатр нигоҳ
 дошта мешаваду халос. 
 Мисол. Бигзор дар файли words.txt бо шакли зерин
 иттилоот навишта шуда бошанд:. дарахтон noun. сафедкунӣ verb. себ noun. одам noun. кадудзоркунӣ verb. кабуд noun. сафед adj. ҳунарманд adj. саҳарӣ adv. ҳунар noun... 
 Ҳамаи феълҳои verb-ро хориҷ кунед. 
 Ин масъаларо бо ду роҳ ҳал мекунем. 
 Роҳи якум: 
 begin 
 var f:= OpenRead('words.txt'); 
 while not f.Eof do 
 begin 
 var ss:= f.ReadlnString.ToWords; 
 if ss[] = 'verb' then 
 writeln(ss[]); 
 end; 
 f.Close; 
 end. 
 Роҳи дуюм: 
 begin 
 foreach var s in ReadLines('words.txt') do
 begin 
 var ss:= s.ToWords; 
 if ss[] = 'verb' then 
 writeln(ss[]); 
 end; 
 end. 
 Саволҳо барои мустаҳкамкунӣ 
 мавҷуда аст? 
 мешаванд? 
 бастани як файл истифода бурда мешавад? 
 мумкин аст? 
 дар саҳифаи тасвир навишт? 
 дорои чанд параметр аст? 
 руй медиҳад? 
 аст? 
 Масъалаҳо барои кори мустақилона 
 гузоред. 
 арифметики ва геометрии онҳоро ёбед. 
 масоҳати доираи бо ин давра маҳдудро ҳисоб кунед. 
 даҳии онро иваз кунед(cid:). = (cid:)(cid:), (cid:) = (cid:)(cid:)
 арифметики ва геометрии рақамҳои ададро ҳисоб кунед.
 Барномае нависед, ки бо истифода аз формулаи Герон масоҳати
 онро ҳисоб кунед. (cid:),(cid:),(cid:)
 Қайд.Формулаи Герон намуди зеринро дорад, 
 (cid:) = √(cid:)((cid:)−(cid:))((cid:)−(cid:))((cid:)−(cid:))
 ки дар ин ҷо r-нимпериметр мебошад. Ва аз геометрия маълум аст,
 ки P=a+b+c ва 
 (cid:) = = 
 адади максималиро ёфта, дар файли нав нависед. 
 навишта шудааст. Барномае нависед, ки дар охири ҳар сатр
 миқдори ҳарфҳои ҳар сатрро нависад. 
 миқдори ададҳои манфиро ҳисоб намуда дар файли нав нависед.
 ададҳоеро, ки дар файли якум мавҷуданду дар файли дуввум
 нестанд, нависед. 
 Масалан,... Таърихи рӯзи минималиро ёбед.
 шудаанд. Барномае нависед, ки …-и онро ҳисоб кунад.
  миқдори ададҳои ҷуфт ва тоқ 
  миқдори ададҳои мусбат ва манфӣ 
  миқдори ададҳои сода ва мураккаб 
  миқдор ва суммаи ададҳои мукаммал 
  қимати миёнаи арифметикӣ ва геометрии ададҳо
  адади максималӣ ва минималӣ 
 навишта шудааст. Барномае нависед, ки бо дохил кардани калима
 тарҷумаи онро барорад. 
 Барномаи ёфтани калонтарин тақсимкунанда (КТУ) – и онҳоро
 созед. 
 шудаанд, дода шудааст. Элементи максималиро дар ҳар сатр
 ёбед. 
 кунед. 
 кутоҳтарини онро нависед. 
 баробар, ки дар файли матнӣ ҷойгиранд, дода шудааст. Миқдори
 ададҳоеро, ки дар байни аввалин ва охирин адади калонтарин
 ҷойгиранд, ёбед. Агар дар гурӯҳи ададҳо танҳо як адади
 калонтарин мавҷуд бошад, он гоҳ хориҷ карда шавад. Натиҷаи
 амалиётҳо дар файли мавҷудбуда сабт карда шавад. 
 дода шудааст. Муайян карда шавад, ки оё дар массив ададҳои
 ҷуфт ва тоқ пайдарпай ҷойгир шудаанд ё не. Агар ададҳои ҷуфт
 ва тоқ пайдарпай ҷойгир бошанд, он гоҳ ва дар ҳолати баръакс
 рақами тартибии аввалин адади пайдарпайиро вайронкунанда
 хориҷ карда шавад. Натиҷаи амалиётҳо дар файли мавҷудбуда
 сабт карда шавад. 
 дар он сатрҳои файли додашуда ба таври лексикографӣ, яъне
 сатрҳо бо тартиби зиёдшавии коди рамзҳояшон (аз рамзи аввалин
 сар карда) ҷойгир шудаанд. 
 файли матнӣ дода шудааст. Дар байни онҳо аломатҳои "+" ва "-"
 –ро тавре гузоред(cid:), к,и(cid:) қ (cid:) и,…ма,т(cid:)и (cid:) ифодаи сохташуда ба адади бутуни
 додашудаи S баробар бошад. Агар чунин амал ғайриимкон
 бошад, он гоҳ сатри "No solution" ва дар ҳолати баръакс ифодаи
 тартибдодашуда дар файли нав хориҷ карда шавад. Агар чунин
 ифодаҳои тартибдодашуда, ки қиматашон ба S баробар аст,
 якчандто бошанд, он гоҳ яке аз онҳо дар файл хориҷ карда шавад.
 спирал дар файл нависед. 
 шудааст. Аъзоҳои боқимондаро аз рӯи формулаи 
 ҳисоб карда (cid:)д а,р(cid:) ф а,й…л с,а(cid:)б т кунед. Сипас, аъзои
 -уми онро хориҷ кунед. (cid:)(cid:) =
 ((cid:)(cid:)−) (cid:)(cid:)(cid:) 
 (cid:) 
 миқдори калимаҳо, микдори сатрҳо, миқдори калимаҳои
 такроршавандаро дар намуди ҷадвали содиротӣ дар экран хориҷ
 кунед. 
 ки оё калимаҳое, ки ҷумлаи якумро ташкил додаанд дар ҷумлаи
 дуюм дида мешаванд ё не. 
 кунед. 
 БОБИ. МАҶМӮҲО, БАХШҲО ВА ВА 
 ПАЙДАРПАЙИҲО 
 Муқаддима 
 Маҷмӯъ ин набори элементҳои аз ҷиҳати навъ якхела
 мебошад. Элементҳои маҷмӯъ метавонанд аз дилхоҳ навъи базавӣ,
 аз ҷумла: бутун, символӣ, ҳақиқӣ, сатрҳо ва ғайра иборат бошанд.
 Илова бар ин, додаҳои шуморишӣ ва фосиларо низ метавон ба
 сифати элементи маҷмӯъ истифода кард. Элементҳои маҷмӯъ дар
 дохили қавси квадратӣ навишта мешаванд. Ин навъ сохтори додаҳо
 дар барноманависӣ корбурди зиёд дошта, баръакси массивҳо
 элементҳои маҷмӯъ дорои рақами тартибӣ намебошанд. Масалан,
 маҷмӯи [,,,,, ] маҷмӯи ададҳои бутуни аз то - ро ифода
 мекунад. Аз сабаби он ки маҷмӯҳо дорои рақами тартиби
 намебошанд, бинобар ин маҷмӯи додашуда ба маҷмӯҳо и зерин
 баробарқувва мебошад: 
 [,,,,, ], [,,,,, ] ва ғ.
 Қайд. Дар маҷмӯъ ҳар як элемент бояд як маротиба
 иштирок кунад. 
 Муаррифӣ намудани маҷмӯҳо 
 Монанди дигар тағйирёбандаҳо маҷмӯҳо низ пеш аз
 истифодабарӣ муаррифӣ карда мешаванд. Тарзи муаррифии маҷмӯъ
 шакли зеринро дорад: 
 var тағйирёбандаи маҷмӯъ: set of тип; 
 Барои номгузорӣ ба маҷмӯъ, низ аз қонуни номгузории
 тағйирёбандаҳо истифода мебаранд. 
 Илова бар ин, метавон аввал бо истифода аз дастури type тип
 муаррифӣ намуда, сипас тағйирёбандаҳои лозимиро аз он тип
 муаррифӣ кард. Тарзи муаррификунии навъи маҷмӯъ шакли зеринро
 дорад: 
 type номи навъи маҷмӯъ=set of навъи элементҳо;
 Мисол. 
 type 
 ByteSet = set of byte; 
 StringSet = set of string; 
 Digits = set of ''..''; 
 charSet=set of ‘A’..’Z’; 
 Тавре дида мешавад, дар ин ҷо навъи маҷмӯъ сохта
 шудааст, ки мувофиқан аз навъҳои byte, string, фосилаи ададҳои аз 
 то ва фосилаи ҳарфҳои аз A то Z мебошанд. 
 Элементҳои як маҷмӯъ метавонанд ҳам аз навъи шуморишӣ
 ва ҳам аз навъи бо он мувофиқ бошанд. 
 var 
 bs: ByteSet:= [,,,..]; 
 fios: StringSet:= ['Али','Валӣ','Саид']; 
 Илова бар ин, метавон аввал тағйирёбандаҳои навъи
 маҷмӯъро муаррифӣ намуда, сипас ба онҳо қимат бахшид.
 Мисол. 
 type 
 Digits = set of..; 
 charSet = set of 'A'..'Z'; 
 var 
 x: Digits; 
 y: charSet; 
 begin 
 x:= [,,,, ]; 
 y:= ['B', 'D', 'F']; 
 Write(x); 
 end. 
 Маҷмӯъ метавонад холӣ ва ё дорои элемент бошад. Намунаи
 маҷмӯи холӣ шакли зеринро дорад: bs:=[]; 
 Операторҳои кор бо маҷмӯъ 
 Барои иҷрои ягон амалиёт бо маҷмӯъ операторҳои зиёде
 мавҷуданд. Ҳоло мо яке аз оператори аз ҳама маъмулро, ки in ном
 дошта, мавҷудияти элементро дар дохили маҷмӯъ месанҷад,
 мавриди баҳс қарор медиҳем. Тарзи истифодаи оператори мазкур
 шакли зеринро дорад: 
 элемент in [маҷмӯи элементҳо] 
 Оператори in элементи нишондодашударо дар дохили
 маҷмӯъ ҷустуҷӯ намуда, дар сурати пайдо шудани он қимати true
 бармегардонад. Дар акси ҳол бошад, қимати false. 
 Мисоли. 
 In [,,, ] = True 
 B In ['A', 'G'] = False 
 Мисоли. Ҷумла бо забони русӣ дода шудааст. Барномае
 нависед, ки миқдори ҳарфҳои садонок ва ҳамсадоро дар дохили он
 муайян кунад. 
 Матни барнома: 
 program test; 
 type 
 letters = set of 'A'..'я'; 
 var 
 sadon, hamsado: letters; 
 text: string; 
 i, g, s: byte; 
 begin 
 sadon:= ['A', 'а', 'Е', 'е', 'И', 'и', 'О', 'о', 'У', 'у', 'ы', 'Э', 'э', 'Ю',
 'ю', 'Я', 'я', 'Ё', 'ё']; 
 hamsado:= ['Б'..'Д', 'б'..'д', 'Ж', 'ж', 'З', 'з', 'К'..'Н', 'к'..'н', 'П'..'Т',
 'п'..'т', 'Ф'..'Щ', 'ф'..'щ', 'ь', 'ъ']; 
 write('Ҷумларо дохил кунед! '); 
 readln(text); 
 g:=; 
 s:=; 
 for i:= to length(text) do 
 begin 
 if text[i] in sadon 
 then 
 g:= g +; 
 if text[i] in hamsado 
 then 
 s:= s +; 
 end; 
 writeformat('дар ҷумлаи {} {} садонок ва {} ҳамсадо
 вуҷуд дорад. ', text, g, s); 
 end. 
 Амалҳои арифметикӣ бо маҷмӯҳо 
 Бо маҷмӯҳо метавон се амали арифметикӣ: ҷамъ, зарб ва
 тарҳ-ро иҷро кард. 
 Ҷамъи ду маҷмӯи A ва B гуфта, маҷмӯи С - ро меноманд, ки
 элементҳои он аз элементҳои маҷмӯи якум ё дуюм таркиб ёфтааст.
 Мисоли. Бигузор элементҳои маҷмӯи А ва В бо чунин шакл дода
 шуда бошанд: 
 А=[,,, ]; 
 В=[,, ]; 
 он гоҳ, А+В=[,,,, ] мешавад. 
 Шакли графикии ҷамъи ду маҷмӯъ чунин аст: 
 Зарби ду маҷмӯи A ва B гуфта, маҷмӯи С - ро меноманд, ки
 элементҳои он аз элементҳои якхелаи ҳар дуи маҷмӯҳо таркиб
 ёфтааст. 
 Мисоли. Бигузор элементҳои маҷмӯи А ва В чунин шакл дошта
 бошанд: 
 А=[,,, ]; 
 В=[,, ]; 
 он гоҳ, А*В=[, ] мешавад. 
 Шакли графикии зарби ду маҷмӯъ чунин аст: 
 Фарқи ду маҷмӯъ A ва B гуфта, маҷмӯи С - ро меноманд, ки
 элементҳои он дар маҷмӯи якум вуҷуд дошта, дар дуюм вуҷуд
 надошта бошанд. 
 Мисоли. Бигузор элементҳои маҷмӯи А ва В бо чунин шакл дода
 шуда бошанд: 
 А=[,,, ]; 
 В=[,, ]; 
 он гоҳ, А-В=[, ] мешавад. 
 Шакли графикии зарби ду маҷмӯъ чунин аст: 
 Қайд. Қимати А-В ба қимати В-А баробар намебошад.
 Амалҳои муқоиса бо маҷмӯҳо 
 Барои муқоисаи маҷмӯҳо метавон аз амалҳои муқоисакунӣ
 истифода кард. Тавре медонем, амалҳои муқоисакунӣ =, <>, >= ва
 <= мебошанд. Натиҷаи амалҳои муқоиса true ва ё false шуда
 метавонад. 
 Ду маҷмӯъ баробар номида мешавад, агар аз элементҳои
 якхела таркиб ёфта бошанд. Масалан, 
 a),,, ] = [,,, ] => True 
 b) ['A', 'B', 'C', 'D'] = ['B', 'E', 'G'] => False
 Ду маҷмӯъ нобаробар номида мешавад, агар аз элементҳои
 гуногун таркиб ёфта бошанд. Масалан, 
 a) [,,, ] <> [,,, ] => False 
 b) ['A', 'B', 'C', 'D'] <> ['B', 'E', 'G'] => True
 Агар маҷмӯи дуюм зермаҷмӯи маҷмӯи якум бошад, он гоҳ
 оператори “>=” қимати true бармегардонад, дар акси ҳол - false.
 Масалан, 
 a) [,,, ] >= [, ] => True 
 b) ['A', 'B', 'C', 'D'] >= ['B', 'E', 'G'] => False
 Агар маҷмӯи якум зермаҷмӯи мавмӯи дуюм бошад, он гоҳ
 оператори “=>” қимати true бармегардонад, дар акси ҳол - false.
 Масалан, 
 a) [,,, ] >= [, ] => False 
 b) ['A', 'B'] >= ['B', 'A', 'G'] => True 
 Ду протседура барои кор бо маҷмӯҳо 
 Бо ёрии протседураи include метавон элементеро ба маҷмӯъ
 илова кард. Бо ёрии протседураи exclude бошад, метавон элементеро
 аз маҷмӯъ нест кард. Тарзи истифодабарии протседураҳои мазкур
 шакли зеринро дорад: 
 Include(<маҷмуъ>, <элемент>) 
 Exclude(<маҷмӯъ>, <элемент>) 
 Илова бар ин, барои ба маҷмуъ илова намудани элемент
 метавон аз оператори + низ истифода кард. Тарзи истифодаи амали
 мазкур шакли зеринро дорад: 
 Номи маҷмӯъ+=элемент; 
 Барои аз маҷмӯъ нест намудани элемент метавон аз
 оператори низ истифода кард. Тарзи истифодаи амали мазкур
 шакли зеринро дорад: 
 ’–‘ Номи маҷмӯъ-=элемент; 
 Оператори foreach барои кор бо маҷмӯҳо 
 Барои пай дар пай ба даст овардани элементҳои маҷмӯъ,
 метавон аз оператори foreach истифода кард. Тарзи истифодаи
 оператори мазкур барои дастраси ба элементҳои маҷмӯъ шакли
 зеринро дорад: 
 foreach тағйирёбанда: тип in номи маҷмӯъ do 
 амалиёт 
 Мисол. Суммаи элементҳои маҷмӯи додашудаи навъи бутун
 ҳисоб карда шавад. 
 Матни барнома: 
 program test; 
 var 
 m: set of integer; 
 S: integer:=; 
 begin 
 m:= [,,,, ]; 
 foreach var x: integer in m do 
 S += x; 
 write('S=', S); 
 end. 
 Дохилкуни ва хориҷкунии маҷмуъҳо 
 Аз сабаби он ки элементҳои маҷмӯъ дорои рақами тартибӣ
 намебошанд, бинобар онҳоро наметавон тавассути операторҳои
 дохилкунӣ дохил намуд. Пас, барои иҷрои ин амал аввал
 тағйирёбандаи маҷмӯъ муаррифӣ карда шуда, сипас вобаста ба
 миқдори элементҳои маҷмӯъ давр ташкил карда мешавад. Дар
 оператори даврӣ тавассути тағйирёбандаи ёрирасон элементҳои
 маҷмӯъ дохил карда шуда, бо истифодаи протседураи Include ва ё
 амали + ба маҷмӯъ ҳамроҳ карда мешаванд. 
 Барои хориҷкунии массивҳо, метавон аз оператори foreach
 истифода кард. Тавассути оператори мазкур ҳар маротиба як
 элементи маҷмӯъ ба даст оварда шуда, хориҷ карда мешавад. Илова
 бар ин, дар PascalABC.NET тавассути дастурҳои хориҷ-кунӣ ба
 монанди тағйирёбандаҳои одӣ метавон элементҳои маҷмӯъро хориҷ
 намуд. 
 Мисоли. Ду маҷмӯи навъи бутун дода шудааст. Аввал
 элементҳои ин маҷмӯҳо ро аз клавиатура дохил намуда, сипас
 амалҳои арифметикӣ ва муқоисакуниро бо онҳо иҷро карда, натиҷа
 хориҷ карда шавад. 
 Матни барнома: 
 program test; 
 var 
 s, s: set of integer; 
 i, n, m, c, c: integer; 
 begin 
 s:= []; 
 s:= []; 
 writeln('Миқдори элементҳои маҷмӯи якумро дохил 
 кунед:'); 
 readln(n); 
 writeln('Элементҳои маҷмӯи якумро дохил кунед:');
 for i:= to n do 
 begin 
 readln(c); 
 include(s, c); 
 end; 
 writeln; 
 writeln('Миқдори элементҳои маҷмӯи дуюмро дохил 
 кунед:'); 
 readln(m); 
 writeln('Элементҳои маҷмӯи дуумро дохил кунед:');
 for i:= to m do 
 begin 
 readln(c); 
 include(s, c); 
 end; 
 writeln; 
 writeln('s+s: ', s + s); 
 writeln('s*s: ', s * s); 
 writeln('s-s: ', s - s); 
 writeln('s=s: ', s = s); 
 writeln('s<>s: ', s <> s); 
 writeln('s>=s: ', s >= s); 
 writeln('s<=s: ', s <= s); 
 writeln; 
 write('Маҷмӯи s: '); 
 foreach var x: integer in s do 
 write(x, ' '); 
 end. 
 Мисоли. Се маҷмӯи навъи рамзӣ дода шуда-аст: 
 Y=['A','B','D','R','M']; 
 Y=['A','H','D','R']; 
 Y=['A','R']. 
 Маҷмӯи зеринро созед: X = (Y Y) (Y-Y). 
 Натиҷро хориҷ намуда, муайян кунед, ки оё маҷмӯи Х маҷмӯи Y-ро
 дар бар мегирад? 
 Матни барнома: 
 program test; 
 const 
 Y = ['A', 'B', 'D', 'R', 'M']; 
 Y = ['A', 'H', 'D', 'R']; 
 Y = ['A', 'R']; 
 var 
 x: set of char; 
 c: char; 
 begin 
 x:= (y * y) + (y - y); 
 Writeln('Маҷмӯӣ X:'); 
 for c:= 'A' to 'R' do 
 if c in x then 
 Write(c, ' '); 
 Writeln; 
 Writeln('<= ', y <= x); 
 end. 
 Мисоли. Ребуси МУХА+МУХА=СЛОН-ро ҳисоб кунед.
 Матни барнома: 
 program test; 
 type 
 mn = set of..; 
 var 
 digit, m, u, h, a:..; 
 i, n, n: integer; 
 s, s: mn; 
 f: boolean; 
 procedure print(x, y: integer); 
 begin 
 write(x); 
 write(' + '); 
 write(x); 
 write(' = '); 
 writeln(y); 
 writeln; 
 end; 
 begin 
 s:= [ ]; 
 for m:= to do 
 begin 
 s:= s + [m]; 
 for u:= to do 
 if not (u in s) 
 then 
 begin 
 s:= s + [u]; 
 for h:= to do 
 if not (h in s) 
 then 
 begin 
 s:= s + [h]; 
 for a:= to do 
 if not (a in s) 
 then 
 begin 
 s:= s + [a]; 
 {адади МУХА} 
 n:= * m + * u + * h + a; 
 n:= * n; {адади СЛОН} 
 {ҳамаи рақмҳои адади slon - гуногун мебошанд} 
 f:= true; 
 s:= [ ]; 
 for i:= to do 
 begin 
 {рақамҳои адади slon-ро қайд мекунем} 
 digit:= n mod; 
 n:= n div; 
 {рақамҳо такрор шудаанд?} 
 f:= f and not (digit in s); 
 s:= [digit] + s; 
 end; 
 {агар ҳамаи рақамҳо гуногун бошанд} 
 if (s * s = [ ]) and f then 
 print(n, * n); 
 s:= s - [a]; 
 end; 
 s:= s - [h]; 
 end; 
 s:= s - [u]; 
 end; 
 s:= s - [m]; 
 end; 
 readln; 
 end. 
 Натиҷаи барнома: 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 + = 
 ⋮Бахшҳо (Section) 
 Бахш – ин зермаҷмӯӣ элементҳои коллексия дар фосилаи
 додашуда мебошад. Тарзи истифодаи бахш чунин аст: 
 a[from: to] ё a[from: to: step]. 
 Дар бахши [from: to) элементи to дар фосилаи додашуда
 намехобад. Бахш метавонад дорои қимати сарфиназаршуда бошад:
 a[f: ], a[: t], a[f:: s], a[: t: s], a[:: s]
 Бахшҳо барои сатрҳо, руйхатҳо, массивҳои динамикӣ ва
 ғайра истифода бурда мешаванд. 
 Азбаски бахшҳо як қисми бузурги барномасозӣ мебошанд,
 бинобар ин, онҳоро пурра мавриди баҳс қарор намедиҳем. Барои
 фаҳмо шудан танҳо якчанд мисолеро дида мебароему халос.
 Мисоли. Амалҳои асоси бо бахшҳо. 
 begin 
 var a:= Arr(,,,,,,,,, ); 
 var l:= Lst(,,,,,,,,, ); 
 var s:= 'PascalABC.NET '; 
 Println(a[:]);//аз элементи дуюм то панҷум 
 //(рақамгузори аз оғоз мегардад.) 
 Println(s[:]);//аз элементи ҳафтум то элементи
 //чордаҳум 
 Println(l[::]);//аз элементи дуюм то элементи //нуҳум,
 бо қадами 
 Println(l[::-]);//аз элементи ҳашт то элементи //якум, бо
 қадами - (баръакс) 
 Println('-' * );// символи - хориҷ кардан 
 Println(a[:]);//аз элементи дуюм то элементи //охирон
 Println(a[:]);//аз элементи нахустин то панҷум 
 Println('-' * ); 
 Println(l[:l.Count:]); //аз элементи сифрум то //охирон
 (Миқдори элементҳо) бо қадами 
 Println(l[::]);//аз элементи сифрум то охирон бо //қадами
 Println('-' * ); 
 Println(a[a.Length -:-:-]); //Баръакс хориҷ //кардани
 элемтҳо 
 Println(a[::-]); //Баръакс хориҷ кардани элемтҳо
 Println('-' * ); 
 Println(s[::-]); //Баръакс хориҷ кардани элемтҳо
 Println(a[::] + a[::]);//Аввал элементҳои ҷуфт, //сипас
 элементҳои тоқ 
 end. 
 Натиҷаи барнома шакли зеринро дорад: 
 [,,] 
 ABC.NET 
 [,,,] 
 [,,,] 
 -------------------- 
 [,,,,,,,] 
 [,,,,] 
 -------------------- 
 [,,,] 
 [,,,] 
 -------------------- 
 [,,,,,,,,,] 
 [,,,,,,,,,] 
 -------------------- 
 TEN.CBAlacsaP 
 [,,,,,,,,,] 
 Мисоли. Массиви додашударо ба ду қисм ҷудо карда,
 элементи қисмҳоро бо ҳамдигар иваз кунед. 
 begin 
 var a:= ArrGen(, i -> * i + ); 
 a.Println; 
 Assert(a.Length mod = ); 
 var n:= a.Length div; 
 a:= a[nn:] + a[:nn]; 
 a.Println; 
 end. 
 Пайдарпайиҳо (Series) 
 Пайдарпайиҳо sequence of T маҷмӯӣ элементҳое мебошанд, ки
 яке аз паси дигаре омада, яку якбора монанди массивҳо дар ҳофиза
 нигоҳ дошта намешаванд. Барои таҳия намудани чунин 
 пайдарпайии додаҳо аз якчанд алгоритм истифода бурда мешавад.
 Ҳамин тариқ дар ҳофиза дар ҳар вақт танҳо як элемент нигоҳ дошта
 мешаваду халос. Элементҳои пайдарпайиро метавон тавассути
 оператори даврии foreach коркард карда тавассути Println хориҷ
 кард. 
 Ҳоло ду усули таҳия намудани пайдарпайиҳоро бо мисолҳо
 дида мебароем. 
 Мисоли. Таҳия намудани пайдарпайиҳо тавассути методи
 Range. 
 begin 
 {Пайдарпайии ададҳо аз то } 
 var sq: sequence of integer:= Range(, ); 
 {Хориҷкунии элементҳои пайдарпайи} 
 foreach var x in sq do 
 Print(x); 
 Println; 
 {Пайдарпайии ададҳо аз то бо қадами } 
 var sq:= Range(,, ); 
 sq.Println(','); 
 //Пайдарпайии ҳарфҳо аз a то z 
 Range('a', 'z').Println; 
 {Порчаи [a,b] ([.,.])-ро ба n () қисм тақсим карда,
 дарозии ҳар як қисмро хориҷ мекунад} 
 Range(.,., ).Println; 
 end. 
 Натиҷаи барнома:,,,,,, 
 abcdefghijklmnopqrstuvwxyz......... 
 Мисоли. Таҳияи пайдарпайиҳо тавассути методи Seq.
 begin 
 //Пайдарпайи аз ададҳои, ва -дорои элемент
 var s:= Seq(,, ); 
 Дар барноманависии ба объектҳо нигаронидашуда, зербарномаро метод
 мегӯянд. 
 s.Println; 
 //Пайдарпайи аз то адади 
 SeqFill(, ).Println; 
 //Пайдрпайи аз адади тасодуфӣ 
 SeqRandom().Println; 
 //Пайдарпайии квадрати ададҳои аз то 
 SeqGen(, i -> i * i, ).Println; 
 //Пайдарпайии дараҷаи аввалаи адади 
 SeqGen(,, x -> x * ).Println; // степени 
 //Пайдарпайии адади аввалаи Фибоначчӣ 
 SeqGen(,,, (x, y)-> x + y).Println; 
 end. 
 Натиҷаи барнома: 
 Методҳои пайдарпайи 
 Пайдарпайиҳо дорои методҳои зиёде мебошанд, ки дар
 таркиби технологияи LINQ мавҷуданд. Аз ҳама асоситарини онҳо:
  Print, Println – хориҷкунӣ. 
  Min, Max, Sum, Average – минимум, максимум, сумма ва
 қимати миёна. 
  Select – инъикос (проекция), Where – 
 полонидан(фильтрация), OrderBy – мураттабсозӣ. 
 Методҳои пайдарпайиро метавон барои массивҳо, руйхатҳо ва
 маҷмӯҳо татбиқ кард. 
 Ҳоло ин методҳоро бо мисолҳои мушаххас дида мебароем.
 Мисоли. Минимум, максимум, сумма ва қимати миёнаи
 арифметикии элементҳои пайдарпайиро ҳисоб кунед. 
 begin 
 // элементи тасодуфӣ аз то 
 var s:= SeqRandom(,, ); 
 s.Println; //Хориҷкунӣ 
 Println('Минимум =', s.Min); 
 Println('Максимум =', s.Max); 
 Println('Сумма =', s.Sum); 
 Println('Қимати миёнаи арифметикӣ =', s.Average);
 end. 
 Мисоли. Истифодаи меодҳои Select, Where, OrderBy.
 begin 
 //Таҳия намуудани пайдарпайӣ 
 var s:= Seq(,,,, -,, -); 
 s.Println; //Хориҷкунӣ 
 //Хориҷкуни элементҳои ҷуфт 
 s.Where(x -> x mod = ).Println; 
 // ду воҳид зиёд намудани элементҳо 
 s.Select(x -> x + ).Println; 
 //Хориҷ намудани решаи квадратии ададҳои мусбат 
 s.Where(x -> x > ).Select(x -> sqrt(x)).Println;
 {Ду воҳид зиёд намудни элементҳои тоқ ва хориҷ 
 намудани натиҷа} 
 s.Select(x -> x + ).Where(x -> x mod = ).Println;
 //Пайдарпайи аз Насаб ва синусоли коргарон 
 var a:= Seq(('Алиев', ), ('Кармов', ), 
 ('Валиев', ), ('Саидов', ), 
 ('Халимов', ), ('Салимов', )); 
 //Мураттабсози аз рӯӣ Насаб 
 a.OrderBy(t -> t[]).Println; 
 //Мураттабсозӣ аз рӯӣ сину сол 
 a.OrderBy(t -> t[]).Println; 
 {Хориҷ намудани коргарони синну солашон аз боло}
 a.Where(t -> t[] > ).Println; 
 end. 
 Мисоли. Элементи максималии сутунҳои матритсаро
 ёбед. 
 begin 
 var (m, n):= (, ); 
 var a:= MatrRandom(m, n); 
 a.Println; 
 a.Cols.Select(col -> col.Max).Println; 
 end. 
 Қайд. Дар ин ҷо барои таҳия намудани матритса за методи
 MatrRandom истифода шудааст. Col бошад, сутуни матритсаро
 ифода мекунад. 
 Методҳои нави кор бо пайдарпайиҳо 
 Барои кор кардан бо пайдарпайиҳо методҳои зиёди наве
 мавҷуданд. Ҳоло якчандтои онҳоро бо мисолҳои мушаххас дида
 мебароем. 
  Cartesian – зарби декартӣ. 
  SplitAt – ба ду пайдарпайи тақсим намудани пайдарпайӣ.
  Interleave – бадалшавии (чередование) элементҳои
 пайдарпайӣ. 
  Partition –ҷудокунии ба пайдарпайиҳо аз рӯӣ шарт.
  Batch – ҷудокунӣ ба пайдарпайиҳои дарозиашон баробар.
 Мисоли. Истифодаи методи Cartesian. 
 begin 
 //Пайдарпайии ададҳои аз то 
 var s:= Range(, ); 
 //Пайдарапйи аз ҳарфҳои х ва у 
 var s:= Range('x', 'y'); 
 //Зарби скалярии s ва s 
 s.Cartesian(s).Println; 
 s.Cartesian(s, (x, y)-> x + y).Println;
 end. 
 Натиҷаи барнома: 
 (,x) (,y) (,x) (,y) (,x) (,y) 
 x y x y x y 
 Мисоли. Истифодаи методҳои SplitAt, Partition ва Batch.
 Begin 
 //Пайдарпайии ададҳои аз то 
 var sq:= Range(, ); 
 sq.Println;//Хориҷкунӣ 
 //Ба ду қисми -элементӣ ҷудо кардани пайдарпайӣ 
 Println(sq.SplitAt()); 
 //муаррификунии ду пайдарпайӣ 
 var sq, sq: sequence of integer; 
 //Ба ду зерпайдарпайтӯи ҷудо кардани пайдарпайӣ 
 (sq, sq):= sq.SplitAt(); 
 //Хориҷкунии пайдарпайии қиматбадалкунанда 
 sq.Interleave(sq).Println; 
 //Аз ададҳои ҷуфт ҳосил кардани зерпайдарпайӣ 
 Println(SeqRandom().Partition(x -> x.IsEven)); 
 //Ба се қисми баробар ҷудо кардани пайдарпайӣ 
 sq.Batch().Println; 
 //sq.SelectMany(x->x).Println; 
 //Суммаи элементҳои ҳар як зерпайдарпайиро ҳисоб кардан
 sq.Batch(, seq -> seq.Sum).Println; 
 end. 
 Натиҷаи барнома: 
 ([,,,,],[,,,,]) 
 ([,,,,,,,],[,,,,])
 [,,] [,,] [,,] [] 
  Tabulate – ҷадвали қиматҳои функсия 
  Pairwise – аз ҷуфтҳои ҳамсоя ба tuple-ҳо ҷудо намудан
  Numerate – рақамгузории пайдарпайи 
  ZipTuple – якҷоякунии ду пайдарпайии ба пайдарпайии
 tuple –ҳо ҷудо намудан 
  UnzipTuple – ҷудокунии пайдарпайии tuple –ҳо ба ду
 пайдарпайи. 
 Мисоли. Истифодаи функсияҳои Tabulate, Pairwise,Numerate.
 begin 
 //Ҷадвали қиматҳои функсияи y=x*x 
 Range(, ).Tabulate(x -> x * x).Println; 
 //Аз элементҳои ҳамсояи фослаи [,] ба tuple-ҳо ҷудо намудан
 Range(, ).Pairwise.Println; 
 //Рақамгузорӣ намудани элементҳои пайдарпайӣ 
 Arr('Алиев', 'Валиев', 'Каримов', 'Ҳалимов').Numerate.Println;
 'ABCDEF'.Numerate.Println; 
 end. 
 Натиҷаи барнома: 
 (,) (,) (,) (,) (,) (,) (,) (,) (,) (,)
 (,) (,) (,) (,) (,) 
 (,Алиев) (,Валиев) (,Каримов) (,Ҳалимов) 
 (,A) (,B) (,C) (,D) (,E) (,F) 
 Мисоли. Истифодаи функсияҳои ZipTuple, UnzipTuple
 Begin 
 var sq:= Range('a', 'h'); 
 sq.Println; 
 var sq:=.Step; 
 var sq:=..Step(.); 
 var q:= sq.ZipTuple(sq).Println; 
 writeln(q.UnZipTuple); 
 var q:= sq.ZipTuple(sq, sq).Println; 
 writeln(q.UnZipTuple); 
 end. 
 Натиҷаи барнома: 
 Abcdefgh 
 (a,) (b,) (c,) (d,) (e,) (f,) (g,) (h,) 
 ([a,b,c,d,e,f,g,h],[,,,,,,,]) 
 (a,,.) (b,,) (c,,.) (d,,) (e,,.) (f,,) (g,,.) (h,,)
 ([a,b,c,d,e,f,g,h],[,,,,,,,],[.,,.,,.,,.,])
  MinBy, MaxBy – минимум-максимум аз рӯӣ майдон 
  TakeLast(n) –n элементи охирон 
  ToArray, ToList, ToLinkedList, ToHashSet, ToSortedSet,
 AsEnumerable –аз як типи пайдарпайи ба типи дигар табдил
 додан 
 Мисоли. Истифодаи функсияҳои MinBy, MaxBy, TakeLast.
 begin 
 var a:= Seq(('Алиев', ), ('Валиев', ), 
 ('Каримов', ), ('Саидов', )); 
 //Сину соли хурдтарин 
 Println(a.MinBy(x -> x[])); 
 //Насаби калонтарин (сатри калонтарин аз рӯӣ код)
 Println(a.MaxBy(x -> x[])); 
 // элементи охирон аз фосилаи [,] 
 Range(, ).TakeLast().Println; 
 end. 
 Натиҷаи барнома: 
 (Валиев,) 
 (Саидов,) 
 Мисоли. Истифодаи функсияҳои ToArray, ToList, 
 ToLinkedList, ToHashSet, ToSortedSet, AsEnumerable. 
 begin 
 var s:= Seq(,,,,,,,, ); 
 Println(s.ToHashSet); 
 Println(s.ToSortedSet); 
 var a: array of integer:= s.ToArray; 
 var l: List<integer>:= a.ToList; 
 var ll: LinkedList<integer>:= a.ToLinkedList;
 var s: sequence of integer:= a.AsEnumerable;
 end. 
 Луғатҳо (Dictionaries) 
 Луғатҳо коллексияҳое мебошанд, ки дорои майдонҳои
 қимат ва калид мебошанд. Ҳоло бо мисолҳои мушаххас ин навъ
 додаҳоро дида мебароем. 
 Мисоли. Барномаи луғати тоҷикӣ англисиро нависед.
 Begin 
 var dict:= new Dictionary<string, string>;
 dict['coat']:= 'буз'; 
 dict['dog']:= 'саг'; 
 dict['monkey']:= 'маймун'; 
 dict['donkey']:= 'хар'; 
 dict['cat']:= 'гурба'; 
 dict['cow']:= 'гов'; 
 //Хориҷкунии ҳамаи элементҳои луғат 
 foreach var word in dict.Keys do 
 WritelnFormat(' {}-{}', word, dict[word]);
 //Дохилкунии калид 
 var key: string = ReadString; 
 //Хориҷкунии калимаи ёфташуда 
 if key in dict.Keys then 
 WritelnFormat(' {}-{}', key, dict[key]); 
 end. 
 Мисоли. Дар файли матн дода шудааст. Миқдори 
 такроршавии ҳар як калимаи онро муайян кунед. 
 Begin 
 var d:= new Dictionary<string, integer>; 
 foreach var s in ReadLines('words.txt') do
 foreach var word in s.ToWords do 
 d[word]:= d.Get(word) +; 
 d.Print(NewLine); 
 end. 
 Ин мисолро метавон ба таври содатар низ навишт.
 begin 
 ReadLines('words.txt').SelectMany(s -> 
 s.ToWords()).GroupBy(v -> v).ToDictionary(x -> x.Key, x ->
 x.Count()).PrintLines; 
 end. 
 Саволҳо барои мустаҳкамкунӣ 
 истифода кард? 
 мешавад? 
 Масъалаҳо барои кори мустақилона 
 маротиба омадаанд, хориҷ карда шаванд. 
 маротиба омадаанд, хориҷ карда шаванд. 
 он танҳо як маротиба такрор шудааст? 
 шаванд. 
 ёфта шавад. 
 тасвир кардан мумкин аст. 
 г(cid:)ун+ог(cid:)уна=нд(cid:)? 
 шудааст ёфта шавад. 
 шавад. 
 мешаванд чоп карда шаванд. 
 калимаи А калимаи B тартиб додан мумкин аст ё не?.
 мавҷудбуда хориҷ карда шавад. 
 карда шаванд. 
 карда шавад. 
 ва д-и онро ҳисоб кунад. 
 сатрҳои боқимонда аз элементҳои сатри якум ва ҷойивазкунии
 онҳо таркиб ёфтаанд. 
 зерин иҷро мешавад:. 
 соддаи он ёфта((cid:) ш+ав(cid:)а)н(д(cid:). +(cid:) ) = 
 ҳисоб карда шавад. Бе назардошти ҷои холигӣ ва нуқта.
 карда шавад.