در بخش چهارم آموزش قدم به قدم آردوینو، اقدام به معرفی توابع متغیر و ثبات میکنیم. اینکه چرا باید از متغیر و توابع ثابت در برنامه نویسی آردوینو استفاده کنیم، پاسخش در این آموزش نفهته است. متغیرها امکان تفکیک داده ها و دسته بندی بر اساس نوع را برای ما فرام میکند. دو نوع تابع متغیر و ثابت را در این آموزش با هم بررسی خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
متغیرها Variables
متغیرها در آردوینو اسمی برای کلمات حافظه است که داده هایی که در بخش قبلی راجع به آن صحبت کردیم، در آن قرار میگیرد و محتویات آن ها ممکن است در طول برنامه نویسی تغییر کند. انتخاب اسم برای هر متغیر در برنامه نویسی بسیار مهم است و در هر بار فراخوانی بایستی از نظر اسم، رعایت حروف کوچک و بزرگ و نوشتار صحیح بایستی ثابت باشد. زیرا برای مراجعه به هر متغیر در برنامه نویسی از اسم آن ها استفاده میکنیم. در این صورت متغیرها امکان اسم گذاری برای کلمات حافظه را برای ما فراهم میکند.
- برای انتخاب اسم از حروف کوچک و بزرگ، اعداد و حتی _ میتوانید استفاده کنید.
- دقت کنید اول اسم متغیر با عدد شروع نشود.
متغیر محل ذخیره داده است و با توجه به اینکه هر داده دارای نوع است، متغیر هم باید دارای نوع باشد. قبل از فراخوانی متغیر در برنامه نویسی نوع آن را باید مشخص کنیم. نوع متغیر، مقادیری را که متغیر میتواند بپزیرد، میزان حافظه مورد نیاز و اعمالی را مشخص میکند که میتوانند بر روی آن مقادیر انجام شود.
در زبان برنامهنویسی C++، متغیرها (Variables) نمایانگر مکانهایی در حافظه هستند که مقادیر مختلف را در طول اجرای برنامه ذخیره میکنند. برای تعریف یک متغیر در C++، شما باید نوع داده متغیر را مشخص کرده و سپس نام متغیر را ارائه دهید.
// تعریف یک متغیر صحیح با نام myVariable
int myVariable;
// تعریف یک متغیر اعشاری با نام anotherVariable
float anotherVariable;
// تعریف یک متغیر رشته با نام name
std::string name;
// تعریف یک متغیر بولین با نام isActive
bool isActive;
با تعریف متغیرها به این صورت، شما میتوانید آنها را در برنامهی C++ خود برای ذخیره و استفاده از مقادیر مختلف استفاده کنید.
نحوه ی فراخوانی متغیر در برنامه نویسی آردوینو به صورت زیر است.
در مثال زیر فراخوانی متغیرها در آردوینو بر اساس نوع داده نوشته شده است.
مقدار دادن به متغیر
جهت مقدار دهی به متغیرها در آردوینو از سه روش استفاده میکنیم.
- زمان فراخوانی متغیر
- پس از فراخوانی متغیر که از = برای مشخص شدن آن استفاده میشود.
- دستورات ورودی
در دستور اول دو متغیر x , y را از نوع int تعریف میکند و مقدار متغیر y را برابر با ۱۷ قرار میدهد. در دستور دوم متغیر parisa از نوع char تعریف شده و مقدار a را به خود نسبت داده است. در دستور سوم متغیر c, d از نوع منطقی است و مقدار درستی و نادرستی را قرار میدهد.
نمونه برنامه برای تعریف متغیر
void setup() { int yearofbirth = 1992; int currentyear = 2021; int age = currentyear - yearofbirth; Serial.begin(9600); Serial.print(age); } void loop() { }
در صورتیکه بخواهیم مقدار یک متغیر را در طول برنامه نویسی تغییر دهیم، به روش زیر عمل میکنیم.
void setup() { int yearofbirth = 1992; int currentyear = 2021; int age = currentyear - yearofbirth; yearofbirth = 1996; Serial.begin(9600); Serial.print(age); } void loop() { }
توابع ثابت Constants
توابع ثابت از نامش مشخص است، مقدار آن در طول برنامه همیشه ثابت است و تغییری نمیکند. ثوابت مقادیری هستند که در برنامه وجود دارند ولی قابل تغییر نیستند. نامگذاری برای تابع ثابت دقبقا مانند تابع متغیر است. به عبارتی مقداری که برای ثابت تعیین میشود، نوع ثابت را نیز مشخص میکند. دو روش برای فراخوانی توابع ثابت وجود دارد.
- روش اول استفاده از دستور #define
- روش دوم استفاده از دستور const
در روش اول هیچوقت از سمیکالن ; در انتهای خط برنامه نویسی استفاده نمیکنیم. زیرا جزیی از دستورات پیش پردازنده هستند.
روش فراخوانی define
روش فراخوانی const
در این شکل، نوع داده را در پست قبلی بر حسب int , char و … مشخص میکنیم. نام ثابت همانند نام متغیرها انتخاب شده که با مقدار ثابت = در آن قرار میگیرد.
Const int n = 100 , int count = 50; Const signed char x = ‘a’ ;
void setup() { const int yearofbirth = 1992; const int currentyear = 2021; int age = currentyear - yearofbirth; Serial.begin(9600); Serial.print(age); } void loop() { }
در صورتیکه از توابع ثابت در برنامه مانند const استفاده کنیم، دیگر نمیتوانیم در طول برنامه نویسی مقدار متغیر را تغییر دهیم. به عنوان مثال در کد زیر سال تولد ۱۹۹۲ است که با تابع ثابت در برنامه تعریف شده است. اگر در ادامه ی برنامه مقدار متغیر را ۱۹۹۶ تعریف کنیم، با ارور زیر مواجه خواهیم شد.
ارور کاملا گویا است! در ابتدا مقدار متغیر با تابع ثابت مشخص شده است اما در ادامه یک مقدار دیگری به همان متغیر نسبت داده شده است که با ارور مواجه شده است.
با سلام
توضیحات بسیار شفاف بود واقعا
با سلام
سپاس از همراهی شما کاربر گرامی
سلام برای اسم متغیر اگر تکراری باشد چه اتفاقی می افتد؟
با سلام
به هیچ عنوان مجاز به استفاده از متغیر تکراری در برنامه نیستیم.
سلام برای انتخاب اسم متغیر رعایت حروف کوچک و بزرگ الزامی است؟
با سلام
بله بسیار مهم است و بایستی رعایت شود در غیر اینصورت با خطا رو به رو خواهید شد.
سلام ممنونم از شما
برای استفاده از متغیرثابت آیا تاثیری در برنامه میگذارد
با سلام
بله در صورت ثابت شدن دیگر امکان تغییر مقادیر آن ها در طول برنامه وجود ندارد.
سلام مهندس عزیز اگردر برنامه مقدار متغیر را عوض کنیم ارور میگیریم؟ مثلا سنسور از یک جایی بع بعد از عدد ۴۰ درجه به بالا حساب شود.
با سلام
خیر ارور دریافت نمیکنید و قابل تغییر است.
سلام
بین کانستنت ها و متغیرها کدام را در کد پیشنهاد میکنید؟؟؟؟
با سلام
سوال شما بسیار کلی است. این مورد وابسته به نیاز شما در پروژه دارد. دقت داشته باشید در صورت استفاده از ثابت ها امکان تغییر آن ها در طول برنامه وجود ندارد.
سلام و درود به تیم دیجی اسپارک
مثال هایی که برای تفهیم متغیر و ثابت زده شده است، در روند یادگیری و درک عمیق فوق العاده است. بابت انتشار آموزش های با کیفیت از شما بی نهایت ممنونم
با سلام
کاربر گرامی ضمن تشکر از همراهی شما
امیدوارم آموزش ها مفید واقع شده باشد.
میشه همزمان داده ها رو ثابت و متغیر تعریف کرد؟
با سلام
در یک کد بله میتوانید این روش را تست کنید اما از تکراری نبودن متغیرها اطمینان داشته باشید.
با سلام
آیا امکان تغییر در ثابت نیست چون ارور دارم
با سلام
خیر همانطور که در متن آموزش نوشته شده است، نمیتوانید ثابت ها را تغییر دهید.
با سلام
تفاوت #define و const جیست؟
با سلام
#define جز دستورات پیش پردازنده است و const هم مقدار آن نمیتواند در طول برنامه تغییر کند.
ممنون برای انتشار این آموزش
با سلام
سپاس از همراهی شما کاربر گرامی
سلام
برای نوشتن تابع ثابت اولویت با کدام مدل است>
با سلام
کاربر گرامی در این خصوص این مورد فاقد اهمیت است اما در صورتی که بخواهید از رشته string استفاه کنید از define برای معرفی string استفاده کنید.
سلام خسته نباشید
آموزش های مقدماتی کامل و جذابه
ممنونم
سپاس از همراهی شما
سلام.. من اگر بخوام که تابع delay که تعریف میکنم برحسب مقدار متغیرم در هر بار حلقه مقدارش تغییر کنه اینو چجوری میتونم تعریف کنم؟؟
با سلام
سوال شما شفاف نیست.