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

در این مطلب، ۲۴ نمونه سوال حلقه for در سی شارپ با جواب مطرح شدند. ابتدا سوال را نوشته و سپس کدهای مربوط به جواب را قرار دادهایم. در آخر هم هر کدام از کدها را با توجه به پیچیدگی و وظیفهشان توضیح دادیم. جواب تمام سوالات این مطلب با کمک حلقه for نوشته شدهاند.
نمونه سوال حلقه for در سی شارپ با جواب برای چاپ ۱۰ عدد طبیعی
در این تمرین قرار است که برنامهای را برای نمایش ۱۰ عدد اول طبیعی بنویسیم. خروجی این برنامه باید برابر با 1 2 3 4 5 6 7 8 9 10 باشد. توانایی کار با انواع حلقهها در سی شارپ فقط بخشی از قدرت این زبان را در اختیار توسعهدهندگان قرار میدهد. برای یادگیری عمیقتر و بهرهبرداری کامل از توانمندیهای سیشارپ، استفاده از منابع آموزشی کاملتر ضروری است. به این منظور پیشنهاد میکنیم که فیلم آموزش کاربردی برنامه نویسی سی شارپ را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در کادر زیر پاسخ این مسئله را نوشتهایم.
در فهرست زیر، تمام عملیات انجام شده در حلقه for را توضیح دادهایم.
- با کد i = 1 مقدار اولیهی i برابر 1 قرار داده شده است.
- تا وقتی i <= 10 باشد، حلقه ادامه دارد.
- با کمک عبارت i++ در هر تکرار، مقدار i یک واحد افزایش مییابد.
- در هر دور از حلقه با استفاده از عبارت Console.Write(“{0} “, i);، مقدار i چاپ میشود.
در نتیجه، اعداد طبیعی 1 تا 10 به ترتیب چاپ میشوند. در کد بالا حلقه for در مجموع 10 بار اجرا میشود.

نمایش اعداد طبیعی و جمع آنها
در این بخش از مطلب، نمونه سوال حلقه for در سی شارپ با جواب را درباره نمایش اعداد طبیعی و جمع آنها بررسی کردهایم. در سوال خواسته شده برنامهای بنویسیم که از کاربر یک عدد دریافت کند. سپس تمام اعداد طبیعی کوچکتر یا مساوی آن عدد را چاپ کرده و در نهایت مجموع این اعداد را نیز محاسبه و چاپ کند.
برای مثال، اگر به این برنامه عدد 7 را ارسال کنیم، باید جوابی به شکل زیر در خروجی نمایش داده شود.
The first 7 natural numbers are: 1 2 3 4 5 6 7 The Sum of Natural Numbers up to 7 terms : 28
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا سه متغیر i و n و sum = 0 را با نوع داده int تعریف کردیم. سپس مقداری را به عنوان ورودی از کاربر دریافت کرده و به متغیر n اختصاص دادیم.
بدنه اصلی حل مسئله در داخل حلقه for قرار دارد. در فهرست زیر، عملیات انجام شده در حلقه for را به صورت کامل توضیح دادهایم.
- با کد i = 1 مقدار اولیهی i برابر 1 قرار داده شده است.
- تا وقتی i <= n باشد، حلقه ادامه دارد.
- با کمک عبارت i++ در هر تکرار، مقدار i یک واحد زیاد میشود.
- در هر گردش حلقه، مقدار i با استفاده از عبارت Console.Write(“{0} “, i); چاپ میشود.
- سپس با دستور sum += i; مقدار i به متغیر sum اضافه میشود.
در نتیجه، اعداد طبیعی از 1 تا n به ترتیب چاپ شده و حاصل جمع آنها نیز در متغیر sum ذخیره میشود. در کد بالا، حلقه for در مجموع n بار اجرا میشود.
دریافت چند ورودی و محاسبه میانگین و جمع آنها
در این مسئله باید برنامهای بنویسیم که 10 مقدار مختلف از کاربر دریافت کند. سپس تمام متغیرها را با یکدیگر جمع کرده و نتیجه و مقدار میانگین آنها را به بیرون برگرداند. خروجی این برنامه باید مانند کادر زیر باشد.
The sum of 10 no is : 51 The Average is : 5.100000
نکته: اعداد نمایش داده شده در کادر بالا براساس مقادیری تولید شدهاند که ما وارد کردهایم. وارد کردن مقادیر مختلف میتواند خروجیهای متفاوتی تولید کند.

در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا چهار متغیر i و n و sum = 0 و avg را تعریف کردیم. متغیر avg از نوع Double است زیرا ممکن است مقدار میانگین اعشاری شود. سپس از کاربر خواستهایم که 10 عدد را وارد کند و بعد مجموع و میانگین آنها را محاسبه کردهایم.
عملیات انجام شده در حلقه for را در فهرست زیر، توضیح دادهایم.
- با کد i = 1 مقدار اولیهی شمارنده i برابر 1 قرار داده شده است.
- تا وقتی i <= 10 باشد، حلقه ادامه دارد.
- با کمک عبارت i++ در هر تکرار، مقدار i یک واحد افزایش پیدا میکند.
- در هر دور از حلقه، یک عدد از کاربر گرفته شده و در متغیر n ذخیره میشود.
- سپس با عبارت sum += n عدد وارد شده بهsum اضافه میشود.
بعد از پایان حلقه، مجموع ۱۰ عدد وارد شده در متغیر sum قرار میگیرد. برای محاسبهی میانگین، مجموع را بر عدد ۱۰ تقسیم کرده و در متغیر avg ذخیره کردیم. در مثال بالا، حلقه for، ده بار اجرا میشود.
فیلم های آموزشی سی شارپ در فرادرس
استفاده از فیلمهای آموزشی سی شارپ در فرادرس، یادگیری این زبان را برای همه سطوح – از مبتدی تا حرفهای – آسان کرده است. این فیلمها همگی توسط اساتید با تجربه تهیه شدهاند. فیلمهای فرادرس از مباحث پایهای مانند سینتکس تا موضوعات پیشرفتهای مثل برنامه نویسی شیءگرا و پروژههای عملی را پوشش میدهند. این فیلمها رویکردی مثالمحور دارند. با مشاهده این فیلمها در مدت زمان کوتاهی سی شارپ را یاد گرفته و در آن مهارت پیدا میکنید.

C# به خوبی با سیستمها و فناوریهای مختلف ترکیب شده و به عنوان یک زبان ساده، امن و انعطافپذیر شناخته میشود. این زبان برنامه نویسی در حوزههای متنوعی مثل ساخت نرمافزارهای دسکتاپ، وب، موبایل و همچنین بازیها کاربرد دارد. بنابراین افراد زیادی برای رسیدن به موقعیتهای شغلی دلخواه خود سی شارپ را یاد میگیرند. فرادرس – با توجه به نیاز کشور به نیرو انسانی متخصص – تلاش کرده است تا با کیفیتترین دورهها را تولید و منتشر کند. برای یاد گرفتن زبان برنامه نویسی #C کافی است به وبسایت فرادرس سر بزنید و دوره مناسب خود را انتخاب کنید.
در بالا چند مورد از فیلمهای این مجموعه آموزشی را معرفی کردهایم. برای مشاهده فیلمهای بیشتر بر روی تصویر بالا کلیک کنید.
نمونه سوال حلقه for در سی شارپ با جواب برای محاسبه مکعب اعداد
در این مسئله باید برنامهای بنویسیم که عدد صحیحی را از کاربر دریافت کند. سپس توان سوم تمام مقادیر کوچکتر یا مساوی آن عدد را محاسبه کند. حد پایین مقادیر کوچکتر از آن عدد 1 است.
برای مثال، با فرض ارسال کردن عدد 5 به عنوان ورودی، برنامه باید خروجی زیر را تولید کرده و نمایش دهد.
Input number of terms : 5 Number is : 1 and cube of the 1 is :1 Number is : 2 and cube of the 2 is :8 Number is : 3 and cube of the 3 is :27 Number is : 4 and cube of the 4 is :64 Number is : 5 and cube of the 5 is :125
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا دو متغیر i و ctr را تعریف کردهایم. سپس از کاربر خواستهایم عددی را وارد کند. با توجه به مقدار وارد شده توسط کاربر، مشخص میشود که چند عدد باید بررسی شوند. عدد وارد شده توسط کاربر در متغیر ctr ذخیره میشود.
در فهرست زیر، عملیات انجام شده در حلقه for را به صورت کامل توضیح دادهایم.
- مقدار اولیهی شمارنده i برابر 1 قرار داده شده است.
- تا وقتی i <= ctr باشد، حلقه ادامه دارد.
- با کمک عبارت i++ در هر تکرار، مقدار i یک واحد افزایش مییابد.
- در هر دور از حلقه، مقدار مکعب i با فرمول i * i * i محاسبه میشود.
- سپس عدد i و مکعب آن با استفاده از دستور Console.Write(“Number is …) به کاربر نشان داده میشوند.

در نتیجه اجرای برنامه بالا عددهای 1 تا ctr و مکعب آنها در خروجی، چاپ میشوند. در کد بالا، حلقه for به اندازه مقدار ذخیره شده در متغیر ctr اجرا میشود. مقدار این متغیر را کاربر قبلا وارد کرده است.
نمونه سوال حلقه for در سی شارپ با جواب برای نمایش مضارب عدد
در این مسئله باید برنامهای را بنویسیم که ابتدا مقداری را با نوع عدد صحیح از کاربر دریافت کند. سپس تمام مضارب این مقدار را از 1 تا 10 نمایش دهد. برای مثال، فرض کنیم کاربر عدد 15 را وارد کرده است. خروجی برنامه باید به شکل زیر باشد.
Input the number (Table to be calculated) : 15 15 X 1 = 15 15 X 2 = 30 15 X 3 = 45 15 X 4 = 60 15 X 5 = 75 15 X 6 = 90 15 X 7 = 105 15 X 8 = 120 15 X 9 = 135 15 X 10 = 150
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا دو متغیر j و n را تعریف کردیم. هر دو متغیر با نوع عدد صحیح، تعریف شدهاند. متغیر n برای گرفتن عددی است که میخواهیم جدول ضرب آن را نمایش دهیم. پس باید مقدار گرفته شده از کاربر را در متغیر n ذخیره کنیم.
در فهرست زیر، عملیات انجام شده در حلقه for را توضیح دادهایم.
- با کد j = 1 مقدار اولیهی j برابر 1 قرار داده شده است.
- تا وقتی j <= 10 باشد، حلقه ادامه دارد.
- با کمک عبارت j++ در هر تکرار، مقدار j یک واحد افزایش پیدا میکند.
- در هر دور از حلقه، حاصلضرب n در j محاسبه میشود.
- سپس حاصل ضرب به همراه اعداد n و j - در قالب جدول ضرب – نمایش داده میشوند.
در این کد در مجموع، حلقه for، ۱۰ بار اجرا میشود.

نمایش محدود جدول ضرب
برنامهای بنویسید که عددی را از کاربر دریافت کند. سپس به اندازه عدد دریافت شده، ستونهای جدول ضرب را نمایش دهد. ردیفهای این جدول ضرب از 1 تا 10 است.
به عنوان نمونه فرض کنیم که کاربر عدد 5 را وارد کند. خروجی این برنامه باید به شکل زیر شود.
Input up to the table number starting from 1 : 5 Multiplication table from 1 to 5 1x1 = 1, 2x1 = 2, 3x1 = 3, 4x1 = 4, 5x1 = 5 1x2 = 2, 2x2 = 4, 3x2 = 6, 4x2 = 8, 5x2 = 10 1x3 = 3, 2x3 = 6, 3x3 = 9, 4x3 = 12, 5x3 = 15 1x4 = 4, 2x4 = 8, 3x4 = 12, 4x4 = 16, 5x4 = 20 1x5 = 5, 2x5 = 10, 3x5 = 15, 4x5 = 20, 5x5 = 25 1x6 = 6, 2x6 = 12, 3x6 = 18, 4x6 = 24, 5x6 = 30 1x7 = 7, 2x7 = 14, 3x7 = 21, 4x7 = 28, 5x7 = 35 1x8 = 8, 2x8 = 16, 3x8 = 24, 4x8 = 32, 5x8 = 40 1x9 = 9, 2x9 = 18, 3x9 = 27, 4x9 = 36, 5x9 = 45 1x10 = 10, 2x10 = 20, 3x10 = 30, 4x10 = 40, 5x10 = 50
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، سه متغیر j و i و n تعریف شدهاند. متغیر n عددی را از کاربر دریافت کرده و ذخیره میکند. متغیرهای i و j هم برای استفاده در حلقههای تودرتو به کار میروند. عدد ذخیره شده در متغیر n تعداد ستونهای جدول ضرب را تعیین میکند. برای حل این مسئله از حلقه for به شکل تودرتو استفاده کردهایم.
در فهرست زیر، عملیات انجام شده در حلقه for بیرونی توضیح داده شده است.
- شمارنده حلقه بیرونی از مقدار i = 1 شروع میشود.
- تا وقتی i <= 10 باشد، حلقه ادامه دارد.
- با هر تکرار، مقدار i یک واحد افزایش پیدا میکند.
- این حلقه ۱۰ بار اجرا میشود. در هر دور از حلقه با توجه به مقدار i یک ردیف از جدول ضرب چاپ میشود.
در داخل حلقهی بیرونی، حلقهی دیگری وجود دارد. از متغیر j به عنوان شمارنده این حلقه استفاده کردهایم. روش کار حلقه درونی در فهرست زیر نوشته شده است.
- حلقه درونی با مقدار j = 1 کار خود را شروع میکند.
- تا وقتی j <= n باشد، حلقه ادامه دارد.
- با هر تکرار، مقدار j یک واحد زیاد میشود.
- این حلقه برای هر مقدار i، اعداد 1 تا n را ضرب میکند.
- برای نشان داده نشدن علامت , در خط آخر از دستور شرطی if استفاده کردهایم.
- اگر j کوچکتر از n باشد، حاصل ضرب به صورت jxi = جواب با علامت , چاپ میشود.
- اما اگر j برابر n باشد، فقط حاصل ضرب چاپ میشود و علامت , نمایش داده نمیشود.

در نتیجه، جدول ضرب اعداد 1 تا n به صورت ستونی چاپ میشود. در کد بالا، حلقه بیرونی ۱۰ بار و حلقه درونی n بار برای هر تکرار اجرا میشود.
نمونه سوال حلقه for در سی شارپ با جواب برای محاسبه مجموع اعداد فرد
برنامهای بنویسید که مقداری را به عنوان ورودی از کاربر دریافت کند. سپس تمام اعداد مثبت فرد کوچکتر از مقدار دریافت شده را نوشته و مجموع آنها را حساب کند. در نهایت، حاصل جمع بدست آمده باید در خروجی چاپ شود.
برای مثال، فرض کنیم که کاربر عدد 5 را به عنوان ورودی به برنامه ارسال کرده است. خروجی باید به شکل زیر باشد.
Input number of terms : 5 The odd numbers are :1 3 5 7 9 The Sum of odd Natural Numbers up to 5 terms : 25
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، سه متغیر i و n و sum تعریف شدهاند. این متغیرها را در فهرست زیر معرفی کردهایم.
- متغیر n برای دریافت عدد مورد نظر کاربر استفاده میشود.
- متغیر i به عنوان شمارنده حلقه به کار میرود.
- متغیر sum برای ذخیره جمع اعداد فرد استفاده میشود.
در خط ۱۵، عددی را از کاربر گرفته و در متغیر n ذخیره میکنیم. برای تولید اعداد فرد در حلقه for از عبارت (2 * i – 1) استفاده کردهایم. در هر چرخش حلقه، عدد فرد در کنسول سی شارپ نمایش داده میشود. سپس این عدد را به متغیر sum اضافه میکنیم. در نهایت هم مجموع اعداد فرد از 1 تا n نمایش داده میشود.

نمایش الگوی مثلث قائمالزاویه با ستاره
باید برنامهای بنویسیم که مقداری را به عنوان ورودی از کاربر دریافت کند. سپس بر اساس این مقدار، مثلث قائمالزاویهای با الگوی زیر رسم کند. در این مثال فرض شده که کاربر عدد 10 را وارد کرده است. تعداد سطر و ستون ستارههای مثلث برابر با مقدار وارد شده توسط کاربر هستند.
Input number of rows : 10 * ** *** **** ***** ****** ******* ******** ********* **********
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، سه متغیر i و j و rows تعریف شدهاند. متغیر rows برای دریافت تعداد ردیفها از کاربر استفاده میشود. متغیرهای i و j نیز به عنوان شمارنده در حلقهها به کار میروند. در خط ۱۵ از کد بالا، تعداد ردیفها از کاربر دریافت شده و در متغیر rows ذخیره میشود. بر اساس مقدار متغیر rows و با کمک حلقه for الگوی مورد نظر چاپ میشود.
در فهرست زیر، عملیات انجام شده در دو حلقه تو در تو – حلقه for بیرونی و درونی – به صورت کامل توضیح داده شده است.
- حلقه بیرونی با مقدار i = 1 شروع به کار میکند.
- تا وقتی i <= rows باشد، کار حلقه ادامه دارد.
- با هر تکرار، مقدار i یک واحد افزایش مییابد.
- این حلقه برای هر مقدار i یک ردیف از الگو را چاپ میکند. برای چاپ هر ردیف از الگو حلقه درونی باید یه دور کامل پیمایش کند.

در فهرست زیر هم روش کار حلقه for درونی را نوشتهایم.
- کار حلقه درونی با مقدار j = 1 شروع میشود.
- تا وقتی j <= i باشد، حلقه ادامه دارد.
- با هر تکرار، مقدار j یک واحد افزایش مییابد.
- با هر گردش این حلقه، یک ستاره «*» چاپ میشود.
- در پایان هر تکرار حلقهی درونی، کد Console.Write(“n”); در حلقه بیرونی اجرا میشود. با کمک این کد، ادامه رسم ستارهها در خط بعدی انجام میشود. به این صورت میتوانیم الگوی مثلثی درست کنیم.
در نتیجه، الگوی ستارهها به شکل مثلث قائمالزاویهای چاپ میشود. ضلع قائم این مثلث در سمت چپ آن قرار دارد. در کد بالا، حلقه بیرونی به مقدار متغیر rows و حلقه درونی به اندازه i اجرا میشوند.

مثلث قائمالزاویه با اعداد
در این مسئله عددی را از کاربر دریافت میکنیم. باید با عدد دریافت شده از کاربر مثلث قائمالزاویهای ایجاد کنیم. تعداد ردیفها و ستونهای تشکیل دهنده این مثلث برابر با مقدار دریافت شده است. عناصر تشکیل دهنده این مثلث هم باید اعداد صحیح کوچکتر یا مساوی عدد دریافت شده باشند.
فرض کنیم که کاربر عدد 10 را وارد کرده است. خروجی این برنامه باید به شکل زیر نمایش داده شود.
Input number of rows : 10 1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، سه متغیر i و j و rows تعریف شدهاند. از متغیر rows برای دریافت تعداد ردیفها از کاربر استفاده میشود. متغیرهای i و j برای استفاده در حلقهها – به عنوان شمارنده – به کار میروند. در خط شماره ۱۵ کد بالا، تعداد ردیفها از کاربر دریافت شده و در متغیر rows ذخیره میشود. الگوی مورد نظر را با کمک این متغیر میسازیم.
برای حل این مسئله هم باید از دو حلقه به صورت تودرتو استفاده کنیم. در فهرست زیر، عملیات انجام شده در حلقه for بیرونی به صورت کامل توضیح داده شده است.
- اجرای کار حلقه بیرونی با مقدار i = 1 شروع میشود.
- تا وقتی i <= rows باشد، حلقه ادامه دارد.
- با هر تکرار، مقدار i یک واحد زیاد میشود.
- این حلقه برای هر مقدار i یک ردیف از الگو را چاپ میکند.
در داخل حلقهی بیرونی، از حلقهی for درونی استفاده کردهایم. در فهرست زیر، مراحل انجام کار حلقه for درونی را توضیح دادهایم.
- شمارنده حلقه درونی از مقدار j = 1 شروع میشود.
- تا وقتی j <= i باشد، حلقه ادامه دارد.
- با هر تکرار، مقدار j یک واحد افزایش مییابد.
- در این حلقه، هر بار فقط مقدار j - بین 1 تا i - چاپ میشود.
- در پایان هر بار پیمایش کامل حلقهی درونی، با استفاده از عبارت Console.Write(“n”); به خط جدید منتقل میشویم. به این صورت الگوی مثلثی درست میشود.

در نتیجه، الگوی اعداد به شکل مثلث قائمالزاویه چاپ میشود. در کد بالا، حلقه بیرونی به اندازه مقدار متغیر rows و حلقه درونی در هر تکرار، برابر با مقدار متغیر i اجرا میشود.
مثلث قائمالزاویه با ردیفهای یکسان
در این مسئله هم باید مثلث قائمالزاویه رسم کنیم. البته این دفعه از عناصر عددی بهجای ستاره استفاده میکنیم. تعداد ردیفهای تشکیل دهنده مثلث باید توسط کاربر وارد شوند. ردیفهای مثلث از بالا به پایین با مقدار اعداد یکسان ایجاد میشوند.
برای درک بهتر سوال، فرض کنیم که کاربر عدد 7 را وارد کرده است. این برنامه باید خروجی مانند مورد پایین، تولید کند.
Input number of rows : 7 1 22 333 4444 55555 666666 7777777
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در این کد، از سه متغیر i و j و rows استفاده شده است.
-
متغیر rows برای دریافت تعداد ردیفها از کاربر استفاده میشود.
-
متغیرهای i و j هم به عنوان شمارنده در حلقهها به کار میروند.
عملیات کد به این صورت است.
-
از کاربر خواسته میشود که تعداد ردیفها را وارد کند. این تعداد در متغیر rows ذخیره میشود.
-
سپس، حلقه بیرونی – حلقه اول – از 1 تا rows گردش میکند. این حلقه در ردیف، مقدار i را چاپ میکند. i نشاندهنده شماره ردیف است.
-
حلقه درونی وظیفه چاپ مقدار i را برعهده دارد. در هر گردش حلقه درونی یک بار i چاپ میشود. حلقه درونی همیشه به اندازه i اجرا میشود. یعنی اینکه در هر ردیف، شماره ردیف به تعداد خود خودش تکرار میشود.
بعد از به پایان رسیدن کار حلقه درونی با استفاده از کد Console.Write(“n”); برنامه به خط جدید میرود. در نتیجه الگوی مثلثی به درستی نمایش داده میشود.
مثلث قائمالزاویه با اعداد زیاد شونده
در این مسئله باید برنامهای بنویسیم که در ورودی، عددی را از کاربر دریافت کند. سپس مثلث قائمالزاویهای با عناصر چپچین ایجاد کند. عدد داده شده، تعداد سطرهای مثلث را تعیین میکند. عناصر این مثلث هم به ترتیب از 1 به بالا زیاد میشوند.

