لیست برنامه. لیست کردن - به عبارت ساده چیست: تجزیه و تحلیل کامل مفهوم لیست برنامه چیست

قبل از اینکه اوراق بهادار یا سکه های ارز دیجیتال در دسترس معامله گران در طبقه معاملاتی قرار گیرند، باید فرآیند انتخاب پیچیده ای را طی کنند و در فهرست قرار گیرند. تجزیه به زبان ساده، آنچه در بورس عرضه می شود - هم در بورس و هم در ارزهای دیجیتال، مراحل اصلی را که باید طی کنید تا در لیست باشید، مزایای اصلی که شرکت دریافت می کند، ماهیت حذف از فهرست چیست.

لیست چیست

مفهوم فهرست بندی در حوزه های مختلف زندگی ما یافت می شود:

  • مبادلات سهام و ارزهای دیجیتال- آنها موضوع این مقاله خواهند بود. اینجا ما داریم صحبت می کنیمدر مورد افزودن اوراق بهادار یا سکه های رمزنگاری شده به لیست پلتفرم های معاملاتی.
  • در تجارت- این به معنای افزودن محصولات یک یا تولید کننده دیگر به مجموعه فروشگاه است.
  • در برنامه نویسی- این منبع(متن) برنامه که توسط کامپایلر به کدهای اجرایی ترجمه می شود.
  • در املاک و مستغلات- در اینجا قراردادهای فهرست بندی بین مالک ملک و عامل فروش که آن را به صورت کمیسیون می فروشد، امضا می شود.

ما دو شاخه آخر را در نظر نخواهیم گرفت. ما علاقه مند به لیست کردن و همچنین ارزهای دیجیتال هستیم.

فهرست و حذف اوراق بهادار

فهرست در فرهنگ لغت ما از لیست کلمات ظاهر شد که از انگلیسی به عنوان "فهرست" ترجمه شده است. درج اوراق بهادار در بورس اوراق بهادار روشی برای افزودن سهام، اوراق قرضه شرکت ها به فهرست ابزارهایی است که در پلتفرم عرضه می شوند. پس از آن برای خرید و فروش روی آن در دسترس قرار می گیرند.

پس از گذراندن مراحل درج، اوراق بهادار در فهرست معاملاتی بورس قرار می گیرد

اغلب، فعالان بازار به خود لیست به عنوان یک فهرست اشاره می کنند. در همان زمان، هر سایت این لیستمال خودم.

این فهرست اغلب توسط شرکت صادرکننده آغاز می شود، با این حال، در موارد نادر، خود بورس ممکن است تمایل خود را برای گنجاندن برخی اوراق بهادار در لیست خود ابراز کند، در صورتی که از طریق کانال های غیررسمی در بین معامله گران تقاضای زیادی داشته باشند.

برای شرکت ها، فهرست شدن در بورس دارای مزایای زیادی است و بنابراین جای تعجب نیست که شرکت ها تلاش زیادی برای طی کردن این روش انجام دهند.

فهرست صرافی مهم است که با IPO اشتباه نشود. در مورد اول، شرکت به دنبال ورود به لیست قیمت یک پلت فرم معاملاتی خاص است. و IPO به این معنی است که شرکت عمومی می شود و اوراق بهادار آن نه تنها از طریق، بلکه از طریق کانال های دیگر، به عنوان مثال، از طریق شعب آن، در دسترس سرمایه گذاران قرار می گیرد.

مراحل فهرست بندی

رویه فهرست‌بندی چندین مرحله را پیش‌بینی می‌کند که شرکت ناشر باید قبل از در دسترس قرار گرفتن اوراق بهادارش در اختیار سرمایه‌گذاران طی کند.

  1. همه چیز با یک برنامه شروع می شود. این کار هم توسط خود ناشر و هم توسط شخصی که منافع شرکت را نمایندگی می کند قابل انجام است.
  2. بعد مرحله امتحان می آید. نمایندگان بورس اوراق بهادار و تمام داده های موجود در مورد شرکت را تجزیه و تحلیل می کنند. سودآوری شرکت، نقدینگی دارایی های آن بررسی می شود. شرکت موظف است کلیه صورتهای مالی جمع آوری شده در چند سال گذشته را ارائه نماید.
  3. یک کمیسیون ویژه نتایج بررسی ها را بررسی می کند و تصمیم می گیرد اوراق بهادار را به فهرست خود اضافه کند یا درخواست را رد کند.
  4. اگر تصمیم مثبت باشد، هر دو طرف - شرکت و مبادله، با یکدیگر توافق می کنند.

