برنامه نویسی بلاکچین

آموزش زبان برنامه نویسی solidity – فصل اول:انواع متغیرها (بخش دوم)

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


عملیات بیت  یا Bit operations

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

~int256 (0) == int256 (-1)


شیفت یا Shifts

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

  • برای مقادیر x مثبت و منفی ، x << y معادل x * 2 ** y است.
  • برای مقادیر مثبت x ، x >> y معادل x / 2 ** y است.
  • برای مقادیر x منفی ، x >> y معادل (x + 1) / 2 ** y – 1 است (که همان تقسیم x بر 2** ,وقتی x به سمت بی نهایت منفی می رود).
  • در همه موارد ، تغییر وضعیت با یک عدد منفی y ،یک استثناء در زمان اجرا را به همراه می آورد.

هشدار: قبل از نسخه 0.5.0 ، یک تغییر جهت x >> y برای منفی x معادل x / 2 ** y بود ، یعنی ، به جای گرد کردن (به سمت بی نهایت منفی) از شیفت برای گرد (به سمت صفر)  استفاده می شد.


جمع ، تفریق و ضرب یا Addition, Subtraction and Multiplication

 

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

بدین معنی که به عنوان مثال:

uint256 (0) – uint256 (1) == 2 ** 256 – 1.

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

عبارت –x معادل (T (0) – x) است که T نوع x است. این بدان معنی است که –x منفی نخواهد بود،   اگر نوع x یک نوع عدد صحیح علامت دار یا unsigned باشد. همچنین ، اگر x منفی باشد –x می تواند مثبت باشد. احتیاط دیگری وجود دارد که ناشی از نمایش  مکمل دو عدد است.

int x = -2**255;

assert(-x == x);

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


تقسیم یا Division

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

int256(-5) / int256(2) ==int256(-2).

توجه :تقسیم بر literal ها منجر به مقادیر کسری از دقت دلخواه می شود.

توجه: تقسیم صفر منجر به وجود آمدن خطا می شود.

بیشتر بخوانید:  آموزش زبان برنامه نویسی سالیدیتی solidity - فصل اول: انواع متغیرها (بخش سوم)

ماژول یا Modulo

عمل ماژول a % n   باقیمانده تقسیم عملوند a بر n  ،یعنی  r  را به دست می آورد ، جایی کهq،

q= int(a / n) و  r = a – (n * q).

این بدان معنی است که نتیجه عملگر  modulo هم علامت یا صقر  ،عملگر  چپ  است. و

a % n == -(-a % n) برای مقادیر منفی a داریم:

  • int256(5) % int256(2) == int256(1)
  • int256(5) % int256(-2) == int256(1)
  • int256(-5) % int256(2) == int256(-1)
  • int256(-5) % int256(-2) == int256(-1)

توجه: باقیمانده تقسیم بر صفر منجر به وجود آمدن خطا می شود.


به توان رسیدن  یاExponentiation

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

توجه: توجه داشته باشید که 0 ** 0 توسط EVM به عنوان 1 تعریف شده است.


اعداد ممیز  ثابت یا Fixed Point Numbers

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

fixed / ufixed:  اعداد ممیز ثابت با علامت یا بی علامت با اندازه های متفاوت وجود دارند. کلمات کلیدی ufixedMxN وfixedMxN ، که در آن M تعداد بیت های گرفته شده از نوع را نشان می دهد و N تعداد اعشار را نشان می دهد، موجود هستند. M باید با 8 قابل تقسیم باشد و از 8 تا 256 بیت پیش برود. N باید بین 0 تا 80 باشد .

fixed و ufixed به ترتیب نام های مستعار برای ufixed128x18 و  fixed128x18  هستند.

اپراتورهای این دسته :

  • مقایسه ها: <=، <، ==،! =،> =،> (بول یا bool را ارزیابی می کنند.)
  • عملگرهای حسابی:

+, -, unary -, *, /, % (modulo)

نکته: تفاوت اصلی بین اعداد float ) float و double در بسیاری از زبانها ، به طور دقیق تر اعداد 754IEEE)  و اعدادممیز  ثابت در  تعداد بیت های مورد استفاده برای عدد صحیح و بخش کسری آن  است.

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

ممنون که تا پایان ” آموزش زبان برنامه نویسی solidity ” همراه ما بودید.

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

بیشتر بخوانید

برچسب ها
مشاهده بیشتر

معصومه گودرزی

کارشناس ارشد ریاضی|تکنسین شبکه|مولف کتاب های اموزشی|مدرس دانشگاه های آزاد و علمی کاربردی|پژوهشگر در مورد ارزهای دیجیتال

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن