آموزش, رفرنس

string در آردوینو

string در آردوینو

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

مثال‌ها:

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

راه‌های تعریف 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’) تعریف می‌شوند.

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

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

 

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

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

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

مثال:

 

 

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

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

5 دیدگاه در “string در آردوینو

  1. Avatar for sajad sajad گفت:

    سلام.
    من یه کدی دارم.
    میخام بگم قبل از ویرگول رو بریز توی متغیر X و بعد از ویرگول رو بریز تو متغیر Y.
    نمیدونم باید چه کدی براش بنویسم اگه راهنمایی کنید ممنون میشم.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خیلی ساده است
      String input = "123;456";
      String firstVal, secondVal;

      for (int i = 0; i < input.length(); i++) { if (input.substring(i, i+1) == ";") { firstVal = input.substring(0, i); secondVal = input.substring(i+1); break; } }

  2. Avatar for sajad sajad گفت:

    سلام خسته نباشید
    من یه کدی دارم میخام بگم مثلا قبل از ویرگول را داخل متغیر x بریز و بعد ویرگول را داخل متغیر y بریز.
    یه راهنمایی میکنید که چطور باید این کارو انجام بدم؟
    ممنون میشم.

  3. Avatar for Cozmo Cozmo گفت:

    سلام
    مشکل چیه که متغیر string تو ide آردوینو ارور میده؟
    نمیشناسه اصلن
    رنگی نمیشه نوع متغیر 🙁

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام
      دوست عزیز ، String رو با اس بزرگ بنویسید مثل زیر
      String 🙂

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *