آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – رشته ( آرایه ای از کاراکتر ها ) | قسمت دوم

در پست قبلی به شما آموختیم که چطور با استفاده از توابع با رشته در turbo c++ کار کنید و در این پست قصد آموزش نکات دیگری در مورد رشته و چگونگی استفاده از رشته ها بدون استفاده از توابع کتابخانه ای ها را داریم.
دلیل آموزش کار با رشته بدون استفاده از توابع به شما این است که یک برنامه نویس خوب باید با تمام الگوریتم های کاربردی آشنایی کافی را داشته باشد و اگر توابع را در اختیار نداشته باشد بتواند خودش توابعی را ایجاد کند که این کار باعث یادگیری مبانی و الگوریتم های کامپیوتر می شود.
این آرایه ی کاراکتری را در نظر بگیرید:

که اندیس های آن در ۰ تا ۹ است و شما تصور می کنید که می توانید ۱۰ کاراکتر در آن جای دهید در صورتی که اشتباه می کنید چون شما فقط می توانید ۹ کاراکتر در آن جای دهید زیرا مقدار \۰ (بک اسلش صفر) در اندیس آخر این آرایه قرار می گیرد.
مثال: شما می خواهید رشته ی ali را در یک آرایه ی کاراکتری بگذارید

در اندیس های صفر و یک و دو کاراکتر های رشته ی ali قرار می گیرد و در اندیس سوم نیز کاراکتر بک اسلش صفر.
نکته: کد اسکی کاراکتر \۰ برابر صفر می باشد.

انواع مقدار دهی به رشته ها در هنگام تعریف آرایه ی کاراکتر:

۱- به صورت کاراکتر به کاراکتر:

توضیح: در این نوع مقدار دهی شما خودتان دستی باید کاراکتر \۰ را در آخر رشته قرار دهید.
۲- به صورت رشته با مشخص کردن تعداد اندیس ها:

توضیح: این کار تقریبا سخت است وممکن است تعداد اندیس هارا اشتباه نوشته و اگر تعداد کاراکتر ها بیشتر از تعداد اندیس ها باشند بقیه ی کاراکتر ها ازبین روند.
نکته: در این نوع مقدار دهی نیازی نیست کاراکتر \۰ را در آخر رشته قرار دهید و کامپایلر به طور اتوماتیک این کار را انجام می دهد.
۳- مقدار دهی یک آرایه ی کاراکتری به صورت رشته با مشخص نکردن تعداد اندیس ها:

توضیح: این کار بسیار آسان تر است و همچنین نیازی ندارید که کاراکتر \۰ را در آخر رشته قرار دهید.
در این آرایه اندیس آرایه به طور خودکار برابر ۴ قرار می گیرد.
نکته: باید دقت کنید که تعداد اندیس های آرایه از تعداد عددی که هنگام تعریف به آرایه می دهیم یکی کمتر است چون از صفر شروع می شود.

مقدار دهی رشته توسط کاربر و اتفاقی که بعد از مقدار دهی می افتد:

۱- با استفاده از دستور cin :

توضیح: در این کد ها ما یک رشته ۱۰ کاراکتر با نام ch ایجاد کردیم مقدار آن را در کاربر در خروجی وارد می کند و سپس با دستور cout آن را نمایش می دهیم.
اگر رشته ی ما فرضا ali باشد تنها ۴ اندیس از رشته ی ۱۰ کاراکتر ما پر می شود و اگر دقت کرده باشید دستور cout فقط مقادیر اندیس هایی را نشان می دهد که قبل از کاراکتر \۰ باشند.
اندیس ۰ و ۱ و ۲ به ترتیب کاراکتر های a و l و i را می گیرند و اندیس سوم هم کاراکتر \۰ را می گیرد.
نکته: در مقدار دهی رشته در خروجی با دستور cin اگر شما پس از وارد کردن رشتهتان کلید enter را فشار دهید کاراکتر \۰ در آخر رشته قرار می گیرد ولی دستور cin در گرفتن رشته این مشکل را دارد که اگر شما کلید space را هم فشار دهید کاراکتر \۰ در رشته قرار می گیرد و رشته بسته می شود و شما دیگر نمی توانید مقداری به رشته دهید پس باید به دنبال راهی جدید بگردیم.
۲- گرفتن رشته با تابع gets :
دقت داشته باشید که الگوی این تابع در هدرفایل stdio.h قرار دارد.
توضیحات : این تابع مشکل دستور cin را ندارد و شما می توانید از کلید space نیز برای مقدار دهی به رشته استفاده کنید.
نکته: شما می توانید برای نمایش رشته از تابع puts هم استفاده کنید
به این صورت:
دقت داشته باشید که الگوی این دو تابع در هدرفایل stdio.h قرار دارد.
تمرین: برنامه ای بنویسید بدون استفاده از توابع کتابخانه تعداد کاراکتر های درون یک رشته را به ما نشان دهد.
توضیحات : ابتدا هدرفایل ها را اضافه کردیم در بلوک تابع main یک رشته با نام ch تعریف کردیم و با تابع gets آن را از ورودی گرفتیم ( کار های اولیه ).
چون ما نمی دانیم تعداد کاراکتر های چندتا است پس از حلقه ی while استفاده می کنیم.
شرط حلقه ی while این است که از مقدار اندیس آیُم از رشته ی ch برابر \۰ نبود یک مقدار به i اضافه کن.
در این صورت برنامه از ابتدای رشته شروع می کند تا به کاراکتر \۰ برسد و وقتی ch[i] برابر با \۰ شد شرط حلقه نادرست می شود و حلقه می شکند و عددی که در متغیر i قرار گرفته است تعداد کاراکتر های رشته است.
و در آخر هم بیرون از حلقه ی مقدار i را با cout نمایش می دهیم.
string
رشته ای که در خروجی داده این در تصویر بالا hello world است که رشته ی hello 5 کاراکتر و space یا فاصله ی بین دو کلمه هم ۱ کاراکتر و رشته ی world هم ۵ کاراکتر که جمع آن ها می شود ۱۱ کارکتر یا همان عددی که در i قرار گرفته است.
نکته: می توانید به به جای گذاشتن کاراکتر \۰ کلمه ی NULL را بنویسید
اینطور:
\۰ در واقع همان NULL است.

پاسخ دهید

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