شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش مبانی برنامه نویسی - رشته ها

در بحث ما دربارهٔ کاراکترها (Characters)، یاد گرفتیم که نوع دادهٔ کاراکتر با یک کاراکتر سروکار دارد و می‌توانید هر کاراکتری را از صفحه کلید خود به متغیر نوع کاراکتر اختصاص دهید.

حال بیایید یکمی پیش برویم و در نظر بگیریم که در یک موقعیت نیاز به ذخیرهٔ بیش از یک کاراکتر در یک متغیر داریم. ما دیدیم که برنامه‌نویسی C اجازه نمی‌دهد بیش از یک کاراکتر در یک متغیر نوع کاراکتر ذخیره شود. بنابراین، این دستورها در برنامه‌نویسی C نامعتبر هستند و خطاهای نحوی ایجاد می‌کنند −

char ch1 = 'ab';
char ch2 = '10';

همچنین دیدیم که چگونه مفهوم آرایه‌ها (Arrays) را برای ذخیرهٔ بیش از یک مقدار از نوع دادهٔ مشابه در یک متغیر استفاده می‌کنیم. اینجا نحوی برای ذخیرهٔ پنج عدد در یک آرایهٔ نوع int و چاپ آن‌ها آمده است −

#include <stdio.h>

main() {
   int number[5] = {10, 20, 30, 40, 50};
   int i = 0;
        
   while( i < 5 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
}

وقتی کد بالا کامپایل و اجرا می‌شود، نتیجهٔ زیر را تولید می‌کند −

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

حالا، همانطور که برای اعداد انجام دادیم، بیایید یک آرایهٔ پنج حرف تعریف کنیم و سعی کنیم آن‌ها را چاپ کنیم −

#include <stdio.h>

main() {
   char ch[5] = {'H', 'e', 'l', 'l', 'o'};
   int i = 0;
        
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

در اینجا از %c برای چاپ مقدار حرف استفاده کردیم. وقتی کد بالا کامپایل و اجرا می‌شود، نتیجهٔ زیر را تولید می‌کند −

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

اگر با مثال بالا کار خود را تمام کرده‌اید، به نظرم متوجه شدید که چگونه رشته‌ها در برنامه‌نویسی C کار می‌کنند، زیرا رشته‌ها در C به عنوان آرایه‌هایی از حروف نمایش داده می‌شوند. برنامه‌نویسی C، تخصیص و چاپ رشته‌ها را ساده کرده است. بیایید با نحو ساده شدهٔ همان مثال، یکبار دیگر بررسی کنیم −

#include <stdio.h>

main() {
   char ch[5] = "Hello";
   int i = 0;
    
   /* Print as a complete string */
   printf("String = %s\n", ch);  

   /* Print character by character */
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

در اینجا ما از %s برای چاپ مقدار رشته کامل با نام آرایه ch استفاده کردیم که در واقع آغاز آدرس حافظه حاوی متغیر ch را نشان می‌دهد که به شکل زیر است −

String Presentation in C/C++

اگرچه در مثال‌های بالا این موضوع قابل مشاهده نیست، اما یک برنامه C داخلیاً کاراکتر null '\0' را به عنوان آخرین کاراکتر هر رشته اختصاص می‌دهد. این کاراکتر نشان دهنده پایان رشته است و اگر می‌خواهید رشته ۵ کاراکتری را در یک آرایه ذخیره کنید، بهتر است یک آرایه با اندازه ۶ را به عنوان یک شیوه‌ی خوب تعریف کنید.

اگر کد بالا کامپایل و اجرا شود، نتیجه زیر تولید می‌شود −

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

مفاهیم ابتدایی رشته ها

با توجه به بحث بالا، می‌توانیم نکات مهم زیر را در مورد رشته ها در زبان برنامه‌نویسی C برداشت کنیم:

  • رشته‌ها در زبان برنامه‌نویسی C به عنوان آرایه‌ای از کاراکترها نشان داده می‌شوند.

  • می‌توانیم با تخصیص کاراکتر به کاراکتر در یک آرایه از کاراکترها، یک رشته در برنامه‌نویسی C ایجاد کنیم.

  • می‌توانیم با تخصیص یک رشته کامل درون یک علامت نقل قول دوتایی، یک رشته در برنامه‌نویسی C ایجاد کنیم.

  • می‌توانیم یک رشته را با استفاده از اندیس آرایه یا با استفاده از نام آرایه بدون اندیس، کاراکتر به کاراکتر چاپ کنیم یا رشته کامل را چاپ کنیم.

  • آخرین کاراکتر هر رشته کاراکتر null، یعنی '\0' است.

  • بیشتر زبان‌های برنامه‌نویسی توابع داخلی برای کار با رشته‌ها فراهم می‌کنند، یعنی می‌توانید رشته‌ها را به یکدیگر اضافه کنید، در یک رشته جستجو کنید، زیررشته‌ها را از یک رشته استخراج کنید و غیره. برای اطلاعات بیشتر، می‌توانید آموزش جامع ما در زبان برنامه‌نویسی C یا هر زبان برنامه‌نویسی دیگر را بررسی کنید.

رشته‌ها در جاوا

اگرچه می‌توانید از آرایه‌های حرفی برای ذخیره رشته‌ها استفاده کنید، اما جاوا یک زبان برنامه‌نویسی پیشرفته است و طراحان آن تلاش کردند تا عملکردهای اضافی را فراهم کنند. جاوا رشته‌ها را به عنوان یک نوع داده‌ای داخلی همانند سایر انواع داده فراهم می‌کند. این بدان معناست که می‌توانید رشته‌ها را مستقیماً تعریف کنید به جای اینکه آن‌ها را به عنوان آرایه از حروف تعریف کنید.

برنامه معادل در جاوا به شکل زیر نوشته شده است. جاوا از اپراتور new برای ایجاد متغیرهای رشته استفاده می‌کند که در برنامه زیر نشان داده شده‌است.

شما می‌توانید برای مشاهده خروجی، این برنامه را اجرا کنید.

public class DemoJava {
   public static void main(String []args) {
      String str = new String("Hello");  
      System.out.println( "String = " + str );
   }
}

پس از اجرای برنامه فوق، نتیجه زیر تولید می شود −

String = Hello

رشته‌ها در پایتون

ایجاد رشته در پایتون به سادگی با اختصاص دادن یک رشته به یک متغیر پایتون با استفاده از نقل قول تکی یا دوتایی انجام می‌شود.

برنامه‌ی ساده‌ی زیر، دو رشته ایجاد می‌کند و آن‌ها را با استفاده از تابع print() چاپ می‌کند −

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1 = ", var1
print "var2 = ", var2

زمانی که برنامه فوق الذکر اجرا می‌شود، خروجی زیر را تولید می‌کند −

var1 =  Hello World!
var2 =  Python Programming

پایتون نوع کاراکتر را پشتیبانی نمی‌کند؛ به عنوان رشته‌هایی با طول یک، تلقی می‌شوند و به عنوان زیررشته نیز در نظر گرفته می‌شوند.

برای دسترسی به زیررشته‌ها، از براکت مربعی برای برش همراه با اندیس‌ها برای به دست آوردن زیررشته استفاده می‌شود. به قطعه کد زیر نگاهی بیندازید −

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

زمانی که کد بالا اجرا می شود، نتیجه زیر را تولید می کند −

var1[0]:  H
var2[1:5]:  ytho