0% found this document useful (0 votes)
15 views164 pages

programming_lecture_2

Uploaded by

sajadtaheri494
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views164 pages

programming_lecture_2

Uploaded by

sajadtaheri494
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 164

Introduction to Computer Programming

Using C++

‫بخش دوم‬

‫ جعفری‬: ‫استاد‬

1399 ‫ دوم‬: ‫سمستر‬


‫فهرست مطالب‬

‫فصل اول ‪ :‬مقدمات زبان ‪C++‬‬


‫فصل دوم ‪ :‬ساختار های تصمیم گیری و تکرار‬
‫فصل سوم ‪ :‬سایر ساختار های تکرار‬
‫فصل چهارم ‪ :‬آرایه ها‬
‫فصل پنجم ‪ :‬توابع‬
‫فصل اول‬

‫مقدمات ‪C++‬‬
‫فهرست مطالب فصل اول‬

‫عملگر انتساب‬ ‫‪.11‬‬ ‫تاریخچه مختصر‬ ‫‪.1‬‬


‫عملگر های محاسباتی‬ ‫‪.12‬‬ ‫قانون نامگذاری شناسه ها‬ ‫‪.2‬‬
‫عملگرهای افزایش و کاهش‬ ‫‪.13‬‬ ‫متغیر ها‬ ‫‪.3‬‬
‫عملگر ‪sizeof‬‬ ‫‪.14‬‬ ‫اعالن متغیر‬ ‫‪.4‬‬
‫عملگرهای جایگزینی محاسباتی‬ ‫‪.15‬‬ ‫تخصیص مقادیر به متغیر‬ ‫‪.5‬‬
‫اولویت عملگرها‬ ‫‪.16‬‬ ‫داده های از نوع کرکتر‬ ‫‪.6‬‬
‫توضیحات (‪)Comments‬‬ ‫‪.17‬‬ ‫کرکتر های مخصوص‬ ‫‪.7‬‬
‫توابع کتابخانه‬ ‫‪.18‬‬ ‫رشته ها‬ ‫‪.8‬‬
‫برنامه در ‪C++‬‬ ‫‪.19‬‬ ‫نمایش مقادیر داده ها‬ ‫‪.9‬‬
‫دریافت مقادیر‬ ‫‪.10‬‬
‫تاریخچه مختصر ‪C++‬‬

‫این زبان در اوائل دهه ‪ 1980‬توسط ‪ Bjarne stroustrup‬در آزمایشطاا‬


‫بل طراحي شد ‪ .‬این زبان عمالً توسعه یافته زبان برنامه نویسي ‪ C‬مي باشد كطه‬
‫امكان نوشتن برنامههای ساخت یافته شئ گرا را ميدهد‪.‬‬
‫قانون نامگذاري شناسهها‬

‫حروف کوچك و بزرگ در نامگذاری شناسهها متفاوت میباشند‪.‬‬ ‫‪(1‬‬

‫بنابراین ‪ xy ، xY ، XY ، Xy‬چهار شناسه متفاوت‬


‫از نظر ‪ C++‬میباشد‪.‬‬
‫قانون نامگذاري شناسهها‬

‫‪ )2‬در نامگذاری شناسهها از حروف الفباء‪ ،‬ارقام وزیر خط (‪)underscore‬‬


‫استفاده میشود و حداکثر طول شناسه ‪ 31‬میباشد و شناسه بایستی با‬
‫یك رقم شروع نگردد‪.‬‬
‫قانون نامگذاري شناسهها‬
‫ در زیر بعضي از كلمات‬.‫) برای ناماذاری شناسهها از كلمات كليدی نبایستي استفاد نمود‬3
.‫كليدی داد شد است‬

And Sizeof then xor Template


Float False Friend While continue
extern Private Switch Default Const
delete typedef if this Virtual
‫متغيرها‬

‫متغيططرم مكططاني در حافصططه ا ططلي‬


‫كامپيوتر ميباشد كطه در آناطا یطك‬
‫مقدار را ميتوان ذخير و در برنامطه‬
‫از آن استفاد نمود‪ .‬قانون ناماذاری‬
‫متغيرهططا همططان قططانون ناماططذاری‬
‫شناسهها ميباشد‪.‬‬

‫در اسالید بعد به انواع داده ها اشاره می شود‪.‬‬


‫انواع داده ها‬
‫نوع داده‬ ‫مقادیر‬ ‫حافظه الزم‬

‫‪int‬‬ ‫‪ 32767‬تا ‪–32768‬‬ ‫‪ 2‬بایت‬

‫‪unsigned int‬‬ ‫‪ 65535‬تا ‪0‬‬ ‫‪2‬بایت‬

‫‪long int‬‬ ‫‪ 2147483647‬تا ‪–2147483648‬‬ ‫‪ 4‬بایت‬

‫‪unsigned long int‬‬ ‫‪ 4294967295‬تا ‪0‬‬ ‫‪ 4‬بایت‬


‫‪char‬‬ ‫یك کارکتر‬ ‫‪1‬بایت‬

‫‪unsigned char‬‬ ‫‪ 127‬تا ‪–128‬‬ ‫‪ 1‬بایت‬


‫‪float‬‬ ‫‪ 3.4e38‬تا ‪1.2e-38‬‬ ‫‪ 4‬بایت‬

‫‪double‬‬ ‫‪ 1.8e308‬تا ‪2.2e-308‬‬ ‫‪ 8‬بایت‬


‫اعالن متغیرها‬

‫قبل از آنکه در برنامه به متغیرها مقدداری تخصدیص داده‬


‫شود و از آنها استفاده گردد بایستی آنها را در برنامه اعالن‬
‫نمود‪.‬‬

‫در اسالید بعد مثال هایی از اعالن متغیر ذکر شده است‪.‬‬
‫چند مثال از اعالن متغیر ها ‪:‬‬
‫✓ برای اعالن متغیر‪ x‬از نوع ‪: int‬‬
‫‪int‬‬ ‫;‪x‬‬

‫✓ برای اعالن متغیرهای ‪ p‬و ‪ q‬را از نوع ‪ float‬که هر کدام چهار بایت از‬
‫حافظه را اشغال میکنند ‪:‬‬
‫; ‪float p , q‬‬

‫✓ برای اعالن متغیر ‪ next‬از نوع کرکتر که میتوان یکی از ‪ 256‬کرکتر را به‬
‫آن تخصیص داد و یك بایت را اشغال میکند‪.‬‬
‫; ‪char next‬‬
‫تخصيص مقادير به متغيرها‬

‫با استفاده از عملگر = میتوان به متغیرها مقدار اولیه تخصیص نمود‪.‬‬

‫در اسالید بعد مثال هایی از اعالن متغیر ذکر شده است‪.‬‬
‫مثال ‪:‬‬

‫;‪int x=26‬‬ ‫✓ در دستورالعمل‬


‫‪ X‬را از نوع ‪ int‬با مقدار اولیه ‪ 26‬اعالن نموده ‪.‬‬

‫;‪long a=67000 , b=260‬‬ ‫✓ در دستورالعمل‬


‫متغیرهای ‪ b‬و ‪ a‬را از نوع ‪ long int‬تعریف نموده با مقادیر بترتیب‬
‫‪ 260‬و ‪.67000‬‬
‫دادههاي از نوع كركتر‬

‫برای نمایش دادههای از نوع ‪ char‬در حافظه کامپیوتر از جدول‬


‫‪ ASCII‬استفاده میشود‪ .‬جدول اسکی به هر یك از ‪ 256‬کرکتر‬
‫یك عدد منحصر بفرد بین ‪ 0‬تا ‪ 255‬تخصیص میدهد‪.‬‬
‫كركترهاي مخصوص‬

‫كامپيلر ‪ C++‬بعضي از كركترهای مخصوص كه در برنامه ميتوان از‬


‫آنها برای فرمت بندی استفاد كرد را تشخيص ميدهد‪ .‬تعدادی از‬
‫این كركترهای مخصوص به همرا كاربرد آنها در اسالید بعد آورد‬
‫شد است ‪.‬‬
‫كركترهاي مخصوص‬

\n Newline
\t Tab ‫\ میتوان برای ایجاد صدای‬a ‫بعنوان مثال از کرکتر‬
\b Backspace .‫ استفاده نمود‬beep
char x = '\a ;
\a Beep sound
\” Double quote
\’ Single quote
\0 Null character
\? Question mark
\\ Back slash
‫رشتهها‬

‫رشته یا ‪ string‬عبارتست از دنبالهای از كركترها كه بين " " قرار داد‬


‫ميشود‪ .‬در حافصه كامپيوتر انتهای رشتهها بوسيله ‪ \0‬ختم ميگردد‪.‬‬

‫در اسالید بعد به دو مثال دقت نمایید‪.‬‬


‫مثال ‪: 1‬‬

‫"‪ "BOOK STORE‬یك رشطته د كركتطری ميباشطد‬


‫كه با توجه به كركتر ‪ \0‬كه به انتهای آن در حافصه‬
‫اضافه مي شود جمعططاً یازد بایت را اشغال ميكند‪.‬‬
‫مثال ‪: 2‬‬

‫دقت نمایيد كه "‪ "w‬یك رشته ميباشد كه دو بایت از‬


‫حافصه را اشغال ميكند در حاليكه '‪ 'w‬یك كركتر‬
‫ميباشد كه یك بایت از حافصه را اشغال مينماید‪.‬‬
‫نمایش مقادیر دادهها‬

‫برای نمایش داد ها بر روی فحه مانتور از ‪ cout‬كطه بطدنبال آن عملاطر‬


‫درج یعني << قيد شد باشد استفاد ميگردد‪ .‬بایستي توجه داشطت كطه‬
‫دوكركتر < پشت سر هم توس ‪ C++‬بصورت یك كركتر تلقي ميگردد‪.‬‬
‫مثال ‪:‬‬

‫✓ برای نمایش پيغام ‪ good morning‬بر روی فحه نمایش ‪:‬‬


‫;"‪cout << "good morning‬‬

‫✓ برای نمایش مقدار متغير ‪ X‬بر روی فحه نمایش ‪:‬‬


‫; ‪cout << x‬‬
‫دریافت مقادیر متغیرها‬

‫به منصور دریافت مقادیر برای متغيرها در ضمن اجرای برنامه از فحه كليدم از ‪cin‬‬
‫كه بدنبال آن عملار استخراج یعني >> قيد شد باشد ميتوان استفاد نمود‪.‬‬
: ‫مثال‬
int x;
cout << "Enter a number:" ;
cin >> x;
‫عملگر انتساب‬

‫عملگر انتساب = میباشد که باعث میگردد‬


‫مقدار عبارت در طرف راست این عملگر ارزیابی‬
‫شده و در متغیر طرف چپ آن قرار گیرد‪.‬‬
‫مثال ‪:‬‬

‫;‪x=a+b‬‬
‫; ‪x=35‬‬
‫; ‪x=y=z=26‬‬

‫از عملارهای انتساب چندگانطه نيطم ميتطوان اسطتفاد‬


‫نمود‪ .‬كه مقطدار سطه متغيطر ‪ z‬و ‪ y‬و ‪ x‬برابطر بطا ‪26‬‬
‫ميشود‪.‬‬
‫عملگرهاي محاسباتي‬
‫در ‪ C++‬پنج عملگر محاسباتی وجود دارد که عبارتند از ‪:‬‬

‫جمع‬ ‫‪+‬‬
‫تفریق‬ ‫‪-‬‬
‫ضرب‬ ‫*‬
‫تقسیم‬ ‫‪/‬‬
‫باقیمانده‬ ‫‪%‬‬

‫این عملگرها دو تائی میباشند زیرا روی دو عملوند عمل مینمایند‪ .‬از طرف‬
‫دیگر عملگرهای ‪ +‬و – رامیتوان بعنوان عملگرهای یکتائی نیز در نظر گرفت‪.‬‬
‫مثال ‪: 1‬‬
‫در حالتی که هر دو عملوند عملگرهای ‪ – ، + ، * ، / ، %‬از نوع صحیح باشد نتیجه‬
‫عمل از نوع صحیح میباشد‪.‬‬

‫عبارت‬ ‫نتیجه‬
‫‪5+2‬‬ ‫‪7‬‬
‫‪5*2‬‬ ‫‪10‬‬
‫‪5–2‬‬ ‫‪3‬‬
‫‪5%2‬‬ ‫‪1‬‬
‫‪5/2‬‬ ‫‪2‬‬
‫مثال ‪: 2‬‬
‫در صورتیکه حداقل یکی از عملوندهای عملگرهای ‪ + ، – ، * ، /‬از نوع اعشاری باشد‬
‫نتیجه عمل از نوع اعشاری میباشد‪.‬‬

‫عبارت‬ ‫نتیجه‬
‫‪5. 0 +2‬‬ ‫‪7. 0‬‬
‫‪5* 2. 0‬‬ ‫‪10.0‬‬
‫‪5. 0 / 2‬‬ ‫‪2.5‬‬
‫‪5. 0 -2‬‬ ‫‪3. 0‬‬
‫‪5. 0 / 2. 0‬‬ ‫‪2.5‬‬
‫عملگرهاي افزایش و كاهش‬

‫در ‪ ، C++‬افزایش یك واحد به مقدار یك‬


‫متغیر از نوع صدحیح را افدزایش و بردور‬
‫مشابه کاهش یك واحدد از مقددار یدك‬
‫متغیر از نوع صحیح را کاهش مینامند‪..‬‬
‫عملگرهاي افزایش و كاهش‬

‫عملگر کاهش را با ‪ - -‬و عملگر افزایش‬


‫را بدددا ‪ ++‬نمدددایش میدهندددد‪ .‬چدددون‬
‫عملگرهددای ‪ ++‬و ‪ - -‬فقددط روی یددك‬
‫عملوند اثر دارند این دو عملگر نیز جدزء‬
‫عملگرهای یکتائی میباشند‪.‬‬
‫مثال ‪:‬‬

‫سه دستور العمل ‪:‬‬


‫;‪++x‬‬
‫;‪x++‬‬
‫;‪x=x+1‬‬

‫معادل میباشند و برریق مشابه سه دستورالعمل زیر نیز معادل می باشند‪.‬‬

‫;‪--y‬‬
‫;‪y=y-1‬‬
‫; ‪y- -‬‬
‫از عملگرهای ‪ ++‬و ‪ --‬میتوان بدو صورت پیشوندی و پسوندی استفاده نمود‪.‬‬
‫در دستورالعملهای پیچیده عملگر پیشوندی قبل از انتساب ارزیابی میشود و عملگر‬
‫پسوندی بعد از انتساب ارزیابی میشود‪.‬‬
‫مثال ‪:‬‬

‫;‪int x=5‬‬
‫;‪y=++x * 2‬‬
‫پس از اجرای دستورالعملهای فوق ‪:‬‬
‫‪y=12‬‬

‫;‪int x=5‬‬
‫;‪y=x++ * 2‬‬
‫پس از اجرای دستورالعملهای فوق ‪:‬‬
‫‪y=10‬‬
‫عملگر ‪sizeof‬‬
‫‪ Sizeof‬ازعملگرهای یکتائی می باشد و مشخص کننده تعداد بایت‬
‫هائی است که یك نوع داده اشغال میکند‪.‬‬

‫مثال ‪:‬‬
‫;‪int x‬‬
‫; ‪cout << sizeof x‬‬
‫مقدار ‪ 2‬نمایش داده میشود ‪.‬‬
‫; )‪cout << sizeof(float‬‬
‫مقدار ‪ 4‬نمایش داده می شود‪.‬‬
‫عملگرهاي جایگزیني محاسباتي‬

‫برای سادهتر نوشتن عبارتها در ‪ ، C++‬میتوان از‬


‫عملگرهای جایگزینی محاسبددداتی استفاده نمود‪.‬‬

‫=‪%‬‬ ‫=‪/‬‬ ‫=*‬ ‫=‪-‬‬ ‫=‪+‬‬


‫اولویت عملگرها‬

‫ارزیابی مقدار یك عبارت ریاضی براساس جدول اولویت عملگرها انجام میگردد‪ .‬در ذیل جدول اولویت‬
‫عملگرها براساس بترتیب از بیشترین اولویت به کمترین اولویت داده شده است‪.‬‬

‫) (‬ ‫پرانتزها‬ ‫چپ به راست‬


‫‪-‬‬ ‫‪+‬‬ ‫‪--‬‬ ‫‪++‬‬ ‫‪sizeof‬‬ ‫عملگرهای یکتایی‬ ‫راست به چپ‬
‫*‬ ‫‪/‬‬ ‫‪%‬‬ ‫عملگرهای ضرب و تقسیم و باقیمانده‬ ‫چپ به راست‬
‫‪+‬‬ ‫‪−‬‬ ‫عملگرهای جمع و تفریق‬ ‫چپ به راست‬
‫<<‬ ‫>>‬ ‫عملگرهای درج و استخراج‬ ‫چپ به راست‬
‫=‪= += -= *= /= %‬‬ ‫عملگرهای جایگزینی و انتساب‬ ‫راست به چپ‬
‫مثال ‪: 1‬‬
‫‪(5+2) *(6+2*2)/2‬‬

‫با توجه به جدول اولویت عملگرها داریم که‬

‫‪7 *(6+2*2)/2‬‬
‫‪7*(6+4)/2‬‬
‫‪7* 10 /2‬‬
‫‪70 /2‬‬
‫‪35‬‬
: 2 ‫مثال‬

int a=6 , b=2, c=8, d=12;


d=a++ * b/c ++;
cout << d << c << b << a;

: ‫خروجی‬

1 9 2 7
‫توضیحات (‪)Comments‬‬

‫توضیحات در برنامه باعث خوانائی بیشتر و درك بهتر برنامه میشود‪ .‬بنابراین‬
‫توصیه بر آن است که حتی االمکان در برنامهها از توضیحات استفاده نمائیم‪ .‬در‬
‫‪ ،C++‬توضیحات بدو صورت انجام میگیرد که در اسالیدهای بعد به آن اشاره‬
‫شده است‪.‬‬
‫توضیحات (‪)Comments‬‬

‫الف‪ :‬این نوع توضیح بوسیله ‪ //‬انجام میشود‪ .‬که کامپیوتر هر چیدزی را‬
‫که بعد از ‪ //‬قرار داده شود تا انتهای آن خط اغماض مینماید‪.‬‬
‫مثال ‪:‬‬

‫‪c=a+b;//c is equal to sum of a and b‬‬

‫ب‪:‬توضیح نوع دوم با *‪ /‬شروع شده و به ‪ */‬ختم میشود و هر چیزی که‬


‫بین* ‪ /‬و ‪ */‬قرار گیرد اغماض مینماید ‪.‬‬
‫مثال ‪:‬‬

‫‪/ * this is a program‬‬


‫‪to calcufate sum of‬‬
‫‪n integer numbers */‬‬
‫توابع كتابخانه‬

‫زبان ‪ C++‬مجهز به تعدادی توابع کتابخانه میباشد‪ .‬بعنوان مثدال‬


‫تعدادی توابع کتابخانه برای عملیات ورودی و خروجی وجود دارند‪.‬‬
‫معموالً توابع کتابخانه مشابه ‪ ،‬بصدورت برنامدههای هددف (برنامده‬
‫ترجمه شده بزبان ماشین) در قالب فایلهای کتابخانه دسته بنددی و‬
‫مورد استفاده قرا رمیگیرند‪ .‬این فایلها را فایلهای ‪ header‬مینامند‬
‫و دارای پسوند ‪ .h‬میباشند‪.‬‬
‫نحوه استفاده از توابع كتابخانه اي‬

‫برای استفاده از توابع کتابخانه خاصی بایستدددی‬


‫نام فایل ‪ header‬آنرا در ابتدای برنامه در دستور‬
‫‪ #include‬قرار دهیم‪.‬‬

‫‪#include‬‬ ‫> اسم فایل ‪< header‬‬


‫تابع‬ ‫نوع‬ ‫شرح‬ ‫فایل هیدر‬
abs(i) int i ‫قدرمرلق‬ stdlib.h
cos(d) double d ‫کسینوس‬ math.h
exp(d) double ex math.h
log(d) double loge d math.h
log10(d) double Log10 d math.h
sin(d) double d ‫سینوس‬ math.h
sqrt(d) double d ‫جذر‬ math.h
strlen(s) int s ‫تعداد کرکترهای رشته‬ string.h
tan(d) double d ‫تانژانت‬ math.h
toascii( c) int c‫کداسکی کرکتر‬ stdlib.h
tolower(c ) int ‫تبدیل به حروف کوچك‬ stdlib.h
toupper(c ) int ‫تبدیل به حرف بزرگ‬ stdlib.h
‫برنامه در ‪C++‬‬

‫اکنون باتوجه به مرالب گفته شده قادر خواهیم بود که تعدادی برنامه سداده و کوچدك بده زبدان‬
‫‪ C++‬بنویسیم‪ .‬برای نوشتن برنامه بایستی دستورالعملها را در تابع ) (‪ main‬قرار دهیم و بدرای‬
‫اینکار میتوان به یکی از دو طریقی که در اسالیدهای بعد آمده است ‪ ،‬عمل نمود‪.‬‬
‫روش اول ‪:‬‬

‫‪#include‬‬ ‫<‬ ‫>‬


‫) (‪int main‬‬
‫}‬
‫; دستورالعمل ‪1‬‬
‫; دستورالعمل ‪2‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫;دستورالعمل ‪n‬‬
‫; ‪return 0‬‬
‫}‬
‫روش دوم ‪:‬‬

‫‪#include‬‬ ‫<‬ ‫>‬


