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

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

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

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

می توانید با استفاده از Solidity in your browser در مرورگر خود ، بدون نیاز به بارگیری یا کامپایل کردن هر چیزی ،  برنامه نویسی سالیدیتی را شروع کنید. این برنامه فقط از کامپایل پشتیبانی می کند – اگر می خواهید کد را اجرا کنید یا آن را به بلاکچین  وارد کنید ، باید از برنامه ای  مانند AlethZero استفاده کنید.

با چند مثال ساده از این زبان برنامه نویسی شروع می کنیم. سپس به ارائه انواع داده ای زبان برنامه نویسی سالیدیتی می پردازیم.

یک مثال ساده:

آموزش زبان برنامه نویسی solidity

 uint storedData ،متغیر حالت به نام storedData از نوع uint (عدد صحیح 256 بیتی) را اعلام می کند که موقعیت آن در ذخیره سازی بطور خودکار توسط کامپایلر اختصاص می یابد. توابع set و get می توانند برای تغییر یا بازیابی مقدار متغیر استفاده شوند.

یک مثال دیگر:

آموزش زبان برنامه نویسی solidity این قرارداد برخی از مفاهیم جدید را معرفی می کند. یکی از آنها نوع آدرس(address) است که یک مقدار 160 بیتی است که اجازه انجام هیچگونه عملیات حسابی را نمی دهد. علاوه بر این ، متغیر حالت  balance از داده های پیچیده ای است که آدرس ها را به اعداد صحیح بدون علامت نگاشت می کند. عملکرد ویژه Coin سازنده ای است که در هنگام ایجاد قرارداد اجرا می شود و پس از آن نمی توان فراخوانی کرد. به طور دائم آدرس شخص ایجاد کننده قرارداد را ذخیره می کند: همراه با tx و block ، msg یک متغیر جهانی جادویی است که حاوی برخی خصوصیات است که امکان دسترسی به خارج از قرارداد را فراهم می کند. تابع queryBalance ثابت(constant) است و به همین دلیل مجاز به تغییر وضعیت قرارداد نیست (توجه داشته باشید که این هنوز اجرایی نشده است). در Solarity ، “parameters” بازگشت نامگذاری شده و در اصل یک متغیر محلی ایجاد می کنند. بنابراین برای برگرداندن تعادل ، می توانیم فقط

balance = balances[addr];

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


توضیحات یا Comments

توضیحات تک خطی با این نماد (//) و  توضیحات چند خطی با این نماد (/*…*/) مشخص می شوند. در حالیکه نظرات سه گانه (///) درست در مقابل اعلامیه های عملکرد ، توضیحات NatSpec را معرفی می کنند (که در اینجا به کار برده نمی شوند )


انواع یا Types

Solidity یک زبان استاتیک است ، به این معنی که باید نوع هر متغیر حالت ((state ومحلی  local)) مشخص شود. سالیدیتی از  چندین نوع داده ای پشتیبانی می کند  که می توانند با هم ترکیب شوند تا انواع پیچیده تر را  ایجاد کنند.علاوه بر این ، انواع می توانند در عبارات حاوی اپراتورها با یکدیگر در تعامل باشند.مفهوم مقادیر “تعریف نشده” (“undefined”)یا “تهی”  (“null”)در سالیدیتی وجود ندارد ، اما متغیرها در آن همیشه دارای  یک مقدار پیش فرض هستند که  بستگی به نوع آن  داده، مقدار آن متفاوت است.

انواع داده های (ابتدایی) 

booleans (bool),  integer and fixed-length string/byte array (bytes0 to bytes32) types

انواع عدد صحیح signed و  unsigned integers  متشکل از بیت های مختلف (int8 / uint8 تا int256 / uint256 در مراحل 8 بیتی ، که در آن uint / int نام های مستعار uint256 / int256 است) و با  آدرس ها یی(از 160 بیت).

Booleans

bool:

مقادیرTRUE وFALSE را می گیرد.

عملگرهای منطقی:

نقیض

  • ! (logical negation)

“و”

  • && (logical conjunction, “and”)

“یا”

  • || (logical disjunction, “or”)

تساوی

  • == (equality)

نامساوی

  • != (inequality)

انواع اعداد صحیح یا Integers

int / uint:

اعداد صحیح به انواع با علامت(Signed) و بدون علامت(unsigned) با اندازه های متقاوت موجود هستند.

کلمات کلیدی مانند uint8 به uint256 در مرحله 8(اعداد صحیح بدون علامت از 8 بیت به بالا تا 256 بیت) و int8 به int256  هستند. Uintو int اسامی مستعار برای uint256و int256  هستند.


Integer Literals

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

var x = 1 – 2;

مقدار 1 – 2 برابر با -1 است که به x اختصاص داده می شود و بنابراین x نوع int8 را دریافت می کند .کوچکترین نوع  داده ای حاوی -1. کد قطعه کد زیر متفاوت رفتار می کند:

var one = 1;var two = 2;var x = one – two;

در اینجا ، one و two هر دو نوع uint8 دارند که x   را مشخص می کنند . تفریق داخل x   نوع uint8 باعث پیچیده شدن می شود و مقدار x ، 255 بیت خواهد بود.

حتی امکان پذیر است که  از حداکثر 256 بیت فراتر شود ، مادامی که فقط برای رسیدن به محاسبات از تمام اعداد صحیح استفاده شود:

var x = (0xffffffffffffffffffff * 0xffffffffffffffffffff) * 0;

در اینجا x مقدار 0 و بنابراین نوع uint8 را خواهد داشت.


عملگرها

عملگرهای مقایسه ای یاComparisons

<=, <, ==, !=, >=, > (evaluate to bool)

(<= ،! = ، == ، و غیره) همیشه دارای بولین یا منطقی هستند که می توانند با استفاده از&& ، || و! ترکیب شوند.

عملگرهای بیت یا Bit operators

&, |, ^ (bitwise exclusive or), ~ (bitwise negation)

عملگرهای شیقت یا Shift operators

<< (left shift), >> (right shift)

عملگرهای حسابی یا Arithmetic operators

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


توجه:

 اعداد صحیح در سالیدیتی در یک اندازه مشخص محدود هستند. برای مثال، uint32 مقادیر از 0 تا 2**32 – 1 را نشان می دهد. در محاسبات متفاوت حتما از اندازه و رنج مناسب برای داده های خود استفاده کنید.

اگر یک عملگر به انواع مختلفی اعمال شود ، کامپایلر سعی دارد بطور ضمنی یکی از عملگرها را به نوع دیگر تبدیل کند. به طور کلی ، تبدیل ضمنی امکان پذیر است اگر از نظر معنایی معنا پیدا کند و هیچ اطلاعاتی از بین نرود: uint8 به uint16 و int120 به int256 تبدیل می شود ، اما int8 قابل تبدیل به uint256 نیست. علاوه بر این ، عدد صحیح بدون علامت یا unsigned integers را می توان به بایت هایی با اندازه یکسان یا بزرگتر تبدیل کرد ، البته برعکس آن صدق نمی کند. هر نوع قابل تبدیل به uint160 نیز می تواند به آدرس یا address تبدیل شود.

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

int8 y = -3;uint x = uint(y);

در پایان این قطعه کد ، x مقدار 0xfffff..fd (64 hex characters) را نشان می دهد ، که در دو تعریف بالا ،عدد-3 ، 256 بیتی است.

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

uint20 x = 0x123;var y = x;

در اینجا ، نوع y، uint20 خواهد شد. استفاده از var برای پارامترهای عملکرد یا پارامترهای بازگشت امکان پذیر نیست. متغیرهای حالت انواع عدد صحیح و bytesXX را می توان ثابت اعلام کرد.

uint constant x = 32; bytes3 constant text = “abc”;


واحدهای اتر و زمان یا Ether and Time Units

اعداد literal می تواند پسوندی از wei ، finney ، sababo یا ether  داشته باشند . اگر اعداد ارز اتر بدون پسوند باشد “wei”  فرض می شود .واحد ها می توانند به یکدیگر تبدیل شوند. به عنوان مثال. 2 ether == 2000 finney را ارزیابی می کند.

بعلاوه ، پسوندهای ثانیه ، دقیقه ، ساعتها ، روزها ، هفته ها و سالها برای تبدیل بین واحدهای زمانی استفاده می شوند که ثانیه ها واحد پایه هستند و واحدها به صورت ساده و ساده تبدیل می شوند (یعنی یک سال همیشه دقیقاً 365 روز و غیره).

seconds, minutes, hours, days, weeks , years

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


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

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

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

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

4 دیدگاه

    1. سلام دوست عزیز
      آموزش ادامه دارد .به صورت فصل به فصل روی سایت قرار می گیرد.در حال حاضر آموزش فصل دوم هم روی سایت قرار گرفته است.برای سهولت دسترسی شما به این لینک مراجعه کنید.
      https://www.zoomarz.com/solidity-software/

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

    با احترام.

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

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

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