تا زمانیکه تفاوت بین داده ها را ندانید، بزرگ ترین اشتباهات و در حین حال ساده ترین اشتباهات را رقم خواهید زد. داده یا دیتا نقش اساسی را در برنامه نویسی ایفا میکند. دیتا وارد سیستم شده،پردازش شده و سپس استخراج میشود. بسیاری از سنسورهای مورد استفاده در آردوینو وابسته به تعریف نوع صحیح داده هستند. در این آموزش اتواع داده ها را با یکدیگر بررسی خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
معرفی انواع داده
در برنامهنویسی C++، نوع داده یا data type به شیوهای که دادهها در حافظه نگهداری میشوند و انجام عملیات مختلف بر روی آنها تعیین میکند، مشخص میشود. نوع داده تعیین میکند که چه نوع مقادیر میتواند در یک متغیر یا شیء نگهداری شود و چه عملیاتهایی بر روی آن انجام شود. C++ دارای یک مجموعه گستردهای از نوعهای داده از جمله اعداد صحیح (integers)، اعداد حقیقی (floating-point)، رشتهها (strings)، بولین (booleans) و غیره است. همچنین، C++ اجازه میدهد تا نوعهای داده سفارشی با استفاده از struct یا class تعریف شوند که به برنامهنویس این امکان را میدهد تا نوعهای داده خود را با ویژگیها و عملکردهای دلخواه تعریف کند.
در C++، میتوانید از نوعهای داده پیشفرض استفاده کنید یا نوعهای داده سفارشی خود را تعریف کنید.نوع داده int برای اعداد صحیح استفاده میشود.نوع داده double برای اعداد حقیقی از جمله اعداد اعشاری استفاده میشود.نوع داده bool برای مقادیر منطقی مانند صحیح و غلط استفاده میشود.نوع داده char برای نمایش کاراکترها استفاده میشود.نوع داده string برای نمایش رشتههای متنی استفاده میشود.
داده Data، بخش اصلی یک برنامه نویسی است. تمامی دیتاهای دریافتی از سنسورها زمانی معنا پیدا میکند که نوع داده مشخص شده باشد. در طول برنامه نویسی داده ماهیت خودش را حفظ کرده و امکان تغییر وجود ندارد. شش داده ی اصلی که با آن ها مداوم در ارتباط هستیم، به صورت زیر است. به ضورت کلی دیتا تایپ همان نوع دیتا است که رنج دیتا، سایز حاففظه مورد نیاز برای دیتا، نوع عملکردی که بتوان بر روی آن دیتا انجام داد را مشخص میکند.
- char
- int
- float
- double
- void
- bool
- داده char برای ذخیرهی داده های کاراکتری مانند a,b,c,d,e,f,g,h استفاده میشود.
- داده int برای ذخیرهی اعداد صحیح مانند ۱,۲,۳,۴,۵ …. استفاده میشود.
- داده float برای ذخیرهی اعداد اعشاری مانند ۱٫۲, ۲٫۳, ۲٫۹۸, ۳٫۹۸ استفاده میشود.
- داده double برای ذخیره اعداد اعشاری بزرگتر از float استفاده میشود.
- داده bool برای ذخیره مقادیر منطقی مانند True, False استفاده میشود.
چه زمانی از علامت ها استفاده کنیم؟
استفاده از signed, unsigned, long,short داده های جدیدی را برای ما تولید میکند.
- از signed, short, long, unsigned برای int میتوانید استفاده کنید.
- از signed, unsigned برای char میتوانید استفاده کنید.
- از long برای double میتوانید استفاده کنید.
فراخوانی داده void
از void منحصرا برای استفاده در function میباشد. در زبان برنامهنویسی C++، دیتا تایپ void به معنای عدم بازگشت مقدار از یک تابع (توابع) استفاده میشود. این به این معنی است که تابع با void به عنوان نوع بازگشتی نمیتواند مقداری به خروجی برگرداند. این نوع از توابع به عنوان توابع “بدون بازگشت” (void functions) شناخته میشوند و برای انجام عملیاتهایی که نیاز به بازگشت مقدار ندارند، مورد استفاده قرار میگیرند. در مثال بالا، تابع printHello از نوع void است، بنابراین نمیتواند مقداری به عنوان خروجی بازگرداند و فقط یک پیام را به خروجی چاپ میکند. توابع void برای انجام عملیاتهایی که فقط نیاز به انجام یک عملیات و نه بازگشت مقدار دارند، مورد استفاده قرار میگیرند.
Void Loop ( ) { // rest of the code }
void setup() { Serial.begin(9600); } void loop()
فراخوانی دیتا تایپ داده Boolean
داده Boolean دو ارزش را در خود نگهداری میکند. True, False، هر متغیر بولین یک بایت حافظه را اشغال می کند. در C++، داده boolean (بولین) به منظور نمایش مقادیر منطقی یعنی صحیح (true) و غلط (false) استفاده میشود. این نوع داده تنها دو مقدار ممکن دارد: true و false، و برای انجام عملیات منطقی مانند عملیات شرطی (conditional) و کنترل جریان برنامه (flow control) بسیار مفید است.برای تعریف متغیرهای بولین در C++، میتوانید از کلمهکلیدی bool استفاده کنید. به عنوان مثال:
bool isTrue = true;
bool isFalse = false;
boolean val = false ; // boolean state = true ; //
مثال با کد آردوینو Arduino به شرح زیر است:
int LEDpin = 5; int switchPin = 13; boolean running = false; void setup() { pinMode(LEDpin, OUTPUT); pinMode(switchPin, INPUT); digitalWrite(switchPin, HIGH); // فعال کردن مقاومت پول آپ } void loop() { if (digitalRead(switchPin) == LOW) { delay(100); running = !running; // toggle running variable digitalWrite(LEDpin, running); } }
فراخوانی دیتا تایپ داده char
روش فراخوانی داده char که برای ذخیره ی داده های کاراکتری است، به صورت زیر است. داده char هشت بیتی و بازه قابل قبول – ۱۲۷ تا ۱۲۷ است.دیتا تایپ char در C++ برای نمایش یک کاراکتر (حرف یا عدد یک رقمی) استفاده میشود. این دیتا تایپ از یک بایت حافظه تشکیل شده و برای ذخیره کاراکترها از جمله حروف الفبا، اعداد، نمادها و حتی کاراکترهای خاص مانند ‘\n’ برای تعیین علائم ویژه استفاده میشود.برای تعریف متغیرهای دیتا تایپ char در C++، میتوانید از کلمهکلیدی char استفاده کنید. به عنوان مثال:
char myChar = ‘A’; // تعریف یک متغیر char با مقدار ‘A’
’Char parisa = ‘a ; Char parisa = 100 ;
فراخوانی دیتا تایپ داده int
از این داده برای اعداد استفاده میشود. این داده ۱۶ یا ۳۲ بیتی است و بازه قابل قبول -۳۲۷۶۷ تا ۳۲۷۶۷ است.دیتا تایپ int در C++ برای نمایش اعداد صحیح (integer) استفاده میشود. این دیتا تایپ از یک مقدار عدد صحیح به صورت دودویی در حافظه استفاده میکند و اعداد مثبت و منفی را نمایش میدهد.برای تعریف متغیرهای دیتا تایپ int در C++، میتوانید از کلمهکلیدی int استفاده کنید. به عنوان مثال:
int myInteger = 42; // تعریف یک متغیر int با مقدار ۴۲
در این مثال، متغیر myInteger یک عدد صحیح با مقدار ۴۲ را نمایش میدهد.در C++، اندازه دقیق دیتا تایپ int بستگی به سیستم مورد استفاده دارد، اما ۴ بایت (۳۲ بیت) است. این به این معناست که میتوانید اعداد صحیح در محدوده -۲,۱۴۷,۴۸۳,۶۴۸ تا ۲,۱۴۷,۴۸۳,۶۴۷ (برای int با علامت) یا ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵ (برای unsigned int) را در یک متغیر int ذخیره کنید، بسته به اینکه آیا میخواهید مقادیر منفی را نمایش دهید یا خیر.از دیتا تایپ int برای انجام عملیات ریاضی معمولی مانند افزایش، کاهش، جمع، تفریق و ضرب استفاده میشود، و این دیتا تایپ بسیار پرکاربرد در برنامهنویسی C++ و سایر زبانهای برنامهنویسی است.
int parisa = 123;
نمونه برنامه برای تست داده int
int countplus = 0; //ساخت یک متغیر برحسب داده int void setup() { Serial.begin(9600); //استفاده از سریال مانیتور برای نمایش اعداد } void loop() { countplus++; //متغیر افزایشی برای شمارش اعداد Serial.println(countplus); // نمایش مقادیر متغیر در سریال مانیتور delay(1000); }
فراخوانی دیتا تایپ داده float
بیشتری کاربرد این داده، برای نمایش اعداد اعشاری است. این داده ۳۲ بیتی است و بازه قابل قبول به صورت ۷ رقم دقت ( ارقام بعد از اعشار) به صورت تقریبی ۱۰-۳۸ تا ۱۰۳۸ است.دیتا تایپ float در C++ برای نمایش اعداد حقیقی با اعداد اعشاری (floating-point numbers) استفاده میشود. این دیتا تایپ برای ذخیره کردن اعدادی که شامل اعشار هستند و یا بزرگتر از حداکثر مقدار دیتا تایپ int هستند مناسب است.برای فراخوانی یک متغیر با دیتا تایپ float در C++، شما از کلمهکلیدی float استفاده میکنید. به عنوان مثال:
float myFloat = 3.14; // تعریف یک متغیر float با مقدار ۳٫۱۴
در این مثال، متغیر myFloat یک عدد حقیقی (floating-point number) با مقدار ۳٫۱۴ را نمایش میدهد.در دیتا تایپ float، عدد ممکن است دارای اعشار باشد و دقت ممکن است در مقایسه با دیتا تایپهای دقیقتر مانند double کمتر باشد. اندازه این دیتا تایپ ۴ بایت است. میتوانید عملیاتهای ریاضی مانند جمع، تفریق، ضرب و تقسیم را بر روی متغیرهای دیتا تایپ float انجام دهید.
flaot parisa = 5.5789
تست برنامه با داده flaot
float countplus = 2.36; //ساخت متغیر بر واحد داده float void setup() { Serial.begin(9600); //استفاده از سریال مانیتور برای نمایش اعداد } void loop() { countplus++; //متغیر افزایشی برای شمارش اعداد Serial.println(countplus); // نمایش مقادیر متغیر در سریال مانیتور delay(1000); }
فراخوانی دیتا تایپ داده double
داده double برای ذخیره اعداد اعشاری بزرگتر از float استفاده میشود. داده double 64 بیتی و بازه قابل قبول ۱۵ رقم دقت ( تقریبا ۱۰-۳۰۸ تا ۱۰۳۰۸ ) است.دیتا تایپ double در C++ همچنان برای نمایش اعداد حقیقی با اعداد اعشاری (floating-point numbers) استفاده میشود، اما دقت بیشتری نسبت به float دارد. این دیتا تایپ برای ذخیره کردن اعدادی که نیاز به دقت بیشتری دارند یا مقادیر اعشاری دقیقتری را نمایش میدهند مناسب است.برای فراخوانی یک متغیر با دیتا تایپ double در C++، شما از کلمهکلیدی double استفاده میکنید. به عنوان مثال:
double myDouble = 3.14159265359; // تعریف یک متغیر double با مقدار عدد پی (π) تا ۱۰ رقم اعشار
در این مثال، متغیر myDouble یک عدد حقیقی (floating-point number) با مقدار تقریبی عدد پی (π) تا ۱۰ رقم اعشار را نمایش میدهد.در دیتا تایپ double، دقت بیشتری نسبت به float وجود دارد و اندازه این دیتا تایپ معمولاً ۸ بایت (۶۴ بیت) است. بنابراین، میتوانید اعداد با دقت بیشتری را ذخیره کرده و عملیاتهای ریاضی با دقت بالاتری انجام دهید.
double parisa = 45.665;
فراخوانی دیتا تایپ داده long
از این داده برای ذخیره سازی اعداد در بازه ی گسترده تری استفاده میشود. این داده ۳۲ بیتی و بازه قابل قبول بین -۲۱۴۷۴۸۳۶۴۷ تا ۲۱۴۷۴۸۳۶۴۷ است.دیتا تایپ long در C++ برای نمایش اعداد صحیح با اندازهای بزرگتر از int استفاده میشود. این دیتا تایپ معمولاً از ۴ بایت (۳۲ بیت) برای نمایش اعداد صحیح استفاده میکند، اما اندازه آن ممکن است بستگی به سیستم مورد استفاده داشته باشد.برای تعریف متغیرهای دیتا تایپ long در C++، شما از کلمهکلیدی long استفاده میکنید. به عنوان مثال:
long myLong = 1234567890L; // تعریف یک متغیر long با مقدار ۱۲۳۴۵۶۷۸۹۰
در این مثال، متغیر myLong یک عدد صحیح با مقدار ۱۲۳۴۵۶۷۸۹۰ را نمایش میدهد. توجه داشته باشید که ما پسوند L را به عدد اضافه کردهایم تا به کامپایلر نشان دهیم که این مقدار به عنوان یک long تشخیص داده شود.در مقابل، اگر شما نیاز به نمایش اعداد صحیح بسیار بزرگتر دارید که خارج از محدوده long قرار دارند، میتوانید از دیتا تایپ long long استفاده کنید. در C++11 و نسخههای بعدی، شما میتوانید از long long استفاده کنید که اندازه آن حدود ۸ بایت (۶۴ بیت) است.
long long myVeryLong = 1234567890123456789LL; // تعریف یک متغیر long long با مقدار بسیار بزرگ
long speedOfLight_km_s = 300000L;
فراخوانی دیتا تایپ داده unsigned long
همانند long برای ذخیره ی اعداد در بازه ی بیشتر از long استفاده میشود و اعداد منفی را شامل نمیشود. بازه قابل قبول تا +۴,۲۹۴,۹۶۷,۲۹۵ است.
unsigned long time; void setup() { Serial.begin(9600); } void loop() { Serial.print("Time: "); time = millis(); //prints time since program started Serial.println(time); // wait a second so as not to send massive amounts of data delay(1000); }
منظور از signed و unsigned چیست
در زبانهای برنامهنویسی مانند C++، signed و unsigned نشاندهنده نوع اعداد صحیح (integer) هستند و به تعیین محدوده مقادیری که یک متغیر میتواند نگه دارد اشاره دارند.
- signed (با علامت): این مفهوم نشاندهنده این است که یک متغیر میتواند مقادیر مثبت، منفی و صفر را نگه دارد. به عبارت دیگر، میتواند اعداد مثبت، منفی و صفر را نمایش دهد. برای متغیرهای دیتا تایپهای int و long و غیره، به صورت پیشفرض signed هستند. به عنوان مثال:
signed int myInt = -5; // myInt میتواند مقدار منفی نگه دارد
- unsigned (بدون علامت): این مفهوم نشاندهنده این است که یک متغیر تنها میتواند مقادیر مثبت و صفر را نگه دارد. به عبارت دیگر، اعداد منفی را نمیتواند نمایش دهد. متغیرهای unsigned بیشتر در مواردی مورد استفاده قرار میگیرند که مقادیر منهایی معنی ندارند و اعداد مثبت به تنهایی کافی هستند. به عنوان مثال:
unsigned int myUnsignedInt = 10; // myUnsignedInt تنها مقدار مثبت ۱۰ را نگه میدارد
مهمترین نکته در استفاده از signed و unsigned این است که باید با دقت از آنها استفاده کنید تا مشکلات برنامهنویسی ناشی از ترانهایت (overflow) یا تفسیر مختلف مقادیر را جلوگیری کنید. همچنین، اگر مقداری به عنوان unsigned تعریف شود و شما از آن برای اعداد منفی استفاده کنید، ممکن است نتایج غیرمنتظرهای به دست آورید. بنابراین، در انتخاب بین signed و unsigned، باید محدوده مقادیر مورد نیاز برنامهی خود را در نظر بگیرید.
فراخوانی دیتا تایپ داده Byte
از داده بایت برای ذخیره اعداد بین ۰ تا ۲۵۵ استفاده میشود.در C++، دیتا تایپ مستقل با نام “byte” وجود ندارد. برخی زبانهای برنامهنویسی مانند Java دارای دیتا تایپ “byte” هستند که برای نمایش بایتها (۸ بیت اطلاعات) استفاده میشود. اما در C++، بایتها به طور معمول با استفاده از دیتا تایپهای معمولی مانند char (که ۸ بیت است) نمایش داده میشوند.اگر نیاز به نمایش بایتها در C++ دارید، میتوانید از دیتا تایپ char یا unsigned char استفاده کنید. به عنوان مثال:
بررسی جدول انواع داده و مقادیر قابل قبول
در جدول زیر با انواع داده، اندازه به بیت و بازه قابل قبول هر داده آشنا خواهید شد.
جمع بندی
هدف از برنامه نویسی در آردوینو، دریافت دیتای صحیح از سنسور، پردازش و دریافت گزارش است. پس نقش مهمی را در کد آردوینو برای ما ایفا میکند. در دیتاشیت اغلب سنسورها داده های مجاز برای تعریف در برنامه نوشته شده است اما با توجه به ماهیت هر سنسور، میتوانید نوع داده مناسب برای آن را مشخص کنید. در این آموزش انواع داده، روش فراخوانی و نمونه برنامه اجرا شده برای هر داده آموزش داده شده است و به تسلط نسبی خواهید رسید.
سلام
خیلی کامل بود ممنونم از شما
سپاس از همراهی شما کاربر گرامی
سلام خانم مهندس
آیا امکان استفاده از چندین نوع داده وجود دارد؟
با سلام
بله هیچ مانعی برای استفاده وجود ندارد. اما دقت داشته باشید که اگر داده ای برای یک متغیر تعریف کرده اید در طول برنامه نویسی نوع آن تغییر نکند.
سلام
تفاوت بین دیتا bool , boolean چیه؟
با سلام
هر دو عملکرد یکسانی دارند اما محل ذخیره متفاوت است و boolean فقط آبجکت است .
سلام مهندس بین دیتای int و دیتای byte کدام یک را در کد استفاده کنیم؟
با سلام
داده byte حجم کمتری از حافظه را اشغال میکند و بهتر است از byte استفاده کنید.
سلام خانم مهندس از توضیحات کامل شما ممنونم. آیا نوع داده وریبل ها و دیتا باید مشابه باشد؟
با سلام و سپاس از همراهی شما
بله بایستی نوع داده ها یکسان باشد.
سلام
من از byte به جای int استفاده میکنم و خیلی حجم کمتری از حافظه رو اشغال میکنه
با سلام
کاربر گرامی از اینکه تجربه ی خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.
داده ی لانگ LONG را در چه زمانی هایی میتوانیم استفاده کنیم ممنون میشم پاسخ بدید
با سلام
زمان هایی که از تابع های زمانی و اضافه کردن مدت زمان در کد برنامه میخواهیم استفاده کنیم، نوع داده را long انتخاب کنید.
سلام
چه زمانی باید از داده بولین استفاده کنیم؟
با سلامی زمانی که بخواهید وضعیت یک متغیر را از قبل فعال یا غیرفعال معرفی کنید میتوانید از این نوع داده استفاده کنید.
سلام
من برای یک خروجی ال ای دی در پروژه های مختلف دیدم که از داده های مثل int bool byte استفاده شده است. کدام یک انتخاب صحیح تری است؟
با سلام
این مورد وابسته به نقش خروجی و یا ورودی در برنامه دارد. به عنوان مثال اگر بخواهید ال ای دی به صورت پیشفرض در برنامه LOW or Flase باشد، بایستی از boolean استفاده کنید.
تفاوت byteدر مقایسه با int هم در کمتر اشغال کردن حافظه است.
برای millis چرا از long استفاده شده همه جا؟
با سلام
داده long رنج گسترده ای از اعداد را برای زمان برای ما ذخیره خواهد کرد. جدول را مشاهده کنید.
سلام
اکر از bool یا boolean استفاده کنیم فرقی نداره؟
با سلام
تفاوتی ندارد.
توضیحات شما عالیه
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.
سلام و خسته نباشید
آیا استفاده از داده بایت بر integer الویت دارد؟
با سلام
بله اولویت دارد.
با سلام
آیا نوع داده و متغیرها باید یکسان باشد؟؟
با سلام
بله بایستی یکسان باشد.
سلام
با چه کابلی یک آردوینو را به کامپیوتر وصل کنم؟
با سلام
برای برد آردوینو مدل UNO , MEGA2560 از کابل تایپ B و برای بردهای سری نانو از MICRO USB بایستی استفاده کنید.