زنگ

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

J.P. -زبان مصنوعی که انسان برای تسهیل فرایند حل مشکلات با استفاده از رایانه ساخته شده است. این زبان توصیفی از الگوریتم برای حل مسئله را امکان پذیر می کند - سپس به آن گفته می شود رویه گرایا بیان مسئله به صورت ریاضی - مسئله محور.

زبان ها:

1. جهانی (وظایف مربوط به هر زمینه موضوعی)

2. تخصصی (در یک منطقه باریک)

سطح Ya.P.

1. کم (مونتاژ ، نماد میانگین)

2. بلند قد

ویژگی:امکان ترجمه خودکار وجود دارد ، ترجمه متونی که در YP نوشته شده است به ترتیب منطقی معادل اقدامات به زبان دستورالعمل های دستگاه.

با روش پخش:

1. کامپایلر

2. مترجم

3. ژنراتور

الفبا -مجموعه ای ثابت از کاراکترهایی که متن باید از آنها تشکیل شود.

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

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

3. راه هایی برای تعریف رسمی نحو یک زبان برنامه نویسی

نحو \u003d نمودارهای فلزی زبان + نحو

فلز زبان -زبان ویژه ای که برای توصیف یک زبان دیگر استفاده می شود.

مجموعه کاراکترهای فلزی

< > - براکت های زاویه ای (شامل سازه های زبان)

{ } - بریس های فرفری (مفاهیم محصور شده در آنها صفر یا بیشتر بار اتفاق می افتد)

براکت مربع (ممکن است مفهوم نتیجه گیری حذف شود)

خط عمودی(جایگزین ، "یا" ، | ), ::=, =.

نمادهای YaPدر زبانهای فلزی ، کاراکترهای پایانه

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

نشانه -کلمه زبان ، دنباله ای از کاراکترهایی که فاقد فضایی هستند.

انواع نشانه ها:

1. شناسه - استفاده شده برای نشان دادن برنامه یا اشیاء دیگر (نام عملکرد ، نوع و غیره را نشان دهید)

2. کلید واژه ها - شناسه خدمات ثبت شده در PL؛ از آنها برای شکل دادن به کامل ساختارهای زبان معنایی استفاده می شود که به آنها گفته می شود ارائه می دهدزبان

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

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



اشیاء برنامه.

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

موارد زیر متمایز می شوند:

1. ثابت ها - مقادیر ثابت.

ثابت ها شمارش مقادیر در یک برنامه هستند. در زبان برنامه نویسی C ، چهار نوع ثابت وجود دارد: ثابت های عدد صحیح ، ثابت های شناور ، ثابت شخصیت ها و ثابت های رشته.

2. متغیرها

یکی از مفاهیم اساسی زبان C یک شیء است - یک ناحیه به نام حافظه. یک مورد خاص از یک متغیر است. ویژگی متمایز یک متغیر ، توانایی پیوند مقادیر مختلف با نام آن است که کلیت آن با توجه به نوع متغیر مشخص می شود. هنگام تنظیم مقدار متغیر ، کد این مقدار در ناحیه حافظه مربوطه قرار می گیرد. دسترسی به مقدار متغیر به طور طبیعی با نام آن تأمین می شود و دسترسی به یک قطعه حافظه فقط در آدرس آن امکان پذیر است. هر متغیر باید قبل از استفاده در برنامه تعریف شود ، یعنی. حافظه باید برای متغیر اختصاص یابد. اندازه حافظه اختصاص داده شده برای متغیر و تفسیر مطالب بستگی به نوع مشخص شده در تعریف متغیر دارد. انواع علاقه ها تعریف شده اند: char - یک عدد صحیح با طول حداقل 8 بیت ، int int - یک عدد صحیح کوتاه ، int - یک عدد صحیح ، یک عدد صحیح طولانی. هر کدام از انواع عدد صحیح می تواند به صورت امضا نشده یا بدون امضاء تعریف شود. استاندارد زبان موارد زیر را معرفی کرد انواع واقعی: float - دقت تک ، دقت دو برابر - دو ، دقت دو برابر - حداکثر.

3. کارکرد



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

نمای کلی درباره تعریف شی

نام را تایپ کنید [اولیه]؛

اشیاء کلاس استاتیک به طور پیش فرض در 0 ، cl خارجی - دریافت نمی کنید.

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

مفهوم نوع داده

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

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

متغیرها را می توان در جای توصیف های خود ابتدا سازی کرد.

سیستم نوع - این یک سیستم خاص است که توسط آن داده های مورد استفاده توسط راه حل های کاربردی سازماندهی می شوند. سیستم نوع به شما امکان می دهد اطلاعات دنیای واقعی را با اصطلاحاتی قابل درک برای Y.P ارائه دهید.

مفهوم یک نوع ساده است.

نوع ساده - یک نوع داده که اشیاء آن (متغیرها یا ثابت) که دارای ساختار داخلی در دسترس برنامه نویس نیستند.

مقدار برای هر قسمت غیرقابل تفکیک است

عملیات بر روی کل ارزش به عنوان یک کل.

به:

پایه ای - یک نوع داده ساده مقیاس پذیر ، که کلیه مؤلفه های آن قبلاً توسط توسعه دهنده تعریف شده است. تحت عنوان.

تعریف مجدد توسط برنامه نویس- خود برنامه نویس مجموعه ای از مقادیر معتبر را تعیین می کند

انواع مقياس ساده كه از قبل تعريف شده در C (انواع اصلي آنها گفته مي شود) عبارتند از:

- انواع عدد صحیح: char، int، long int؛

- انواع شناور: شناور ، دو برابر ، بلند دو برابر.

از نوع کاراکتر عدد صحیح نیز برای نشان دادن مقادیر کاراکتر (نوع کاراکتر) استفاده می شود. انواع علاقه به دو شکل وجود دارد - امضا شده (امضا شده) و بدون امضا (بدون امضا). به صورت خلاصه ، امضاء ممکن است حذف شود.

شامل:

مجموعه ای از مقادیر معتبر

بسیاری از عملیات معتبر

اندازه حافظه دسترسی تصادفیاختصاص داده شده برای ذخیره سازی (char - 1b، int - 2b، long - 4b)

بازنمایی داخلی مقدار (یک عدد صحیح مثبت به عنوان یک مقدار باینری ، منفی به عنوان یک مکمل دودویی و غیره)

ساختار ارزش

انواع پیچیده

بغرنج (کامپوزیت) یک نوع - نوع داده ای که اشیاء آن (متغیرها یا ثابت ها) که دارای ساختار داخلی در دسترس برنامه نویس هستند.

انواع پیچیده با این واقعیت مشخص می شود که هر مقدار از این نوع شامل بسیاری از مؤلفه ها (عناصر) است که به نوعی با یکدیگر به یک کل واحد متصل می شوند ، یعنی. ساختار پیچیده ای دارد

نوع پیچیده توسط ساخته شده است قوانین زیر.

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

2. در داخل یک ساختار پیچیده ، نوع همه عناصر می توانند عبارتند از: - یکسان - ساختار همگن ، - متفاوت - ساختار ناهمگن.

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

4- جذابیت (دسترسی) به عناصر ساختاری می تواند: - مستقیم (مستقیم) - محاسبه شده (براساس فهرست یا مکانی در ساختار) باشد یا محاسبه نشده باشد (با نام عنصر). - دنباله ای - مشخصه سازه هایی با اندازه متغیر. نوع درمان با روش ترکیب اجزاء در یک ساختار واحد مشخص می شود.

