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

فرم عملگر انتساب چگونه است. اپراتورهای پاسکال

اپراتور واگذاری

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

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

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

به طوری که متغیر /یا تابع/ و عبارت دارای یک نوع هستند. استثنا زمانی است که متغیر از نوع real باشد، در این صورت عبارت می تواند هم از نوع واقعی و هم از نوع صحیح باشد.

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

زاویه:= زاویه * p1;

AccessOK:= نادرست;

SpherVol:= 4 * p1 * R * R;

3.3.2. ورودی – خروجی داده ها

ورودی داده با دستورات ورودی بدون فرمت انجام می شود:

خواندن (a 1,…,a n)؛ Readln(a 1,…,a n);,

که در آن 1،…، و n لیستی از متغیرها است.

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

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

بخوانید (a, a, a,…)

برای i:=1 تا n انجام

برای j:=1 تا m انجام دهید

بخوان یک)؛.

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

مثال: مقادیر عناصر بردار X و ماتریس A را وارد کنید که به ترتیب برابر با:

X = (5، 1.2، 0.1، 7، 8.6) A = 3، 0، 6، 14، 5

0, 0, 0, 99, 12

مقادیر عناصر را می توان با مقداردهی اولیه آنها تعیین کرد:

Const X: آرایه واقعی = (5.0، 1.2، 0.1، 7.0، 8.6);

A: آرایه اعداد صحیح = ((4، 5، 10، 8، 0)،

(7, 9, 25, 0, 1),

(3, 0, 6, 14, 5),

(0, 0, 0, 99, 12));.

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

write('x=', x:3, 'y=', y:8:3);

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

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

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

مقدار int = 256; ارزش = ارزش + 256; // عبارت منظم با استفاده از دو عمل: = و + مقدار += 256; // عبارت معادل اختصاری با استفاده از عملگر انتساب

V خط 2مقدار متغیر به مقدار 512 اختصاص داده می شود که حاصل جمع مقدار موجود در مقدار متغیر با عدد 256 است. خط 3بیان همان عملیاتی را انجام می دهد که در خط 2، اما عبارت به شکل ساده شده نوشته شده است. این عبارت شامل یک عملگر انتساب با علامت += است. بنابراین، عملیات += مقدار مقدار متغیر را با مقدار سمت راست جمع می‌کند: 256، و نتیجه حاصل را به همان متغیر اختصاص می‌دهد. همانطور که از مثال مشاهده می شود، عملگر in خط 3کوتاه تر از اپراتور در خط 2، اگرچه عملیات مشابهی را انجام می دهد. بنابراین، اگر برخی از متغیرها نیاز به تغییر دارند، توصیه می شود از عملیات انتساب استفاده کنید.

پنج عملگر انتساب در C++ وجود دارد، بدون احتساب عملگر انتساب اصلی: = .

  1. += عملیات انتساب-افزودن.
  2. -= عملیات تخصیص - تفریق.
  3. *= عملیات تخصیص ضرب.
  4. /= عملیات واگذاری-تقسیم;
  5. %= انتساب-باقی مانده تقسیم;

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

عملیات انتساب در C++
عمل تعیین مثال مثال معادل توضیح
عملیات انتساب-افزودن += var += 16 var = var + 16 عدد 16 را به مقدار متغیر var اضافه می کنیم، نتیجه جمع بندی در متغیر var ذخیره می شود.
عملیات تخصیص - تفریق -= var - = 16 var = var - 16 عدد 16 را از متغیر var کم می کنیم، نتیجه تفریق در متغیر var ذخیره می شود.
عملیات انتساب - ضرب *= var *= 16 var = var * 16 مقدار متغیر var را 16 برابر می کنیم، حاصل ضرب به متغیر var اختصاص می یابد.
عملیات واگذاری-تقسیم /= var /= 16 var = var / 16 مقدار متغیر var را بر 16 تقسیم می کنیم، نتیجه تقسیم به متغیر var اختصاص می یابد.
عملیات واگذاری-باقیمانده تقسیم %= var %= 16 var = var % 16 باقیمانده تقسیم را پیدا کرده و در متغیر var ذخیره کنید

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

// assignment.cpp: نقطه ورودی برنامه کنسول را تعریف می کند. #include "stdafx.h" #include با استفاده از namespace std. int main(int argc, char* argv) (int value = 256; cout<< "value = "<< ارزش << endl; مقدار += 256; // عبارت کوتاه‌نویسی با استفاده از عملگر انتساب - add cout <<"value += 256; >> " << value << endl; value -= 256; // сокращённое выражение с использованием операции присваивания - вычитания cout << "value -= 256; >> " << value << endl; value *= 2; // сокращённое выражение с использованием операции присваивания - умножения cout << "value *= 2; >> " << value << endl; value /= 8; // сокращённое выражение с использованием операции присваивания - деления cout << "value /= 8; >> " << value << endl; system("pause"); return 0; }

برای شروع در خط 9متغیر اعلام شده استمقدار و با مقدار 256 مقداردهی اولیه می شود. در خطوط 11، 13، 15، 17، عملیات انتساب به ترتیب نوشته شده است - جمع، تفریق، ضرب و تقسیم. پس از هر عملیات انتساب، اپراتورکوت نتیجه را چاپ می کند نتیجه برنامه (شکل 1 را ببینید).

مقدار = 256 مقدار += 256; >> مقدار 512 - = 256; >> مقدار 256 *= 2; >> 512 مقدار /= 8; >> 64 برای ادامه هر کلیدی را فشار دهید. . .

شکل 1 - عملیات انتساب در C++

شکل 1 به وضوح نمونه هایی از عملیات انتساب را نشان می دهد و همچنین نتیجه عملیات انتساب مربوطه را نشان می دهد.

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

تخصیص یکی از ساختارهای اصلی در زبان های برنامه نویسی ضروری است که به طور مؤثر و ساده بر روی معماری فون نویمان که اساس رایانه های مدرن است پیاده سازی شده است.

تنظیم<целевая_переменная> <выражение>

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

2 را در 2 ضرب کنید و چهار بدهید.

الگوریتم کار [ | ]

تعیین [ | ]

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

مشهور - معروف مثال بدانتخاب یک علامت تساوی برای نشان دادن یک انتساب، صعودی است زبان فرترندر سال 1957 و کورکورانه تا به امروز توسط توده ای از توسعه دهندگان زبان تکرار شد. این ایده بدسنت دیرینه استفاده از علامت "=" را برای نشان دادن مقایسه برابری، محمولی که مقادیر "درست" یا "نادرست" را می گیرد، از بین می برد. اما در فرترن، این نماد شروع به نشان دادن انتساب، اجبار به برابری کرد. در این مورد، عملوندها در یک موقعیت نابرابر قرار دارند: عملوند سمت چپ، متغیر، باید برابر با عملوند سمت راست، عبارت باشد. بنابراین x = y به معنای y = x نیست.

متن اصلی (انگلیسی)

یک مثال بدنام برای یک ایده بد، انتخاب علامت مساوی برای نشان دادن انتساب بود. این به فرترن در سال 1957 باز می گردد و کورکورانه توسط ارتش طراحان زبان کپی شده است. چرا این ایده ی بدی است؟ از آنجا که اجازه دادن به "=" را برای مقایسه برای برابری، محمولی که یا درست یا نادرست است، واژگون می کند. اما فرترن آن را به معنای انتساب، اجرای برابری درآورده است. در این حالت، عملوندها در وضعیت نامساوی قرار دارند: عملوند چپ (یک متغیر) باید برابر با عملوند راست (یک عبارت) باشد. x = y به معنای y = x نیست.

اجرای این موقعیت Wirth را می توان در نظر گرفت که در زبان پاسکال که او نویسنده آن است، عملگر انتساب: = است، در حالی که برای مقایسه از ساده = استفاده می شود.

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

  • با معرفی یک نماد زبان جدید برای عملگر آزمون برابری.
A = B = C

به متغیر A مقدار Boolean عبارت رابطه B = C اختصاص داده شده است. این نماد منجر به کاهش خوانایی می شود و به ندرت استفاده می شود.

ویژگی های معنایی[ | ]

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

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

A = b = a a = 1000

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

تعویض عملیات[ | ]

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

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

طرح های توسعه یافته[ | ]

سازه های تکلیف در زبان های مختلفبرنامه نويسي

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

اهداف متعدد[ | ]

یکی از جایگزین ها اپراتور سادهتوانایی اختصاص مقدار یک عبارت به چندین شی است. به عنوان مثال، در PL/1، اپراتور

مجموع، TOTAL = 0

به طور همزمان اختصاص می دهد مقدار صفرمتغیرهای SUM و TOTAL . در Ada، انتساب نیز یک دستور است، نه یک عبارت، بنابراین نماد تخصیص چندگانه این است:

مجموع، TOTAL: عدد صحیح:= 0;

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

جمع = کل = 0

برخلاف PL/1، Ada و Python، که در آن‌ها چند انتساب فقط به عنوان علامت کوتاه در نظر گرفته می‌شود، در C، Lisp و دیگران نحو داده شدهیک مبنای دقیق دارد: عملگر انتساب به سادگی مقدار اختصاص داده شده به آن را برمی گرداند (به بالا مراجعه کنید). بنابراین آخرین مثال در واقع این است:

جمع = (کل = 0)

خطی مانند این در C کار می کند (اگر یک نقطه ویرگول در پایان اضافه کنید)، اما باعث ایجاد خطا در پایتون می شود.

تکلیف موازی[ | ]

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

پیاده سازی [ | ]

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

وظیفه

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

تخصیص یکی از ساختارهای اصلی در زبان های برنامه نویسی ضروری است که به طور مؤثر و ساده بر روی معماری فون نویمان که اساس رایانه های مدرن است پیاده سازی شده است.

تنظیم<целевая_переменная> <выражение>

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

2 را در 2 ضرب کنید و چهار بدهید.

الگوریتم کار

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

تعیین

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

یک مثال بد معروف، انتخاب علامت برابر برای نشان دادن یک تکلیف است که به فرترن در سال 1957 برمی گردد و هنوز کورکورانه توسط توده ای از توسعه دهندگان زبان تکرار می شود. این ایده بد، سنت دیرینه استفاده از علامت "=" را برای نشان دادن مقایسه برابری، محمولی که به "درست" یا "نادرست" ارزیابی می شود، برانداز می کند. اما در فرترن، این نماد شروع به نشان دادن انتساب، اجبار به برابری کرد. در این مورد، عملوندها در یک موقعیت نابرابر قرار دارند: عملوند سمت چپ، متغیر، باید برابر با عملوند سمت راست، عبارت باشد. بنابراین x = y به معنای y = x نیست.

متن اصلی(انگلیسی)

یک مثال بدنام برای یک ایده بد، انتخاب علامت مساوی برای نشان دادن انتساب بود. این به فرترن در سال 1957 باز می گردد و کورکورانه توسط ارتش طراحان زبان کپی شده است. چرا این ایده ی بدی است؟ از آنجا که اجازه دادن به "=" را برای مقایسه برای برابری، محمولی که یا درست یا نادرست است، واژگون می کند. اما فرترن آن را به معنای انتساب، اجرای برابری درآورده است. در این حالت، عملوندها در وضعیت نامساوی قرار دارند: عملوند چپ (یک متغیر) باید برابر با عملوند راست (یک عبارت) باشد. x = y به معنای y = x نیست.

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

  • با معرفی یک نماد زبان جدید برای عملگر آزمون برابری.
A = B = C

به متغیر A مقدار Boolean عبارت رابطه B = C اختصاص داده شده است. این نماد منجر به کاهش خوانایی می شود و به ندرت استفاده می شود.

ویژگی های معنایی

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

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

A = b = a a = 1000

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

تعویض عملیات

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

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

طرح های توسعه یافته

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

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

اهداف متعدد

یکی از جایگزین های عملگر ساده، امکان اختصاص مقدار یک عبارت به چندین شی است. به عنوان مثال، در PL/1، اپراتور

مجموع، TOTAL = 0

به طور همزمان صفر را به SUM و TOTAL اختصاص می دهد. در Ada، انتساب نیز یک دستور است، نه یک عبارت، بنابراین نماد تخصیص چندگانه این است:

مجموع، TOTAL: عدد صحیح:= 0;

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

جمع = کل = 0

برخلاف PL/1، Ada و Python، که انتساب چندگانه فقط به عنوان یک علامت کوتاه در نظر گرفته می‌شود، در C، Lisp و دیگران، این نحو دارای یک مبنای دقیق است: عملگر انتساب به سادگی مقدار اختصاص داده شده به آن را برمی‌گرداند (به بالا مراجعه کنید). بنابراین آخرین مثال در واقع این است:

جمع = (کل = 0)

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

تکلیف موازی

a ||= 10

این ساختار فقط در صورتی به متغیر a مقداری اختصاص می‌دهد که مقدار آن هنوز تخصیص نیافته باشد یا برابر با false باشد.

عبارات مرکب

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

A = a + b

نحو عملگر انتساب مرکب C، اتحاد عملگر باینری مورد نظر و عملگر = است. به عنوان مثال، ورودی های زیر معادل هستند

مجموع += مقدار; مجموع = جمع + مقدار;

زبان های برنامه نویسی که از عملگرهای ترکیبی (C++، Python، Java و غیره) پشتیبانی می کنند، معمولاً نسخه هایی برای اکثر عملگرهای باینری در آن زبان ها دارند (+=، -=، &=، و غیره).

عملگرهای Unary

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

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

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

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

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

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

اپراتور واگذاری

اپراتور واگذاری (:=) دستور می دهد عبارت مشخص شده در سمت راست آن را اجرا کند و نتیجه را به متغیری که شناسه آن در سمت چپ قرار دارد اختصاص دهد. متغیر و عبارت باید با نوع سازگار باشند.

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

مثلا برای اپراتور

نتیجه:=A div B;

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

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

آ:= 8;

S:=A*V;

باقی مانده:= A mod B;

نسبت:=A/B;

عملگر پرش بدون قید و شرط (رفتن به)

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

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

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

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

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

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

مثالی از استفاده از عملگر پرش بدون شرط:

برچسب برچسب; (در قسمت توضیحات برچسب، یک برچسب با ناممتکا}

شروع (برنامه اصلی)

(گزاره های اصلی برنامه)

(بیانات برنامه اصلی با برچسب مشخص شده است)

سفارش کار

    کاوش کنید اطلاعات نظریبا موضوع: "نوشتن برنامه در پاسکال با استفاده از عملگرهای انتساب و پرش بدون قید و شرط".

    دريافت كردن وظیفه فردیاز معلم و برنامه ای متناسب با وظیفه تدوین کنید.

    برنامه در حال اجرا را به معلم نشان دهید.

    به سوالات امنیتی جواب بدهید.

کنترل سوالات

    عناصر اساسی برنامه نویسی

    ویژگی های اصلی برنامه. مفاهیم زبان، پوشش ها، بلوک های جهانی و محلی.

    اپراتورهای زبان برنامه نویسی پاسکال اپراتور واگذاری قالب، نمونه ها

    اپراتور پرش بدون قید و شرط قالب، نمونه ها قوانین اساسی استفاده

آزمایشگاه شماره 7

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

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

اطلاعات نظری مختصر

اظهارات مشروط

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

توربو پاسکال دو عملگر شرطی دارد: اگر و مورد.

بیان شرط if

اپراتور وضعیت اگریکی از محبوب ترین ابزارها برای تغییر ترتیب طبیعی اجرای دستورات برنامه است.

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

    اگر<условие>سپس<оператор1>

دیگر<оператор2>;

    اگر<условие>سپس<оператор>;

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

    اگر <условие> سپس <оператор1> در غیر این صورت <оператор2>

    اگر <условие> سپس <оператор>

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

در حالت اول، اگر مقدار عبارت باشد درست است، واقعی(درست)، دویدن <оператор1>, بعد از کلمه نشان داده شده است سپس(در ترجمه - "آن"). اگر نتیجه ارزیابی عبارت در شرط باشد نادرست(کاذب)، پس <оператор2> .

در حالت دوم اگر نتیجه بیان درست است، واقعی، انجام <оператор>, اگر نادرست- اپراتور بلافاصله پس از اپراتور اگر. اپراتورها اگرشاید تو در تو.

نمونه ای از یک قطعه برنامه با عبارت شرط if:

اگر Ch="N" پس رمز عبور:= درست است

other Password:= False;

اگر رمز عبور = درست است، پس

اگر X = 100 سپس بنویسید ("رمز عبور و کد صحیح هستند")

Writeln ("خطا در کد")؛

در این مثال، مقدار متغیر نوع کاراکتر از صفحه کلید خوانده می شود چ. سپس شرایط بررسی می شود باساعت=" ن" . اگر برآورده شد، متغیر کلمه عبوربه نوع بولی یک مقدار اختصاص داده می شود درست است، واقعیدر صورت عدم تحقق شرط، نادرست. سپس مقدار کد از صفحه کلید خوانده می شود ایکس. بعد، دستور if شرط Parol = True را بررسی می کند. اگر مهم باشد درست است، واقعی، سپس رمز وارد شده توسط اپراتور بررسی می شود اگر X=100. اگر شرط X=100معنی دارد درست است، واقعی، سپس پیغام رمز و کد صحیح هستند نمایش داده می شود و کنترل در برنامه به دنبال کلمه به اپراتور منتقل می شود. پایاناگر مهم باشد نادرست، عبارت مرکب بعد از کلمه دیگر، که پیغام خطا در کد را روی صفحه نمایشگر ویدیویی نمایش می دهد و روال استاندارد را فراخوانی می کند. توقف (1)برای توقف برنامه

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

اگر شرط 1، اگر شرط 2 است<оператор1>دیگر<оператор2>

ابهام حاصل از اینکه کدام اپراتور است اگربخشی متعلق است دیگر <оператор2>, با این واقعیت که کلمه رسمی مجاز است دیگرهمیشه با نزدیکترین کلمه تابع در متن همراه (همراه) است اگرکه هنوز با کلمه خدمات مرتبط نیست دیگر.

بنابراین هنگام نوشتن عبارات شرطی تو در تو باید دقت شود.

مثال 1 . برنامه ای بنویسید که ضریب دو عدد صحیح را محاسبه کند. با توجه به اینکه تقسیم بر صفر غیرممکن است، برای سازماندهی کنترل ورودی داده ها.

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

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

برنامه Primer1;

الف، ب: عدد صحیح؛

Write("مقدار سود سهام A را وارد کنید:");

Write("مقدار مقسوم علیه B را وارد کنید:");

اگر B=0 (کنترل ورودی شمارهب}

سپس Writeln ("Ha صفر قابل تقسیم نیست") (شرط برقرار است)

(شرط رعایت نشده است)

نتیجه:= A/B;

Writeln("جزئی اعداد ",A," و " ,B, " = ", Rezult);

برترین مقالات مرتبط