این روش به طور متوسط ​​حدود 1-2 ماه طول می کشد. برای باقی ماندن در فهرست، یک ناشر معمولاً باید هر سه ماه یک بار داده های لازم را به بورس ارائه کند.

قوانین فهرست بندی اعمال شده توسط پلتفرم های معاملاتی برای شرکت ها متفاوت است. برخی فقط می توانند شرکت هایی را با سرمایه حداقل 50 میلیون دلار و حداقل 3 سال حضور در بازار فهرست کنند. دیگران ممکن است این و سایر الزامات را افزایش یا کاهش دهند.

اگر همه شرایط برآورده نشود، اما اوراق بهادار مورد علاقه بورس هستند، آنها در لیست اولیه اوراق بهادار قرار می گیرند - همچنین نامیده می شود پیش فهرست کردن. سرمایه گذاران نیز می توانند این سهام را معامله کنند اما خارج از دیوار بورس و تالار معاملات مسئولیتی در قبال آنها ندارد.

سطوح فهرست

بیشتر در صرافی ها سطوح مختلفی از فهرست وجود دارد. در ابتدا حق بیمهنقدشونده ترین اوراق بهادار با سطح اطمینان بالا را شامل می شود.

به شرکت ها مرحله دومنیازها دیگر آنقدر زیاد نیستند و کمترین برای شرکت های متقاضی سوم، به اصطلاح لیست بدون نقل قول. سرمایه‌گذارانی که اوراق بهادار شرکت‌هایی در این سطح را خریداری می‌کنند باید به تنهایی قابلیت اطمینان آنها را تجزیه و تحلیل کنند.

به عنوان مثال، پلتفرم های اصلی و جایگزین معتبر نیستند. اولی به دو سطح تقسیم می شود: "استاندارد" و "حق بیمه". بازار جایگزین برای شرکت های در حال توسعه کوچک و متوسط ​​در نظر گرفته شده است که در اینجا با یک روش ساده مجاز هستند.

به‌طور دوره‌ای، سایت‌ها ممکن است سطح فهرست اوراق قرضه، سهام را افزایش یا برعکس کاهش دهند یا حتی آن‌ها را به‌طور کلی از فهرست خارج کنند.

انواع فهرست

بین فهرست اولیه و ثانویه تمایز قائل شوید.

فهرست اولیهبه این معنی است که سهام در کشور محل ثبت شرکت در بورس در دسترس سرمایه گذاران است.

در فهرست ثانویهاوراق بهادار به بازارهای بین المللی آورده می شود و وارد لیست پلتفرم های خارجی می شود. این کار تنها در صورتی انجام می شود که مرحله اولیه فهرست بندی پشت سر گذاشته شده باشد.

هنوز هست دو فهرست بندی،که در آن شرکت به طور مداوم به دنبال ورود به لیست های نقل قول چندین است طبقات تجاریکشور مادری.

و لیست متقابل– در این صورت، شرکت درخواست هایی را برای افزودن به لیست چندین پلتفرم صرافی ارسال می کند کشورهای مختلف. علاوه بر این، اگر یکی از آنها افزودن اوراق بهادار را تأیید کند، شرکت این فرصت را پیدا می کند که رویه فهرست بندی را در دیگری تحت یک طرح ساده شده تکمیل کند. این نه تنها هزینه های مواد، بلکه زمان بررسی برنامه را نیز کاهش می دهد.

مزایای صادر کننده چیست؟

بیهوده نیست که شرکت ها تلاش می کنند تا در بورس اوراق بهادار ثبت شوند، زیرا این امر به آنها مزایای متعددی را می دهد. اولاً جذابیت سرمایه گذاری آنها افزایش می یابد و در نتیجه جذب سرمایه برای توسعه بیشتر آسان تر می شود. مزایا نیز عبارتند از:

  • رشد سرمایه شرکت با افزایش تقاضا برای اوراق بهادار منتشر شده؛
  • افزایش آگاهی و اعتماد در محافل تجاری؛
  • افزایش نقدینگی سهام، اوراق قرضه؛
  • امکان اضافه کردن به لیست مبادلات خارجی؛
  • در برخی موارد، می توانید واجد شرایط دریافت مزایای مالیاتی باشید.

اما فراموش نکنید که از این پس به فعالیت های شرکت توجه بیشتری می شود و هر اقدامی فوراً بر ارزش سهام تأثیر می گذارد. علاوه بر این، روش فهرست بندی رایگان نیست. تمام معاینات انجام شده هزینه دارد.

چه چیزی به سرمایه گذاران می دهد

نکته اصلی اعتماد به نفس است. سرمایه گذاران با سرمایه گذاری در سهام شرکت می دانند که قابل اعتماد بودن آن توسط افراد حرفه ای تایید شده است. حضور در فهرست صرافی آنها را از بررسی مستقل قابل اعتماد بودن شرکت نجات می دهد.

حذف از فهرست چیست

حتی اگر اوراق بهادار در بورس عرضه شود، هیچ تضمینی وجود ندارد که برای همیشه در آنجا باقی بمانند. تحت شرایط خاصی، سایت می تواند آنها را از آن خارج کند. این اتفاق می افتد، به عنوان مثال، اگر ناشر از رعایت شرایط بورس منصرف شود، به تعهدات خود عمل نکرده، خود را ورشکسته اعلام کند و غیره.

قیمت سهام که با گذشت زمان افزایش نمی یابد نیز می تواند منجر به خروج از بورس شود که نشان دهنده تقاضای کم است. اتفاق می افتد که حذف از فهرست توسط خود شرکت آغاز می شود، به عنوان مثال، در صورت ادغام شرکت ها.

فهرست ارزهای دیجیتال

لیست کردن اغلب در محیط ارزهای دیجیتال نیز مورد بحث قرار می گیرد. در اینجا، سکه ها یا توکن های دیجیتال تمایل دارند در لیست معاملاتی پلتفرم های مبادلاتی ظاهر شوند.

پروژه‌های ارزهای دیجیتال تلاش می‌کنند تا در صرافی‌های محبوب فهرست شوند

الزامات فهرست در صرافی های رمزنگاری متفاوت است. دسترسی به سایت های بزرگ و شناخته شده بسیار دشوارتر از سایت های کوچک است. به همین دلیل است که اکثر پروژه ها با پلتفرم های تجاری کوچک شروع می شوند.

قیمت صدور

یکی از مسائل اصلی هزینه است. . صرافی های کمتر شناخته شده می توانند ارزهای دیجیتال را به صورت رایگان فهرست کنند. ورود به لیست پلتفرم‌های شناخته شده می‌تواند هزاران یا حتی ده‌ها هزار دلار هزینه داشته باشد - آنها قبل از فهرست کردن، برای تجزیه و تحلیل یک سکه پول می‌گیرند. اگرچه استثنائاتی وجود دارد.

به عنوان مثال، بایننس پاییز امسال اعلام کرد که از هزینه های فهرست برای تامین مالی اهداف خیریه استفاده می شود. در عین حال، هیچ قیمت ثابتی وجود ندارد - توسعه دهندگان خودشان تعیین می کنند که چقدر می خواهند برای فهرست بپردازند. مدیریت Poloniex ادعا می کند که هیچ پولی برای لیست گرفتن نمی گیرد.

در ابتدای سال، روزنامه‌نگاران Business Insider مقاله‌ای منتشر کردند که طبق آن حداقل آستانه برای فهرست کردن صرافی‌های رمزنگاری برای پروژه‌های ICO 50000 دلار است و در برخی موارد می‌تواند به یک میلیون دلار برسد.

مواردی نیز وجود داشت که مدیریت صرافی ها با دریافت رشوه برای درج سکه در فهرست مواجه شدند. به عنوان مثال، صرافی Coinnest است - COO و CTO آن حدود 890000 دلار برای اضافه کردن ارز رمزنگاری شده S-coin به لیست معاملات پرداخت کردند.

چگونه کار می کند

برای اینکه نشانه در لیست قرار گیرد، اغلب لازم است که یک درخواست ارسال کنید و یک پرسشنامه را در سایت انتخاب شده پر کنید. با این حال، سکه های صرافی محبوب را می توان به تنهایی در لیست گنجاند، بدون اینکه منتظر پیشنهاد تیم پروژه برای انجام این کار باشد. به عنوان مثال، بیت کوین (BTC) در هر صرافی اجباری است، و به عنوان یک قاعده، اتریوم (ETH).

رایج ترین سوالات در نظرسنجی چیست؟

  • نام و شرح سکه؛
  • تاریخ راه اندازی شبکه اصلی و همچنین خود پلت فرم؛
  • پیوند به Github؛
  • پیوند به کاغذ سفید پروژه؛
  • پیوند به شبکه های اجتماعی؛
  • آیا استخراج در شبکه وجود دارد و آیا قبل از استخراج وجود داشته است یا خیر.
  • حداکثر صدور سکه و غیره

