Մոդուլներ ՊասկալումԾրագրի հիմնական մասի հետ կապված դրանք նման են ենթածրագրերի (ընթացակարգեր և գործառույթներ): Բայց ըստ սահմանման, դրանք անկախ ծրագրեր են, որոնց ռեսուրսները կարող են օգտագործվել այլ ծրագրերում: Բացի այդ, մոդուլների նկարագրությունը տեղի է ունենում կանչող հավելվածից դուրս, բայց առանձին ֆայլում, ուստի մոդուլը առանձին կազմված ծրագիր է: Կազմված մոդուլի ֆայլը (որը դուք պետք է օգտագործեք) կունենա ծրագրավորման միջավայրի կողմից տրամադրված ընդլայնում (օրինակ՝ .tpu, .ppu, .pcu):
Մոդուլները ստեղծվում են, որպես կանոն, կոդի կոմպակտությունն ապահովելու համար, որոնց մասին պետք է հոգ տան մեծ նախագծերը։ Հարկ է նաև նշել, որ մոդուլների օգտագործումը որոշակի իմաստով վերացնում է հիշողության հատվածավորման սահմանափակումը, քանի որ յուրաքանչյուր մոդուլի կոդը գտնվում է առանձին հատվածում:
Մոդուլի կառուցվածքը հետևյալն է.
միավոր<имя модуля>;
Ինտերֆեյս
<интерфейсная часть>
Իրականացում
<исполняемая часть>
Սկսել
<инициализация>
վերջ.
Մոդուլի անվանումը (միավոր)
Հիմնաբառին հետևող մոդուլի անվանումը միավոր, պետք է համապատասխանի ֆայլի անվանմանը (առանց .pas), որը պարունակում է իր կոդը։ Բացի այդ, օգտագործելով անունը, մոդուլը միացված է մեկ այլ մոդուլի կամ հիմնական ծրագրին: Դա անելու համար դուք պետք է նշեք ծառայության բառը օգտագործում է, և նշեք ստորակետերով առանձնացված պլագինների ցանկը՝
օգտագործում է<список имен модулей>;
Ինտերֆեյսի մաս (ինտերֆեյս)
Ինտերֆեյսի հատվածը նկարագրում է օբյեկտների վերնագրերը, որոնց հասանելիություն կունենան այլ մոդուլներ և ծրագրեր: Սրանք հաստատուններ, տեսակներ, փոփոխականներ և ենթածրագրեր են: Օրինակ, այսպես կարող է տեսք ունենալ Search մոդուլի ինտերֆեյսի մասը, որը պարունակում է զանգվածի տարրերի որոնման ալգորիթմներ։
1 |
միավորի որոնում; |
Այս մոդուլը հայտարարելու համար անհրաժեշտ է ծրագրում նշել դրա անունը.
Դրանից հետո հնարավոր կլինի օգտագործել ինտերֆեյսի մասում նկարագրված բոլոր օբյեկտները։
Կատարվող մաս (Իրականացում)
Այս բաժինը սկսվում է բառով Իրականացում(իրականացում): Այստեղ է, որ դուք պետք է նկարագրեք ինտերֆեյսի մասում հայտարարված ենթածրագրերը: Միևնույն ժամանակ թույլատրվում է դրանց վերնագրերում չնշել ֆորմալ պարամետրեր, այլապես դրանք պետք է ամբողջությամբ համապատասխանեն ինտերֆեյսի մասի պարամետրերին։ Բացի այդ, ինտերֆեյսի հատվածը կարող է պարունակել օբյեկտներ, որոնք տեղական են (անմատչելի են կանչող ծրագրին) մոդուլի համար:
Նախաձեռնող մաս
Նախաձեռնող մասը սկսում է իր աշխատանքը մինչև հիմնական ծրագրի կատարման մեկնարկը: Դրանում (Սկիզբի և վերջի միջև), որպես կանոն, նկարագրվում են օպերատորներ, որոնք նախատեսված են տարբեր տեսակի օժանդակ աշխատանքների համար: Այս մասը կարող է բացակայել կամ դրանում ծածկագիր չկա: Առաջին դեպքում պետք է կետով նշել End, երկրորդում՝ Begin-ի և End-ի ներսում դատարկ տարածություն թողնել:
Մոդուլների կազմում
Ծրագրում կարող են օգտագործվել միայն կազմված մոդուլներ, որոնք ունեն ընդլայնում, որը տրամադրվում է ձեր հավելվածի մշակման միջավայրի կողմից: Դիտարկենք դրանցից ամենահայտնի երեքը.
TurboPascal
Turbo Pascal-ում մոդուլ կազմելու արդյունքը կլինի ընդլայնումով ֆայլ .tpu (Turbo Pascal միավոր) որը պահպանում է իր կոդը:
Անվճար Պասկալ
Free Pascal միջավայրում մոդուլը կազմելուց հետո ստեղծվում են երկու ֆայլեր՝ տարբեր թույլտվություններով. .ppuև .օ. Առաջինը պարունակում է մոդուլի ինտերֆեյսի մասը, իսկ երկրորդը (պահանջվում է ծրագրի կապակցման համար) իրականացման մաս է։
Պասկալ ABC.NET
Pascal ABC.Net-ը չի ստեղծում մեքենայական լեզվի կոդ մոդուլի կազմման ժամանակ: Եթե կոմպիլյացիան հաջող է, կոդը պահվում է թույլտվությամբ ֆայլում .pcu.
Turbo Pascal և Free Pascal ծրագրավորման միջավայրերի համար կա կոմպիլյացիայի երեք ռեժիմ. Կազմել, ստեղծել և կառուցել. Compile ռեժիմում ծրագրում օգտագործվող բոլոր մոդուլները պետք է նախապես կազմված լինեն։ Կազմման ռեժիմում գտնվող հավելվածը ստուգում է բոլոր միացված մոդուլները ծրագրավորման միջավայրի համար համապատասխան թույլտվությամբ ֆայլերի առկայության համար (.tpu կամ .o): Եթե դրանցից որևէ մեկը չի գտնվել, ապա որոնվում է չգտնված մոդուլի անունով և .pas ընդլայնման ֆայլ: Ռեժիմներից ամենահուսալիը Build-ն է: Այս ռեժիմում ֆայլերի որոնումն ու կազմումը (.pas ընդլայնմամբ) տեղի է ունենում նույնիսկ այն ժամանակ, երբ մոդուլի ֆայլերն արդեն գոյություն ունեն:
Օրինակ
Եկեք ստեղծենք մի փոքր մոդուլ, որը պարունակում է զանգվածի տարրերի երկուական և գծային որոնման ընթացակարգեր: Մոդուլի կոդը:
1 |
միավորի որոնում; |
Այս ամբողջ կոդը պետք է լինի առանձին ֆայլում: Այժմ գրենք հիմնական ծրագիրը, որում կմիացնենք մեր Search մոդուլը։
Մոդուլ (միավոր)հաստատունների, տվյալների տեսակների, փոփոխականների, ընթացակարգերի և ֆունկցիաների մի շարք է: Յուրաքանչյուր մոդուլ նման է առանձին Pascal ծրագրին. այն կարող է ունենալ հիմնական մարմին, որը կանչվում է նախքան ձեր ծրագիրը սկսելը և կատարում է անհրաժեշտ սկզբնավորումը: Մի խոսքով, մոդուլը հայտարարությունների գրադարան է, որը դուք կարող եք տեղադրել ձեր ծրագրում, և որը թույլ կտա ձեզ բաժանել ծրագիրը մասերի, որոնք կազմվում են առանձին:
Turbo Pascal-ը հնարավորություն է տալիս մուտք գործել մեծ թվով ներկառուցված հաստատուններ, տվյալների տեսակներ, փոփոխականներ, ընթացակարգեր և գործառույթներ: Դրանցից մի քանիսը հատուկ են Turbo Pascal-ին; մյուսները հատուկ են IBM PC-ին (և համատեղելի համակարգիչներին) կամ MS-DOS օպերացիոն համակարգին: Նրանց թիվը մեծ է, սակայն, ձեր ծրագրում դուք հազվադեպ եք դրանք միանգամից օգտագործում: Հետեւաբար, դրանք բաժանվում են հարակից խմբերի, որոնք կոչվում են մոդուլներ: Այս դեպքում կարող եք օգտագործել միայն այն մոդուլները, որոնք անհրաժեշտ են ծրագրում։
Մոդուլի կառուցվածքը
Մոդուլն ապահովում է մի շարք առանձնահատկություններ ընթացակարգերի և գործառույթների միջոցով, որոնք աջակցվում են հաստատուններով, տվյալների տեսակներով և փոփոխականներով, սակայն այս հատկանիշների իրական իրականացումը թաքնված է, քանի որ մոդուլը բաժանված է երկու բաժնի՝ ինտերֆեյս և իրականացում: Եթե ծրագիրն օգտագործում է մոդուլ, ապա բոլոր մոդուլի հայտարարագրերը հասանելի են դառնում այդ ծրագրին, կարծես դրանք ինքնին սահմանված լինեն:
Մոդուլի կառուցվածքը նման է ծրագրի կառուցվածքին, սակայն կան մի քանի էական տարբերություններ: Օրինակ, հաշվի առեք մոդուլը.
միավոր<идентификатор>; ինտերֆեյսի օգտագործումը<список модулей>; (ըստ ցանկության) (բաց նկարագրություններ)իրականացում (փակ ընթացակարգը և գործառույթի նկարագրությունները)սկսել (նախնականացման կոդը)վերջ.Մոդուլի վերնագիրը սկսվում է վերապահված բառի միավորով, որին հաջորդում է մոդուլի անվանումը (իդենտիֆիկատորը), ինչպես ծրագրի անվան դեպքում: Մոդուլի հաջորդ տարրը ինտերֆեյսի բանալի բառն է: Այն նշում է մոդուլի ինտերֆեյսի բաժնի սկիզբը՝ այն հատվածը, որը տեսանելի է բոլոր մյուս մոդուլների կամ ծրագրերի համար, որոնք օգտագործում են այն:
Մոդուլը կարող է օգտագործել այլ մոդուլներ, դրա համար դրանք սահմանված են օգտագործման կետում: Օգտագործման դրույթը, եթե առկա է, հետևում է միջերեսի հիմնաբառից անմիջապես հետո: Նկատի ունեցեք, որ այստեղ բավարարվում է օգտագործման դրույթի օգտագործման ընդհանուր կանոնը. եթե այն մոդուլը, որի անունը նշված է օգտագործման կետում, օգտագործում է այլ մոդուլներ, ապա այդ մոդուլների անունները նույնպես պետք է նշվեն օգտագործման կետում և նախքան դրանք օգտագործելը:
Ստանդարտ մոդուլներ
TURBO.TPL ֆայլը պարունակում է բոլոր ստանդարտ փաթեթները, բացառությամբ Graph-ի և համատեղելիության փաթեթների (Graph3 և Turbo3)՝ System, Overlay, Crt, Dos և Printer: Այս փաթեթները բեռնված են հիշողության մեջ Turbo Pascal-ով և միշտ հասանելի են ձեզ: Որպես կանոն, TURBO.TPL ֆայլը պահվում է նույն գրացուցակում, ինչ TURBO.EXE (կամ TPC.EXE): Դուք կարող եք այն պահել մեկ այլ գրացուցակում, քանի դեռ այն նկարագրված է որպես Turbo Pascal գրացուցակ: Դա անելու համար օգտագործեք TINST.EXE-ն այս գրացուցակը TURBO.EXE ֆայլում տեղադրելու համար:
Օգտագործված փաթեթներ՝ ոչ
Համակարգը պարունակում է Turbo Pascal-ի բոլոր ստանդարտ և ներկառուցված ընթացակարգերն ու գործառույթները: Ցանկացած Turbo Pascal ենթածրագր, որը ստանդարտ Pascal-ի մաս չէ և չի գտնվել որևէ այլ մոդուլում, պարունակվում է System-ում: Այս մոդուլը կցված է բոլոր ծրագրերին:
Օգտագործված փաթեթներ՝ ոչ
DOS-ը սահմանում է բազմաթիվ Pascalian ռեժիմներ և գործառույթներ, որոնք համարժեք են ամենատարածված DOS զանգերին, ինչպիսիք են GetTime, SetTime, DiskSize և այլն: Բացի այդ, այն սահմանում է երկու ցածր մակարդակի ծրագիր՝ MsDos և Intr, որոնք թույլ են տալիս ակտիվացնել ցանկացած MS-DOS զանգ կամ համակարգի ընդհատում։ Registers-ը MsDos-ի և Intr-ի պարամետրի տվյալների տեսակն է: Բացի այդ, որոշ այլ հաստատուններ և տվյալների տեսակներ են սահմանվում:
Օգտագործված փաթեթներ՝ ոչ
Overlay - պարունակում է գործիքներ՝ ծածկույթի ծրագրեր ստեղծելու համար: OVERKAY ծրագիրը ծրագիր է, որը բեռնում է ոչ բոլորը, այլ մասերը:
Օգտագործված փաթեթներ՝ ոչ
Crt-ն ապահովում է հաստատունների, փոփոխականների և ծրագրերի մի շարք PC-ին հատուկ նկարագրություններ I/O գործողությունների համար: Վերջինս կարող է օգտագործվել էկրանի հետ աշխատելու համար (պատուհանների կարգավորում, կուրսորի անմիջական կառավարում, տեքստի և ֆոնի գույներ): Բացի այդ, դուք կարող եք կատարել «հում» ստեղնաշարի մուտքագրում և կառավարել անհատական համակարգչի ձայնի ստեղծման տախտակը: Այս մոդուլը տրամադրում է բազմաթիվ առօրյաներ, որոնք ստանդարտ էին 3.0 տարբերակում:
Օգտագործված փաթեթներ՝ Crt
Printer մոդուլը սահմանում է տեքստային ֆայլի փոփոխական՝ Lst, որը կապված է սարքի դրայվերի հետ, որը թույլ է տալիս ստանդարտ Pascal արտադրանքը ուղարկել տպիչ՝ օգտագործելով Write և Writeln: Օրինակ, ձեր ծրագրում ներառելով Printer-ը, կարող եք անել հետևյալը.
Գրեք (Lst,« ,A:4»-ի գումարը, և «,B:4», հավասար է « ); C:=A+B; WriteIn (Lst, C: 8);Օգտագործված փաթեթներ՝ Crt
Graph3-ն աջակցում է գրաֆիկական ռեժիմների ամբողջական փաթեթը 3.0 տարբերակի համար՝ սովորական գրաֆիկայի, առաջադեմ գրաֆիկայի և գրաֆիկայի համար՝ օգտագործելով հարաբերական հրամաններ: Նրանք նույնական են անունով, ֆունկցիայի պարամետրերով և 3.0 տարբերակի ռեժիմներով:
Օգտագործված փաթեթներ՝ Crt
Այս մոդուլը պարունակում է երկու փոփոխական և մի քանի ընթացակարգ, որոնք այլևս չեն աջակցվում Turbo Pascal-ի կողմից: Դրանք ներառում են ներկառուցված ֆայլի փոփոխականը Kbd, բուլյան CBreak փոփոխականը և MemAvail-ի և MaxAvail-ի սկզբնական ամբողջական տարբերակները (որոնք պարբերություններում ազատ հիշողություն են վերադարձնում, ոչ թե բայթեր, ինչպես սկզբնական տարբերակները):
Օգտագործված փաթեթներ՝ Crt
Graph-ը տրամադրում է արագ և արդյունավետ գրաֆիկայի մի շարք, որոնք թույլ են տալիս լիովին օգտվել ձեր անհատական համակարգչի գրաֆիկական հնարավորություններից:
Այս մոդուլն իրականացնում է Borland-ի սարքերից անկախ գրաֆիկական դրայվեր՝ CGA, EGA, Hercules, ATT 400, MCGA, 3270 PC և VGA գրաֆիկական ադապտերներին աջակցելու համար:
Գրելով ձեր սեփական մոդուլները
Ենթադրենք, դուք գրել եք IntLib մոդուլ, գրել այն INTLIB.PAS ֆայլում և թարգմանել այն սկավառակի վրա; ստացված կոդը գտնվում է INTLIB.TRU ֆայլում: Այս մոդուլը ձեր ծրագրում օգտագործելու համար դուք պետք է ձեր ծրագրում ներառեք օգտագործման դրույթ, որպեսզի կոմպիլյատորին ասեք, թե որ մոդուլն օգտագործի: Ձեր ծրագիրը կարող է այսպիսի տեսք ունենալ.
ծրագիր MyProg; օգտագործում է IntLib;Նկատի ունեցեք, որ Turbo Pascal-ը ենթադրում է, որ մոդուլը պարունակող ֆայլը նույն անվանումն ունի, ինչ որ մոդուլը: Եթե ձեր մոդուլի անունը MyUtilities է, ապա Turbo Pascal-ը կփնտրի MYUTILIT.PAS անունով ֆայլ:
Մոդուլի կազմում
Մոդուլը կազմվում է ճիշտ այնպես, ինչպես ծրագիրը կազմվում է. այն ստեղծվում է խմբագրիչի միջոցով, այնուհետև Compile / Сompile հրամանը կոչվում է (Compile / Compile) (կամ սեղմվում են Alt-C ստեղները): Այնուամենայնիվ, EXE ընդլայնմամբ ֆայլի փոխարեն Turbo Pascal-ը ստեղծում է .TRU ընդլայնմամբ ֆայլ (Turbo Pascal Unit - Turbo Pascal Unit): Դրանից հետո դուք կարող եք թողնել այս ֆայլը ինչպես կա, կամ տեղադրել այն TURBO.TPL-ում՝ օգտագործելով TPUMOVER.EXE:
Երկու դեպքում էլ իմաստ ունի ուղարկել *.TRU ֆայլերը (աղբյուրի ֆայլերի հետ միասին) միավորի գրացուցակ, որը սահմանված է O/D/Unit Directories հրամանով: Յուրաքանչյուր սկզբնաղբյուր ֆայլի համար կարող է լինել միայն մեկ մոդուլ, քանի որ կոմպիլյացիան դադարում է վերջացող վերջնակետին հանդիպելուն պես:
Օրինակ:
Եկեք մի փոքր մոդուլ գրենք: Եկեք այն անվանենք IntLib և տեղադրենք երկու պարզ ենթածրագրեր ամբողջ թվերի համար՝ ընթացակարգ և ֆունկցիա.
միավոր IntLib; ինտերֆեյսի ընթացակարգ ISwap (var I, J: ամբողջ թիվ); ֆունկցիա IMax(I,J: integer ) : integer ; իրականացման կարգը ISwap; var Temp՝ ամբողջ թիվ; startTemp:=I; I:=J; J:=ջերմաստիճանի ավարտ; (ISwap ընթացակարգի ավարտ) IMax ֆունկցիա; սկսել, եթե I > J, ապա IMax:=Ես այլևս IMax:=J վերջ ; (IMax ֆունկցիայի ավարտը)վերջ. (IntLib մոդուլի վերջ)Ներկայացնենք այս ենթածրագրերը, գրենք այն INTLIB.PAS ֆայլում, այնուհետև թարգմանենք սկավառակի վրա: Արդյունքում մենք ստանում ենք մոդուլի կոդը INTLIB.TRU ֆայլում: Եկեք այն ուղարկենք մոդուլների գրացուցակ: Հետևյալ ծրագիրը օգտագործում է IntLib մոդուլը.
ծրագիր IntTest; օգտագործում է IntLib; varA,B՝ ամբողջ թիվ; սկսել գրել ( «Մուտքագրեք երկու ամբողջ արժեք.) ; Readln(A,B); ISwap(A,B) ; WriteIn("A=" ,A," B=" ,B) ; գրել ( «Առավելագույն արժեքն է».,IMax(A,B) ); վերջ. (IntTest ծրագրի ավարտը)Մոդուլի բոլոր հայտարարությունները կապված են միմյանց հետ: Օրինակ, Crt մոդուլը պարունակում է բոլոր նկարագրությունները, որոնք անհրաժեշտ են ձեր անհատական համակարգչի էկրանի առօրյայի համար:
Pascal-ի մոդուլները ծրագրի հիմնական մասի նկատմամբ նման են ենթածրագրերի (ընթացակարգեր և գործառույթներ): Բայց ըստ սահմանման, դրանք անկախ ծրագրեր են, որոնց ռեսուրսները կարող են օգտագործվել այլ ծրագրերում: Բացի այդ, մոդուլների նկարագրությունը տեղի է ունենում կանչող հավելվածից դուրս, բայց առանձին ֆայլում, ուստի մոդուլը առանձին կազմված ծրագիր է: Կազմված մոդուլի ֆայլը (որը դուք պետք է օգտագործեք) կունենա ծրագրավորման միջավայրի կողմից տրամադրված ընդլայնում (օրինակ՝ .tpu, .ppu, .pcu):
Մոդուլները ստեղծվում են, որպես կանոն, կոդի կոմպակտությունն ապահովելու համար, որոնց մասին պետք է հոգ տան մեծ նախագծերը։ Հարկ է նաև նշել, որ մոդուլների օգտագործումը որոշակի իմաստով վերացնում է հիշողության հատվածավորման սահմանափակումը, քանի որ յուրաքանչյուր մոդուլի կոդը գտնվում է առանձին հատվածում:
Մոդուլի կառուցվածքը հետևյալն է.
միավոր<имя модуля>; Ինտերֆեյս<интерфейсная часть>Իրականացում<исполняемая часть>Սկսել<инициализация>վերջ.
Մոդուլի անվանումը (միավոր)
Unit հիմնաբառին հաջորդող մոդուլի անունը պետք է համապատասխանի ֆայլի անվանմանը (առանց .pas), որը պարունակում է իր կոդը: Բացի այդ, օգտագործելով անունը, մոդուլը միացված է մեկ այլ մոդուլի կամ հիմնական ծրագրին: Դա անելու համար դուք պետք է նշեք «Օգտագործում» հիմնաբառը և նշեք ստորակետերով առանձնացված փլագինների ցանկը.
օգտագործում է<список имен модулей>;
Ինտերֆեյսի մաս (ինտերֆեյս)
Ինտերֆեյսի հատվածը նկարագրում է օբյեկտների վերնագրերը, որոնց հասանելիություն կունենան այլ մոդուլներ և ծրագրեր: Սրանք հաստատուններ, տեսակներ, փոփոխականներ և ենթածրագրեր են: Օրինակ, այսպես կարող է տեսք ունենալ Search մոդուլի ինտերֆեյսի մասը, որը պարունակում է զանգվածի տարրերի որոնման ալգորիթմներ։
միավորի որոնում; Ինտերֆեյսի տեսակը arr = ամբողջ թվի զանգված; vars:string; binary_search պրոցեդուրա (x: ամբողջ թիվ; Ar: arr; var s: տող); ընթացակարգի տող_որոնում (x: ամբողջ թիվ; Ar: arr; var s: տող);
Այս մոդուլը հայտարարելու համար անհրաժեշտ է ծրագրում նշել դրա անունը.
Դրանից հետո հնարավոր կլինի օգտագործել ինտերֆեյսի մասում նկարագրված բոլոր օբյեկտները։
Կատարվող մաս (Իրականացում)
Այս բաժինը սկսվում է Իրականացում բառով: Այստեղ է, որ դուք պետք է նկարագրեք ինտերֆեյսի մասում հայտարարված ենթածրագրերը: Միևնույն ժամանակ թույլատրվում է դրանց վերնագրերում չնշել ֆորմալ պարամետրեր, այլապես դրանք պետք է ամբողջությամբ համապատասխանեն ինտերֆեյսի մասի պարամետրերին։ Բացի այդ, ինտերֆեյսի հատվածը կարող է պարունակել օբյեկտներ, որոնք տեղական են (անմատչելի են կանչող ծրագրին) մոդուլի համար:
Նախաձեռնող մաս
Նախաձեռնող մասը սկսում է իր աշխատանքը մինչև հիմնական ծրագրի կատարման մեկնարկը: Դրանում (Սկիզբի և վերջի միջև), որպես կանոն, նկարագրվում են օպերատորներ, որոնք նախատեսված են տարբեր տեսակի օժանդակ աշխատանքների համար: Այս մասը կարող է բացակայել կամ դրանում ծածկագիր չկա: Առաջին դեպքում դուք պետք է նշեք End կետով, երկրորդում թողեք դատարկ տարածք Begin և End ներսում:
Մոդուլների կազմում
Ծրագրում կարող են օգտագործվել միայն կազմված մոդուլներ, որոնք ունեն ընդլայնում, որը տրամադրվում է ձեր հավելվածի մշակման միջավայրի կողմից: Դիտարկենք դրանցից ամենահայտնի երեքը.
մոդուլներ կազմել Turbo Pascal-ում
Մոդուլը կազմելու արդյունքը TurboPascal, կլինի ընդլայնումով ֆայլ .tpu (Turbo Pascal միավոր) որը պահպանում է իր կոդը:
մոդուլներ կազմել Free Pascal-ով
Մոդուլը միջավայրում կազմելուց հետո Անվճար Պասկալ, երկու ֆայլ ստեղծվում են տարբեր թույլտվություններով. .ppuև .օ. Առաջինը պարունակում է մոդուլի ինտերֆեյսի մասը, իսկ երկրորդը (պահանջվում է ծրագրի կապակցման համար) իրականացման մաս է։
մոդուլների կազմում Pascal ABC.NET-ում
Pascal ABC.Net-ը չի ստեղծում մեքենայական լեզվի կոդ մոդուլի կազմման ժամանակ: Եթե կոմպիլյացիան հաջող է, կոդը պահվում է .pcu լուծաչափով ֆայլում:
Turbo Pascal և Free Pascal ծրագրավորման միջավայրերի համար կա կոմպիլյացիայի երեք ռեժիմ՝ Compile, Make և Build: Compile ռեժիմում ծրագրում օգտագործվող բոլոր մոդուլները պետք է նախապես կազմված լինեն։ Կազմման ռեժիմում գտնվող հավելվածը ստուգում է բոլոր միացված մոդուլները ծրագրավորման միջավայրի համար համապատասխան թույլտվությամբ ֆայլերի առկայության համար (.tpu կամ .o): Եթե դրանցից որևէ մեկը չի գտնվել, ապա որոնվում է չգտնված մոդուլի անունով և .pas ընդլայնման ֆայլ: Ռեժիմներից ամենահուսալիը Build-ն է: Այս ռեժիմում ֆայլերի որոնումն ու կազմումը (.pas ընդլայնմամբ) տեղի է ունենում նույնիսկ այն ժամանակ, երբ մոդուլի ֆայլերն արդեն գոյություն ունեն:
Օրինակ. եկեք ստեղծենք մի փոքր մոդուլ, որը պարունակում է զանգվածի տարրերի երկուական և գծային որոնման ընթացակարգեր: Մոդուլի կոդը:
միավորի որոնում; Ինտերֆեյսի տեսակը arr = ամբողջ թվի զանգված; vars:string; binary_search պրոցեդուրա (x: ամբողջ թիվ; Ar: arr; var s: տող); ընթացակարգի տող_որոնում (x: ամբողջ թիվ; Ar: arr; var s: տող); Իրականացում var a, b, c, i՝ ամբողջ թիվ; binary_search պրոցեդուրա (x: ամբողջ թիվ; Ar: arr; var s: տող); սկսել a:=1; b:=5; s:="ՉԻ"; մինչդեռ ա<=b do
begin
c:=a+(b-a) div 2;
if (x
Այս ամբողջ կոդը պետք է լինի առանձին ֆայլում: Այժմ գրենք հիմնական ծրագիրը, որում կմիացնենք մեր Search մոդուլը։
Ծրագրի մոդուլ_որոնում; օգտագործում է Crt, Search; var mas՝ ամբողջ թվերի զանգված; n, j: ամբողջ թիվ; str:string; y: char; սկսել clrscr; writeln («Մուտքագրեք զանգվածի տարրերը»); j:=1-ից 5-ի համար կարդացեք (mas[j]); գրել ("Մուտքագրեք թվերի որոնումը. "); readln(n); write("Այս զանգվածը պատվիրված է? (y/n)"); readln(y); if y="y" ապա երկուական_որոնում(n, mas, str) else line_search(n, mas, str); գրել (str); readkey; վերջ.
Ֆայլերը կազմելուց հետո այս հավելվածը պետք է ճիշտ աշխատի։ Իհարկե, եթե պատասխանում եք «Այս զանգվածը պատվիրված է» հարցին: ծրագրին տալ կեղծ տեղեկատվություն, այնուհետև այն կարող է պատասխանել նույն կերպ:
Պասկալ լեզվում ենթածրագրերի գրադարաններն օգտագործվում են մոդուլների օգտագործմամբ կառուցվածքային ծրագրավորման տեխնոլոգիան իրականացնելու համար: Տեքստային առումով գրադարանները միավորվում են անկախ ծրագրային միավորների մեջ, որոնք կոչվում են Pascal լեզվի մոդուլներ: Մոդուլներ են ստեղծվում առօրյաների գրադարաններ իրականացնելու համար: Սովորաբար, մոդուլները միավորում են ենթածրագրերը, որոնք կատարում են նույն դասի առաջադրանքները:
Մոդուլանկախ ծրագրային միավոր է, որն ինքնավար կազմվում է և ունի որոշակի կառուցվածք։
Մոդուլն ունի հետևյալ կառուցվածքը.
Pascal մոդուլի անվանումը բաղկացած է Unit սպասարկման բառից, որին հաջորդում է մոդուլի անվանումը: Մոդուլի անվան համար խիստ պահանջներ կան, և այս անունը պետք է համապատասխանի սկավառակի ֆայլի անվանը .pas ընդլայնման հետ, որը պարունակում է մոդուլի տեքստը:
UnitMyType; //ֆայլ MyType.pas
Մոդուլի անվանումն օգտագործվում է մոդուլը ծրագրերի և այլ մոդուլների հետ կապելու համար: Ծրագրերը և մոդուլները կապվում են ծրագրի կամ մոդուլի Օգտագործումներ բաժնում անհրաժեշտ մոդուլին: Մոդուլներն իրենց աշխատանքի համար կարող են կանչել այլ մոդուլներ, եթե մոդուլը կանչում է մեկ այլ մոդուլ, ապա «Օգտագործումներ» բաժինը պետք է հետևի INTERFACE բանալի բառին:
Pascal լեզվի միջերեսային մասը սկսվում է INTERFACE վերապահված բառով: Այն ծառայում է մոդուլը հոսթ ծրագրի կամ այլ մոդուլների հետ կապելու համար: Ինտերֆեյսի մասը պարունակում է մոդուլի բոլոր գլոբալ օբյեկտների հայտարարությունը: Նախ և առաջ հայտարարվում են ենթածրագրեր և, բացի այդ, գլոբալ տեսակներն ու փոփոխականները: Եթե օբյեկտը հայտարարված է գլոբալ, ապա այն կարող է օգտագործվել կանչող ծրագրում և մոդուլում առանց հատուկ հայտարարագրի:
Միավոր ջրային զանգված;
Ինտերֆեյս
ՕԳՏԱԳՈՐԾՈՒՄ Է MyType;
[type_name]:[type];
[գլոբալ_փոփոխականների_ցուցակ]:[տեսակ];
Ինտերֆեյսի մասում ենթածրագրերը հայտարարվում են իրենց վերնագրերով, որոնք ներառում են ենթածրագրի անվանումը և պաշտոնական պարամետրերի ցանկը:
Pascal լեզվի գործարկվող մասը սկսվում է ծառայողական IMPLEMENTATION բառով և պարունակում է ինտերֆեյսի մասում հայտարարված ենթածրագրերի նկարագրությունը, բացի այդ, գործարկվող մասում կարող են հայտարարվել մոդուլի տեղական օբյեկտները (փոփոխականներ, հաստատուններ): Ենթածրագրի նկարագրությունը կատարվող մասում պետք է սկսվի ենթածրագրի վերնագրով, մինչդեռ պաշտոնական պարամետրերի ցանկը բաց է թողնված:
Pascal լեզվի մեկնարկող մասը դադարեցնում է մոդուլը, և այս մասը կարող է բացակայել կամ դատարկ լինել: Նախաձեռնող մասի կատարումը խորհուրդ չի տրվում, քանի որ կախովի իրավիճակներ կարող են առաջանալ: Այն պարունակում է գործարկվող հայտարարություններ, սահմանում է գլոբալ փոփոխականների սկզբնական արժեքները, բացում է անհրաժեշտ ֆայլերը և կապեր է հաստատում այլ ֆայլերի հետ:
Պասկալում մոդուլներ կազմելը
Մոդուլների հետ աշխատելիս դուք պետք է կազմեք մոդուլներն իրենք և կազմեք ծրագրեր, որոնք օգտագործում են մոդուլները: Ինչպես գիտեք, Borland Pascal միջավայրում կա կոմպիլյացիայի երեք ռեժիմ (Compile, Build, Make): Մոդուլն ինքնին կազմելիս սովորաբար օգտագործվում է Compile ռեժիմը, թեև այլ ռեժիմներ հնարավոր են, եթե մոդուլն օգտագործվում է այլ մոդուլների կողմից: Մոդուլը կազմելով ոչ թե գործարկվող ծրագիր է ստեղծվում, այլ .tpw ընդլայնմամբ հատուկ կազմված մոդուլային ֆայլ է ստեղծվում։ Կազմված միավորի ֆայլերը տեղադրվում են գրացուցակներում, որոնք սովորաբար կոչվում են Units (նշված է միջավայրի կարգավորումներում): Մոդուլներ պարունակող ծրագրեր կազմելիս կարելի է օգտագործել կոմպիլյացիայի բոլոր երեք ռեժիմները։ Տարբեր ռեժիմներ կազմելը տարբերվում է տևողությամբ և հուսալիությամբ:
Ռեժիմ Կազմել- ամենապարզն ու ամենաարագը: Այս ռեժիմում կոմպիլյատորը ստուգում է «Օգտագործումներ» բաժնում փլագինների առկայությունը և ծրագրերը կազմում, եթե դրանք կան: Եթե մոդուլը բացակայում է, կոմպիլյացիան դադարում է, և բացակայող մոդուլի մասին հաղորդագրություն է ցուցադրվում:
Ռեժիմում Դարձնելկոմպիլյատորը ստուգում է plug-ins-ի առկայությունը, և եթե որևէ մոդուլ չի գտնվել, կոմպիլյատորը փնտրում է մոդուլի տեքստը .pas ընդլայնմամբ, կազմում է մոդուլը և այնուհետև կազմում է ծրագիրը: Բացի այդ, կոմպիլյատորը ստուգում է .tpw և .pas մոդուլների ստեղծման ամսաթվերը: Եթե նա գտնում է, որ .pas ֆայլի ստեղծման ամսաթիվը ավելի ուշ է, քան .tpw ֆայլը, նա եզրակացնում է, որ փոփոխություններ են կատարվել մոդուլի տեքստում և նորից վերակոմպիլացնում է մոդուլները: Այսպիսով, այն ավելի հուսալի է:
Ռեժիմում Կառուցելբոլոր .tpw ֆայլերը անտեսվում են, կոմպիլյատորը նորից կկազմի հիմնական ծրագրում օգտագործվող բոլոր մոդուլները և կկազմակերպի ծրագիրը: Սա ամենահուսալի ռեժիմն է, բայց միևնույն ժամանակ ամենաերկարը։
Մոդուլ
(ՄԻԱՎՈՐ-մոդուլ, միավոր) ինքնավար (առանձին) կազմված ծրագրային միավոր է, որը պարունակում է նկարագրության բաժնի բաղադրիչները (պիտակներ, հաստատուններ, տեսակներ, փոփոխականներ, ընթացակարգեր, գործառույթներ), ինչպես նաև կարող է պարունակել սկզբնավորման մասի օպերատորներ:
Մոդուլն ինքնին գործարկվող ծրագիր չէ, այլ նախատեսված է օգտագործել այլ ծրագրերի և մոդուլների կողմից:
Մոդուլի կառուցվածքը
Մոդուլն ունի հետևյալ կառուցվածքը.
ՄԻԱՎՈՐ<
մոդուլի անվանումը >
Ինտերֆեյս
<
ինտերֆեյսի բաժին >
ԻՐԱԿԱՆԱՑՈՒՄ
<
իրականացման բաժինը >
ՍԿՍԵԼ
<
սկզբնավորման բաժինը >
ՎԵՐՋ.
Մոդուլի վերնագիր բաղկացած է վերապահված բառից միավոր(մոդուլ) և մոդուլի անվանումը:
Մոդուլի անվանումը ընտրվում է ընդհանուր կանոնների համաձայն և պետք է համապատասխանի մոդուլի սկզբնական կոդը պարունակող սկավառակի ֆայլի անվանմանը:
Մոդուլի անվան ընդլայնում (. անց
) նշված չէ, այն սահմանված է լռելյայն:
Մոդուլի անվանումն օգտագործվում է այն հիմնական ծրագրին մի կետով կապելու համար օգտագործում է .
Առաջարկ օգտագործում էմ.բ. տեղադրված է մոդուլի վերնագրից հետո կամ բառերի հետևում
Ինտերֆեյսև Իրականացում .
Ինտերֆեյսի մաս Ինտերֆեյս(ինտերֆեյս, հոդակապ, կապ) և պարունակում է հղումներ դեպի այլ մոդուլներ և գլոբալ օբյեկտների հայտարարագրեր (նկարագրություններ), օրինակ՝ պիտակներ, հաստատուններ, տեսակներ, փոփոխականներ և ընթացակարգերի ու գործառույթների վերնագրեր, որոնք հասանելի են հիմնական ծրագրի և այլ մոդուլների համար (այսինքն՝ տեսանելի դրսից):
Իրականացման բաժին - սկսվում է հիմնաբառով Իրականացում(կատարում) և պարունակում է մոդուլի տեղական օբյեկտների նկարագրություն, այսինքն՝ պիտակներ, հաստատուններ, տեսակներ, փոփոխականներ, որոնք հասանելի չեն հիմնական ծրագրին և այլ մոդուլներին (այսինքն դրսից տեսանելի չեն) և ընթացակարգերի և գործառույթների ամբողջական նկարագրություն։ . Այս դեպքում ենթածրագրերի վերնագրում պաշտոնական պարամետրերի ցանկը կարող է լինել բաց թողնված, բայց եթե տրված է, այն պետք է ճշգրտորեն համապատասխանի ինտերֆեյսի մասի նկարագրությանը:
Նախնականացման բաժին
- փակագծերում փակցված ՍԿԶԲ ՎԵՐՋ.
և պարունակում է հայտարարություններ, որոնք կկատարվեն նախքան վերահսկողությունը հիմնական ծրագրին փոխանցելը: Սա կարող է լինել Տվյալների (փոփոխական) սկզբնավորման հայտարարություններ Օրինակ՝ հանձնարարության և մուտքագրման հայտարարությունները, ինչպես նաև ֆայլերը կապելու և բացելու ընթացակարգերը: Օպերատորների բաժինը կարող է լինել. դատարկ ՍԿԶԲ ՎԵՐՋկամ պարզապես բացակայում է ՎԵՐՋ .
Մոդուլի վերջում դրվում է կետ:
Մոդուլների կազմում և օգտագործում
RAM համակարգն ունի հատվածային կառուցվածք (մեկ հատվածը հավասար է 64K = 65535 բայթ): Ծրագրի կոդը կարող է լինել ոչ ավելի, քան մեկ հատված, տվյալների քանակը չի կարող գերազանցել մեկ հատվածը (բացառությամբ այն դեպքերի, երբ օգտագործվում է դինամիկ հիշողություն) և մեկ հատվածը կույտի համար: Կույտի չափը սահմանվում է հրահանգով ($ M<>): Կույտի նվազագույն չափը 1K է, իսկ առավելագույն առանձին հատվածը լռելյայն 16K է: Տեղական փոփոխականների արժեքները դրվում են կույտի վրա, երբ ենթածրագրը կանչվում է, և դուրս գալիս դուրս են գալիս կույտից:
Մոդուլի կոդը տեղադրվում է առանձին հատվածում, քանի որ այն հեռարձակվում է ինքնուրույն հիմնական ծրագրից, և ծրագրի կողմից օգտագործվող մոդուլների քանակը կախված է միայն առկա OP-ից: Սա թույլ է տալիս ստեղծել մեծ ծրագրեր:
Կազմողն առաջացնում է մոդուլի կոդը նույն անունով, բայց ընդլայնմամբ tpu
(տուրբո պասկալ միավոր).
Մոդուլը հիմնական ծրագրի կամ այլ մոդուլների կողմից օգտագործելու համար դրա անվանումը (առանց ընդլայնման) տեղադրվում է առաջարկների ցանկում։ օգտագործում է
Եթե մոդուլը կոմպակտ է և հաճախ օգտագործվում է կիրառական ծրագրերի կողմից, այն կարող է տեղադրվել ստանդարտ մոդուլի գրադարանում TURBO.TPL (Turbo-Pasacal-գրադարան )
օգտագործելով կոմունալ TPUMOVER.
Բայց դա պետք է արվի միայն արտակարգ իրավիճակների դեպքում։ գրադարանը բեռնվում է OP-ում և կրճատում է ծրագրի տարածքը:
Ֆայլը մոդուլի սկզբնական կոդով կազմելիս հայտնվում է համանուն ֆայլ՝ ընդլայնմամբ tpu
և տեղադրվում է տարբերակով նշված գրացուցակում
ՏԱՐԲԵՐԱԿՆԵՐ / ՏԵՂԵԿԱՏՈՒՆԵՐ / ՄԻԱՎՈՐ ՏԵՂԵԿԱՏՈՒՆԵՐ
կամ ընթացիկ գրացուցակում, եթե այս տարբերակը չկա:
Հիմնական ծրագիրը կազմելիս օգտագործվող մոդուլները պետք է լինեն տարբերակով նշված գրացուցակում
ՏԱՐԲԵՐԱԿՆԵՐ / ՏԵՂԵԿԱՏՈՒՆԵՐ / EXE & TPU ՏԵՂԵԿԱՏՈՒՆԵՐ
կամ ընթացիկ գրացուցակում այս տարբերակի բացակայության դեպքում
Ստանալ EXEառաջադրանքի ֆայլը տարբերակում
ԿԱԶՄԵԼ/ԴԵՍՏԻՆԱՑԻԱ/ՍԿՍԱՎՈՐ (ՀԻՇՈՂՈՒԹՅՈՒՆ)
տեղադրել ՍԿԱՎ
.
Մոդուլներ կազմելու երեք եղանակ կա.
- ԿԱԶՄԵԼ
-ԿԱՌՈՒՑԵԼ
- ԿԱՏԱՐԵԼ
Մենյուի կողմից սահմանված ռեժիմներ ԿԱԶՄԵԼ
1.Ռեժիմ ԿԱԶՄԵԼ(կոչ Alt-F9
) . Այս դեպքում ծրագիրը կազմվում է, և օգտագործվող մոդուլները պետք է լինեն: նախապես կազմված և պահված համապատասխան գրացուցակներում:
2.Ռեժիմ ԿԱՌՈՒՑԵԼ(կոչ -
F9) . Այս դեպքում նախկինում կազմված մոդուլներն անտեսվում են, իսկ ընդլայնումով մոդուլները անց
և նորից կազմվել։
3.Ռեժիմ ԿԱՏԱՐԵԼ(կոչ F9) . Այս դեպքում վերակոմպիլացվում են միայն այն մոդուլները, որոնք փոփոխություններ են ունեցել տեքստում։
Օրինակ 16.1.
Ֆայլի մեջ inp.txt կան իրական թվերի երեք զանգված
2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6
Հաշվարկային ֆունկցիա
որտեղ Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc են համապատասխան a, b և c զանգվածների առավելագույն տարրը, գումարը և դրական տարրերի քանակը:
Արդյունքը դուրս բերեք ֆայլ դուրս.
txt
և էկրանին:
Մոդուլի տեքստը
UNMAS;
Ինտերֆեյս
Const n=10;
Տեսակը vec=real-ի զանգված;
Վարզ:vec;
i: integer;
f1,f2:տեքստ;
Ընթացակարգ SK1(z:vec; num:byte; Var s:real; Var k:byte);
Ֆունկցիան MAX(z:vec; num:byte):real;
Իրականացում
ProcedureV(s:char; num:byte;Var z:vec);
Սկսել
Writeln ("Array",s);
i:=1-ից մինչև num do
Սկսել
Read(f1,z[i]); Գրել (z[i]:4:1», «:3);
վերջ;
readln (f1); Գրել է;
վերջ;
Ընթացակարգ SK1(z:vec;num:byte; Var s:real; Var k:byte);
Սկսել
s:=0; k:=0;
համար i:=1-ից մինչև num անել, եթե z[i]>0 ապա
Սկսել
s:=s+z[i];
k:=k+1
վերջ;
վերջ;
Ֆունկցիան MAX(z:vec;num:byte):real;
varm:իրական;
Սկսել
m:=z;
համար i:=1-ից մինչև num անել, եթե z[i]>m ապա m:=z[i];
MAX: = մ
վերջ;
Սկսել
Նշանակել (f1, inp.txt"); վերականգնել (f1);
Նշանակել (f2, out.txt"); Վերաշարադրել (f2)
վերջ.
Ծրագրի տեքստ
Ծրագիր lr7_16;
Օգտագործում է CRT,UNMAS;
Վար
a,b,c:vec;
y,sa,sb,sc:real;
ka,kb,kc:byte;
Սկսել
clrscr;
Vv ("a", 8, a);
vv ("b", 9, b);
vv ("c", n, c);
SK1 (a,8,sa,ka);
SK1 (b, 9, sb, kb);
SK1 (c, n, sc, kc);
y:=(MAX(a,8)+MAX(b,9)+MAX(c,n))+(sa+sb+sc+ka+kb+kc);
Writeln ("Արդյունք:":20);
Գրել ("Array a: ");
Writeln("sa=",sa:5:1," ka=",ka);
Write ("Array b: ");
Writeln("sb=",sb:5:1," kb=",kb);
Write ("Array c: ");
Writeln ("sc=",sc:5:1," kc=",kc);
Writeln(" ":10,"y=",y:10);
կարդալ;
Writeln(f2,"ђҐ§g"mv դեպի:");
Writeln(f2," ":10,"y=",y:10);
փակել (f1);
Փակել (f2)
վերջ.
Ծրագրի արդյունքները
Զանգված ա
-2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6
Զանգված բ
2.3 -4.3 2.1 2.5 -3.7 -5.6 4.6 3.5 -7.5
Զանգված գ
-2.1 4.3 -2.3 7.6 4.5 -8.9 5.7 -4.5 6.8 -5.8
Արդյունք:
Զանգված ա՝ sa= 17.6 ka=4
b զանգված՝ sb= 15.0 kb=5
c զանգված՝ sc= 28.9 kc=5
y=9.330E+01