استرینگ در برنامه نویسی چیست ؟ — مفهوم رشته یا String به زبان ساده

ساخت وبلاگ

در این مقاله به طور جامع به این سوال پاسخ داده می‌شود که استرینگ در برنامه نویسی چیست. به طور خلاصه، در برنامه نویسی استرینگ (String) یا همان رشته توالی از کاراکترها است که به عنوان نوعی از متغیرها (Variable) در برنامه نویسی مورد استفاده قرار می‌گیرد. در این مقاله ابتدا به شرح مفهوم استرینگ و انواع نمایش استرینگ‌ها پرداخته می‌شود. سپس، برای درک بهتر استرینگ در برنامه نویسی، نحوه اعلان و پیاده‌سازی آن با استفاده از زبان‌های C، جاوا، پایتون و C++‎ نشان داده شده است.

فهرست مطالب این نوشته

استرینگ در برنامه نویسی چیست ؟

استرینگ در برنامه نویسی آرایه‌ای از کاراکترها به حساب می‌آید. نمای غیر فنی استرینگ یک عبارت یا جمله است. رشته یک نوع داده (Data Typte) در برنامه نویسی به حساب می‌آید که توالی‌ از کاراکترها، کلمات، عبارت‌ها و سایر موارد را تشکیل می‌دهد. رشته‌ها معمولاً برای انتقال اطلاعات از برنامه به کاربر استفاده می‌شوند و بسیار حائز اهمیت هستند، اما برای انتقال اطلاعات از برنامه به کامپیوتر اهمیت کمتری دارند. طول استرینگ در برنامه نویسی ممکن است که تغییر کند و یا حتی پس از ایجاد شدن آن در کدها به متغیری ثابت تبدیل شود.

رشته‌ها مجموعه‌ای از کاراکترها هستند و نیازی نیست که حتما مانند جملات و عبارات معنی خاصی داشته باشند، برای مثال «Hello World» و «LKJH019283» هر دو رشته به حساب می‌آیند. بنابراین باید به این نکته نیز توجه داشت که به جز حروف، اعداد، فاصله (Space) و سایر موارد نیز می‌توانند جزئی از استرینگ‌ها در برنامه نویسی باشند. در ادامه شبه کدی برای چاپ یک رشته نشان داده شده است:

$example = "Example of a string";
print "Example variable = $example";

در مثال فوق، به متغیر example$ مقدار Example of a string اختصاص داده شده است. سپس در خط دوم کدها، Example variable = $example هنگام اجرای اسکریپت چاپ می‌شود.

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

استرینگ در برنامه نویسی اغلب به عنوان یک ساختمان داده پیاده‌سازی می‌شود که آرایه‌ای از بایت‌ها (Byte) است یا کلمات و توالی از عناصر یا کاراکترها را ذخیره می‌کند. این کاراکترها می‌توانند با استفاده از رمزگذاری (Encoding) نیز ذخیره شوند. تخصیص حافظه برای نوع داده استرینگ در برنامه نویسی، بسته به زبان برنامه نویسی و نوع دقیق داده، تفاوت دارد. ممکن است تخصیص حافظه به صورت ایستا (ثابت) با حداکثر طول رشته از پیش تعیین شده مشخص شود یا از تخصیص حافظه پویا برای استرینگ‌ها استفاده شده باشد.

بیشتر داده‌ها در برنامه نویسی از نوع متغیرهای Integer (عدد صحیح)، String و سایر موارد پیچیده‌تر هستند. زبان‌های برنامه نویسی رویکردهای پیچیده‌تری برای توسعه و نمایش این نوع از داده‌ها دارند. برای مثال یک نوع داده پیچیده به صورت آرایه اولین چیزی است که دانشجویان با آن مواجه می‌شوند. آرایه توالی‌ از مجموعه عناصر با یک نوع داده با نامی واحد است.

تعریف جمله قبل مفهوم نوع داده استرینگ را در برنامه نویسی به خوبی بیان می‌کند. ساده‌ترین نوع آرایه به عنوان آرایه یک بعدی (One Dimensional Array) شناخته شده است، همچنین به عنوان یک لیست نیز در نظر گرفته می‌شود زیرا معمولاً اعضا و عناصر در برنامه نویسی به صورت عمودی لیست شده‌اند. با این حال، می‌توان گفت که استرینگ‌ها به عنوان آرایه تک بعدی مصورسازی شده به صورت افقی شناخته می‌شوند. رشته‌ها آرایه‌ای از نوع داده‌های کاراکتری هستند.

رشته در کدنویسی

