آموزش ++C – ساختار تکرار

۲ دیدگاه

در این نوشته به آموزش ساختار تکرار در ++c می‌پردازم. بدیهی است که اگر شما قبل از شروع برنامه‌نویسی الگوریتم و فلوچارت را به خوبی یاد گرفته باشید یادگیری این قسمت از برنامه نویسی چندان سخت نیست. با این وجود در این آموزش سعی بر آن شده است که مستقل از الگوریتم و فلوچارت به آموزش ساختار تکرار بپردازیم.

با این سوال شروع می‌کنیم: چرا به ساختار تکرار نیاز داریم؟ گاهی اوقات در نوشتن یک برنامه، باید عملیاتی را به صورت تکراری انجام دهیم. به طور مثال برنامه‌ای را در نظر بگیرید که صد عدد را از ورودی دریافت می‌کند و مجذور آن عدد را چاپ می‌کند. اگر بخواهید صد عدد را به روش معمول از ورودی بخوانید عملا کار غیرممکنی است. بنابراین باید ساختاری ایجاد کنیم که در آن یک قالب مشخص (مثلا در این مثال خواندن عدد و چاپ مجذور آن) صد بار تکرار شود. برای نوشتن ساختار تکرار در ++c می‌توان از حلقه while یا for استفاده کرد. در ساختار تکرار باید به سه مورد توجه ویژه داشت: ۱- مقداردهی اولیه به اندیسی که وظیفه شمارش تعداد دفعات تکرار دارد ۲- شرط ۳-آپدیت کردن اندیس.

در مثال زیر از حلقه while استفاده شده است و در ادامه حلقه for را توضیح خواهم داد:

مثال ۱: برنامه ای بنویسید که صد عدد دریافت کند و توان دوم آنها را چاپ کند.

توضیح کد:

در این برنامه متغیر i وظیفه کنترل تعداد دفعات تکرار دستورات حلقه while دارد. در خط ۸ مقداردهی اولیه به اندیس صورت گرفته است. در خط ۱۰ شرط ساختار تکرار مشخص شده است و تعبیر این خط این است: تا زمانیکه i کوچکتر از ۱۰۰ است این دستورات را انجام بده. در خط ۱۲ و ۱۳ دستورات ساختار تکرار مشخص شده است و در خط ۱۴ آپدیت کردن اندیس داریم.

نکته قابل ذکر دیگر این است که در خط ۱۳ از تابع pow استفاده شده است. این تابع که به تابع توان شناخته می‌شود دو پارامتر ورودی دارد. مثلا (۲,x)pow به معنی x به توان ۲ است. برای اینکه بتوانید از تابع pow استفاده کنید باید فایل سرآیند cmath را به ابتدای برنامه (خط ۲) اضافه کنید.

مثال ۲: برنامه‌ای بنویسید که که با دریافت n مجموع اعداد ۱ تا n را چاپ کند.

توضیح کد:

در ساختار تکرار با استفاده از متغیر i همه اعداد ۱ تا n تولید می‌شود. برای اینکه مجموع این اعداد را بتوانیم پیدا کنیم در هر مرحله از ساختار تکرار مقدار i را به sum اضافه می‌کنیم.

مثال ۳- برنامه‌ای بنویسید که مجموع اعداد طبیعی ضریب ۷ کوچکتر از n (که n را از ورودی دریافت می‌کند) چاپ کند.

تفاوت این مثال با سوال قبل در این است که در مثال قبل همه اعداد بین ۱ تا n را به sum اضافه می‌کردیم و در این مثال باید اعداد ضریب ۷ کوچکتر از n به sum اضافه شود:

مثال ۴: برنامه‌ای بنویسید که یک عدد دریافت کند و فاکتوریل آن را چاپ کند.

این مثال هم مانند مثال ۲ پیاده سازی شده است با این تفاوت که در مثال ۲ حاصلجمع اعداد ۱ تا n محاسبه می‌شود و در این مثال حاصلضرب اعداد ۱ تا n.

مثال ۵: برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و بزرگترین آنها را چاپ کند.

توضیح کد:

در این مثال ابتدا فرض میکنیم عدد اولی که کاربر وارد کرده است بزرگترین عدد است. بنابراین عدد اول را در متغیر max ذخیره می‌کنیم (خط ۹) سپس از اعداد دوم به بعد یکی یکی اعداد را خوانده و با max مقایسه می‌کنیم. چنانچه بیشتر بود max را آپدیت می‌کنیم.

مثال ۶: برنامه‌ای بنویسید که بزرگترین و دومین بزرگترین عدد را بین ۱۰۰ عددی که کاربر وارد می‌کند چاپ کند.

توضیح کد:

در این کد به دو متغیر max1 و max2 نیاز داریم. برای مقدار دهی اولیه به این دو متغیر ابتدا دو عدد از ورودی دریافت می‌کنیم (خط ۱۲) و با مقایسه آن دو max1 و max2 مقداردهی میکنیم. سپس از عدد سوم تا صدم تک تک اعداد را با max1 و max2 مقایسه میکنیم (خط ۲۳ و ۲۸) و متناسب با هر کدام از شرطها max2 و max1 آپدیت می‌شوند.

حلقه for

منطق حلقه for هم مانند while است. یعنی در نوشتن این ساختار باید سه نکته گفته شده دقت کرد: – مقداردهی اولیه به اندیسی که وظیفه شمارش تعداد دفعات تکرار دارد ۲- شرط ۳-آپدیت کردن اندیس. این سه قسمت را به صورت خلاصه به صورت زیر می‌توان نوشت:

برای مشاهده عکس در سایز بزرگتر بر روی عکس کلیک کنید.

به دلیل سادگی در نوشتن معمولا برنامه‌نویسان از for به جای while استفاده می‌کنند. (اجباری در این کار نیست و شما می‌توانید از while هر موقع که خواستید استفاده کنید.)

توضیحات تکمیلی حلقه for

قسمت  1   فقط یکبار قبل از اجرای حلقه اجرا می‌شود.
شرط قسمت  2   هر بار قبل از اجرای دستورات حلقه چک می‌شود، اگر مقدار آن false شود از حلقه خارج شده و اولین خط بعد از حلقه اجرا می‌شود و اگر مقدار آن true باشد دستورات داخل حلقه for اجرا می‌شود.
بعد از اجرای تمام دستورات حلقه قسمت  3  اجرا می‌شود و بعد از آن شرط قسمت ۲ چک می‌شود.

مثال ۷: برنامه‌ای بنویسید که از ورودی عدد n را دریافت کند و nامین جمله دنباله فیبوناچی را چاپ کند.

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

توضیحات کد:

در این کد به سه متغیر a و b و c نیاز داریم. در واقع قرار است جمله قبلی (b) با جمله قبل تر (a) جمع شود و جمله فعلی (c) محاسبه شود. در خط ۹ و ۱۰ مقادیر a و b را با توجه به تعریف دنباله فیبوناچی با یک مقداردهی کردیم. و در ساختار for در هر مرحله مجموع a و b را در c ذخیره میکینیم (خط ۱۴) در ادامه برای اینکه بتوانیم در دور بعدی c جدید را بسازیم باید مقادیر a و b را به روز رسانی کنیم (خط ۱۵ و ۱۶) به این صورت که مقدار جدید a برابر با مقدار b ومقدار جدید b برابر با مقدار c خواهد شد.

مثال ۸– برنامه ای بنویسید که یک عدد از ورودی دریافت کند و تشخیص دهد که عدد اول است یا خیر.

عددی اول است که به جز خودش و یک بر عدد دیگری بخش‌پذیر نباشد. مثلا عدد ۱۳ به این دلیل اول است که نه بر ۲ بخش‌پذیر است، نه ۳، نه ۴ و … و نه ۱۲. بنابراین x اول است اگر بر اعداد ۲ تا x-1 بخش‌پذیر نباشد.

توضیحات کد:

در این مثال از متغیر flag استفاده شده است که از توع bool است. در متغیرهایی از جنس bool فقط می‌توان مقدار true یا false ذخیره کرد. متغیر flag یک متغیر کاربردی در برنامه نویسی است. در این مثال flag را با true مقداردهی کرده‌ایم و فرض کردیم عدد اول است. در ادامه کد به دنبال تایید یا رد این فرضیه هستیم. به همین دلیل همه اعداد ۲ تا x-1 را بررسی میکنیم که آیا x بر آنها بخش پذیر است یا خیر. چنانچه عددی پیدا شد که x بر آن بخش‌پذیر باشد نتیجه میگیریم که عدد اول نیست و flag را برابر false قرار می‌دهیم.

نکته بعدی که در این مثال قابل ذکر است دستور break است. (خط ۱۵) این دستور موجب خروج از داخلی‌ترین حلقه تکرار می‌شود . مثلا اگر x=15 وارد شود به ازای i=3 مقدار شرط (خط ۱۳) true می‌شود بنابراین مقدار flag تغییر می‌کند و با استفاده دستور break از حلقه for خارج می‌شویم. (یعنی مقدار i از سه بیشتر نمی‌شود و دستورات for دیگر اجرا نمی‌شود.)

دستور دیگری که در ساختار تکرار استفاده می‌شود و در مورد آن صحبتی نشده است دستور continue است. دستور continue موجب می‌شود مابقی دستورات بدنه اجرا نشوند و دور بعدی کد اجرا شود. مثلا در کد زیر وقتی که مقدار اندیس برابر ۴ می‌شود دستور continue ادامه دستورات ساختار تکرار را اجرا نمی‌کند و وارد دور بعدی ساختار تکرار می‌شود. یعنی دستور ++i اجرا می‌شود، i برابر ۵ می‌شود، شرط ۸=>i چک می‌شود و اینبار به ازای i برابر ۵ وارد ساختار تکرار می‌شود:

در این نوشته ساختار تکرار را با هم مورد بررسی قرار دادیم. بد نیست بدانید ساختار دیگری به نام do while نیز وجود دارد که برای یادگیری این روش می‌توانید این لینک را مطالعه کنید (کلیک کنید)

  • نویسنده
    حمید جهانگیری
  • تعداد بازدید
    1,984
۲دیدگاه فرستاده شده است.
شما هم دیدگاه خود را بنویسید
نوشته‌های ویژه
اخبار ویژه

با عضویت در خبرنامه، تازه‌ترین نوشته‌های وبلاگ را در ایمیل‌تان دریافت کنید.
برای عضویت نشانی ایمیل خود را وارد کرده و بر روی دکمه عضویت کلیک نمایید.