‫) (‪void main‬‬
‫{‬
‫; دستورالعمل ‪1‬‬
‫; دستورالعمل ‪2‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫;دستورالعمل ‪n‬‬
‫}‬
‫نکات‪2-‬‬

‫نويس ‪ error‬يم گويند‪.‬‬


‫ي‬ ‫❑ ‪ :error‬به خطاهاي برنامه‬
‫نويس‪:‬‬
‫ي‬ ‫❑ انواع خطاها در برنامه‬
‫❑ خطاهاي زمان ‪:)compile errors(compile‬‬
‫❑ مانع کامپايل صحيح برنامه يم شوند‪.‬‬
‫❑ خطاهاي زمان ‪:)Link errors( link‬‬
‫نم کنند اما مانع ‪ Link‬برنامه يم شوند‪.‬‬ ‫❑ براي کامپايل مز‬
‫احمت ايجاد ي‬
‫ي‬
‫❑ خطاهاي زمان اجرا‪:)Run time errors( :‬‬
‫❑ کامپايل و ‪ Link‬با موفقيت انجام يم شود ي‬
‫ول اجراي برنامه دچار اشکال يم شود ‪.‬‬
‫‪error‬‬

‫❑ حسن سيب را خورد‪.‬‬


‫❑ هسن سيب را خورد‪.‬‬
‫❑ متناظر با خطاي کامپايل‬
‫❑ را حسن خورد سيب‪.‬‬
‫❑ متناظر با خطاي ‪Link‬‬
‫❑ سيب حسن را خورد‪.‬‬
‫❑ متناظر با خطاي زمان اجرا‬
‫ را روي صفحه‬C++ is an object oriented language ‫برنامه اي كه پیغام‬
.‫مانیتور نمایش مي دهد‬

#include <iostream>
int main( )
{
cout <<"C++ is an object oriented language \n" ;
return 0 ;
}
.‫برنامه زیر یك حرف انگلیسي كوچك را گرفته به حرف بزرگ تبدیل مينماید‬

#include <iostream>
#include <stdlib. h>
int main( )
{
char c1 , c2;
cout << "Enter a lowercase letter:"
cin >> c1;
c2 = toupper(c1);
cout << c2 << endl;
return 0; }
‫دو عدد از نوع اعشاري را گرفته مجموع و حاصلضرب آنها را محاسبه و نمایش ميدهد‪.‬‬

‫>‪#include <iostream‬‬
‫) (‪int main‬‬
‫{‬
‫‪float‬‬ ‫; ‪x,y,s,p‬‬
‫; ‪cin >> x >> y‬‬
‫; ‪s= x+y‬‬
‫;‪p=x*y‬‬
‫;‪cout << s <<endl << p‬‬
‫; ‪return 0‬‬
‫}‬
‫البراتوار‬

‫الاوریتمهایي كه تا این بخش كار شد است‪ .‬باید به كد تبدیل شود‪.‬‬


‫▪ مساحت مربع‬
‫▪ مساحت دایر‬
‫▪ مساحت مستطيل‬
‫▪ تبدیل درجه به فارنهایت‬
‫▪ جابه جایي‬
‫▪ ‪...‬‬
‫فصل دوم‬

‫ساختارهای تصمیم گیری و تکرار‬


‫فهرست مطالب فصل دوم‬

‫عملگر های رابره ای‬ ‫‪.1‬‬


‫عملگر شرطی‬ ‫‪.2‬‬
‫دستورالعمل شرطی‬ ‫‪.3‬‬
‫عملگر کاما‬ ‫‪.4‬‬
‫عملگر های منرقی‬ ‫‪.5‬‬
‫دستورالعمل ‪For‬‬ ‫‪.6‬‬
‫عملگرهاي رابطه اي‬
‫از این عملگرها برای تعیین اینکه آیا دو عدد با‬
‫هم معادلند یا یکی از دیگری بزرگتر یا کوچکتر‬
‫میباشد استفاده میگردد‪ .‬عملگرهای رابرهای‬
‫عبارتند از‪:‬‬

‫==‬ ‫مساوي‬
‫=!‬ ‫مخالف‬
‫>‬ ‫بزرگتر‬
‫=>‬ ‫بزرگتر يا مساوي‬
‫<‬ ‫كوچكتر‬
‫=<‬ ‫كوچكتر يا مساوي‬
‫عملگر شرطي‬

‫شکل کلی عملگر شرطی بصورت زیر میباشد‪:‬‬

‫‪expression _ test ? expression _ true : expression _ false‬‬

‫عملگر شرطی تنها عملگری در ‪ C++‬میباشد که دارای سه عملوند میباشد‪.‬‬


‫مثال ‪: 1‬‬
‫;‪int x=10,y=20,b‬‬
‫; ‪b=(x>y) ? x : y‬‬

‫این دو دستور العمل باعث میشوند که ماکزیمم مقادیر ‪ y‬و ‪ x‬در ‪ b‬قرار بگیرد‪.‬‬

‫مثال ‪: 2‬‬
‫; "‪x>=10 ? cout << "passed" : cout << "failed‬‬

‫اگر مقدار ‪ x‬بزرگتر یا مساوی ده باشد رشتة ‪ passed‬در غیر اینصورت‬


‫‪ failed‬نمایش داده میشود‪.‬‬ ‫رشته‬
‫‪IF‬‬ ‫دستورالعمل شرطي‬

‫توسط این دستور شرطی را تست نموده و بسته به‬


‫آنکه شرط درست یدا غلدط باشدد عکسالعمدل‬
‫خاصی را نشان دهیم‪.‬‬
‫) عبارت (‪if‬‬
‫{‬
‫; دستورالعمل ‪1‬‬
‫‪.‬‬
‫;دستورالعمل ‪n‬‬
‫}‬
‫‪else‬‬
‫{‬
‫; دستورالعمل ‪1‬‬
‫‪.‬‬
‫;دستورالعمل ‪n‬‬
‫}‬
: 1 ‫مثال‬

if(x != y)
{
cout << x ;
++ x ;
}
else
{
cout << y ;
--y;
}
:2 ‫مثال‬
.‫برنامه زیر یك عدد اعشاری را از ورودی گرفته جذر آنرا محاسبه مینماید‬

#include <iostream>
#include <math . h>
int main( )
{
float x,s;
cin >> x ;
if( x < 0 )
cout << " x is negative" << endl ;
else
{
s = sqrt(x) ;
cout << s << endl ;
}
return 0;
}
‫تركيب دستورات شرطي‬

NO YES
x > min?

Display “x is NO YES
outside the limits.”
x < max?
if (x > min)
{
if (x < max)
cout<<"x is within the limits"; Display “x is Display “x is
outside the limits.” within limits.”
else
cout<<"x is outside the limits";
}
else
cout<<"x is outside the limits";
:‫مثال‬

if(x) if(x) if(x)


if(y) { {
cout<<"Yes"; if(y) if(y)
else cout<<"Yes"; cout<<"Yes";
cout<<"No"; else }
cout<<"No"; else
} cout<<"No";

if (x < 0.25)
if (x < 0)
count1++;
sign = -1;
else if (x >= 0.25 && x < 0.5)
else if (x == 0)
count2++;
sign = 0;
else if (x >= 0.5 && x < 0.75)
else
count3++;
sign = 1;
else
count4++;
‫عملگر كاما‬
‫تعدادی عبارت را میتوان با کاما بهدم متصدل نمدود و‬
‫تشکیل یك عبارت پیچیدهتری را داد‪ .‬این عبارتها بده‬
‫ترتیب از چپ به راست ارزیابی شده و مقددار عبدارت‬
‫معادل عبارت ‪ n‬میباشد‪.‬‬

‫(عبارت ‪ , .… , n‬عبارت ‪ , 3‬عبارت ‪ , 2‬عبارت ‪)1‬‬


‫مثال ‪:‬‬

‫; ‪ int a=2 , b=4 , c=5‬عبارت زیر را در نظر بگیرید‪:‬‬ ‫اگر داشته باشیم‬

‫)‪(++ a , a+b, ++ c, c+b‬‬

‫مقدار عبارت برابر است با ‪ b+c‬که معادل ‪ 10‬میباشد‪.‬‬


‫عملگرهاي منطقي‬

‫با استفاده از عملگرهای منرقی میتوان شرطهای ترکیبی در برنامه ایجاد نمود‪.‬‬
‫عملگرهای منرقی عبارتست از ‪:‬‬
‫‪AND‬‬
‫‪OR‬‬
‫‪NOT‬‬
‫که در ‪ C++‬به ترتیب بصورت زیر نشان داده میشود‪.‬‬
‫&&‬
‫||‬
‫!‬
‫جدول درستي سه عملگر شرطي‬

a b a || b
true true True
true false True
false true True
false false False

a b a && b
true true True
true false False
false true False
false false False

a !a
true False
false True
‫چند مثال ‪:‬‬
‫))‪if ((x= = 5) ||(y != 0‬‬
‫; ‪cout << x << endl‬‬

‫اگر ‪ x‬برابر با ‪ 5‬یا ‪ y‬مخالف صفر باشد مقدار ‪ x‬نمایش داده شود ‪.‬‬

‫)‪if(x‬‬
‫;‪x=0‬‬

‫اگر مقدار ‪ x‬مخالف صفر باشد‪ ،‬آنگاه ‪ x‬برابر با صفر شود ‪.‬‬
‫برنامه زیر طول سه پارهخط را از ورودي گرفته مشخص مينماید كه آیا تشكیل یك مثلث میدهد یا خیر؟‬

#include < iostream >


int main( )
{
float a, b, c;
cout << "Enter three real numbers" << endl ;
cin >> a >> b >> c; //
if(( a < b + c) &&(b < a+c) &&(c < a+b))
cout << "It is a triangle" ;
else
cout << "Not a triangle" ;
return 0 ;
}
‫البراتوار‬

‫❑ قيمت مطلقه‬
‫❑ مثبتممنفي و فر‬
‫❑ ماكمیمم دو عدد‬
‫❑ مينيمم سه عدد‬
‫❑ جفت یا طاق بودن‬
‫❑ بخش پذیری بر ‪5‬‬
‫❑ بخش پذیری بر ‪ 5‬و ‪3‬‬
‫❑ حل معادله درجه ‪2‬‬
‫دستورالعمل ‪For‬‬

‫از دستور العمل ‪ for‬برای تکرار دستورالعملها استفاده میشود‪ .‬شکل کلی دستور‬
‫‪ for‬بصورت زیر میباشد‪:‬‬
‫(عبارت ‪ ; 3‬عبارت ‪ ; 2‬عبارت ‪for )1‬‬
‫{‬
‫; دستورالعمل ‪1‬‬
‫; دستورالعمل ‪2‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫;دستورالعمل ‪n‬‬
‫}‬
.‫ را از ورودی گرفته فاکتوریل آنرا محاسبه ونمایش میدهد‬n ‫برنامه زیر عدد صحیح و مثبت‬

#include <iostream>
int main( )
{
int n, i ;
long fact = 1 ;
cout << "Enter a positive integer number";
cin >> n;
for( i=1; i<=n; ++i)
fact *= i;
cout << fact << endl;
return 0 ;
}
‫برنامه زیر مجموع اعداد صحیح و متوالی بین ‪ 1‬تا ‪ n‬را محاسبه نموده و نمایش میدهد‪.‬‬

‫‪#include‬‬ ‫>‪<iostream‬‬
‫‪int‬‬ ‫) (‪main‬‬
‫{‬
‫; ‪int n, i=1‬‬
‫; ‪long s = 0‬‬
‫; ‪cin >> n‬‬
‫)‪for(; i<=n; i++‬‬
‫;‪s += i‬‬
‫; ‪cout << s‬‬
‫} ; ‪return 0‬‬
.‫ را نمایش میدهد‬9 ‫ تا‬0 ‫برنامه زیر ارقام‬

#include <iostream>
int main( )
{
int j=0 ;
for( ; j <= 9 ; )
cout << j++ << endl;
return 0 ;
}
.‫ ایجاد میشوند را نمایش میدهد‬3 ، 2 ، 1 ‫برنامه زیر کلیه اعداد سه رقمی که با ارقام‬

#include <iostream>
int main( )
{
int i,j,k,n;
for(i=1; i<=3; ++i)
for(j=1; j<=3; ++j)
for(k=1; k<=3; ++k)
{
n=i*100 + j*10+k;
cout << n << ‘\n’ ;
}
return 0 ;
}
‫البراتوار‬

‫❑ ماموع اعداد از یك تا ‪ n‬محاسبه و چاپ نماید‪.‬‬


‫❑ برنامه ای بنویسیدكه ‪ n‬عدد از ورودی دریافت كرده‪ ،‬بزرگترین مقدار از بین‬
‫‪ n‬عدد را پیدا كرده در خروجي چاپ نماید‪.‬‬
‫❑ حقوق كارمندان ‪( 1‬اسالید اول)‬
‫❑ حقوق كارمندان‪( 2‬اسالید اول)‬
‫❑ برنامه ای بنویسید مضارب عدد‪ 2‬از ‪ 2‬تا ‪ 100‬را چاپ نماید‪.‬‬
‫❑ برنامه ای بنویسید مضارب عدد ‪ 9‬تا را‪ 100‬چاپ نماید‪.‬‬
‫❑ ‪ X‬به توان ‪ n‬برساند‪.‬‬
‫❑ سوال چهارم بخش الف‪،‬اسالید اول(صفحه ‪.)51‬‬
‫❑ فاكتوریل ‪ n‬را محاسبه نماید‪.‬‬
‫فصل سوم‬

‫سایر ساختارهای تکرار‬


‫فهرست مطالب فصل سوم‬

‫دستورالعمل ‪while‬‬ ‫‪.1‬‬


‫دستورالعمل ‪do while‬‬ ‫‪.2‬‬
‫دستورالعمل ‪break‬‬ ‫‪.3‬‬
‫دستورالعمل ‪continue‬‬ ‫‪.4‬‬
‫دستورالعمل ‪switch‬‬ ‫‪.5‬‬
‫تابع )(‪cin.get‬‬ ‫‪.6‬‬
‫عملگر )(><‪static_cast‬‬ ‫‪.7‬‬
‫جدول اولویت عملگرها‬ ‫‪.8‬‬
‫دستورالعمل ‪while‬‬
‫از این دستور العمل مانند دستورالعمل ‪ for‬برای تکرار یك دستورالعمل ساده یا ترکیبی‬
‫استفاده میگردد‪ .‬شکل کلی این دستور العمل بصورت زیر میباشد‪.‬‬

‫)شرط (‪while‬‬
‫}‬
‫; دستورالعمل ‪1‬‬
‫; دستورالعمل ‪2‬‬
‫‪.‬‬
‫‪.‬‬
‫; دستورالعمل ‪n‬‬
‫}‬
‫تفاوت دستورهاي ‪while‬و ‪for‬‬