برای مثال در زبان برنامه نویسی C همه رشته‌ها به صورت آرایه‌ای از کاراکترها هستند که به یک کاراکتر ASCII Null ختم می‌شوند. این رویکرد برنامه نویسان را ملزم به پردازش دستی طول رشته و مدیریت ذخیره‌سازی رشته می‌کند. سر ریز بافر (Buffer Overflow | Buffer Overrun) نوعی ناهنجاری یا استثناء است که در یک برنامه رخ می‌دهد و داده‌ها از مرز در نظر گرفته شده برای بافر بیشتر می‌شوند و در مکان‌های حافظه‌های مجاور بازنویسی می‌شوند.

اکثر زبان‌های برنامه نویسی امروزی رشته‌ها را به عنوان نوع داده یا کلاس ذخیره‌سازی می‌کنند و معمولاً در آن‌ها رشته‌ها آرایه‌ای با طول کنترل شده، هستند. طول و ذخیره‌سازی استرینگ در برنامه نویسی به وسیله کامپایلر (Compiler) یا مفسر (Interpreter) مدیریت می‌شود و خطاهای برنامه را کاهش می‌دهد. در جدول زیر برخی از زبان‌های برنامه نویسی همراه با کلمه کلیدی آن‌ها برای تعریف استرینگ مشخص شده است:

زبان برنامه نویسیکلمه کلیدی برای تعریف استرینگ
++Cstring
#CString
جاواString
جاوا اسکریپت (JavaScript)String
پایتون()str
سوئیفت (Swift)String

بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به انواع داده‌های String در برنامه نویسی اختصاص داده شده است.

نوع داده استرینگ در برنامه نویسی چیست ؟

نوع داده استرینگ ( String Data Type)، نوع داده‌ای است که بر اساس مفهوم توالی ساختار یافته ایجاد شده است. رشته‌ها در برنامه نویسی فرمی از داده‌های مؤثر و ضروری هستند که تقریباً در همه زبان‌های برنامه نویسی وجود دارند. استرینگ‌ها در برخی از زبان‌های برنامه نویسی به عنوان نوع داده اصلی شناخته می‌شوند و در برخی دیگر به عنوان نوع داده ترکیبی در نظر گرفته می‌شوند.

ساختار بسیاری از زبان‌های سطح بالا (High-Level) این امکان را به وجود می‌آورد که رخداد یک نوع داده استرینگ به وسیله استرینگی تفسیر شود که معمولاً به صورت خاصی به آن ارجاع داده می‌شود. به چنین فرارشته‌ای یک رشته نمادین یا لفظی (لیترال | Literal) می‌گویند.

طول استرینگ در برنامه نویسی چیست ؟

ممکن است رشته‌های ساختار یافته در زبان‌های برنامه نویسی طول ثابتی داشته باشند، اما معمولاً قوانین زبان‌‌های برنامه نویسی اندازه استرینگ را به یک مقدار بیشینه موهومی محدود می‌کنند. علاوه بر این دو نوع داده استرینگ وجود دارد که در ادامه شرح داده شده‌اند:

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

استرینگ‌های با طول برابر با متغیرها در برخی زبان‌های برنامه نویسی انبوهی از توالی‌ها به حساب می‌آیند. اگرچه رشته‌هایی با طول متغیر نیز می‌توانند از نظر اندازه توسط حافظه قابل استفاده در برنامه محدود شوند. همچنین، طول استرینگ را می‌توان به عنوان یک عدد صحیح متفاوت پردازش کرد. در بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به بررسی مفهوم رمزگذاری کاراکترها (Character Encoding) پرداخته شده است.

رمزگذاری کاراکترها برای استرینگ در برنامه نویسی چیست ؟

به طور پیش‌فرض برای نوع داده استرینگ در برنامه نویسی برای هر کاراکتر یک بایت در نظر گرفته می‌شود. این در حالی است که کاراکترهای واقعی بر اساس نوع آن‌ها به فضاهای ذخیره‌سازی مختلفی نیاز دارند. برای مثال کاراکترهای فریم زمان، ذخیره‌سازی و ویرگول در یک مکان مشابه در همه کاراکترهای یونیکد (Unicode) ممکن است وجود داشته باشند. این نوع از کاراکترها بر اساس ASCII یا EBCDIC هستند. هنگامی که یک پیام از اصول رمزگذاری در فرآیند استفاده می‌کند، معمولاً پیام تغییر شکل می‌‌دهد. برخی از کاربران می‌توانند این نوع از پیام‌های تغییر شده داده را بخوانند. یونیکد یک نوع تصویر فشرده شده است.

