ОООсссмммооонннааалллиииеееввв ААА...БББ... АААррркккааабббаааеееввв ННН...ККК... BBBooorrrlllaaannnddd PPPaaassscccaaalll 777...000 Программалоонун негиздери 1 – БӨЛҮК ЭКИНЧИ БАСЫЛЫШЫ Ош ш., 2012 - ж. УДК 004 ББК 32.973 – 10 О – 74 Рецензенттер: Ош технологиялык университетинин 1-проректору, ф.-м.и.д., профессор А.Сопуев. Ош мамлекеттик университетинин «Информациялык техноло- гиялар жана автоматташтырылган системалар» кафедрасынын башчысы ф.-м.и.к., доцент А.О. Кыбыраев. Осмоналиев А.Б., Аркабаев Н.К. О – 74 Borland Pascal 7.0. Программалоонун негиздери. Окуу китеби: I бөлүк. (Экинчи басылышы) 2012, – 256 б. ISBN 978 – 9967 – 03 – 452 – 5 Бул китепте Borland Pascal талдоонун интегралданган чөйрөсүнүн операторлор, модулдар менен иштөө, динамикалык кошулуучу библиотекалар, берилгендер структурасынын классификациясы, статикалык структурадагы берилгендер менен иштөө, рекурсия, файлдар менен иштөө сыяктуу каражаттарынын баяндамалары берилди. Көптөгөн толук иштелип бүткөн мисал-программалардын негизинде бул каражаттардын пайдаланылыш идеялары жана иштөө принциптери каралды. Китеп 12 негизги темадан жана тиркемелерден туруп жетишерлик сандагы мисалдар жана өз алдынча иштөө үчүн тапшырмалар камтылган. Окуу китеп мектептердин жогорку класстарынын окуучулары, жогорку окуу жайлардын студенттери жана жалпы эле MS DOS операциялык системасы үчүн Turbo Pascal программалоо системасынын программаларды талдоонун Borland Pascal 7.0 интегралданган чөйрөсүндө прграммалоону үйрөнүүчүлөр үчүн арналды. Окуу китеби Ош МУ нун Окумуштуулар Кеңешинин чечими менен жарык көрүүгө сунушталды. Токтом №8, 26.06.2008-ж. О 2404090000-08 УДК 004 ББК 32,973 – 01 ISBN 978 – 9967 – 03 – 452 – 5 © Осмоналиев А.Б., Аркабаев Н.К., 2012 2 МАЗМУНУ АЛГЫ СӨЗ .......................................................................................................... 8 КИРИШҮҮ ........................................................................................................ 10 1. BORLAND PASCAL WITH OBJECTS 7.0 - ПРОГРАММАЛАРДЫ ИШТЕП ЧЫГУУНУН ПРОФЕССИОНАЛДЫК ПАКЕТИ ............... 12 1.1. Компилятордун модели ........................................................................ 12 1.1.1. Лексикалык анализатор .................................................................. 13 1.1.2. Синтаксистик анализатор ............................................................ 14 1.1.3. Семантикалык анализ ..................................................................... 14 1.1.4. Кодду генерациялоого даярдоо ........................................................ 15 1.1.5. Кодду генерациялоо .......................................................................... 15 1.1.6. Идентификаторлор жадыбалдары .............................................. 15 1.1.7. Borland Pascal 7.0 чөйрөсүнүн структурасы ............................... 15 1.2. Borland Pascal программаларды талдоо чөйрөсү ............................ 19 1.2.1. ВР – талдоонун интегралданган чөйрөсүн ишке салуу ............. 19 1.2.2. ВР чөйрөсүнүн менюсу ..................................................................... 20 1.2.3. Талдоонун интегралданган чөйрөсүнүн «ысык (горячие)» клавишалары ............................................................................................... 30 2. СИМВОЛДОР ЖЫЙЫНДЫСЫ, ЛЕКСЕМАЛАР, АЖЫРАТКЫЧТАР ..................................................................................... 38 2.1. Символдор жыйындысы ...................................................................... 38 2.2. Лексемалар .............................................................................................. 39 2.2.1. Атайын символдор ........................................................................... 40 2.2.2. Резервделген (кызматчы) сөздөр .................................................... 40 2.2.3. Идентификаторлор ......................................................................... 41 2.2.4. Эн-белгилер (Меткалар) .................................................................. 44 2.2.5. Сандар ................................................................................................. 44 2.2.6. Жолчолор ............................................................................................ 45 2.2.7. Комментарийлер .............................................................................. 46 2.3. Ажыраткычтар ....................................................................................... 46 3. ПРОГРАММАНЫН СТРУКТУРАСЫ ................................................... 48 3.1. Программанын бөркү ........................................................................... 49 3.2. Пайдаланылуучу модулдарды көрсөтүү бөлүгү (uses cүйлөмү) ... 49 3.3. Баяндоолор бөлүгү ................................................................................. 50 3.3.1. Эн-белгилерди (Меткаларды) баяндоо ......................................... 51 3.3.2. Типтерди баяндоо ............................................................................ 51 3.3.3. Константаларды баяндоо .............................................................. 71 3.3.4. Өзгөрүлмөлөрдү баяндоо .................................................................. 77 3 3.3.5. Процедураларды жана функцияларды баяндоо ......................... 79 3.3.6. Экспортту баяндоо ......................................................................... 79 3.4. Операторлор бөлүгү (оператордук блок) ......................................... 80 4. АМАЛДАР ЖАНА ТУЮНТМАЛАР ...................................................... 83 4.1. Туюнтмалар, амалдар жана операнд түшүнүктөрү ....................... 83 4.2. Амалдардын приоритети жана алардын классификациясы ....... 83 4.2.1. Амалдардын приоритети .............................................................. 83 4.2.2. Амалдарды классификациялоо ...................................................... 84 4.3. Амалдарды баяндоо .............................................................................. 85 4.3.1. Арифметикалык амалдар .............................................................. 85 4.3.2. Катыш амалдары ............................................................................ 86 4.3.3. Бульдук (логикалык) амалдар ......................................................... 87 4.3.4. Разряддар боюнча (биттик) бульдук жана жылыш амалдары ....................................................................................................................... 88 4.3.5. Жолчолук амал ................................................................................. 89 4.3.6. Көптүктөр үстүнөн амалдар ....................................................... 90 4.3.7. Адрести алуу (көрсөткүчтү алуу) амалы ................................... 91 5. ОПЕРАТОРЛОР .......................................................................................... 93 5.1. Жөнөкөй операторлор .......................................................................... 94 5.1.1. Ыйгаруу оператору .......................................................................... 94 5.1.2. Шартсыз өтүү оператору ............................................................. 95 5.1.3. Процедурага (функцияга) кайрылуу оператору .......................... 96 5.2. Структуралык операторлор ............................................................... 97 5.2.1. Курама оператор ............................................................................. 97 5.2.2. Шарттуу операторлор .................................................................. 98 5.2.3. Кайталоо операторлору ............................................................... 104 6. МОДУЛДАР ............................................................................................... 112 7. ДИНАМИКАЛЫК БАЙЛАНЫШУУЧУ БИБЛИОТЕКАЛАР ....... 119 7.1. Динамикалык байланышуучу библиотекаларды түзүү ............. 120 7.2. DLL ден процедураларды жана функцияларды импорттоо ...... 123 7.2.1. Аты боюнча импорттоо ............................................................. 123 7.2.2. Жаңы аты боюнча импорттоо .................................................. 123 7.2.3. Иреттик номери боюнча импорттоо ....................................... 124 7.2.4. Импорт модулдары ....................................................................... 124 7.3. DLL деги өзгөрүлмөлөрдүн аракет этүү аймагы .......................... 125 7.4. DOS тун корголгон режиминде жана Windows да биргелешип пайдаланылуучу DLL дер ................................................................. 126 8. БЕРИЛГЕНДЕР СТРУКТУРАСЫН КЛАССИФИКАЦИЯЛОО ... 127 8.1. Статикалык структурадагы берилгендер ..................................... 127 8.2. Динамикалык структурадагы берилгендер .................................. 131 4 9. СТАТИКАЛЫК СТРУКТУРАДАГЫ БЕРИЛГЕНДЕР МЕНЕН ИШТӨӨ ....................................................................................................... 132 9.1. Жөнөкөй типтеги берилгендер менен иштөө ................................. 132 9.1.1. Жөнөкөй жана жолчолук типтеги өзгөрүлмөлөрдүн маанилерин кийрүү-чыгаруу ................................................................... 132 9.1.2. Жөнөкөй типтеги маанилер менен иштөө үчүн тиркелген негизги процедуралар жана функциялар .............................................. 137 9.1.3. Пайдалануучулук жөнөкөй типтер менен иштөө өзгөчөлүктөрү ........................................................................................... 138 9.1.4. Типтерди өзгөртүп түзүүнүн стандарттык функциялары . 139 9.2. Бир тектүү структурадагы курама берилгендер менен иштөө .. 140 9.2.1. Массивдер ......................................................................................... 140 9.2.2. Массивдерди сорттоо ................................................................... 142 9.2.3. Экилик издөө (бинардык издөө, жарымга бөлүп издөө) ........... 148 9.2.4. Эки өлчөмдүү массивдер менен иштөөгө мисалдар ................. 150 9.2.5. Жолчолор .......................................................................................... 153 9.2.6. Көптүктөр ...................................................................................... 159 9.3. Бир тектүү эмес структурадагы курама берилгендер менен иштөө ...................................................................................................... 161 9.3.1. Жазуулар ........................................................................................... 161 9.4. Типтердин биргелешүүчүлүгү ........................................................... 166 9.4.1. Туюнтмалардагы биргелешүүчүлүк ............................................ 166 9.4.2. Ыйгаруу боюнча биргелешүүчүлүк .............................................. 167 10. ПРОЦЕДУРАЛАР ЖАНА ФУНКЦИЯЛАР ....................................... 170 10.1. Процедуралардын жана функциялардын структурасы ............ 170 10.2. Процедураларды жана функцияларды колдонууда идентификаторлордун аракет этүү аймагы (көрүнүктүүлүк аймагы) .................................................................................................. 173 10.3. Параметрлерди берүү жолдорун классификациялоо ................. 175 10.3.1. Value in параметрлери (TP тилинде реализацияланган) ...... 176 11.3.2. Value out параметрлери ............................................................... 177 10.3.3. Value inout параметрлери ........................................................... 178 10.3.4 Add in параметрлери (TP тилинде раелизацияланган) .......... 178 10.3.5. Addr out параметрлери ................................................................ 179 10.3.6. Addr inout параметлери ............................................................... 179 10.4. Turbo Раscal тилинде параметрлерди берүү ................................. 180 10.4.1. Параметр-маанилер .................................................................... 181 10.4.2. Параметр-өзгөрүлмөлөр .............................................................. 181 10.4.3. Параметр-константалар ........................................................... 181 10.4.4 Типсиз параметрлер ..................................................................... 182 10.4.5. Ачык параметр-массивдер .......................................................... 185 10.5. Процедуралык директивалар ......................................................... 187 10.5.1. near жана far директивалары .................................................... 187 10.5.2. forward директивасы .................................................................... 187 5 10.5.3. interrupt директивасы ................................................................. 188 10.5.4. export директивасы ...................................................................... 188 10.5.5. external директивасы .................................................................. 188 10.5.6. assembler директивасы ................................................................ 189 10.5.7. inline директивасы ...................................................................... 189 11. РЕКУРСИЯ .............................................................................................. 190 11.1. Рекурсия түшүнүгү жана негизги аныктоолор........................... 190 11.2. Рекурсивдик процедуралардын формалары ............................... 193 11.2.1. Рекурсивдик ылдыйлоодо аракеттерди аткаруу ................... 195 11.2.2. Рекурсивдик кайтууда аракеттердин аткарылышы ........... 196 11.2.3. Рекурсивдик ылдыйлоодо да, кайтууда да аракеттердин аткарылышы ............................................................................................ 197 11.3. Ханой мунаралары жөнүндөгү маселе ......................................... 199 11.4. Тез сорттоо .......................................................................................... 202 12. ФАЙЛДАР ................................................................................................ 205 12.1. Физикалык жана логикалык файл түшүнүгү ............................ 205 12.1.1. Физикалык файлдын структурасы .......................................... 205 12.1.2. Логикалык файлдын структурасы ........................................... 205 12.2. Turbo Pascal чөйрөсүндө файлдарды классификациялоо ........ 206 12.3. Файлдардын арналышы. Файлдарды ачуу жана жабуу .......... 207 12.4. Файлдар менен иштөө үчүн жалпы каражаттар ........................ 209 12.4.1. System модулунун процедуралары жана функциялары ......... 209 12.4.2. Dos модулунун константалары, типтери, процедуралары жана функциялары ................................................................................. 211 12.5. Типтештирилген файлдар ............................................................... 214 12.5.1. Типтештирилген файлдар менен иштөө үчүн процедуралар жана функциялар .................................................................................... 214 12.6. Тексттик файлдар ............................................................................. 217 12.6.1. Тексттик файлдын структурасы ............................................ 217 12.6.2. Текстик файлдын file of Char дан айырмачылыктары ........ 218 12.6.3. Тексттик файлдар менен иштөө үчүн процедуралар жана функциялар ............................................................................................... 219 12.7. Типтештирилбеген файлдар ........................................................... 219 12.7.1. Типтештирилбеген файлдар менен иштөө үчүн процедуралар жана функциялар .................................................................................... 220 1 – ТИРКЕМЕ. КАТАЛАР ........................................................................... 221 Программалардагы каталардын категориялары ............................... 222 Каталар жөнүндө билдирүүлөр ............................................................... 223 Компилятордун билдирүүлөрү .............................................................. 223 Аткаруу убактысынын каталары .......................................................... 232 DOS тун каталары .................................................................................. 232 Кийрүү-чыгаруу каталары ...................................................................... 233 Критикалык каталар ................................................................................ 234 6 Фаталдык каталар ...................................................................................... 234 Корголгон режимдеги (DPMI) DOS интефейсинин каталары .......... 236 Орнотуу каталары (DPMIINST) ............................................................ 236 Аткаруу этабы администраторунун каталары ................................ 237 DPMI - сервердин каталары ................................................................... 238 2 – ТИРКЕМЕ. КОМПИЛЯТОРДУН ДИРЕКТИВАЛАРЫ ................. 241 3 – ТИРКЕМЕ. ASCII КОДУНУН СИМВОЛДОР ТАБЛИЦАСЫ ...... 250 4 – ТИРКЕМЕ. КЛАВИАТУРАНЫН КОДДОР ТАБЛИЦАСЫ .......... 252 Клавиатуранын кеңейтирилген коддору ............................................... 252 Клавиатуранын сурамжылоо (опрос) коддору ..................................... 253 АДАБИЯТТАР ................................................................................................ 255 7 АЛГЫ СӨЗ Башка тилди жандай жакшы көрсөм да, Эне тилди сүйгөнүмдөн жаңылбайм. (Алыкул Осмонов) Азыркы учурда персоналдык компьютерлер илимдин жана эл чарбасынын өнүгүшүндө дегеле адамзаттын турмушунда чечүүчү факторлордун бири болуп калды. Компьютерлердин адамзат турмушунун ар түрдүү сфераларына сүңгүп кириши алардын көптөгөн актуалдуу маселелерди чечүүдө колдонулушун шарттоо менен дээрлик ар бир жумушчу орунда компьютерлерди колдонуу зарылдыгына алып келди. Компютердик техникалар жаатындагы прогресс келечек өз ишмердүүлүгүндө компьютердик илимдердин жетишкендиктерин сабаттуу колдоно билген инсандардыкы болорун айгинелеп олтурат. Ушундай информациялык доордун эпкининен четте калбаган биздин эгемендүү Кыргыз Республикасында да албетте, акыркы он жылдарда бир топ кубанарлык жетишкендиктер болду. Көптөгөн окуу жайларыбызда, мектептерде, ишкана-мекемелерде ал тургай балдар бакчаларына чейин дээрлик акыркы үлгүдөгү компьютерлер орун алды. Көптөгөн жогорку окуу жайларыбызда ушул компьютердик техникаларды иштете билүүчү, эң оболу компьютерлердин программалык камсыздандыруусу менен түздөн-түз иш алып баруучу адистер даярдалынып келүүдө. Бул адистиктердин окуу пландарында компьютердик илимдер тобуна кирген бир нече окуу предметтери каралган. Окутуу тажрыйбасы көрсөткөндөй, компьютердик илимдер боюнча предметтерди окуп үйрөнүүдө окуучуларыбыз, студенттерибиз жана окутуучулар биз өзүбүз да өңчөй орус же англис тилинде жазылган адабияттардан пайдаланып келебиз. Эми окутууну кыргыз тилинде алып баруу үчүн мындагы көптөгөн терминдерди же аталыштарды кыргыз тилине которуп жеткирүү зарылчылыгы пайда болот. Алибетте мындай учурда аларды четтен эле которо берүү мүмкүн эмес жана ага аракет жасоонун өзү акылсыздык болмок. Ошондой болсо да көпчүлүк аталыштар үчүн кыргыз тилиндеги алардын эң сонун эквиваленттерин табууга болот. Дагы бир белгилеп кетчүү нерсе, ушундай предметтерди алып баруучу окутуучуларыбыздын арасында өз ара кандайдыр бир макулдашуучулуктун жоктугунан улам компьютердик илимдер боюнча аталыштар жана сөз байланыштары ар түрдүү авторлор тарабынан ар түрдүүчө которулуп жүрөт. Бул болсо ар түрдүү 8 булактардан пайдалануу зарыл болгон учурда кандайдыр бир деңгээлде чаташууларды пайда кылат. Үчүнчү бир жагдай, эгемендүүлүккө жетишкендиктен бери, кыргыз тили ушул эгемендүү мамлекеттеги малекеттик тил катары жарыялангандан бери бир топ жыл өтсө да компьютердик илимдер боюнча кыргызча басылмалар, анча-мынча китепчелерди жана бирин- экин китептерди эске албаганда, дээрлик жокко эсе. Ошол эле учурда кошуна мамлекеттерде бул иш бир топ жакшы бараткандыгына күбө болуп жүрөбүз. Биринчиден ушул жагдайлардан улам, экинчи жактан студенттердин суроо-талаптары эске алынып ушул китеп жазылып олтурат. Албетте, мында келтирилген котормолор идеалдуу болду дегенден алыспыз, бирок керектүү материалдын маанисин бузбай бере алгыдай болду деп эсептейбиз. Эгер мындагы котормолор үчүн башка варианттар сизге белгилүү болуп бизге билдирсеңиздер, анда аларды биз чоң ыраазычылык менен кабыл алар элек. Китеп 12 баптан туруп Borland Pascal 7.0 тилинин чөйрөсүндө программалоо курсунун биринчи бөлүгү болуп эсептелет. Мында Borland Pascal 7.0 тилинин чөйрөсүндө динамикалык берилгендер менен иштөө, объекттик-ориентирдик программалоо, графика жана стандарттык түзүлүштөр менен иштөөгө чейинки материалдар берилди. Ар бир бап келтирилген материалды жеткилең түшүнүүгө өбөлгө болуучу жетишерлик сандагы мисалдар менен камсыз болгон жана акырында өз алдынча иштөөгө карата мисалдардын тобу келтирилген. Мындагы келтирилген мисалдардын бир тобу ар түрдүү булактардан алардын абдан демонтрациялуулугунан улам кээ бир өзгөртүүлөр менен пайдаланылды. Аларга биз автор болууга эч кандай акыбыз жок. Андан сырткары компилятордун каталар жөнүндөгү билдирүүлөрүнүн жана компилятор үчүн директивалардын тизмеси толук келтирилди. Китеп мектептердин жогорку класстарынын окуучулары, жогорку окуу жайлардын студенттери жана жалпы эле Borland Pascal 7.0 тилинин чөйрөсүндө программалоону үйрөнүүнү каалагандар үчүн арналып жазылды. Бул окуу китеп боюнча окурмандардын суроолору, сын- пикирлери жана каалоолору чоң ыраазычылык менен төмөнкү даректер боюнча кабыл алынат: [email protected], же [email protected] . Авторлор 9 КИРИШҮҮ Айт айт десе ааламды айт, Аалам алга кадамдайт. (Барпы) Белгилүү француз математиги жана философу Блэз Паскальдын (1623-1662) урматына анын аты менен аталган Паскаль программалоо тилинин пайда болушу XX кылымдын 70-жылдарына тура келет. Бул тил Цюрихтеги Швейцария жогорку политехникалык мектебинин профессору Никлаус Вирт тарабынан студенттерди компиляторлорду түзүү, иштеп чыгуу усулдарына үйрөтүү ниетинде иштелип чыгылган. Н. Вирттин ал учурда төмөндөгүдөй максаты болгон: көп эмес сандагы базалык түшүнүктөрдүн негизинде программа түзүүгө мүмкүн болгон; жөнөкөй синтаксиске ээ болгон; программаны машиналык кодго которуу жөнөкөй компилятордун жардамында ишке ашырууга мүмкүн боло тургандай программалоо тилин түзүү эле. Андан бери Паскаль тилинин бир нече версиялары иштелип чыгылды. Андан сырткары кайсы бир жылдары Паскаль стандарты деген түшүнүк пайда болду. Бул версиялардын ар бири тилдин каражаттарына кандайдыр бир жаңылыктарды кошуу же тактоолорду, түзөтүүлөрдү кийрүү менен тилдин мүмкүнчүлүктөрүн кеңейтирип отурду. Анын ичинде талдоонун интегралданган чөйрөсүн түзүүгө болгон аракеттер болду. Акыбетинде Паскаль тилинин негизинде Turbo Pascal программалоо системасы пайда болду. Паскаль программалоо тилинин артыкчылыктары: окуп үйрөнүүгө жөнөкөй, ачык айкын, программалоо жаатында биринчи үйрөнүлүүчү эң сонун тил болуп ал жакшы программалоо стилине үйрөтөт; структуралык программалоонун шарттарын канаатандырат: ал программалоонун башкаруучу структураларын реализациялоочу операторлорго ээ. Мындагы берилгендердин структурасынын жакшы тандалышы бул тилидин чөйрөсүндө жөнөкөй жана эффективдүү алгоритмдерди талдап чыгууга мүмкүнчүлүк берет; типтердин жана берилгендердин жакшы курамына ээ; тилдин конкреттүү рализациясы ПК нын бардык аппараттык кражаттарын пайдаланууга мүмкүнчүлүк берет: 10