زبان برنامه نویسی سی/حلقه do while و while: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۹۶:
'''تشریح :''' در ابتدای این قطعه کد فایل سرآیند stdio را جهت استفاده از دو تابع کتابخانهای printf و scanf به ترتیب جهت چاپ در خروجی خطدستوری و گرفتن ورودی از صفحه کلید ( کیبورد ) کاربر توسط دستور مستقیم include ضمیمه برنامه خود نمودهایم . سپس تابعی با نوع داده صحیح با نام checkPrime اعلان نمودهایم که آن را در انتهای فایل تعریف نمودهایم . بدین شکل که یک پارامتر از نوع صحیح دارد ، پس آرگومانی از نوع صحیح میپذیرد و میتوان به آن پاس داد ؛ اما تابع checkPrime در داخل خود یک متغیر صحیح دارد با نام result به معنی نتیجه که با مقدار دهی اولیه 0 تعریف شده است و البته متغیر صحیح j که یکمین عدد اوّل را در خود ذخیره کرده است ( اگر از ریاضی اعداد به یاد داشته باشید « اعداد اوّل » اعدادی هستند که جز به خودشان و عدد ۱ به عدد دیگری بخشپذیر نیستند ) سپس در یک حلقه while تا زمانی که j کوچکتر از عدد پاس داده شده باشد بدنه خود را اجرا و تکرار میکند . نتیجه result باقیمانده تقسیم پارامتر تابع را ( که میشود عددی که به تابع پاس داده میشود ) به عدد j در خود ذخیره میکند . سپس j یک واحد افزایش مییابد . اگر نتیجه تقسیم برابر با 0 باشد تابع مقدار 0 را باز میگرداند . بنابراین حلقه j را از 2 شروع میکند و یک واحد یک واحد افزایش میدهد و عدد پاس داده شده به تابع که همان isItPrime است را بر j مرتب تقسیم میکند و اگر باقیمانده تقسیم 0 بود که یعنی عدد پاس داده شده دست به یک عدد بخشپیر است تابع مقدار 0 را باز میگرداند . در صورتی که حلقه هیچ مقدار 0 ـی باز نگرداند ، تابع مقدار 1 را باز خواهد گرداند<br>
اما کاربرد آن چیست ؟ به وضوح مشخص است که تابع checkPrime به معنی چک کردن اول بودن یا نبودن ، اگر عدد اوّل نباشد مقدار 0 را باز میگرداند و اگر اوّل باشد مقدار 1 را . حال از این تابع در تابع اصلی برنامه یعنی main استفاده نمودهایم در تابع اصلی زمانی که برنامه به اجرا گذاشته میشود ، در خروجی خطدستوری چاپ میکند ( با کمک تابع کتابخانهای printf ) : شمردن اعداد اوّل بین دو عدد ؛ خط شکسته میشود ؛ سپس دوباره چاپ میکند دو عدد را وارد کنید ، عدد اولی باید کوچکتر از دومی باشد . سپس دو متغیر صحیح با نامهای num1 و num2 اعلان نمودهایم که مقدار آنها را با کمک تابع کتابخانهای scanf از کاربر دریافت میکنیم . متغیر صحیح count با مقدار 0 تعریف شده است که از نام آن نیز پیداست که شمارنده است و برای شمردن تعداد اعداد اوّل بین دو عدد داده شده توسط کاربر که اولی کوچکتر از دومی است به کار میرود . با حلقه تکرار do while تعداد اعداد اوّل را شمردهایم . بدین شکل که تا زمانی که num1 کوچکتر از num2 است num1 را یک واحد یک واحد افزایش دادهایم و در هر بار اگر عدد اول بود count یک واحد افزایش مییابد که از 0 شروع میشود و شمرده میشود که چند عدد اوّل بین دو عدد داده شده وجود داشته است که این کار را نیز با کمک دستور شرطی if انجام دادهایم بدین ترتیب که اگر num1 که عدد کوچکتر است ( و یک واحد یک واحد تا عدد دوم که بزرگتر است افزایش مییابد ) پاس داده شود به تابع checkPrime که پیشتر توضیح دادیم که در صورت اوّل نبودن عدد مقدار 0 را باز میگرداند و در صورت اوّل بود مقدار 1 را و در صورتی که 1 بود یعنی اوّل بود count یک واحد افزایش مییابد . بعد از آن نیز در خروجی خطدستوری مقدار count که شمارنده تعداد اعداد اوّل بوده است ، چاپ میشود و تابع main مقداری باز نمیگرداند و برنامه پایان مییابد
مثال :
{{چپچین}}
<source lang=C#>
#include<stdio.h>
int main()
{
int a = 32;
while((a>31)&&(a<127))
{
printf("%c\n", a);
a++;
}
return 0;
}
</source>
{{پایان چپچین}}
مثال بالا کاراکترهای قابل مشاهده اسکی ( ASCII ) را در خروجی خطدستوری چاپ میکند . در قطعه کد بالا ابتدا فایل سرآیند stdio را جهت استفاده از تابع کتابخانهای printf ضمیمه برنامه خود نمودیم و در تابع اصلی برنامه ( یعنی تابع mian ) یک متغیر صحیح با نام a ایجاد نمودیم و به آن مقدار 32 دادیم که اولین مقدار برای کاراکترهای قابل مشاهده کاراکترست اسکی میباشد . سپس با کمک دستور حلقه while از زمانی که a بزرگتر از ۳۱ و کوچکتر از ۱۲۷ است که میشود ۳۲ تا ۱۲۶ تابع کتابخانهای printf را به اجرا میگذارد و سپس یک واحد به a اضافه میکند و سپس تا زمانی که شرط برقرار باشد تکرار میشود . تابع کتابخانهای printf مقدار متغیر صحیح a را با مقدار معادل آن در اسکی ( با کمک کاراکتر کنترلی c% ) در خروجی خطدستوری به عنوان کاراکتر چاپ میکند و خط را میشکند . در پایان برنامه تابع main مقداری باز نمیگرداند و اجرای برنامه به پایان میرسد
[[رده:زبان برنامه نویسی سی]]
|