خیلی از زبان‌های برنامه نویسی دارای نوع داده یونیکد هستند. در اکثر زبان‌های برنامه نویسی مدل مرجع انتخاب شده از یونیکد «UTF-8» در نظر گرفته می‌شود که مسائل بیان شده قبلی را برای کاراکترهای چند بایتی قدیمی یونیکد نداشته باشد. یونیکدهای UTF-8 ،UTF-16 و UTF-32 به توسعه دهندگان این قابلیت را می‌دهند که متوجه شوند تقسیم‌بندی‌های فضای برنامه با طو‌ل‌های از پیش تعریف شده برای کاراکترها متفاوت است. با این حال، مسئله اصلی ضعف APIهایی است که برای پوشش این وجه تمایز مورد استفاده قرار می‌گیرند. یعنی نوع داده رشته به گونه‌ای در هر مؤلفه ساختمان داده آرایه ذخیره شود که گویی اندازه همه کاراکترها یکسان است. بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به پیاده‌سازی استرینگ در برنامه نویسی اختصاص داده شده است.

پیاده سازی استرینگ در برنامه نویسی چگونه است ؟

در بسیاری از زبان‌های برنامه نویسی از جمله روبی (Ruby) و ++C مؤلفه‌های استرینگ بعد از توسعه می‌توانند مجدداً بروزرسانی شوند، به این نوع از رشته‌ها، رشته‌های «تغییرپذیر» (Mutable) گفته می‌شود. اگر مقداری که در برخی از زبان‌های برنامه نویسی دیگر مانند جاوا و پایتون به استرینگ تعلق می‌گیرد تغییر پیدا کند، باید یک استرینگ جدید ایجاد شود و به این نوع از استرینگ در برنامه نویسی «توالی‌های پایدار» (Permanent Sequence) گفته می‌شود. برخی از انواع دیگر پیاده‌سازی‌های قابل تغییر در رشته‌ها شامل استفاده از کلاس «StringBuilder» در جاوا و دات نت (NET.)، تابع Thread Safe در String Buffer جاوا و رشته قابل تغییر Cocoa NS هستند.

معمولاً String‌ها در برنامه نویسی به عنوان توالی‌ از بایت‌ها، کاراکترها یا کدها پیکربندی می‌شوند تا امکان دسترسی آسان برای جدا کردن گروه‌ها یا زیر رشته‌ها در آن‌ها فراهم شود. فقط در صورتی که کاراکترهای رشته دارای اندازه محدودی باشند این اتفاق نمی‌افتد. همچنین، برخی از زبان‌های برنامه نویسی مانند هسکل (Haskell) استرینگ‌ها را به عنوان پایگاه داده‌های رابطه‌ای (Relational Database) در نظر می‌گیرند. در بخش بعدی این مقاله به شرح نمایش استرینگ در برنامه نویسی پرداخته شده است.

نمایش استرینگ در برنامه نویسی چگونه است؟

نمایش String در برنامه نویسی به روشی برای نوشتن، ایجاد و نشان دادن رشته‌ها در برنامه گفته می‌شود که در هر زبان برنامه نویسی می‌تواند به صورت متفاوتی انجام شود. نمایش استرینگ به در دسترس بودن مجموعه متن‌ها و سیستم‌های رمزگذاری مرسوم در هر زبان برنامه نویسی وابسته است. پیاده‌سازی‌های قبلی استرینگ‌ها به گونه‌ای طراحی شده بودند که بتوانند با رمزگذاری‌ها و کاتالوگ‌های تعریف شده به صورت اسکی یا با به‌هنگام‌سازی‌های جدیدتری مثل توالی ISO 8859 کار کنند.

یونیکد در زمینه استرینگ‌ها همراه با مجموعه بزرگی از روش‌های ضروری مانند UTF-8 و UTF-16، در قابلیت‌های پیشرفته استفاده می‌شود. رشته‌های بایتی نشان می‌دهند که بایت‌ها ممکن است هر ورودی را بپذیرند، بنابراین هر اطلاعاتی را حفظ می‌کنند. در ادامه به بررسی برخی از انواع نمایش‌های استرینگ در برنامه نویسی پرداخته می‌شود. ابتدا در بخش بعدی پس از معرفی فیلم‌های آموزش برنامه نویسی فرادرس، روش نمایش استرینگ در برنامه نویسی به صورت منتهی به بیت و بایت (Bit And Byte Terminated) شرح داده شده است.

نمایش استرینگ در برنامه نویسی چگونه است؟

در بخش بعدی مقاله، مجموعه دوره‌های آموزش برنامه نویسی فرادرس به علاقه‌مندان معرفی می‌شوند.

