string در آردوینو

رشته‌های متنی به دو روش نمایش داده می‌شوند: می‌توانید از نوع‌داده‌ی string در آردوینو استفاده کنید که بخشی از هسته‌ی ورژن 0019 است و یا با آرایه‌ای از نوع char که به null ختم می‌شود، رشته را درست کنید. در این صفحه، روش دوم توضیح داده می‌شود. برای مشاهده‌ی توضیحات شیء string در آردوینو، که به شما عملکرد بهتر در ازای حافظه‌ی بیشتر می‌دهد، به صفحه شیء string مراجعه کنید.

مثال‌ها:

همه‌ی مثال‌های زیر، برای تعریف (اعلان) string، معتبر هستند:

 

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

 

راه‌های تعریف string:

– تعریف یک آرایه از نوع char بدون مقداردهی اولیه (Str1). – تعریف یک آرایه از نوع char (با یک جای خالی) که خود کامپایلر کاراکترِ null موردنیاز را اضافه خواهد کرد (Str2). – تعریف یک آرایه از نوع char با افزودن کاراکتر null به‌صراحت در انتها (Str3). -مقداردهی اولیه با یک ثابت رشته‌ای در علامت کوتیشن. کامپایلر اندازه‌ی آرایه را طوری تعیین خواهد کرد که بتواند ثابت رشته‌ای به همراه کاراکتر null را در خود جای دهد (Str4). -مقداردهی اولیه به آرایه با اندازه‌ای مشخص و ثابت رشته‌ای (Str5). -مقداردهی اولیه به آرایه به همراه فضای بیشتر برای رشته‌هایی با طول بیشتر (Str6).

ختم‌ کننده‌ی null

به‌طور‌کلی رشته‌ها به کاراکتر null (کد اسکی 0) ختم می‌شوند. null به توابعی مثل ()Serial.print اعلام می‌کند که انتهای رشته کجاست. وگرنه این نوع توابع بیت‌هایی از حافظه که جز رشته نیستند را نیز خواهند خواند. به دلیل وجود همین کاراکتر null است که رشته‌ها به یک خانه‌ی اضافی، علاوه بر طول مقدارشان، برای ذخیره null نیاز خواهند داشت. به همین خاطر است که گرچه “arduino” هفت کاراکتر است اما Str2 و Str5 باید 8 کاراکتری باشند (خانه‌ی آخر رشته به‌صورت خودکار با null پر خواهد شد). اندازه‌ی Str4 نیز خودکار 8 کاراکتر خواهد شد؛ یکی اضافه‌تر برای ذخیره‌ی null. در Str3 ما خودمان کاراکتر null را صریحاً اضافه کرده‌ایم (با نوشتن ‘\0’). توجه کنید که می‌شود رشته‌ای بدون null ختم‌ کننده داشت (برای مثال اگر طول Str2 را به جای 8 کاراکتر، 7 کاراکتر در نظر بگیرید). اما این‌ کار عملکرد بسیاری از توابعی که با رشته کار می‌کنند را نادرست می‌کند؛ پس نباید  عمداً این کار را انجام داد. اگر متوجه رفتاری عجیب (هنگام عملیات روی کاراکترها، نه رشته‌ها) شدید، ممکن است علت، همین کار باشد.

تک کوتیشن یا دابل کوتیشن؟

رشته‌ها همیشه درون دابل کوتیشن (“abc”) و کاراکترها همیشه درون تک کوتیشن (‘a’) تعریف می‌شوند.

شکستن و ذخیره‌ی رشته‌های طولانی

می‌توانیم رشته‌های طولانی را با این روش بشکنیم و ذخیره کنیم:

 

char myString[] = "This is the first line"
" this is the second line"
" etcetera";

 

آرایه‌ای از رشته‌ها:

هنگام کار با برنامه‌هایی که دارای حجم زیادی از متن هستند (مانند پروژه‌ با نمایشگر LCD)، معمولا راحت است که آرایه‌ای از رشته را تعریف کنیم. از آنجا که رشته‌ها خود آرایه هستند، این کار در واقع مثالی از آرایه‌های دو بعدی است. در کد زیر (*char)، علامت * بعد از نوع‌داده‌ی char، نشان‌دهنده‌ی این است که این، آرایه‌ای از اشاره‌گرها است. تمامی نامِ آرایه‌ها در واقع اشاره‌گر هستند؛ پس برای ساخت آرایه‌ای از آرایه‌ها، این کار لازم است. مبحث اشاره‌گرها برای مبتدیان در زبان C، کمی مبهم و سخت است؛ اما در اینجا برای استفاده‌ی موثر از اشاره‌گرها، نیازی به فهم دقیق آن‌ها نیست.

مثال:

 

char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i = 0; i < 6; i++){
Serial.println(myStrings[i]);
delay(500);
}
}

اشاره‌گر در آردوینو

 

منبع

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

نویسنده و طراح الکترونیکا هستم . سوالی داشتید در کامنت ها یا پیج های اینستاگرام و تلگرام سایت بپرسید .