Ծրագրերի ցուցակագրում. Ցուցակում - ինչ է դա պարզ բառերով. «Ի՞նչ է ծրագրի ցանկը» հայեցակարգի ամբողջական վերլուծություն

Մինչ արժեթղթերը կամ կրիպտոարժույթի մետաղադրամները հասանելի դառնան առևտրային հարկերում գտնվող թրեյդերներին, նրանք պետք է անցնեն ընտրության բարդ գործընթաց և ներառվեն ցուցակում: Վերլուծություն պարզ բառերով, ինչ է ցուցակվում ֆոնդային բորսայում՝ և՛ ֆոնդային բորսայում, և՛ կրիպտոարժույթով, որո՞նք են այն հիմնական փուլերը, որոնք դուք պետք է անցնեք ցուցակում հայտնվելու համար, հիմնական օգուտները, որոնք ստանում է ընկերությունը, որն է ցուցակից հանելու էությունը:

Ինչ է ցուցակագրումը

Ցուցակման հայեցակարգը հանդիպում է մեր կյանքի տարբեր ոլորտներում.

  • Ֆոնդային և կրիպտոարժույթների բորսաներ- դրանք կլինեն այս հոդվածի թեման: Այստեղ մենք խոսում ենքառևտրային հարթակների ցուցակներում արժեթղթեր կամ կրիպտո մետաղադրամներ ավելացնելու մասին:
  • Առևտրի մեջ- սա ենթադրում է այս կամ այն ​​արտադրողի ապրանքների ավելացում խանութի տեսականու մեջ:
  • Ծրագրավորման մեջ- սա աղբյուրծրագրի (տեքստ), որը կոմպիլյատորի կողմից թարգմանվում է գործարկվող կոդի։
  • Անշարժ գույքում- այստեղ ցուցակագրման պայմանագրեր են կնքվում գույքի սեփականատիրոջ և այն միջնորդավճարով վաճառող վաճառքի գործակալի միջև:

Մենք չենք դիտարկի վերջին երկու ճյուղերը։ Մեզ հետաքրքրում է ցուցակագրումը, ինչպես նաև կրիպտոարժույթը:

Արժեթղթերի ցուցակագրում և հանում

Ցուցակը մեր բառապաշարում հայտնվել է բառացանկից, որը անգլերենից թարգմանվում է որպես «ցուցակ»: Արժեթղթերի ցուցակումը ֆոնդային բորսայում հանդիսանում է հարթակում գնանշվող գործիքների ցանկում բաժնետոմսերի, ընկերությունների պարտատոմսերի ավելացման ընթացակարգ: Դրանից հետո դրանք հասանելի են դառնում դրա վրա գնելու և վաճառելու համար։

Ցուցակման ընթացակարգն անցնելուց հետո արժեթղթերը ներառվում են բորսայի առևտրային ցուցակում

Հաճախ շուկայի մասնակիցները հենց ցուցակը անվանում են ցուցակ: Միևնույն ժամանակ, յուրաքանչյուր կայք այս ցանկըիմը.

Ցուցակումն ամենից հաճախ նախաձեռնում է թողարկող ընկերությունը, սակայն հազվադեպ դեպքերում բորսան ինքը կարող է ցանկություն հայտնել իր ցուցակում ներառել որոշակի արժեթղթեր, եթե դրանք արդեն մեծ պահանջարկ ունեն թրեյդերների շրջանում ոչ պաշտոնական ուղիներով:

Ընկերությունների համար բորսայում ցուցակվելն ունի մեծ թվով առավելություններ, և, հետևաբար, զարմանալի չէ, որ ձեռնարկությունները մեծ ջանքեր են գործադրում այս ընթացակարգը անցնելու համար:

Փոխանակման ցուցակումը կարևոր է չշփոթել IPO-ի հետ: Առաջին դեպքում ընկերությունը ձգտում է մտնել որոշակի առևտրային հարթակի գնանշումների ցուցակ: Իսկ IPO-ն ենթադրում է, որ ընկերությունը դառնում է հրապարակային, և նրա արժեթղթերը հասանելի են դառնում ներդրողներին ոչ միայն, այլ նաև այլ ուղիներով, օրինակ՝ իր մասնաճյուղերի միջոցով:

Ցուցակման փուլերը

Ցուցակման ընթացակարգը նախատեսում է մի քանի փուլ, որը թողարկող ընկերությունը պետք է անցնի մինչև իր արժեթղթերը հասանելի դառնան ներդրողների համար:

  1. Ամեն ինչ սկսվում է դիմումից: Դա կարող է անել ինչպես ինքը թողարկողը, այնպես էլ ընկերության շահերը ներկայացնող անձը։
  2. Հաջորդը գալիս է քննության փուլը։ Բորսայի ներկայացուցիչները վերլուծում են ինչպես արժեթղթերը, այնպես էլ ընկերության մասին առկա բոլոր տվյալները։ Հետազոտվում է ձեռնարկության շահութաբերությունը, նրա ակտիվների իրացվելիությունը: Ընկերությունից պահանջվում է տրամադրել վերջին մի քանի տարիների ընթացքում հավաքագրված բոլոր ֆինանսական հաշվետվությունները:
  3. Հատուկ հանձնաժողովը վերանայում է քննությունների արդյունքները և որոշում է արժեթղթեր ավելացնել իր ցուցակում կամ մերժել հայտը:
  4. Եթե ​​որոշումը դրական է, երկու կողմերն էլ՝ ընկերությունը և փոխանակումը, համաձայնություն են կնքում։

Միջին հաշվով, ընթացակարգը տևում է մոտ 1-2 ամիս: Ցանկում մնալու համար թողարկողը սովորաբար պետք է եռամսյակը մեկ անգամ ներկայացնի անհրաժեշտ տվյալները բորսայում:

Ընկերությունների համար առևտրային հարթակների կողմից պարտադրված ցուցակման կանոնները տարբեր են: Ոմանք կարող են միայն ցուցակագրել այն ընկերությունները, որոնց կապիտալիզացիան կազմում է առնվազն 50 միլիոն դոլար և առնվազն 3 տարվա ներկայություն շուկայում: Մյուսները կարող են բարձրացնել կամ իջեցնել այս և այլ պահանջների նշաձողը:

Եթե ​​ոչ բոլոր պայմանները բավարարված են, բայց արժեթղթերը հետաքրքրություն են ներկայացնում բորսայի համար, դրանք ընկնում են արժեթղթերի նախնական ցուցակում, այն նաև կոչվում է. նախնական ցուցակում. Ներդրողները կարող են նաև առևտուր անել այս բաժնետոմսերով, բայց բորսայի պատերից դուրս և առևտրային հարկը պատասխանատվություն չի կրում դրանց համար:

Ցուցակման մակարդակները

Հիմնականում բորսաներում կան ցուցակման մի քանի մակարդակ: Սկզբում հավելավճարներառված են հուսալիության բարձր մակարդակով առավել իրացվելի արժեթղթերը:

Ընկերություններին երկրորդ մակարդակպահանջներն այլևս այնքան էլ բարձր չեն. Իսկ ամենացածրը՝ երրորդին դիմող ձեռնարկությունների համար, այսպես կոչված չակերտավոր ցուցակ. Ներդրողները, ովքեր գնում են այս մակարդակի ընկերությունների արժեթղթեր, պետք է ինքնուրույն վերլուծեն դրանց հուսալիությունը:

Օրինակ՝ Հիմնական և Այլընտրանքային հարթակները վավեր չեն։ Առաջինը բաժանված է երկու մակարդակի՝ «Ստանդարտ» և «Պրեմիում»։ Այլընտրանքային շուկան նախատեսված է փոքր և միջին զարգացող ձեռնարկությունների համար, որոնք այստեղ թույլատրվում են պարզեցված ընթացակարգով։

Պարբերաբար կայքերը կարող են մեծացնել կամ հակառակը նվազեցնել պարտատոմսերի, բաժնետոմսերի ցուցակման մակարդակը կամ նույնիսկ դրանք ընդհանրապես հանել ցուցակից:

Ցուցակման տեսակները

Տարբերակել առաջնային և երկրորդական ցուցակման միջև:

Առաջնային ցուցակագրումենթադրում է, որ բաժնետոմսերը հասանելի են ներդրողներին բորսայական հարթակում այն ​​երկրի ներսում, որտեղ ընկերությունը գրանցված է:

ժամը երկրորդական ցուցակագրումարժեթղթերը դուրս են բերվում միջազգային շուկաներ և ընդգրկվում օտարերկրյա հարթակների ցուցակներում։ Դա հնարավոր է անել միայն այն դեպքում, եթե նախնական ցուցակման փուլն անցել է:

Դեռ կա կրկնակի ցուցակագրում,որում ընկերությունը հետևողականորեն ձգտում է մտնել մի քանի գնանշումների ցուցակներում առևտրային հարկերհայրենի երկիր.

Ինչպես նաեւ խաչաձեւ ցուցակում– այս դեպքում ընկերությունը դիմումներ է ուղարկում մի քանի փոխանակման հարթակների ցուցակներին ավելացնելու համար տարբեր երկրներ. Ավելին, եթե նրանցից մեկը հավանություն է տալիս արժեթղթերի ավելացմանը, ապա ընկերությունը հնարավորություն է ստանում մյուսի կողմից ցուցակման ընթացակարգն ավարտելու պարզեցված սխեմայով։ Սա նվազեցնում է ոչ միայն նյութական ծախսերը, այլև դիմումի քննարկման ժամանակը:

Որո՞նք են թողարկողի առավելությունները

Իզուր չէ, որ ընկերությունները ջանքեր են գործադրում բորսայում ցուցակվելու համար, քանի որ դա նրանց մի շարք առավելություններ է խոստանում։ Նախ՝ մեծանում է նրանց ներդրումային գրավչությունը, և արդյունքում ավելի հեշտ է միջոցներ ներգրավել հետագա զարգացման համար։ Պլյուսները ներառում են նաև.

  • ձեռնարկության կապիտալիզացիայի աճ թողարկված արժեթղթերի պահանջարկի աճով.
  • գործարար շրջանակների նկատմամբ տեղեկացվածության և վստահության բարձրացում;
  • բաժնետոմսերի, պարտատոմսերի իրացվելիության բարձրացում;
  • արտարժույթի արտարժույթների ցուցակներում ավելացնելու ունակություն.
  • որոշ դեպքերում դուք կարող եք համապատասխանել հարկային արտոնություններին:

Այնուամենայնիվ, մի մոռացեք, որ այսուհետ ավելի մեծ ուշադրություն է դարձվելու ընկերության գործունեությանը, և ցանկացած գործողություն ակնթարթորեն կազդի բաժնետոմսերի արժեքի վրա: Բացի այդ, ցուցակագրման ընթացակարգն անվճար չէ: Կատարված բոլոր հետազոտությունները ծախսատար են։

Ի՞նչ է դա տալիս ներդրողներին

Գլխավորը վստահությունն է։ Ներդրողները, ներդրումներ կատարելով ընկերության բաժնետոմսերում, գիտեն, որ դրա վստահելիությունը ստուգվել է մասնագետների կողմից։ Բորսայական ցուցակում ներկայությունը նրանց փրկում է ձեռնարկության վստահելիության անկախ ստուգումներից:

Ինչ է հանվում ցուցակից

Նույնիսկ եթե արժեթղթերը ցուցակվեն ֆոնդային բորսայում, երաշխիք չկա, որ դրանք ընդմիշտ կմնան այնտեղ։ Որոշակի պայմաններում կայքը կարող է դուրս հանել նրանց: Դա տեղի է ունենում, օրինակ, եթե թողարկողը դադարում է պահպանել բորսայի պայմանները, չի կատարել իր պարտավորությունները, իրեն սնանկ է հայտարարել և այլն։

Բաժնետոմսերի գինը, որը ժամանակի ընթացքում չի բարձրանում, կարող է հանգեցնել նաև ցուցակից դուրս գալու, ինչը վկայում է ցածր պահանջարկի մասին։ Պատահում է, որ հանումը նախաձեռնում է հենց ընկերությունը, օրինակ՝ ձեռնարկությունների միաձուլման դեպքում։

Կրիպտոարժույթների ցուցակում

Ցուցակումը հաճախ քննարկվում է նաև կրիպտոարժույթի միջավայրում: Այստեղ թվային մետաղադրամները կամ նշանները հակված են հայտնվել փոխանակման հարթակների առևտրային ցուցակում:

Կրիպտոարժույթի նախագծերը ձգտում են ցուցակագրվել հանրաճանաչ բորսաներում

Կրիպտո փոխանակումների ցուցակման պահանջները տարբեր են: Շատ ավելի դժվար է հասնել մեծ հայտնի կայքեր, քան փոքր: Այդ իսկ պատճառով նախագծերի մեծ մասը սկսվում է փոքր առևտրային հարթակներից։

Թողարկման գինը

Հիմնական խնդիրներից մեկը ծախսերն են: . Քիչ հայտնի փոխանակումները կարող են անվճար թվարկել կրիպտոարժույթները: Հայտնի հարթակների ցուցակներում հայտնվելը կարող է արժենալ հազարավոր կամ նույնիսկ տասնյակ հազարավոր դոլարներ. նրանք գումար են վերցնում մետաղադրամը վերլուծելու համար, նախքան ցուցակագրելը: Չնայած կան բացառություններ.

Binance-ը, օրինակ, այս աշնանը հայտարարեց, որ ցուցակման վճարները կօգտագործվեն բարեգործական նպատակների ֆինանսավորման համար: Միևնույն ժամանակ, ֆիքսված գներ չկան. մշակողները իրենք են որոշում, թե որքան են ցանկանում վճարել ցուցակման համար: Poloniex-ի ղեկավարությունը պնդում է, որ ցուցակագրման համար գումար չի վերցնում:

Տարեսկզբին Business Insider-ի լրագրողները հրապարակեցին հոդված, ըստ որի՝ ICO նախագծերի համար կրիպտո փոխանակումների ցուցակագրման նվազագույն շեմը կազմում է $50,000, իսկ որոշ դեպքերում այն ​​կարող է հասնել $1 մլն-ի։

Եղել են նաև դեպքեր, երբ բորսաների ղեկավարությունը հանդիպել է կաշառք վերցնելու՝ մետաղադրամների ցուցակում ներառելու համար։ Օրինակ՝ Coinnest բորսան. նրա COO-ն և CTO-ն վճարվել է մոտ $890,000 S-coin կրիպտոարժույթը առևտրային ցուցակում ավելացնելու համար:

Ինչպես է դա աշխատում

Որպեսզի նշանը ներառվի ցուցակում, ամենից հաճախ անհրաժեշտ է դիմում ներկայացնել և լրացնել հարցաթերթիկ ընտրված կայքում: Այնուամենայնիվ, հանրաճանաչ փոխանակման մետաղադրամները կարող են ինքնուրույն ներառվել ցուցակում՝ չսպասելով, որ ծրագրի թիմը կառաջարկի դա անել: Օրինակ, բիթքոյնը (BTC) պարտադիր է յուրաքանչյուր բորսայում, և, որպես կանոն, Ethereum-ը (ETH):

Որո՞նք են հարցման մեջ ամենատարածված հարցերը:

  • մետաղադրամի անվանումը և նկարագրությունը.
  • հիմնական ցանցի գործարկման ամսաթիվը, ինչպես նաև հենց հարթակը.
  • հղում Github-ին;
  • հղում նախագծի սպիտակ թղթին;
  • հղումներ դեպի սոցիալական ցանցեր;
  • արդյոք ցանցում կա մայնինգ և արդյոք եղել է նախնական հանքարդյունաբերություն.
  • մետաղադրամների առավելագույն թողարկում և այլն:

Հաճախ բորսաները նաև մրցույթներ են անցկացնում իրենց օգտատերերի միջև՝ նրանք քվեարկում են առաջարկվող կրիպտոարժույթների օգտին, իսկ հաղթող մետաղադրամը ավելացվում է գնանշումների ցուցակում:

Huobi Global-ը գործարկել է կրիպտոարժույթների ավտոմատ ցուցակման հարթակ 2018 թվականի ամառվա վերջին: Իր օգնությամբ բորսան մտադիր է արագացնել առևտրային ցուցակում ժետոններ ավելացնելու և այն թափանցիկ դարձնելու գործընթացը:

Կարևոր նրբերանգներ

Առաջին բանը, որին նայում են փոխանակումները, մետաղադրամի արժեքն է, դրա օգտակարությունը համայնքի համար: Երկրորդ տեղում նախագծի անվտանգությունն է, քանի որ կրիպտո ցանցը կոտրելու դեպքում կտուժի նաև բորսան։ Համոզվեք, որ հետաքրքրված եք պրոֆեսիոնալիզմով, ինչպես նաև թիմի հեղինակությամբ:

Օրինակ, Bittrex-ում կա դիմումի քննարկման նախնական փուլ և խորը: Եթե ​​ընկերության մասնագետները նախնական փուլում համարում են, որ մետաղադրամն արժանի է ցուցակման բորսայում, ապա սկսվում է դրա մանրակրկիտ ուսումնասիրությունը: բնութագրերը, հարթակի պահանջներին համապատասխանող նորարարական հատկանիշներ։

Մետաղադրամներ, որոնք կարող են ճանաչվել որպես արժեթղթեր, բորսաները փորձում են չավելացնել. Օրինակ, Poloniex-ը անմիջապես հրավիրում է ծրագրավորողներին ծանոթանալ Howey թեստի հետ՝ որոշելու համար՝ արդյոք նշանը կարող է ընկնել այս չափանիշների ներքո, թե ոչ:

Խոշոր հարթակների շարքում բացառություն է Coinbase բորսան, որը ստացել է համապատասխան հաստատում կարգավորող մարմիններից և կարող է պաշտոնապես գործել արժեթղթերի հատկություններ ունեցող նշաններով:

Հետաքրքիր է, որ եթե ակտիվը հակասում է որոշակի երկրի օրենքներին, այն կարող է հասանելի չլինել որոշակի իրավասությունների օգտատերերի համար:

«Ֆոնդային բորսաների ազդեցությունը».

Ցուցակներին հանրաճանաչ կրիպտո փոխանակումներ ավելացնելուց հետո մետաղադրամների արժեքը, որպես կանոն, կտրուկ աճում է՝ միջինը 25-30%-ով։ Այս օրինաչափությունը նույնիսկ անվանվել է «ֆոնդային բորսայի էֆեկտ»: Դա տեղի է ունենում այն ​​պատճառով, որ ավելի շատ օգտվողներ իմանում են մետաղադրամի մասին, այն դառնում է ճանաչելի և մեծացնում դրա պահանջարկը: Այնուամենայնիվ, ամենից հաճախ այս բարձրացումը կարճատև է և շուտով արժեքը սկսում է նվազել:

Լինում են նաև իրավիճակներ, երբ բորսաների առևտրային ցուցակներում ընդգրկվելուց հետո նշանների գինը, ընդհակառակը, ընկնում է։ Ամենից հաճախ դա տեղի է ունենում, երբ նախագիծը հայտնվում է ցուցակում անմիջապես հետո, և ներդրողները, ովքեր ներդրում են կատարել նշանային վաճառքի ժամանակ, ձգտում են ավելի արագ լրացուցիչ գումար վաստակել մետաղադրամի վրա՝ ակտիվորեն սպառելով այն բորսայում:

Ծպտյալ մետաղադրամների հեռացումն իրականացվում է մի շարք պատճառներով.

  • ցածր հետաքրքրություն թրեյդերների կողմից;
  • օրենսդրական փոփոխություններ;
  • կոտրել կրիպտոնետի բլոկչեյնը;
  • մշակողների հրաժարումը մետաղադրամին հետագա աջակցությունից.
  • օգտվողների բողոքները.

Նշանները հանվում են, որպես կանոն, ոչ անմիջապես. բորսան թրեյդերներին մի քանի շաբաթ է տալիս դիրքերը փակելու և միջոցները սեփական դրամապանակ հանելու համար:

Ցուցակում առևտրի մեջ

Առևտրային ոլորտում առկա է նաև ցուցակման հայեցակարգը: Երբ մատակարարը ցանկանում է, որ իր արտադրանքը վաճառվի, օրինակ, խոշոր մանրածախ ցանցի դարակներում, նա նախ պետք է համաձայնի ընկերության ղեկավարության հետ իր ապրանքը ցուցակում ավելացնելու վերաբերյալ:

Եթե ​​ապրանքը գնորդների շրջանում պահանջարկ չունի, այն կարող է անցնել նաև ցուցակից հանելու ընթացակարգ, որի դեպքում այն ​​անհետանում է խանութի դարակներից։

Demol.c ծրագրի ցանկը ներկայացված է Նկ. 6.7. Ծրագրի անունը կգա ծրագրավորողի հետ: «.c» ընդլայնումը պարտադիր է: Տեքստը մուտքագրված է «Programmer's Notepad 2» խմբագրիչում (կրճատ՝ PN2), որը ներառված է WinAVR փաթեթում՝ գրաֆիկական վահանակի փոխարեն։ Դրա միջոցով իրականացվում է նաև նախագծի ստեղծումը, սխալների ուղղումը, ծրագրի կազմումը և նույնիսկ ՄԿ-ի ծրագրավորումը։

Բրինձ. 6.7. Demol.c ծրագրի ցանկը:

Բրինձ. 6.8. Արտաքին տեսք PN2 ծրագրեր.

PN2 խմբագիրը անկախ նախագիծ է իր սեփական վեբկայքով: PN2 հիմնական մենյուի տեսքը ներկայացված է Նկ. 6.8.

Ընթացակարգը.

1.3 գործարկեք «WlnAVR-20100110-install.exe» ֆայլը (29 ՄԲ), որը գտնվում է կցված CD-ի վրա: Անհրաժեշտության դեպքում այս ֆայլը կարելի է անվճար ներբեռնել ինտերնետից: Տեղադրեք WlnAVR լռելյայն C:\WinAVR-20100110\ պանակում:

2. Բացեք PN2 խմբագրիչը՝ «Սկսել - Ծրագրեր - WinAVR-20100110 - Ծրագրավորողների նոթատետր»: Միացնել տողերի համարակալումը. «Գործիքներ - Ընտրանքներ - Ընդհանուր - Կանխադրված -<поставить «галочку» возле «Show Line Numbers»>- ԼԱՎ".