معرفی فیلم های آموزش برنامه نویسی فرادرس

معرفی فیلم های آموزش برنامه نویسی فرادرس

دوره‌های آموزشی فرادرس بر اساس موضوع به صورت مجموعه‌های آموزشی گوناگونی دسته‌بندی می‌شوند. یکی از این مجموعه‌های جامع مربوط به آموزش‌های انواع زبان‌های برنامه نویسی مختلف است. علاقه‌مندان می‌توانند برای یادگیری بیشتر استرینگ در برنامه نویسی و زبان‌های گوناگون، از این مجموعه آموزشی فرادرس استفاده کنند. در زمان تدوین این مقاله، مجموعه دوره‌های برنامه نویسی فرادرس حاوی بیش از ۴۵۲ ساعت محتوای ویدیویی و حدود ۵۰ عنوان آموزشی مختلف است. در ادامه، برخی از دوره‌های این مجموعه به طور خلاصه معرفی می‌شوند:

  • فیلم آموزش برنامه نویسی جاوا Java (طول مدت: 19 ساعت و 19 دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): این دوره آموزشی به آموزندگانی پیشنهاد می‌شود که قصد یادگیری زبان برنامه نویسی جاوا را از پایه و به صورت جامع داشته باشند. برای مشاهده فیلم آموزش برنامه نویسی جاوا Java + کلیک کنید.
  • فیلم آموزش برنامه نویسی C (طول مدت: ۱۳ ساعت و ۳۰ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این فرادرس، زبان برنامه نویسی C همراه با مفاهیم آن و به صورت عملی آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C + کلیک کنید.
  • فیلم آموزش برنامه نویسی پایتون Python – مقدماتی (طول مدت: ۱۹ ساعت و ۵۳ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این فرادرس، زبان پایتون از پایه‌ای‌ترین مفاهیم مانند انواع داده‌های آن آموزش داده شده است و تا جایی که امکان داشته همه مباحث مقدماتی مورد نیاز برای این زبان برنامه نویسی پوشش داده شده‌اند. برای مشاهده فیلم آموزش برنامه نویسی پایتون Python – مقدماتی + کلیک کنید.
  • فیلم آموزش برنامه نویسی متلب MATLAB (طول مدت: ۸ ساعت و ۵۸ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این دوره آموزشی، علاقه‌مندان و دانشجویان، مفاهیم گوناگون برنامه نویسی متلب را به طور جامع می‌آموزند. جهت مشاهده فیلم آموزش برنامه نویسی متلب MATLAB + کلیک کنید.
  • فیلم آموزش جاوا اسکریپت JavaScript (طول مدت: ۹ ساعت و ۸ دقیقه، مدرس: محمد عبداللهی):  این دوره آموزشی به علاقه‌مندانی پیشنهاد شده است که قصد یادگیری زبان برنامه نویسی جاوا اسکریپت را به طور جامع دارند. برای مشاهده فیلم آموزش جاوا اسکریپت + کلیک کنید.
  • فیلم آموزش برنامه نویسی C++‎ سی پلاس پلاس (طول مدت: ۲۰ ساعت و ۱۴ دقیقه، مدرس: دکتر فرشید شیرافکن): در این فرادرس، زبان برنامه نویسیC++ ‎ در دو بخش و از پایه آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C++‎ سی پلاس پلاس + کلیک کنید.

حال، در بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به بررسی نمایش استرینگ در برنامه نویسی به صورت منتهی به بیت و بایت پرداخته می‌شود.

نمایش استرینگ در برنامه نویسی به صورت منتهی به بیت و بایت چیست؟

در برخی از نرم افزارها و سخت افزارهای کامپیوتر، استفاده از یک بایت مستقل غیر صفر برای پایان دادن به رشته وجود دارد. برخی از سیستم‌های تعبیه شده از نماد «$» برای نشان دادن این بخش استفاده می‌کنند. سیستم‌های CDC یا همان «Control Data Corporation» دارای کاراکتر با مقدار صفر هستند و در این نوع از نمایش استفاده می‌شوند. همچنین، سیستم‌های ZX80 نیز در این نمایش مناسب هستند زیرا زیر رشته توالی‌ در زبان «BASIC» ماشین دارند.

دستگاه‌های پردازش داده (Data Processing) از جمله IBM 1401 از یک بیت سرنام جدید برای معین کردن رشته‌ها در سمت چپ استفاده می‌کنند. در بیشتر بخش‌های توالی این بیت باید به صورت صریح وجود داشته باشد. در بخش بعدی مقاله «استرینگ در برنامه نویسی» به نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی (Null Terminated) پرداخته شده است.

نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی چیست؟

با استفاده از یک کلمه خاص، توالی استرینگ در برنامه نویسی را می‌توان به صورت ضمنی رمزگذاری کرد. این کاراکتر همیشه دارای ارزش صفر یا تهی است یعنی همه بیت‌های آن دارای مقدار صفر هستند. از این استاندارد در زبان برنامه نویسی C استفاده می‌شود و هنوز هم این رویکرد تداوم دارد. از این روش معمولاً به عنوان یک رشته زبان C نیز یاد می‌شود. در روش نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی از یک رشته n کاراکتری استفاده شده است اما n+1 به نظر می‌رسد و یک عدد برای پایان رشته مورد استفاده قرار می‌گیرد، بنابراین این روش نمایش ساختار داده‌ای ضمنی به حساب می‌آید.

نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی چیست؟

معمولاً آخرین کاراکتر توالی استرینگ در هر نوع استرینگی، حرف قابل قبول و خاصی نیست. اما رشته‌های میدان طولی (Length Field String) این محدودیت را ندارند و می‌توانند حاوی اطلاعات دودویی (Binary) خاصی نیز باشند. در ادامه مثالی برای درک بهتر این نوع نمایش از رشته در برنامه نویسی ارائه شده است.

مثال نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی

در این بخش مثالی برای درک بهتر نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی ارائه و شرح داده شده است. در این مثال یک توالی با اعداد هگزادسیمال (Hexadecimal) ۸ بیتی در یک فریم ۱۰ بایتی همراه با عبارت اسکی (یا همان استاندارد UTF-8) به صورت زیر وجود دارد:

مثال نمایش استرینگ در برنامه نویسی به صورت منتهی به تهی

اندازه رشته مثال فوق که کلمه «DAVID» را نشان می‌دهد پنج است. اما به اندازه شش بایت فضا نیاز دارد. کاراکترهایی که پس از تهی نوشته شده‌اند به عنوان مؤلفه‌های قابل تفسیر در این رشته در نظر گرفته نمی‌شوند. آن‌ها می‌توانند مؤلفه‌های داده دیگری و یا زباله باشند. رشته‌هایی با این نوع از نمایش پس از اعلان توسط زبان‌های برنامه نویسی که از این روش استفاده می‌کنند به عنوان توالی «ASCIZ» شناخته می‌شوند. در بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به بررسی نمایش استرینگ در برنامه نویسی به صورت رشته به عنوان رکورد (String As A Record) پرداخته شده است.

نمایش استرینگ در برنامه نویسی به صورت رشته به عنوان رکورد چیست؟

بسیاری از زبان‌های برنامه نویسی استرینگ‌ها را به صورت رکورد به وسیله برخی خواص ساختاری مانند مدل‌های شی گرا (Object Oriented) ایجاد می‌کنند. برای مثال، کدهای زیر روش نمایش رشته به عنوان رکورد در برنامه نویسی را نشان می‌دهد:

Class Str
{
size_p length;
char *text;
};

اگرچه معمولاً پیاده‌سازی رشته‌ها به صورت مخفی انجام می‌شوند، ویرایش و تغییر توالی استرینگ به وسیله اعضا متغیرها امری ضروری به حساب می‌آید. text ورودی به حافظه سیستمی اشاره دارد که می‌تواند در صورت لزوم گسترش پیدا کند. بخش بعدی مقاله «استرینگ در برنامه نویسی» به شرح نمایش استرینگ در برنامه نویسی با روش طول پیشوند (Length Prefixed) اختصاص دارد.

نمایش استرینگ در برنامه نویسی با روش طول پیشوند چیست؟

ذخیره طول رشته به صورت مستقیم در برنامه نویسی امکان‌پذیر است. برای مثال، این کار را می‌توان با اضافه کردن اندازه رشته به عنوان مقدار بایت آن انجام داد. در چندین نسخه زبان برنامه نویسی پاسکال (Pascal) از این روش استفاده شده است. به همین دلیل برخی از توسعه دهندگان نمایش رشته با روش طول پیشوند را رشته پاسکال یا «P-string» نیز می‌نامند. ذخیره اندازه رشته‌ها به عنوان مقدار بایت‌ها حداکثر طول رشته را تا ۲۵۵ محدود می‌کند. نمایش‌های پیشرفته استرینگ‌های پاسکال از عبارات ۱۶، ۳۲ یا ۶۴ بیتی برای حفظ اندازه رشته استفاده می‌کنند تا از محدودیت‌های خاص جلوگیری شود. زمانی که طول آدرس فیزیکی به طول کامل دست پیدا کرد، فضای ذخیره‌سازی رشته‌ها محدود می‌شوند.

اگر اندازه استرینگ در برنامه نویسی محدود باشد، می‌توان آن را به وسیله ذخیره‌سازی ثابت رمزگذاری کرد. معمولاً عبارات کامپیوتری منجر به ایجاد ساختمان داده ضمنی با استفاده از ذخیره‌سازی n+k می‌شوند، در این تعریف k تعداد کاراکترهای متن به حساب می‌آید. برای مثال، ۸ کاراکتر در یک سیستم ۶۴ بیتی نشان دهنده ۸ بیت کد اسکی است. اگر اندازه حافظه محدود نباشد، رمزگذاری با اندازه استرینگ n به حافظه‌ای با اندازه log(n) نیاز دارد. بنابراین توالی‌هایی با روش طول پیشوند، یک ساختمان داده کوچک هستند و استرینگی با اندازه n را در حافظه log(n) + n رمزگذاری می‌کنند.

هیچ اندازه ثابتی به تنهایی در فیلد اندازه پیشوند (Size Prefix) در وضعیت فوق وجود ندارد، اما با توسعه توالی، مقدار رشته باید به صورت جداگانه جابه‌جا شود تا تعداد توالی گسترش پیدا کند. برای مثال تصویر زیر یک رشته پاسکال شامل عبارات اسکی با نوع UTF-8 در یک بافر ۱۰ بایتی است:

مثال برای طول پیشوندی | استرینگ در برنامه نویسی چیست

در بخش‌های بعدی مقاله «استرینگ در برنامه نویسی چیست» به بررسی ارائه، نمایش و پیاده‌سازی استرینگ در انواع زبان‌های برنامه نویسی گوناگون پرداخته می‌شود. ابتدا، بخش بعدی به نمایش و پیاده‌سازی استرینگ در زبان برنامه نویسی C اختصاص دارد.

نمایش و پیاده‌ سازی استرینگ در برنامه نویسی C چگونه است؟

در زبان برنامه نویسی C پارامترهای نوع کاراکتر نمی‌توانند بیش از یک کاراکتر را دریافت کنند یعنی دو مثال ارائه شده در ادامه باعث ایجاد خطاهای نحوی می‌شوند. در مثال اول pq دو کاراکتر است و این خطا را ایجاد می‌کند و در مثال دوم عدد ۱۰۰ سه کاراکتر است. در کل باید به این نکته نیز توجه داشت که می‌توان اعداد را به عنوان کاراکترها ذخیره کرد ولی مانند حروف و کاراکترها ذخیره می‌شوند و دیگر دارای خاصیتی عددی نیستند و محاسبات روی آن‌ها انجام نمی‌شود.

char c1 = "pq";
char c2 = "100"; 

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

# include<stdio.h>
# include<conio.h>
Main ()
{ int number [5] = {100, 200, 300, 400, 500}; int i = 0;
while (i < 5)
{ Printf("number[%d] = %dn", i, number[i]); i = i + 1;
}
} 

پس از اجرای موفقیت‌آمیز برنامه فوق، خروجی زیر نمایش داده می‌شود. همچنین به دلیل وجود «n» در تابع printf هر کاراکتر در یک خط چاپ شده است.

خروجی مثال استرینگ در برنامه نویسی سی

حال در مثال بعدی، مانند نمونه فوق چند کاراکتر در آرایه‌ای قرار گرفته‌اند و به جای اعداد با نوع داده کاراکتر یا همان استرینگ چاپ می‌شوند:

#include <stdio.h>
main() { char ch[5] = {'H', 'e', 'l', 'l', 'o'}; int i = 0; while( i < 5 ) { printf("ch[%d] = %cn", i, ch[i] ); i = i + 1; }
}

در این برنامه باید به این نکته توجه داشت که برای چاپ کاراکترها در تابع printf از مقدار c% استفاده می‌شود. پس از کامپایل و پیاده‌سازی کدهای فوق، خروجی به صورت زیر نمایش داده می‌شود:

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

همان‌طور که در مثال‌های فوق مشاهده شد، می‌توان به این نتیجه رسید که رشته‌ها در زبان برنامه نویسی C همیشه به صورت آرایه‌ای از کاراکترها نمایش داده می‌شوند. می‌توان نوشتن و چاپ استرینگ را به صورت ساده‌تری در زبان C با روش زیر انجام داد:

#include <stdio.h>
main() { char ch[5] = "Hello"; int i = 0; /* Print as a complete string */ printf("String = %sn", ch); /* Print character by character */ while( i < 5 ) { printf("ch[%d] = %cn", i, ch[i] ); i = i + 1; }
}

در مثال فوق برای چاپ کامل رشته مورد نظر با نام آرایه ch از مقدار s% استفاده می‌شود. این مقدار دقیقاً در ابتدای آدرس حافظه متغیر ch قرار می‌گیرد. همان‌طور که در تصویر زیر نمایش داده شده است:

مثال برای چاپ رشته در زبان C

زبان برنامه نویسی C به صورت داخلی کاراکتر تهی 0 به عنوان آخرین کاراکتر هر رشته قرار می‌دهد، با این حال این موضوع در کدهای فوق مشخص نیست. این کاراکتر در تصویر فوق مشاهده می‌شود و در بخش‌های قبلی نیز به آن پرداخته شد. این کاراکتر تهی پایان هر رشته را نشان می‌دهد، برای مثال اگر برنامه نویس قصد دارد رشته پنج کاراکتری ایجاد کند نیاز است که آن را در یک آرایه با اندازه شش ذخیره کند. در این آرایه هر کاراکتر حاوی یک آدرس (Address) و یک اندیس (Index) می‌شود. اگر مثال فوق کامپایل و پیاده‌سازی شود، خروجی آن به صورت زیر نمایش داده می‌شود:

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

طبق مثال‌های ارائه شده فوق برخی از نکات پایه و اساسی جمع‌آوری شدند و در بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به آن‌ها پرداخته شده است.

مفاهیم پایه استرینگ در برنامه نویسی C

بر اساس مفاهیم ارائه شده برای استرینگ در زبان برنامه نویسی C، نکات مهمی درباره رشته در این زبان برنامه نویسی جمع‌آوری شده‌اند که در ادامه به شرح آن‌ها پرداخته شده است:

  • استرینگ در زبان برنامه نویسی C به عنوان آرایه‌ای از کاراکترها نمایش داده می‌شود.
  • می‌توان با اختصاص کاراکتر به کاراکتر رشته‌ها به آرایه‌ای از کاراکترها، یک رشته در برنامه نویسی C ساخت.
  • می‌توان با اختصاص یک رشته کامل در دو گیومه (“Hello”)، رشته‌ای در برنامه‌نویسی C به وجود آورد.
  •  می‌توان یک رشته کاراکتر را با استفاده از یک آرایه رشته کامل به وسیله نام آرایه بدون نوشتن چیز دیگری چاپ کرد.
  • آخرین کاراکتر هر رشته در زبان برنامه نویسی C یک کاراکتر تهی یعنی 0 است.
  • اکثر زبان‌های برنامه نویسی برای نمایش استرینگ از توابع داخلی از پیش ساخته شده خود استفاده می‌کنند. به عنوان مثال می‌توان رشته‌ها را باهم ادغام کرد، در یک رشته جستجو انجام داد، زیر رشته‌ها (Sub String) را از یک رشته استخراج کرد و عملیات بسیار دیگری که در اکثر زبان‌های برنامه نویسی انجام می‌شوند.

در بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به شرح نمایش و پیاده‌سازی استرینگ در زبان برنامه نویسی جاوا پرداخته شده است.

نمایش و پیاده‌ سازی استرینگ در برنامه نویسی جاوا چگونه است؟

با اینکه در زبان برنامه نویسی جاوا نیز از آرایه‌های کاراکتر می‌توان استفاده کرد، اما جاوا یک زبان پیشرفته است و طراحان آن سعی کرده‌اند قابلیت‌های بیشتر و کاربردی از جمله قابلیت‌هایی برای تعریف استرینگ به آن اضافه کنند. جاوا تعریف رشته‌ها را به صورت یک نوع داده داخلی مانند انواع داده‌های دیگر انجام می‌دهد. این موضوع به این معنی است که می‌توان رشته‌ها را مستقیماً و بدون نیاز به تعریف آن‌ها به صورت آرایه‌ای از کاراکترها تعریف کرد. در ادامه برنامه‌ای برای تعریف نوع داده استرینگ در برنامه نویسی با زبان جاوا ارائه شده است. همان‌طور که مشاهده می‌شود جاوا از عملگر 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

زبان پایتون از نوع داده کاراکتر پشتیبانی نمی‌کند. در این زبان کاراکترها به‌ عنوان توالی‌هایی با اندازه طول یک در نظر گرفته می‌شوند که معمولاً به آن‌ها زیر رشته می‌گویند. برای دسترسی به زیر رشته‌ها از براکت‌هایی ([ ]) در مقابل متغیر استفاده می‌شود و با استفاده از آن محدوده زیر رشته مورد نظر انتخاب خواهد شد.

رشته‌ها از عدد صفر به عنوان زیر رشته‌ها اندیس‌گذاری می‌شوند برای مثال در نمونه فوق اندیس [0] زیر رشته H را برمی‌گرداند و اگر این اندیس‌ها به صورت [1:5] نوشته شوند به این معنی است که زیر رشته‌های اندیس‌های ۱ تا ۵ باید برگردانده و چاپ شوند. در ادامه با مثالی این موضوع به طور کامل بیان شده است:

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

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

بخش بعدی مقاله «استرینگ در برنامه نویسی چیست» به نمایش و پیاده‌‌سازی استرینگ در زبان برنامه نویسی ++C اختصاص داده می‌شود.

نمایش و پیاده‌ سازی استرینگ در برنامه نویسی ++C چگونه است؟

زبان برنامه نویسی ++C دارای دو نمایش برای نشان دادن String در برنامه نویسی است که در ادامه به بررسی آن‌ها پرداخته می‌شود:

  • استرینگ کاراکتری «C-style»
  • نوعی کلاس استرینگی معرفی شده با استانداردهای زبان برنامه نویسی ++C

ابتدا در بخش بعدی به شرح استرینگ کاراکتری «C-style» در زبان ++C پرداخته شده است.

استرینگ کاراکتری C-style در زبان برنامه نویسی ++C چیست؟

رشته کاراکترها C-style یا همان به سبک C همان روشی است که در زبان C استفاده می‌شد و همچنان در زبان ++C نیز پشتیبانی می‌شود. همان‌طور که پیش از این و در بخش نمایش استرینگ در زبان برنامه نویسی C شرح داده شد، این نوع از آرایه کاراکترها با کاراکتر تهی 0 خاتمه می‌یابند. بنابراین یک آرایه با پایان تهی شامل کاراکترهایی است که رشته را تشکیل می‌دهند. در مثال زیر رشته‌ای شامل کلمه Hello مقداردهی و اعلان می‌شود. همچنین، برای قرار دادن کاراکتر تهی در آخر آرایه رشته باید تعداد کاراکترها را یک رقم بیشتر از تعداد حروف کلمه Hello در نظر گرفت.

char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''};

همچنین می‌توان از قانون مقداردهی اولیه آرایه‌ها در این زبان برنامه نویسی استفاده کرد و مثال فوق را به صورت زیر نوشت:

char greeting[] = "Hello";

در واقع برنامه نویس کاراکتر تهی را در انتهای آرایه رشته قرار نمی‌دهد و کامپایلر ++C هنگامی که آرایه را مقداردهی اولیه می‌کند، خودش به طور خودکار مقدار تهی 0 را در انتهای آرایه قرار می‌دهد. برای چاپ رشته مثال فوق از برنامه زیر استفاده می‌شود:

#include <iostream>
using namespace std;
int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''}; cout << "Greeting message: "; cout << greeting << endl; return 0;
}

