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

درس خواندن در مدرسه

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

دنباله ضبط الگوریتم

اول از همه، باید ترکیب حروف ALG را یادداشت کنید. بعد نام الگوریتم می آید. سپس بعد از NAC باید یک سری دستورات را توصیف کنید. عبارت CON به معنای پایان برنامه است.

شرح الگوریتم در زبان الگوریتمی:

شرکت ALG

شروع کنید

90 درجه به چپ بپیچید

CON

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

ترسیم الگوریتم ها

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

اغلب، هنگام ایجاد دستورالعمل، نیاز به استفاده از تنها یک الگوریتم به عنوان الگوریتم اضافی وجود دارد. به همین دلیل است که رکوردها اغلب می توانند پیچیده و دست و پا گیر باشند. اما شایان ذکر است که امکان ارسال لینک ساده تر از بازنویسی چندین بار یک ورودی است.

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

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

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

کارگاه الکترونیکی

به منظور بهبود مطالعه تئوری در زبان دستوری، متخصصان دانشکده مکانیک و ریاضیات دانشگاه دولتی مسکو یک کامپایلر ویژه در سال 1985 ایجاد کردند. اسمش «کارگاه الکترونیکی» بود. با کمک آن امکان ورود، تغییر و اجرای برنامه ها وجود داشت. سال بعد، مجموعه خاصی از مجریان منتشر شد. ما در مورد "ربات"، "نقاش نویس"، "دو پا"، "وسیله نقلیه تمام زمینی" صحبت می کنیم. این امر امکان پیاده‌سازی الگوریتم‌ها را به سادگی و آسانی فراهم کرد. این کامپایلر بسیار محبوب شده است و در برخی از کامپیوترها استفاده شده است. کافی برای مدت طولانیاین زبان برنامه نویسی اصلاح و تغییر یافته است. در سال 1990، نسخه بعدی در یک کتاب درسی ظاهر شد.

بت

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

هدف زبان

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

تفاوت بین زبان های ماشینی و الگوریتمی

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

ویژگی های استاندارد

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

  • abs ماژول مطلق (X);
  • ریشه مربع sqrt(X);
  • طبیعی و ln(X)، lg(X)؛
  • حداقل و حداکثر حداقل (X، Y)، حداکثر (X، Y)؛
  • توابع مثلثاتی sin(X)، cos(X)، tan(X)، cot(X).

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

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

نام "الگوریتم" از شکل لاتین نام ریاضیدان آسیای مرکزی الخوارزمی - الگوریتمی گرفته شده است. الگوریتم یکی از مفاهیم اساسی علوم کامپیوتر و ریاضیات است.

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

مجری با موارد زیر مشخص می شود:

اقدامات اولیه؛

سیستم فرماندهی؛

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

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

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

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

معمولاً مجری هیچ چیز در مورد هدف الگوریتم نمی داند. او تمام دستوراتی را که دریافت می کند بدون اینکه دلیل و چرایی آن را بپرسد اجرا می کند.

در علوم کامپیوتر، مجری جهانی الگوریتم ها کامپیوتر است.

ویژگی های اصلی الگوریتم ها به شرح زیر است:

قابل درک بودن برای مجری - یعنی. مجری الگوریتم باید نحوه اجرای آن را بداند.

گسستگی (ناپیوستگی، جدایی) - i.e. الگوریتم باید فرآیند حل یک مسئله را به عنوان اجرای متوالی مراحل (مراحل) ساده (یا قبلاً تعریف شده) نشان دهد.

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

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

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

در عمل، رایج ترین اشکال ارائه الگوریتم ها عبارتند از:

شفاهی (ضبط به زبان طبیعی)؛

گرافیک (تصاویر از نمادهای گرافیکی)؛

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

نرم افزار (متون در زبان های برنامه نویسی).

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

مثلا. الگوریتمی برای یافتن بزرگترین مقسوم علیه مشترک (GCD) دو عدد طبیعی بنویسید.

الگوریتم می تواند به صورت زیر باشد:

تنظیم دو عدد؛

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

تعیین بزرگترین اعداد؛

عدد بزرگتر را با تفاوت بین اعداد بزرگتر و کوچکتر جایگزین کنید.

الگوریتم مرحله 2 را تکرار کنید.

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

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

چنین توصیفاتی کاملاً رسمی نیستند.