اغلب، صرافی‌ها همچنین رقابت‌هایی را بین کاربران خود برگزار می‌کنند - آنها به ارزهای دیجیتال پیشنهادی رأی می‌دهند و سکه برنده به لیست قیمت‌ها اضافه می‌شود.

Huobi Global در پایان تابستان 2018 یک پلتفرم فهرست خودکار برای ارزهای دیجیتال راه اندازی کرد. صرافی قصد دارد با کمک آن، روند افزودن توکن ها به لیست معاملات را سرعت بخشد و آن را شفاف کند.

تفاوت های ظریف مهم

اولین چیزی که صرافی ها به آن توجه می کنند، ارزش یک سکه، مفید بودن آن برای جامعه است. در وهله دوم امنیت پروژه قرار دارد، زیرا در صورت هک شدن شبکه کریپتو، صرافی نیز متضرر می شود. مطمئن شوید که به حرفه ای بودن و همچنین شهرت تیم علاقه مند هستید.

به عنوان مثال، در Bittrex یک مرحله مقدماتی بررسی برنامه و یک مرحله عمیق وجود دارد. اگر متخصصان شرکت در مرحله مقدماتی بدانند که سکه ارزش عرضه در بورس را دارد، مطالعه کامل آن آغاز می شود. مشخصات فنیویژگی های نوآورانه، مطابق با الزامات پلت فرم.

سکه هایی که می توانند به عنوان اوراق بهادار شناسایی شوند، صرافی ها سعی می کنند اضافه نکنند. به عنوان مثال، Poloniex بلافاصله از توسعه دهندگان دعوت می کند تا با تست Howey آشنا شوند تا مشخص شود آیا یک توکن می تواند تحت این معیارها قرار بگیرد یا خیر.

یک استثنا در میان پلتفرم های بزرگ، صرافی Coinbase است که تاییدیه مناسبی را از رگولاتورها دریافت کرده و می تواند به طور رسمی با توکن هایی کار کند که دارای ویژگی های اوراق بهادار هستند.

جالب است که اگر دارایی با قوانین یک کشور خاص مغایرت داشته باشد، ممکن است برای کاربران حوزه های قضایی خاص در دسترس نباشد.

"تأثیر بورس ها"

پس از افزودن صرافی های رمزنگاری محبوب به لیست ها، هزینه سکه ها، به طور معمول، به شدت افزایش می یابد - به طور متوسط ​​25-30٪. این الگو حتی "اثر بورس" نامیده می شود. این به این دلیل اتفاق می افتد که کاربران بیشتری در مورد سکه یاد می گیرند، قابل تشخیص می شود و تقاضا برای آن را افزایش می دهد. با این حال، اغلب این افزایش کوتاه مدت است و به زودی هزینه شروع به کاهش می کند.

همچنین شرایطی وجود دارد که قیمت توکن ها، برعکس، پس از قرار گرفتن در لیست معاملاتی صرافی ها کاهش می یابد. این اغلب زمانی اتفاق می‌افتد که پروژه بلافاصله بعد از آن فهرست می‌شود، و سرمایه‌گذارانی که در حین فروش توکن سرمایه‌گذاری کرده‌اند، به دنبال کسب درآمد اضافی در سکه سریع‌تر هستند و فعالانه آن را در بورس تخلیه می‌کنند.

حذف رمزارزها از فهرست به دلایل مختلفی انجام می شود:

  • بهره کم از سوی معامله گران؛
  • تغییرات در قوانین؛
  • هک بلاک چین کریپتونت؛
  • امتناع توسعه دهندگان از حمایت بیشتر از سکه؛
  • شکایات کاربران

توکن ها معمولاً بلافاصله حذف نمی شوند - صرافی چندین هفته به معامله گران فرصت می دهد تا موقعیت ها را ببندند و وجوه را به کیف پول خود برداشت کنند.

فهرست در تجارت

مفهوم فهرست نویسی نیز در منطقه معاملاتی وجود دارد. هنگامی که یک تامین کننده می خواهد محصولاتش به عنوان مثال در قفسه های یک زنجیره خرده فروشی بزرگ فروخته شود، ابتدا باید با مدیریت شرکت در مورد افزودن محصول خود به لیست توافق کند.

اگر محصول مورد تقاضای خریداران نباشد، می‌تواند مراحل خروج از فهرست را نیز طی کند که در این صورت از قفسه‌های فروشگاه محو می‌شود.