برای مثال، فرض کنیم که کاربر عدد 5 را وارد کرده است. برنامه باید خروجی به شکل زیر تولید کند.
Input number of rows : 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا چهار متغیر i و j و rows و k = 1 را با نوع داده int تعریف کردیم. سپس مقداری را از کاربر دریافت کرده و به متغیر rows اختصاص میدهیم. برای حل این مسئله هم از دو حلقه for به صورت تودرتو استفاده شده است.
حلقه for بیرونی وظیفه ساخت سطرها را برعهده دارد. در فهرست زیر، عملیات حلقه for بیرونی را توضیح دادهایم.
- با کد i = 1 مقدار اولیهی i برابر 1 قرار داده شده است.
- تا وقتی i <= rows باشد، این حلقه ادامه دارد. rows همان مقدار وارد شده توسط کاربر است.
- با هر بار تکرار، مقدار i یک واحد افزایش مییابد.
- در هر بار اجرای حلقه بیرونی، حلقه درونی پیمایش خود را به صورت کامل انجام میدهد.
نکته: میتوان گفت که حلقه درونی به مقدار متغیر rows پیمایش کامل انجام میدهد.
در فهرست پایین هم عملیات حلقه for درونی را توضیح دادهایم. این حلقه وظیفه مقداردهی به ستونها را برعهده دارد.
- در حلقه دوم مقدار اولیهی j برابر 1 قرار داده شده است.
- تا وقتی j <= i باشد، حلقه ادامه دارد.
- در هر تکرار، مقدار j یک واحد افزایش مییابد.
- در هر دور از این حلقه، اول مقدار k چاپ شده و سپس با دستور k++ یک واحد به آن اضافه میشود.
در پایان هر دور از حلقه اول – بیرونی – با دستور Console.Write(“n”) به خط بعدی میرویم. در نتیجه، مثلث قائمالزاویهای با اعداد پشت سر هم ساخته میشود. هر کدام از اعداد تشکیل دهنده مثلث، از قبلی یک واحد بیشتر است. در ردیف اول یک عدد، در ردیف دوم دو عدد، و به همین ترتیب تا آخر چاپ میشود.

رسم هرم با اعداد زیاد شونده
در این مسئله باید یک هرم رسم کنیم. سوال به این صورت است که ابتدا عددی را از کاربر دریافت میکنیم. این عدد تعداد سطرهای هرم را مشخص میکند. عناصر هرم از اعداد پشت سر هم ساخته میشوند. اعداد سازنده هرم از 1 شروع شده و به ترتیب، به مقدار یک واحد زیاد میشوند.
برای مثال، فرض کنیم که کاربر عدد 5 را ارسال کرده است. برنامه باید هرم زیر را تولید کرده و در خروجی نشان دهد.
Input number of rows : 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا ابتدا شش متغیر i و j و k و spc و rows و t = 1 را از نوع داده int تعریف کردیم.
- از متغیرهای i و j برای پیمایش در حلقهها استفاده میکنیم.
- از متغیر spc برای شمارش فضای خالی در سمت چپ عناصر هرم استفاده میکنیم.
- متغیر rows را برای تعیین تعداد سطرها به کار میبریم.
- متغیر k شمارنده حلقه مربوط به رسم فضای خالی است.
- متغیر t هم شماره عناصر را نگهداری میکند.
بعد از تعریف متغیرها، عددی را به عنوان ورودی از کاربر دریافت کرده و به متغیر rows اختصاص دادیم. سپس، مقدار اولیهی متغیر spc را برابر با rows + 3 قرار دادیم. با کمک این متغیر، فاصلههای اولیه برای ساختن شکل هرم به درستی تنظیم میشود. در این مسئله از سه حلقه for استفاده کردهایم. یک حلقه for بیرونی و دو حلقه for درونی در کدهای بالا وجود دارند.

در فهرست زیر، عملیات انجام شده در حلقه for بیرونی را توضیح دادهایم.
- کار این حلقهی با شمارنده i = 1 شروع میشود.
- تا وقتی i کوچکتر یا مساوی rows باشد، حلقه بیرونی به گردش خود ادامه میدهد.
- در هر تکرار، مقدار i یک واحد زیاد میشود.
در داخل این حلقه، دو حلقهی درونی وجود دارند. حلقه اول برای چاپ فضای خالی و حلقه دوم برای چاپ عناصر استفاده شدهاند.
در فهرست زیر، روش کار شمارنده حلقهی درونی اول را توضیح دادهایم.
- مقدار اولیهی k برابر با spc است.
- تا وقتی k بزرگتر یا مساوی 1 باشد، حلقه به کار خود ادامه میدهد.
- در هر تکرار، فقط یک فاصله – فضای خالی – چاپ میشود. همچنین مقدار k به اندازه یک واحد کم میشود.
این کار باعث میشود اعداد در وسط صفحه و به شکل هرم قرار بگیرند. در فهرست پایین هم روش کار حلقهی درونی دوم را توضیح دادیم.
- مقدار اولیهی شمارنده j برابر 1 است.
- تا وقتی j کوچکتر یا مساوی i باشد، حلقه به کار خود ادامه میدهد.
- در هر تکرار، مقدار t چاپ شده و یک واحد هم به آن افزوده میشود.
در پایان هر دور از حلقهی اول، یک خط جدید چاپ میشود. سپس مقدار spc یک واحد کاهش مییابد. این کاهش، باعث میشود که در خط بعد، فضای خالی سمت چپ هرم کمتر شود. در نتیجه ساختار هرم به درستی شکل میگیرد. در نهایت، خروجی برنامه، هرم عددی است که عناصر آن از 1 شروع شده و به ترتیب افزایش مییابند. در ردیف اول یک عدد، در ردیف دوم دو عدد، و به همین ترتیب ادامه پیدا میکند.
چاپ سری هارمونیک اعداد
برنامهای بنویسید که یک عدد از کاربر دریافت کند. سپس سری هارمونیک آن عدد را محاسبه کرده و همراه با حاصل جمع آنها نمایش دهد.
برای مثال، فرض کنیم که عدد 7 را به برنامه ارسال کردهایم. برنامه باید خروجی زیر را تولید کرده و نمایش دهد.
Input the number of terms : 7 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 + Sum of Series upto 7 terms : 2/5928571671247482
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
ابتدا دو متغیر i و n را با نوع داده int و متغیر s را با نوع داده double و مقدار اولیه 0.0 تعریف کردیم. سپس – در خط ۱۶ – مقداری را به عنوان ورودی از کاربر دریافت کرده و به متغیر n اختصاص دادیم.

در فهرست زیر، عملیات انجام شده در حلقه for را به صورت کامل توضیح دادهایم.
- با کد i = 1 مقدار اولیهی i برابر 1 قرار داده شده است.
- تا وقتی i <= n باشد، حلقه ادامه دارد.
- با هر بار تکرار، مقدار i یک واحد افزایش مییابد. تمام عملیات بالا در خط ۲۱ کد پیادهسازی شدهاند.
- در هربار پیمایش حلقه، با دستور Console.Write(“1/{0} + “, i); جملهای از سری هارمونیک چاپ میشود.
- سپس با دستور s += 1 / (float)i; مقدار 1 تقسیم بر i محاسبه شده و به متغیر s اضافه میشود.
در پایان حلقه، جمع کل سری هارمونیک از 1 تا n محاسبه شده و با دستور زیر، نمایش داده میشود.
Console.Write("nSum of Series upto {0} terms : {1} n", n, s) ;
در نتیجه، برنامه سری هارمونیک را تا تعداد n محاسبه کرده و همراه با حاصل جمع عبارات بدست آمده، نمایش میدهد.
لازم است که مهارت کار با حلقههای مختلف زبان سی شارپ را بدست بیاوریم. به همین دلیل چند نمونه سوال حلقه for در سی شارپ با جواب را در این مطلب مطرح کردهایم. اما نکات مهمی هستند که باید در زمان کار با حلقهها به آنها توجه کنیم. یکی از این نکات، شناخت انواع متغیر در سی شارپ است. بعضی از این متغیرها را میتوانیم در خارج از حلقه هم استفاده کنیم اما بعضی از متغیرها بیرون حلقه در دسترس نیستند. به همین دلیل پیشنهاد میکنیم که مطلب مربوط به این موضوع را در مجله فرادرس مطالعه کنید.
نمونه سوال حلقه for در سی شارپ با جواب درباره رسم هرم با ستاره
برنامهای باید بنویسید که ویژگیهای زیر را داشته باشد.
- شکل هرمی ایجاد کند.
- تعداد سطرهای هرم توسط کاربر مشخص شود.
- در هر ردیف به تعداد عدد فرد * وجود داشته باشد. در واقع عناصر تشکیل دهنده هرم، کاراکتر ستاره هستند.
برای حل این مسئله، ابتدا مقداری را از کاربر دریافت بکنید. این مقدار تعداد سطرهای هرم را تعیین میکند.
فرض کنیم که کاربر عدد 6 را به این برنامه ارسال کرده است. خروجی تولید شده توسط برنامه باید به شکل زیر نمایش داده شود.
Input number of rows for this pattern :6 * *** ***** ******* *********
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در خط ۷ از کد بالا سه متغیر i و j و n را با نوع داده int تعریف کردیم. سپس – در خط ۱۵ – مقداری را به عنوان ورودی از کاربر دریافت کرده و به متغیر n اختصاص دادیم. متغیر n برای تعیین تعداد سطرهای هرم به کار میرود. برای حل این مسئله از سه حلقه for به صورت تودرتو استفاده کردهایم.
در فهرست زیر، عملیات انجام شده در حلقه for بیرونی را به صورت کامل توضیح دادهایم.
- حلقه اول برای ساخت سطرها به کار میرو. شمارنده این حلقه از 0 تا n-1 تنظیم شده است. با هربار گردش کامل این حلقه مقدار i یک واحد زیاد میشود.
- در هر دور از حلقه اول، یک حلقه داخلی برای چاپ فاصله – سمت چپ ستارهها – وجود دارد. این حلقه را حلقه درونی اول مینامیم.
- شمارنده حلقه درونی اول به شکل j = 1; j <= n – i; j++ تنظیم شده است.
- با هربار گردش حلقه درونی اول یک فضای خالی، در الگو رسم میشود.
- کار این حلقه تا زمانی ادامه دارد که تعداد فاصلهها برابر با n – i شود.
- سپس، یک حلقه دیگر برای چاپ ستارهها تعریف شده است. این حلقه را حلقه درونی دوم مینامیم.
- حلقه درونی دوم در هر بار گردش یک ستاره چاپ میکند. در هر نوبت از 1 تا مقدار برابر با 2 * i – 1 گردش میکند.
- پس از چاپ هر سطر، با استفاده از Console.Write(“n”); به خط جدید میرویم.

در واقع، در هر نوبت اجرای کار حلقه بیرونی، هر دو حلقه درونی پیمایش خود را به طور کامل انجام میدهند. بنابراین هر گردش حلقه بیرونی یک سطر را رسم میکند. در نهایت، یک الگو به شکل هرم با تعداد فردی از ستارهها در هر سطر، چاپ میشود. این هرم ازn سطر تشکیل شده است.
تشخیص عدد کامل در سی شارپ
برنامهای بنویسید که عددی را از کاربر دریافت کند. سپس بررسی کند که آیا این عدد، کامل است یا نه. «عدد کامل» (Perfect Number)، عدد صحیح و مثبتی است که با حاصل جمع مقسومعلیههای خود – بهجز خودش – برابر باشد. به عنوان مثال اگر به این برنامه عدد 28 را ارسال کنیم، خروجی زیر چاپ میشود.
Input the number : 28 The positive divisors : 1 2 4 7 14 The sum of the divisors is : 28 So, the number is a perfect number.
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، ابتدا سه متغیر n و i و sum را با نوع داده int تعریف کردیم. سپس مقداری به عنوان ورودی از کاربر دریافت کرده و به متغیر n اختصاص دادیم. در خط ۱۷ کد بالا مقدار اولیهی sum را برابر 0 قرار دادهایم.
عملیات تشخیص کامل بودن عدد در داخل بلوک حلقه for انجام شده است. اما برای چاپ پیغام مناسب از بلوک شرطی if استفاده کردهایم. در فهرست زیر، عملیات انجام شده در حلقه for را به صورت کامل توضیح دادهایم.
- با کد i = 1 مقدار اولیهی i برابر 1 قرار داده شده است.
- تا وقتی i کمتر از n باشد، حلقه به کار خود ادامه میدهد.
- با کمک عبارت i++ در هر تکرار، مقدار i یک واحد افزایش پیدا میکند.
- در هر دور از حلقه، بخشپذیر بودن n بر i بررسی میشود.
- اگر n بر i بخشپذیر باشد، عدد i یکی از مقسومعلیههای مثبت n است.
- در این صورت، مقدار i به sum اضافه میشود.
- همچنین مقدار i در خروجی چاپ میشود.
بعد از حلقه for برای اعلام نتیجه به کاربر از عبارت شرطی if-else استفاده کردهایم. اگر مقدار sum برابر n باشد، عدد ارسال شده به برنامه، عدد کامل است و این پیام در خروجی چاپ میشود. در غیر این صورت، پیام «این عدد، عدد کامل نیست» (So, the number is not a perfect number.) چاپ میشود.
تشخیص اعداد آرمسترانگ
برای بررسی چند نمونه سوال حلقه for در سی شارپ با جواب، لازم است که کمی هم با مفاهیم ریاضی آشنا باشیم. زیرا بیشتر اوقات، مسائل مطرح شده شامل حل سوالهای ریاضی هستند. در این سوال به ما گفته شده که دو عدد صحیح و مجزا از هم – بین 1 تا 999 – از کاربر دریافت کنیم. سپس برنامهای بنویسیم که تمام اعداد آرمسترانگ بین این اعداد را کشف کند. در واقع کاربر محدوده جستوجو را مشخص کرده است. هدف این تمرین، تشخیص اعداد آرمسترانگ سه رقمی با استفاده از حلقهی for است.
نکته: عدد آرمسترانگ به عددی گفته میشود اگر یک به یک اعدادش را به توان تعداد ارقام آن برسانیم برابر با خود آن عدد میشود. برای مثال، به تصویر زیر دقت کنید.

اکنون فرض کنیم که کاربر اعداد 1 و 500 را به عنوان ورودی به برنامه داده است. خروجی برنامه باید شبیه به کادر زیر شود.
Input the starting number of the range: 1 Input the ending number of the range: 500 Armstrong numbers in the given range are: 1 153 370 371 407
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، ابتدا پنج متغیر num و r و sum و temp و همچنین دو متغیر stno و enno را با نوع داده int تعریف کردیم. سپس – از خط ۱۵ تا ۱۹ – از کاربر خواستهایم که برای شروع و پایان محدوده، دو عدد متفاوت وارد کند. این دو مقدار به ترتیب در متغیرهای stno و enno ذخیره میشوند.
برنامه بالا تمام عددهای داخل محدوده را بررسی میکند. در صورت وجود عدد آرمسترانگ، آنها را ذخیره کرده و در نهایت در خروجی چاپ میکند. برای حل این سوال از حلقه for و حلقه while در سی شارپ، به صورت تودرتو استفاده کردهایم.
در فهرست زیر، عملیات انجام شده در حلقه for را توضیح دادهایم.
- با متغیر num از مقدار stno تا enno جلو میرویم. یعنی تمام اعداد این محدوده را یک به یک بررسی میکنیم.
- در هر تکرار، مقدار عدد اصلی num را در متغیر temp ذخیره میکنیم. در نتیجه وقتی مقدار temp در محاسبات تغییر میکند، مقدار عدد اصلی بدون تغییر باقی میماند.
- مقدار اولیهی sum برابر صفر قرار داده شده است.
- از خط ۳۰ به بعد وارد حلقه while میشویم.
- تا وقتی temp برابر صفر نشده، حلقه while به اجرای تکراری وظایف خود ادامه میدهد.
- در هر دور از حلقه while، آخرین رقم عدد را با کد temp % 10 به دست میآوریم. این رقم را در متغیر r ذخیره میکنیم.
- بعد از آن با کد temp / 10 رقم آخر را از عدد حذف میکنیم.
- سپس مکعب عدد r را حساب کرده و به sum اضافه میکنیم.
- اگر متغیر temp برابر صفر باشد به مرحله بعد، یعنی خط ۳۸ میرویم. در غیر این صورت، دوباره به خط کد ۳۲ باز میگردیم.
- بعد از پایان حلقه while ، بررسی میکنیم که آیا مقدار sum با مقدار اصلی num برابر است یا نه.
- اگر برابر بود، یعنی عدد مورد نظر یک عدد آرمسترانگ است. در این صورت، آن را در خروجی چاپ میکنیم.

در نتیجه، این برنامه تمام عددهای آرمسترانگ سه رقمی را در بازه مشخص شده توسط کاربر پیدا میکند. سپس همه این اعداد را در کنسول سی شارپ، نمایش میدهد.
نمونه سوال حلقه for در سی شارپ با جواب برای معکوس کردن عدد
برنامهای بنویسید که عددی را از کاربر دریافت کند. سپس رقمهای این عدد را معکوس کرده و از آخر به اول بر روی صفحه نمایش نشان دهد.
برای مثال، فرض کنیم که عدد 123 به برنامه داده شده است. در خروجی باید مقدار 321 چاپ شود. در کادر زیر، پاسخ مسئله بالا را پیادهسازی کردهایم.
در کد بالا، ابتدا چهار متغیر num و r و sum و t را از نوع داده int تعریف کردیم. مقدار اولیهی sum را برابر صفر قرار دادهایم. هدف این برنامه این است که عدد وارد شده توسط کاربر را به صورت معکوس نمایش دهد. برای حل این مسئله فقط از یک حلقه for استفاده میکنیم.
در فهرست زیر، عملیات انجام شده در حلقه for توضیح داده شده است.
- با مقداردهی t = num، عدد اصلی را در متغیر t ذخیره میکنیم. بنابراین میتوانیم بدون تغییر دادن num روی t کار کنیم.
- حلقه تا زمانی ادامه دارد که مقدار t برابر با صفر نشده باشد.
- در هر تکرار، آخرین رقم عدد را با کد t % 10 به دست آورده و در متغیر r ذخیره میکنیم.
- سپس با فرمول sum * 10 + r، عدد جدید را میسازیم. این عدد را باید دوباره به متغیر sum اختصاص دهیم. این کار باعث میشود که رقمهای جدید در جای درست خود قرار بگیرند.
- در پایان هر تکرار، با t / 10 رقم آخر از t حذف میشود.

پس از پایان حلقه، مقدار sum برابر با عدد معکوس شده است. در آخر هم جواب بر روی صفحه نمایش چاپ میشود. این برنامه محدودیتی در تعداد رقمهای عدد ورودی ندارد.

کشف تمام اعداد بخش پذیر بر ۹
در این بخش از مطلب نمونه سوال حلقه for در سی شارپ با جواب، محدودهای از اعداد – بین ۱۰۰ تا ۲۰۰ – مشخص شده است. باید برنامهای بنویسیم که تمام اعداد بخشپذیر بر ۹ را از این محدوده پیدا کرده و همراه با حاصل جمع آنها در خروجی چاپ کند.
در واقع خروجی برنامه باید به شکل زیر باشد.
Numbers between 100 and 200, divisible by 9 : 108 117 126 135 144 153 162 171 180 189 198 The sum : 1683
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، ابتدا دو متغیر i و sum را با نوع داده int تعریف کردیم. از متغیر i برای پیمایش در حلقه و متغیر sum برای ذخیره مجموع اعداد استفاده میشود. بنابراین مقدار اولیهی sum را برابر صفر قرار دادیم. هدف از کد بالا این است تمام اعداد بین ۱۰۰ تا ۲۰۰ را پیمایش کند. تمام اعداد بخشپذیر بر ۹ را پیدا کرده و مجموع آنها را حساب کند. برای حل این مسئله از حلقه for و عبارت شرطی if استفاده کردیم.
در فهرست زیر، تمام عملیات انجام شده در حلقه for را توضیح دادهایم.
- خط ۱۴: با مقداردهی i = 101، شمارنده حلقه را از 101 شروع کردهایم. با هر پیمایش مقدار شمارنده به اندازه یک واحد افزایش پیدا میکند.
- خط ۱۴: حلقه تا زمانی ادامه دارد که مقدار i کمتر از 200 باشد.
- خط ۱۶: در هر چرخه، با استفاده از کد i % 9 == 0 بررسی میشود که آیا i بر ۹ بخشپذیر است یا نه.
- خط ۱۸: اگر بخشپذیر باشد، عدد i در خروجی نمایش داده میشود.
- خط ۱۹: همچنین مقدار i به متغیر sum اضافه میشود.
در پایان، مقدار sum که مجموع اعداد بخشپذیر بر ۹ است، در خروجی چاپ میشود.

تبدیل عدد دسیمال به باینری بدون استفاده از آرایه
در این مسئله عددی از کاربر دریافت میشود. برنامه باید این عدد را به مقدار معادل باینری آن تبدیل کند. در کدهای برنامه نباید از ساختار آرایه استفاده کنیم.
برای مثال، اگر عدد 83 توسط کاربر به برنامه داده شد، باید خروجی زیر تولید شده و نمایش داده شود.
Enter a number to convert : 83 The Binary of 83 is 1010011.
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، هدف تبدیل عدد «دهدهی» (Decimal) به عدد «دودویی» (Binary) بدون استفاده از آرایه است.
در ابتدای برنامه، چند متغیر تعریف کردهایم:
- n: عدد ورودی که کاربر وارد میکند.
- dn: نسخهی اصلی عدد n برای نمایش در خروجی.
- i: مقدار جایگاه عدد را نشان میدهد.
- binno: عدد باینری که در آخر برنامه ساخته میشود.
- j: این متغیر به عنوان شمارنده حلقه for استفاده میشود.
ابتدا برنامه، عددی را از کاربر دریافت کرده و در n ذخیره میکند. نسخهی دیگری از عدد نیز در dn نگهداری میشود. از این نسخه برای نمایش در خروجی استفاده خواهد شد. مقدار اولیهی i را برابر 1 قرار دادیم. از این مقدار برای مشخص کردن جایگاه ارقام دودویی استفاده میشود.
شمارنده حلقه for به صورت زیر کار میکند.
- مقدار اولیه j برابر با n است.
- حلقه for تا زمانی ادامه دارد که مقدار j بزرگتر از صفر باشد.
- قبل از ورود به بلوک دستورات حلقه، مقدار j تقسیم بر دو میشود.
در فهرست زیر، عملیات اجرا شده در هر دور از حلقه for را توضیح دادهایم.
- با n % 2 مقدار باقیماندهی تقسیم بر 2 را به دست میآوریم. این مقدار برابر با یکی از رقمهای 0 یا 1 در دستگاه دودویی است.
- برای اینکه باقیمانده، در جایگاه صحیح خودش قرار بگیرد باید در i ضرب شده و به binno اضافه شود.
- در هر دور از حلقه، مقدار i در 10 ضرب میشود تا رقم بعدی در جای درست قرار گیرد.
- برای پیدا شدن رقم بعد در عدد باینری، مقدار n نصف میشود.

در پایان، مقدار دودویی بدست آمده در خروجی چاپ میشود.
تبدیل عدد دسیمال به هگزادسیمال
در این بخش از مطلب نمونه سوال حلقه for در سی شارپ با جواب باید برنامهایی برای تبدیل عدد دسیمال به هگزادسیمال بنویسیم. برای مثال، اگر عدد ۱۰۱۵ را به برنامه ارسال کنیم، خروجی به شکل زیر نمایش داده میشود.
Input any Decimal number: 1015 The equivalent Hexadecimal Number : 3F7
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا، ابتدا متغیرهای decn و q و dn و m و l و tmp و s را با نوع داده int تعریف کردیم. سپس یک عدد صحیح مثبت از کاربر دریافت کرده و آن را در متغیر decn ذخیره کردیم. مقدار decn را در متغیر q قرار دادهایم. بابا این کار میتوانیم اصل عدد ورودی را به صورت دستنخورده نگه داریم. برای حل این مسئله از دو حلقه for استفاده کردهایم.
در فهرست زیر، عملیات انجام شده در حلقه for اول را به صورت کامل توضیح دادهایم.
- مقدار اولیهی l برابر q قرار داده شده است. در این حلقه l نقش شمارنده را بازی میکند.
- تا وقتی l بزرگتر از 0 باشد، حلقه ادامه دارد.
- در هر دور از حلقه، مقدار باقیماندهی تقسیم l بر 16 در tmp ذخیره میشود.
- اگر tmp کمتر از 10 باشد، به آن عدد 48 اضافه میشود. این کار برای تبدیل عدد به کد کاراکتر معادل آن در دستگاه ASCII است.
- اگر tmp بزرگتر یا مساوی 10 باشد، عدد 55 به آن اضافه میشود تا تبدیل به کد کاراکتر حرف بزرگ شود.
- سپس tmp به dn اضافه میشود. در کد dn = dn * 100 + tmp از ضرب در 100 استفاده کردهایم. از این ضرب کمک گرفتهایم تا کاراکترها بهدرستی از هم جدا شوند. زیرا کد هر کاراکتر دارای دو رقم است.

در حلقه اول، باقیماندههای تقسیم عدد بر ۱۶ را پیدا کردهایم. اعداد بزرگتر از ۹ باید به مقدار کاراکتری معادل آنها در مبنای هگزادسیمال تبدیل شوند. به این دلیل از مقادیر کاراکتری کد ASCII برای ارقام و حروف A و B و C و D و E و F استفاده کردهایم.
بعد از پایان حلقه اول، در حلقه for دوم تمام کاراکترهای بدست آمده را یک به یک کنار هم قرار داده و جواب را بدست میآوریم. در فهرست زیر عملیات درون حلقه for دوم توضیح داده شده است.
- مقدار اولیهی m برابر dn قرار داده شده است.
- تا وقتی m بزرگتر از 0 باشد، حلقه ادامه دارد.
- در هر دور از حلقه، مقدار باقیماندهی تقسیم m بر 100 در s ذخیره میشود. زیرا باید کدها را به صورت دو رقم، دو رقم از یکدیگر جدا کنیم.
- سپس مقدار s بهعنوان کاراکتر معادل در خروجی چاپ میشود. برای انجام این کار از کد Console.Write(“{0}”, (char)s) استفاده کردهایم.
- در پایان هر دور، مقدار m بر 100 تقسیم میشود.
در نتیجه، این برنامه عدد وارد شده توسط کاربر را به مبنای ۱۶ – هگزادسیمال – تبدیل کرده و نتیجه را به صورت کاراکترهای معادل چاپ میکند.
گسترش اعداد به عبارت جمع دو عدد اول
در این مسئله، عددی از کاربر دریافت میشود. باید برنامهای بنویسیم که بررسی کند آیا میتوان این عدد را به عبارت جمع دو عدد اول تبدیل کرد یا نه. برای مثال، اگر کاربر عدد 50 را وارد کند، خروجی برنامه باید به شکل زیر، نمایش داده شود.
Input a positive integer: 50 50 = 3 + 47 50 = 7 + 43 50 = 13 + 37 50 = 19 + 31
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
کد بالا بررسی میکند که آیا میتوان عدد وارد شده را به صورت جمع دو عدد اول نوشت یا نه. در این کد، ابتدا متغیرهای n و i و flg1 و flg2 و flg3 و j را با نوع دادهی عدد صحیح، تعریف کردهایم. سپس عددی را از کاربر میگیریم و در متغیر n ذخیره میکنیم.

در این کد از ۳ حلقه for به صورت تودرتو استفاده کردهایم. حلقهیfor اول یا حلقه بیرونی از عدد 3 تا نصف n پیش میرود. زیرا اگر بخواهیم عدد n را به شکل مجموع دو عدد بنویسیم، یکی از آن دو عدد حداکثر نصف n خواهد بود.
در هر دور از حلقه بیرونی، دو حلقه for دیگر هم اجرا میشوند. هر دوی این حلقهها از متغیر j به عنوان شمارنده، استفاده میکنند.
- حلقه for بالایی، عدد اول بودن i را بررسی میکند. اگر i بر هیچ عددی از 2 تا i-1 بخشپذیر نباشد، یعنی عدد اول است.
- حلقهی for بعدی، عدد اول بودن n – i را بررسی میکند. مانند مرحله قبل، اگر این عدد بر هیچ عددی از 2 تا (n – i – 1) بخشپذیر نباشد، یعنی عدد اول است.
سپس در خط ۴۵، با کمک عبارت شرطی if بررسی میکند که آیا هر دو مقدار، عدد اول هستند یا نه. اگر i و n – i هر دو عدد اول باشند، آنها را در خروجی چاپ میکنیم. این یعنی عدد n برابر است با جمع دو عدد اول.
در پایان برنامه – خط ۵۳ -بررسی میکند که آیا ترکیب مجموعه دو عدد اول پیدا شد یا نه. اگر چنین ترکیبی پیدا نشده باشد، پیام «.Can not be expressed as the sum of two prime numbers» چاپ میشود.
یادگیری کار با سی شارپ با کمک فیلم های پروژه محور
در این مطلب، چند نمونه سوال حلقه for در سی شارپ با جواب را بررسی کردهایم. بررسی این نمونه سوالات تاثیری زیادی در یادگیری حل مسئله دارد. اما پروژههای سی شارپ انواع مختلفی دارند. برای ورود به بازار کار و اجرای پروژههای حرفهای لازم است که سطح مهارت خود را بالاتر ببریم. بهترین کار برای رسیدن به این هدف، اجرای پروژههای مربوط به دنیای واقعی است. به همین دلیل فرادرس فیلمهایی برای آموزش پیادهسازی پروژههای نزدیک به دنیای واقعی، تولید کرده است. با مشاهده این فیلمها و تمرین بر اساس آنها آماده ورود به بازار کار میشوید.
برای دیدن سایر فیلمها بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزشی هدایت شوید.

