بایگانی برچسب: s

آموزش زبان ++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 است.

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

آموزش برنامه نویسی ++C – نوع متغیر string (رشته)

یک رشته در واقع یک آرایه از کاراکتر ها است.
در c++ استاندارد برای ایجاد رشته به این صورت کد می نویسند:

برای استفاده از این نوع رشته ها باید به صورت حرفه ای با آنها کار کرده باشید و کار با آنها بسیار سخت است به همین خاطر بعضی از IDE های برنامه نویسی و کامپایلرشان مانند: visual studio یا کامپایلر لینوکس و یونیکس کارمان را راحت کردند ( در توربو قابل استفاده نیست ) و نوع متغیری بوجود آوردند به نام string که یک رشته را نگه داری می کند. مثال های ما در مورد متغیر string در کامپایلر و محیط visual studio است و در موقع مناسب کار با رشته به این صورت char ch[10] را آموزش می دهیم.
مثال: متغیر از نوع string تعریف کنید و مقداری به آن دهید سپس آنرا نمایش دهید.

توضیحات: ابتدا باید هدرفایل string را به برنامه اضافه کنید سپس یک متغیر تعریف کنید و مقداری به آن دهید و سپس با دستور cout آن را نمایش دهید.
نکته: می توانید از دستور cin برای گرفتن string استفاده کنید.

متد

متد (metod): در واقع یک نوع تابع است که وقتی متغیری تعریف می کنید می توانید از آن استفاده کنید. در کد متوجه می شوید.
متد size:

توضیحات: این متد تعداد کاراکتر های متغیر s را نشان می دهد.
ساختار کلی متد:

نام متد . نام متغیر();

متد در واقع عملیات خاصی را روی یک متغیر انجام می دهد. در پست های بعدی بیشتر با متد آشنا می شوید.

متد های string

متد empty: این متد متغیر را خالی از هر چیزی می کند.(NULL)
مثال:

append: این متد یک رشته را می گیرد و به انتهای رشته ای که ما می خواهیم اضافه می کند.
مثال:

توضیحات: متد رشته ی ali را به آخر رشته s که hello است اضافه می کند.
find: این متد یک رشته از ورودی می گیرد( ورودی: متغیر یا رشته ای که در داخل پرانتز های متد قرار می گیرند ) و درون رشته ی مورد نظرمان جست و جو می کند که نشان دهد چندمین اندیس رشته است.
مثال: می خواهیم ببینیم که رشته ی “ll” درون رشته ی hello چندمین اندیس است.

خروجی:
string1
توضیحات: اگر دقت کنید متوجه می شوید که رشته ی ll از اندیس دوم شروع می شود. ( اندیس اول صفر است )

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

آموزش برنامه نویسی ++C – ساختمان ( struct ) – قسمت اول

موارد استفاده : برای مثال فرض کنید می خواهیم اسامی و تاریخ تولد و معدل ۱۰۰ دانشجو را از ورودی بگیریم.
ما دو راحل داریم: یکی اینکه یک آرایه ی ۱۰۰تایی از char برای اسم و دو آرایه ی ۱۰۰تایی از int برای تاریخ تولد و معدل در نظر بگیریم.
راحل دوم این است که ما یک آرایه از یک نوع خاصی در نظر بگیریم که مقادیر هر اندیسش برابر است با یک رشته برای اسم و دو متغیر از نوع int برای گرفتن تاریخ تولد و معدل از ورودی.
برای بوجود آوردن اینچنین متغیر خاصی از struct استفاده می شود.

ساختار کلی:

struct نام نوع جدید
{
فیلد ها
};

مثال (مثالی که در بالا زدیم):

نکته:

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

یعنی یک رشته ای که حداکثر می تواند با ۲۰ کاراکتر پر شود.
برای گرفتن رشته از ورودی:

این توضیحات صرفا برای آشنایی اندک با رشته بود در مقاله های بعدی به طور کامل با رشته آشنا می شوید.
ادامه ی بحث struct :
نکته: struct را در بالای تابع main تعریف می کنند.
ایجاد متغیر از نوع جدیدی که ایجاد کرده ایم:
نام نوع متغیر جدید نام متغیر;
برنامه ی کامل از مثال بالا:

توضیحات:

یک struct با نام st ایجاد کرده ایم که شامل یک رشته به نام name با تعداد اندیس ۱۰ است و یک متغیر با نام  moadel و یک متغیر با نام tarikh از نوع int.

در این قسمت ما از نوع جدیدی که ایجاد کرده ایم به نام st یک متغیر تعرف می کنیم با نام s1.
دسترسی به هرکدام از فیلد های نوع متغیر جدید:
برای مثال دسترسی به moadel:

حالا فیلد moadel برابر با ۱۰ می شود. ولی ما در کدهایمان می خواهیم از کاربر این مقادیر را بگیریم.
نکته: این نوع متغیر هایی که ما آنرا ایجاد می کنیم مانند s1 که تعریف کردیم ADT یا abstract data type گویند.
اجرای برنامه ی بالا:
struct1

برنامه ی بالا مشخصات یک دانشجو را می گیرد ما می توانیم از نوع متغیر جدید خود آرایه هم تعریف کنیم.
مثال:
برنامه ای بنویسید که اگر کاربر در خروجی کاراکتر یک را وارد کرد یک اندیس آرایه از نوع st که در برنامه ی بالا تعریف کرده یم توسط کاربر پر شود و اگر کاربر کاراکتر دو را وارد کرد تمام فیلد های پر شده توسط کاربر نمایش داده شود و اگر x وارد شود برنامه از حالت اجرا خارج شود (آرایه دارای ۳ اندیس باشد).

توضیحات: ابتدا ما یک آرایه از نوع st تعریف میکنیم سپس یک متغیر k=0 از نوع int ایجاد می کنیم به عنوان شمارنده ی اندیس ها سپس یک نوع منو ایجاد می کنیم که کاربر را توجیح کنیم.
تمام کد هایمان را در while میگذاریم چون نمیدانیم کار بر چند بار به آرایه مقدار می دهد یا از آن استفاده می کند.
کاراکتر ch را از ورودی میگیریم:
اگر برابر با ۱ بود: name, moadel,tarikh اندیس اول آرایه ی s1 را از کاربر میگیریم سپس یک مقدار بر k اضافه می کنیم.
اگر برای با ۲ بود: در یک for همه ی مقادیر آرایه ی s1 را نشان می دهیم.
اگر برابر با x بود: از تابع exit(0) استفاده می کنیم برای خارج شدن از اجرای برنامه.
اجرای برنامه:
دوبار زدن دکمه ۱:
struct2
سپس زدن دکمه ی ۲:
struct3
برای خروج کاراکتر x.
اطلاعات بیشتر در مورد struct