5- مقدار ساختار می تواند در حالت عملیاتی (ساختار داخلی) یا در حافظه خارجی ذخیره شود

آرایه ها ، رشته ها

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

تنظیم متغیر از نوع معمولی (آرایه) فرم دارد

<спецификация типа> <идентификатор> [<константное выражение>]

در اینجا ، براکت های مربعی کاراکترهای ترمینال هستند.

بیان مداوم تعداد اجزای موجود در آرایه را تعیین می کند ، بنابراین مقدار آن از نوع عدد صحیح است.

مشخص کننده نام متغیر آرایه است.

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

آرایه چند بعدی آرایه ای است که عناصر آن از نوع آرایه ای است. تعریف یک آرایه چند بعدی:

<спецификация типа> <идентификатор> []…

در اینجا K1 ، K2 ، ... ، Kn عبارات ثابت هستند. علاوه بر این ، K1 اندازه آرایه را با توجه به بعد اول ، K2 - با توجه به بعد دوم ، و Kn - با توجه به بعد نهم تنظیم می کند. به عنوان مثال ، توصیف x آرایه ای از x را تشکیل می دهد که از عناصر k1 تشکیل شده است. هر عنصر x نوع آرایه ای دارد که از عناصر k2 تشکیل شده است. در غیر این صورت ، می توان گفت x است آرایه دو بعدی (ماتریس) ، در جایی که k1 اندازه در بعد اول است ، یعنی تعداد ردیف ها در یک آرایه دو بعدی - ماتریس؛ k2 اندازه در بعد دوم است ، یعنی تعداد ستون های موجود در ماتریس. بنابراین ، یک آرایه دو بعدی به عنوان یک آرایه یک بعدی در نظر گرفته می شود ، که هر عنصر آن نیز یک آرایه یک بعدی است. عناصر ماتریس به صورت خط در حافظه کامپیوتر ذخیره می شوند.

برای دسترسی به عناصر آرایه ، باید نام آرایه و محل (فهرست) عنصر موجود در ساختار را مشخص کنید: نام آرایه [<индекс>] یا نام آرایه [<индекс1>][<индекс2>]…[<индекс n>] به ترتیب برای آرایه های یک بعدی و n بعدی. این شاخص توسط عبارتی مشخص شده است که مقدار آن باید از نوع عدد صحیح باشد و تعداد مؤلفه را تعیین می کند. مقدار شاخص متعلق به دامنه صفر تا اندازه آرایه است که با یک کاهش می یابد.

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

رشته های.مقدار نوع "رشته" دنباله ای از کاراکترها است (کلمه "رشته" در علامت های نقل قول محصور می شود ، زیرا این نوع به طور صریح در C تعریف نشده است و با مراجعه به نوع رشته ، منظور ما از نوع داده ای است که خصوصیات یک نوع رشته را دارد). نوع "رشته" (یا فقط یک رشته) در C به عنوان زیر مجموعه ای از نوع آرایه در نظر گرفته می شود. رشته توسط یک آرایه یک بعدی مشخص می شود ، عناصر آن کاراکترها هستند ، آخرین شخصیت این آرایه "\\ 0" است. این "حرف تهی" نشانه پایان خط است. حرف "\\ 0" ، و همچنین سایر شخصیت ها ، در این رشته درج شده است. اندازه خط (تعداد کاراکترها) با حل مشکلی تعیین می شود و توسط حافظه موجود محدود است.

از آنجا که نوع رشته یک آرایه ویژه است ، کلیه خصوصیات از نوع معمولی برای رشته ذخیره می شوند (یعنی می توانید عملیات را روی عناصر جداگانه انجام دهید که برای نوع پایه معتبر است). با "حرف صفر" می توانید مانند سایر شخصیت ها کار کنید (بدون اینکه هدف اصلی آن را فراموش کنید).

متن اصلی این معمولاً دنباله ای از کاراکترهای متشکل از کلمات است که توسط کاراکترهای جداکننده جدا می شوند و با علامت کاراکتر انتهای متن پایان می یابند. هنگام انتخاب ساختار داده برای نمایش

متن باید تلاش كند كه متن از حداقل حافظه مورد نیاز برخوردار باشد و ساختار انتخاب شده وسیله دسترسی سریع (مستقیم) به عناصر متن را فراهم می كند ، كه معمولاً كلمات آن هستند. این الزامات توسط ساختار داده - آرایه ای برآورده می شوند.

متن قابل تصور است:

آرایه دو بعدی - ماتریسی که خط آن یک کلمه متنی است که با یک پایان دهنده خط پایان می یابد - конца \\ 0 '. تعداد ستونها برابر با حداکثر طول کلمه به علاوه یک (نماد ‘\\ 0) است. تعداد خطوط برابر با حداکثر تعداد کلمات در متن است. تماس به ردیف ماتریس تماس با یک کلمه است. برای ایجاد چنین ساختاری ، باید متن متن را با کاراکتر بخوانید ، هر کلمه متوالی را در یک ردیف جدید از ماتریس قرار دهید و نماد ‘\\ 0 را به کلمه اضافه کنید.

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

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

9. انواع ناهمگن (ساختار)

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

خود برنامه نویس نوع ناهمگن (ساختاری) را توصیف می کند و "ساختار داخلی" خود را تنظیم می کند: تعداد عناصر ، نوع و نام آنها. توضیحات از نوع ناهمگن:

ساختار<имя структурного типа>

{ <определения элементов> };

اینجا ساختار - کلمه سرویس - مشخصات نوع ساختاری ، <имя структурного типа> - شناسه نوع خودسرانه توسط برنامه نویس انتخاب شده است (<имя структурного типа> ممکن است حذف شود) <определения элементов> - مجموعه ای از یک یا چند توصیف از اشیاء ، که هر کدام نوع عنصر معرفی شده نوع ساختاری را تعیین می کنند.

تعریف یک شی (به عنوان مثال ، یک متغیر) از یک نوع ساختاری نامگذاری شده از ساختار ساختار است<имя структурного типа> < список структур>;

یا<имя структурного типа> < список структур> ؛ جایی که< список структур> - لیستی از اسامی ساختار انتخاب شده توسط برنامه نویس.

متغیرهای یک نوع ساختاری را می توان همزمان با توضیحات نوع تعریف کرد. تعریف یک شیء از نوع ساختاری بی نام است:

{ <определения элементов> } < список структур>;

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

هنگام تعریف ساختار می تواند باشد مقدماتی. هنگام تعریف یک شیء از نوع ساختاری ، به آن اختصاص می یابد حافظه به اندازه ای که داده های همه عناصر در آن قرار بگیرند. اندازه حافظه در بایت های اختصاص داده شده برای ساختار را می توان با استفاده از عمل اندازه ، به عنوان مثال sizeof (نقطه ساختار) بدست آورد. برای دسترسی به عناصر سازه مورد استفاده نام واجد شرایط (بیان اولیه) فرم<имя структуры> . <имя элемента структуры> در اینجا ، یک نقطه به معنای عملیاتی برای دستیابی به عنصر سازه است ؛ بیشترین اولویت را دارد. اسامی تصفیه شده عناصر سازه دارای کلیه حقوق اشیاء از انواع مربوطه است. می توانید روی عناصر سازه ای که برای نوع آنها معتبر است ، انجام دهید.

ساختار می تواند پارامتر عملکرد و مقدار بازده (اصلی) عملکرد باشد.

اشاره گر

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

نوع مشخص کننده [اصلاح]] توصیف کننده.

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

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

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

فایل ها.

نوع فایل - این نوعی است که برنامه را با دستگاههای رایانه ای خارجی متصل می کند. مقدار نوع فایل یک دنباله طول دلخواه از مؤلفه ها است.

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

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

هنگام کار با یک جریان ، می توانید اقدامات زیر را انجام دهید:

جریانهای باز و بسته

تجزیه و تحلیل وضعیت رسیدن به انتهای جریان (پایان پرونده) و خطاهای I / O؛

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

اندازه گیری بافر جریان و اندازه بافر را مدیریت کنید.

تمام عملیات I / O با استفاده از توابع موجود در کتابخانه C اجرا می شود. برای استفاده از این توابع ، باید فایل header stdio.h را در برنامه درج کنید که شامل نمونه های اولیه توابع I / O ، تعریف ثابت ها ، انواع و ساختارهای لازم برای کارکردن توابع است. جریان می تواند در حالت متن یا باینری باز شود. مطابق با این ، بین فایلهای متنی و باینری تفاوت قائل شوید.

هنگام باز کردن پرونده در متن در یک حالت ، دنباله ای از کاراکترهای خوانده شده از یک جریان ، در صورت لزوم ، از یک نمایش شخصیت به یک بازنمایی داخلی تبدیل می شوند. به عنوان مثال ، اگر با در آب اگر اطلاعات عددی خوانده شود ، پس ترتیب خواندن کاراکترها مطابق با مشخصات قالب به یک عدد باینری یا عدد شناور تبدیل می شود. با فرمت نتیجه اطلاعات عددی از نمایش داخلی یک عدد به دنباله ای از کاراکترهای نماینده یک عدد تبدیل می شود. ترتیب کاراکترهای ذخیره شده در یک فایل متنی را می توان به خطوط تقسیم کرد. وقتی یک کاراکتر خط جدید ‘\\ n 'به متن نوشتاری ارسال می شود ، آن را با دنباله ای از شخصیت های CR (" بازگشت حمل ") و LR (" تغذیه خط ") جایگزین می کنید. در

خواندن از فایل متنی ترتیب کاراکترهای CR و LR به یک شخصیت جدید خطی تبدیل شده است ‘\\ n '.

اگر پرونده ذخیره نشده است اطلاعات متن، و باینری ، پس هیچ تبدیل نباید انجام شود. به عنوان مثال ، اطلاعات عددی به پرونده ای در نمای داخلی آن نوشته شده است (و سپس خوانده می شود). چنین پرونده ای باید به صورت دودویی باز شود.

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

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

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

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

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

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

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

عملکرد نوشتن نحو

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

به عنوان مثال ، خطاهای نحوی یک سابقه عملکرد شامل:

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

عناصر اصلی هر زبان برنامه نویسی الفبای ، نحو و معانی آن است.

الفبا - مجموعه ای از شخصیت های نمایش داده شده در دستگاه های چاپ و صفحه نمایش و / یا وارد شده از صفحه کلید ترمینال. این معمولاً یک کاراکتر لاتین-1 است به استثناء شخصیت های کنترل. بعضی اوقات کاراکترهای غیر قابل نمایش با قوانینی برای نوشتن آنها (ترکیبی در توکن) در این مجموعه گنجانده می شوند.

واژگان - مجموعه ای از قوانین برای شکل گیری زنجیره های کاراکترها (نشانه ها) برای شناسایی شناسه ها (متغیرها و برچسب ها) ، اپراتورها ، عملیات ها و سایر مؤلفه های لغوی زبان. این همچنین شامل کلمات محفوظ (ممنوع ، کلمات کلیدی) در زبان برنامه نویسی است که برای مشخص کردن اپراتورها ، توابع داخلی و غیره در نظر گرفته شده است. گاهی اوقات نشانه های معادل بسته به زبان برنامه نویسی ، می توانند توسط یک نماد الفبای یا چند مورد مشخص شوند. به عنوان مثال ، عملیات واگذاری در C به عنوان "\u003d" و در پاسکال ": \u003d" مشخص می شود. براکت های عملگر در C با کاراکترهای "(" و ")" تعریف می شوند ، و در پاسکال ، شروع و پایان می یابد. مرز بین واژگان و الفبای از این رو بسیار دلخواه است ، به خصوص که کامپایلر معمولاً کلمات شناخته شده را با کد داخلی جایگزین می کند (برای مثال ، شروع - 512 ، پایان - 513) در مرحله تحلیل واژگانی و بیشتر آنها را به عنوان کاراکترهای جداگانه در نظر می گیرد.

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

رعایت دقیق قوانین هجی (نحو) برنامه ضروری است. به طور خاص ، در پاسکال ، هدف از علائم نگارشی به طور منحصر به فرد تعریف شده است. پس از هر جمله ، یک نقطه علامت (؛) در انتهای هدر برنامه ، در انتهای بخش توضیحات متغیر قرار می گیرد. شما نمی توانید یک کلمه را قبل از کلمه End بگذارید. ویرگول (،) جداکننده عناصر در لیست های مختلف است: لیستی از متغیرها در بخش توضیحات ، لیستی از مقادیر ورودی و خروجی.

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

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

برای توصیف نحو یک زبان برنامه نویسی ، به نوعی زبان نیز نیاز دارید. در این مورد ، ما در مورد یک زبان فلزی ("زیر زبانی") صحبت می کنیم ، که برای توصیف زبان های دیگر طراحی شده است. متداول ترین زبانهای انگلیسی در ادبیات برنامه نویسی فرمول های فلزی زبان Beckus-Naura (زبان BPF) و نمودارهای نحوی هستند. زبان نمودارهای نحوی بصری تر است ، خواندن آن ساده تر است.

در BPF ، هر مفهوم نحوی به صورت فرمولی متشکل از قسمت های راست و چپ متصل به علامت :: :: شرح داده می شود ، که معنی آن معادل کلمات "با تعریف وجود دارد" است. در سمت چپ علامت :: :: نام مفهومی تعریف شده است (متغیر meta) که در براکت های زاویه ای محصور شده است< >، و در سمت راست یک فرمول یا نمودار نوشته شده است که کل مجموعه مقادیر را که یک متغیر meta می تواند تعریف کند ، تعریف می کند.

نحو زبان با پیچیدگی های پی در پی مفاهیم توصیف شده است: ابتدا ساده ترین (اساسی) آن مشخص می شوند ، سپس همه پیچیده تر آن ها که مفاهیم قبلی را به عنوان مؤلفه ها شامل می شوند.

در چنین سکانسی ، بدیهی است که مفهوم نهایی نهایی باید مفهوم یک برنامه باشد.

برخی از کنوانسیون ها در مدخل های متا فرمول پذیرفته می شوند. به عنوان مثال ، فرمول BNF که مفهوم "رقم باینری" را تعریف می کند به شرح زیر است:

<двоичная цифра>::=0|1

نماد | معادل کلمه "یا"

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

مفهوم "کد باینری" به عنوان یک توالی غیر خالی از رقم های باینری BNF به شرح زیر است:

<двоичный код>::=<двоичная цифра>|<двоичный

کد\u003e<двоичная цифра>

تعریفی که در آن یک مفهوم مشخص به خودی خود تعریف شده است بازگشتی است. تعاریف بازگشتی مشخصه BNF است.

فلش بازگشت احتمال تکرار مکرر را نشان می دهد. بدیهی است که نمودار از BPF بصری تر است.

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

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

منطق ترکیبی برنامه نحو برنامه

این سخنرانی به موضوعات مربوط به دستگاه مفهومی ، تاریخ توسعه و امکانات بیانگر نمایش نحوی نظریه های رسمی و زبان های برنامه نویسی می پردازد..

ما ساختارهای اصلی زبان برنامه نویسی SML را با استفاده از فرم های Backus-Naur یا BNF رسمیت می دهیم (تاریخچه ایجاد آنها در سخنرانی مقدماتی ارائه شده است).

به طور غیررسمی ، نحو (یک زبان برنامه نویسی یا نظریه ریاضی) را به عنوان شکل سازه ها (برنامه یا تئوری) و نحوه ترکیب آنها تعریف می کنیم. تعریف دقیق تر از نحو بعداً در سخنرانی بیان می شود.

ما مفهوم نحو را دقیق تر تعریف می کنیم.

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

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

وظیفه اصلی نحو تعیین شکل و نوع ساختارهای زبان معتبر است. این مشکل را می توان با لیست کردن توضیحات در مورد همه ساختارهای زبان حل کرد. یکی از مکانیسم های چنین توصیفی ، نماد BPF است که قبلاً توسط ما ذکر شده است.

ما به طور موازی رسمیت BNF از نحو حساب لامبدا و زبان برنامه نویسی SML را در نظر خواهیم گرفت. در حالت دوم ، ما خود را به مجموعه اصلی ساختارهای زبانی محدود می كنیم ، و بر ویژگیهای اساسی مانند تاپل ها و اصطلاحات تأکید می كنیم.

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

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

پس از اتمام تجزیه و تحلیل واژگانی ، به اصطلاح روشی برای تجزیه متن برنامه انجام می شود که عبارت است از بررسی نحو صحیح متن نوشته شده به زبان برنامه نویسی. این روش احتمالاً شامل انجام اعتبار سنجی تایپ به یک شکل یا شکل دیگر است.

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

نحو زبان برنامه نویسی SML را در مقایسه با نحوی حساب لامبدا در نظر بگیرید.

برای شفافیت و مقایسه بیشتر در رسمی سازی نحو هر دو زبان (زبان نظریه ریاضی رسمی و زبان برنامه نویسی) از یک نماد واحد ، یعنی BNF استفاده خواهیم کرد.

اول از همه ، لازم است در مورد نمادین توافق کنید.

عناوین سنتی BNF را در نظر بگیرید و معنای هریک از آنها را توضیح دهید.

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

نماد تعریف ":: \u003d" ساختار تعریف شده را از ساختارهای اساسی تعریف شده قبلی تشکیل می دهد.

ساختار تعریف شده در براکت های زاویه ای در سمت چپ ": \u003d" نوشته شده است<" и ">".

گزینه های دیگر (گزینه های ممکن) ساختارها به صورت عمودی ذکر شده اند.

نقل قول (دقیقاً همانطور که از کاراکترهای ویژه نقل کردیم ، و آنها را به صورت مضاعف محصور می کنیم) هیچ عنوانی ندارد.

ما رسمیت نحو را با استفاده از نماد BNF نشان می دهیم ، به عنوان نمونه ای از یک سیستم رسمی حساب حساب لامبدا را در نظر می گیریم که در سخنرانی های قبلی برای ما کاملاً شناخته شده است.

<выражение> ::= <константа> | <переменная> |

(<выражение> <выражение>) |

ل<переменная> . <выражение>

بگذارید معنای یادداشت فوق را توضیح دهیم.

که در این مثال مفهوم بیان تعریف شده است ، نمایش نحوی که می تواند در قالب یکی از گزینه های زیر بیان شود:

  • 1. ثابت؛
  • 2. متغیر؛
  • 3. دو عبارت محصور در پرانتز ، یعنی. عملکرد آشنا استفاده از عبارات لامبدا؛
  • 4- کاراکتر l به دنبال یک متغیر ، یک نقطه و یک عبارت ، یعنی عمل آشنای انتزاع

معلوم می شود که نحو زبان برنامه نویسی SML دارای یکسری شباهت های واضح با نحو حساب لامبدا است. این قیاسها اجتناب ناپذیر هستند ، هم به دلیل ماهیت کاربردی زبان برنامه نویسی مورد نظر و هم بر این اساس که زبان SML به عنوان ابزاری برای اثبات قضایا ساخته شده است ، بدین معنی که نحو آن (و با نگاه به آینده ، توجه داشته باشیم که معناشناسی باید از لحاظ ریاضی شفاف باشد) .

برای نشان دادن نکات فوق ، بگذارید مهمترین دسته بندی نحوی زبان برنامه نویسی SML را در نظر بگیریم.

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

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

اظهار نظر یک متن توضیحی دلخواه برای یک برنامه است که با توجه به نحو زبان SML ، باید در محدود کننده های فرم "(*" و "*) ضمیمه شود.

به طور خاص ، ساختار انواع معتبر نحوی اصطلاحات زبان را در نظر می گیریم.

<выражение> ::= <идентификатор> | <литерал> |

<выражение> <выражение> |

<выражение> <идентификатор> <выражение>

همانطور که از رسمیت BNF مشاهده می شود ، عبارت صحیح نحوی در زبان برنامه نویسی SML عبارت است از:

  • 1. شناسه (یعنی نام یک متغیر ، ثابت ، عملکرد یا نوع ، معمولاً به عنوان یک دنباله الفبایی با طول محدود و با کاراکتر الفبایی شروع می شود) یا
  • 2. تحت اللفظی (ادبیات بعداً در سخنرانی مورد بحث قرار می گیرند) یا
  • 3. دنباله ای از دو عبارت یا
  • 4- دنباله ای از دو عبارت متصل به یک شناسه.

بحث عبارات را ادامه می دهیم.

علاوه بر گزینه های ذکر شده ، عبارات معتبر نحوی زبان برنامه نویسی SML نیز عبارتند از:

اگر<выражение> سپس<выражение>

دیگر<выражение> |

(<выражение> ... <выражение>) |

اجازه دهید<описание> که در<выражение> پایان |

  • 1. سه عبارت متصل به کلمات محفوظ اگر ("اگر") ، سپس ("سپس") و دیگری ("در غیر این صورت") ، یک عبارت شرطی نامیده می شود و در واقع نمایانگر یک عملکرد محمول است که اگر اولین عبارت صحیح باشد ، اجرای عبارت دوم را اجرا می کند. و انجام یک سوم در غیر این صورت؛
  • 2. توالی نهایی عبارات محصور شده در پرانتز (یا به اصطلاح tuple) و برای ساختار داده ها استفاده می شود.
  • 3. توضیحات و بیان ، متصل به کلمات محفوظ let ("put") ، در ("in") و end ("end") که عملکرد جایگزین کردن توضیحات را در عبارت تعیین می کنند ، با در نظر گرفتن تمام وقایع احتمالی قطعه مشخص شده توضیحات در آن.
  • 4- عبارتی که در پرانتز محصور شده باشد (همانطور که قبلاً می دانیم ، در محاسبات لامبدا و منطق ترکیبی این عمل بدون محدودیت انجام می شود) و برای نشان دادن صریح اولویت عملیات استفاده می شود.

ما بحث در مورد دسته بندی نحوی زبان برنامه نویسی SML را ادامه می دهیم.

در ادامه به بررسی ساختار انواع معتبر نحوی توصیفات اشیاء زبان می پردازیم.

ما رسمیت مربوطه را از نظر BNF می دهیم.

<описание> ::=

وال< идентификатор > = < выражение > |

سرگرم کننده< идентификатор > < идентификатор > =

< выражение > |

محلی< описание > که در<описание> پایان

توضیحات معتبر نحوی زبان برنامه نویسی SML ، به شرح زیر از BNF ارائه شده ، عبارتند از:

  • 1. شناسه و عبارت ، متصل به کلمات محفوظ val و "\u003d" ، که نشان دهنده اتصال شناسه (متغیر ، ثابت یا شیء معتبر نحوی زبان برنامه نویسی) با یک یا عبارت دیگر است.
  • 2. سه شناسه و عبارتی متصل به کلمات رزرو شده سرگرم کننده و "\u003d" ، که نشان دهنده اتصال تابع (مشخص شده توسط شناسه اول) با پارامتر (مشخص شده توسط شناسه دوم) با عبارتی است که ترتیب تعیین شده در آن مقدار را تعیین می کند.
  • 3. دو توصیف مرتبط با کلمات محفوظ محلی ، در و پایان ، که تعریف محلی از توضیحات اول را در متن دوم نشان می دهد.

ما بحث در مورد دسته بندی نحوی زبان برنامه نویسی SML را ادامه می دهیم.

ما در ادامه به بررسی ساختار توضیحات معتبر نحوی انواع اشیاء زبان می پردازیم.

ما رسمیت مربوطه را از نظر BNF می دهیم.

<тип> :: \u003d int | بول |

<тип> * ... * <тип> |

<тип> -> <тип>

به شرح زیر از BNF ارائه شده ، انواع معتبر نحوی زبان برنامه نویسی SML عبارتند از:

  • 1. مقادیر عدد صحیح با کلمه رزرو شده int.
  • 2. مقادیر منطقی نشان داده شده توسط کلمه رزرو شده bool؛
  • 3. tuples - ترتیب n - عناصر از عناصر از انواع خاص.
  • 4. توابع - ترتیب n - عناصر از انواع خاص متصل شده توسط شخصیت های رزرو شده "-\u003e".

مثال زیر را که نشانگر تکالیف نوع در SML است ، در نظر بگیرید. یک ثابت نوع از نوع (0 ، نادرست ، 1 ، صحیح) از نوع (int * bool * int * bool) است.

توجه داشته باشید که انواع (1) و (2) ابتدایی هستند ، در حالی که (3) و (4) انواع با ساختار آشکارا مشخص شده (یا کسر شده) مشتق می شوند ، از آنجا که نام "نوع ساختاری" از آنجا آمده است.

در حین سخنرانی ، ما قبلاً از این دسته بندی نحوی به عنوان ادبیات یا انواع اساسی SML که متشکل از سکانس های خاصی از شخصیت هاست ، نام بردیم.

در جزئیات بیشتر ویژگی های نحوی انواع اصلی الفبای را در نظر بگیرید.

ما رسمیت مربوطه را از نظر BNF می دهیم.

<литерал> ::= <литерал целого типа> |

<литерал строкового типа> |

<литерал вещественного типа>

همانطور که از BNF ارائه شده آمده است ، انواع معتبر مصنوعی معتبر در زبان برنامه نویسی SML موارد زیر هستند:

  • 1. اعداد صحیح از نوع int و در محدوده بین -230 تا +230 (آخرین شرایط با ویژگی های نمایش داده های دستگاه همراه است)؛
  • 2. رشته های رشته ای از رشته ها و نشان دهنده دنباله های الفبایی کاراکترها در کد فرمت ASCII.
  • 3. اصطلاحات واقعی دارای نوع اصلی واقعی ، یک شکل کلی از فرم M x 10E ، که در آن Mantissa در محدوده از -1 تا +1 است ، و E ترتیب در محدوده مربوطه است.

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

ما بحث در مورد دسته بندی نحوی زبان برنامه نویسی SML را ادامه می دهیم.

ما از نظر رسمی سازی زبان های برنامه نویسی کاربردی - حساب lambda - عملکرد توابع برنامه کاربردی ، به بررسی اساسی می پردازیم.

<выражение> <выражение>

همانطور که از BNF ارائه شده در زیر آمده است ، ساختاری معتبر از زبان برنامه نویسی SML که شرح برنامه کاربرد را توصیف می کند ، دقیقاً به توضیحات عملکرد برنامه در حساب لامبدا مطابقت دارد.

ما با استفاده از یک تابع به یک آرگومان در زبان برنامه نویسی SML با مثال زیر نشان می دهیم.

عملکرد succ تعریف شده را در نظر بگیرید

سرگرم کننده succ n \u003d n + 1؛

و یکی از آرگومان (عدد صحیح) را اضافه می کند.

برای عملکرد succ مورد نظر ، کاربرد صحیح نحوی می تواند از فرم succ 2 باشد و در طول اجرای برنامه به عنوان 3 محاسبه می شود.

ما بحث در مورد دسته بندی نحوی زبان برنامه نویسی SML را ادامه می دهیم.

ما به بررسی ساختارهای معتبر نحوی زبان برنامه نویسی SML ، به نام عبارات شرطی می پردازیم.

ما رسمیت مربوطه را از نظر BNF می دهیم:

اگر<выражение> سپس<выражение> دیگر<выражение>;

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

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

توجه داشته باشید که توابع مقایسه به زبان SML ساخته شده اند و دارای این فرم هستند: "\u003d" (مساوی) ، "<" (меньше), ">"(بیشتر)،"<=" (меньше или равно), ">\u003d "(بزرگتر از یا مساوی با) ،"<>"(مساوی نیست). نتیجه محاسبه هر یک از این توابع یک بولی است.

ما نحو یک عبارت شرطی را با مثال زیر در SML نشان می دهیم:

اگر n\u003e \u003d 10 و سپس 1 مورد دیگر 0؛

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

ما بحث در مورد دسته بندی های اصطلاحات اصلی زبان برنامه نویسی SML را ادامه می دهیم.

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

ما رسمیت مربوطه را از نظر BNF می دهیم:

اجازه دهید<описание> که در<выражение> پایان؛

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

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

بگذارید نحو اصطلاحات را با مثالهایی از زبان برنامه نویسی SML نشان دهیم.

عبارات اجازه زیر را در نظر بگیرید:

بگذارید Val n \u003d 2 در انتهای n + 1؛

بگذارید k \u003d 9876 * 8765 در (k-1، k، k + 1) پایان یابد؛

همانطور که مشاهده می کنید ، بیان اول چیزی غیر از جانشینی نیست که با یک عبارت lambda از فرم (xx.x + 1) رسم شود 2. عبارت دوم به ما امکان می دهد تا محاسبه چندگانه یک عمل دست و پا گیر (ضرب) را به یک حالت واحد کاهش دهیم.

در این سخنرانی بارها از مفهوم تاپل یاد شده بود.

بگذارید با جزئیات بیشتر این نوع بسیار مهم (به ویژه هنگام اجرای توابع) نوع ساختهای نحوی زبان برنامه نویسی SML را در نظر بگیریم.

در اینجا یک رسمیت از نمایندگی معتبر نحوی یک دست انداز از نظر BNF آورده شده است:

(<выражение>, ..., <выражение>)

بر اساس نوع رسمی سازی BNF ، مفهوم یک تاپل را روشن می کنیم. Tuple گروهی است که حداقل از دو عبارت (احتمالاً داشتن انواع مختلف) تشکیل شده و در یک مجموعه جداگانه ترکیب شده است.

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

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

مثال 1: (1 ، 2 * 1 ، 2 * 2 * 1)

مثال 2: (1 ، صحیح ، 0 ، نادرست)

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

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

رسمیت توضیحات نحوی صحیح متغیرها و توابع را از نظر BNF در نظر بگیرید:

<описание> ::=

وال<идентификатор> = <выражение>

<описание> ::=

سرگرم کننده<идентификатор> <идентификатор> =

<выражение>

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

ما توضیحات رسمی متغیرها و توابع را با مثالهای زیر نشان می دهیم:

مثال 1. val x \u003d 2؛

مثال 2. واقعیت جالب n \u003d

اگر n<2 then 1

other n * واقعیت (n - 1)؛

مثال 3. سرگرم کننده f (x، y) \u003d x * x + y * y؛

اولین مورد از این مثالها شرح متغیر (عدد صحیح) x است ، دوم یک تابع واقعیت بازگشتی (خود قابل اجرا) برای محاسبه فاکتوریل (محصول اعداد طبیعی از 1 تا n) است ، و سوم یک تابع دو برابر f است که مبلغ مربعات آرگومان ها را محاسبه می کند.

ما در نتیجه توجه می کنیم که در حین اجرای عملکرد دوم از tuples استفاده می شود (از آنجا که نحو SML در فرم "خالص" آن ، به شرح زیر از BNF ، اجازه استفاده از توابع تنها را می دهد).

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

  • · نحو زبانهای برنامه نویسی تابعی کاملاً نزدیک به نحو نظریه های رسمی است که بر اساس آنها بنا شده است (به ویژه ، این مورد در حساب های لامبدا و SML صادق است).
  • · BPF رسمی و كیفیت نحو زبان است.
  • · زبان برنامه نویسی SML ، بر خلاف زبانهای برنامه نویسی عملکردی اولیه ، دارای تعدادی ساختار پیشرفته (توپل ، اصطلاحات و غیره) است.

فرم Backus-Naur (BNF)

فرم Backus-Naur (BNF) اولین بار در توضیحات Algol-60 استفاده شد. BPF در اصل با نام گرامرهای CS همزمان است ، فقط در اسناد متفاوت است. مشخصات متاکارکار زیر ارائه می شود:

<> - خدمت به برجسته سازی غیر پایانه ها - مفاهیم زبان. | - "یا". طرف های جایگزین سمت راست قوانین را جدا می کند. - "با تعریف است" پیکان مورد استفاده را هنگام ضبط تولیدات گرامر CS جایگزین می کند.

کاراکترهای ترمینال همانگونه که ثبت شده است ، هیچ روش خاصی برای برجسته کردن آنها ارائه نشده است. در اینجا مثالی از تعاریف مربوط به BPF ، از مشخصات Algol-60 گرفته شده است - "پیام اصلاح شده":

<простое арифметическое выражение> ::= <терм> 1 نوع عملکرد علاوه بر Okak\u003e<терм> | <простое арифметическое выражение> <знак операции типа сложения> <терм> <знак операции типа сложения> ::= + | -

همانطور که می بینید ، بازگشت برای بیان تکرارها ، و در همه جا - سمت چپ استفاده می شود. BNF توسط N. Wirth در توصیف زبان پاسکال استفاده شد. اگرچه براکت های متاسکو (و) تکرار نشانگر به نماد اضافه شده اند ، آنها فقط در موارد فردی استفاده می شوند ، در حالی که ، برای مثال ، دستور زبان عبارات بازگشتی است.

نمودار نحوی

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

با ساخت دستگاه ساخت محدود متناسب از نمودار نحو ، می توانید این دستگاه را به صورت سخت افزاری یا نرم افزاری پیاده سازی کنید.

بنابراین ، نمودارهای نحوی می توانند نه تنها برای تولید ، بلکه برای شناخت زبانهای خودکار نیز مفید باشند. نمودارها پس از انتشار کتاب توسط K. Jensen و N. Wirth "پاسکال" محبوبیت پیدا کردند. آنها در بخش اول آن - "راهنمای" - یک کتاب درسی زبان جمع و جور استفاده می شود. در شکل 3.1 یکی از نمودارهای آنجا را نشان می دهد.

فرم بکوس-نور گسترده شده است

همانطور که قبلاً نیز گفته شد ، عدم وجود گرامر رسمی (و BNF) برای تکرار صریح ، تعدادی از مشکلات را ایجاد می کند. در مرحله اول ، تعاریف به راحتی قابل درک است ، به دلیل وفور تعداد بازگشتی ، از دید کافی برخوردار نیست. ثانیا ، مشکلاتی وجود دارد که گرامرهایی که به درختان معنایی مناسب می دهند ، به صورت بازگشتی در نظر گرفته می شوند. در توصیف Modula-2 و Oberon ، N. Wirth از فرم بسط Backus-Naura (RBNF) استفاده کرد. اصلاحات اصلی مربوط به معرفی براکت ها (و) برای تکرارها ، و [و] برای نشان دادن وقوع اختیاری زنجیره های پایانه ها و غیر پایانه ها در قسمت های صحیح قوانین است. توافقات مربوط به تعیین پایانه ها و غیر پایانه ها نیز تغییر یافته است که چندان اساسی نیست. در آینده از RBNF استفاده خواهیم کرد. در اینجا چگونگی تعریف در مشخصات Oberon-2 آورده شده است: گزینه ها توسط | براکت های مربع [و] حاکی از اختیاری بودن عبارت نوشته شده در داخل آنها است ، و براکت های مجعد (و) نشانگر تکرار آن (احتمالاً 0 بار) است. شخصیت های غیر انتهایی با یک حرف بزرگ شروع می شوند (برای مثال ، Operator). کاراکترهای ترمینال یا با یک حروف کوچک (به عنوان مثال ، شناسه) شروع می شوند ، یا کاملاً با حروف بزرگ نوشته می شوند (برای مثال ، شروع کنید) ، یا در علامت های نقل قول محصور می شوند (به عنوان مثال ، ": \u003d"). باید اضافه کرد که در نقش علامت "با تعریف" از "\u003d" در RBNF استفاده می شود و هر قانون با یک دوره خاتمه می یابد. اینگونه است که چگونه می توان نحوی یک شناسه (نام) را با استفاده از RBNF تعیین کرد:

نام \u003d نامه (نامه | شماره).

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

نحو \u003d (قانون). قاعده \u003d نام "\u003d" بیان بیان \u003d متغیر ("من" متغیر). گزینه - عنصر (عنصر). عنصر \u003d نام | زنجیر | "(" بیان ")" | "[" بیان "]" | "(" اصطلاح ")". زنجیر \u003d "" "(شخصیت)" "" | "" "(نماد)" "".

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

C توضیحات نحو زبان

C (انگلیسی C) - یک زبان برنامه نویسی رویه ای استاندارد در اوایل دهه 1970 توسط کارمندان Bell Labs ، کن تامپسون و دنیس ریچی به عنوان توسعه زبان زنبور عسل ایجاد شد. C برای استفاده در سیستم عامل UNIX ایجاد شده است. از آن زمان به بسیاری دیگر منتقل شده است. سیستم های عامل و به یکی از پرکاربردترین زبانهای برنامه نویسی تبدیل شده است. C از اثر بخشی آن قدردانی می شود. این زبان محبوب ترین برای ایجاد نرم افزار سیستم است. همچنین اغلب برای ایجاد برنامه های کاربردی مورد استفاده قرار می گیرد. با وجود این واقعیت که C برای مبتدیان طراحی نشده است ، اما به طور فعال برای آموزش برنامه نویسی استفاده می شود. در آینده ، نحو زبان C پایه و اساس بسیاری از زبان های دیگر شد. C با لاکونیسم ، مجموعه مدرن از سازه های کنترل جریان ، ساختار داده ها و مجموعه گسترده ای از عملیات ها مشخص می شود.

در کتاب مشهور B. Kernigan و D. Ritchie ، شرح نحو زبان C در یک نماد ذکر شده است که معادل BNF است ، اما از کنوانسیون های دیگر برای تعیین ترمینال ها و غیر پایانه ها استفاده می کند ، از سمت راست گزینه های جایگزین از قوانین ، سازه های اختیاری. غیر پایانه ها به صورت ایتالیایی ، پایانه ها - با قلم مستقیم نوشته می شوند. بخش های جایگزین این قوانین در یک ستون یک بار نوشته می شوند یا با کلمات "یکی از" (یکی از آنها) مشخص می شوند. قطعات اختیاری با زیرمجموعه "opt (از اختیاری) - اختیاری دنبال می شوند. "نئو" - در برخی از ترجمه های روسی). سمت چپ قوانین در یک خط جداگانه که در سمت چپ قرار دارد ، نوشته شده است. در اینجا مثالی از تعاریف ساخت زبان C آورده شده است:

اپراتور مرکب (لیست توضیحات لیست انتخاب شرکت لیست انتخاب) لیست اپراتور لیست اپراتور اپراتور

همانطور که می بینید ، به دلیل عدم وجود روش صریح در بیان تکرارها ، تعاریف در بازگشت مجدد وجود دارد. نماد مشابه با حداقل تغییرات برای توصیف نحو زبانهای فرزندان C استفاده شد: C ++ ، Java ، C #: در اینجا گزیده ای از استاندارد ECMA-334 در C # آورده شده است:

بلوک: (بیانیه-listopt) بیانیه-لیست: بیانیه بیانیه-لیست بیانیه

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

ویژگی های زبان C

  1. این پایگاه زبان ساده ای دارد که از آن بسیاری از ویژگی های اساسی به کتابخانه ها ، مانند توابع ریاضی یا کارکردهای مدیریت پرونده منتقل می شود.
  2. این برنامه بر روی برنامه نویسی رویه ای تمرکز دارد و امکان استفاده از سبک ساختاری برنامه نویسی را فراهم می آورد.
  3. این سیستم دارای نوع خاصی است که در برابر عملیات بی معنی محافظت می کند.
  4. به عنوان مثال ، استفاده از یک پردازنده قبل برای تعریف ماکرو و شامل پرونده هایی با کد منبع.
  5. دسترسی مستقیم به حافظه کامپیوتر از طریق استفاده از نشانگرها دارد.
  6. دارای حداقل تعداد کلمات کلیدی؛
  7. انتقال پارامترها به یک تابع با مقدار ، و نه توسط مرجع (در حالی که عبور توسط مرجع با استفاده از نشانگرها انجام می شود).
  8. نشانگرها به توابع و متغیرهای استاتیک؛
  9. دامنه دامنه؛
  10. سوابق - انواع داده های جمعی تعریف شده توسط کاربر (ساختار) که می توانند به عنوان یک کل دستکاری شوند.

برنامه C "سلام جهان"

اصلی () (printf ("سلام ، جهانی! \\ n")؛) # شامل int main () (printf ("سلام ، جهانی! \\ n") ؛ بازگشت 0؛)

توضیحات نحوی زبان ADA

آدا - یک زبان برنامه نویسی که در نتیجه یک پروژه توسط وزارت دفاع ایالات متحده با هدف توسعه یک زبان برنامه نویسی یکپارچه برای سیستم های جاسازی شده ایجاد شده است (یعنی سیستم های کنترل مجتمع های اتوماتیک که در زمان واقعی کار می کنند) ایجاد شده است. اینها قبل از هر چیز سیستم های کنترل در هواپیما برای اشیاء نظامی (کشتی ها ، هواپیماها ، تانک ها ، موشک ها ، پوسته ها و غیره) بودند. توسعه دهندگان وظیفه ایجاد یک زبان جهانی را ندارند ، بنابراین ، تصمیماتی که توسط نویسندگان آدا گرفته می شود باید در متن ویژگی های حوزه انتخابی درک شوند. این زبان به نام Ada Lovelace انجام شده است.مطالعات انجام شده در اوایل و اواسط دهه 1970 نشان داد كه اگر پنتاگون از یك زبان برنامه نویسی استفاده كند تا تمام مشكلات خود را به جای حدود 450 زبان و گویشهای آنها حل كند ، می توانید پس انداز بسیار زیادی در هزینه داشته باشید ( حدود 24 میلیارد دلار برای دوره 1983 تا 1999)) زبان Ada مبتنی بر ایده های برنامه نویسی ساختاری است و پشتیبانی از توسعه برنامه های پیچیده چندمولته ، درجه بالایی از استقلال و قابلیت حمل ماشین را در اختیار شما قرار می دهد.هنگام طراحی زبان ، تمرکز اصلی بر روی قابلیت اطمینان و بهره وری - زبان به طور خاص برای توسعه بزرگ ایجاد شده است سیستم های نرم افزاری زمان واقعی برای سیستم های جاسازی شده با الزامات قابل اطمینان بالا.

امکانات

Ada یک زبان برنامه نویسی ساختاری ، مدولار ، شی گرا است که شامل ابزارهای برنامه نویسی سطح بالا برای فرآیندهای موازی است. نحو آدا از زبانهایی مانند Algol یا Pascal به ارث رسیده است ، اما گسترش یافته است ، و همچنین دقیق تر و منطقی تر شده است. Ada یک زبان کاملاً تایپ شده است ، کار با اشیاء فاقد انواع را از بین می برد و تبدیل نوع خودکار به حداقل مطلق کاهش می یابد.

ویژگی های نحوی

  1. برنامه ها مدولار هستند ، مکانیسم کنترل واردات و صادرات توضیحات بین ماژول ها شامل دو دستورالعمل مختلف است: یکی برای اتصال ماژول دیگر (با) ، دیگری برای وارد کردن توضیحات آن (استفاده). همچنین امکان تغییر نام یک ماژول در هنگام ورود (تغییر نام) وجود دارد - این گزینه به شما امکان می دهد تا از یک شناسه راحت تر برای یک برنامه نویس استفاده کنید تا یک بسته را نشان دهد.
  2. بسته ها (یکی از انواع ماژول ها) ممکن است حاوی یک هدر و یک بخش شخصی باشد - آنچه در آن موجود است صادر نمی شود و در دسترس برای سایر ماژول ها نیست.
  3. مکانیسم ماژول های عمومی (قابل تنظیم) پشتیبانی می شود: بسته ها ، رویه ها و عملکردهایی که اجازه می دهد الگوریتم های پردازش داده های عمومی را بدون مشخص کردن نوع خاصی توصیف کنند.
  4. یک سیستم نوع پیشرفته ، ساخته شده و توسط برنامه نویس تولید می شود. روش های بسیاری برای ایجاد انواع جدید وجود دارد ، زبان از دو مفهوم مختلف پشتیبانی می کند: "زیرگروه" و "نوع مشتق". متغیرهای نوع و زیر نوع سازگار هستند ؛ نوع و متغیرهای نوع مشتق آن نیستند.
  5. وسیله توسعه یافته برای دستیابی به مراحل و عملکردها: پارامترهای ورودی و خروجی پشتیبانی می شوند ، انتقال پارامترهای واقعی به ترتیب دلخواه با نام های رسمی ، پارامترهای با مقادیر پیش فرض.
  6. تعریف مجدد رویه ها ، عملکردها و عملگرها پشتیبانی می شود - ایجاد چندین نوع از رویه ، عملکرد یا عملگر با همین نام اما امضاهای مختلف (انواع و تعداد پارامترها).
  7. سازه های پشتیبانی سازه ای که به زبان ساخته شده اند: مفاهیم "وظیفه" (اجرای موازی یک قطعه برنامه) ، "ورودی یک کار" (وسیله ای برای هماهنگ سازی و برقراری ارتباط از کارهای موازی) پشتیبانی می شوند ، مکانیزم "rendezvous" (پروتکل تعامل با کارهای موازی از طریق ورودی یکی از آنها پشتیبانی می شود) ) ، یک اپراتور انتخاب SELECT برای سازماندهی تعامل بین جریان شرطی (انتخاب یک کار موازی برای تعامل با توجه به آمادگی برای ریزوز و برخی شرایط دیگر) وجود دارد.

گرامرهای بدون محتوا از زبانهای Ada-83 و Ada-95 با استفاده از نوع BNF تعریف می شوند ، که در آن اسامی تکرارها و قطعات اختیاری اضافه می شود. در صورت نام مرکب نامهای غیر انتهایی در نوع معمولی با استفاده از زیرنویس نوشته می شوند ، و کلمات رزرو شده به صورت پررنگ. از آنجا که نه در براکت و نه از براکت در جهنم استفاده می شود و نه از علامت "|" استفاده می شود (همه اینها متاکاراکترها هستند) ، هیچگونه عنوان خاصی برای ترمینال ها ارائه نمی شود. تعریف نحو جمله اگر از استاندارد Ada-95 گرفته شده است به شرح زیر است:

If_statement :: \u003d اگر شرط باشد دنباله_of_statements (شرط elsif سپس دنباله_of_statements) اگر پایان یابد

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

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

برنامه نمونه جهانی جهنم در آدا

با Ada.Text_IO؛ روش سلام استفاده از Ada.Text_IO است. شروع Put_Line ("سلام جهان!")؛ پایان سلام؛

تعریف کلمول Kobol و PL / 1

کبول (COBOL ، زبان کسب و کار COmmon) ، یک زبان برنامه نویسی نسل سوم (نسخه اول در سال 1959) ، که عمدتاً برای توسعه برنامه های شغلی در نظر گرفته شده است. توسعه دهنده اولین استاندارد واحد کوبول ، گریس هاپر (مادربزرگ کوبول) بود. تا سال 1997 ، حدود 240 میلیارد خط کد در کابل فعالانه مورد استفاده قرار گرفت. حدود 90٪ معاملات مالی در جهان با كد بر روی Kobol پردازش می شود و 75٪ از پردازش داده های تجاری روی كابل نوشته شده است. ارزش کل کد کوبولوسکی که در حال حاضر استفاده می شود 2 تریلیون دلار برآورد شده است. تاکنون ، میلیاردها خط کد جدید هر ساله بر روی کابل نوشته می شود.

یک سیستم نمادگذاری عجیب و غریب ، که نمونه ای از نمادهای اولیه است ، در توصیف زبان های Kobol و PL / 1 مورد استفاده قرار گرفت. یک مثال - تعریف قالب فعل MOVE در کابل:


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

ویژگی های زبان کوبول

  1. دست و پا گیر ، شفاف
  2. ابزارهای خوب و مدرن برای کار با ساختارها و پرونده های داده ، که او را در طولانی مدت در برنامه های تجاری (حداقل در ایالات متحده) فراهم کرده است.
  3. ضبط واضح و نسبتاً کاملی از الگوریتم ها به شکلی مستقل از ماشین های خاص که برای حل مشکلات طراحی شده اند فراهم می کند.
  4. این تعداد زیادی از تیم ها را تشکیل می دهند که مجموعه های پیچیده ای از روال معمول هستند که راه حل هایی برای مشکلات اقتصادی برنامه ریزی شده ارائه می دهند.

برنامه مثال "جهان سلام" در مورد کابل

تقسیم هویت. شناسه برنامه. سلام دنیا. * تقسیم محیط زیست. * تقسیم اطلاعات. * تقسیم رویه. PARA-1. نمایش "سلام ، جهان". * برنامه خروج.

PL / 1- (PL / I ، زبان برنامه نویسی I - "یک زبان برنامه نویسی شماره یک") - یک زبان برنامه نویسی که در سال 1964 ساخته شده ، برای محاسبات علمی ، مهندسی و محاسبات تجاری گرا طراحی شده است. این شامل طیف گسترده ای از ساخت های نحوی و توابع داخلی است که ، احتمالاً ، یک کامپایلر وجود ندارد که از تمام ویژگی های زبان PL / 1 پشتیبانی کند. PL / 1 از بازگشت و پشتیبانی پشتیبانی می کند برنامه نویسی ساختاریو زمینه اصلی کاربرد آن پردازش داده ها است

خواص اساسی PL / 1

  1. نحو رایگان
  2. كليد واژه ها و شناسه ها مورد غير حساس هستند
  3. به طور پیش فرض (در نسخه های اصلی کلاسیک - همیشه) پارامترهای عبور توسط مرجع
  4. پشتیبانی از ساختارهای پیچیده با انجمن ها (در اصطلاحات پاسکال - سوابق با انواع)
  5. یک سیستم بسیار پیشرفته از انواع داده های داخلی ، با امکان تبدیل ضمنی بین اکثر آنها
  6. چندین نوع تخصیص حافظه پویا
  7. اپراتورهای بسیار عمومی با بسیاری از تغییرات نحو
  8. معنای دقیق تعریف ساختارهای کنترل
  9. عملیات آرایه
  10. مکانیسم حالت استثناء توسعه یافته است
  11. پشتیبانی از I / O چند وظیفه ای و ناهمزمان
  12. پشتیبانی از سطح زبان برای روشهای پیچیده دسترسی I / O
  13. یک پردازنده پردازنده بسیار پیشرفته ، که در واقع زیر مجموعه ای از PL / 1 است

برنامه مثال "جهان سلام" در PL / 1

آزمون: گزینه های رویه (اصلی)؛ کاراکتر My_String را اعلام کنید (20) متنوع اولیه ("سلام جهان!")؛ لیست پرش (My_String) را قرار دهید. آزمون پایان؛

الفبای زبان

الفبای اولیه PL / 1 شامل 60 حرف است:

$ @ # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 \u003d + - * / ()،. "٪ ؛: ¬ & |\u003e< _ ? пробел

همچنین امکان کار با الفبای محدودتر 48 کاراکتر وجود دارد که شامل نمی شود:

@ # ; : ¬ & | > < _ ? -

به جای شخصیت های مفقود شده ، از کلید واژه های اضافی استفاده شد. در نسخه های مدرن زبان نیز می توان از حروف لاتین کوچک استفاده کرد (کلمات کلیدی را می توان با حروف بزرگ و حروف کوچک نوشت). به جای کاراکتر ¬ (نفی) که در مجموعه کاراکترهای قابل حمل نیست ، از use استفاده کنید.

ادبیات

  1. Sverdlov S.Z. زبان های برنامه نویسی و روش های ترجمه: راهنمای مطالعه. - SPb .: Peter، 2007 .-- 638 p: Ill.

زنگ

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