لیست برنامه demol.c در شکل نشان داده شده است. 6.7. نام برنامه با برنامه نویس خواهد آمد. پسوند ".c" مورد نیاز است. متن در ویرایشگر "Programmer's Notepad 2" (به اختصار PN2) تایپ می شود که به جای پوسته گرافیکی در بسته WinAVR گنجانده شده است. از طریق آن، ایجاد پروژه، تصحیح خطاها، تدوین برنامه و حتی برنامه نویسی MK نیز انجام می شود.

برنج. 6.7. لیست برنامه demol.c.

برنج. 6.8. ظاهربرنامه های PN2

ویرایشگر PN2 یک پروژه مستقل با وب سایت خاص خود است. ظاهر منوی اصلی PN2 در شکل نشان داده شده است. 6.8.

روش.

1.3 فایل "WlnAVR-20100110-install.exe" (29 مگابایت) را که در سی دی پیوست شده است اجرا کنید. در صورت لزوم می توان این فایل را به صورت رایگان از اینترنت دانلود کرد. WlnAVR را به طور پیش فرض در پوشه C:\WinAVR-20100110\ نصب کنید.

2. ویرایشگر PN2 را باز کنید: "Start - Programs - WinAVR-20100110 - Programmers Notepad". شماره گذاری خطوط را فعال کنید: "ابزارها - گزینه ها - عمومی - پیش فرض -<поставить «галочку» возле «Show Line Numbers»>- خوب".

3. یک فایل C جدید در ویرایشگر PN2 ایجاد کنید: "File - New - С/С++". متن برنامه را مطابق شکل از صفحه کلید وارد کنید. 6.7 و آن را در هارد دیسک خود ذخیره کنید: "File - Save As... -<ввести путь и имя файла, например, для однозначности C:\1001\demol.c>- خوب".

از این پس، اسکرین شات ها (صفحه نمایش ها) فقط در مهمترین نقاط اقدام برای صرفه جویی در فضا نشان داده می شوند. بقیه اسکرین شات ها را می توانید به صورت گام به گام در آموزش های ویدئویی روی سی دی همراه مشاهده کنید.

توضیحات فهرست

خط 1 با نظراتی شروع می شود که در سمت چپ با دو اسلش رو به جلو مشخص می شوند. تمام متن های بعد از علائم "//" می تواند در مورد هر چیزی، به هر زبان، با هر آزادی و اختصار باشد. این اطلاعات دلخواه است که برنامه نویس برای خود، محبوبش، می نویسد تا در یک یا دو ماه آنچه را که در واقع مورد بحث قرار گرفته است، به خاطر بیاورد. معمولاً نام کوتاه برنامه و نویسندگی مشخص می شود.

خط 2 نیز حاوی نظرات است، اما ماهیت فنی دارد. در اینجا نمودار سیم کشی برای اتصال نشانگر HL1 و دکمه SB1 به خطوط خاصی از پورت های MK آمده است. نام سیگنال ها مطابق با طرح dashite در MHKpocxeMyATmega48A است (شکل 6.9).

برنج. 6.9. طرح سیگنال MKATmega48A.

تمرین توصیف متنی طرح‌های ساده در "سربرگ" برنامه در جامعه برنامه نویسانی که برای ترسیم و به کار بردن طرح‌های گرافیکی تنبل هستند و معتقدند "به هر حال همه چیز واضح است" رواج دارد.

خط 3 گزینه های "makefile" را مشخص می کند. برای مرجع، کار معمولیکامپایلر AVR-GCC با دو فایل مورد نیاز امکان پذیر است. اولی یک فایل لیست با پسوند ".c" است، دومی یک فایل دستورالعمل سیستم "makefile" بدون پسوند است. "Makefile" توسط ابزار "MFile" (شکل 6.10، توسط JoergWunsch، آلمان) همراه با WinAVR ایجاد شده است.

برنج. 6.10. ظاهر برنامه MFile.

روش.

1. ابزار "MFile" را برای اجرا اجرا کنید: "Start - Programs - WinAVR-2010010 - MFile".

2. فیلدهای الگو را به صورت زیر پر کنید (شکل 6.11):

در مورد "Makefile - Main file name ... - Main file" نام پروژه در حال توسعه را وارد کنید "demol" و روی OK کلیک کنید.

در مورد "Makefile - MCU type - ATmega"، MK "atmega48a" را انتخاب کنید.

در مورد "Makefile - Optimization level"، سطح بهینه سازی را روی "2" تنظیم کنید. سایر امکانات: "0" - بدون بهینه سازی، "s" - حداقل طول کدها، اعداد "1" ... "3" سه روش مختلف بهینه سازی هستند و عدد "3" به معنای بهترین گزینه نیست، همه چیز به برنامه خاص C بستگی دارد.

