0% found this document useful (0 votes)
13 views

programming_lecture_2

Uploaded by

sajadtaheri494
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

programming_lecture_2

Uploaded by

sajadtaheri494
Copyright
© © All Rights Reserved
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