دستور for: این دستوز نیز یک حلقه تکرار است، ولی از تمام دستورهای تکرار کاملتر و انعطاف پذیرتر است، (البته این موضوع به این معنا نیست که پس از یادگیری این دستور فقط از این دستور استفاده کنید!) میتوان در این دستور شمارنده و شرط خروج از حلقه را در یک خط خلاصه کرد و به همین دلیل برنامه بهینهتر میشود، دستور for به این شکل است:
for(مقداردهی شمارنده ;شرط ادامه حلقه ;تغییر شمارنده )
{
}
خب میدونم که چیزی از این دستور متوجه نشدین! (البته خودم هم در ابتدای یادگیری این دستور همین طور بودم! اصلا علت اینکه این دستور رو در یک قسمت کاملا جداگانه توضیح میدم همینه!) خب برای فهم این دستور مثل همیشه در یک برنامه این دستور را توضیح میدهم، این برنامه اعداد 0 تا 10 را در خروجی چاپ میکند:(البته با استفاده از یک حلقه تکرار)
خطهای 8 و 9 شامل دستور for هستند، البته درباره اینکه چرا در این برنامه دستور for شامل کروشه {} نیست، در نکات تکمیلی توضیح میدم (نترسین در نمیرم! حتما توضیح میدم! البته میدونم الان پیش خودتون میگین این چقدر بامزه شده تو این قسمت؛ گفتم خودمو تغییر بدم!) خب بیاییم سراغ برنامه؛ اگر نگاهی به شکل کلی دستور for بیندازید وبا این برنامه مقایسه کنید، تا حدودی مفهوم این دستور را متوجه میشوید، با شکل کلی از سمت چپ پیش میرویم:
مقداردهی شمارنده: هر حلقه تکرار نیاز به یک شمارنده دارد تا با استفاده از آن حلقه تکرار شود، در این دستور ما در بخش اول، شمارنده را معرفی میکنیم، (به همان صورتی که قبلا یک متغیر را معرفی میکردیم، چون شمارنده هم یک متغیر است) که در اینجا نام شمارنده counter و مقدار اولیه آن صفر است. (البته شما میتوانید هر مقداری با توجه به نیاز خودتان به شمارنده بدهید)
شرط ادامه حلقه: همان طور که در دستور تکرار while دیدیم، هر حلقه باید به اتمام برسد، که این کار توسط یک شرط انجام میشد، شرط دستور for نیز همان کار را انجام میدهد، فقط نوع نوشتن آن تفاوت دارد، که در اینجا باید بعد از یک سمیکالن (;) بیاید، که در این برنامه این شرط کوچکتر یا مساوی بودن شمارنده با عدد 10 است، زیرا ما میخواستیم اعداد صفر تا 10 در خروجی چاپ شود.
تغییر شمارنده: این بخش را میتوان مهمترین بخش دستور for دانست، زیرا نوع پیشرفت حلقه و به عبارت دیگر انعطاف پذیری این دستور در گرو این بخش است، در این برنامه بعد از هر بار اجرای دستور به مقدار شمارنده یک واحد اضافه میشود، شما میتوانید هر نوع تغییر دیگری را بر روی شمارنده انجام دهید، مثلا دوتا دوتا مقدار شمارنده را افزایش دهید و یا مقدار اولیه شمارنده را عدد 10 قرار دهید و مقدار آن را یک واحد یک واحد کاهش دهید، پس هر نوع تغییری در این قسمت مجاز است.
حال به توضیح روند اجرای برنامه میپردازم: در ابتدا کامپایلر وارد دستور for میشود (البته با رعایت احتیاط!) سپس شمارنده counter را با مقدار اولیه صفر معرفی میکند، سپس به شرط حلقه میرسد، کنترل میشود که آیا شرط ادامه حلقه درست است یا خیر، که در این برنامه درست است، سپس (بیشترین مشکل اکثر کدنویسان در درک این قسمت است، لطفا توجه کنید!) برنامه وارد حلقه میشود، (نه اینکه برنامه به قسمت تغییر شمارنده برسد، بلکه این قسمت بعد از اولین اجرای حلقه به بعد، اجرا میشود) سپس عدد صفر در خروجی چاپ میشود، سپس کامپایلر دوباره به اجرای بخشهای حلقه میپردازد، (البته دامی دیگر! در این اجرا وجود دارد، لطفا به این قسمت از اجرا هم توجه کنید!) این بار کامپایلر بخش اول حلقه را اجرا نمیکند، یعنی دوباره مقدار شمارنده صفر نمیشود، بلکه بعد از اولین اجرای برنامه به بعد دیگر بخش اول اجرا نمیشود، پس حال که مقدار شمارنده 0 است، دوباره کنترل میشود که آیا شرط ادامه حلقه برای آن برقرار است یا خیر، که برقرار است، سپس کامپایلر وارد بخش سوم میشود و یک واحد به شمارنده اضافه میکند، حال مقدار شمارنده 1 است، و مقدار آن در خروجی چاپ میشود و این روند تا هنگامی که شرط حلقه برقرار باشد ادامه پیدا میکند.
این هم کد یک برنامه بسیار زیبا! که یک جدول ضرب 5 در 5 را در خروجی چاپ میکند:
خب سعی کنید خودتان به تحلیل این برنامه بپردازید و روند اجرای برنامه را دریابید، (البته یک راهنمایی: همیشه داخلی ترین حلقه، کامل اجرا میشود، سپس کامپایلر وارد حلقه بیرونی شده و به اجرای آن میپردازد، سپس دوباره با یک بار اجرا شدن حلقه بیرونی، دوباره کامپایلر وارد حلقه درونی میشود و کاملا آن را اجرا میکند و این روند تکرار میشود. عجب راهنمایی کاملی! خودم تا حالا همچنین راهنمایی کاملی ندیده بودم! اه بازم شروع کردم به تعریف از خودم!)
نکات تکمیلی
- در هر بخش از دستور for میتوانید، برای جدا کردن چند عبارت منطقی، از کاما (,) استفاده کنید، که به آن عملگرهای کاما میگویند که تضمین میکند عبارتهای منطقی از چپ به راست اجرا شوند.
- خطای یک بار کمتر/ بیشتر اجرا: اگر در شرط ادامه حلقه از عملگر مقایسهای نادرست استفاده شود، ممکن است باعث بروز این خطا شود، به عنوان مثال اگر در برنامه اول، شرط حلقه به این صورت نوشته شود: counter<10 باعث میشود، خود عدد 10 در خروجی چاپ نشود (خطای یک بار کمتر اجرا) که برای رفع این خطا، میتوان این دستور را به صورت قبل و یا به این صورت نوشت: counter<11
- هنگامی که یک متغیر را در قسمت شمارنده معرفی و مقداردهی میکنید، فقط این متغیر در بدنه دستور for شناختهشده است، یعنی اگر از این متغیر در خارج بدنه استفاده کنید، باعث به وجود آمدن خطای دستوری میشود.
- توضیح در این باره که چرا در برنامه اول دستور for دارای بدنه نبود (دید گفتم در نمیرم!): در این دستور نیز همانند دستور if (اگر یادتان باشد!) اگر دستور مربوط به حلقه، یک خط باشد، میتوان (نه اینکه باید!) از نوشتن بدنه خوداری کرد.
- تمام دو سمیکالن موجود در دستور for اجباری است و ننوشتن آنها باعث به وجود آمدن خطا دستوری میشود.
- سه بخش دستور for اختیاری هستند، (اما وجود دو سمیکالن جداساز در آن اجباری است.) اگر قسمت شرط ادامه حلقه حذف شود، کامپایلر فرض میکند، این شرط درست است که باعث به وجود آمدن حلقه بی پایان میشود. (برای فهم این نکته، هر بار یکی از بخشها را حذف کنید و بعد برنامه را اجرا کنید، تا نتیجه آن را ببینید)
- قرار دادن سمیکالن بعد از پرانتز دستور for باعث میشود که این دستور نادیده (دستور پوچ تا تهی) گرفته شود و کامپایلر به اجرای کدهای بعد از این دستور میپردازد.
در این شش قسمت سعی کردم تمام مباحث پایهای برنامه نویسی را آموزش بدهم، تا اینجا تمام مباحث اصولی و پایهای لازم برای یادگیری ادامه این زبان را فرا گرفتهاید، برای ایجاد فرصتی برای استراحت! و همین طور تجزیه و تحلیل این شش قسمت و همچنین فرصت اینکه اگر در جایی به مشکل برخوردید با من در تماس باشید، فعلا وقفهای میان ادامه آموزش قرار میدهم (البته این اطمینان را به شما میدهم که این آموزش را ادامه خواهم داد)، البته در این مدت به آموزش مباحث شبکه خواهم پرداخت که علاقه مندان میتوانند این سری از مطالب را نیز دنبال کنند؛ سپس بعد از مدتی به ادامه آموزش برنامه نویسی به زبان ++C و شروع مباحث پیشرفته از قبیل: آرایهها، اشارهگرها، شی گرایی و کلاسها، ارث بری و… خواهم پرداخت.
توجه: اگر برای اولین بار است که این مقاله را میخوانید و هنوز قسمتهای قبلی آن را مطالعه نکردهاید، نگران نباشید زیرا از لینکهای زیر میتوانید پنج قسمت قبلی را در اختیار داشته باشید:
قسمت اول آموزش برنامهنویسی به زبان ++C
قسمت دوم آموزش برنامهنویسی به زبان ++C
قسمت سوم آموزش برنامهنویسی به زبان ++C
سلام مرسی اموزشتون خیلی روون و با زبان ساده ست
لطفا ادامه بدید ممنون:)
و اما ببخشید یه سوال دیگه که هیچ جا پیداش نمیکنم !
پرا شما پروژه خالی ایجاد کردید؟بعضی سایت ها کنسول اپلیکیشن ایجاد میکنن اصلا کنسول اپلیکیشن و ویندوز فروم اپلیکیشن و پروژه خالی پچه تفاوتی باهم دارن؟خواهش میکنم جواب بدید!!ممنونم
سلام بابت این شش قسمت متشکرم ولی چرا ادامه ندادید؟خواهش میکنم ادامه بدید
بابت این آموزش 6 قسمتی که خیلی واضح و مفهوم بود متشکرم.
میخواستم درخواست کنم اگه امکانش هست این آموزش رو ادامش بدید ، چون واقعا با این لحنی که شما باهاش این آموزش رو نوشتید خیلی خوب میشه C++ رو یاد گرفت. باز هم ممنون.
سلام
اگه میشه در مورد کلاس ها در سی پلاس پلاس مطلب بذارید.
مرسی
سلام سوالم اینه در c++
میخوام درطی برنامه ی خواسته شده دستوری بنویسم که اگر کاربر کاراکتر yes را وارد کرد برانامه ادامه پیدا کنه (البته تا اینجاش روتقریبا بلدم)واگر کاربرکارکترnoرا وارد کرد ازبرنامه خارج شود.
من برای c++ کلاس میرم وجالب اینه که سخت ترین دستورات رویادگرفتم اما هنوزدستورخروج از برنامه بهم آموزش داده نشده
درضمن من ازکامپایلرdev++ استفاده میکنم وهمچنین بجای getch ازreturn استفاده میکنم.
باتشکر
سلام.
شما کافیه تابع exit رو صدا بزنید تا کارتون رو راه بندازه.
البته راه های دیگه ای هم وجود داره !
اینجا یه مثال هست که کارتو راه میندازه 😉
http://www.cplusplus.com/reference/cstdlib/exit
باتشکر از زحمات جنابعالی.
harf nadare faghat mikhastam beporsam ke edame nadare ?
to net kam peyda mishe injoor matalebi mikhastam khahesh konam ke edame bedin darbere CSS PHP C# va az in chiza
ba tashakor
سلام . من مهندسی it می خونم چون رشته مرتبط نیست برام سخته برنامه نویسی از تدریستون بسیار سپاسگذارم
با ارزش ترین کار دنبا آموزش دیگران و بالابردن سطح علمی انسانهاست واقعا از این بابت از شما تشکر میشود.
با تشکر بیکران
با سلام و تشکر فراوان از آموزش های با کیفیت و عالی تون
تا اینجا من فقط یک مشکل دارم اونم اینه که کد نویسی برام تو ویژوال استودیو خیلی سخته و همیشه موقع run کردن برنامه با خطاهای متعددی روبرو می شم یه وقتم می گه فایل exe مورد نظر را پیدا نمی کنه و . . . . لطفا یه آموزش جامع از اول ایجاد فایل C++ تا اجرای یک برنامه را به صورت تصویری قرار بدین پ
خیلی ممنون خدا قوت
سلام
خدا خیرت بده اگه این سوال منو جواب بدی یه دنیا ممنونت میشم .
با c++ میشه سیستم عاملی رو هم ساخت یا نه .
یا این که برای ساخت یک سیستم عامل به چه چیزی نیاز است
آقا دمت گرم.خیلی داری خجالت زدمون میکنی.
با تشکر فراووووون
با سلام من طرفدار پر و پا قرص شما هستم و تموم آموزشاتونو خوندم آقا خواهشا بعد از یک سال و شش ماه بیا دوباره شروع کن مردیم از انتظار..هی گفتیم شاید این هفته شروع کند شاید…