زمانی که کدهای فوق اجرا و پیاده‌سازی می‌شوند، خروجی زیر نمایش داده می‌شود:

Greeting message: Hello

زبان برنامه نویسی ++C دارای تعداد بسیاری تابع است که انواع عملیات را روی رشته‌های با پایان تهی اعمال می‌کنند. برخی از این توابع در جدول زیر مشخص شده‌اند.

نام تابععملیاتی که تابع انجام می‌دهد.
;strcpy(s1, s2)این تابع رشته s2 را در رشته s1 کپی می‌کند.
;strcat(s1, s2)این تابع رشته s2 را با آخر رشته s1 ادغام می‌کند.
;strlen(s1)این تابع طول رشته s1 را برمی‌گرداند.
;strcmp(s1, s2)اگر رشته s1 و s2 یکسان باشند، این تابع عدد صفر را برمی‌گرداند. همچنین اگر s1<s2 باشد عددی کمتر از صفر را نشان می‌دهد و اگر s1>s2 باشد عددی بیشتر از صفر را برمی‌گرداند.
;strchr(s1, ch)این تابع یک اشاره‌گر (Pointer) را برای اولین پیش‌آمد کاراکت مطالب درسی...
ما را در سایت مطالب درسی دنبال می کنید

برچسب : نویسنده : خنجی darsi بازدید : 199 تاريخ : دوشنبه 9 اسفند 1400 ساعت: 5:37

خبرنامه