از پرحرفی ورودی ها رنج می برند.

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

روش گرافیکی ارائه الگوریتم ها در مقایسه با روش کلامی فشرده تر و بصری تر است.

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

این نمایش گرافیکینمودار الگوریتم یا فلوچارت نامیده می شود.

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

جدول 1 متداول ترین نمادها را نشان می دهد.

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

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

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

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

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

این زبان جایگاهی میانی بین زبان های طبیعی و رسمی را اشغال می کند.

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

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

نمونه ای از شبه کد زبان الگوریتمی مدرسه در نماد روسی (مدرسه AYA) است که در کتاب درسی توسط A.G. کوشنیرنکو و همکاران "مبانی انفورماتیک و علوم کامپیوتر"، 1991. در آینده به سادگی این زبان را "زبان الگوریتمی" می نامیم.

کلمات تابع پایه

نمای کلی الگوریتم:

نام alg الگوریتم (استدلال ها و نتایج)

شرایط برای کاربرد الگوریتم داده شده است

شما به هدف اجرای الگوریتم نیاز دارید

شرح اولیه مقادیر میانی

| دنباله دستورات (بدنه الگوریتم)

قسمتی از الگوریتم از کلمه alg تا کلمه beg سربرگ نامیده می شود و قسمتی که بین کلمات beg و end قرار دارد بدنه الگوریتم است.

در جمله alg، پس از نام الگوریتم، ویژگی‌های (arg، res) و نوع مقدار (integer، thing، sim، lit یا log) همه متغیرهای ورودی (Arguments) و خروجی (نتیجه‌ها) در داخل پرانتز نشان داده شده است. هنگام توصیف آرایه ها (جدول)، از زبانه کلمه سرویس استفاده می شود که با جفت های مرزی برای هر شاخص از عناصر آرایه تکمیل می شود.

جملات مثال alg:

alg حجم و مساحت استوانه (ارگ چیزهای R، H، چیزهای V، S)

alg Roots KvUr(arg چیزهای a, b, c, res things x1, x2, res lit t)

alg حذف عنصر (arg int N، arg res stuff tab A)

alg قطری (arg int N، arg int tab A، res lit پاسخ)

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

جایگزینی alg (arg lit Str1, Str2, arg res lit text)

داده شده | طول زیر رشته های Str1 و Str2 یکسان است

نیاز | در همه جای خط Text، زیر رشته Str1 با Str2 جایگزین می شود

alg تعداد ماکزیمم ها (arg int N، arg چیز زبانه A، res int K)

داده شده | N>0

نیاز | K - تعداد حداکثر عناصر در جدول A

alg Resistance (اشیاء ارگ R1، R2، آرگ در N، چیزهای دیگر R)

داده شده | N>5، R1>0، R2>0

نیاز | R - مقاومت مدار

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

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

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

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

ساختار منطقی هر الگوریتم را می توان با ترکیبی از سه ساختار اصلی نشان داد:

ذیل،

انشعاب،

یکی از ویژگی های ساختارهای اساسی وجود یک ورودی و یک خروجی است.

وزارت آموزش و پرورش فدراسیون روسیهدانشگاه فنی دولتی پرم

بخش فناوری اطلاعاتو سیستم های خودکار

ویکنتیوا او. ال.

نکات سخنرانی برای درس "زبان های الگوریتمی و برنامه نویسی" (مبانی زبان C++، ترم اول)

معرفی

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

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

1.1. الگوریتم و برنامه

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

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

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

1.2.ویژگی های الگوریتم

1. مقیاس جرمی: الگوریتم باید نه برای یک مسئله، بلکه برای یک کلاس کامل از مسائل مشابه اعمال شود (الگوریتمی برای حل یک معادله درجه دوم باید نه تنها یک معادله، بلکه همه معادلات درجه دوم را حل کند).

2. کارایی: الگوریتم باید در چند مرحله خاص منجر به به دست آوردن نتیجه شود (با تقسیم 1 بر 3 کسر تناوبی 0.3333(3) بدست می آید؛ برای رسیدن به نتیجه نهایی باید دقت به دست آوردن این کسر را قید کرد. به عنوان مثال تا 4 رقم اعشار).

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

4. گسسته - فرآیند باید با استفاده از تقسیم ناپذیر توصیف شود

عملیات انجام شده در هر مرحله (یعنی مراحل را نمی توان به مراحل کوچکتر تقسیم کرد).

الگوریتم ها را می توان به شکل های زیر ارائه کرد:

1) توصیف شفاهی الگوریتم

2) توضیحات گرافیکی الگوریتم

3) با استفاده از یک زبان برنامه نویسی الگوریتمی

1.2. کامپایلر و مفسر

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

پیشرفت کار، ترجمه هر عبارت به زبان ماشین.

1.3. زبان های برنامه نویسی

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

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

زبان های سطح بالا عبارتند از:

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

2. COBOL یک زبان کامپایل شده برای محاسبات و راه حل های اقتصادی است.مشکلات تجاری که در اوایل دهه 60 ایجاد شد. Cobol ابزارهای بسیار قدرتمندی برای کار با حجم زیادی از داده های ذخیره شده در رسانه های خارجی ارائه کرد.

3. پاسکال - در پایان ایجاد شددهه 70 توسط ریاضیدان سوئیسی نیکلاوس ویرث به طور خاص برای آموزش برنامه نویسی. این به شما امکان می دهد تفکر الگوریتمی را توسعه دهید، کوتاه و خوب بسازید برنامه خواندنی، تکنیک های اساسی الگوریتم سازی را نشان می دهد، همچنین برای اجرای پروژه های بزرگ مناسب است.

4. BASIC - ایجاد شده دردهه 60 نیز برای آموزش برنامه نویسی. هم کامپایلر و هم مفسر برای آن وجود دارد و یکی از محبوب ترین زبان های برنامه نویسی است.

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

6. C++ یک پسوند شی گرا از زبان C است که توسط Bjarne Stroustrup در سال 1980 ایجاد شد.

7. جاوا زبانی است که در اوایل توسط Sun ساخته شددهه 90 بر اساس C++. این برنامه برای ساده سازی توسعه برنامه های C++ با حذف ویژگی های سطح پایین طراحی شده است. ویژگی اصلیزبان این است که نه به کد ماشین، بلکه در بایت کد مستقل از پلتفرم کامپایل می شود (هر دستور یک بایت را اشغال می کند). این کد را می توان با استفاده از یک مفسر به نام ماشین مجازی جاوا (JVM) اجرا کرد.

2.ساختار یک برنامه ++C

برنامه C دارای ساختار زیر است: #دستورالعمل های پیش پردازنده

. . . . . . . . .

دستورات #پیش پردازنده تابع a()

عملگرها در ()

اپراتورها

void main () // تابعی که اجرای برنامه با آن اپراتورها شروع می شود

توضیحات

تکالیف

دستور خالی تابع

کامپوزیت

انتقال

دستورالعمل های پیش پردازنده - تغییر شکل متن برنامه را قبل از کامپایل کنترل می کند. برنامه اصلی به صورت SI تهیه شده است فایل متنی، 3 مرحله پردازش را طی می کند:

1) تبدیل متن پیش پردازنده؛

2) تدوین؛

3) طرح بندی (ویرایش پیوندها یا مونتاژ).

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

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

1) #define - قوانین جایگزین را در متن مشخص می کند. # صفر 0.0 را تعریف کنید

به این معنی که هر استفاده از نام ZERO در برنامه جایگزین خواهد شد

2) #شامل< имя заголовочного файла>- برای گنجاندن در متن برنامه متن از دایرکتوری "Header files" ارائه شده با کتابخانه های استاندارد در نظر گرفته شده است. هر تابع کتابخانه C توضیحات مربوطه را در یکی از فایل های هدر دارد. لیست فایل های هدر توسط استاندارد زبان تعریف می شود. استفاده از دستورالعمل شامل شامل پیش‌بند استاندارد مربوطه نمی‌شود

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

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

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

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

تعاریف - اشیاء را معرفی کنید (یک شی یک ناحیه حافظه نامگذاری شده است، یک مورد خاص از یک شی یک متغیر است) برای نمایش داده های پردازش شده در برنامه ضروری است. نمونه ها هستند

int y = 10 ; //به نام ثابت float x ; //متغیر

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

اپراتورها - اقدامات برنامه را در هر مرحله از اجرای آن تعیین می کنند.

نمونه ای از برنامه C:

#عبارتند از //دستورالعمل پیش پردازنده

کنترل سوالات

1. یک برنامه ++C از چه بخش هایی تشکیل شده است؟

2. یک تعریف چه تفاوتی با تبلیغ دارد؟

3. مراحل ایجاد یک برنامه اجرایی در C++ را فهرست کنید.

4. پیش پردازنده چیست؟

5. دستورالعمل پیش پردازنده چیست؟ نمونه هایی از دستورالعمل های پیش پردازنده را ذکر کنید.

6. برنامه ای بنویسید که متن "اولین برنامه ++ من" را چاپ کند.

2. ابزار اصلی زبان SI++ 2.1 ترکیب زبان

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

برنج. 1.1. ترکیب یک زبان الگوریتمی بنابراین، عناصر یک زبان الگوریتمی عبارتند از:

شناسه ها نام اشیاء برنامه SI هستند. شناسه می تواند از حروف لاتین، اعداد و زیرخط استفاده کند. حروف بزرگ و کوچک متفاوت هستند، برای مثال PROG1، prog1 و Prog1 سه شناسه متفاوت هستند. کاراکتر اول باید یک حرف یا زیرخط (نه یک عدد) باشد. فاصله در شناسه ها مجاز نیست.

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

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

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

جداکننده - پرانتز، نقطه، کاما، کاراکتر فاصله.

2.1.1. ثابت ها در C++

یک ثابت نشانه ای است که یک مقدار عددی، رشته یا کاراکتر ثابت را نشان می دهد.

ثابت ها به 5 گروه تقسیم می شوند:

کل؛

- واقعی (نقطه شناور)؛

قابل شمارش

شخصیت؛

رشته

کامپایلر یک نشانه را انتخاب می کند و آن را به یک گروه یا گروه دیگر و سپس به صورت داخلی اختصاص می دهد

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

ثابت های اعداد صحیح می توانند اعشاری، اکتال یا هگزادسیمال باشند. ثابت اعشاری به عنوان دنباله ای از ارقام اعشاری تعریف می شود که با چیزی غیر از 0 شروع می شود، مگر اینکه آن عدد 0 باشد (مثال: 8، 0، 192345). ثابت هشتی ثابتی است که همیشه با 0 شروع می شود. 0 با ارقام اکتالی دنبال می شود (مثال: 016 - مقدار اعشاری 14، 01). ثابت‌های هگزا دسیمال دنباله‌ای از ارقام هگزا دسیمال هستند که قبل از کاراکترهای 0x یا 0X قرار می‌گیرند (مثلاً: 0xA، 0X00F).

که در بسته به مقدار ثابت عدد صحیح کامپایلرمتفاوت ارائه خواهد کرد

V حافظه کامپیوتر (یعنی کامپایلر نوع داده مربوطه را به ثابت اختصاص می دهد).

ثابت های واقعی شکل متفاوتی از نمایش داخلی در حافظه کامپیوتر دارند. کامپایلر چنین ثابت هایی را بر اساس نوع آنها تشخیص می دهد. ثابت های واقعی می توانند دو شکل نمایش داشته باشند: نقطه ثابت و ممیز شناور. نوع ثابت نقطه ثابت: [رقم]. [رقم] (مثال: 5.7، . 0001، 41.). نوع ثابت نقطه شناور: [رقم][.][رقم]E|e[+|-][رقم] ( مثال‌ها: 0.5e5، 0.11e-5، 5E3). در نوشتن ثابت های واقعی، می توان اعداد صحیح یا کسری، یا نقطه اعشار، یا علامت توان با توان را حذف کرد.

ثابت های قابل شمارش با استفاده از کلمه کلیدی enum معرفی می شوند. اینها ثابت های اعداد صحیح معمولی هستند که به آنها نمادهای منحصر به فرد و آسان برای استفاده اختصاص داده می شود. مثالها: enum ( one=1, two=2, three=3, four=4);

enum (صفر، یک، دو، سه) - اگر در تعریف ثابت های شمارش شده، علامت ها و مقادیر عددی را حذف کنید، مقادیر به طور پیش فرض اختصاص داده می شوند. در این حالت، شناسه سمت چپ مقدار 0 را دریافت می کند و هر شناسه بعدی 1 افزایش می یابد.

enum ( ده = 10، سه = 3، چهار، پنج، شش)؛

enum (یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه،

ثابت های کاراکتر یک یا دو کاراکتر هستند که در آپستروف ها محصور شده اند. ثابت های کاراکتری متشکل از یک کاراکتر از نوع char هستند و یک بایت در حافظه اشغال می کنند، ثابت های کاراکتر متشکل از دو کاراکتر از نوع int هستند و دو بایت را اشغال می کنند. دنباله هایی که با \ شروع می شوند، دنباله های کنترل نامیده می شوند و از آنها استفاده می شود:

- برای نشان دادن کاراکترهایی که نمایش گرافیکی ندارند، به عنوان مثال:

\a - سیگنال صوتی،

\b - یک مرحله بازگشت، \n - تغذیه خط،

\t - زبانه افقی.

- برای نشان دادن کاراکترها: \ , ' , ? , ”(\\, \’ ,\? ,\”).

- برای نشان دادن کاراکترها با استفاده از کدهای هگزا دسیمال یا اکتال (\073، \0xF5).

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

از کاراکترهای کنترلی نیز می توان در رشته ها استفاده کرد. به عنوان مثال: "\nخط جدید"،

“\n\”زبان‌های برنامه‌نویسی سطح بالا الگوریتمی\”” .

2.2. انواع داده در C++

داده ها دنیای اطراف را در برنامه نمایش می دهند. هدف این برنامه پردازش داده ها است. داده ها انواع مختلفمتفاوت ذخیره و پردازش می شود. نوع داده تعریف می کند:

1) نمایش داخلی داده ها در حافظه کامپیوتر؛

2) مجموعه مقادیری که مقادیر از این نوع می توانند بگیرند؛

3) عملیات و توابعی که می تواند برای داده های این نوع اعمال شود.

که در بسته به الزامات کار، برنامه نویس یک نوع را برای اشیاء برنامه انتخاب می کند. انواع C++ را می توان به ساده و مرکب تقسیم کرد. انواع ساده شامل انواعی است که با یک مقدار مشخص می شوند. C++ 6 نوع داده ساده را تعریف می کند:

int (عدد صحیح)

کاراکتر (شخصیت)

wchar_t (کاراکتر گسترده) bool (بولی) شناور (واقعی)

دو برابر (دقت دو برابر واقعی)

4 نوع مشخص کننده وجود دارد که نمایش داخلی و محدوده انواع استاندارد را مشخص می کند

کوتاه (کوتاه) بلند (بلند) امضا شده (امضا)

بدون امضا

2.2.1. int را تایپ کنید

مقادیر این نوع اعداد صحیح هستند.

اندازه نوع int توسط استاندارد تعریف نشده است، اما به کامپیوتر و کامپایلر بستگی دارد. برای یک پردازنده 16 بیتی، 2 بایت برای آن اختصاص داده شده است، برای یک پردازنده 32 بیتی - 4 بایت.

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

int short - 2 بایت طول می کشد، بنابراین دارای محدوده 32768 – ..+32767 است.

long int - 4 بایت را اشغال می کند، بنابراین دارای محدوده -2,147,483,648..+2,147,483,647 است.

نوع int مانند نوع int کوتاه در رایانه های شخصی 16 بیتی و نوع int طولانی در رایانه های شخصی 32 بیتی است.

اصلاح‌کننده‌های امضا شده و بدون علامت نیز بر مجموعه مقادیر معتبری که یک شی می‌تواند بگیرد، تأثیر می‌گذارد:

int کوتاه بدون علامت - 2 بایت طول می کشد، بنابراین، دارای محدوده 0 ..65536 است. int طولانی بدون علامت - 4 بایت را اشغال می کند، بنابراین دارای محدوده 0..+4 294 967 است.

2.2.2. char را تایپ کنید

مقادیر این نوع عناصر یک مجموعه منظم از کاراکترها هستند. به هر کاراکتر یک عدد اختصاص داده می شود که به آن کد کاراکتر می گویند. به اندازه نوع شخصیت 1 بایت اختصاص داده شده است. نوع char را می توان با مشخص کننده های علامت دار و بدون علامت استفاده کرد. داده‌های کاراکتر امضا شده می‌توانند مقادیری را در محدوده -128 تا 127 ذخیره کنند. هنگام استفاده از داده‌های کاراکتر بدون علامت، مقادیر می‌توانند از 0 تا 255 متغیر باشند. رمزگذاری ASCII (کد استاندارد آمریکایی تبادل بین‌المللی دشمن) است. کاراکترهای با کدهای 0 تا 31 کاراکترهای سرویس هستند و فقط در دستورات ورودی/خروجی معنای مستقلی دارند.

مقادیر نوع char نیز برای ذخیره اعداد از محدوده های مشخص شده استفاده می شود.

2.2.3. wchar_t نوع

طراحی شده برای کار با مجموعه ای از کاراکترها که 1 بایت برای کدگذاری کافی نیست، به عنوان مثال یونیکد. اندازه این نوع به طور کلی با نوع کوتاه مطابقت دارد. ثابت های رشته ای از این نوع با پیشوند L نوشته می شوند: L "رشته #1".

2.2.4. bool را تایپ کنید

نوع bool را Boolean می گویند. مقادیر آن می تواند مقادیر true و false را بگیرد. شکل داخلی false 0 است، هر مقدار دیگری به عنوان true تفسیر می شود.

2.2.5. انواع نقطه شناور

نمایندگی داخلی عدد واقعیاز 2 بخش تشکیل شده است: مانتیس و نظم. در رایانه های شخصی سازگار با IBM، مقادیر شناور 4 بایت را اشغال می کنند که یک بیت برای مانتیس، 8 بیت برای توان و 24 بیت برای مانتیس اختصاص داده می شود.

مقادیر دوگانه 8 بایت را اشغال می کنند، 11 و 52 بیت به ترتیب برای توان و مانتیس اختصاص داده شده است. طول آخوندک دقت عدد و طول ترتیب دامنه آن را تعیین می کند.

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

2.2.6. void را تایپ کنید

به انواع اصلی شامل نوع void نیز می شود.مجموعه مقادیر این نوع p- است.

2.3. متغیرها

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

نمای کلی اپراتور توضیحات:

[کلاس حافظه] نام نوع [آغاز کننده]؛

کلاس حافظه می تواند مقادیر زیر را بگیرد: auto, extern, static, register. کلاس حافظه طول عمر و محدوده یک متغیر را تعیین می کند. اگر کلاس حافظه به طور صریح مشخص نشده باشد، کامپایلر آن را بر اساس زمینه اعلان تعیین می کند. طول عمر می تواند دائمی باشد - در طول اجرای برنامه یا موقت - در طول بلوک. Scope بخشی از متن برنامه است که از آن دسترسی عادی به یک متغیر مجاز است. به طور معمول دامنه همان محدوده است. به جز مواردی که متغیری با همین نام در بلوک داخلی وجود دارد.

Const - نشان می دهد که این متغیر را نمی توان تغییر داد (به نام ثابت). هنگام توصیف، می توانید یک مقدار اولیه را به یک متغیر اختصاص دهید (initialization). کلاس های حافظه:

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

extern یک متغیر جهانی است، در جای دیگری از برنامه (در فایل دیگری یا پایین تر از متن) قرار دارد. برای ایجاد متغیرهایی که در همه فایل های برنامه موجود هستند استفاده می شود.

static یک متغیر استاتیک است؛ فقط در فایلی که متغیر در آن تعریف شده است وجود دارد.

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

int a; //متغیر جهانی void main())(

int b;//متغیر محلی

extern int x;//متغیر x در جای دیگری تعریف شده است static int c;//متغیر استاتیک محلی a=1;//تخصیص به یک متغیر سراسری

int a;//متغیر محلی a

a=2;//انتساب به یک متغیر محلی::a=3;//انتساب به یک متغیر سراسری

int x=4;//تعریف و مقداردهی اولیه x

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

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

نام متغیر باید در محدوده خود منحصر به فرد باشد.

اعلان متغیر می تواند به صورت اعلان یا تعریف انجام شود. اعلان حاوی اطلاعاتی در مورد کلاس حافظه و نوع متغیر است؛ تعریف به همراه این اطلاعات به حافظه دستور می دهد که باید تخصیص داده شود. در مثال extern int x; - اعلامیه، و بقیه - تعاریف.

2.4. علائم عملیات در C++

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

عملیات Unary

& دریافت آدرس عملوند

* ارجاع به یک آدرس (عدم ارجاع)

- unary minus، علامت عملوند حسابی را تغییر می دهد

++ افزایش یک بار:

عملیات پیشوند - عملوند را قبل از استفاده افزایش می دهد

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

int a=(m++)+n; // a=4,m=2,n=2

int b=m+(++n);//a=3,m=1,n=3

کاهش یک بار:

عملیات پیشوند - عملوند را قبل از استفاده کاهش می دهد

عملیات postfix یک عملوند را پس از استفاده از آن کاهش می دهد

محاسبه اندازه (بر حسب بایت) یک شی از نوع که

عملوند دارد

دو شکل دارد

اندازه بیان

sizeof(float)//4

sizeof(1.0)//8، زیرا ثابت های واقعی به طور پیش فرض هستند

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

مثال ها

الگوریتم در زبان الگوریتمی به طور کلی به شکل زیر نوشته می شود:

algنام الگوریتم (استدلال ها و نتایج) داده شدهشرایط کاربردی بودن الگوریتم لازم استهدف الگوریتم شروعشرح مقادیر میانی | دنباله دستورات (بدنه الگوریتم) باهم

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

مثالی از محاسبه مجموع مربعات:

algمجموع مربعات ( ارگ سالم n پاسخ سالمس) داده شده| n > 0 لازم است| S = 1*1 + 2*2 + 3*3 + … + n*n شروع سالممن | ورودی n S:=0 | ncبرای i از 1 تا n | | S:= S + i * i | kts | نتیجه"S = "، S باهم

کارگاه الکترونیکی

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

در سال 1986، مجموعه ای از جهان های آموزشی (نوازندگان) برای "کارگاه الکترونیکی" منتشر شد: "ربات"، "نقاش نویس"، "دو پا"، "خودروی تمام زمین"، که به شما امکان می دهد به سادگی مفاهیم الگوریتم "کارگاه الکترونیکی" بر روی رایانه ها اجرا شد: یاماها، کوروت، UKNC و گسترده شد.

این زبان برنامه نویسی دائماً اصلاح می شد و شرحی از نسخه بعدی "کارگاه الکترونیکی" در کتاب درسی در سال 1990 ظاهر شد. سیستم برنامه نویسی KuMir ("مجموعه جهان های یادگیری")، که از این کتاب درسی پشتیبانی می کند، توسط شرکت InfoMir در سال 1990 منتشر شد. زبان این سیستم "بت" نیز نامیده می شود.

در سال 1995، "KuMir" توسط وزارت آموزش و پرورش فدراسیون روسیه به عنوان ماده آموزشی اصلی برای دوره "مبانی انفورماتیک و علوم کامپیوتر" بر اساس کتاب درسی A. G. Kushnirenko، G. V. Lebedev و R. A. Svoren توصیه شد. .

نقد

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

پیوندها

  • A. P. Ershov. زبان الگوریتمی در دوره مدرسه مبانی علوم کامپیوتر و فناوری کامپیوتر. 05/07/1985
  • انجمن زبان های برنامه نویسی روسی و ابزارهای توسعه

بنیاد ویکی مدیا 2010.

ببینید "زبان الگوریتمی روسی" در سایر لغت نامه ها چیست:

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

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

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

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

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

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

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

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

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

الگوریتمی که به زبان الگوریتمی نوشته می شود باید نام داشته باشد. توصیه می شود نام را انتخاب کنید تا مشخص شود که این الگوریتم چه مشکلی را توصیف می کند. برای برجسته کردن نام الگوریتم، کلمه سرویس ALG (ALGORITHM) را در مقابل آن بنویسید. پشت نام الگوریتم (معمولا با خط جدید) دستورات او را ضبط کنید. برای نشان دادن شروع و پایان الگوریتم، دستورات آن در یک جفت کلمه سرویس START (START) و CON (END) محصور شده است. دستورات به صورت متوالی نوشته می شوند.

ALG - نام الگوریتم

مجموعه ای از دستورات الگوریتم

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

ALG – to_warehouse

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

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

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

ALG - حرکت

جنبش

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

IF شرط IF شرط IF لبه

TO سری 1 به سری به سمت راست

در غیر این صورت قسمت 2 همه چیز دیگر به جلو

زیر یک ورودی زبان الگوریتمی برای دستور select است که توسعه ای از دستور شعبه است:

با شرط 1: سری 1

تحت شرایط 2: سری 2

با شرط N: سری N

سری N+1 ELSE

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

شرط خداحافظی NC

شرط سری قبل