معکوس کردن رشته
در این بخش از مطلب نمونه سوال حلقه for در سی شارپ با جواب میخواهیم بر روی رشتهها کار کنیم. در این مسئله، کاربر رشتهای از کاراکترها را به برنامه ارسال میکند. برنامه باید این رشته را با رعایت ترتیب و همچنین بزرگی و کوچکی حروف الفبا از آخر به اول به صورت منظم بنویسد.
برای مثال، فرض کنیم که عبارت Faradars Blog به برنامه داده شد. خروجی برنامه باید به شکل زیر باشد.
Input a String: Faradars Blog The string in Reverse Order Is: golB sradaraF
در کادر زیر، پاسخ مسئله بالا را پیادهسازی کردهایم.
در فهرست زیر، مراحل انجام شده در کد بالا را از اول تا حلقه for نوشتهایم.
- خط۷: دو متغیر str و str1 را با نوع داده string تعریف کردیم.
- خط ۸: همچنین دو متغیر i و l را با نوع داده int تعریف کردیم.
- خطهای ۱۵ و ۱۶: سپس یک مقدار متنی از کاربر دریافت کرده و به متغیر str اختصاص دادیم.
- خط ۱۸: بعد با استفاده از عبارت str.Length – 1، طول رشته را به دست آوردیم و در متغیر l ذخیره کردیم.
در بخش پایین هم عملکرد حلقه for را به صورت کامل توضیح دادهایم.
- با کد i = l مقدار اولیهی شمارنده i برابر با آخرین اندیس رشته قرار داده شده است.
- تا وقتی i بزرگتر یا مساوی صفر باشد، حلقه ادامه دارد.
- با استفاده از عبارت i– در هر تکرار، مقدار i یک واحد کاهش مییابد.
- در هر دور از حلقه، کاراکتر str[i] به انتهای رشته str1 اضافه میشود.
در نتیجه، رشته str به صورت برعکس در متغیر str1 ذخیره شده و مقدار نهایی str1 چاپ میشود. این مقدار همان رشتهی برعکس شده است. در کد بالا، حلقه for به تعداد کاراکترهای موجود در رشته str اجرا میشود.
نمایش الگوی حرف A با ستارهها
به عنوان نمونه سوال حلقه for در سی شارپ با جواب، در این بخش مسئلهای درباره رسم حرف بزرگ «A» با کمک الگویی از ستارهها داده شده است.
در واقع خروجی باید به شکل زیر نمایش داده شود.
*** * * * * ***** * * * * * * * *
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
در کد بالا دو متغیر row و column را از نوع داده int تعریف کردیم. هدف این کد نمایش الگویی شبیه به حرف A با استفاده از علامت ستاره است.

بهترین روش برای نمایش الگوهای دوبعدی استفاده از دو حلقه تودرتو است. در کدهای بالا هم از دو حلقه for تودرتو استفاده کردهایم.
در فهرست زیر، عملیات انجام شده در حلقه for بیرونی توضیح داده شده است.
- حلقه اول با شمارنده row = 0 شروع میشود. گردش این حلقه تا زمانی که row کمتر یا مساوی 7 باشد، ادامه دارد.
- در هر دور از این حلقه، یک سطر از الگو ساخته میشود.
- داخل این حلقه، حلقه دیگری با شمارنده column = 0 شروع شده و تا column <= 7 ادامه دارد.
در داخل حلقه درونی از عبارت شرطی if برای رسم الگو استفاده کردهایم. مهمترین نکته در این کد همین عبارتهای شرطی تعریف شده برای if است.
- اگر column برابر با 1 یا 5 باشد ولی row برابر با 0 نباشد، ستارهای چاپ میشود.
- اگر column بین 2 تا 4 و row هم برابر با 0 یا 3 باشد، باز هم ستارهای چاپ میشود.
- در غیر این صورت، یک فاصله خالی چاپ میشود تا شکل درست ایجاد شود.
با ترکیب شرایط عبارت if، الگویی شبیه به حرف A ساخته میشود. در پایان هر سطر، با Console.Write(“n”) به خط بعدی میرویم. این کار به ساخت الگوی کامل کمک میکند. توجه کنید که در ردیفهای 0 و 3، ستارهها به شکل پشت سر هم چاپ شدهاند.
نمایش الگوی حرف M با ستارهها
در این بخش هم مانند بخش قبل، باید برنامهای بنویسیم که حرف بزرگ «M» را با کمک الگویی از ستارهها رسم کند. در واقع خروجی باید به شکل زیر باشد.
* * * * ** ** * * * * * * * * *
در کادر زیر، پاسخ سوال بالا را پیادهسازی کردهایم.
هدف کد بالا ساختن الگویی شبیه به حرف M با استفاده از علامت ستاره است. در خط ۷ این کد، دو متغیر row و column را از نوع int تعریف کردهایم. برای حل این مسئله از دو حلقه for به صورت تودرتو استفاده کردیم.
در فهرست زیر، عملیات انجام شده در حلقه for بیرونی را توضیح دادهایم.
- این حلقه با شمارنده row برابر 0 شروع میشود. حلقه for بیرونی تا زمانی کار میکند که row کمتر یا مساوی 6 باشد.
- در هر تکرار از حلقه بیرونی، یک سطر جدید از الگو ساخته میشود.
- درون این حلقه، حلقه دیگری با شمارنده column برابر 0 شروع میشود. حلقه درونی کار خود را تا column <= 6 ادامه میدهد.
حلقه for درونی برای رسم ستونها به کار برده میشود. در هر تکرار از این حلقه یک ستاره یا فضای خالی به الگو اضافه میشود.

مهمترین بخش این الگوریتم در ساختار شرطی عبارت if قرار دارد. در فهرست زیر، شرطهای عبارت if را توضیح دادهایم.
- اگر column برابر 1 یا 5 باشد، ستاره چاپ میشود.
- اگر row برابر 2 بوده و column هم برابر 2 یا 4 باشد، ستاره چاپ میشود.
- اگر row و column هر دو برابر 3 باشند، ستاره چاپ میشود.
- در غیر این صورت، کاراکتر فاصله یا فضای خالی چاپ میشود.
در پایان هر سطر، با دستور Console.Write(“n”) به خط بعدی میرویم. این کار باعث میشود تا الگویی منظم شکل بگیرد. در نتیجه اجرای کد بالا شکلی مانند حرف M ساخته میشود.
جمعبندی
زبان برنامه نویسی سی شارپ از ساختارهای مختلفی برای مدیریت کدها استفاده میکند. انواع حلقهها در سی شارپ جزو پرکاربردترین ساختارهای مدیریت کد هستند. بیشتر این حلقهها در سایر زبانهای برنامه نویسی هم به کار برده میشوند. حلقه for مشهورترین حلقه در برنامه نویسی است. از for برای انجام وظایف تکراری با تعداد مشخص استفاده میکنند. به همین دلیل لازم است که تمام توسعهدهندگان بر روی کار با این حلقه تسلط کافی داشته باشند.
در این مطلب از مجله فرادرس ۲۴ نمونه سوال حلقه for در سی شارپ با جواب را بررسی کردهایم. در تمام سوالات این مطلب، ابتدا متن سوال عنوان شده و سپس خروجی مورد انتظار از برنامه را نشان دادهایم. بعد از آن جواب سوال مطرح شده را نوشتهایم. در تمام جوابها، بدنه اصلی پاسخ و حل کننده سوال با کمک حلقه for پیادهسازی شده است. در نهایت هم روش کار کدها بخصوص بخش حلقه را توضیح دادیم.
source