‫دسددتورالعمل ‪ for‬زمددانی اسددتفاده‬


‫میشود که تعداد دفعات تکرار از قبدل‬
‫مشخص و معدین باشدد‪ .‬در صدورتیکه‬
‫تعداد دفعات تکدرار مشدخص نباشدد‬
‫بایسددددتی از دسددددتورالعمل ‪while‬‬
‫استفاده نمود‪.‬‬
‫مثال ‪:‬‬

‫‪int x=0‬‬
‫)‪while(x<5‬‬
‫;‪cout << x ++<< endl‬‬

‫با اجرای قرعه برنامه فوق مقادیر زیر نمایش داده میشود ‪:‬‬

‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
.‫ قرار ميدهد‬avg ‫ مقدار از نوع اعشاري را گرفته اوسط آنها را محاسبه و در متغیر‬n ‫برنامة فوق‬

#inclode <iostream>
int main( )
{
int count = 0 , n;
float x, sum = 0 , avg ;
cin >> n ; /* ‫ تعداد مقادیر ورودی‬n*/
while(count < n){
cin >> x ;
sum += x ;
++ count ; }
avg = sum / n ;
cout << avg << endl;
return 0 ; }
‫دستورالعمل ‪do while‬‬
‫این دستور العمل نيم برای تكرار یك دستورالعمل سطاد‬
‫یا تركيبي استفاد ميشود‪ .‬شكل كلي این دستورالعمل‬
‫بصورت زیر ميباشد‪.‬‬

‫‪do‬‬
‫}‬
‫; دستورالعمل ‪1‬‬
‫; دستورالعمل ‪2‬‬
‫‪.‬‬
‫‪.‬‬
‫; دستورالعمل ‪n‬‬
‫;)شرط (‪} while‬‬
‫تفاوت دستورهاي ‪do while‬و ‪while‬‬