3. PN2 խմբագրիչում ստեղծեք նոր C-ֆայլ՝ «File - New - С/С++»: Մուտքագրեք ծրագրի տեքստը ստեղնաշարից՝ համաձայն Նկ. 6.7 և պահեք այն ձեր կոշտ սկավառակի վրա. «Ֆայլ - Պահպանել որպես… -<ввести путь и имя файла, например, для однозначности C:\1001\demol.c>- ԼԱՎ".

Այսուհետ սքրինշոթերը (սքրինշոթները) կցուցադրվեն միայն գործողության ամենակարևոր կետերում՝ տարածք խնայելու համար: Մնացած սքրինշոթները կարելի է քայլ առ քայլ դիտել ներառված ձայնասկավառակի վիդեո ձեռնարկներում:

Ցուցակման բացատրություններ.

Տող 1-ը սկսվում է մեկնաբանություններով, որոնք ձախից սահմանազատված են երկու առաջ շեղերով: «//» նշաններից հետո ամբողջ տեքստը կարող է լինել ցանկացածի մասին, ցանկացած լեզվով, ցանկացած ազատությամբ և հապավումով: Սա կամայական տեղեկություն է, որ ծրագրավորողը գրում է իր՝ իր սիրելիի համար, որպեսզի մեկ-երկու ամսից հիշի, թե իրականում ինչ է քննարկվել։ Սովորաբար նշվում է ծրագրի կարճ անվանումը և հեղինակությունը:

2-րդ տողում կան նաև մեկնաբանություններ, բայց տեխնիկական բնույթի։ Ահա HL1 ցուցիչը և SB1 կոճակը MK նավահանգիստների հատուկ գծերին միացնելու միացման դիագրամը: Ազդանշանների անվանումները համապատասխանում են MHKpocxeMyATmega48A-ի dashite դասավորությանը (նկ. 6.9):

Բրինձ. 6.9. MKATmega48A ազդանշանի դասավորություն:

Ծրագրի «վերնագրում» պարզ սխեմաների տեքստային նկարագրության պրակտիկան տարածված է ծրագրավորողների համայնքում, ովքեր ծուլանում են գրաֆիկական սխեմաներ գծել և կիրառել՝ համարելով, որ «միևնույն է ամեն ինչ պարզ է»։

3-րդ տողում նշվում են «makefile» տարբերակները: Հղման համար, նորմալ աշխատանք AVR-GCC կոմպիլյատորը հնարավոր է երկու պահանջվող ֆայլով: Առաջինը ցուցակման ֆայլ է «.c» ընդլայնմամբ, երկրորդը «makefile» համակարգի հրահանգների ֆայլ է՝ առանց ընդլայնման: «Makefile»-ը ստեղծվել է «MFile» կոմունալ ծրագրի միջոցով (Նկար 6.10, JoergWunsch, Գերմանիա) ներառված WinAVR-ում:

Բրինձ. 6.10. MFile ծրագրի տեսքը:

Ընթացակարգը.

1. Գործարկեք «MFile» կոմունալ ծրագիրը՝ «Սկսել - Ծրագրեր - WinAVR-2010010 - MFile»:

2. Կաղապարի դաշտերը լրացրե՛ք հետևյալ կերպ (նկ. 6.11).

«Makefile - Հիմնական ֆայլի անվանումը ... - Հիմնական ֆայլ» կետում մուտքագրեք մշակվող նախագծի անունը «demol» և սեղմեք OK;

«Makefile - MCU type - ATmega» կետում ընտրեք MK «atmega48a»;

«Makefile - օպտիմալացման մակարդակ» կետում օպտիմալացման մակարդակը սահմանեք «2»: Այլ հնարավորություններ՝ «0»՝ օպտիմիզացում չկա, «s»՝ կոդերի նվազագույն երկարությունը, «1» թվերը... «3»-ը օպտիմալացման երեք տարբեր եղանակներ են, և «3» թիվը չի նշանակում լավագույն տարբերակը, ամեն ինչ կախված է կոնկրետ C ծրագրից:

«makefile» կաղապարի մնացած կետերը ճշգրտման կարիք չունեն, թող մնան լռելյայն։

Բրինձ. 6.11. MFile ծրագրում դաշտերի լրացում։

Յուրաքանչյուր նոր նախագծի և MK-ի նոր տեսակի համար դուք պետք է ստեղծեք ձեր սեփական «makefile»-ը, որը կփոխի նախագծի անվանումը և MK-ի տեսակը:

Տող 4-ը պարունակում է մեկնաբանություններ, որոնք նշում են կոնֆիգուրացիայի ցածր (ցածր), բարձր (բարձր) և ընդլայնված (Ext) բայթերի տասնվեցական թվերը: Այս արժեքները կպահանջվեն ավելի ուշ, երբ ծրագրավորեք MK ապահովիչներ:

С« ktg5-ը տեղեկատվական առումով դատարկ է: Այն տեսողականորեն առանձնացնում է մեկնաբանության տեքստը մնացած ծրագրից: Մեկի փոխարեն կարող եք տեղադրել երկու դատարկ տող, ինչը կարևոր չէ։ Հիմնական կետը տեսանելիության բարելավումն է: Սա չի ազդում MK որոնվածի կոդերի երկարության վրա:

Ցուցակի արտաքին ձևավորումը հորինել է հենց ծրագրավորողը` հիմնվելով նկարի գեղեցկության և տեղեկատվության ներկայացման հարմարության մասին իր պատկերացումների վրա: Հաճախ, վերնագրի ոճով, թվարկելով տողերն ու մեկնաբանությունները, կարող եք բացահայտել ծրագրի հեղինակին կամ կազմել նրա հոգեբանական դիմանկարը: Այս թեմայի վերաբերյալ հետաքրքիր նշումներ են տրված Ալեն Գոլուբի մենագրության մեջ։

6-րդ տողը սպասարկվում է կոմպիլյատորի նախապրոցեսորի կողմից: Դա C հայտարարություն կամ մեկնաբանություն չէ: Անունը բարդ է, բայց իմաստը պարզ է. Նախապրոցեսորը (նախամշակող) ծրագրում փնտրում է տողեր, որոնք սկսվում են «#» գրանշանով: Այնուհետև, կախված հիմնաբառից, այն կատարում է որոշակի գործողություն, օրինակ, «սահմանել» - արժեքներ է վերագրում հաստատուններին, «եթե սահմանված է» - ստուգում է վիճակը, «inC1ude» - միացնում է գործառույթների գրադարանը և այլն:

Առաջին ծանոթության համար բավական է իմանալ, որ ֆունկցիաների գրադարանը ֆայլերի մի շարք է, որոնցում տեղադրված են ստանդարտ կամ հաճախակի կրկնվող ընթացակարգերի տեքստերը։ Այս դեպքում «#inC1ude» հրահանգը (անգլերենից թարգմանված. «include») ակտիվացնում է «avr/io.h» համակարգի գրադարանը, որը պատասխանատու է մուտքային/ելքային նավահանգիստների աշխատանքի համար: Տարբեր կոմպիլյատորներում այս գրադարանն այլ անուն ունի, բայց էությունը նույնն է, առանց դրա հնարավոր չէ կառավարել MK պորտերի մեկ տող։ Հետևաբար, I/O գրադարանի միացումը պարտադիր է միկրոկառավարիչի բոլոր C-ծրագրերի համար։

7-րդ տողը նույնպես մշակվում է կոմպիլյատորի նախապրոցեսորի կողմից, բայց ունի հիմնաբառ«սահմանել» (անգլերենից թարգմանված. «սահմանել»): Հետևաբար, այն հայտարարում է INI հաստատուն և դրան վերագրում է 255 հաստատուն արժեքը: Մեկնաբանություններում նշվում է 255 թվի փոխակերպումը տասնվեցական 0xFF և երկուական 0bl 1111111: Նրանց միջև տարբերությունը կայանում է «0» պարտադիր թվանշանից հետո «x» և «b» տառերում: Համապատասխան թվեր տարբեր համակարգերտրված է Աղյուսակում: 6.3.

Աղյուսակ 6.3. Թվերը տասնվեցականից երկուականի վերածելով և հակառակը

Եթե ​​ծրագրի «մարմնի» մեջ ինչ-որ տեղ կա INI հաստատուն, ապա կոմպիլյատորը առանց մտածելու փոխարինում է 7-րդ տողում նշված թվային արժեքը, այսինքն. 255. Սա շատ հարմար է ծրագրավորողների համար մեծ ցուցակները ուղղելիս, երբ հաստատունները ցրված են ամբողջ տեքստում։ Բացի այդ, հաստատունի անվանումն ինքնին կարող է կրել իմաստային բեռ և ծառայել որպես բանավոր հուշում: Մասնավորապես, INI-ն անգլերեն «initialization» (initialization) բառի հապավումն է, որը նշանակում է որոշակի սկզբնական արժեք։

Ծրագրի «վերնագրում» հաստատուն տեղադրելու կարևորությունը դրա որոնման պարզության և փոփոխություններ կատարելու արագության մեջ է: Օրինակ, մեկ անգամ շտկելով «255» թիվը՝ կարող եք վստահ լինել, որ տեքստի մեջ ամենուր այն ավտոմատ կերպով (և առանց սխալների!) կտեղադրվի lNI հաստատունի միջոցով:

Կոնստանտի անվանումը գալիս է ծրագրավորողի հետ՝ հիմնված ողջախոհության և մարդկային նախասիրությունների վրա: Հին ավանդույթի համաձայն հաստատունների անունները գրվում են մեծատառերով։ Անվան առաջին տառը պետք է լինի տառ, օրինակ՝ I2CBUS, T34: Կիրիլիցայի օգտագործումը չի թույլատրվում:

INI հաստատուն հայտարարությունը կարող է գրվել ևս երկու համարժեք ձևերով՝ «#սահմանել INI OxFF» կամ «#սահմանել INI Obl 1111111»:

8-րդ տողը պարունակում է «a» փոփոխական հայտարարագրման օպերատորը: Փոփոխականը փոխաբերական իմաստով կարող է ներկայացվել որպես տուփ (տուփ, տուփ, մատիտապատ), որտեղ պահվում են որոշակի քանակությամբ իրեր (ուլունքներ, հատիկներ, լուցկիներ): Որպեսզի «զամբյուղները» տարբերվեն միմյանցից, դրանք մարմնի վրա նշվում են տարբեր մակագրություններով, այս դեպքում՝ «ա» տառով։ Եթե ​​փոփոխականի նկարագրության մեջ սկզբնական թիվը նշված չէ, ապա համարվում է, որ «տուփը» դատարկ է և այն նախաստորագրված է զրոյի (a = 0): Ծրագրի աշխատանքի ընթացքում «արկղում» կարող են ավելացվել օբյեկտներ և դրանից հանվել օբյեկտներ, այսինքն. մեծացնել և նվազեցնել փոփոխականի արժեքը.

«Տուփի» ծավալը կախված է դրա սկզբնական հայտարարությունից։ Աղյուսակում. 6.4-ը ցույց է տալիս AVR-GCC կոմպիլյատորում ընդունված սահմանները: Ինչպես տեսնում եք, «չստորագրված char» հռչակագիրը թույլ է տալիս «տուփի» մեջ դնել 255 ապրանք։ Զրոյական արժեքի հետ միասին (դատարկ «արկղը») կլինի 256 վիճակ կամ 256 բայթ ընդհանուր: «Չստորագրված երկար» հայտարարությամբ փոփոխականն այլևս արկղի տեսք չունի, այլ ամբողջ գնացքի, որը նախատեսված է 4,2 միլիարդ իրերի համար։

Աղյուսակ 6.4. AUK-vSS-ում ընդունված փոփոխականների չափերը

Քանի որ MK-ն չունի մշակված գործիքներ բացասական թվերի հետ աշխատելու համար, սկզբում, որպեսզի չշփոթվի, ավելի լավ է ծրագրերում օգտագործել միայն դրական թվեր, այսինքն. պարունակող «չստորագրված» հայտարարություն։

Լեզվի «հայրերը-հրամանատարները» Հին ժամանակներից հաստատել են չասված կարգ, ըստ որի փոփոխականի անունը պետք է կազմված լինի ոչ ավելի, քան 8 նիշից։ AVR-GCC կոմպիլյատորում այս կանոնը անտեսվում է, և փոփոխականը կարող է պարունակել այնքան նիշ, որքան ցանկանում եք, բայց առանց ֆանատիզմի: Միակ բանն այն է, որ անվան առաջին տառը պետք է լինի լատինական այբուբենի տառը, դրան կարող են հաջորդել տառեր, թվեր, նշաններ։ Կիրիլիցան չի թույլատրվում:

Փոփոխականը, ի տարբերություն հաստատունի, պարունակում է որոշակի փոփոխական (այլ ոչ թե հաստատուն) թիվ։ Փոփոխականները հաստատուններից տարբերելու համար դրանք գրվում են փոքր տառերով։ Սովորաբար նրանք փորձում են անվանը համապատասխանեցնել իմաստին, օրինակ՝ հաշվիչի համար «հաշվել», տվյալների համար՝ «տվյալ», ուշացման համար՝ «ուշացնել»։ Թեև երբեմն դպրոցական հանրահաշիվից ծանոթ միատառ փոփոխականներն ավելի պարզ, ծանոթ և կոմպակտ տեսք ունեն՝ a, b, c, d, i, j, k, x, y, z:

Թե ինչ չափորոշիչ պետք է նշվի որոշակի փոփոխականի համար, որոշվում է ծրագրավորողի կողմից: Քանի որ այս ցուցակում «a» փոփոխականը պահոց է թվային 8-բիթանոց «C» պորտից տեղեկատվություն հավաքելու համար, դա նշանակում է, որ այն պետք է տեղավորվի «երկուից ութերորդ» բայթ, այսինքն. 0-ից մինչև 255:

Հետաքրքիր է, որ կոմպիլյատորը սխալ չի թույլ տալիս, եթե դուք այն ապահով եք խաղում և նշում եք լուսանցքով փոփոխական որպես «unsigned long a;»: Ճիշտ է, դա հանգեցնում է կոդի քանակի անհարկի ավելացմանը 114-ից մինչև 126 բայթ և, համապատասխանաբար, ծրագրի կատարման արագության մի փոքր նվազման:

Մյուս ծայրահեղությունը հարթության թերագնահատումն է, երբ, օրինակ, «unsigned int» հայտարարելու փոխարեն օգտագործվում է «unsigned char»: Եթե ​​նման փոփոխականի մեջ մուտքագրվի 255-ից մեծ թիվ, ապա կպահպանվի միայն 256-ի բաժանման մնացորդը, իսկ ավելի հին մասը անդառնալիորեն կկորչի։ Պատկերավոր ասած՝ առարկաները դուրս կընկնեն «արկղից»։ Կոմպիլյատորը չի արձագանքում նման սխալներին՝ ենթադրելով, որ ծրագրավորողը ադեկվատ վիճակում է և հասկանում է, թե ինչ է անում։ Փոփոխականների չափի ճիշտ և անվրեպ որոշումը սովորաբար գալիս է փորձից:

Տող 9-ը տեղեկատվական առումով դատարկ է, նման է 5-րդ տողին: Տեղադրել այն ցուցակում, կախված է ծրագրավորողի կամքից:

Տող 10-ը լցված է մեկնաբանություններով, բայց դրանք ներկայացված են այլ ձևաչափով՝ բազմազանության համար։ Մասնավորապես, տեքստը ձախ կողմում ընդգծված է «/*», իսկ աջ կողմում՝ «*/» նշաններով։Այս ոճը ծագել է C լեզվի ամենահին տարբերակներից։ Հետագայում մեկնաբանություններում սկսեցին օգտագործվել «//» նիշերը, ինչը բնորոշ է C ++ լեզվին։ WinAVR-ում երկու տարբերակներն էլ գոյության հավասար իրավունք ունեն: «Նոր» ուղղագրությունն ավելի պարզ ու հստակ է, իսկ «հին» ուղղագրությունը որոշ տեղերում միակ հնարավորն է, եթե ցանկանում եք մեկնաբանել օպերատորի սկիզբը։

11-րդ տողը պարունակում է «հիմնական» ֆունկցիայի տիպիկ զանգ՝ համաձայն Ամերիկյան ստանդարտների ազգային ինստիտուտի ANSI (Ամերիկյան ազգային ստանդարտների ինստիտուտ) կանոնների: Կարճ արտահայտությունները թույլատրվում են, բայց խորհուրդ չի տրվում՝ «int main ()», «main ()», «main (void)»: Երբեմն նրանք նույնիսկ գրում են «void main (void)»՝ ընդգծելով ստացված և փոխանցվող պարամետրերի իսպառ բացակայությունը։ Պարզ MK-ների համար, որոնք չեն աջակցում Օպերացիոն համակարգերիրական ժամանակում, բացասական հետևանքներ չեն լինի։ Այնուամենայնիվ, եթե մտածում եք ապագայի մասին, ապա ավելի լավ է անմիջապես անգիր հիշեք գրելու ամբողջական ձևը, ինչը հետագայում կհեշտացնի C ծրագրերը ավելի ժամանակակից միկրոկոնտրոլերային հարթակներ տեղափոխելը:

12-րդ տողն ամբողջությամբ անցնում է առաջին բացվող գանգուր ամրացման տակ: Նա այս պատվին արժանացել է ոչ պատահական։ 12-րդ տողն իրականացնելիս C լեզվի կոմպիլյատորը կատարում է MK ռեգիստրների նախնական սկզբնավորումը, ստեկի տեղադրումը և հասցեների տարածության բաշխումը։ Այս ոսկերչական գործընթացի մեխանիզմը ուսումնասիրման կարիք չունի (ի տարբերություն Assembler-ի ծրագրերի):

Ծրագրավորողի համար գլխավորն այն է, որ ճիշտ սովորեն երկու բան, որոնք ավտոմատ կերպով արտադրում է WinAVR-ում ներառված կոմպիլյատորը.

Երբ ծրագիրը սկսվում է, բոլոր ընդհատումները անջատված են.

Բոլոր MK նավահանգիստների գծերը կազմաձևված են որպես մուտքեր առանց «ձգվող» դիմադրության:

Տող 13. Վերջապես ծրագրի առաջին գործարկվող հրամանը հայտնվեց հանձնարարականի օպերատորի տեսքով: Նիշերի մեկնաբանություն.

«DDRB» - «B» պորտի ութ-բիթանոց DDR ռեգիստրի պայմանական անվանումը.

"=" - DDRB ռեգիստրում տվյալների գրանցման նշան;

«OB» - նշում է, որ հաջորդ 8 թվանշանները կլինեն երկուական կոդ;

«11111111» - DDRB ռեգիստրում գրված երկուական թվի բիթերը՝ դասավորված 7, 6, 5, 4, 3, 2, 1, 0 (ձախ կողմում բարձր բիթ, աջում՝ ցածր բիթ):

Կատարման արդյունքում տրված օպերատոր«B» պորտի բոլոր տողերը դրված են ելքային ռեժիմի, քանի որ բոլոր բիթերը մեկ են:

13-րդ տողում նշված հայտարարությունը ձախից երկու բացատ է: Սա տեքստի ձևաչափման կոնվենցիա է, որին հետևում են շատ ծրագրավորողներ: Կոմպիլյատորը «կլռի», եթե տեքստը սկսեք առաջին կամ յոթերորդ սյունակում ձախից, ինչպես ցանկանում եք։ Կա միայն մեկ առաջարկ. «C ծրագրերի ցանկը պետք է հեշտ լինի դիտել»: Դրանից հետո ապագայում բոլոր տեքստերը կձևաչափվեն այնպես, որ գանգուր փակագծերը տեղակայվեն կենտ սյունակներում ուղղահայաց (1, 3, 5 և այլն), և յուրաքանչյուր սյունակում կլինի միայն մեկ բացվող գանգուր փակագիծ վերևում և մեկը: փակող գանգուր փակագիծ ներքևում:

Նշված կարգը դոգմա չէ, այլ ցուցակը լայնությամբ և երկարությամբ կրճատելու միջոց՝ առանց տեղեկատվության կորստի: «Տանը» ծրագրավորողը իր ցանկերում իրավունք ունի մուտքագրելու ցանկացած քանակի բացատներ, դատարկ տողեր և այլն։

/4 տողն աշխատում է 13-րդ տողի հետ, քանի որ AVR կարգավորիչներում նավահանգստի գծի հատուկ վիճակը որոշվում է DDRx և PORTx երկու ռեգիստրների մի փունջով, որտեղ «x»-ը պորտի հերթական տառն է, օրինակ՝ B, C կամ D. Հաշվի առնելով, որ յուրաքանչյուր ռեգիստր ունի 8 բիթ՝ 0-ից 7 թվերով (պայմանականորեն «z»), ապա նավահանգիստների գծերի ընդհանուր դասավորությունը հետևյալն է.

DDRx.z = 1, PORTx.z = 1 - ելք ԲԱՐՁՐ մակարդակով;

DDRx.z = 1, PORTx.z = 0 - ՑԱԾՐ ելք;

DDRx.z = 0, PORTx.z = 1 - մուտքագրում «pull-up» ռեզիստորով;

DDRx.z = 0, PORTx.z = 0 - մուտք առանց «ձգվող» ռեզիստորի:

13 և 14 տողերի ամփոփում. DDRB.0…DDRB.7 = 1, PORTB.O = 0, PORTB.l = 1, PORTB.2…PORTB.7 = 0, հետևաբար «B» նավահանգստի 0, 2…7 տողերը ” կկազմաձևվի որպես արդյունքների հետ ՑԱԾՐ ՄԱԿԱՐԴԱԿՆԵՐ, և տող 1 որպես ԲԱՐՁՐ մակարդակի ելք: Քանի որ HL1 ցուցիչը միացված է PB1 գծին (նկ. 6.3-ում DD1 չիպի 15-րդ կետը), այն կմարվի: Ստացվում է, որ տեխնիկական առաջադրանքի սկզբնական մասը հաջողությամբ ավարտվել է։

15, 16 տողերը նման են 13, 14 տողերին, բայց «C» նավահանգստի համար։ Փոփոխության համար օգտագործվում է lNI հաստատունի փոխարինումը։ 15-րդ և 16-րդ տողերը կատարելուց հետո «C» նավահանգստի բոլոր տողերը, նույնիսկ նրանք, որոնք ուղղակիորեն ներգրավված չեն աշխատանքի մեջ, կկարգավորվեն որպես մուտքեր «ձգվող» դիմադրիչներով: Սա պորտի սկզբնավորման ստանդարտ տեխնիկա է՝ ակտիվացնելու ներքին ձգվող դիմադրությունները, որոնք պահում են MCU գծերի CMOS մուտքերը «օդում կախվածությունից» և վերացնում աղմուկի և միջամտության բոլոր տեսակի ներթափանցման ուղիները:

17-րդ տողը նման է 13, 14 և 15, 16 տողերին, բայց «D» նավահանգստի համար: Նա գտնվում է միացման դիագրամընդհանրապես ներգրավված չէ, բայց դուք պետք է կանոն դարձնեք ծրագրի սկզբում բոլոր նավահանգիստները առանց բացառության սկզբնավորել: Նրանց ազատ գծերը պետք է կազմաձևվեն որպես մուտքեր «ձգվող» ռեզիստորներով կամ որպես ելքեր՝ HIGH/LOW: Հետագայում նման ավտոմատիզմը կօգնի խուսափել բախումներից և թյուրիմացություններից:

Հատուկ առանձնահատկություն է PORTD ռեգիստրի նշանակումը DDRB ռեգիստրին 13-րդ տողում նախկինում նշանակված արժեքին, այսինքն. Երկուական համարը Obl 1111111: Դա արվել է կրթական նպատակներով, քանի որ դա կարող էր ավելի հեշտ լինել. «PORTD = OxFF;»:

Մեկ այլ մանրամասն DDRD ռեգիստրի մուտքի բացակայությունն է: Սա տառասխալ չէ, այլ ցանկի միտումնավոր կրճատում մեկ տողով, քանի որ երբ հոսանքը միացված է, ըստ տվյալների թերթիկի, «զրոները» ավտոմատ կերպով մուտքագրվում են բոլոր DDRx, PORTx ռեգիստրներում, այսինքն. Անհրաժեշտ չէ լրացուցիչ զրոյացնել DDRD ռեգիստրը:

Տող 18-ը պարունակում է «while» հանգույցի հայտարարություն: Առաջին ծանոթության համար բավական է հիշել, որ «մինչդեռ (1)» արտահայտությունը նշանակում է 19 ... 21 տողերի հայտարարությունների հաջորդական կատարումը անսահման օղակում։

Տող 19-ը պարունակում է բացման ամրացում և նշանակման օպերատոր: Այս համադրությունը թույլատրվում է C լեզվի կանոններով, ինչը թույլ է տալիս ցուցակը դարձնել ավելի կոմպակտ բարձրության վրա:

19-րդ տողի կատարումից հետո «a» փոփոխականը կպահի «C» պորտի ութ տողերի կարգավիճակի բայթը, որը կարդացվել է PINC ռեգիստրից։ Եթե ​​SB1 կոճակը սեղմված չէ, ապա «a = OxFF», իսկ եթե սեղմված է, ապա «a = OxFE»:

Տող 20-ը տեղափոխում է «a» փոփոխականի բովանդակությունը մեկ բիթ դեպի ձախ: Երկու տարբերակ կա՝ եթե «a»-ն նախկինում եղել է OxFF, ապա այն կդառնա OxFE, իսկ եթե եղել է OxFE, ապա կդառնա OxFD։ Ինչու է դա արվում, ցույց կտա ծրագրի հաջորդ տողը։

Տող 21-ը պարունակում է հանձնարարության հայտարարություն, սակայն 19-րդ տողի համեմատ «a» փոփոխականը և պորտի ռեգիստրը հակադարձված են: C լեզվում նման castling-ը հանգեցնում է պորտից կարդալու գործողության փոխարինմանը դեպի նավահանգիստ գրելու գործողությամբ: Ընդհանուր առմամբ, 0xFE կոդը (եթե SB1 կոճակը սեղմված չէ) կամ 0xFD ծածկագիրը (եթե սեղմված է SB1 կոճակը) դուրս կգա «B» պորտին: Առաջին դեպքում HL1 ցուցիչը կմարվի, երկրորդում այն ​​կփայլի, ինչը և պահանջվում էր հասնել ըստ տեխնիկական առաջադրանքի։

22, 23 տողերը պարունակում են փակվող գանգուր բրեկետներ: Եթե ​​մտովի նկարես երկու ուղղահայաց գծեր«ներքևից վեր», նրանք ուղղակիորեն մատնացույց կանեն 19-րդ և 12-րդ տողերի բացման փակագծերը: 22-րդ տողում գտնվող փակագիծը ցույց է տալիս ցիկլի կրկնությունը 19 ... 21 տողերում: 23-րդ տողում փակագծերը սկսվում են առաջին դիրքից՝ ձախից, ուստի հասել է «հիմնական» ֆունկցիայի ավարտը և, հետևաբար, հիմնական ծրագրի ավարտը։

24-րդ տողը պարունակում է մեկնաբանություններ WinAVR տարբերակի համարի և որոնվածի կոդերի երկարության մասին, ինչը շատ օգտակար է այլ օգտվողների կողմից ծրագիրը կազմելիս: Հայտնի է, որ WinAVR-ի տարբերակները 100%-ով համատեղելի չեն միմյանց հետ, և կան դրա լավ օրինակներ։ Հետևաբար, նույն ցանկի կազմված կոդի երկարությունը կարող է տարբեր լինել թողարկումից մինչև թողարկում: Գործնական եզրակացությունն այն է, որ նախ պետք է ծրագիրը կազմեք 24-րդ տողում նշված WinAVR փաթեթով, այնուհետև միայն ավելի հին կամ ավելի նոր տարբերակ, նկատի ունենալով ստացված կոդի երկարությունը որպես ստուգիչ գումար:

Ուշադիր ընթերցողն իրավունք ունի նկատել, որ C ծրագրի ցանկը կազմելու փուլում հնարավոր չէր նախապես հաշվարկել, թե որքան տեղ են զբաղեցնում կոդերը MK հիշողության մեջ։ Անկեղծ ասած՝ «114 բայթ (2.8%)» մակագրությունը ավելացվել է ավելի ուշ՝ ծրագրի կազմումից հետո։ Նույնի վառ օրինակը կա հետադարձ կապ, որը բլոկային դիագրամում Նկ. 6.1-ը նշված էր «K» և «L» բլոկների միջև կետագծով:

25-րդ տողն ամբողջությամբ դատարկ է, բայց ի տարբերություն 5-րդ և 9-րդ տողերի, այն նշում է ցուցակի ֆիզիկական ավարտը: Առանց այս վերջնագծի, կոմպիլյատորը թողարկում է մեղմ, բայց նախազգուշացում. «Զգուշացում. ֆայլի վերջում նոր տող չկա»: նոր գիծֆայլի վերջում):

Վար n1, n2: Longint;

ֆունկցիանՔանակ (x: Longint): Բայթ;

Վար k: բայթ;

Մինչդեռ x<>0 Արեք

Սկսել

Վերջ;

Քանակ:=k;

Սկսել

Writeln («Մուտքագրեք երկու թիվ»);

k1:= քանակ (n1);

(առաջին համարի թվանշանների թիվը)

k2:= քանակ (n2);

(երկրորդ համարի թվանշանների թիվը)

Writeln («Նույն թվանշանների քանակը»)

Եթե ​​k1 > k2 Ապա

Writeln («Առաջին թվի մեջ ավելի շատ թվեր կան»)

Writeln («Երկրորդ համարը ավելի շատ թվանշաններ ունի»);

Դասախոսություն թիվ 17. Մաքսային առօրյայի ոչ ավանդական օգտագործում. ռեկուրսիա

Խնդիրների լուծման մի շարք ալգորիթմներ պահանջում են ենթածրագրի կանչել նույն ենթածրագրի հայտարարությունների բաժնից:

Ռեկուրսիան հաշվողական գործընթացի կազմակերպման միջոց է, որի դեպքում ընթացակարգը կամ գործառույթը վերաբերում է իրեն՝ իր բաղկացուցիչ հայտարարությունների կատարման ընթացքում: Օգտագործելով ռեկուրսիապետք է հատուկ ուշադրություն դարձնել ճիշտ ժամանակին դուրս գալ ենթածրագրից:Ռեկուրսիան օգտակար է, երբ առաջադրանքը պետք է բաժանվի ենթախնդիրների: Ռեկուրսիվ պրոցեդուրա և ֆունկցիա օգտագործելիս պետք է սկզբում դնել տողը

եթե սեղմված է, ապա դադարեցրեք; -կոտրել կախոցը, եթե դա տեղի ունենա: Ստեղնաշարը սեղմված էֆունկցիա է, որը վերադարձնում է արդյունք ճիշտ,եթե ստեղնաշարի վրա մի ստեղն էր սեղմված, և կեղծ- հակառակ դեպքում:

Օրինակ 1Դիտարկենք Ֆիբոնաչիի շարքի տարրերը հաշվելու ծրագիր՝ օգտագործելով ռեկուրսիվընթացակարգերը.

պրոցեդուրա fibon(n,fn1,fn:integer);(ռեկուրսիվ ընթացակարգ)

եթե n > 0, ապա

writeln (fn1 + fn);

fibon (n-1, fn, fn1 + fn);

varn,a,b՝ ամբողջ թիվ;

write(«Մուտքագրեք Ֆիբոնաչիի շարքի տարրերի թիվը.»);

գրել ("...հետևելով երկու տրված թվերին. ");

Ֆիբոն (n, a, b);

Օրինակ 2Ծրագիր, որը ցույց է տալիս դրական ամբողջ թվի թվանշանները հակառակ հերթականությամբ:

ծրագիրը կրկնվում է2;

պրոցեդուրա reverse(n:integer);(ռեկուրսիվ ընթացակարգ)

Եթե ​​սեղմված է, ապա դադարեցրեք;

Գրել (n mod 10);

եթե (n div 10)<>0 ապա

Revers (n div 10);

writeln(«մուտքագրեք թվեր<= : ", maxint);

հակադարձ (n);

Դասախոսություն թիվ 18. Տվյալների մուտքագրում - ելք: Ֆայլեր

Ֆայլը տվյալ անվան տակ համակարգչի արտաքին հիշողության մեջ պահվող տվյալների մի շարք է:

Ցանկացած ֆայլ ունի երեք բնորոշ առանձնահատկություն.

1. Ֆայլն ունի անուն, որը թույլ է տալիս ծրագրին միաժամանակ աշխատել մի քանի ֆայլերի հետ։

2. Ֆայլը պարունակում է նույն տեսակի բաղադրիչներ: Ֆայլի բաղադրիչ տեսակը կարող է լինել ցանկացած տեսակի:

3. Նոր ստեղծված ֆայլի երկարությունը ոչ մի կերպ չի նշվում, երբ այն հայտարարվում է և սահմանափակվում է միայն արտաքին հիշողության սարքերի հզորությամբ։

Որպեսզի ծրագիրը գտնի ցանկալի ֆայլը, դուք պետք է իմանաք դեպի ֆայլ տանող ուղին կամ երթուղին:

Ճանապարհը ենթացանցերի անունների ցանկն է, որոնք միմյանցից բաժանված են հետին կտրվածքով, որին հաջորդում է հենց ֆայլի անունը:

Օրինակ:

c:\catalog1\catalog2\file1.txt.

Յուրաքանչյուր գրացուցակի անվանումը համապատասխանում է այդ անունով ենթագրքի մուտքին: «..» նշանը համապատասխանում է գերտեղեկատուի մուտքին: Ճանապարհի առավելագույն թույլատրելի երկարությունը 79 նիշ է:

TR ծրագրում ֆայլի անունը նշվում է որպես տեքստային հաստատուն՝ փակված ապոստրոֆների մեջ, որը կարող է լինել տողային փոփոխականի արժեքը.

«\turbo\pas\table.txt»:

Սարքեր. TR-ում ֆայլերի օգտագործումն առաջացել է համակարգչային միջավայրի, դրա ապարատային՝ էկրանի, ստեղնաշարի, տպիչի, մուտքային-ելքային ալիքների հետ տվյալների փոխանակման անհրաժեշտության պատճառով: Դրանք բոլորը դիտարկվում են TR-ում որպես ֆայլեր, որոնց հետ կարելի է վարվել այնպես, ինչպես սովորական ֆայլերը: Արտաքին սարքերի ֆայլերը հաճախ կոչվում են ֆիզիկական կամ արտաքին ֆայլեր . Սարքերը հասցեագրվում են հատուկ անուններով, որոնք անթույլատրելի են սովորական ֆայլերի համար՝ այսպես կոչված համակարգչային տրամաբանական սարքերի անվանումները.

­ CON- մխիթարել . Վահանակի օգնությամբ ելքային տեղեկատվությունը ուղարկվում է ցուցադրման էկրան, իսկ մուտքային տեղեկատվությունը ընկալվում է ստեղնաշարից;

­ PRN-այս անունը տպիչ . Եթե ​​մի քանի տպիչներ միացված են համակարգչին, ապա դրանք հասանելի են տրամաբանական անուններով. LPT1, LPT2, LPT3:

­ COM1, COM2, COM3 -Սրանք միացման սարքեր են սերիական նավահանգիստներ . Օգտագործվում է այլ համակարգիչների հետ շփվելու և մկնիկ միացնելու համար։

­ NUL- զրո կամ դատարկ սարքը։ Հաճախ օգտագործվում է ծրագրավորողների կողմից ծրագրի վրիպազերծման համար: Թույլ է տալիս չստեղծել առանձին ֆայլ: Տեղեկատվություն ցուցադրելու համար այն օգտագործելիս տեղեկատվությունը ոչ մի տեղ չի ցուցադրվում, սակայն հաղորդվում է, որ ելքը հաջող է եղել:

Ֆայլի հասանելիություն:Ցանկացած ժամանակ, ծրագիրը հասանելի է միայն մեկ ֆայլի տարր, որին հղում է արվում ֆայլի ընթացիկ դիրքի ցուցիչով. Այն սահմանում է ֆայլի այն վայրը, որտեղից տվյալները կարդացվում կամ գրվում են կամ այնտեղից: Ֆայլ բացելիս կամ ստեղծելիս ցուցիչը տեղադրված է իր սկզբում. Սլաքն իրեն պահում է որպես կուրսորը, որը շարժվում է տեքստը խմբագրելիս՝ ընթացիկ դիրքը մշտապես ցույց տալու համար: Ֆայլից տվյալներ կարդալիս ցուցիչը վերջիվերջո կհասնի ֆայլի ավարտին: Ըստ տարրերի մուտքի մեթոդի, նրանք տարբերում են հաջորդական կամ ուղղակի մուտքի ֆայլեր: