مبانی زبان سالیدیتی

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی سالیدیتی 3 مه 2025
اشتراک گذاری

مبانی زبان برنامه‌نویسی سالیدیتی (Solidity)


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




انواع داده‌ها در سالیدیتی


سالیدیتی از انواع داده‌های پایه‌ای و پیچیده پشتیبانی می‌کند. در ادامه مهم‌ترین آن‌ها را بررسی می‌کنیم:


1. uint و int




  • uint (Unsigned Integer): عدد صحیح مثبت
    مثال: uint age = 25;




  • int (Signed Integer): عدد صحیح با علامت (مثبت و منفی)
    مثال: int temperature = -10;




سالیدیتی از انواع خاص‌تری مثل uint8, uint256, int128 نیز پشتیبانی می‌کند که نشان‌دهنده اندازه بیت هستند.


2. address


برای ذخیره آدرس‌های کیف پول در بلاکچین استفاده می‌شود.
مثال:


address public owner = msg.sender;

3. bool


مقدار بولین (درست یا نادرست):


bool isActive = true;

4. string


برای ذخیره رشته‌های متنی استفاده می‌شود.
مثال:


string public name = "Solidity";

5. bytes


برای داده‌های باینری. bytes32 نوع رایج آن است و برای هش‌ها یا داده‌های رمزنگاری‌شده کاربرد دارد.




متغیرهای حالت (State Variables)


متغیرهایی هستند که در بلاکچین ذخیره می‌شوند و وضعیت قرارداد را نگه می‌دارند. این متغیرها در خارج از توابع تعریف می‌شوند و بخشی از "State" قرارداد هستند.


مثال:


contract Example {
uint public count = 0;
}



متغیرهای محلی (Local Variables)


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


مثال:


function add(uint a, uint b) public pure returns (uint) {
uint sum = a + b;
return sum;
}



ثابت‌ها و ایمیوتیبل‌ها (Constants & Immutables)


1. constant


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


uint constant VERSION = 1;

2. immutable


فقط یک‌بار مقداردهی می‌شود، آن هم در constructor، و پس از آن قابل تغییر نیست.
مثال:


address immutable owner;
constructor() {
owner = msg.sender;
}



عملگرها (Operators) و دستورات شرطی (if / else)


عملگرهای ریاضی:




  • + جمع




  • - تفریق




  • * ضرب




  • / تقسیم




  • % باقیمانده




عملگرهای مقایسه‌ای:




  • == مساوی




  • != نامساوی




  • < کوچکتر




  • > بزرگتر




  • <= کوچکتر مساوی




  • >= بزرگتر مساوی




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




  • && و




  • || یا




  • ! نقیض




ساختار شرطی:


function isAdult(uint age) public pure returns (bool) {
if (age >= 18) {
return true;
} else {
return false;
}
}



حلقه‌ها در سالیدیتی (for, while, do-while)


1. for loop:


برای تکرار با تعداد مشخص.


function sumToTen() public pure returns (uint) {
uint sum = 0;
for (uint i = 1; i <= 10; i++) {
sum += i;
}
return sum;
}

2. while loop:


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


function countDown(uint start) public pure returns (uint) {
uint count = 0;
while (start > 0) {
count++;
start--;
}
return count;
}

3. do-while loop:


حداقل یک‌بار اجرا می‌شود، حتی اگر شرط برقرار نباشد.


function doExample(uint x) public pure returns (uint) {
uint sum = 0;
do {
sum += x;
x--;
} while (x > 0);
return sum;
}

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




جمع‌بندی


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



نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.