ساختار کد دستور
در برنامه نویسی آردوینو، متغییر رشته کاراکتری char به روشهای زیر تعریف میشود:
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";
نحوه عملکرد رشته char
عملکرد رشته های کاراکتری متغییر char در آردوینو به صورت زیر است:
- مانند Str1 میتوانید یک آرایه کاراکتری (char) را بدون مقداردهی اولیه اعلان کنید.
- مانند Str2 میتوانید یک آرایه کاراکتری را با یک کاراکتر اضافی اعلام کنید. کامپایلر به صورت پیشفرض کاراکتر تهی لازم را اضافه میکند.
- مانند Str3 خودتان میتوانید کاراکتر تهی را اضافه کنید.
- مانند Str4 میتوانید برای مقداردهی از یک رشته ثابت قرار گرفته در کوتیشن استفاده کنید. کامپایلر به صورت خودکار اندازه آرایه را مشخص میکند و یک کاراکتر تهی در انتهای آن قرار می دهد.
- مانند Str5 اندازه را از قبل مشخص کردهایم و با رشته ثابت آن را مقدار دهی کردهایم.
- مانند Str6 آرایه را مقدار دهی کردهایم. همچنین یک فضای اضافی برای رشته بزرگتر در نظر گرفتهایم.
استفاده از ترمینیشن NULL
به صورت کلی رشتهها را با یک کاراکتر تهی (نال) به پایان میرسانیم و این کار با استفاده از کد اسکی 0 صورت میگیرد. زمانی که از توابعی مثل Serial.print() استفاده میکنیم، لازم است پایان آن را تشخیص دهیم و این با استفاده از ترمینیشن نال تعیین میشود.
در صورتی که کاراکتر تهی در انتهای رشته قرار نگیرد، بایت های بعدی حافظه که بخشی از رشته نیستند هم خوانده خواهد شد. این یعنی باید به اندازه یک کاراکتر اضافی در حافظه، برای رشتهها فضای خالی در نظر گرفته شود.
به همین خاطر با وجود این که “arduino” هفت کاراکتر دارد، در Str2 و Str5 هشت کاراکتر در نظر گرفته شده است.
قسمت آخر به صورت پیشفرض با یک کاراکتر تهی (Null) پر میشود. در Str4 هشت کاراکتر را در نظر گرفتیم که یکی از آنها برای کاراکتر تهی در نظر گرفته شده است. همچنین در Str3 کاراکتر تهی یعنی ‘\0’ را به صورت دستی مشخص کردهایم.
گاهی اوقات ممکن است یک رشته بدون کاراکتر تهی (در انتهای آن) ایجاد کرده باشید. به عنوان مثال کافی است در Str2 به جای هشت، هفت را وارد کنید. از آنجایی که این تابع با رشته سروکار دارد، عملکرد درستی نخواهد داشت و حتی ممکن است متوقف شود.
در برنامه نویسی به هیچوجه از روی عمد این کار را انجام ندهید و در صورتی که متوجه رفتار عجیب یا یک اتفاق غیرمنتظره در برنامه شدید، این موضوع را مورد بررسی قرار دهید. (مثلا ممکن است کاراکترهایی را مشاهده کنید که نباید در برنامه وجود داشته باشد).
تک کوتیشین ‘...’ و دابل کوتیشن “...”
همیشه باید رشتهها را با استفاده از دابل کوتیشن و کاراکترها را با استفاده از تک کوتیشین تعریف کنید.
تقسیم کردن رشتههای کاراکتری بلند
مدیریت رشتههای کاراکتری بلند و ذخیره آنها به صورت زیر انجام میشود:
char myString[] = "This is the first line"
" this is the second line"
" etcetera";
آرایهای از رشتهها
زمانی که در آردوینو با حجم زیاد متن سروکار دارید، بهتر است آرایهای از رشته های متغییر char را تنظیم کنید. مثلا زمان راهاندازی نمایشگر LCD در یک پروژه، میتوانید سراغ این آرایهها بروید.
از آنجایی که خود رشتهها نیز یک آرایه هستند، آرایههای رشتهای را میتوان یک آرایه دوبعدی دانست. به این مثال توجه کنید:
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"
};
بعد از مشخص کردن نوع داده، یک ستاره * قرار دادهایم که نشان میدهد این یک آرایه از اشاره گرها است. از آنجایی که نام آرایهها تماما یک اشارهگر هستند، برای ایجاد آرایهای از آرایهها، قراردادن این ستاره * الزامی است. برای استفاده از این آرایهها نیاز نیست اشارهگرها را به خوبی بشناسید اما یادگیری این مبحث به افراد مبتدیان در C++ توصیه میشود.