نقاط باقیمانده از الگوی "makefile" نیازی به تنظیم ندارند، بگذارید به طور پیش فرض باقی بمانند.

برنج. 6.11. پر کردن فیلدها در برنامه MFile.

برای هر پروژه جدید و نوع جدید MK، باید "ماکفیل" خود را ایجاد کنید، که نام پروژه و نوع MK را تغییر می دهد.

خط 4 حاوی نظراتی است که اعداد هگزادسیمال بایت های کم (کم)، زیاد (بالا) و توسعه یافته (Ext) پیکربندی را مشخص می کند. این مقادیر بعداً هنگام برنامه ریزی فیوزهای MK مورد نیاز خواهند بود.

« ktg5 از نظر اطلاعاتی خالی است. به صورت بصری متن نظر را از بقیه برنامه جدا می کند. به جای یک، می توانید دو خط خالی وارد کنید که مهم نیست. نکته اصلی بهبود دید است. این روی طول کدهای میان‌افزار MK تأثیری نمی‌گذارد.

طراحی خارجی فهرست توسط خود برنامه نویس بر اساس ایده های خود در مورد زیبایی تصویر و راحتی ارائه اطلاعات ابداع شده است. اغلب، با سبک سربرگ، فهرست کردن خطوط و نظرات، می توانید نویسنده برنامه را شناسایی کنید یا پرتره روانشناختی او را ترسیم کنید. یادداشت های جالبی در این زمینه در مونوگراف آلن گلوب آورده شده است.

خط 6 توسط پیش پردازنده کامپایلر ارائه می شود. این یک عبارت C یا یک نظر نیست. نام پیچیده است، اما معنی ساده است. پیش پردازنده (pre-PROCESSOR) به دنبال خطوطی در برنامه می گردد که با کاراکتر "#" شروع می شوند. علاوه بر این، بسته به کلمه کلیدی، عمل خاصی را انجام می دهد، به عنوان مثال، "define" - مقادیر را به ثابت ها اختصاص می دهد، "در صورت تعریف" - شرایط را بررسی می کند، "inC1ude" - کتابخانه تابع و غیره را متصل می کند.

برای اولین آشنایی کافی است بدانید که کتابخانه توابع مجموعه ای از فایل ها است که متون رویه های استاندارد یا مکرر در آن قرار می گیرند. در این مورد، دستورالعمل "#inC1ude" (ترجمه شده از انگلیسی. "include") کتابخانه سیستم "avr / io.h" را فعال می کند، که مسئول عملکرد پورت های ورودی / خروجی است. این کتابخانه در کامپایلرهای مختلف نام متفاوتی دارد، اما ماهیت یکسان است، بدون آن کنترل یک خط از پورت های MK غیرممکن است. بنابراین اتصال کتابخانه I/O برای تمامی برنامه های C میکروکنترلر الزامی است.

خط 7 نیز توسط پیش پردازنده کامپایلر پردازش می شود، اما دارد کلمه کلیدی"تعریف" (ترجمه شده از انگلیسی. "تعریف"). بنابراین یک ثابت INI اعلام می کند و مقدار ثابت 255 را به آن اختصاص می دهد.کامنت ها نشان دهنده تبدیل عدد 255 به 0xFF هگزادسیمال و 0bl 1111111 باینری است. تفاوت آنها در حروف "x" و "b" بعد از رقم واجب "0" است. تطبیق اعداد در سیستم های مختلفدر جدول آورده شده است. 6.3.

جدول 6.3. تبدیل اعداد از هگزادسیمال به باینری و بالعکس

اگر جایی در "بدنه" برنامه یک ثابت INI وجود داشته باشد، کامپایلر بدون فکر کردن، مقدار عددی مشخص شده در خط 7 را جایگزین آن می کند. 255. این برای برنامه نویسان هنگام تصحیح فهرست های بزرگ، زمانی که ثابت ها در سراسر متن پراکنده هستند، بسیار راحت است. علاوه بر این، نام ثابت خود می تواند بار معنایی را حمل کند و به عنوان یک اشاره کلامی عمل کند. به طور خاص، INI مخفف کلمه انگلیسی "initialization" (initialization) است که به معنای مقدار اولیه است.

اهمیت قرار دادن یک ثابت در "هدر" برنامه در سادگی جستجوی آن و سرعت ایجاد تغییرات است. به عنوان مثال، با یک بار تصحیح عدد "255"، می توانید مطمئن باشید که در همه جای متن به طور خودکار (و بدون خطا!) از طریق ثابت lNI اضافه می شود.

نام ثابت بر اساس عقل سلیم و ترجیحات انسانی با برنامه نویس می آید. طبق سنت قدیمی، نام ثابت ها با حروف بزرگ نوشته می شود. اولین حرف در نام باید یک حرف باشد، به عنوان مثال، I2CBUS، T34. استفاده از سیریلیک مجاز نیست.

اعلان ثابت INI را می توان به دو روش معادل دیگر نوشت: "#define INI OxFF" یا "#define INI Obl 1111111".

خط 8 حاوی عملگر اعلان متغیر "a" است. متغیر را می توان به صورت مجازی به عنوان یک جعبه (جعبه، جعبه، محفظه مداد) نشان داد، که در آن تعداد معینی از آیتم ها (مهره ها، دانه ها، کبریت ها) ذخیره می شود. برای اینکه «تابوت ها» با یکدیگر تفاوت داشته باشند، روی بدنه آن ها با نوشته های مختلفی مشخص می شود که در این صورت حرف «الف» است. اگر عدد اولیه در توضیحات متغیر مشخص نشده باشد، در نظر گرفته می شود که "جعبه" خالی است و مقدار اولیه آن به صفر می رسد (a = 0). در طول کار برنامه، می توان اشیاء را به "جعبه" اضافه کرد و اشیاء را از آن حذف کرد، یعنی. افزایش و کاهش مقدار یک متغیر

حجم "جعبه" به اعلام اصلی آن بستگی دارد. روی میز. 6.4 محدودیت های اتخاذ شده در کامپایلر AVR-GCC را نشان می دهد. همانطور که می بینید، اعلان "کاراکتر بدون امضا" به شما امکان می دهد 255 مورد را در "جعبه" قرار دهید. همراه با مقدار صفر (جعبه خالی) 256 حالت یا 256 بایت در کل وجود خواهد داشت. متغیر با اعلان "unsigned long" دیگر شبیه یک جعبه نیست، بلکه یک قطار کامل است که برای 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، نصب پشته و تخصیص فضای آدرس را انجام می دهد. مکانیک این فرآیند جواهرسازی نیازی به مطالعه ندارد (برخلاف برنامه های اسمبلر!).

برای یک برنامه نویس، نکته اصلی یادگیری صحیح دو چیز است که کامپایلر موجود در WinAVR به طور خودکار تولید می کند:

هنگامی که برنامه شروع می شود، تمام وقفه ها غیرفعال می شوند.

خطوط تمام پورت های MK به عنوان ورودی بدون مقاومت های "pull-up" پیکربندی شده اند.

خط 13. در نهایت اولین دستور اجرایی برنامه در قالب یک عملگر انتساب ظاهر شد. تفسیر شخصیت:

"DDRB" - نام معمولی ثبت DDR هشت بیتی پورت "B"؛

"=" - نشانه ای از ثبت داده ها در رجیستر 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 - ورودی بدون مقاومت "pull-up".

خلاصه خطوط 13 و 14: DDRB.0…DDRB.7 = 1، PORTB.O = 0، PORTB.l = 1، PORTB.2…PORTB.7 = 0، از این رو خطوط 0، 2…7 پورت «B ” به عنوان خروجی با پیکربندی خواهد شد سطوح پایینو خط 1 به عنوان خروجی سطح بالا. از آنجایی که نشانگر HL1 به خط PB1 متصل است (پایه 15 تراشه DD1 در شکل 6.3)، خاموش خواهد شد. به نظر می رسد که قسمت اولیه کار فنی با موفقیت انجام شده است.

خطوط 15، 16 مشابه خطوط 13، 14 هستند، اما برای پورت "C". برای تغییر، از جایگزینی ثابت lNI استفاده می شود. پس از اجرای خطوط 15 و 16، تمام خطوط پورت "C"، حتی آنهایی که مستقیماً درگیر کار نیستند، به عنوان ورودی با مقاومت های "pull-up" پیکربندی می شوند. این یک تکنیک اولیه‌سازی پورت استاندارد برای فعال کردن مقاومت‌های کششی داخلی است که ورودی‌های CMOS خطوط MCU را از "هوا معلق" نگه می‌دارد و انواع مسیرهای نفوذ نویز و تداخل را حذف می‌کند.

خط 17 مشابه خطوط 13، 14 و 15، 16 است، اما برای پورت "D". او در است نمودار سیم کشیبه هیچ وجه درگیر نیست، اما باید در ابتدای برنامه تنظیم اولیه همه پورت ها بدون استثنا را به عنوان یک قانون در نظر بگیرید. خطوط آزاد آنها باید به عنوان ورودی با مقاومت های "pull-up" یا به عنوان خروجی با HIGH/LOW پیکربندی شوند. در آینده، چنین خودکارسازی به جلوگیری از برخورد و سوء تفاهم کمک می کند.

یک ویژگی خاص تخصیص رجیستر PORTD به مقداری است که قبلاً در خط 13 به رجیستر DDRB اختصاص داده شده است. شماره دودویی Obl 1111111. این برای اهداف آموزشی انجام شد، زیرا می‌توانست آسان‌تر باشد: "PORTD = OxFF;".

جزئیات دیگر فقدان ورودی ثبت DDRD است. این یک اشتباه تایپی نیست، بلکه یک کوتاه کردن عمدی فهرست به اندازه یک خط است، زیرا هنگام روشن شدن برق، طبق برگه داده، "صفرها" به طور خودکار در همه رجیسترهای DDRx، PORTx وارد می شوند. نیازی به تنظیم مجدد رجیستر DDRD نیست.

خط 18 حاوی عبارت حلقه "while" است. برای اولین آشنایی کافی است به یاد داشته باشید که عبارت "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% با یکدیگر سازگاری ندارند و نمونه های خوبی در این زمینه وجود دارد. بنابراین، طول کد کامپایل‌شده همان فهرست ممکن است از نسخه‌ای به نسخه دیگر متفاوت باشد. نتیجه عملی این است که ابتدا باید برنامه را با بسته WinAVR که در خط 24 نشان داده شده است کامپایل کنید و فقط پس از آن در یک برنامه قدیمی یا بیشتر. نسخه جدید، با اشاره به طول کد دریافتی به عنوان جمع کنترلی.

خواننده با دقت حق دارد متوجه شود که در مرحله جمع آوری لیست برنامه C ، نمی توان از قبل محاسبه کرد که کدها چه مقدار فضای را در حافظه MK اشغال می کنند. صادقانه بگویم، کتیبه "114 بایت (2.8٪") بعداً پس از کامپایل شدن برنامه اضافه شد. نمونه بارز آن وجود دارد بازخوردکه در بلوک دیاگرام در شکل. 6.1 با یک خط نقطه چین بین بلوک های "K" و "L" نشان داده شد.

خط 25 کاملا خالی است، اما برخلاف خطوط 5 و 9، پایان فیزیکی فهرست را نشان می دهد. بدون این خط پایانی، کامپایلر یک هشدار ملایم اما همچنان هشدار می دهد: "هشدار: خط جدیدی در انتهای فایل وجود ندارد". خط جدیددر انتهای فایل).

Var n1، n2: Longint;

تابعمقدار (x: Longint): بایت;

Varک: بایت

در حالی که 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("تعداد عناصر سری فیبوناچی را وارد کنید: ");

write("...به دنبال دو عدد داده شده: ");

فیبون (n,a,b);

مثال 2برنامه ای که ارقام یک عدد صحیح مثبت را به ترتیب معکوس نمایش می دهد.

برنامه recurs2;

رویه reverse(n:integer);(رویه بازگشتی)

اگر کلید فشار داده شود، متوقف شود.

Write(n mod 10);

if (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- صفر یا خالی دستگاه اغلب توسط برنامه نویسان برای اشکال زدایی یک برنامه استفاده می شود. اجازه می دهد تا فایل جداگانه ایجاد نشود. هنگام استفاده از آن برای نمایش اطلاعات، اطلاعات در جایی نمایش داده نمی شود، اما گزارش می شود که خروجی موفقیت آمیز بوده است.

دسترسی به فایلدر هر زمان، برنامه فقط در دسترس است یک عنصر فایل که توسط نشانگر موقعیت فعلی فایل ارجاع داده می شود. این مکان در فایلی که داده ها از یا به آن خوانده یا نوشته می شوند را مشخص می کند. هنگام باز کردن یا ایجاد یک فایل اشاره گر در ابتدای خود قرار می گیرد. نشانگر مانند مکان نما عمل می کند که هنگام ویرایش متن حرکت می کند تا موقعیت فعلی را همیشه نشان دهد. هنگام خواندن داده ها از یک فایل، نشانگر در نهایت به انتهای فایل می رسد. با توجه به روش دسترسی به عناصر، آنها را متمایز می کنند فایل های دسترسی متوالی یا مستقیم