logo

Турбо-Паскалнинг модуллари ва фойдаланувчи модулини яратиш. System модулининг процедура ва функциялари

Yuklangan vaqt:

20.09.2019

Ko'chirishlar soni:

0

Hajmi:

88 KB
www.arxiv.uz Т у р б о - П а с к а л н и н г м о д у л л а р и в а ф о й д а л а н у в ч и м о д у л и н и я р а т и ш . S y s t e m м о д у л и н и н г п р о ц е д у р а в а ф у н к ц и я л а р и Режа: 1. Турбо-Паскалнинг асосий модуллари; 2. Фойдаланувчи модулларини яратиш; 3. Программа ишини бажарувчи процедуралар; 4. Типларни алмаштириш функциялари; 5. Саналма тип функциялари ва порцедуралари; 6. Сатрлар билан ишлаш процедура ва фугкциялари; 7. Параметрлар билан ишлаш функциялари; 8. Адреслар билан ишлаш функциялари; 9. Модулнинг бошка процедура ва функциялари. www.arxiv.uz 1 . Т у р б о - П а с к а л н и н г а с о с и й м о д у л л а р и Шахсий компьютерларнинг энг катта камчилиги уларда амалий программалар кутубхонасининг тылик эмаслигидадир. Катта ЭЩМларда программа тузувчилар учун жуда катта программалар кутубхонаси хизмат килар ва улардан фойдаланиб тузилган программалар ызларининг ишончлилик даражаси билан юкори турар эди. Шахсий компютерларнинг бу камчилигини йыкотиш учун Турбо-Паскалда модуллар тушунчаси киритилган. Умуман олганда, хар бир малакали программа тузувчи ыз программасини процедура ва функциялардан фойдаланиб тузади. Лекин, бу процедура ва функциялардан бошка программаларда фойдаланиш учун уларнинг матнларини кайта кычириб ёзиш лозим былади. Турбо-Паскалда бу масалани ечиш учун модуллар яратилиб, уларни компиляция килинади ва бу модулдан бошка программаларда бемалол фойдаланилаверилади. Турбо-Паскал тилининг яратувчилари куйидаги зарур ва фойдали модулларни яратиб, дастурчилар учун жуда катта кулайликлар яратишган: 1. System модули - стандарт процедура ва функцияларни ыз ичига олиб, автоматик тарзда барча программалар учун очикдир; 1. DOS модули - MS DOS операцион системаси билан ишлашни ташкил килувчи функция ва процедуралардан ташкил топган; 2. Crt модули – экран, клавиатура ва IBM русумидаги компьютерларнинг товушли динамиги билан ишлаш процедураларини ыз ичига олган; www.arxiv.uz 3. Graph модули - компьютернинг график имкониятларидан фойдаланиб яратилган функция ва процедураларнинг катта тыплами; 4. Printer модули - бу кичкинагина модул принтер курилмаси билан ишлашни осонлаштиради; 5. Overlay модули – катта программаларни бир нечта былакларга ажратишнинг кучли воситаси былиб, бир канча процедуралар ва функциялардан ташкил топган. 2 . Ф о й д а л а н у в ч и м о д у л л а р и н и я р а т и ш Модуллардан фойдаланиш учун программа сарлавхасидан Program <программа номи>; кейин куйидаги катор ёзилиши керак: Uses <модул исми>; Агар программада бир нечта модул ишлатилса, уларнинг исмлари кетма-кет ёзиб кыйилади: Uses <модул исми1>,<модул исми2,>,...,<модул исми N >; Турбо-Паскал бизга ызимизнинг модулларимизни яратиб олиш имконини хам беради. Фойдаланувчи модуллари куйидаги структурада былади: www.arxiv.uz Unit <модул исми>; Interface ... { очик эълонлар былими - интерфейс секцияси} ... Implementation ... { ёпи к эълонлар былими } ... Begin ... { Инициализация былими } ... End. Агар модул ыз ичида бошка модуллардан фойдаланса Interface хизматчи сызидан кейин Uses < модуллар рыйхати >; ёзилади . Интерфейсли былим модулнинг бир кисми былиб , Interface ва Implementation сызлари орасида жойлашади . Бу былимда ызгармаслар , маълумотлар типи , ызгарувчилар , процедура ва функцияларни аниклаш мумкин . Бу киритилганлар мазкур модулда катнашувчи барча программалар ва модулларда бемалол ишлатилиши мумкин. Былимда санаб ытилган процедура ва функцияларнинг тана кисмлари Implementation сызидан кейин аникланади (уларнинг сарлавхалари айнан сакланиб колиши керак). Бу былимда хам, факат шу былим учунгина &#34;Кыринадиган&#34; (ишлатиши мумкин былган) эълонлар былими катнашиши мумкин. Инициализация секцияси Begin ва End сызлари ичига олиб ёзилади. Агар Begin сызи тушириб www.arxiv.uz колдирилган былса, демак бу секция йык хисобланади. Инициализация секциясида бошкаришни асосий программага узатгунгача бажариладиган операторлар жойлашган былади. Бу операторлар асосан программани ишга туширишга тайёрлаб беради. Мисол сифатида X ва Y бунинг сонларининг максимуми ва минимумини аникловчи модулни яратайлик: Unit Stud ; Interface { очик эълонлар былими – интерфейс секцияси } function min(x,y:integer):integer; function max(x,y:integer):integer; Implementation { ёпи к эълонлар былими } function min(x,y:integer):integer; Begin if x<кy then min:кx else min:кy; End; function max(x,y:integer):integer; Begin if x>y then max:кx else max:кy; End ; Begin { Инициализация секцияси йык } End . Биз зарур модулни хосил килдик, энди уни компиляция килишимиз лозим. Компиляция натижасида Stud . tpu исмли файл хосил килиниши керак. Компиляция килинмаган модулнинг исми эса шунга мос холда Stud . pas былиши керак. Бу модулдан фойдаланиш дастури куйидагича былиши мумкин: www.arxiv.uz Uses Stud; Var A,b,c,d:integer; Begin Write (‘ А ва B ларни киритинг >’); Readln(a,b); C:к max(a,b) ; Writeln(‘Maxк ‘,C); C:к min(a,b) ; Writeln(‘Minк ‘,C); D:к max(a,b)кmin(a,b) ; Writeln(‘MaxкMinк’,D); End. куйида эса экран рангини танлаш модули мисол сифатида кырсатилган : Unit Colors; Interfase Type Colortype кArray[0..15] of Byte; Const Black:byteк0;blue:byteк1; Green:byteк2;cyan:byteк3; Red:byteк4;magenta:byteк5; Brown:byteк6;lightgray:byteк7; Darkgray:byteк8;lightblue:byteк9; Lightgreen:byteк10;lightcyan:byteк11; Lightred:byteк12;lightmagenta:byteк13; Yellow:byteк14;white:byteк15; Var www.arxiv.uz Currcolors:colortype absolute Black; Procedure setMonoColors; Procedure setColorColors; Implementation Const ColorColors:Colortypeк(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ; MonoColors:ColorTypeк(0,1,7,7,7,7,7,7,7,7,7,7,7,7,15,15); Procedure SetMonoColors; Begin CurrColors:кMonoColors; End; Procedure SetColorColors; Begin CurrColors:кColorColors; End; Var Ch:Char; Begin Write( Readln(ch); If ch in [‘M’,’m’,’M’,’m’] then SetMonoColors; End. 3 . П р о г р а м м а и ш и н и б а ж а р у в ч и п р о ц е д у р а л а р Юкорида айтганимиздек , System модулининг процедуралари ва функциялари барча программалар учун очик былиб , улардан кенг фойдаланиш мумкин . System модулининг исмини модуллар рыйхатида кырсатиш шарт эмас . к уйида ушбу модулнинг маълум бир кисм процедуралар ва функциялари билан кискача танишиб чикамиз : www.arxiv.uz 1) Программа ишини бажариш процедуралари. Exit процедураси Вазифаси: актив ишчи блокидан чикиш, бажарилаётган ишни якунлаш; Аникланиши: Exit . Halt процедураси Вазифаси: программа бажарилишини тыхтатади ва ОС га бошкаришни кайтаради; Аникланиши: Halt [( ExitCode : Word )]; бу ерда мажбурий былмаган (ырта кавс мажбурий эмас белгиси) ExitCode параметри программанинг якунланиш кодини беради, агар бу параметр былмаса бу код нолга тенг былади. RunError процедураси Вазифаси: программанинг бажарилишини тыхтатади ва бажарилиш вактидаги хатоларни аниклайди; Аникланиши: RunError [( ErrorCode : Word )]; бу ерда ErrorCode параметрининг хатолик номери хакидаги маълумоти экранга чоп этилади. 4 . Т и п л а р н и а л м а ш т и р и ш ф у н к ц и я л а р и Chr функцияси Вазифаси: ASCII жадвалидаги тартиб раками берилган бутун сонга мос былган белгини аниклайди; Ани к ланиши : Chr(N:Byte):Char; бу ерда N белгининг ASCII жадвалидаги тартиб ра к амини ифодаловчи бутун , мусбат сон . www.arxiv.uz Ord функцияси Вазифаси : саналма типли к ийматлар быйича унинг тартиб сонини ани к лаш ; Ани к ланиши : Ord(X):LongInt; бу ерда X – саналма типли киймат . Round функцияси Вазифаси : хакикий типли кийматни яхлитлаб , катта бутун , сон хосил килади ; Ани к ланиши : Round(X:Real):LongInt; Trunc функцияси Вазифаси : ха к и к ий типли к ийматнинг каср к исмини ташлаб юбориб , бутун сон хосил к илади ; Ани к ланиши : Trunc(X:Real):LongInt; Арифметик функциялар . бу функцияларнинг ёзилиши ва улардан фойдаланиш к оидалари 3- бобдаги ызлаштириш оператори мавзусида тыли к бериб ытилганлиги учун , уларга тыхталиб ытирмаймиз . 5 . С а н а л м а т и п ф у н к ц и я л а р и в а п р о ц е д у р а л а р и Dec процедураси Вазифаси: ызгарувчи кийматини камайтиради; Аникланиши: Dec ( Var X [; n ]: LongInt ); www.arxiv.uz бу ерда ёзилиши мажбурий былмаган “ n ” ызгарувчи аргументнинг кийматини канчага камайтириш лозимлигини кырсатади. Бу ызгарувчи ёзилмаса аргумент киймати бир сонига камаяди. Inc процедураси Вазифаси: ызгарувчи кийматини орттиради; Ани к ланиши : Inc(Var X[;n]: Integer); бу ерда Dec процедурасига тескари иш бажарилади. Odd функцияси Вазифаси: аргументнинг ток ёки жуфт сонлигини текширади; Ани к ланиши : Odd( X:LongInt):Boolean; бу ерда натижавий киймат рост ( True ) былса сон ток, акс холда сон жуфт. Pred процедураси Вазифаси: аргуметни олдинги кийматини аниклаш; Аникланиши: Pred ( X ); Succ процедураси Вазифаси: аргуметни кейинги кийматини аниклаш; Аникланиши: Succ ( X ); 6 . С а т р л а р б и л а н и ш л а ш ф у н к ц и я л а р и в а п р о ц е д у р а л а р и . ConCat функцияси Вазифаси: сатрларни кетма-кет улайди; Ани к ланиши : ConCat(S1[,S2,...,SN]:String):String; бу эрда S1 к аторни кейинги санаб ытилган к аторлар билан уларни ёзилиш тартибида улайди . www.arxiv.uz Copy функцияси Вазифаси: сатр ичидан янги сатр хосил килиш; Ани к ланиши : Copy(S:String;Index,Count:Ineger):String; бу эрда S – берилган сатр; Index – S сатрининг нечанчи белгисидан бошлаб, янги сатр хосил килиш кераклигини аниклайди; Count – янги сатрдаги белгилар сони. Delete процедураси Вазифаси: берилган сатр ичидан сатр остини олиб ташлайди; Ани к ланиши : Delete(Var S:String;Index:Integer;Count:Integer); бу эрда S – берилган сатр; Index – шу тартиб ракамли белгидан бошлаб, S сатрдан сатр ости олиб ташланади; Count – олиб ташланадиган сатрдаги белгилар сони. Insert процедураси Вазифаси: берилган сатрга янги сатр кышади; Ани к ланиши : Insert(S1:String; Var S2:String; Index:Integer); бу эрда S 2 – берилган сатр; S 1 – кышиладиган сатр; Index – S 2 сатрнинг кайси тартиб ракамли хадидан бошлаб янги сатр кышилишини англатади. Length функцияси Вазифаси: сатр узунлигини аниклайди; www.arxiv.uz Ани к ланиши : Length(S:String):Integer; бу ерда S сатридаги белгиларнинг сонини аникланади: Pos функцияси Вазифаси: сатрдан сатр остини кидиради; Ани к ланиши : Pos(SubStr,S:String):Byte; бу эрда SubStr – S сатрда к идирилаётган сатр ости . Агар SubStr сатр ости S сатрида топилса , Pos функцияси мос келган биринчи белгининг тартиб ра к амини беради , агар бу сатр ости S сатрда былмаса , функция нул к иймат беради . Str процедураси Вазифаси : сонли к ийматни унинг сатрли кыринишига ытказади ; Ани к ланиши : Str(X[:Width[:decmals]];Var S:String); бу ерда ёзилиши шарт былмаган Width ва decmals параметрлари мос равишда, S сатрининг хадлар сонини ва ха к и к ий соннинг вергулдан кейинги хадлар сонини ифодалайди . Val процедураси Вазифаси : сатрли к ийматни унинг сонли кыринишига ытказади ; Ани к ланиши : Val(S:String;Var V; Var Code:Integer); бу ерда S – берилган сатр; V – S сатрнинг унинг сонли кыринишига ытказганидан кейин хосил былган сонни саклаш жойи; Code – бутун типли ызгарувчи. Агар S сатрни сонга айлантириб былмаса Val процедураси бажарилганидан сынг Code ызгарувчиси нул кийматни кабул килади. www.arxiv.uz 6 . П а р а м е т р л а р б и л а н и ш л а ш ф у н к ц и я л а р и Программани ишга туширишда унга узатиладиган кийматларни параметрлар деб хисоблаймиз. Мисол: Системали программалашнинг куйидаги Copy буйру\ини кырайлик: Copy file.dat c:\prog\file2.dat яъни , активлашган каталогдаги file.dat файлининг нусхасини « С » дискнинг prog каталогига file2.dat номи билан кычириш . Бу ерда Copy буйру \ ига параметр сифатида ”file1.dat”ва “file2.dat” катори узатилмокда. Турбо-Паскалда параметрлар билан ишлаш учун ParamCount ва ParamStr функциялари мавжуд . ParamCount функцияси Вазифаси : буйрукли катордан программага узатилган параметрлар сонини аниклайди ; Ани к ланиши : ParamCount:Word; ParamStr функцияси Вазифаси : кырсатилган номердаги параметрни ани к лайди ; Ани к ланиши : ParamStr(N:Integer):String; 8 . А д р е с л а р б и л а н и ш л а ш ф у н к ц и я с и Addr функцияси Вазифаси: кырсатилган объектнинг адресини аниклайди; Аникланиши: Addr ( X ): Pointer ; бу ерда X – ихтиёрий типли ызгарувчи ёки программада эълон килинган процедура ёки функция исми. www.arxiv.uz Seg функцияси Вазифаси: кырсатилган ызгарувчи адресининг сегмент кийматини аниклайди; Аникланиши: Seg ( X ): Word ; бу ерда X – ихтиёрий типли ызгарувчи ёки программада эълон килинган процедура ёки функция исми. 9 . М о д у л н и н г б о ш к а п р о ц е д у р а в а ф у н к ц и я л а р и FillChar процедураси Вазифаси: кырсатилган киймат билан кетма-кет келган ва чекли сондаги байтларни тылдиради; Ани к ланиши : FillChar(Var X;Count:Word;Value); Hi функцияси Вазифаси: аргументнинг катта байтини аниклайди; Аникланиши: Hi ( X ): Byte ; Lo функцияси Вазифаси: аргументнинг кичик байтини аниклайди; Аникланиши: Lo ( X ): Byte ; Move процедураси Вазифаси: кырсатилган микдордаги байтлардан тезкор (оператив) хотиранинг бир кисмидан иккинчи кисмига нусха кычиради; Ани к ланиши : Move(Var Cource,Dest;Count:Word); www.arxiv.uz Random функцияси Вазифаси : тасодифий сонни ани к лайди ; Ани к ланиши : Random([Range:Word]); бу ерда ани к ланадиган тасодифий сон 0 ва Range сонлари орали \ ида ётади . Randomize процедураси Вазифаси: тасодифий сонни хосил килувчи генераторни ишга туширади; Аникланиши: Randomize ; UpCase функцияси Вазифаси: кичик лотин харфларни катта харфларга ытказади; Ани к ланиши : UpCase(Ch:Char):Char; функция рус алфавити харфларини хам катта харфларга ытказади. www.arxiv.uz Ф о й д а л а н и л г а н а д а б и ё т л а р р у й х а т и : 1. Вирт Н. Алгоритмы структуры данных программы. - М.: Мир, 1985 г. 2. Абрамов В., Трифонов Н., Трифонова Г. Введение в язык Паскал. - М.: Наука, 1988 г. 3. Файсман А. Профессиональное программирование на Турбо Паскале. - Т.: &#34;Инфомэкс Корпорейшн&#34;, 1992 г. 4. Findlay W., Watt D.A., Paskal. An introduction to methodical programmin. Third edition. – London: Pitman, 1985 г . 5. Поляков Д. Б., Круглов И. Ю. Программирование в среде Турбо-Паскаль (версия 5.5): Справ.-метод. пособие. – М.: Изд-во МАИ. 1992 г. 6. Епанешников А., Епанешников В. Программирование в среде Turbo Pascal 7.0 М., Диалог-наука, 1993 г. 7. www.uzedu.uz