‫در دستورالعمل ‪ while‬ابتدا مقدار شرط‬


‫ارزیابی شدده امدا در دسدتورالعمل ‪do‬‬
‫‪ while‬ابتدددا دسددتورالعمل اجددرا شددده‬
‫سپس مقدار شدرط ارزیدابی میگدردد‪.‬‬
‫بنابراین دستورالعمل ‪ do while‬حداقل‬
‫یك بار انجام میشود ‪.‬‬
: ‫مثال‬

#include <iostream>
int main( )
{
int count = 0;
do
cout << count ++<<endl ;
while(count <= 9);
return 0 ; }
‫ را روی ده خط نمایش میدهد‬9 ‫ تا‬0 ‫ارقام‬
‫دستورالعمل ‪break‬‬

‫این دستورالعمل باعث توقف دستورالعملهای تکرار( ‪ )for , while ,do while‬شده و‬
‫کنترل به خارج از این دستورالعملها منتقل مینماید‪.‬‬
: 1 ‫مثال‬
#include <iostream>

int main( )
{
float x, s=0.0 ;
cin >> x ;
while(x <= 1000.0) {
if(x < 0.0){
cout << "Error-Negative Value" ;
break;
}
s += x ;
cin >> x ;}
cout << s << endl ;
return 0 ; }
:2 ‫مثال‬

#include <iostream>
int main( )
{
int count = 0 ;
while( 1 )
{
count ++ ;
if(count > 10 )
break ;
}
cout << "counter : " << count << "\n";
return 0 ;
}
:3 ‫مثال‬

#include <iostream>
void main( )
{
int count;
float x, sum = 0;
cin >> x ;
for(count = 1; x < 1000 . 0; ++ count )
{
cin >> x ;
if(x < 0.0) {
cout << "Error – Negative value " <<endl;
break ;
}
sum += x ; }
cout << sum << \n ; }
:4 ‫مثال‬

#include <iostream>
int main( )
{
float x , sum = 0.0 ;
do
{
cin >> x ;
if(x < 0.0)
{
cout << "Error – Negative Value" << endl ;
break ;
}
sum += x ;
} while(x <= 1000.0);
cout << sum << endl ;
return 0 ; }
‫البراتوار‬

‫تعداد ارقام یک عدد‬ ‫✓‬


‫‪ N‬جمله اول ترادف فیوناتچی‬ ‫✓‬
‫کامل بودن یک عدد‬ ‫✓‬
‫ب م م دو عدد‬ ‫✓‬
‫دستورالعمل ‪continue‬‬
‫از دستورالعمل ‪ continue‬میتوان در دستورالعملهای تکرار‬
‫‪ for ، while ، do while‬استفاده نمدود‪ .‬ایدن دسدتورالعمل‬
‫باعث میشود که کنترل به ابتدای دستورالعملهای تکرار منتقدل‬
‫گردد‪.‬‬
:1 ‫مثال‬

#include <iostream>
int main( )
{
float x, sum = 0.0 ;
Do
{
cin >> x ;
if(x < 0 . 0)
{
cout << "Error" << endl ;
continue ;
}
sum += x ;
} while(x <= 1000.0 );
cout << sum ;
return 0 ; }
:2 ‫مثال‬

#include <iostream>
int main( )
{
int n , navg = 0 ;
float x, avg, sum = 0 ;
cin >> n ; / * ‫ عبارت از تعداد اعداد ورودی‬n * /
for(int count = 1 ; count <=n; ++ count )
{
cin >> x ;
if(x < 0 ) continue ;
sum += x ;
++ navg ;
}
avg = sum / navg;
cout << avg << endl ;
return 0 ;
}
‫دستورالعمل ‪switch‬‬
‫همانرور که می دانید از دستورالعمل شرطی(‪ )if else‬می توان بصورت تودرتو‬
‫استفاده نمود ولی از طرفی اگر عمق استفادة تو در تو از این دستورالعمل زیداد‬
‫گردد‪ ،‬درك آنها مشکل میشود ‪ .‬برای حدل ایدن مشدکل ‪ ، C++‬دسدتورالعمل‬
‫‪ switch‬که عمالً یك دستورالعمل چند انتخابی میباشد را ارائه نموده است‪.‬‬
Switch ‫شكل كلي دستور العمل‬
switch(‫)عبارت‬
{
case valueone : statement;
break;
case valuetwo: statement;
break;

case valuen : statement;


break;
default: statement ;
}
: 1 ‫مثال‬
#include <iostream>
void main( )
{
unsigned int n ;
cin >> n;
switch(n)
{
case 0:
cout << "ZERO" << endl ;
break;
case 1:
cout << "one" << endl ;
break ;
case 2:
cout << "two" << endl ;
break;
default :
cout << "default" << endl;
} / * end of switch statement * /
}
: 2 ‫مثال‬
#include <iostream>
void main( )
{
unsigned int n;
cin >> n ;
switch(n) {
case 0 :
case 1:
case 2:
cout << "Less Than Three" << endl;
break;
case 3:
cout << "Equal To Three" << endl ;
break;
default:
cout << "Greater Than Three" << endl;
}
}
‫تابع )(‪: cin.get‬‬

‫این تابع یك کرکتر را از صفحه‬


‫کلید میگیرد‪ .‬برای استفاده از این‬
‫تابع در ابتدای برنامه بایستی داشته‬
‫باشیم‪:‬‬
‫‪#include‬‬ ‫>‪<iostream‬‬
‫قرعه برنامه ذیل یك کرکتر را از صفحه کلید گرفته و نمایش میدهد‪.‬‬

‫‪char‬‬ ‫;‪x‬‬
‫;) (‪x = cin.get‬‬
‫; ‪cout << x‬‬
.‫ استفاده شده است‬switch ‫ و دستور‬cin.get() ‫در قطعه برنامه ذیل ازتابع‬

char x;
x = cin.get( );
switch(x) {
case  r  :
case  R  :
cout << RED << \n ;
break ;
case  b  :
case  B  :
cout << BLUE << endl ;
break ;
case  y  :
case  Y  :
cout << YELLOW << endl;
}
‫البراتوار‬

‫▪ برنامه ای بنویسيد كه با دریافت كركترم كد اسكي آن را چاپ كند( ‪a‬‬


‫‪ ),b, c, d,e, f,k‬را بخواند‪.‬‬
‫▪ برنامه ای بنویسيد كه با دریافت رقم (عدد) شمار متناظر آن را چاپ‬
‫كند(‪ 1‬تا ‪.)10‬‬
‫▪ برنامه ای بنویسيد كه عدد هفته را دریافت كندم برای آن روز‬
‫هفته(شنبه میكشنبه ‪ )...‬را چاپ نماید‪.‬‬
‫عملگر ‪static_cast‬‬

‫از این عملگر برای تبدیل موقت یك نوع ‪ data‬به نوع دیگر‬
‫استفاده میشود‪ .‬این عملگر یك عملگر یکتائی میباشد‪.‬‬
‫مثال ‪:1‬‬

‫; ‪int x = 25‬‬
‫; ‪float y‬‬
‫‪y = static_cast‬‬
‫; )‪< float >(x‬‬

‫مقدار ‪ x‬موقتاً بصورت اعشداری در‬


‫می آید و در نتیجه مقدار ‪ y‬برابدر بدا‬
‫‪ 25.0‬می شود‪ .‬بایستی توجه داشدت‬
‫که نوع متغیر ‪ x‬عوض نمی شود بلکده‬
‫موقتاً مقدار آن بصدورت اعشداری در‬
‫آمده است‪.‬‬
‫مثال ‪:2‬‬

‫; ‪float x = 14.75‬‬
‫<< ‪cout‬‬
‫‪static_cast < int‬‬
‫;‪>(x) << endl‬‬
‫; ‪cout << x‬‬

‫ابتدا مقدار ‪ 14‬نمایش داده میشود و‬


‫سددپس مقدددار ‪ 14.75‬نمددایش داده‬
‫میشود‪.‬‬
‫جدول اولویت عملگرها‬

‫)‬ ‫(‬ ‫چپ به راست‬


‫‪Static_cast < >( ) ++‬‬ ‫‪--‬‬ ‫‪+‬‬ ‫‪-‬‬ ‫‪sizeof‬‬ ‫راست به چپ‬
‫‪* / %‬‬ ‫چپ به راست‬
‫‪+ -‬‬ ‫چپ به راست‬
‫<<‬ ‫>>‬ ‫چپ به راست‬
‫<‬ ‫=> > =<‬ ‫چپ به راست‬
‫==‬ ‫=!‬ ‫چپ به راست‬
‫?‬ ‫‪:‬‬ ‫راست به چپ‬
‫=‬ ‫=‪+‬‬ ‫=‪-‬‬ ‫=‪*= /= %‬‬ ‫راست به چپ‬
‫‪,‬‬ ‫چپ به راست‬
‫مثال‬
2+4%2=2+0=2
(2+4)%2=(6)%2=0
4+6%3/2*4=4+0/2*4
=4+0*4=4+0=4

i=0;
j=3;
++i+4/2+ -- j=1+4/2+-- j
=1+4/2+2=1+2+2=3+2=5
‫البراتوار‬

‫❑ ماموع مقابل زیر را محاسبه و چاپ نمایيد‪.‬‬

‫‪S = 1+‬‬ ‫‪2‬‬


‫!‪2‬‬ ‫‪+‬‬ ‫‪3‬‬
‫!‪3‬‬ ‫‪+ .... +‬‬ ‫‪N‬‬
‫!‪N‬‬
‫❑ فلوچارتي رسم نمائید كه ‪ N , X‬را از ورودی خوانده مقدار‬
‫سری زیر را محاسبه كند‪:‬‬

‫‪S = 1+‬‬ ‫‪+‬‬ ‫! ‪+ .... + N‬‬


‫‪x 2‬‬ ‫‪x4‬‬ ‫‪xn‬‬
‫!‪2‬‬ ‫!‪4‬‬
‫فصل چهارم‬

‫آرایه ها‬
‫آرایه یك بعدي‬

‫آرایه یك فضای پیوسته از حافظه اصلی کامپیوتر میباشد که میتواند‬


‫چندین مقدا را در خود جای دهد‪.‬‬

‫کلیه عناصر یك آرایه از یك نوع میباشند‪.‬‬

‫عناصر آرایه بوسیله اندیس آنها مشخص میشوند‪.‬‬

‫در ‪ ، C++‬اندیس آرایه از صفر شروع میشود‪.‬‬


‫كاربرد آرایه ها‬

‫آرایهها در برنامهنویسی در مواردی کاربرد دارند که‬


‫بخواهیم اطالعات و دادهها را در طول اجرای‬
‫برنامه حفظ نمائیم‪.‬‬
‫; ]‪int x[5‬‬

‫‪x‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫اولین عنصر ]‪x[0‬‬


‫پنجمین عنصر ]‪x[4‬‬
‫تخصیص مقادیر اولیه به عناصر آرایه ‪:‬‬

‫;}‪int x[5]= {4, 2, 5, 17, 30‬‬

‫‪x‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪17‬‬ ‫‪30‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫دریافت مقادیر عناصر آرایه ‪:‬‬

‫;]‪int x[5‬‬
‫)‪for(int i=0; i<=4; ++i‬‬
‫; ] ‪cin >> x[ i‬‬

‫نمایش مقادیر عناصر آرایه ‪:‬‬

‫; ] ‪for(int i=0; i<5; ++i) cout << x[ i‬‬


‫اگر تعداد مقادیر اولیه كمتر از تعداد عضوهاي آرایه باشد عضوهاي باقیمانده بطور اتوماتیك‪ ،‬مقدار اولیه صفر ميگیرند‪.‬‬

‫;}‪int x[5] = {12, 5, 7‬‬

‫‪x‬‬
‫‪12‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫بایستي توجه داشت كه آرایهها به صورت ضمني مقدار اولیه صفر نميگیرند‪ .‬برنامه نویس باید به عضو اول آرایه‪،‬‬
‫مقدار اولیه صفر تخصیص دهد تا عضوهاي باقيمانده بطور اتوماتیك‪ ،‬مقدار اولیه صفر بگیرند‪.‬‬

‫; }‪int x[5] = {0‬‬

‫‪x‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫دستور زیر یك آرایه یك بعدي شش عنصري از نوع ‪ float‬ایجاد مينماید‪.‬‬

‫; }‪float x[ ] = {2.4, 6.3, -17.1, 14.2, 5.9, 16.5‬‬

‫‪x‬‬
‫‪2.4‬‬ ‫‪6.3‬‬ ‫‪-17.1‬‬ ‫‪14.2‬‬ ‫‪5.9‬‬ ‫‪16.5‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫ عدد اعشاری و مثبت را گرفته تشکیل یك آرایه میدهد سپس مجموع عناصر آرایه را مشخص‬100 ‫برنامه ذیل‬
.‫نموده نمایش میدهد‬

#include <iostream>
#include <iomanip.h>
int main( )
{
const int arrsize = 100 ;
float x[ arrsize], tot = 0.0 ;
for(int j=0; j<arrsize; j++)
cin >> x[ j ];
for(j=0; j<arrsize; j++)
cout << setiosflags(ios::fixed|ios :: showpoint ) << setw(12) <<
setprecision(2) << x[ j ] << endl;
for(j=0; j<arrsize; j++)
tot += x[ j ] ;
cout << tot ;
return 0 ;
}
‫ عدد اعشاري را گرفته تشكیل یك آرایه داده سپس كوچكترین عنصر آرایه را‬20 ‫برنامه ذیل‬
.‫مشخص و نمایش ميدهد‬

#include <iostream>
#include <conio.h>
int main( )
{
float x[20], s;
int j ;
clrscr( ) ;
for(j=0; j<20 ; ++j) cin >> x[ j ];
s = x[0 ] ;
for(j=1; j<20; ++j)
if(x[ j] <s) s = x[ j ];
cout << s << endl;
return 0;
}
.‫) بصورت صعودي مرتب مينماید‬Bubble sort( ‫ عدد اعشاري را گرفته بروش حبابي‬100 ‫برنامه زیر‬

#include <iostream>
#include <conio.h>
int main ( )
{
float x[100] , temp;
int i,j ;
clrscr( );
for(i=0; i<100; ++i)
cin >> x[i ];
for(i=0; i<99; i++)
for(j=i+1 ; j<100; j++)
if(x[ j ] < x[i ]
{
temp = x[ j ] ;
x[ j ] = x[ i ];
x[ i ] = temp ;
}
for(i=0; i<=99; i++)
cout << x[ i ] << endl;
return 0 ;
}
‫البراتوار‬

‫❑ برنامه ای بنویسید که با استفاده از آرایه ها بزرگترین مقسوم علیه مشترک و‬


‫کوچک ترین مضرب مشترک دو عدد را محاسبه و چاپ نماید‪.‬‬
‫❑ فلوچارتي رسم كنید كه تاریخ تولد شخصي را از ورودی خوانده‪ ،‬سن شخص‬
‫را با تاریخ روز‪ ،‬محاسبه نموده در خروجي چاپ كند‪.‬‬
‫❑ فلوچارتي رسم نمائید كه عددی را از ورودی دریافت كرده مقلوب عدد را‬
‫محاسبه و در خروجي چاپ كند‪.‬‬
‫❑ فلوچارتي رسم نمائید كه ‪ N‬عدد از ورودی دریافت كرده تعداد اعداد اول و‬
‫كامل را شمرده در خروجي چاپ نماید‪.‬‬
‫فصل پنجم‬

‫توابع‬
‫تعریف توابع‬

‫استفاده از توابع در برنامهها به برنامهنویس این امکان را میدهدد کده‬


‫بتواند برنامههای خود را به صورت قرعه قرعه برنامه بنویسد‪ .‬تا کندون‬
‫کلیدده برنامددههائی کدده نوشددتهایم فقددط از تددابع ) (‪ main‬اسددتفاده‬
‫نمودهایم ‪.‬‬
‫نوع مقدار برگشتی‬
‫شكل كلي توابع بصورت زیر ميباشند ‪:‬‬

‫لیست پارامتر ها جهت انتقال اطالعات از تابع احضار کننده به تابع فراخوانده شده‬

‫)‪return-value-type function-name (parameter-list‬‬


‫{‬

‫‪declaration and statements‬‬

‫نام تابع‬
‫}‬

‫تعریف اعالنهای تابع و دستورالعملهای اجرائی‬


‫تابع زیر یك حرف کوچك را به بزرگ تبدیل مینماید‪.‬‬

‫نوع مقدار برگشتی‬


‫پارامتری از نوع ‪char‬‬
‫نام تابع‬

‫)‪char low_to_up (char c1‬‬


‫{‬
‫;‪char c2‬‬
‫;‪c2 = (c1>=  a  && c1<=  z )?( A  + c1-  a ): c1‬‬
‫; )‪return (c2‬‬
‫}‬
.‫برنامه کامل که از تابع قبل جهت تبدیل یك حرف کوچك به بزرگ استفاده مینماید‬

#include <iostream.h>
char low_to_up(char c1)
{ x
char c2;
c2=(c1 >=  a  && c1 <=  z )?( A  +c1 - a ) : c1; ‘d’
return c2;
}
int main( )
{
char x; c1
x=cin.get( );
cout << low_to_up(x) ; ‘d’
return 0;
}

c2
‘D’

‫آرگومان‬
‫تابع ‪ maximum‬دو مقدار صحیح را گرفته بزرگترین آنها را برمیگرداند‪.‬‬

‫)‪int maximum(int x, int y‬‬


‫{‬
‫; ‪int z‬‬
‫;‪z=(x >= y)? x : y‬‬
‫;‪return z‬‬
‫}‬
.‫ جهت یافتن ماکزیمم دو مقدار صحیح استفاده می نماید‬maximum ‫برنامه کامل که از تابع‬

#include <iostream>
int maximum(int x , int y)
{ a b
int z ; 10 15
z=(x > y)? x : y ;
return z;
}
int main( ) x y
{
int a, b ; 10 15
cin >> a >> b ;
cout << maximum(a,b);
return 0;
}
z
15
maximum ‫آرگومانهای تابع‬a, b
‫اسامی پارامترها و آرگومانهای یك تابع‬
‫میتوانند همنام باشند‪.‬‬
.‫برنامه زیر یك مقدار مثبت را گرفته فاکتوریل آنرا محاسیه نموده نمایش میدهد‬

x!=1*2*3*4*…*(x-1)*x

#include <iostream>
main ‫ در‬n
long int factorial(int n)
{ 3
long int prod=1;
if(n>1)
for(int i=2; i<=n; ++i)
prod *=i;
return(prod); factorial ‫ در‬n
}
int main( ) 3
{
int n;
factorial ‫ در‬i
cin >> n ;
cout << factorial(n) ; 2,3,4
return 0 ;
}
factorial ‫ در‬prod
6
‫وقتی در تابعی‪ ،‬تابع دیگر احضار میگردد‬
‫بایستی تعریف تابع احضار شونده قبل از‬
‫تعریف تابع احضار کننده در برنامه ظاهر گردد‪.‬‬
‫اگر بخواهیم در برنامهها ابتدا تابع ‪ main‬ظاهر‬
‫گردد بایستی ‪ prototype‬تابع یعنی پیش‬
‫نمونة تابع که شامل نام تابع‪ ،‬نوع مقدار‬
‫برگشتی تابع‪ ،‬تعداد پارامترهائی را که تابع‬
‫انتظار دریافت آنرا دارد و انواع پارامترها و‬
‫ترتیب قرارگرفتن این پارامترها را به اطالع‬
‫کامپیلر برساند‪.‬‬

‫در اسالید بعد مثالی در این زمینه آورده شده است‪.‬‬


#include <iostream>
#include <conio.h>
long int factorial(int); // function prototype
int main( )
{
int n;
cout << "Enter a positive integer" << endl;
cin >> n;
cout << factorial(n) << endl;
return 0 ;
}
long int factorial(int n)
{
long int prod = 1;
if(n>1)
for(int i=2; i<=n; ++i)
prod *= i;
return(prod);
}
‫در صورتی که تابع مقداری بر نگرداند نوع‬
‫مقدار برگشتی تابع را ‪ void‬اعالن میکنیم‪ .‬و‬
‫در صورتیکه تابع مقداری را دریافت نکند بجای‬
‫‪ parameter- list‬از ‪ void‬یا ( ) استفاده‬
‫میگردد‪.‬‬

‫در اسالید بعد مثالی در این زمینه آورده شده است‪.‬‬


#include <iostream>
#include <conio.h>
void maximum(int , int) ;
int main( )
{ int x, y;
clrscr( )
cin >> x >> y;
maximum(x,y);
return 0; .‫تابع مقداری بر نمی گرداند‬
}
void maximum(int x, int y)
{
int z ;
z=(x>=y) ? x : y ;
cout << "max value \n" << z<< endl;
return ;
}
) Call By Value ( ‫احضار بوسیله مقدار‬
main ‫ در‬a
#include <iostream>
int modify(int) 20
int main( )
{
int a=20; modify‫ در‬a
cout << a << endl;
modify(a) ; 20
cout << a << endl;
return 0 ;
} modify‫ در‬a
int modify(int a)
40
{
a *= 2;
cout << a << endl; : ‫خروجی برنامه‬
return ;
} 20
40
20
‫احضار بوسیله مقدار ( ‪) Call By Value‬‬
‫‪ a‬در ‪main‬‬
‫>‪#include <iostream‬‬
‫)‪int modify(int‬‬ ‫‪20‬‬
‫) (‪int main‬‬
‫{‬
‫;‪int a=20‬‬ ‫‪ a‬در‪modify‬‬
‫;‪cout << a << endl‬‬
‫; )‪modify(a‬‬ ‫‪20‬‬
‫;‪cout << a << endl‬‬
‫; ‪return 0‬‬
‫}‬ ‫‪ a‬در‪modify‬‬
‫)‪int modify(int a‬‬
‫‪40‬‬
‫{‬
‫;‪a *= 2‬‬
‫;‪cout << a << endl‬‬
‫در این ندوع احضدار تدابع حافظدههای مدورد‬
‫; ‪return‬‬
‫اسدددددتفاده آرگومانهدددددا و پارامترهدددددا‬
‫}‬
‫از هم متمایزند و هرگونه تغییدر در پارامترهدا‬
‫باعددددددددددددددث تغیددددددددددددددر‬
‫در آرگومانهای متناظر نمیگردد‪.‬‬
‫هر زمان که نوع مقدار برگشتی تابع ‪int‬‬
‫میباشد نیازی به ذکر آن نیست و همچنین‬
‫نیازی به تعریف پیش نمونه تابع نمیباشد‪.‬‬
‫البراتوار‬

‫❑ برنامه ای بنویسید که اعداد اولیه بین یک تا ‪ 1000‬پیدا و چاپ نماید‪.‬‬


‫پروژه‬

You might also like