کامپیوتر و IT و اینترنتعلوم مهندسی

آموزش صفر تا صد سی پلاس پلاس

صفحه 1:
بسم الله الرحمن الرحيم

صفحه 2:
مقد مه زبان ۶ یک زبان همه منظوره است. دستورالعملهاى اين زبان بسيار شبيه رس مر رت ات ار ‎le een‏ می‌شود که ۶) یک زبان سطح بالا باشد که برنامه‌نویسی در آن آسان |1 اند ونا

صفحه 3:
++0 3 از سر الت صاد ريز كر ساق رابه ارث برده است. امابرتری فنی ذيكرى هم ذارد: ‏ 295 اكنون «شىكراء از ی تا رال رس برنامه‌های شی گرا تولید نمود. برنامه‌های ‎es mari a aes‏ 1۳ ترس سل سر و قابليت اطمينان و يايدارى ييشترى دارند.

صفحه 4:
: اهم مطالب این کتاب جلسه اول: «مقدمات برنامه‌نویسی با (60++» جلسه دوم: «انواع اصلى» «جلسه سوم: «انتخاب ‎aes‏ سك ‏«جلسه پنجم: «توابع ‏رس

صفحه 5:
«جلسه هفتم: «اشاره‌گرها و ارجاع‌ها جلسه هشتم: «رشتههاي كاراكتربي و فايلها در +04 استاندارد» جلسه نهم: «شيئكرايي» «جلسه دهم: «سربار گذاري عملگرها جلسه بازدهم: «ترکیب و ورائت»

صفحه 6:
اد مقدمات برنامه‌نویسی با )1 +

صفحه 7:
:آنجه در اين جلسه مى خوانيد © 5 ۳- 060 ار ار ۴- شروع کار با ۶++ ۳ ع- ليترالها و كاراكترها ‎yee‏ ا ۸- مقداردهی اولیه به متغیرها - ثابتها ۰ -عملگر ورودی

صفحه 8:
:هدف‌های رفتاری 0 مىرود 2000 يايان 525 9 بتوانید: - مزاياى زبان ()2++ رابر زبانهاى مشابه ذكر كرده و ‎REy Cg‏ ل ا Perey ae ‏ا ا ل ال‎ oa caeT e dae ‏رابيان كرده و مشكلات هر دوره را به اختصار شرح‎ ‏دهید.‎ - مزایای شی گرایی در تولید نرم‌افزار را برشمارید. -اصول سهكانة ا ات لك ‎Wr erry] ev-ve4|‏ ۱ >>

صفحه 9:
‎Reem LS TY edad‏ ل کوچک را نوشته و آزمایش کنید. ‏- عملگر ورودی و خروجی را در (6++ شناخته و از آن‌ها در ‎Freee Ay‏ ۳[ ‏- نحوة اعلان متفیرها و شیوةٌ مقداردهی به آن‌ها را بدانید. ‎۱ od ‏ا لا‎ rel eg Bur Sy eee! ‏- علت و شيوههاى افزودن توضيح به كد برنامه را شرح دهيد. ‏- علت و شيوةٌ معرفى ثابتها در برنامه را شرح دهيد. ‎) ‎by

صفحه 10:
56 ‏در آزمايشكادهاى بل زبانى به نام © ايجاد‎ 1917٠١ ‏در دهه‎ PEM Ley ne Boe) a BEKO) Soe Bier ened ۱ Se eM Cae eto BRAM ‏ا ا ا ا ل‎ B) ‏جلب نمود.‎ ۱ ‏ا ا ا‎ Cape cory ‏رونق یافت. زبان () که قابلیت شی‌گرایی نداشت ناقص به‎ | Oe Bey ‏نظر می‌رسید تا این که‎ 6 OL a RC a aC ee enone GB) )) SS oes

صفحه 11:
0 ‏سم‎ 9 see به همین دلیل در سال ۱۹۹۸ زبان (6++ توسط موسسة ‎erie‏ ما 0000 aye

صفحه 12:
$4+4+Clye—-1 ‏*زبان ۵ یک زبان همه منظوره است‎ ‎a‏ این زبان عطلکرهایی تعببه شده که بر نامه نویسی سطح يايبن و به زبان ماشين رانيز امكانيذير مى سازد ‏سر ار در ار رت ۳ در اين زبان بسيار كوتاه است

صفحه 13:
* - زبان © برآي اجراي بسياري از دستور انش از توایم کتابخانه‌اي ‎eent teste See Spee te ee Ton]‏ 0ك توابع و اگذار مي‌نماید. برنامه مقصدي که توسط کامپایلر هاي () ساخته مي‌شود بسیار ‎Pope oy ee ee‏ < وهب كداز نسل0 لست تمام ويزكيهايجذلب0 را به ارث بردم 2 و سرانجام آخرین دلیل استفاده از ا 6 كا

صفحه 14:
+46 4550 6 —Y در دهه ‎١917١‏ در آزمايشكاهدهاى بل زبانى به نام © ايجاد ‎PE mae Lepr enone wes erie) sie) es) pee‏ ‎were kA. We ee‏ ال الاك الا ا 2 از این زبان منتشر شد و به سرعت نظر برنامه نویسان حرفه‌ای ‎keer‏ ا ا ا ل ل 00 ل ۱۳ نداشت ناقص به نظر مىرسيد تا اين كه در اوايل دهة ۱۹۸۰ دوباره شر کت بل دست به کار شد و 27116[ظ 5101151112 0 23903

صفحه 15:

صفحه 16:
Bel pe ‏ل ا را‎ oe py eee pe ree ‏و‎ ey Up ey acd ‏ال‎ wrt yy ‏برنامه به یک «ویرایش گر متن» و یک ی‎ ‏داریم.‎ ۱ نمونههاى جالبى از محيط مجتمع توليد براى زبان ن)ج+ به شمار می‌روند.

صفحه 17:
‎A‏ 2 كارن اك ۶ ( 46 نسیتیه حروف(حساس‌به حالله لستیعنی() و و را سر مثال : اولین برنامه ‏۱ ‏ميدهد: ‏1ل ل 02 يي ل لا لام ‎O‏ هم ‎{

صفحه 18:
اولین خط از کد بالا یک «راهنمای پیش‌پردازنده» ‎ret more]‏ ل 5 ۱- کاراکتر # که نشان می‌دهد این خط. یک راهنمای يب شيردازنده است. اين كاراكتر بايد در ابتداى همة خطوط راهنمای پیش پردازنده باشد. 0 < نام یک فایل کتابخانه‌ای» که مبان دو علامت < > یرل راز

صفحه 19:
خط دوم برنامه نیز باید در همه برنامه‌هاي 0++ وجود داشته باشد. این خط به کامپایار مي‌گوید که «بدنه اصلی برنامه» از گجا شروع مي‌شود. اين خط داراي اجزاي زیر است: - عبارت ز که یک نوع عددي در (6++ است. © - عبارت وو كه به آن «تابع اصلي» در 0++ ميكويند. © - دو يرانتز () كه نشان ميدهد عبارت «-- يك «تابع» است.

صفحه 20:
دستورات برنامه از خط سوم شروع شده است. دستور خط سوم با علامت سميكولن : يايان يافته است.

صفحه 21:
توضيع <توضیم. متتی است که به منظور راهنمایی و درك بهتر به برنامه اضافه مى شود و تاثيرى در اهرای بزنامة نذارد. ‎٠‏ كامتاتتر توضيمات برنامه را قبل از اجرا حذف مىكند. " استفاده از توضيم سبب مىشود كه ساير افراد كد برنامة شّما را راحتتر درك كنند.

صفحه 22:
تلا رت رب( و ‎jl sled Lb - 1?‏ 99 كر متنی که بعد از دو علامت اسلش بیلیدتا پایان با ‏< -با استفاده از حللت 2): هر متنی که با ۰( یابد یک توضیح تلقی می‌شود.

صفحه 23:
۵- عملکر خیوجی علامت << عملكر خروجى در 0+ نام دارد (به تن عملكر درج نیز می‌گویند). ۱ ‎ey]‏ ۳ ۳ | ؛ 66 >> ۱ مقدار عع را به خروجى الج مىفرستد كه الجن معمولا به صفحهنمايش اشاره دارد. در نتيجه مقدار *؟ روى صفحه نمايش درج مى شود.

صفحه 24:
ع -ليترالها و كاراكتيها يك « »> رشتداى از حروف. ارقام يا علايم جايى استحد كه ميان دو علامت نقل قول " "' محصور شده باشد. یک« » یک هرف. رقم یا علامت قابل چاپ است که ميان دونشانة '' محصور شده باشد. يس 'سرذ و '!' و ‎'٠'‏ هر رل تاراكتر است به تفاوت سه موجوديت «عدد» و «كاراكتر» و «ليترال رشتهاى» دقت كنيد: ») يك عدد اسح '' يك كاراكتر اسحءدو "؟" يك ليترال رشتداى است.

صفحه 25:
4 تعريف آنها: «متغير» مكانى در حمافظه است كه ههار مشخصه دارد: .20202020600606 .وقتى متغيرى را تعريف مىكنيم. ابتدا با توجه به نوع متغير. ادرسى از حافظه در نظر كرفته مىشود. سيس به آن آدرس يك نام تعلق می‌گیرد.

صفحه 26:
در 0++ قبل از اين كه بتوانيم از متغيرى استفاده كنيم, بايد آن را اعلان نماییم. ۱ ‏رت‎ ae eee) ل ‎IN ee Deed‏ ۱2 متفیر به کامپایلر اطلاع می‌دهد که این متفیر چه مقاديرى مى تواند داشته باشد و جه اعمالى مىتوان روى آن 5 ‎ea‏ @)) ))S

صفحه 27:
‎se—‏ 1 مر در ‏عبارت وحم نام متغیر را نشان می‌دهد. این نام مداکثر ‏مىتواند الا كاراكتر باشد. نبايد با عدد شروع شود. علايم ‏رياضى نداشته باشد و همهنين «كلمة كليدى» نيز نباشد. مقداردهى اوليه ‏عبارت عددادةه: عبارت «مقداردهى اوليه» نام دارد. با استفاده ‏از این عبارت می‌توان مقدار اولیه‌ای در متغير مورد نظر قرار داد. ‏دستور زير تعريف يك متغير صحيح را نشان مىدهد: ‎SOs‏ < ۰ 1۱

صفحه 28:
- مقدار دهی اولبه ده منغیر ها در بسیاری از موارد بهتر است متغیرها را در همان محلی که اعلان می‌شوند مقداردهی کنیم. استفاده از متغیرهای مقداردهی نشده ممکن است باعث ایجاد دردسرهایی شود. دردسر متغیرهای مقداردهی نشده وقتی بزرگ‌تر می‌شود که سعی کنیم متغير مقداردهى نشده را در يك محاسبه به كار ببريم. مثلا اكر »را كه مقداردهى نشده در عبارت © + ,د > عرز به كار ببريم. حاصل برغير قابل ييشيبينى خواهد بود. براى اجتناب از جنين مشكلاتى عاقلانه است که متغیرها را هميشه هنگام تعريف. مقداردهى كنيم. ‎ay‏ به حرم tat p=O;

صفحه 29:
اور 01 ‏ا ا كت‎ se NESE WATE 1 STALE ‏ا ا ا‎ ‏مىماند. مثلا در يك برنامهً محاسبات رياضى. متغيرى به نام 2“ تعريف‎ 1 ‏ل ا ا‎ WC Grey ا ل ا ا لت ا ل | يك يك نوع متغيراست كه فقط يك بار مقداردهى مىشود و سيس تغيير دادن مقدار آن در ادامة برنامه ممكن نيست. تعريف ثابتها مانند تعريف متغيرهاست با اين تفاوت كه كلمه ‎TSO)‏ ال ا ل 0

صفحه 30:

صفحه 31:
‎Bend‏ لك ‏براي این که بتوانیم هنگام اجراي برنامه مقاديري را وارد کنیم از ل 0 ‏ا 3 ‎CaN) DU‏ باطو دور << واو ‎ce cd‏ يكستغير لست ‎ ‎

صفحه 32:
مثال ‎١ - ٠١‏ استفاده از عملكّر ورودى ا 7 22000 ere ‏نمايش مى دهد:‎ MO Mace ‏ا‎ pera aCe مت Pet ak (one ‏ی‎ رج << واو لعج >> بو ک> ۲ نها ل >> لور ۲۰ 0:

صفحه 33:
ا ا ا م ا رفتار مىكند. يعنى همان طور که ‎[ees Deere‏ 0 به صورت يشت سر هم جاب كنيم: در عملكر ورودى نيز می‌توانیم با استفاده از چند عملگر 0 ‎lard od et el tera‏ سل دستور: 2 << رر << عر << وهم سه مقدار »و برو > به ترتيب از ورودى دريافت مى شوند. براى ‎Be Cea. eles Sea‏

صفحه 34:
مثال ۱۱ - ۱ چند ورودی روی یک خط برنامة زير مانند مثال ‎٠ - ٠١‏ است با اين تفاوت كه سه عدد را از ورودى كرفته و همان اعداد را دوباره در خروجى نمايش مى دهد: )وه بر ‎Re Mc oN cera marca CH‏ 00000 1 عجارو ادا ‎We‏ تحصاویی ‎Pa Re‏ :ج << سر << وي << وم الل ا 0 ‎to‏ alee ere ‏ا‎ ‎1

صفحه 35:
پایان جلسه اول

صفحه 36:
جلسه دوم «انواع اصلى»

صفحه 37:
:آنچه در این جلسه می خوانید - انواع دادة عددی ۲- بشتییر کرد صییم ' - محاسبات اعداد صحيح ‎TESS etn‏ 0[ ۰ - عملگرهای مقدار گذاری مر کب انواع ممبز شتاور (

صفحه 38:
7 a ae Dy ‏سییز‎ lla gels Joh ‏برلين أصصط‎ 2‘ 77 ‏نوع کاراکتری‎ - ‏سر مر‎ 2 2 [0| [01101 ‏1ك‎ ‎2)

صفحه 39:
‎Cs) See ee‏ ار ا -سرریزی عددی ‏۱۵-خطای گرد کردن ‎EI Sey) 7

صفحه 40:
هدف هدف‌های ‎ea‏ امعدرفىر زواع يتخب جايرنجر ۳ | ضشكشحيح در ( )++ رانام ببريدو ‎Seared‏ رات ‎rer‏ رادر برنامهها به كار ببريد. - انواع عددی ممیز شناور در ()++را نام ببرید و متغيرهايى از اين نوع ها را در برنامهها به كار ببريد. - نوع بولین را تعریف کرده و متفیرهایی از این نوع رادر برنامهها به كار ببريد. <<<

صفحه 41:
م اك ‎i‏ رد 0 «تبدیل نوع» و «گسترش نوع؛ را شناخته و انواع مختلف را به یکدیگر تبدیل نمایید. [0 CTE CaTS Sperone roe ee 00 ‏ل‎ es Soe EE ay) ‏عملكرهاى حسابى و افزايشى و كاهشى و‎ - ENS ras seri) ‏رع ى‎ 2 (

صفحه 42:
7 3 مقدمه ما در زندگی روزمره از داده‌های مختلفی استفاده مىكنيم: اعداد . تصاويرء نوشتهها يا حروف الفباء صداهاء بوها و ... . بايردازش اين دادهدها مى توانيم تصميماتى اتخاذ كنيم, عكس العم لهايى نشان دهيم و مسالهاى را حل كنيم. رايانهدها نيز قراراست همين كر راانجام دهند. يعنى داده‌هایی را بگیرند. آن‌ها رابه شکلی که ما تعیین می‌کنیم پردازش کنند و در نتیجه اطلاعات مورد نیازمان را استخراج کنند. .. .

صفحه 43:
۱-انواع داده عددی در ()++ دو نوع اصلى داده وجود ۱ صحیح» و «نوع 9 لاه دیگر از روى اين دو ساخته مىشوند (به شكل زير دقت كنيد).

صفحه 44:
نوع صحبح 2 براى نكهدارى اعداد صحيح (اعداد ‎٠‏ و ‎١‏ و " و...) استفاده ‎ey te)‏ ل ‎Ce RC‏ به کار می‌روند و دامنه محدودی دارند.

صفحه 45:

صفحه 46:
نوع مميد شناور بای نگهداری اعداد اعشاری اسستفاده می‌شود. اعداد اعشاری بیشتم برای اندازه گیمی دقیق به کار می‌روند و ‎Als‏ بر رگ تری دارند. یک عدد اعشاری مل ۳6۲/۱۸۷ را می‌توان به شک[ ۷۳۵۲/۱۸*۷۰ ۸۷۳۲/۱۱۰۲ با" " به‌این ترتیب باکم و زیاد کردن اعداد اعشارى «اعداد مميز شناور» مى

صفحه 47:
| ne eee Poet ee Canny] BY oe ey Se pee rant fae ‏اا‎ ‎0 Rene ele ah ee ‏محدودةٌ م قادیریلس نک ه هر کلم مر‌تولنند‎ ‏دلشته باشند‎ ۱ rupee pe) ‏سس‎ eens BIS ere RCL RP a) Tear Soe Sere ee aN A ‏كا دو بايت از حافظه را اشغال كند در حالى كه روى‎ 0000 eee eee Bee 520011006

صفحه 48:

صفحه 49:
)++ مانند اغلب (بانهاى برنامهنتويسى براى محاسبات از عملترسان جمع (+) : تفريق (-): ‎(x) Ops‏ . تقسیم (/) ر پاقیمانده استفاده می‌کند.

صفحه 50:
۴ - عملکرهای افزایشی و کاهشی برلی‌دستکاریمقدار متفیرهایصحیح دو عملگر جالیگر دارد: عملکر نب ۰ مقدار يك متغير را يك واحد افزايش مىدهد. اک اماهر كدام ازاين عملكرها دو أن

صفحه 51:
در شکل رس رترر» عملگر قبل از نام متفی می آید ل ا اك د و سور ری ار بعد از نام متعس مى آيد مثل ‎=k Fry‏ ۰ در شکل بترنرر ابتدا متغیر متناسبا عملگر» بافزایش يا کاهش می‌یابد و پس ا زآن مقدار متفیر .برای محاسبات دیگر استفاده می‌شود در شكل م مقدار متغير در محاسبات به BI adh ‏هم ا ل ا اه‎ A wl

صفحه 52:
ف - عملكرهاى مقدا ركذارى مركب ‎+4+O‏ عملكرهائديكرىئدارد كه مقداركذارئىدر ا ‎GJ‏ ‏عملكر +- میتولنیم‌هشنولحدبه « لضافه ‎t= 9 0 eee eee rend‏ ووز ‎SLC) py eores)‏ اا ل 5 اين تفاوت كه كوتاهتر است. به عملكر +- «عملكر مرکب» می‌گویند زیرا ترکیبی از عملگرهای + و - 06

صفحه 53:
۱ CC mn Ce ry lr Bua lwy ‏قبلا از عملكر - براى مقدارتذارى در متغيرها‎ استفاده كرديم. ب+ عملگرهای دیگری دارد که مقداركذارى در متغيرها را تسهيل مئنمايند. عملكر مركب در ‎+O‏ ۵ 2 ۵ 7 8 ار

صفحه 54:
لت ا كك 6 ا 0 5 w -= 09 => Ni 9 w*=0; — w=w" 9; w /=0; ‏رب‎ < | w %= 6 29520 0:

صفحه 55:
درن).. سه نوع ممیز شناور وجود دارد: . انواع ممیز شناور ‎eS‏ 1 —_ نوع جاط حك از هشت بایست بررای ‏ نگهداری عدد استفاده 4 معمولا نوع ]از چهار بایست برای ‎logs _J‏ ل ل کند. 0 ا

صفحه 56:
۷- تعریف متغیر ممیز شناور تفاوت نوع بانوع ۱ ‎Fe‏ از حافظه استفاده 1 مى كند. يس نوع 00 دقتى بسيار بيشت از ۱ 3 دارد. به همین دلیل محاسبات ‎double‏ ‏وفت‌ک درا سا ات mac io double x,v=O;

صفحه 57:
اعداد مميز شناور به دو صورت > م نشان داده می‌شوند: به شکل.«ساده» و به شکل «علمی». سادم 5 علمى 8 مك 1( 9097 مشخص است که ‎i‏ ‏دادن اعداد خيلى کوک و همينين اعداد خیلی بزرگ. کارآیی بیشتری دارد. 3

صفحه 58:
‎٩‏ - نوع بولین اسسا ل ل م0 ما ات هط را ‎clea oe‏ معنى نادرست است. اما اين مقادير در اصل به صورت ‎١‏ و - درون رايانه دخبره می‌شوند: ۱ برای 9۲۲ , براى سح(

صفحه 59:
۰- نوع کاراکتری جات یک کاراکتر یک حرف. رقم يا نشانه است که یک شمارةٌ منحصر به فرد دارد. به عبارت عامیانه, هر کلیدی که روی صفحه کلید خود می‌بینید یک کاراکتر را نشان می‌دهد. سد مسر بت از مرف 0( ‎‘a 1 9 VG‏ تا ای و هر یک از اعداد "۰ تا سنك ‎eG‏ ‏روی صفحه کلید را یک کاراکتر 236“

صفحه 60:
برای تعریف متغیری از نوع کاراکتر از کلمه مرا رب ور 1 درون دو علامت آيستروف () محصور شده باشد. پس () یک کاراکتر است؛ همچنین ۸" یک کاراکتر است اما ۸ جک کارا کتر دست نلک سس تحص لت متال: thar ‏ع‎ >:

صفحه 61:
الا کاربر مشخکص می‌شود. نو تعریف یک نوع شمارشی به شکل زیر است: که مر طلمه‌ای علیدی است. مر ررمم نام نوع جديداست كه كارير مشخص مىكندو ام مرن مب رم 0 نوع جدید می‌تواند داشته باشد.

صفحه 62:
به عنوان مثال به تعريف زير دقت كنيد: ran Og{SOT CGOO,O000, TOC OCO,T1Y, CRT حالا مر یک نوع جدید است و متغیرهاد > و DES OST ee arab aa es) ‏کی مس رس رحس اس مت‎ ‏جَدَيَدَ بسازيم. در كد بالا متعيرهاى ).و‎ ‏گر .از نوع ر را تعریف شده‌اند. آنگاه ار‎ 2۳۵۱, ‏بامقدار 6/۷ و 2ر - با مقدار‎ ‏مقداردهی شده است.‎

صفحه 63:
همچنین دو با چند شمارشگر در یک فهرست می‌توانند مقادیر یکسانی داشته در یدحا (01-0 01,0 ور مت منوالی بعدی را خواهند رکرفت: Buus ١ CD: fGOD=d, GOV VOU, POE CEO, MLO, Paty

صفحه 64:
تحوه انتخاب نام شمارشگرها آزاد است اما بیشک 00 0 نامه‌هایشان استفا مد ۲ ۰ ۱ ار ‎js 59 >‏ رن إن - اولين حرف از نام ٍ نوع شمارشی را با حرف 1 ‎ae‏ 0 ما 0-5-7 نشانه‌های ریاضی نیز هبش

صفحه 65:
شمارشگرهای ۰ نبایسد در محدوده‌های مشترک استفاده شوند. برای مثال تعر یف‌های زیر را در نظر بگیرید: ean (۱ pun Croup, B,C} PEN SD) be er ee keen) ‏هر دو تعر یف 7 و 7) آمده است.‎

صفحه 66:
بلح بر برای تولید رد جرد مت به کار می‌روند. بعنی کدی که به راحتی درک شود و نیاز به توضبحات اضافی نداشته باشد. ‎te)‏ ا و ۰( زار نام و نوع کاربرد و محدوده مقادیرشان درک شود: ‎rn Cob {REO, CREED CLOE CLOCK OROVGE}‏ ‎Preve(SCCODD MOONE AOOR}‏ میج ‎ex Dete(WPY DOOD, VCOR}‏ ‎penser Loerprce{O OGLPW IPOM,PERL}‏ ‎ran Crader (MOLE, PEOOLE}‏

صفحه 67:
۳۲ - تبدیل نوع» گسترش نوع در محاسباتی که چند نوع متغیر وجود دارد. جواب همیشه به شکل متفیری است که دقت بالاترى دارد. يعنى اكر يك عدد صحيح رابا عرد مر تست و ياسخ به 0 براى اين كه مقدار يك متغير از نوع مميز شناور را به نوع صحیح تبدیل کنیم از عبارت ) استفاده می‌کنیم به این عمل 2 گفته می شود

صفحه 68:
مثال گسترش نوع برنامة زير يك عدد صحيح را با يك عدد مميز شناور جمع مىكند: ‎DO)‏ ‎ao tot vdlue wi a double ude:‏ ۱۱ ‎ktu= CC;‏ ‎double p = 9.0P6;‏ و ردير ا ‎ek a ee nn‏ ‎retura O;‏

صفحه 69:
ل ۳ «فطای زمان کامپایل» ‎Oec ioe]‏ 0 توسط ‎a9 Sg AAs Ute‏ راحتی می‌توان آن‌ها 7 رفع نمود. «فطای زمان اجرا» کشف اینگونه خطاها به راحتی ممکن نبست و کامپایلر المت به آن نمىداند. . برخىاز خطاهای زمان اجرا سبب می‌شوند که برنامه به طور ‎eee ey ae Tomas‏

صفحه 70:
‎-١5‏ سرريزى عددى ‏يك متغير هر قدر هم كه كنجايش داشته ‎mere PR Om STS Reo ges) Creer‏ آآن متفیر بیشتر باشد. اگر سعی کنیم در یک متغير مقدارى قرار دهيم كه از كنجايش ۱0۹ ‎aan)‏ ا ل ل ‎BEL‏ ‏ا ا ی ‏داده است.

صفحه 71:
مثال ‎٠ - ١1‏ سرريزى عدد صحيح اير ‎sbi Sa rob as aol‏ ا ا ا 2 | ا ‎ope‏ 0 طن كا كر تك ريه يى ۳ ۳ منفی «گردانیده» مى شود اما وقتی ‎Lone‏ عدد ممیز شناور ‎ney oboe‏ بىنهايت را به دست مىدهد. 3 ۳

صفحه 72:
4 - خطاى كرد كردن خطاى كرد كردن نوع ديكرى از خطا ت كه كت ال ل ل لا لاا 7# از متغیر ممیز شناور براي مقایسه برابري استفاده نكنيد» زيرا در متغيرهاي مميز شناور خطاي گرد کردن سبب مي‌شود که پاسخ ‎al‏ سس محاسبه را به جاى جنين اعدادى منظور مى كند.

صفحه 73:
هوزةُ متغيرها - 08 اصطلاح ۱5۳ در ()++ واه مناسبى است که می‌توان به وسیلةً آتن حوزة متغیر را مشخص نمود. یک بلوک برنامه. قسمتی از برنامه است که درون یک جفت علامت کروشه }{ محدود شده است. 2 حا كد ده 2

صفحه 74:
oe Ree a ere rea Sie ‏می‌شود و تا پایان همان بلوک ادامه می‌پابد.‎ ‏خارج از لآن يلوك نمى توان به متغير دسترسى‎ ‏داشت. همجنين قبل ازاين كه متغير اعلان‎ ل | مى توانيم در يى برنامه. جند متغير متفاوت يا

صفحه 75:
پایان جلسه دوم

صفحه 76:
جلسه سوم «انتجاب»

صفحه 77:
:آنچه در این جلسه می خوانید دستور 1 7 درمز حواو. .1۳ ۰ - عملکرهای مقایسه‌ای -بلوک‌های دستورالعمل -شرط‌های مر کب - ارزیابی مبانبری >»

صفحه 78:
- عبارات منطقى ‎٠‏ - دستورهاى انتخاب تودرتو ‎eek, 6‏ رس ‎noe ee‏ لد ‎ae‏ عبارت شرطی ‏- كلمات كليدى

صفحه 79:
هوفی‌ای رفتاری: 0 مى رود ‎ae‏ يايان 0 جلسه بتوانید: لجف لوسر جرس ا 0 0 ی پیچیده استفاده کنید. ‎oe‏ لا ا ا ل 0 ل 2 ‎ewes)‏ ‏- بلوک دستورالعمل را تعریف کنید. ‎pee PN De Peay eee ee IT ewe IGE BCS ete‏ شرطی به کار ببرید. -از شرطهاى مركب استفاده كرده و ارزيابى ميانبرى را شرح دهيد. - «كلمة كليدى» را تعريف كنيد. >>>

صفحه 80:
مقد مه 1 ‏در‎ oes ‏شکل ترتیبی اجرا می‌شوند. یعنی دستورات برنامه به‎ ‏تريب از بالا به پایین و هر کدام دقیقا یک نار اجرا‎ Dee By eS ‏ا ا‎ ge] BER ey Pe) Pepesere te ommnreed Wan =| 8 Pes pce ‏پیشتر برنامه استفاده کنیم. همچنین در این جلسه‎ ‏انواع صحيح كه در (0)++ وجود دارد بيشتر يررسى‎ مى كردد.

صفحه 81:
سر را شود. نحو ان به كونة زير است: هر رهز 2-00 ‎oes Crzercdlirer‏ تا رد ار ‏صحیح است (عبارتی که با یک مقدار صحیح براورد ‎le eke 9 (52.55‏ ددر قرواك تابال اسر با ۳۱ س لد لد و 3 رم ری مقدار غیر صفر داشته باشد. دفت کنید که شرط باید درون پرانتز فرار داده شود. ‎

صفحه 82:
و ا ‎Reb‏ مى شود بسته به اين كه ‎Ben)‏ ال ل ال ا 37 فرعى اجرا كردد. نحو اين دستور به شكل زير است: Be (erchiizc) ‏سود‎ ‏همان‌نرط‌مساه‎ صحيح موباشد و و ۳۳۳ ‎pore pea reyes eer geal ee‏ صفرباشد ... . لجرا خولهدشد

صفحه 83:
مثال یک آزمون قابلیت تقسیم 1 7700 1 ‏را‎ ‎Tce ECA ceca ea ez 171 << ۷ << ٩ Ce (Si) J ‏رت‎ Sa Fe EN 2 2 ‏رس 2 ور رن‎ /

صفحه 84:
۴- عملگوهای مقایسه‌ای در ل)++ شش عملگر مقایسه‌ای وجود دارد: و ‎Ca eas =! == 5 = 5 ==5 >‏ شش عملگر به شکل زیر به کار می‌روند: « کوچکتر از رلستاا ... . «<بزردگتر از بالستا 1 كوجكتر بامساوى ءا لسمنا| 0 بز ركشر يامساوىء | لست// 5 > مساوويا بالستتا| 0 مساووئيسا درنيسيتا] 00

صفحه 85:
این‌ها می‌توانند براى مقايسة مقدار عبارات با هر نوع ترتیبی استفاده شوند. عبارت حاصل به عنوان يى شرط تفسير مىشود. مقدار اين ‎pened Now) ges pe)‏ ا 0 ‎ge 2)‏ ا 00 عارك . . . . . براير با صفر ارزیابی مىشود.ء به اين معنى كه اين شرط نادرست است.

صفحه 86:
| ne eee Poet ee Canny] BY oe ey Se pee rant fae ‏اا‎ ‎0 Rene ele ah ee ‏محدودةٌ م قادیریلس نک ه هر کلم مر‌تولنند‎ ‏دلشته باشند‎ ۱ rupee pe) ‏سس‎ eens BIS ere RCL RP a) Tear Soe Sere ee aN A ‏كا دو بايت از حافظه را اشغال كند در حالى كه روى‎ 0000 eee eee Bee 520011006

صفحه 87:
دقت كنيد كه در ++!)عملكر با ‎eee‏ ا يك مساوى تكى " -" است ولى عملكر ‎ee CSB‏ ا ل مثلا دستور ‎DO‏ = «۶ مقدار ۳۳را در ‎JS x‏ ‎x == 99 oy ees) iad‏ بررسى مى كند که آیا مقدار «با ۲۳ برابر است یا خیر. درک این تفاوت اهمیت زیادی دارد.

صفحه 88:
۴- بل ک‌های دستورالعمل يك بلوك دستورالعمل زنجيرةاى از دستورالعملهاست كه درون براكت ‎١‏ محصور شدهء مانند 0 } عدك ۳ ۱۳۷۸ map 1 = tewp

صفحه 89:
روئند ‏یک بلوک دستورالعمل درون یک‎ A aa WEES Ay es eee ‏لله‎ Tali pay S ‏لا و‎ = x my v = twp, 1 ۱/۸7 لح >> رر >> ۲ > ۲ >> در ک> الوم 1

صفحه 90:
int woia() و ‎pout << "Gc =" <<a << puch}‏ ‎fata‏ { A CCN an EN Ca a Nien pe a ee ee } { mnie wel” Bee 2> salt ۲ ki PN Rn ee ee ۲ ‏کب ها‎ bea

صفحه 91:
SEC ae een) ‏شرطهايى ۱۵4 2 مىتوانند به صورت يك‎ ‏شرط مرکب با هم ترکیب شوند. این کار با استفاده‎ ۱ و)©-(‎ ٠ ىقطنم ‏ازعملكرهاى‎ ‎۰ ‎Ee ‏درستلستاگر و تنهالگرهم. و هم .هردو درسته‌اشند‎ ‏نادرستلستگر و تنهالگرهم و هم هر دو نادرستتب‌اشند‎ . ‏درست است اگر و تنها اگر نادرست باشد‎ ۱ ey Hl Ene BOT I bp jl SoS x 9 po ply wd ‏اكر‎

صفحه 92:
۱ eee Spe Pear ‏استفاده از جداول درستی به گونةً زير بیان می‌شوند:‎ !ا م ‎Ply‏ هو م 886۲ ‎٩‏ م ۶ ۳۱ ۱ ۰۲ ۱۳۳۱" ۴ كنرك فا 4 جک اد 4 ) ۲۱ 4) oe Aj FE ‏لا‎ ‎۳ oaunae cue aay درست است.

صفحه 93:
ارزیابی میانبری

صفحه 94:
۷- عبارات منطقی یک عبارت منطقی شرطی است که یا درست است ‎per sree Fay Park ROE‏ ‎or ee Red tt E ah SOLE oa eae‏ معناى نادرست و هر مقدار غير صفر به معناى درست است. به عبارات منطقى «عبارات بولى» هم مى كو يند.

صفحه 95:
چون همه مقادیر صحیح ناصفر به معنای درست تفسیر می‌شوند. عبارات منطقی اغلب ۱ P (a) vou << "ats wt zero"; Loe wt gerp | et ۳ ‏چاپ می‌کند زیرا عبارت منطقی وقتی‎ Ferre ROWER Wu) prea rirtowe |e We Oras Be Sey)

صفحه 96:
کد زیر را نگاه کنید: ‎oP d‏ طلی هس ‎cout << "ats‏ (۰9۵4) ۷ ز دستور خروجی فقط وقتی که اصفر است اجرا مى كردد و 20 وقتى ناصفر ‎Cel‏ ل ال 0 ممكن است فراموش كنيم كه عبارات منطقى مقادير صحيح دارند و اين فراموشى باعث ایجاد نتایج غیر منتظره و نامتعارف شود.

صفحه 97:
یک خطای منطقی دیگر. اين برنامه خطادار است: ( )كدض ‎ict‏ 1 11 ‏ال ا‎ ae SR ‏ا ا‎ cae cece 0 ‏ا ا ا ل‎ OS ei ete) As Sen UH / منشأ خطا در برنامة بالا اين اصل است كه عبارات منطقى مقدارهاى عددى دارند.

صفحه 98:
هستورهایانتخابقوهیتو 0 دستورهاى انتخاب مى توانند مانند دستورالعملهاى مركب به كار روند. به اين Pa ee ons Dyce ‏ار‎ ۱ eae peer) ese) BT Conn NUL BD) foo ok at aoe ated ae oe

صفحه 99:
مثال ۲-۱۲ دستورهای انتجاب تودرتو ال 0 1 كار مىرودء كاميايلر از قانون زير جهت تجزيه اين دستورالعمل مركب استفاده می‌کند: د هر جحاح با آخرين جفت مى شود.» ۳ ‏ا ات‎ a

صفحه 100:
‎-٩‏ ساختار 8 ححاد ‏دستور يي تودرتو اغلب برای بررسی مجموعهای از حالت‌های متتاوب باموازی بسه کار می‌رود. در این حالات فقط عبارت ‎ebe‏ ‏الل ل ال 0 کدها را معمولا با ساختار م , _ می‌سازند.

صفحه 101:
1 SES eT iets aot ee NE] ‏برنامة زير يى نمرة امتحان را به ذرجة حرفى مقادل تبذيل مى كند:‎ م 1 ‏بوصو اه‎ ‏ل ات ما‎ eed a ‏ا ا ل ل الا تب‎ ‏ما مر‎ ‏را‎ ot nC uc ۱ ۱ ence ae on OMe ef ۶۳ ‏رات مت‎ at ‏رم‎ 2 ۱۱ Pe ceed) eet tact ar ane eel ear Fi ۱۳ ‏دح در مر‎ ay

صفحه 102:
)= دستور العمل زرد دسنور ,__ می‌نواند به جای ساحار « مر برای بررسى مجموعهداى از حالتهاى متناوب و موازى به كار رود. تحو دستور ,. , به ‎er)‏ ا رت

صفحه 103:
این دستور ابتدا جوم را برآورد مى كند وس میات گاتها. سم 4 .۰۱۱ م۰۱ ‎Ol‏ ‏یعنی می‌توانیم در دستور . آن‌راقید . نکنیم. .... باید به شکل یک نوع صحيح ارزيابى شود و ‎١‏ 2 ۱ ‎i ۱‏ ‎Poise‏ Ce

صفحه 104:
لازد الست در اتناق هر دص« ‎Creda‏ ‏قرار بگیرد. بدون این دستور, اجرای برنامه دستور عاد ‎ie‏ نمى شودء .2 هاى زيرين راهم خط به خط می‌پیماید و دستورات مقابل آن‌هارا اجرا می‌کند. به ‎eT ee‏ ‎oil eyes‏ کر زر رز سر

صفحه 105:
زیر استفاده مى كند:

صفحه 106:
مثلا در دستور انتساب زیر: ‎Qxiv }‏ ركم ) = ‎wia‏ ‏اكر .>:: باشد مقدار :: را درون ‎JS sritt‏ می‌دهد و اگر ,--: نباشد مقدار .را درون ‎als <i‏ مىدهد. يعنى به همین سادكى و اختصار مقدار کمینة ::و :درون متغير ‎SESS‏ قرار می‌گیرد.

صفحه 107:
0 PE Dg ©) el eal ol eS ne ills oy Te) te ‏و‎ eee ‏:برنامهنويسى كلمهاى است كداز قبل»‎ Peres PEE TOD ‏ار‎ ‎j ‏,منظور شده است.‎ لردت ‎2p map‏ خا ل

صفحه 108:
لها delete

صفحه 109:
wt_ey ۲7۷ (9 ۱: ۱۱۱۱۱۱ ۲۲۱۲۱۳۲۲۳۲۳۲۱ ۲۲۷ static ost fexvphate DPROE

صفحه 110:
+115 1

صفحه 111:
دو نوع كلمة کلیدی وجود دارد: ‎0rd gj) GladS5 —\‏ ۲-شناسه‌های استاندارد. ار ار خاص از آن زبان را نشان مىدهد. كلمة كليدى “او و ‎ACC RO‏ يك شناسة استاندارد كلمهاى است كه يك نوع دادة استاندارد از زبان را مشخص مى كند. كلمات كليدى ‎rie‏ ا 0

صفحه 112:
پایان جلسه سوم

صفحه 113:
جلسه جهارم «تکرار»

صفحه 114:
: آنچه در این جلسه می خوانید ‎Way Py need) =)‏ - خانمه دادن به بک حلقه رم )= مزر ‎For‏ ‏)= دستور 5 7 در ام ‎ee‏ يد ا 2

صفحه 115:
مدذوهاىر رفتارى: ‎jl (Cotes td 0112‏ مطالعة 56 9 بتوانید: ‏-شخاخستینانواع! فناخاخهاز های اقکیوار چتنهتوآک‌ها 9 ‎toy artes aye re‏ واگ ر| شناخته و تفاوت آن با دستور ‎while‏ را بيان كنيد. ‏م ا ا ل 00 كوناكون بسازيد. ‏- حلقههاى فوق را به يكديكر تبديل كنيد. ‏- علت استفاده از «دستورات يرش» را ذكر كرده و تفاوت ‎Laas ea‏ ل ل ل ‏- اهميت اعداد تصادفى را بيان كرده و نحوةٌ توليد «اعداد شبه تصادفى» را بدانید.

صفحه 116:
و عاجراى يى دريى يك دستور يا بلوكىاز ‎ie cen ot en an nye pcan‏ ا تكرار مى توانيم كنترل برنامه را مجبور كنيم تابه خطوط قبلی بر گردد و آن‌ها را دوباره اجرا نماید. ee are ‏ا ا ل‎ ‏تسس(‎ gw 0 eaters le Le Serre Sera 06 سح

صفحه 117:
‎١‏ - دستور عازار نحو دستور :۱ 000 ‎while (costiio) stotecect;‏ ‏به‌جای ‎0١‏ .یک شرط قرار می‌گیرد و به جای ‏20300 دستورى كه بايد تكرار شود قرار مى كيرد. ‎ee re Sey ber ey‏ 7 ‎ee BSCE‏ ۱ ‎Bee BCT CR ESCO Ie Seana‏ 052 ‎Oe)‏ . اجرا شده و دوباره مقدار شرط بررسی می‌شود. این تکرار آنن قدر ادامه می‌يابد تا اين که مقدار شرط صفر شود.

صفحه 118:
مثال ۲-۱ محاسبه حاصل جمع اعداد صحبح متوالی با حلقه ارب اين برنامه مقدار | - 7 بر + رابرای عدد ورودی » محاسبه می‌کند: ‎buses)‏ ‏۱-۲ ۱ ۲ ‎len cree‏ ا زا ۱ ار زد چا سر ‎pre}‏ ديل ‎Busy‏ ‏ا ۱ ۱ ۰ ا 7 ‎A‏ ا بو >>

صفحه 119:
اس اند دادن پد یت سل 001 ee eye at OM BCE) ‏یت‎ at aad Cae ia ‏دستورالعمل‎ ‎1 ‎۱ ‎١ a) breck; ‏بلججر دم ويج‎ i ا ‎AOA oA ao IS I‏ الل تا i

صفحه 120:
: مثال ۴-۴ اعداد فببوناچی ا اا ااا ا ااا لي لكات ا معادلههاى زير تعر يف مى شوند: ا ا ال اا ۰ الى ا مثلا براى 11-2 داريم: ‎F,=F,,+F,,=F,+F,=0+1=1‏ ‏يا براى 11-3 داريم: ‎F,=F,,+F,,=F,+F,=1+1=2‏ ‏رت ‎F,=F,,+F,,=F,+F,=2+1=3‏

صفحه 121:
۱ ‏دريافت مىشود. محاسبه و جاب مى كند:‎ int main() { long bound; cout << "Enter a positive integer: "; cin >> bound; cout << “Fibonacci numbers < " << bound << “:\n0, 1"; long f0=0, f1=1; while (true) { long f2 = f0 + fl; if (f2 > bound) break; ‏ل زر تحت تا‎ 9 2 11552: ی که(

صفحه 122:
مثال ۴-۵ استفاده از تابع (6610)0 0 ‏یت‎ 1 1 dh int wain() ) ‏تلحر رجا‎ ۱ ‏رم‎ ‎۱ SS OD ‏بحطا‎ "0-00, 20-0 whi (re) { bo PO = PO + FG; P (PO > boverd) ext(); pout <<", "<<PO; ۹ aC here

صفحه 123:
Bre eerie e ‏ب‎ yer با فشردن کلیدهای ()*۲۱() سیستم عامل یک Rae are Cee SiPr eee rer Age ‏نگه داشته و کلید () روی صفحه‌ کلید خود را فشار‎ ‏دهيد تا برنامة فعلی خاتمه پیدا کند.‎

صفحه 124:
ور سا ۱ صورت زير است: ce ad ‏اين دستور ابتدا 25-7264 را اجرا م ى كند و‎ ‏شرط درست بود حلقه دوباره تكرار مى شود‎ 00 ‏وگرنه حلقه پایان‎ ۷ 7

صفحه 125:
دستور عاكإنب..جك مانند دستور داألكانهااست. 0 این ع ل ‎CR‏ ا ل ل ا ل توجه به مقدار ‎Bes‏ ا ‎Soe eed) eee‏ م_ اما حلقةّ عانطار می‌تواند اصلا اجرا نشود. ‏ زگ ون آن تنظیم دردد.

صفحه 126:
‎Co)‏ ]0 اه ‎erg‏ 1 مر ۱ ‎ee Sk (oh eile ere Vidi oat ee‏ كنك مس 2 00 :( 0 ‎Se‏ لاي هت

صفحه 127:
مثال ۴-۸ اعداد فاکتوریال ‎eC‏ ا ‎Fer TH Peo‏ زیر تعریف می‌شوند: (ممه اه , ۵۱-4 ل ل ل ا 0 ‎a! = 4011 1 - 400( = 4‏ ۱ 60-۰ 600 - 664 - 6۱ | 6 را

صفحه 128:
1 py inne ‏ا‎ F ey می‌کند: لیس تس اسر FE NAC oan a 0 ۱ 0 ,۳24 بجساز ت joo > ۲ ‏جک‎ برع 1 زا سرا

صفحه 129:
عبارت !برای پیش‌بردن متفیر کنترل حلقه به کار می‌رود. این عبارت پس از اجرای 2۱0۳۳۷۱ ارزیابی می‌گردد. — درست باشد دستور 207720 اجرا می‌شود.

صفحه 130:
بنابراین زنجيرة وقایعی که تکرار را ایجاد می‌کنند عبارتند از: ‎Keay) an OD a‏ سينا ۳ - بررسى ار و از ار ‎Pao)‏ ‏حلقه خاتمه مي‌,یابد. ‎

صفحه 131:
|۷9 on heen Mule) Sy EM ed Be ope cre ee Cpe eeT| fat wata() ‏لديا‎ ‏ا ا‎ ‏كك‎ ‏اي‎ (OH ‏ار سنت ونا‎ tS ne ee ao ‏ل ات‎ ۳ | ora ‏مىشود (مانند ادر مثال بالا) حوزة‎ ‏مى كر دد. يعنى آنتكحتكك ر"نتلح واف بيرق 55 طلغ رح متا‎ ‏نتيجة ديكر اين است كه مىتوان از نام مشابهى در خارج از حلقة ع0‎ yee ‏ا‎ pe) 7

صفحه 132:
eS ae Hermon es hav cry ‏برنامة زير ده عدد صحيح مثبت را به ترتيب نزولى جاب مى كند:‎ ‏)كدض اما‎ ( { Por (‘ct HD; i > O; i--) pout << ""<<i

صفحه 133:
مثال ۴-۱۵ بیشتر از یک متغیر ؟ با رل نس سنا ‎brat eae COS ac tieg‏ 3 209, ‏سرت سس نت‎ ۱ parca >> oo Se ae 0 26

صفحه 134:
۳ hae ats Cen edb ary) Fy Teel Lee Sees oie | 1 oa NS aS Pad AN { Por (tot ‏لك‎ ‎Por (it v=0; p <= 00; p++) pout << sein (PF) << xy; ‏ابر‎ >> ane i i

صفحه 135:
x aa ay en dee) i ‏وقتى دستور 5-ج7ادرون‎ ‏فا‎ ‏روی حلقه‌ای که مستقیما درون آن‎ ‏قرار كرفته تاثير مىكذارد.‎ ‏حلقههاى بيرونى بدون هيج تغييرى‎ دهد.

صفحه 136:
۶- دستور ماه ا ‎Jos‏ ‏ل : ‎١‏ ‎io‏ ‎if‏ دید ستورهای درون ‎ed / a‏ 9 : » ؛ 4( ‎wer) 4olol pi are‏ ۰ | > را خاتمه ‎Fe ee‏ ال كناك ‎a‏

صفحه 137:
مثال ۴-۱۹ استفاده از دستورهای و صجهمرس ۱ زج << وو ‎Ln (cael) aa‏

صفحه 138:
‎-Y‏ دستور صاص- ‎۱9 enw ne ete Roy ae) ‏است. مقسد اين يرش تورسط يت ب رعسب‎ py ct ‏شناسه‌ای است که جلوی آن علامت ‎eels‏ 7 سس بیک مزیت دستور ۳ این است که با استفاده از آ-ن می‌توان از همه حلقه‌های تودرتو خارج شد و به مکان دلخواهی در برنامه پرش نمود.

صفحه 139:
مثال ۲۰ ۴ استفاده از دستور صحب برای خارج شدن از حلقه‌های نودر تو بر ۱9 { ‎ie)‏ ار تام ا مس ۱ ‎(sil ine (Denes (Du rau}‏ مر ۷۲ ‎eee ca cece‏ للكت نض ا 0 ‎vont <<"‏ ‎i‏ ‏ال ا ا ا }

صفحه 140:
۸- تولید اعداد شبه تصادفی ال ل ا ا ل اال ل تحقیقات و توسعه‌های بسیار پیشرفته به این راهکار خیلی وابسته است. به وسيلةً شبیه‌سازی می‌توانیم رفتار سیستم‌های مختلف را مطالعه كنيم بدون اين كه لازم باشد واقعا ا نهارا م ل كد «اعداد ات توسط رایانه‌ها توليد شود ‎Ls‏ ‏نادانستههاى دنياى واقعى مدلسازى شود.

صفحه 141:
رایانه‌ها «ثابت‌کار» هستند یعنی با دادن داده‌های. تولید می‌شود. با وجود این می‌توان اعدادی تولید 0 52-62 7 ‎ce)‏ ا ا ‎Pet‏ ‏هیچ کدام الگوی مشخصی وجود ندارد. چنین اعدادی. ‎ee‏ می‌نامیم. 5 © 7ه

صفحه 142:
ا ا م زب دبیم رل بل ال ‎BOSE See se‏ ‎#Include<cstdlib>//defines the fand() and‏ ‎RAND MAX‏ # include <iostream> Int meayn() { // prints pseudo-random numbers: fOr (int 1 = OF | = BF ie) cout > > ۱۵۱۱۵۱( >> 2۲۳ cout << "RAND_MAX ‏ال و‎ << endl; J هر بار كه برنامة بالا اجرا شود. رایانه هشت عدد صحیح :2 توليد مى كند كه به طور يكنواخت در فاصلة ‎٠‏ تا ‎ROOOD_OOX‏ كسترده شدهداند. 8090(0(_)00816) در اين رابانه برایر با ۲:۱۲۴۷,۴۸۳:۶۴۷ است.

صفحه 143:
هر عدد شبه‌تصادفی از روی عدد قبلی خود ساخته می‌شود. ‎ng my)‏ مقدار داخلى كه د22 »2 كفته مى شود ايجاد مىكردد. ‎er awe eeye-d pes Peper Care Pes‏ ار پیش فرض بار گذاری می‌شود. ‏براى حذف اين اثر نامطلوب كه از تصادفى بودن أعداد مى كاهدء مى توانيم با استفاده از تابع ‎١‏ ‏خودمان مقدار هسته را انتخاب ل ‎ ‎ ‎ ‎

صفحه 144:
۳3 دعر له ‎Vanes.)‏ | طور محاورداى اين كه مىتوان هستة توليدكنندةٌ اعداد تصادفى را به شكل محاورداى وارد نمود:

صفحه 145:
يايان جلسه جهارم

صفحه 146:
3 توابع»

صفحه 147:
:آنچه در این جلسه می خوانید 57 توابع ا - توابع ساخت كارير - برنامةً آزمون - اعلان‌ها و تعاریف تابع ‎eed ie‏ مات رت ا متفیرهای محلی. توابع محلی . .

صفحه 148:
‎a‏ زر ‎Ce ae ‏- توابع ورودی/خروجی (1/0) لا 0 ۲ ۱ -توابع بی‌واسطه ‎2

صفحه 149:
ا ‎ne ene‏ تابع 09785 ۰ -آرگومان‌های پیش‌فرض

صفحه 150:
هدف‌های رفتاری: انهلار ضی رکالییی از پایان این جلسه بتوانید: ‎PPB serials veh mire gt ak eee‏ ‎me Rie SEE) i‏ را بدانيد و خودتان توابعی را ایجاد - دبرنامة آزمون» را تعريف كرده و دليل استفاده از آن را بيان - مفهوم «آر گومان» ‎dle Ib‏ | | re a sp eee یک را بدانید. (

صفحه 151:
۳ Lee apn ee ee le ‏بدانید.‎ ee a 8 ۱۳ aC Or aN ST ELT = zr ۱ یس ) )®@

صفحه 152:
apdbo—) ا الل ا ا ا ل اا ال ال ل 0 )40 ل ا 1 000 ‎db‏ 2 ا ا ال ا ل اام ا ل ل زیربرنامه‌ها «تابسع» ‎Te Eeele‏ ا ا ‎ee)‏ 1 در برنامه‌های مختلف دوباره از آن‌ها استفاده كر 2 ) 0

صفحه 153:
‎٠‏ توابع كتابخانداي ++ استاندارد «كتابخانة ()++استاندارد» مجموعه‌ای است که ‎eee Le he eee ee ei eerie)‏ | برنامه است. این توابع و عناصر از طریق «. . . » قابل دستیابی‌اند. قبلا برخی از آن‌هارا استفاده کرده‌ایم: ثاببت لت ري | 4 ‎Breve rer ar ee‏ تابع 7۷710 که در < . > تعريف شده است ‎wed‏

صفحه 154:
00 00 ESC te] OE Mowe Sere Se TELE) Sate ESCO RUC el Ske macro ‏هرجتد که پرذازش,‎ me umes ١ ‏يردازش‎ 7 oer rel Tae egy ‏الع زعر‎ /١ ‏عدد يا ران ادام رودو اكه‎ @) ) ©

صفحه 155:
برای اجرای یک تابع مانند تابع اجح() کافی ‎reas ee ae a) eel i noe‏ | 00 ‏ا‎ ESL oe USER TONG Ces py eery 2۹۲۷۱)

صفحه 156:
ال ل ان ان كل الما ار وال ‎ORES ee‏ ا ۱ ۱() فراخوانی می‌گردد. عبارت ‏ درون يرانتز ۳۳ گومان» أياديارامتر واقعىء» فراخوانى ناميده مىشود. در جنين حالتى مى كوييم كه « توسط ل ل ل ل ل 0000 ل ‎a Osan ao‏ ا ل ل ‎IE See‏ نيز حاصل 2-2 رابهعنان ياسسخ برمى كرداند. ‎as‏

صفحه 157:
0 9 9 (CN FRCS eee See een) EUS eT at gee) DEC SCS Te ae RO gin) eo )(<۷ ‏را به تابع ۵() برمی گرداند. جعبه‌ای که تابع‎ ۵ ‏را نشان مىدهد به رنك تيره است,ء به اين معنا كه فرايند داخلى و‎ نحوةٌ كار آن قابل رويت نيست.

صفحه 158:
مثال 'ا-ه آزمايش بكم رابطة مثلثاتى اين برنامه هم از سرفايل <> استفاده مىكند. هدف اين لس لد رت رائظة ترا دیب رک رت - ۱ تجربی بررسی شود. زر بر (09 97:۶ > 7 2« 0۱)) 2 { رت ره را ‎eee eo‏ و ‎ ‎

صفحه 159:
خروجی برنامه: خروجى نشان مىدهد كه براى هر مقدار ا ‎DNC‏ ‏>ود 708510 برابر است. 1 ١ ‏اهر‎ ‏ل‎ -0.0E P9-—” US—~ JD O.PPOSEI 0. ‏چاپ می‌کند.‎ aed 0 در ae ۳3 ‏ع‎

صفحه 160:
۱ ao) 0.201358 ,1 بسرمیگردلند ۱ ۳ 6.را 00 ceil(3.141593) sib S21, 4.0 suis - ‏مقبار‎ »05)2( ۱0 ‏بسرمی‌گردلند‎ (0)2كا© مقدار or ae ee ae 7 ar) ‏(به رادیان)‎ PE ‏رز‎ hy سیئوس معکوس ۲ (به رادیان) تانؤانت معكوس < (به راديان) (odd 25) X itn jlaie كسينوس 5 (به راديان) asin(x) atan(x) ceil(x) cos (x)

صفحه 161:
(3.141593) ۲۱۵۵۲ مقئار 3.0 را برميكردلند ۱۳۵ 7 را بسرمی‌گردلند (10010)2 مقدار ‎ab $2 |, 0.30103‏ (2,3) 00۷ مقنار 8.0 را ۳ ۳۳۱۵ 7 را بسرمی‌گردلند 7۳0 1 را برمی‌گردلند fim ‏ی‎ fot مقدار کف ۲ (گرد ‎eres‏ 2) K tab ‏لكاريتم‎ ‎(Cre By area ‏لگاریتم‎ ‎)10 ‏پایه‎ * به تولن2[ سينوس : (به راديان) رذج‎ floor(x / ةا 0 ) pow(x,p / sin(x) sqrt(x)

صفحه 162:
7 ar Stet reser er Tere ۱ Son ‏نوع ا‎ ‏ان را يردازش‎ 7 ‎gg BI) ۳.۳ recy‏ ارتقا مىدهد.

صفحه 163:
23 1 0: این سرفایل‌ها از کتابخانةٌ د) استاندارد گرفته شده‌اند. استفاده از آن‌ها شبیه استفاده از سرفایل‌های )++ استاندارد (مانند > >> ) الست. براى مثال اكر بخواهیم تابع اعداد تصادفی له را از سرفایل <2ت> به کار ببریم. باید دستور پیش‌پردازندةٌ زیر را به ابتدای فایل برنامة اصلی اضافه کنیم: ۸ ۱۸ ۱۸ ۱۸ ۱۸ ۱/۸ Nad <vstdlib>

صفحه 164:
po col ‏توایع‎ -۳ كرجه توابع بسيار متنوعى در كتابخانة )++ استاندارد وجود دارد ولى اين توابع براى بيشتر وظایف برنامه‌نویسی ‎os‏ نيستند. علاوه بر 1 برنامه‌نویسان دوست دارند خودشان بتوانند توابعی را بسازند و استفاده نمایند.

صفحه 165:
eat ee Oley ‏يكه مثال ساده از توابع ساخت كاربر:‎ tot ‏دك )عطي‎ 1 ac acca ate ee ‎ad‏ ان کر ‎return‏ ‎

صفحه 166:
بدنهٌ تابع. یک بلوک کد است که در ادامهً عنوان ان می‌آید. بدنه شامل دستوراتی است که باید انجام شود تا نتیجةٌ مورد نظر به دست آید. بدة شامل دستور ‎ely 45 Cowl retur‏ 5 را به و مکان فراخوانی تابع برمی گرداند.

صفحه 167:
اي ‎ae‏ عمده 1 اجراء ل 35 ل * اه م 5 1 ‎ae‏ 0 نها ‎eee‏ 7 ور ۳ استفاده كرددايم يك تابع به نام ‎eh»‏ ‏اصلى» را تعريف مى كند. نوع باز كشتى اين تابع از نوع 9 است. نام آلن 5د ا ا كه ست؛ يعنى هيج يارامترى ندارد. وع سس = 3 As

صفحه 168:
بسرنامة آزمون-6۳ تنها هدف این برنامه. امتحان كردن تابع و بررسی صحت کار ان است. بر = 3 > برچسب‌ها و راهنماهای خوانا - را لحاظ کنید.

صفحه 169:
مثال ۵-۴ یک برنامهةً آزمون برای تابع عطلح() 3 ۱ ‎fol vube(tat x)‏ Cll A ene Faeroe le) returns ‏حص‎ 2۳۰ رااز ورودى مى كيرد و retire ‏ورد‎ Pe peau) eee } Pee ‏ا‎ err fat waic() ‏مقدار ۰ را وارد کند.‎ ) ۱۱ ‏مس ()عطلی سا عوها‎ 0ه مز white (a |= O) 9 pou << a Se 9 i ae ‏:المج >> مت‎ a

صفحه 170:
هر عدد صحيحى كه خوانده مىشود. با استفاده از ماه تابع اا 0

صفحه 171:
‎CRT on ener Se coy‏ تسس تابع زیر دو پارامتر دارد. اين تابع از دو مقدار فرستاده شده به آن. مقدار بزرگ‌تر را برمی گرداند: تسیا ‎en teat‏ ۱ ‎ea‏ ‎aa‏ ( << سر 1 ۵ ۱ ۷۲ ) ‎do‏ ‏زو << سن << وم { ( تلعج >> (م >> "د (" >> و >> "" >> بن >> ")رورونا" >> بوت ‎while (7 != 0((

صفحه 172:
توابع ا ا ل ال وت سم را مانند اين نيز مى توانستيم بنويسيم: رم ‎Dy‏ ا ا ی 1 (شبيه دستور )زيرااجرارابه ‎ee‏ و ی اگرچه ‎I ۱۳‏ 7 درانتهاقى تابع قرار مر آسن را در هر نقطه دیگری از تابع قرار داد. سس

صفحه 173:
به دو روش میتوان توابع را تعریف نمود: -توابع قبل از تايع 0325 () به طور كامل با بدنه مربوطه اورده شوند. حراه ديكرى كه بيشتر رواج دارد اين كونه ‎Fea peel moe)‏ 1 00 0 قرار بگیرد.

صفحه 174:
‎aR‏ رت ی زره در انتهای آن قرار دارد. ‏یک متیر زر ب .با بر نرب . ‎nD Ne ee ee nl eee) ead‏ ۱ كه متغير را در هر جایی از برنامه می‌توان اعلان ترداد ناب را با قبل از برنامة اصلی ار

صفحه 175:
عد = ‎re)‏ ۳ باز گشتی تابع چیست نام تابع چیست و . . پارامترهای تابع همينها براى كاميايلر كافى است تا بتواند ا را به تعريف بدنة تابع نيز احتياج مى شود كه اين بدنه در انتهاى برنامه و يس از تابع ۵۰( قرار می گیرد.

صفحه 176:
te ge gg G8 امتغیرهایی هستند که در فهرست يارامتر يى تابع نام برده مى شوند. Rear Car NCD می‌شوند؛ یعنی فقط در طول اجرای تابع وجود ۳ 20202020 متغیرهایی هستند که از برنامةٌ

صفحه 177:
۱ :(اكاراك) ص 1 این ا ا 0 ‎١‏ ‏اما این‌جا اعلان تابع بالای تابع اصلی ظاهر شده و تعریف تابع مسد ‎Rom seine ee be‏ رس ) Ned ۱ ‏ک> و << )م۲ >> نسم‎ ۲۳ >> a << ")=" 0 ‏لي‎ eo; } oe OO tat wor tat x, tot) { P(x <p) retry; سا ام

صفحه 178:
ابر رت ‎Sy‏ ‏دارد:

صفحه 179:
۱- اولین مزیت «مخفی‌سازی اطلاعات» است. ٠-مزيت‏ ديكر اين است که توابع مورد نیاز را می‌توان قبل از این که پرنامة اصلى نوشته شود. جداكانه آزمايش نمود. ۳سومین مزیت این است که در هر زمانی به راحتی می‌توان تعریف توابع را عوض کرد بدون اين كه لازم باشد برنامةٌ اصلی تغییر یابد. ۴-چهارمین مزیت هم این است که می‌توانید یک بار یک تابع را کامپایل و ذخیره کنید و از آنن پس در برنامه‌های مختلفی از همان تابع استفاده ببرید.

صفحه 180:

صفحه 181:
ا لل اول بر نامه اصلی ۳ كع اضافه كنيم: ‎Pare se‏ سس 0000000 د مسن 0 زو << 0 ۲( >> >> ۳ ک> رن << )م۲ ک> لو تس ‎AO) Bs‏ سس ده سیر ۱ ) ا ا 1۱

صفحه 182:
alo erg pea enti ‎Gehan‏ ۳7 ر ‎aol al 191) Sa oe 9‏ ‎Heth ARH TEN 0 Se ere ‏پوبا‎ ‏مرجع ویندوز و‎ Sel ‏بیشتر با فایل‌های‎ ‎0 ‎3ر١‎ © ‎

صفحه 183:
۶- متغیرهای محلی» توابع محلی پارامترهای تابع

صفحه 184:
5550006 .اعداد فاكتوريل را در مثال .6-1 ديديم. فاكتوريل عد صحيح © برابر است باه ا 00 2ك 0 9 ‎Pa CeO‏ } تابع زيرء فاكتوريل عدد »را محاسبه مىكند: ‏

صفحه 185:
همان گونه که متغیرهام تواند 7 باشند. ‎Ce Sy}‏ تابعى است كه درون يك تابع ديكر به كار رود. با ا ا ا ‎Pee‏ ‏ساخت. به مثال زير نكاه كنيد. ‎ey‏ ا ل ا ا ‎Polar Sree‏ مىكند كه به جند طريق مىتوان >اعنصر دلخواه از يك مجموعة ‎WT‏ ‏عنصرى را كنار يكديكر قرار داد. براى اين محاسبه از رابطة زير ا 11 (n- ‏إه‎ ‎4 (4-2)! كك ورم - 4 _4_24_ P{4,2) = 2

صفحه 186:
این تابع. خود از تابع دیگری که همان تابع فاکتوریل است استفاده كرده است. شرط به كار رفته در دستور “ابراى محدود كردن ‎per ate yen Co‏ ل ا ا اا 0 حالتهاء تابع مقدار ‎٠‏ را برمى كرداند تا نشان دهد كه يك ورودى اشتباه وجود داشته است. ال م رم 00 ‏ا ا ا‎ oP k Prow 3! F(a <Q) || k<© || k> 5) retro O; retura Pact(a)/Pact(e-k);

صفحه 187:
ا ل 0 ا يي نا هه 10 ۰۵ توا سم ص۱9 )++ ;© < 1 0 ۱۳ ‎Td ote El ba a}‏ ‎Ta (8H‏ مت ‎vou << pod;‏

صفحه 188:
۷- تابع لس ۱ ‎CR eSB Re ieece AULD Meee)‏ ل ‎FRO‏ باز گشتو تابع استفاده مى كنند يك تابع 2 تابعى است كه هيج مقدار بازكشتى ندارد. ا ی نيست ولى اكر قرار باشد اين دستور را در تابع أو قرار دهيم: بايد لن را به شکل تنها استفاده کنیم بدون این که بعد از کلمةٌ له مات دیگری بیاید: ۳۳۵ ۱

صفحه 189:
۸- توابع بولی در بسيارى از اوقات لازم است در برنامه. ‎De‏ شود. اگر بررسی این شرط به دستورات زیادی نیاز داشته باشد. بهتر است که ‎eC ey es | ee yrion Fa gee)‏ 0 حلقه‌ها استفاده می‌شود بسیار مفید است. ‎SADC Ne OneL wry‏ ال كن اسم توابع بولى را معمولا به شكل سوالى انتخاب مىكنند زيرا ‎Gene‏ | مى د هند.

صفحه 190:
‎ad‏ لا ‎Pet ome Daven [een rel ee eer aoe PTS tears‏ ‎Ce aan) 0000000000 ۱۱ read a. <M OR KR acd Bo <@)retrsine, | onl O ae te Prot priven oe lO) a CoM RoR a a a ‏وجوج -> ل 6ع م ل‎ 9 6( ۱ ‏مسا‎ true Tea ‎0 ۵ yy oe

صفحه 191:
)00( ‏توابع ورودی /خروجی‎ -٩ ‎g ean] pen F igre‏ ل ار ا ا رك ا ل به هدف اصلى برنامه مربوط نيست را مىتوان به توابع سيرد. در جنين شرايطى سودمندى توابيع محسوس تر مى شود. ‎ee ‏ا زر‎ BSS Se eer e Se) ‏کرده‌اید که سوابق تحصیلی دانشجویان را نگه می‌دارد. در این‎ ‏نرمافزار لازم است كه سن دانشجو به عنوان يكى از اطلاعات يروندة‎ ‏دانشجو وارد شود. اكر وظيفة دريافت سن را به عهدةٌ يك تابع‎ ‏جزییاتی از قبیل کنترل ورودی معتبر. يافتن سن‎ 200 - .. ... ‏از روی تاریخ تولد و ... را در این تابع پیاده‌سازی کنید‎

صفحه 192:
قبلا نمونه‌ای از . . . . . رادیدیم. تابع ,راما در مثال 2-9 هيج جيزى به برنامة اصلی برنمی گرداند و فقط براى جاب نتايج به كار مىرود. ee ern roel ‏فقط برای چاپ نتایج به کار می‌روند و هیچ مقدار باز گشتی‎ ‏ندارند.‎ ا .ساسا یز به همین روش کار می‌کنند اما در جهت معکوس- یعنی توابع ورودی فقط برای دریافت ورودی و ارسال لن به برنامة اصلى به كار مىروند و هيج يارامترى ندارند.

صفحه 193:
مثال ١١-ه‏ تابعى براى دريافت سن كاربر ‎on‏ ی ‎ar‏ ل ۱ ورودى غير منطقى را ‎ee‏ ‎reer nee ۳‏ در 1 ۱ تسه ‎Her CEA Oth cette he]‏ ‎ea‏ ‎rere‏ ‎ea‏ کت ( 6

صفحه 194:
513 ۱۳ ‏ا‎ oon CS ena ‎OD)‏ د ‎Dry acpi‏ ‎eee na ate‏ ‎Deen cee Re Acme cae Pod

صفحه 195:
۱ eee Scope ee es Reel and epee ea ee ee See] Se ‏ا‎ e ‏که در فراخوانی تابع ذکر شده ب رآورد می‌شود و سپس‎ الو 0[ Perrier Se.) Me Bed ‏الل‎ ae er a eB eed oe 000 ‏ا‎ 1 000 0 Reser ee es ۰ محلی است هیچ تغییری روی مقدار » نمی گذارد. @)) CS

صفحه 196:
By eter TDL SS eet aE St caea 2 aS an 970 90d iS lade sh alo pl ‏بت‎ 0 ered ‎PU een hes‏ خواندنی» می‌گویند. ‎ae ws‏ تسس و و ‎ey tee a a Ra ener As ‏مثلا‎ ‎ra Kone ‏0 0 حالات؛ عبارت در رون برانتز به شكل يك مقدار تكى بر آورد شده و حاصل ‎ ‎

صفحه 197:
۰- ارسال به طریق ارجاع (آدرس) ارسال به طریق مقدار باعث می‌شود که متغیرهای ۵ بمانند. ل لل ل 2 دهد. يعنى مىخواهيم كه تابع بتواند محتويات متغير فرستاده شده به ا-ن را دست كارى كند. در ‎eC ag‏ می‌کنیم.

صفحه 198:
برای این که مشخص کنیم یک پارامتر به طریق ارجاع ارسال مىشودء. علامت رابه نوع يارامتر در فهرست يارامترهاى تابع اضافه مى كنيم. اين باعث مى شود كه تابع ‎Me ita‏ ل ا ا ای خود اركومان محلى را به كار بكيرد. به این ترتیب تابع هم می‌تواند مقدار آر گومان فرستاده ‎FEC Soares Repel rere Peele ay Se‏ ‎naan) ke eee pres koe erga‏ خواهد بود.

صفحه 199:
هر تغييرى كه روى يارامتر در تابع صورت گیرد به طور مستقيم روى متغير برنامة اصلى اعمال مىشود. به مثال زير نكاه * مثال 1١-ه ‎(ea a‏ تابع كوج زير در مرتب كردن داددها كاربرد فراوان دارد: (مر مار سرت ۱ تبر لجو ‎da Co ae‏ || 1 هدف این تابع جابجا کردن دو عنصری است اع كه به آنن فرستاده مىشوند. براى اين منظور كه پارامترهای «و مربه صورت پارامترهای ارجاع تعر یف شده‌اند: 7 نا )

صفحه 200:
عملگر ارجاع »6 90 50 ‎GE & S doh‏ > و بر آركومانهاى ارسالى ترا را را مها سر ‎oP x ocd p //‏ مر تمه 1 حاجطة ا 0 الا ا ‎hd)‏ مد ‎b="<<b << ocd‏ ی م۳ ‏ب ةله ممم ةا

صفحه 201:
وقتی فراخوانی ۱۳۳ مىشودء عدبه رن ‎ees da‏ و رات وب swap جابجايى رح مى دهذ: )مويو بعد از بازگشت ‎ais‏ ‏بل 1 100 را float

صفحه 202:
اين اعلان شامل عملكر ارجاع 8 براى هر يارامتر است. برنامهنويسان جعادت دارند كه عملكر ارجاع 86 را به لله با لین ‎ce ean,‏ اه سر هيج فرقى 0 ‎Cre‏ ‎ee ee ee‏ گر ارجاع. کاملا اختیاری و

صفحه 203:
۱ ‏ل‎ ‎5 SUN eC ae ee en oO tao ‏ا‎ we Te) mes ۳ 0 pea e Ons) 1 ٠ ‏ارسال شود و طاز طريق ارجاع به برفرستاده‎ ‏شود. سيدا‎ ‏-ط ,66 دممر‎ 606 ( two << "G="<<u <<" b="<<b << ecd (طرع: > اک >> >> ۲ 2 و" >> لس ارت وت oS ‏را‎ Dee he (seems ‏۶ج و ,9 <ه‎ jx = 60 1 ‏ات‎ tal 6© pee ۰-00, ۰20

صفحه 204:
0 RIN Cod ‎eer coy‏ ان 10 د 10 ۷ ‎amine‏ ‏0 بعد از بازگشت ‎XX 88‏ فا ما ‎y‏ ‏زا ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 205:
در جدول زیر خلاصةٌ تفاوت‌های بین ارسال از طریق مقدار و ارسال ل 00 ‎jint x‏ پارامتر > یک ارجاع است *مترادفبا آركومازلست ل 0 آركومان ارسال شده از طمريق ارجاع فقط بايد يك متغيى باشد آرگومان خواندنی-نوشتنی است ارسال از ریق 1101 4 بارامتى ايك متخي محلى است *يككبواز آركومازلست 0 ‏ا‎ oe werd آركومان ارسال شده از طرريق مقدار مىتواند يك ثابت» يك متفیر یا یک عبارت باشد لت

صفحه 206:
يكى از مواقعى كه يارامترهاى ارجاع مورد نياز هستند جايى است كه تابع بايد بيش از يك مقدار را بازكرداند. 7 0 ( مىتواند يك مقدار را ۳ بنابراین اگر باید پیش از یک مقدار برگشت داده اپارامترهای ارجاع ۰

صفحه 207:
| تابع زیر از طریق دو پارامتر ارجاع. دو مقدار را بازمی‌گرداند: مه و هوجو (محیط و مساحت) براى دايرهاى كه شعاع آسن عدد 0 تا تور ی[ ‎ae.‏ ل مسا

صفحه 208:
‎eager Le‏ تست تست ‎CO aT‏ میدب ‎ ‎

صفحه 209:
‎ve 5 3 ۰‏ لوسللز طویولوجاع نابت 06 ارسال پارامترها به طریق ارجاع دو خاصیت مهم دارد: این که تابع می‌تواند روی آر گومان واقعی تغییراتی بدهد اين كه از اشغال بى مورد حافظه جلو كيرى مى شود. ‎Deen SENET)‏ ل ل ل كك . اين روش مانند ارسال از طريق ارجاع است با این فرق که تابع نمی‌تواند محتویات ترا ره ار را سر ای ارت ‏براى اين كه يارامترى رااز نوع ارجاع ثابت اعلان كنيم بايد ‎iru eae be Ta Rey es‏ ۱

صفحه 210:
‎SNe‏ رب ارت سه طریقه ارسال پارامتر در تابع زیر به کار رفته است: ‎cn‏ ‏2 +۷ ‎a‏ ۱ لمم >> د >> ‎

صفحه 211:
PA Pca ‏ا‎ Te Ree reyes Hee ۱ ee a ‏میا‎ ‎Ra ae hon ‏تم‎ ‏ا‎ oho ala 0 ‏و‎ iy ‏ل ات‎ ل لمم >> م >> تغيير دهد. تغييراتى كه روى :صورت انا مى كيرد اثرى روى آركومان » نخواهدر " >> 0 >> " < 0ه" >> نوم داشت زيرا از طريق مقدار به تابع لمم >>ج >> ارسال شده. تغييراتى كه روى ب صورت سر ان مى كيرد روى آركومان ا الي ا لي مى كذارد زيرا طاز طريق ارجاع به تابع هو فرستاده شده. ‎i‏

صفحه 212:
ا ل ا ا ‎Fane ea ey‏ بزرگ 0 ‎Te)‏ 9 جلسههاى بعدى توضيح آنها آمده است. عناصرى ۱ ‎Sl Lal ita a gar ae‏ تابع ‎aia‏ ات .© 7ه

صفحه 213:
تولبع ببهلسطه -09 تابعى كه به شكل بی‌واسطه تعریف می‌شود. ظاهری شبیه به تولبع معمولی دارد با این فرق که عبارت ۲ در اعلان و تعریف ‎OT‏ ‏قید شده است. ها ‎eel‏ ی 000 اس مرا ما ۱ { aa ‏ار انم اندها‎

صفحه 214:
:احتياط

صفحه 215:
٩6- ‏چندشکلیولیع‎ در )+ می‌توانیم چند تابع داشته باشیم که همگی یک نام دارند. در این حالت ‎COT ee)‏ تابع مذكور. جندشكلى دارد. شرط اين كار ان ‎ACS eee Ome Ero‏ تفاوت داشته باشد. يعنى تعداد يارامترها متفاوت باشد يا دست كم يكى از يارامترهاى متناظر هم نوع نباشند.

صفحه 216:
مثال ۵-۱۷ چندشکلی تبع ۳0() ۳0| ولى شكلى متفاوت تعريف مىكنيم وهمه رادر يك برنامه به كار 0 لد سن ‎tH‏ 0000 ایتک و 1 0 @®) ys Co

صفحه 217:
‎v)‏ ۱ ود مامت با ‎1) 1| wontury oP the fluo qed iiecers: retura (x > py? x ip); ‎} ‎fel cenr( fot x, fat y, tat z) ‏وه مورف وا سا اه ‎the woxtou‏ بو | ) ,ی برد دوجم ‎zi w);‏ 2 ۰ << ) مسب ‎} ‎fal qrax(double x, double y) ‏تال ‎the tue sven‏ ۴ مریمب ها بو || 1 زا :2 رم مار ‎1

صفحه 218:
‎es 595‏ در ار راو بی می‌شود.. ‎pn ome ۳۳‏ ن را بررسى مى كند تا بفهمد ال ‎REN‏ ‎۱ tel eee eae ree Ee ee ee ee eR pene te ‏مس‎ all aah ae ‎ ‎ ‎

صفحه 219:
۴- تابع عمم() ۱ LAC oe Sent Rey Me OM pele Doles ۳۳۳۳7۷ (oazvakt منطق ()++ اين طور است كه هر برنامه بايد داراى تابعى ‎HCH‏ مر در حقيقت هر برنامه كاملء از يى تابع 2-5 () به همراه توابع ديكر تشكيل شده است كه هر يك از اين توابع به شكل مستقيم ياغير مستقيم از درون تابع 2-5() فراخوانی می‌شوند.

صفحه 220:
‎l eeS‏ ا ل ‎ee eee Son Web) Re resto mer ered ‎Fe eee teak eR ero ‎ag‏ 0++اين خط اجبارى نيست و مىتوان آسن را رد. ‎fee re EN‏ لي ا ‎Hee ۱ eae]‏ به اين معنا که برنامه بدون خطا پایان گرفته است.. ‎Pr ee eer eta. a MO eee DES melon) eo - ‏ف‎ ‎2 ( ۵ ‎

صفحه 221:
مثال ۵-۱۸ استفاده از دستور مه برای پایان دادن به یک برنامه ‎tei cain)‏ ‎Rad A fa a a‏ ۳ >> نوم Peed P (d= =O) reten O; pat <<a << "/" << d << "=" << dd << eco

صفحه 222:
۱ ‏لت‎ Cee ere See edd ev PU nec?) ‏دهیم:‎ ۱ - استفاده از دستور ....-. ۲ - فراخوانی تابع ا#«ج() ۳- فراخوانی تابع ۰7۱ ۴ - ایجاد بک حالت استثنا

صفحه 223:
ا ل ل مخ ات سا یج | شود لیا لي ا اي يي ا يي يي يي سم ‎fat od‏ :د << وم ‎ed‏ >> نوم ‎/ ‎double reviprovd (double x) — Cxcepion ‎۱9 ‏دس مت‎ are tes ‏ل ان ان ‎he‏ ار سس ‎

صفحه 224:
آیکومارهاوبیثض رض-19 در 6++ می‌توان تعداد آر گومان‌های یک تابع را در زمان اجرا به دلخواه تغییر داد. ee eRe Ta) ests Yeeros are ee er ‏امكانيذير است.‎ برای این که به یک پارامتر مقدار پیش‌فرض بدهیم باید آن مقدار را در هت درج کنیم. به این ترتیب اگر هنگام فراخوانی تابع. آنن آرگومان را ذکر ‎BIDS eT cel‏ 9 ‎cme oe ed‏ ا ‎tere ae ye el erce li‏

صفحه 225:
مثال ۵-۲۰ راهان ولو ,0-صام ,حاطح ,عاط ل ‎Si‏ 000000 و ‎everest stb beter‏ ۱۳ ار نيه +یه) +ه) + ‎x‏ ‎ee er eee 7‏ ی ‎vot << "p(x,P,Q) = "<< p(x,P,Q) << ead;‏ ‎EEE CY) eaten‏ ۱ ا ا ال ‎a‏ ‏1 ‎WD, dnb MEO, dnb WO=O, dnb‏ ا 0 ‎wO=0)‏ ‎Rea. li te ko BR aoe‏ وت ‎tee‏ ‏) »= } ‎by ‎

صفحه 226:
ی پارامترهای تابع بعد از همه پارامترهای اجباری قید شوند مثل: Pee ee ena eee ae Tod ۱ es a) OCC ع سما ل لماه لع ور مل است تخصيص مىيابند و يارامترهاى بعدى با مقدار بيش فرض ير 0 ‏ا ل ل ا‎ BED DNA Ber ese ‏ا‎ Cys ie eae ‏و‎ oe ee 0 7 0 a ce

صفحه 227:
پایان جلسه پنجم

صفحه 228:
جلسه ششم ۳17 بل

صفحه 229:
آنچه در این جلسه می خوانید - پردازش آرایه‌ها - مقداردهى آرايهها - ایندکس بیرون از حدود آرایه - ارسال آرایه به تابع ۱ ‎Pee Cy | ree eae‏ )>> ‎PPT SS EC Cc ye ee‏

صفحه 230:
‎ae‏ ا ا - تعریف انواع 1

صفحه 231:
هدف کلی: هدف‌های رفتاری: انتظا > از پایان ‎Ter at ee PEON rg I ume Pre‏ ا از آرایه‌ها را بدانيكرويعوانيد آنها را در برنامهها به كار - آرايههاى ديك بعدى, و «جندبعدى» را تعريف كنيد. - مفهوم «ایندکس؛ را بدانید و خطای «اثر همسایگی» را تعريف و شناسايى ا ال ‎LES NCS cree el concer tae‏ ل ۱ - دمرتبسازى حبابى» را به اختصار شرح دهيد.

صفحه 232:
مقدمه: در برنامههايى كه دادهدهاى قراوانى را يردازدش می‌کنند استفاده از متغیر های معمولی کار عافلانه‌ای نیست زبرا 7 0 صورت سس همین ‎js feb‏ بيشتر زبان‌های اط را اسان ندارک دیده شده‌اند.

صفحه 233:
يك آرايه. يك زنجيره از متغيرهايى است كه همه از یک نوع هستند. Sco Wh top 1 ene eS aD) ‏ا‎ ‎dS coc he bales عناصر یک آرایه در خانه‌های پشت سر هم در حافظه ‎epee eer Te re‏ 0 حافظه تصور كرد كهاين بخش خود به قسمتهاى ‎Dec rare MES eee)‏ ل ل ل ۱ دارد.

صفحه 234:
شكل مقابل آراية 3 كه ينج عنصر دارد را نشان مىدهد. 0 لل ل ل لات ‎Ferree OTT‏ [2]4 حاوی مقدار ۱۸۰۰ است. O| d7.SO ۱ 00 ‏اث‎ ‏ات‎ ‏لك ان‎

صفحه 235:
پسردلزش]ولیهها -6 ام عناصر آرايه De eet PTE Te Dita ea ee ELL oe پر رن سر را 7 ی سر مرکب است و برای دستیابی به هر یک از خال فا آ (ea. yee ‏ل‎ -]0[ - 9 Fan (ec 37 >> []۰ >> ۰ 2 [0]ه" >> نوم تا ا

صفحه 236:
تم ار ال زرا سس زر اس مسب مت مر عبارت ‎ey pe‏ عناصر آرايه رامشخص مى كند. 00 عداك_بومه تعداد عناصر آرايه را نشان مىدهد. ‎beg‏ ا ا ا ات ال م باید داخل کروشه قرار بگیرد.

صفحه 237:
‎i‏ مقداردهی آرایه‌ها ‎OES RAS) lee Syren ee eye eye ier a OP)‏ ‎How af] = (80.0, 69.9}: ‎See eee Dele eee TU a ee ere ee lice} ۳ ‏شدهداند درون عناصر زر قرار مى كير ند. اندازه آرايه‎ ‏با تعداد عناصر موحود در فهرست خواهد بود. پس همین خط مختصر. آرایه‌ای از نوع , , وبانام وبا تعداد ‎aa a aaa ae aed‏ فهر ستء مقداردهى مى كند. ‎0 6 a Ce 8 6.6 ‎ ‎ ‎ ‎ ‎ ‎

صفحه 238:
مثال ۶-۳ مقداردهی آرایه با استفاده از فهرست مقداردهیٍ 1 ‎int main()‏ ‎float a[] = { 22.2, 44.4, 666 1‏ { ‎int size = sizeof(a)/sizeof(float),‏ ‎for (int i=0; i<size; i++)‏ ‎cout << "\ta[" << i << "] =" << ali] <<‏ — ‎endl;‏

صفحه 239:
هنكام استفاده از فهرست مقداردهى براى اعلان آرايه. می‌توانیم تعداد عناصر آرایه را هم به طور صریح ذکر كنيم. در اين صورت اكر تعداد عناصر ذكر شده از تعداد عناصر موجود در فهرست ی بيشتر باشد, خانه‌های بعدى با مقدار ‎po‏ 20 می‌شوند float a[7] = { 55.5, 66.6, 77.7 }; دقت کنید که تعداد مقادیر موجود در فهرست 1 ‎o‏ ‏مقداردهی نباید از تعداد عناصر آرایه ۱ باشد: = ‎float a[3] = { 22.2, 44.4, 66.6, 88.8 }; / ERROR: too many‏ 2 ‎values!‏ ‎0D‏ 8 ‎OD‏ €

صفحه 240:
یک آرایه را می‌توانیم به طور کامل با صفر مقداردهی اولیه کنیم. برای مثال سه اعلان زیر با هم برابرند: float ۵1 [ < ) 0,0, 0, 0,0, 0,0, 7۶ float a[9] = { 0, 0}; float a[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; اما مطلب فوق اصلا به این معنی نیست که از فهرست مقداردهی استفاده نشود. درست مثل یک متفیر معمولی. اگر یک آرایه مقداردهی اولیه ‎ney etul ew mayer)‏ 00

صفحه 241:
02000 7 0 int main() { const int SIZE=4; // defines the size N for 4 Cth ay ms a[SIZE]; // declares the array’s elements as _ for (int i=0; i<SIZE; i++) cout << "\ta[" >> i << "] =" << afi] << ‏تامع‎ ١

صفحه 242:
آرابه‌ها را می‌توان با استفاده از عملگر جایگزینی مقداردهی رل ا 0 لك ۲ ان سر ‎se ee‏ فك د زات مم ‎05007 11 ‏همچنین نمی‌توانیم یک آرایه را به طور مستقیم برای مقداردهى به آرابه دیگر استفاده كت ‎Poa of] = 4 96.6, PPP, 89.9 };‏ ‎Row b[P] = 3; ۱ 9090:0089: wreps oon be wed w ‏اوه‎

صفحه 243:
۴- ایند کس بیرون از حدود آرایه در بعضی از زبان‌های برنامه‌نویسی. ایندکس آرایه نمی‌تواند از محدودهٌ تعریف شده برای آن بیشتر باشد. . در پاسکال اگر ‎ll‏ 3 با تعداد پنج عنصر تعریف شده باشد و آنگاه [ 7 ]2 دستیابی شود. برنامه از 515 ادن سيستم حناطتى در ©2049" وَجَود نذارد. مثال بعدى نشان مىدهد كه ايندكس يك آرايه هنكام دستيابى مى تواند بيشتر از عناصر تعريف شده براى آن باشد و باز هم بدون این که خطایی گرفته شود. برنامه ادامه یابد.

صفحه 244:
۱ ae anv) برنامة زیر یک خطای زمان اجرا دارد؛ . . . از حافظه دستيابى مىكند كه از محدودة ارايه بيرون است: ۰۵ { weet ot GILG=F; ‎meen (Sick oe‏ له ‎dng [a rg NY a a‏ اد ‎

صفحه 245:
۰ اثر همسایگی ا ا ل ا ا ا ا ‎a ed‏ 00 ‎int main()‏ 7 int SIZE=4; float al] = { 22.2, 44.4, 66.6 }; float x=11.1; ‏ا يا‎ ae endl; J ERROR: index is out of bounds! cout << "x =" << x << endl; سح 2-0

صفحه 246:

صفحه 247:
59 52070700 برنامة زير از کار می‌اقتد ژیرا ایندکس آرایه خیلی بزرگ است: ‎fot win)‏ ‎vvcet et 611/2:‏ { ‎Pou uf] = ) 66.6, © .6©, 66.6 (:‏ :200.0 ۳ ‎mot << "x =" << x << ech;‏ 2ب 6۵ ۵6 [ومووز Tt << "x=" << x << och;

صفحه 248:
ل ا الا ا ال ا ا لل ‎ped]‏ م شده روی صفحه ظاهر می‌شود. این پنجره بیان می‌کند که برنامه تلاش دارد به نشانی ‎310040108e‏ حافظه دستیابی کند. این مکان خارج از ا ل ‎reat open‏ | ‎US 20 WAS 920 |) dol ole pia ppl ply‏

صفحه 249:
پردارش‌کر (ستئنا ‎Oe oO eh Cpr‏ ل 2 » ناميده مى شود زيرا كدى وجود ندارد كه بهاين استثنا پاسخ دهد. ‏در :)++ مىتوانيم كدهايى به برنامه اضافه كنيم كه هنكام رخ دادن حالتهاى استثناء از توقف برنامه جلوكيرى کند. تلع ‎py a NY‏ « می‌گویند.

صفحه 250:
لوسل[آيليه به تليع -5 كد ‎01١0022‏ كدآرايه 3رااعلانمىكنددوجيزرابه كاميايلر مى كويد: ‎-١‏ اين كه نام آرايه 3 است ۲- عناصر آرایه از نوع ]1031] هستند. سمبل 3 نشانى حافظة آرايه را ذخيره مىكند. 1 ‎ -‏ ‎ee‏ ا ا ل | 0 ‎oa‏ ا ا ..یعنی فقط نوع آرایه و نشانی حافظةً ‎BYES SCE ees] Nee rel‏

صفحه 251:
1 ‏ا ا‎ int sum(int[],int); int main() { int af] = { 11, 33, 55, 77 }; int size = sizeof(a)/sizeof(int); cout << "sum(a,size) = "<< sum(a,size) << endl;} فهرست پارامتر تابع فوق به هکل 1080 ‎int sum(int a[], int n) int al],‏ ‎gal 4S Lime gal Cal (1‏ تابع یک آرایه از نوع ‎fi int sum=0;‏ ‎int‏ 9 یک متفیر از نوع 111 دریافت می‌کند. for (int i=0; i<n; i++) _— ‏ص‎ Cee ee ‏ناشع در الاق‎ ela ‏نكاه كنيد. نام يارامتردها‎ return sum; ‏حذف شده است.‎

صفحه 252:
فقط نام آرایه پس ارسال آرایه به تابع شبیه ارسال متغیر به طریق ارجاع است.

صفحه 253:
مت در این برنامه از ثابع ,مر استفاده می‌شود تا مفادیری به داخل آرایه وارد شود. سپس با استفاده از تابق . ,۱ مقادیر داخل آرایه حاب سر سر ‎void read(int[],int&;)‏ void print(int[],int); int main() ۱0 WV cr4ses lot int ‏ل ع مات‎ size read(a,size); Celt >> ۳۲۵۵ ۵۳۳۵۷ ۳۵5 ۲ >> ‏:عاصهصعاه ۰ >> 2و‎ print(a,size); 1 = (frm 5 0

صفحه 254:
و ۱۸۰۱۱۰۱۱۱۱ - cout << "Enter integers. Terminate 35 OF do { cout—=— ‏کت ۱ > ۲و‎ | ene cin >> a[n]; { while (a[n++] !=0 && n < MAXSIZE); --n; // don't count the 0

صفحه 255:
i ‏بتواند‎ Qread ‏چون ۲۱ یک متفیر است. برای اين كه تابع‎ ‏مقدار تن را تفییر دهد این متغیر باید به شکل ارجاع ارسال‎ ‏شود.‎ ‏همچنین برای این که تابع مذکور بتواند مقادیر داخل آرایه‎ ‏را تغییر دهد. آرایه نیز باید به طریق ارجاع ارسال شود.‎ 3 ‏اما ارحاع ارابه‌ها کم متفاوت است.‎

صفحه 256:
7 بنابراین به منظور ارسال آرایه‌ها به تابع از استفاده می‌شود: ۱ - آدرس اولین خانة آرایه ۲ - تعداد عناصر آرایه ‎ -۳‏ عناصر آرایه تابع با استفاده از اين سه عنصر مىتواند به تىك تى ‎Fp ee 74‏ ا م

صفحه 257:
آدرس اولين خانة آرايه. همان نام آرایه است. پس وقتی نام آرایه را به تابع بفرستیم آدرس اولین خانه 50050 ل 0 بنابراين با اين دو مقدارء تابع می‌تواند به آرايه دسترسى داشته باشد.

صفحه 258:
1 پر زیر ار را را را ‎satin‏ :( 66,88 ,22,44 4 - []وغمز 4 ات او 0 ۱ 1 ‏ا تم بای‎ Peete OPE) ۱ NH اه ره موم رشن ماه هس لو

صفحه 259:
۶- الگوریتم جستجوی خطی آرایه‌ها بیشتر برای پردازش یک زنجیره از داده‌ها به لاد 2 اغلب لازم است كه بررسى شود آيا يك مقدار خاص درون يى آرايه موجود است يا خير. سادهترين راه اين ‎Cee‏ ل ‎Se eS yee‏ همهٌ عناصر آرایه را جستجو نماییم تا بفهمیم که مقدار ‎nM Die ey tr CMD EBS TIES TC)‏ ۱ «جستجوی خطی» .. -.

صفحه 260:
ا ا ان ‎ile tee ae ie‏ ‎int main()‏ 4 ‏[]ق غأمز‎ > 4 22, 44, 66, 88, 44, 66, 55(: ِ a << "index(44,a,7) = "<< index(44,a,7) << aa << "index(50,a,7) = " << index(50,a,7) << endl; ۲ ۲ i int index(int x, int af], int n) { for (int i=0; i<n; i++) Ut ‏یت زر‎

صفحه 261:
تابع ‏ ۰ ۰۰ سه پارامتر دارد: ۱. پارامتر 2 مقداری است که قرار است جستجو شود. ۲.پارامتر 3 آرایه‌ای است که باید در آن جستجو صورت گیرد ۳. و پارامتر . هم ایندکس عنصری است که مقدار مورد نظر در ‎OT‏ پیدا شده است. 0000 per Se ‏ل مت‎ شده و مقدار هر عنصر با . مقايسه مىشود. اكر اين مقدار با ا ا م ا ل مى يابد.

صفحه 262:
1 مقداری خارج از ایندکس آرایه بازگردانده می‌شود که به این معناست که مقدار . در آرایةً موجود نیست. در اولین اجرای آزمایشی. مشخص شده که مقدار ۴۴ در ‎ell ee RoI) a[1]‏ دوم مشخص شده که رك 2 موجود نيست (يعنى مقدار 515 در 0 واقع است واز آنجا كه آراية 2 فقط تا :۱ - عنصر دارد. مقدار لا نشان مىدهد كه ‎٠١‏ در آرايه موجود ‎Borer)‏

صفحه 263:
عمتساو هبلدى- 7 ۱ است. | ۱ ‎ST PC Gren By ie ree) Be)‏ ۱ مرتبة بعدى يكى كاسته مى شود. در يايان همة يويشهاء آرايه مر تب شده است.

صفحه 264:
طريقة يافتن بزركترين عنصر و انتقال آن به بالاى عناصر ديكر به اين شكل است ‎.١‏ اولين عنصر آرايه با عنصر دوم مقایسه می‌شود. ۳ اگر عنصر اول بزركتر بود. جاى اين دو با هم عوض مى شود. ۳ سپس عنصر دوم با عنصر سوم مقایسه می‌شود. ۴ اگر عنصر دوم بزرگ‌تر بود. جای این دو با هم عوض می‌شود و به همین ترتیب مقایسه و جابجایی زوج‌های همسایه ادامه می‌یابد تا وقتی به انتهای آرایه ر بزرگ‌ترین عضو آرایه در خانة انتهایی قرار خواهد گرفت. 2:۱۱ محدودهٌ جستجو یکی کاسته می‌شود ا ل ل ا ا ال ل ل ل ۱ و میت ی ترس اه وب تن وقتى محدوده جستجو به عنصر اول محدود شدء ارايه مرتب شده است.

صفحه 265:
مثال ”2-11 مد برنامة زير تابعى را آزمايش مىكند كه اين تابع با استفاده از مرتبسازى حبابى يك آرايه را مرتب می‌نماید: ‎int main()‏ ‎{float a[]={55.5,22.2,99.9,66.6,44.4,88.8,33.3, 77.7};‏ ‎print(a,8);‏ ‎sort(a,8);‏ print(a,8);

صفحه 266:
void sort(float af], int n) { // bubble sort: for (int i=1; i<n; i++) // bubble up max{a[0..n-i]}: for (int j=0; j<n-i; j++) if (a[j] > alj+1]) swap (alj],alj+1]); /ANVARIANT: a[n-1-i..n-1] is sorted

صفحه 267:
تابع ۶( از دو حلقة تودرتو استفاده می‌کند. ۱- حلقه 0۲) داخلی زوج‌های همسایه را با هم مقایسه با هم عوض می‌کند. وقتى ‎for‏ داخلی به پایان رسید. بزرگ‌ترین عنصر موجود در محدودة فعلى به انتهاى آن هدايت شده است. ۲-سپس حلقةً 0 بیروتی محدودة جستجو را يكى كم می‌کند و دوباره 10۲ دا را راه می‌اندازد تا بزرگ‌ترین عنصر بعدی به سمت بالای آرایه هدایت شود.

صفحه 268:
۸- الگوریتم جستجوی دودویی در روش جستجوی دودویی به یک آراية مرتب نیاز است. ‎Pea | geese aan mee (re meer cst‏ پایینی تقسیم می‌شود. 4 رن ‎J)‏ تب با اجحرین ‎UR) PMR‏ 0< 21001111 ‎rend‏ ا ل ا ل 0 بالايى به دنبال آن كشت.

صفحه 269:
دوباره بخش بالایی به دو بخش تقسیم می گردد و گام‌های بالا تکرار می‌شود. سرانجام محدودةٌ جستجو به یک عنصر محدود ‎ee eT ee re Ln ere)‏ و عنصر مذکور یافت شده و يا این که آن عنصر با سب سس در مه سس ارايه وجود ندارد. rd en ee OL De eS DEE} ‏به جواب می‌رسیم.‎ eee

صفحه 270:
ره تست وی پرنامة آزمون زیر با برنامة آزمون مثال ۶-۱۲ یکی است اما تابعی که در ۲ 1 ‏سك‎ ‏ل ی دار درون آرايه‎ ery, ‘int index(int, int[],int); int main()_ { int al] = { 22, 33, 44, 55, 66, 77, 88 }; eae << "index(44,a,7) = " << index(44,a,7) << | Gale Se ene ee ee eee endl; > .© ته 0

صفحه 271:
ی ات ی تیا کت یکی رای ی ۱ص 1۱ سلطا ل نی 8 // ‎la a‏ ل لا ‎while (lo <= hi) ‎{ i= (lo + hi)/2; Muir Melero von MoneIneN I if (ali] == x) return i; ‎Seiichi)‏ ل ا اس 01 ور ای زا اه ‎else hi = i-1; 1s Som alnlts ‏و‎ ‎1 ‎we

صفحه 272:
براى اين كه بفهميم تابع جطور كار م ىكند. فراخوانى (۱۱060)44,۵,7 ۱ ل ‎pa‏ | 24و ۲۱27 و ۵<0او ۱۱26 است. || مقدار ‎١‏ 0/000 > ارات كيرد شن عنضر )اج عتظر ‎avian Pape pened ne) EXP ea FI I=‏ | مقدار . بزرگ‌تر است. پس در نيمة بالايى نيست و جستجو ‎CY‏ ا ‎SCP‏ م لال مى شود و حلقه تكرار مى كردد.

صفحه 273:
حالا 2--۱] و 0-0 است و دوباره عنصر وسط آرايةٌ ‎3٩10..2[‏ یعنی 3111 با < مقایسه می‌شود. [ 311 برابر با ۲۳ است که کوچک‌تر از * می‌باشد. پس این دفعه 0 در سومین دور حلقه. ‎ghi=2‏ 922 است. پس عنصر وسط آراية [3]2..2 كه همان [3]2 است با ا مقایسه می‌شود. [ 212 برابر با ۴۴ است كه يا ا برابر است. يس مقدار " بازكشت داده می‌شود؛ یعنی ‏ مورد نظر در ‎a[2]‏ وجود دارد.

صفحه 274:
۹ 144 44 ‘ee 2111 55 33 44 hi lo

صفحه 275:
(7 060 2 رجا مى شودء ‎en=7 »x=60‏ 00( 0 رس ارات [9]0..6 سر ا ا ‎jl 4S‏ ۱ ‎PN Coe vy re‏ ل ‎Roar EY‏ ۰-۰ ار ۰-۱۵24 ررر ۱( الق 55-1 ۲۸۸ صال-است که بر رک راز کر می‌باشد. پس ‏ به . تغيير مىيابد و دوباره حلقه ۱ 4داطن 4عها اب سر ار [4..4]ه عددر 66-[20]41 دق هه بزرگ‌تر از ۲ می‌باشد. لذا به ‏ کاهش ۷

صفحه 276:
60 60 600 2 > < < a[i] 55 9 66 4 hi 1 10 اکنون شرط حلقه غلط می‌شود زیرا . . . است. بنابراين 0 " رابرمی‌گرداند يعنى عنصر مورد نظر در آرايه موجود نيست.

صفحه 277:
در تابع فوق هر بار كه حلقه تكرار مى شود. محدودة ل تا ا لا ‎Por‏ ‏روش جستجوى دودويى حداكثر به مقایسه نياز دارد تا به ياسخ برسد. Feel COE Can ‏ل‎ CMe Ny eo است.

صفحه 278:
رس ا 0 Fore aS Cee | ‏ا ااا اا‎ Gll> puate dm 5145 Cul yal ys lai ‏دومین‎ ‏مقادیر یکسانی باشند. آنگاه جستجوی خطی هميشه‎ EST Pe ee SIE See release roe Reese he ‏ل ا تر‎ بازكردانده مى شود. )© 000 دودویی فقط 0 ب ا ‎Ce‏ ‎Be nengey‏ 0 دودويى ياسخ غلط اتن ولی جستجوی خطی هميشه پاسخ صحیح خواهد داد.

صفحه 279:
| eS SONE ee on NOE ‎ee Tene SLE nee aE ee‏ ا تت داده شده غیر نزولی است یا خیر: ‎bool isNondecreasing(int a[], int n); ‎int main() ‎{ int a[] = { 22, 44, 66, 88, 44, 66, 55 }; DOUKS<"eDrudeoreusty(aP) =" << pOvadeorewieni(a,P)<< ewe; DOUKS<"ipDorderreusnn(a,P) = "<< pOoudevrewstag(a,/?) << end; ‎}

صفحه 280:
bool isNondecreasing(int a[], int n) 1 // returns true iff a[0] <= a[1] <=... <= ۳۳ for (int i=1; i<n; i++) if (a[i]<a[i-1]) return false; return true; I

صفحه 281:
این تابع یک بار کل آرایه را پیمایش کرده و زوج‌های ‎ali] 9 a[i-1]‏ رامقايسه مى كند. اگر زوجی یافت شود ‎«wb ali]<ali-1] oT ps5‏ مقدار ۲3156 را بر می‌گرداند به این معنی که آرایه مرتب نیست. ببينيد که مقادیر ۲۱16و ۲۵156 به شکل اعداد )9 + در خروجی چاپ می‌شوند زیرا مقادیر بولی در حقیقت به شکل اعداد صحیح در حافظه ذخیره می‌شوند.

صفحه 282:
اکر پیش‌شرط مثال ۶-۱۴ بعنی مرب بودن آرایه رعایت نشود. جستجوی دودویی پاسخ درستی نمی‌دهد. به این منظور ابتدا باید این پیش‌شرط بررسی شود. با استفادهاز تابع ‎٠‏ 2 مىتواناجراى يك اح تابع كك آر گومان ‎cs‏ می‌پذیرد. اکر مقدار ‎false OlegS y1‏ باشد. برنامه را خاتمه داده و موضوع را به سیستم عامل گزارش می‌کند. اگر مقدار آر گومان اا ‎Pe EPH) pore‏ <i <5 <cassert> 2). s(asset (2/5 شاد ات

صفحه 283:
مثال ۶-۱۶ استفاده از تابع . . ‎ .‏ برای رعایت ا ۱ برنامةً زیر نسخة بهبودیافته‌ای از تابع ۰ .. . . مثال 1١-ء‏ را آزمايش مىكند. دراين نسخه .از تابع ۵ ایا( شاد من تا مشخص ‎ore regear tpi eyed‏ 10 ات تابع به تابع . . . . . ارسال می‌گردد تا اگر آرایه مررتب نباشد برنامه به بیراهه نرود.

صفحه 284:
#include <cassert> // defines the assert() function #include <iostream> // defines the cout object using namespace std; int index(int x, int a[], int n); int main() { int al] = { 22, 33, 44, 55, 66, 77, 88, 60 }; cout<<"index(44,a,7) = " << index(44,a,7) << endl; cout<<"index(44,a,8) = " << index(44,a,8) << endl; cout<<"index(60,a,8) = " << index(60,a,8) <<

صفحه 285:
bool isNondecreasing(int a[], int n); int index(int x, int a[], int n) { assert(isNondecreasing(a,n)); int lo=0, hi=n-1, i; while (lo <= hi) { i= (lo + hi)/2; iam) ON ee ‏الاأع: ()ا‎ 1: if (a[i] < x) lo = i+1; ‏-ح نط عواء‎ 1-1: return ۶ سکس 111 ] 1

صفحه 286:
1 fo epee] Bee CMa Opt DEN pe ema 00 ‏ا‎ 0) ean se T | 20 606 2 0 ‏فراخوانی(06۷)44,۵,7‎ ‏و برنامه ادمه مى يابد.‎ MS go Joy] 06044 3,8( SOP e| ‏6ف8اهرب نا‎ 0500۱066۲68۵61۴9 ‏كندكهدر اين كت برنامه متوقف‎ (0 ۰ ‏پنجرة | می‌دهد.‎ 00

صفحه 287:
سلستفاده از لنواع س‌طلیشیور آیلیه -9

صفحه 288:
به خاطر بیاورید که انواع شمارشی به شکل مقادیر عددی ذخیره می‌شوند. اندازة آرايه. 5881-1 است زيرا 58:7 مقدار صحيح ۶ را ا ا 0 0 2 ‏ا ا ل‎ peepee L114 استفاده از انواع شمارشی در برخی از برنامه‌ها باعث می‌شود که ‎See precy‏ 22 » شود. مثلا در مثال ۶-۷ کنترل حلقه به ‏شک ‎for (int day = SUN; day <= SAT; day++) ‏باعث مىشود كه هر بينندهاى حلقة 5017 بالا رابه خوبى

صفحه 289:
تعپینانیاع -10 انواع شمارشى يكى از راههايى است كه كاربر مىتواند نوع ساخت خودش را تعريف ‎meee‏ ا 0000 ‎RED,ORANGE,YELLOW, GREEN, BL‏ یک نوع جدید به نام ۰ تعریف می‌کند که متفیرهایی از این نوع می‌توانند ‎LORANGE pote‏ ۱ ۱9 ‎Re rePO nee er Fur care Reet tc Sea‏ ۱ ا ل ‎FDO SY‏ ا ‎Poa per‏ ‎levee wo 14) 9:1 eel l| Reeeey‏ ان اس ‎areca‏ داز ‎(elites‏ ‎yas VIOLET+1‏ 0 01

صفحه 290:
در . . می‌توان نام انواع استاندارد را تغییر داد. ۱ استاندارد موجود تعريف مى كند. نحو استفاده از آن به شكل زير است: :5ةأات ‎typedef ١‏ ل ا ل ‎PC‏ wl Yl

صفحه 291:
ا 0 رآابه شكل زير بكار 1167ز ببریم می‌توانیم آرایه‌ها را بدون علامت ‎a‏ ‎Pa‏ ‏۹ ۶ tyr typedef ‏نات‎ بود ‎Inte‏ sos frequency[64]

صفحه 292:
per ‏ل ا ان ل‎ ean oy ‏به یک نوع موجود نام مستعاری را نست می‌دهد.‎ CRW ‏ا ل ل‎ Ce ye ST Reo toy yee roe ae Ona oper ely ۷ ‏كداز ا ل‎ ‏به عنوان یک نوع استفاده‎ ۰...» pe rae) SO CPL e Sa ome era scien ss در تابع 1 د رفته است:

صفحه 293:
typedef float Sequence[]; void sort(Sequence, int); void print(Sequence, int); int main() { Sequence a = {55.5, 22.2, 99.9, 66.6, 44.4, 88.8, 33.3, 77 print(a,8); sort(a,8); print(a,8); a

صفحه 294:
void sort(Sequence a, int n) SO ‏رك ل‎ ۱ ( for (int j=0; j<i; j++) if (alj] > alj+1)) swap(alj],a[j+1]); : ‏دوباره به دستور 6016۴ 2۷0 نگاه کنید:‎ ee float Seguence علامت براکت‌ها [ ‎eee!‏ چیزی که از نوع 560016166 تعریف شود سک ارانه است و ارت ۱۳ ‎Sen aaa‏

صفحه 295:
آیلیه‌های‌چند بسعدی-11 همه آرایه‌هایی که تاکنون تعریف کردیم. یک بعدی ‎SAD tp evow)‏ ا می‌توانیم آرایه‌ای تعریف کنیم که از نوع آرایه باشد. ‎eae ee‏ 1 ‎Srey eee een HP LIN Corl‏ يك آراية دو بعدی آرایه‌ای است که هر خانه از آن. خود يك آراية يك بعدى باشد. یک آرايةهٌ سه بعدی آرایه‌ای است که هر خانه از آن یک ارابهة دو بعدی باشد.

صفحه 296:

صفحه 297:
ل ‎Re emere ee toe‏ 1۱ برنامهٌ زیر نشان می‌دهد که یک آرايةٌ دوبعدی چگونه پردازش می‌شود: void read(int a[][5]); void print(int a[][5]); int main() { int a[3][5]; read(a); print(a); }

صفحه 298:
void read(int a[][5]) { cout << "Enter 15 integers, 5 per row:\ n ۳ for (int i=0; i<3; i++) { cout << "ROW " <<j <<":"; for (int j=0; j<5; j++) cin >> alilll =

صفحه 299:
void print(const int a[][5]) { for (int i=0; i<3; i++) { for (int j=0; j<5; j++) cout <<"" << afil[j]; cout << endl; } }

صفحه 300:
ee Ta RMT Tc Ta) | ‏اا‎ row 0: 44 77 33 11 44 row 1: 60 50 30 90 70 row 2: 65 25 45 45 55 44 77 33 11 4 60 50 30 90 0 65 25 45 45 5 <<

صفحه 301:
1۱ ne ‏ا‎ Hp] Recap y) ‏ديكر بايد مشخص باشند.‎ ل 22 const NUM_STUDENTS = 3; const NUM_QUIZZES = 5; typedef 1915 Score[NUM_STUDENTS] [NUM_QUIZZES]; void read(Score); void printQuizAverages(Score); void printClassAverages(Score);

صفحه 302:
int main() Cae a ‏ل‎ ‎5 << "quiz scores for each student:\ read(score); ۹ ‏نله‎ averages 2۳۵ print 4 x ۱ ١ 2 rages(score); ea ‏ات‎

صفحه 303:
void read(Score score) { for (int s=0; s<NUM STUDENTS; ‏اروت‎ ‎{ cout << "Student "<<s <<": ny ۷ for(int q=0; q<NUM QUIZZES; qt++) cin >> score[s][q];

صفحه 304:
void printQuizAverages(Score score) -) 10۲ ‏(+جو :5۲0۴۱۲۲5 5۴۱۷۲ :0و ا)‎ { float sum = 0.0; for (int q=0; q<NUM_QUIZZES; q++) sum += score[s][q]; ‏الا۳0‎ Rats ‏ير ا ع‎ 1 6) cae OE << sum/NUM_QUIZZES. << endl; ’ 11 @) ©

صفحه 305:
void printClassAverages(Score score) { for (int q=0; qa<NUM_QUIZZES; q++) { float sum = 0.0; for (int s=0; s<NUM_STUDENTS; s++) sum += score[s][q]; cout << "\tQuiz "<< q <<": "<< sum/NUM_STUDENTS << endl; 0

صفحه 306:
7 eae) ‏ات۱۱۱۱ ۱۳ دوبعدى 0*7 نام‎ ‏انتخاب شده. این باعث‎ 6 ace ‏د که توابع خواناتر باشند. هر تابع از دو‎ ‏تودرتو استفاده كرده كه حلقة‎ 07 ۳۹ ‏بيرونىء بعد اول را ييمايش مىكند و حلقة‎ SO Eee ey SPC ELE printQuizAverages ‏تلبع‎ هر سطر از نمرات را محاسبه و چاپ می‌نماید و ‎printClassAverages =‏ میانگین هر ستون از نمره‌ها را چاپ می‌کند.

صفحه 307:
۱ S| FOO ont a C2) ‏اين برنامه تعداد صفرها را در يك آراية سه بعدى مى شمارد:‎ ‏اما‎ = = = (int afJ[4][3], int ni, int n2, int n3); int main() ۱ ine ‏ات‎ ۱4۵,02۳ {0,0,9},{4,1,0};, 15777 211200179850 120,001 2091 cout << "This array has " << numZeros(a,2,4,3) <<" zeros:\n";

صفحه 308:
مآ ,2ص غما ,1م غصا ,[2]1]41]3 الا ا ‎a‏ { int count = 0; for (int i = 0; i < nl; i++) for (int j = 0; j < n2; j++) for (int k = 0; k < n3; k++) if (afi[jJ[k] == 0) ++count; Kove 04 a

صفحه 309:
توجه كنيد كه آرايه جكونه مقداردهى شده است. اين قالب مقداردهى به خوبى نمايان مىكند كه آراية مذكور يى آرايه دو عنصرى است كه هر عنصرء خود يى آراية ‎Cone IY yer‏ ل ل | می‌باشد. پس این آرایه در مجموع ۲۴ عنصر دارد. آراية ۱۱13-۳۱ Reet eee ۱ - ۳۱۳۹۱۳ کار {3,0,0,8,5,0,0,0,0,2,0,9}}; 8 هر سة اين قالبها براى كاميايلر يك مفهوم را دارند اماابا نكاه كردن به دو قالب اخير به سختى مىتوان فهميد كه كداء عتصر از ارانه: كدوام للق[ الجواهد داشت.

صفحه 310:
مب مس سر

صفحه 311:
جلسه هفتم ,اشاره‌گرها و ارحاع‌ها «

صفحه 312:
آنجه در این جلسه می خوانید ا 2 - ارجاعها ۰- اشاره‌گرها ا - حب مقدارهاء راست مقداره - بازكشت از نوع ارجاع ‎ea‏ 0 >>>

صفحه 313:
-عملکر ۱۱6۷۷ delete Si.c-_ ‏ِا‎ - اشاره گر ثابت -آرايهاى از اشارهكرها ا ‎FESS‏ ‏ا لك ‎NULL; NUL-‏

صفحه 314:
هدف کلی: آشنایی با اشاره گرها و نحوةٌ کار با آدرس‌های حافظه هدف‌های رفتاری: انتظار می‌رود پس از پایان این جلسه بتوانید: - «ارجاع» را تعریف کنید و با استفاده از عملگر ارجاع به متغیرها دستیابی کنید. - «اشاره كر» ا 0 ا 1 مختلف ايجاد كرده و آنها را مقداريابى كنيد. >> »

صفحه 315:
از یکدیگر تمیز دهید. ۱ - طريقة ۳ ۳9 ح ات۲۳۳2 ‎pew SESS‏ Piro LONE eE SSCs 0 0 ‏ا‎ -آرایه‌های پویا را در برنامه‌هایتان ایجاد کرده و مدیریت to © ‏زفاهونت وت‎ -

صفحه 316:
(arene ry ‏رايانه را می‌توان به صورت يك آراية بزرگ‎ 00 9000 ‏ا‎ 29,5 »bi yo ‏در حقيقت حاوى آرايهاى به اندازة‎ 0 ‏خانه است که اندازة هر‎ )۲۲۸-( An ey a ‏بايت است.‎ So als اين خانهدها داراى ايندكس صفر تا هضع هنع رعنا هستند. به ا ‎Bey CH Tres anes esa‏

صفحه 317:
آدرسهاى حافظه را با اعداد شانزده‌دهی نشان می‌دهند. پپس رايانة مذکور دارای محدوده آدرس ۲۳۳۱۱۳۱ 1 هر وقت كه متغيرى را اعلان 50 ۳ اساسی به آّن متفیر نسبت داده می‌شود: اس( ‎UE‏ ان مثلا اعلان ‎1١‏ ]1: نوع ]0 ونام 0و آدرس چند خانه از حافظه كه 7 یکدیگر مرتبط می‌سازد. فرض کنید آدرس این متغیر ها 5 شکل مقابل محسم کنیم:

صفحه 318:
1201 نام متغير, در بالای جعبه است و آدرس متفیر در سمت جب جعبه و نوع متغير, :]11 در زير جعبه نشان داده شده. ‎eer‏ ل ل ‎Tee‏ ا ا ا 0 داده شده استء متغير ‎!١‏ يك بلوك جهاربايتى از حافظه. را اشغال می‌کند که شامل بایت‌های 00050660160 53 ا 2 ۳ ‎ae‏

صفحه 319:
اكر متغير فوق به شكل 7-32 11أ: مقداردهى اوليه شود. آنگاه بلوک اكات ريا ی زير خواهد بود. مقدار ۳ در چهار بایتی که برای الن متفیر منظور شده ذخیره سم لا نيدن 00050600۱ 0200506060 5 0x0050cdc1 MOT Cee | 32 | (۹۱۱4 0 ۱ int 0x0050cdc4 0x0050cdc5

صفحه 320:
عملگر لوجاع -2 در ++ برای بدست آوردن آدرس یک متفیر می‌توان از عملگر ارجاع ۱ 60 استفاده نمود. به این عملگر «علمگر آدرس, نیز می‌گویند. عبارت ‎reOE SMAI S‏ ۳ او ‎int main() a rie‏ ‎int n=44;‏ { ‎cout << "n=" <<n << endl;‏ cout << "&n =" << &n << endl; }

صفحه 321:
۱ PLES ODL eye Lelckt toed 512*710 PON IC aeeTh 0* ‏داده شده. اعداد شانزده‌دهی را از روی علامت‎ 1 ‏می‌باشد.‎ ۷۹ 26 >

صفحه 322:
‎hed‏ كد ‏یک «ارجاع» یک اسم مستعار یا واژهٌ مترادف برای متفیر دیگر است. نحو اعلان يك ارجاع به شكل زير است: ‎type& ref_name = var_name; 0 en pe ay yan oe Fete Sue en are ‏ا‎ ‏برلیآننام مستعار ب‌سازیيم برلیم ثالهر لعلان‎ ‎int& rn=n; // ۱5 asynonym for n ‎. ‏یکارجاع یبانام مستعار برلی لستالته‎ ٠ ‏بايد قبلالعلانشده باشد‎

صفحه 323:
و ‎et aie 70‏ ا ‎a‏ ‏نیز کاسته شده و لگر ۰ : لفزلیشبابد نیز لفزلیشب افته لست

صفحه 324:
همانند ثابت‌ها. ارجاع‌ها باید هنگام اعلان مقداردهی ‎Are eer cron reel ree pea Ay)‏ 1 ‎hee‏ ۱( بنابراین کد زیر اشتیاه است: Jf ERROR: 44 is not a variable FED ep yen roe nye eens Sell ec aeie ge ce acy ‏بدانند ولی با نشان دادن یک هشدار اعلام می‌کنند كه یک‎ ‏متفیر موقتی ایجاد شده تا ۰ . به حافظةٌ آن متغیر. ارجاع‎ داشته باشد.

صفحه 325:
درست است كه ارجاع با یک متغير مقداردهی می‌شود. ا م م - ال نیست. ۱ حال آنن که ارجاع از فضای ذخیره‌سازی و نشانی متغیر دیزی نهر م‌برد

صفحه 326:
ل هایمستقل_یستند * int main() ) 1۳0۲ ۱۶4۲ int& rn=n; // rn is a synonym for n cout <<" &n="<<&n <<", &n=" << &mn << endl; int& rn2=n; // rn2 is another synonym forn int& rn3=rn; ~—// rn3 is another synonym forn cot cae "frn

صفحه 327:
۸۱ Se EVES CT Wee neem erty Or et eeey .دنتسها١ ‏ارجاعهايى به‎ ١3 و1١2 ‏است. (1او‎ ۲03 ‏خروجی نیز تایید می‌کند که آدرس ۲۳ و ۲02و‎ با آدرس ۲۱ یکی است. ارجاعها بيشتر براى ساختن يارامترهاى ارجاع در توابع به كار می‌روند. ‎roid‏ می‌تواند ‎Rv-7)‏ 1 0 راكه

صفحه 328:
010000 مىدانيم كه اعداد صحيح را بايد در متغيرى از نوع ‎int‏ ‏نكهدارى كنيم 0000 را در متغيرهايى از نوع ‎float‏ به همين ترتيب كاراكترها را بايد در متغيرهايى از نوع 16 وف ا ا ‎FL ee ee‏ ‎bool. |‏

صفحه 329:
عملگر ارجاع آ درس حافظةٌ یک متفیر موجود ‎comp)‏ ‏دست مىدهد. مىتوان اين درس | ذخیره نمود. یک ادرس در ان ذخیره می‌شود براى اين كه يك اشارهكر اعلان كنيم, ابتدا بايد مشخص کنیم که آدرس چه نوع داده‌ای قرار است در آن ذخیره شود. سپس از عملگر اشاره * استفاده می‌کنیم تا اشاره‌گر را اعلان کنیم.

صفحه 330:
برای مثال دستور : - آدرس يك و 7 اشارهكرى از نوع * ذخيره كرد و آدرس يك شوازنوع 93]6]رافقط مىتوان در اشارهكرى از نوع ‎yee no‏ ل ل ام ‎ECY‏ ا و 6 025500 00 اده كه نوع متغيرهايى است كه اين اشاره كر آدرس آن‌ها را نگهداری می‌کند و نام ار

صفحه 331:
‎Com‏ به كار كيرى اشارهكرها ا ل ل ل ان 0 ‎int main() 1 ‏اس‎ ‏کیک ۰ - ۸ کی کک ۰ سل <<< ‎Goult‏ ‎&n << endl;‏ ‎0 pn=&n; // pn holds the address ‏زو‎ ‎ ‎cout<<" = pn = "<< pn << endl; ‏م يل ا

صفحه 332:
متغیر ۲۱بامقدار ۴۴ مقداردهى ‎oP ree)‏ | ‎dO] 0Lor-Afolo Le‏ 00 7( 0 ‎]١ ۳‏ مقداردهى شده. يس مقدار درون ‎Lig ply PN‏ 6 0 است (خط دوم و كو 00064100 int 0x0064fded بآ "۱ int

صفحه 333:
اما ‎ .‏ یک متفیر مستقل است و آدرس مستقلی دارد. ا ‎ph‏ سم خط سوم دارد. وقتی می‌گوییم ۰ 0 به 2 آشارهمىكند» ‎an‏ pn ‏لك‎ it ‏قرار دارد.‎ ror

صفحه 334:
حفللیبلیی5 فرض کنید ۱ دارای مقدار ۲۲ باشد و ‎PN‏ اشاره‌گری به ۲۱ باشد. با اين حساب بايد بتوان از طريق ‎01١‏ به مقدار ‎PY‏ ‏رسید. با استفاده از * می‌توان مقداری که اشاره‌گر به آن اشاره دارد را به دست آورد. به اين ا ۱

صفحه 335:
| eee Op Re FEY Re RC anew York a ant Oa Pepe eae Pepe] int main() { int n=44; cout << "n="<<n <<", &n =" << &n << endl; ۲ - ۱ ۱ ‏هر دو یک مقدار دارند.‎ 52 0 ited 5 ‏عرس الى سد‎ ol cout << "*pn =" << *pn << endl;

صفحه 336:
{ int n=44; cout<<" n="<<n << endl; cout<<" &n=" << &n << endl; int* pn=&n; // pn holds the address of n cout <<" pn =" << pn << endl; cout <<" &pn =" << &pn << endl; cout <<" *pn =" << *pn << endl; int** ppn=&pn; // ppn holds the address of pn cout <<" ppn =" << ppn << endl; cout << " &ppn = " << &ppn << endl; cout << "*ppn = " << *ppn << endl; cout << "**ppn = " << **ppn << endl;

صفحه 337:
Aid ‎int‏ م ‎ES ‏0 ‏در برنامهٌ بالا متفیر ۱ از نوع ]0 تعریف شده. 0۲۱ اشاره گری است که به ۱ اشاره دارد. پس نوع 0۲ باید ]10 باشد. 001 آشاره‌گری است که به 01 اشاره می‌کند. پس نوع 00۲ باید ]10:* باشد. همچنین چون 0۲ به 0۲۱ اشاره دارد. پس ۴ مقدار 01۱ را تشان می‌دهد و چون 0 به ۲۱ اشاره دارد. پس *۲۱( مقدار ۲۱ ‎fa) < ‎&n ‎0x0064fd78 ‏مم ‎0x0064fd78‏ ‎&pn ‎0x0064fd7c ‎*0۲0 < 4 ‎ppn ‎020064107 ‎&ppn ‎0x0064fd80

صفحه 338:
‎TES‏ ی 0 00 ‎

صفحه 339:
es ae ‏باشد (مثل 4012) بك اشارهكر به أن نوع را‎ ‏تعريف مىكند واكر ييشوند يك اشارهكر‎ ie 2 ne ۳ ‏اشد ول‎

صفحه 340:
اا ان يى دستور جايكزينى دو بخش دارد: بخشى كه در سمت چپ علامت جایگزینی قرار می‌گیرد و بخشی که در سمت ال ‎OED CES VOCS BU MPe Be] e rune) Corner‏ إن 55 متفیر 0 در سمت چپ قرار گرفته و مقدار ۵۵ در سمت راست. اين دستور را نمىتوان به شكل 628 -١1ر‏ نوشت زيرا مقدار ه20 يى ثابت است و نمى تواند مقدار بكيرد. يس هنكام استفاده از عملكر جايكزينى بايد دقت كنيم که چه چیزی را در سمت چپ قرار بدهيم وجه چیزی را در سمت راست.

صفحه 341:
ee ela See ned Teeth anes peel eae eas ee ene BE) Pete ele Toe Oren Ty aaa el Soc 0 ‏ا‎ Ep Com eeprom pc ‏كلى اشنا) جبامقدار هستند وليترالها‎ 0 (مثل ‎١0‏ و "886") راست مقدار هستند. eye =

صفحه 342:
1 Lawl yo Coll SL const int MAX = 65535; // MAX is an Ilvalue oN ‏ا‎ oe are) epee e pe oe] | ‏استفاده کرد:‎ MAX = 21024; // ERROR: MAX is constant Ceri Sebel per Sa sey Berio Me DRC elec ac oy Caner eo ‏می‌شود. مثل آرایه‌ها:‎ int a[] = {1,2,3}; // ‏>ا.0‎

صفحه 343:
مابقی چپٍمقدارها که می‌توان آن‌ها را تفییر داد. چپ‌مقدارهای «تفییر ‎ea cer ney eed Ser Sane)‏ 0/7 | رز int& r =n; //O.K. nis an lvalue pert Dee CM rt USD Deca Dee PRU Te) enc int& r = 44; // ERROR: 44 is not an Ivalue int® r = n++; // ERROR: n++ is not an lvalue int& r = cube(n); // ERROR: cube(n) is not anlvaluel—L_values 2-R_values Sealy ey Sani] cose ‏یک تابع چپ‌مقداز‎ SONS ey eee Seem ‏ا‎ Te)

صفحه 344:
‎Ame: 5-9 ۰‏ بليكشلز نوع لوجاع -7 ‏۷ ‏ارجاع را ديديم. اين دو شيوةٌ تبادل در مورد بازذكشت از تابع نيز صدق مى كند: ‏بازكشت از طريق مقدار و بازكشت از طريق ارجاع توابعى كه تاكنون ديديم بازكشت به طريق مقدار داشتند. می‌توانیم تابع را طوری تعریف کنیم که به جای مقدار. ‎Ree‏ ل 2 ان را بازكشت دهد., يك ارجاع به 117 را بازكشت دهد.

صفحه 345:
1 ل لك مقدارند. به اين ترتيب تابع را فقط در سمت راست یک جایگزینی می‌توان به کار برد مثل: کی ولتي و سس ۳ خواهد بود زيرا ارج ندار هستند. در این حالت ا قرار داد مثله TiS 85: ‏ب©)‎

صفحه 346:
‎Sea ho eee Dl ee eee‏ سس ارجاع را به عنوان يسوند نوع باز كشتى درج كنيم. ‎ea ea‏ ا ‎eM Ce aL aD)‏ ‎return (m>n?m:n);}‏ { ‎int main()‏ و اك ل لكر 01 ‏کر الم ‎endl;‏ ‎max(m,n) = 55; ‎cout "," << max(m,n) <<e

صفحه 347:
بت متا از بين 100 و2 ‎Lao‏ ۳ بيدا اكرده رجاعى به آن را باز مى كرداند. ال زر 500 ل 0 أو يمسي بيم 55 ت 6لا ی ‎Je‏ یش ماه رضم ‎PP ern)‏ > a> \ ly >

صفحه 348:
اخطار:. وقتی یک تابع پایان می‌یابد. متفیرهای محلی آتن نابود م ال ا ك2 الت ا ل ا 00 ۱ داده شده ممکن است به یک مقدار دا ار ا ل ينا ا ۱ ‎onpeemrel Sen ees FCS)‏ 0 ‎ees EO Bs eo @*‏ 2 ( ۴

صفحه 349:
و ‎int& max(int& m, int& n)‏ AUS SSIES Bee eew) ES oe ees eels ‏یک ارجاع درآمده است.‎ ‎۷-٩ 3‏ به کارگیری یک تابع به عنوان عملگر ‎eet ee‏

صفحه 350:
float& component(float* v, int k) { return v[k-1];} int main() { float v[4]; for (int k = 1; k <= 4; k++) component(v,k) = 1.0/k; for (int i = 0; i < 4; i++) athe cata AY ere cae) SY Se Mle endl; >

صفحه 351:
تابع 601908010610۴ باعث می‌شود که ایندکس ‎Shy eae ae‏ 000 م ا ل ‎rT‏ ‎bre Eoen ah C2‏ ل 0 eye =

صفحه 352:
ET ‏گرچه اشاره گرها از انواع عددی صحیح نیستند اما بعضی‎ 1 |e ‏حاصل اين مىشود كه اشارهكر به خانة ديكرى از حافظه‎ ‏اشاره مىكند. اشاره كرها را مىتوان مثل اعداد صحيح‎ ‏افزايش و يا كاهش داد و مىتوان يك عدد صحيح را به‎ 0 ‏ا‎ cen Fry ‏كاهش اشارهكر بستكى به نوع دادهاى دارد كه اشاره كر‎ به آن اشاره دارد. مثال ۷-۱۰ پیمایش آرایه با استفاده از اشاره گر این مثال نشان می‌دهد که چگونه می‌توان از اشاره گر بزاي پیمایش یک آرایه استفاده نمود:

صفحه 353:
int main() { const int SIZE = 3; short a[SIZE] = {22, 33, 44}; cout << "a =" <<a << endl; cout << "sizeof(short) = " << sizeof(short) << endl; ۳ end = a + SIZE; // converts SIZE to :0 ع سند غتمطد for (short* p = a; p < end; p++) { sum += *p; cout << "\tp cout << "\t * cout << "\t si 1 cout << "end = }

صفحه 354:
این مثال نشان می‌دهد که هر گاه یک اشاره گر افزایش يابد. مقدار كن به اندازة تعداد بإيتهاى شيئى كه به كن ا 0 ‎RPI eC Chi peer ota‏ ‎reed ae a cee tre itoel)‏ ۱ ‎Eee Ron ton StS) r‏ eye =

صفحه 355:
۱1 float* p =a; //p points to a[0] ++); // increases the value of p by sizeof(float) eye =

صفحه 356:
اكر 1ج 03 ها ابا 00 eee 1 نگاه سس مقدار ۱ ‏تس‎ 1 ‏د‎ ae om ۱ ee ‏ا‎ ‎3 ‏مى‎ ‎ose ae ۱:6 ‘ Dye. @)

صفحه 357:
ene SBE ‏م ااا اا‎ gre re float* ‏م‎ = a; // p points to a[0] ۳ // now p points to a[5] ‎eee ee neey‏ ا لك دارد: اكر اشاره كر را بيش از ايتدكس آرايه افزايش دهيم: ممكن است به بخ شهايى از حافظه برويم كه هنوز تخصيص داده نشدهاند يابراى كارهاى ديكر تخصیص یافته‌اند. تغییر دادن مقدار اين بخش‌ها باعث بروز خطا در برنامه و کل سیستم می‌شود. هميشه باید ‏اه ای و

صفحه 358:
کد زیر نشان می‌دهد که چطور این اتفاق رخ می‌دهد. . ‎float a[8];‏ عط ما غمعمعاء غدها 6ا عامادم // ([8]7 > م ‎ee)‏ ۰ ‏ید‎ 000 Cees = 222 // TROUBLE! eal 00 ‏ره ا وجود دارد. نام آرايه در حقيقت يك‎ 0-000 660050 ‏کر يت‎

صفحه 359:
* مثال ‎-١١‏ يبمايش عناصر آرايه از طريق آدرس int main() { short a[] = {22, 33, 44, 55, 66}; عت امن کی ۰ - ۷2 رل ‎ey ce‏ سک ۲ ‎ey‏ کت ۱۵0۳۵۲ ‎endl;‏ for (short* p = a; p <a +5; p++) a = Ox3fffd08, *a = 22 - 30 << Ve p = Ox3fffd08, *p = 22 p = Ox3fffd0a, *p = 33 } p = Ox3fffd0c, *p = 44 p = Ox3fffd0e, *p = 55 p = Ox3fffd10, *p = 66 p = Ox3fffd12, *p = 77

صفحه 360:
’ ۳

صفحه 361:
5 [] مثل عملگر مقداریابی + رفتار می‌کند. هر دوی ةا رن درس ی 1190 << a[1] == *(a + 1) a[2] == *(a + 2) پس با استفاده از کد زیر نیز می‌توان آرایه را پیمایش نمود. . ‎for (int i= 0; i < 8; i++)‏ ‎OS‏ انلسارم

صفحه 362:
مثال ۷-۱۲ مقايسة الگو در این مثال, تابع 0106 در 7 ا 0 ۳ ‎be‏ ‎ee era‏ 1 برمی‌گرداند که 32 از آن ‎sre eestor Ev ona Pa Le)‏ 1م + 31 > 1لمع *رمطه 4 ‎for (short* p1 = al; pl <end1; pl++)‏ ‎Lo) eV)‏ ‎for (int j = 0; j <n2; j++)‏ { ‎s‏ لاسن ‎Da emu cd‏ 5 ۳ (۵

صفحه 363:
ان { short a1[9] = {11, 11, 11, 11, 11, 22, 33, 44, 55}; DeVoe Coase eS PPE Se 0 ‏ا ل‎ Coa ‏ا ا ا‎ on a Pea ‏ا ل 1 لت‎ coe ) ‏نم‎ >> NEY co Moe cle EERE << p << endl; oN se a) a) ‏امع ار‎ ‏ا‎ oa 1 (( SS

صفحه 364:
Array al begins at location Ox3fffd12 Array a2 begins at location Ox3fffdos Array a2 found at location Ox3fffd16 Ox3fffd16: 11 Ox3fffd08: 11 Ox3fffd18: 11 Ox3fffd0a: 11 Ox3fffdla: 11 Ox3fffdOc: 11 Ox3fffdic: 22 Ox3fffd0e: 22 Ox3fffdle: 33 Ox3fffd10: 33

صفحه 365:
ث 0 وقتی یک اشاره گر شبیه اين اعلان شود: ۲1081۴ 0: // pis a pointer to a float ‏یک فضای چهاربایتی به ۵ تخصیص داده می‌شود (معمولا‎ 1 0 cede ‏قرار نگرفته. به چنین اشاره گری اشاره‌گگر س رگردان‎ ‏مقداریابی با ارجاع کنیم با خطا مواجه می‌شویم.‎

صفحه 366:
مثلا دستور: در نا ‎has been allocated for *P‏ .زیرا 0 به هیچ آدرسی اشاره نمی‌کند و سیستم عامل ‎Ve Ce Fae Oper re heer‏ رفع اين ‎Ey ey no a Cee SE eke Tee cece‏ float x = 0; // x cintains the value 0 float* p = &&« 9 ‏ای‎ *0 < 3.14159: I ‏کف‎ ‎value to addr: ۱

صفحه 367:
۱ ۱ اختصاصی د و در ترتیب ‏ از سر گردانی. خارج می‌شود. این : ربا استفاده از عملگر ی ‎float* p;‏ P = new float; // allocates storage for 1 float غ03 6غ علدنا كلطا ك5موادكة .0 // (3.14159 ۳ دقت کنید که عملگر ‎Ts‏ فقط 0 0 قدردهی می‌کند ته ‎os‏ ‏0 0 می‌کند میتوايم سا خط فوق را با هم ترکیب کرده و

صفحه 368:
۱ seca ter | oe fee eee ee nero) ‏آدرس آسن به 0 تخصيص مىيابد و همجنين مقدار‎ a Va Ve Seve tee eT Lt 10111010 0-7 ea ‏لك‎ tear Teel ad ‏برمی گرداند. ی‎

صفحه 369:
با استفاده از كد هوشمند زير مى توانيم مراقب باشيم كه اشارهكر تهى ايجاد رح ‎double* p = new double;‏ if (p == 0) abort(); // allocator failed: insufficent memory else *p = 3.141592658979324; در اين قطعه كدء هر كاه اشاره كرى تهى ايجاد شد.ء تابع ‎a3‏ لل ا 0

صفحه 370:
۱ eee Re Te Ce Bee ate cece ey Ld مقداردهى كرد. روش اول: ‎float x = 3.14159; // allocates‏ ‎named memory‏ و روش دوم: float* p = new float(3.14159); ih allocates unnamed memory Perera ‏ا ا ا ل ل‎ Comp) مى يابد. در حالت دوم حافظة مورد نياز در زمان اجرا و به يك ع م اا | 0

صفحه 371:
delete ‏عملكر‎ -٠١ عملگر -.. - ۰ عملی برخلاف عملگر .۰۰ : دارد. كارش اين است كه حافظة اشغال شده را آزاد كند. وقتى حافظهاى آزاد شود. سيستم ب ل ا ل 0000 ‎CCE Foe‏ ا | الل ل 3 کار برد که با دستور 6۷۷ ایجاد شده‌اند. وقتی حافظة يكى اشاره كر ال ا ا ا ‎Ree ome peony‏ ‎eg‏ 0210000 ‎float* p = new float(3.14159);‏ ‎delete p; // deallocates q‏ ۲۱ ۱99 0 8۳۵۰ نس نس ۱« ‎deallocated‏

صفحه 372:
‎RO‏ گر + مد امرس آسن تخ ‎Lae lene‏ 2 ل ‎anaes EO ۳‏ و ‎ETD doen re See SS)‏ ان ۱۳2 می‌گویند. اشارهكر به يكد شىء ثابت را نمىتوان آزاد كرد: ‎const int* p = new int;‏ ععصی ما عونمم عنعاع۵ خمهمی :۴8۴۵8 ۸۱ :0 ‎fell lk‏ ‎ ‎

صفحه 373:
۱ foes Pp cage] eevecene\erowi ie (-] (=| epee bey Pee] |S) prover ‏ا‎ RC pee ape er] ی ۸ تاه ری ۰ ۱ 3.141597= ‎float x‏ 3.14159 > ff p contains the address of x = /f WARNING: this will make x free کد بالا باعث می‌شود که حافظةً تخصیص یافته برای ۱6 آزاد شود. این ا ا ا ل ل رك

صفحه 374:
آوليدهاوبويا -11 نام آرايه در ‎Care ROM Cr Fea‏ ا 0 'تخصيص داده مى شود: ‎١ 0‏ 0 ل رت ا ا ا 0 floats float* const p = new float[20]; os Cree ae ‏ل ل ا‎ e e- me) Rear ‏ل‎ ora or. me) Ca eee ep PES eon (el- Le Seren eel Mel SPERM eB CST ke eg Sie Teter ‏شود. وقی برنامه اجرا شود. به هر حال حافظة مربوطه تخصیص خواهد‎ یافت حتی اگر از آن هیچ استفاده‌ای نشود.

صفحه 375:
می‌توانیم با استفاده از اشاره گر. آرایةٌ فوق را طوری تعریف ‎ONE e Tone MEST er ete Rarency‏ ۱9 يابد: float* p = new float[20]; Pepa ies eee Cone lear Fen acm] pyar) 0 Meee yen ead BCs EC Bp ree heme t fe Tia ‏ل‎ بسته‌یندی پویا ۳ یا «بسته‌بندی زمان جرا» می‌گویند.

صفحه 376:
‎ee irae‏ ی انا و ‎ ‏ید ماه ‎pee‏ 9 ‏۵ ره

صفحه 377:
مثلل ۷-۱۵ استفاده از آرایه‌هلی پویا- 0 تا خفن دا سییر ‎war‏ 01 a SS ‏ناه << وه‎ ِ 1 Rear Clo Beat} Pea en ao cout rae ‏حك‎ = ae a ۹ 7

صفحه 378:
int main() 0 ‏اا‎ Mer MC Shae TT] Let | pointer int n; get(a,n); 1۱/ now a is an array of n doubles print(a,n); 85۱6۶55 || — J] now a is simply an unallocated pointer again get(a,n); // now a is an array of n doubles print(a,n); }

صفحه 379:
Enter number of items: 4 Enter 4 items, one per line: 1: 4 2:77.7 » ‏نمه عدم‎ ‏ل‎ ‎44.4 77.7 22.2 88.8 Enter number of items: 2 Enter 2 items, one per line: 1: 3.33 2: 9.99 9 د3.د سس مت 7 ‎EELS‏

صفحه 380:
۱ 9 kes Solid ۳ ‏ثابت» با 7 ثابت» تفاوت‎ ro Sy ‏«اشاره كر به‎ ‏این تفاوت در قالب مغال زیر نشیان داده شده است:‎ ‏ثابتها‎ دراين كد جهار 0( اشارهكر ثابت 0ع. اشاره به يك ثابت ©0,: اشاره كر ثابت به يى ثابت 066 :

صفحه 381:
‎Man int‏ ل ‎ ‎ ‎Or //a pointer to an int‏ و تلا ‎TR att *‏ پر یی ی ‎fone 10K: increm‏ ی ‎al eo‏ تا ی ‎aac ‘// OK: increments int *cp_‏ ‎cena‏ ی سس ‎Rac‏ ‏/ را ‏ا نايع د عم * غم غعممء ‎illegal: int *pc is const‏ /1 0 ‎So : 1‏ ‏مس وی سم تس عم غعموء اس : : صر ا ‎

صفحه 382:

صفحه 383:
ee yeureren by Fe ve ‏می‌توانیم آرایه‌ای تعریف کنیم که اعضای آن از نوع‎ 000 float* p[4]; ‏اشارهكرى‎ El Lets ewe ay ap) ‏به 11938])اعلان مىكند. عناصر اين آرايهرامثئل‎ اشاره كرهاى معمولى مى توان مقداردهى كرد: ‎new float(3.14159);‏ = [0]م ‎p[1] = new float(1.19);‏

صفحه 384:
1 مثال بعد نشان می‌دهد که آرایه‌ای از اشاره‌گرها به چه دردى مىخورد. از اين آرايه مىتوان براى مرت بكردن یک فهرست نامرتب به روش حبابی استفاده کرد. به جای ا 1۱۳ _— 5 double ol a) / double

صفحه 385:
مثال ۷-۱۷ مرتب‌سازی حبابی غیر مستقیم. ‎sort(float* p[], int n)‏ لت ی 9 ‎for (int i= 1; i <n; i++) for (int j = 0; j < n-i; j++) if (*pEj] > *plj+1)) ۱9 ‏:انام - لت‎ Cie tara ‏لي الل‎ 1 ‏۵ ( ته 7

صفحه 386:
تابع 050۳6 آرای‌ای از اشاره‌گرها را می‌گیرد. سپس درون حلقه‌های تودرتوی 80۴ بررسی می‌کند که آیا مقادیری که ‎Sree SIS Es]‏ | ‎ere SEDC Srv eer ereeye es]‏ ‎Pen eee Tompe Tee Rte ttea elt Bice‏ باشیم. آرایه‌ای داریم که اشاره گرهای درون آنن به ترتیب قرار گرفته اند. ۵ ( 2

صفحه 387:
14-7 ‏اشارهگریب داشاره گر هیگر‎ ۱۱ CCID Fo ‏ا‎ CED Fo Oe) char c = 't'; char* pc = &c; char** ppc = &pc; char*** pppc = &ppc; *oppc = 'w'; // changes value of c to 0 2 | ome SecA CNet =A BET Scr SF] oLom) es ‏اشاردكر ©0است و اشارفكر 0006 هم به اشاردكر 006 اشارة دارد.‎

صفحه 388:
pppc | ~ PPE) cs pe ki با این وجود می‌توان با اشاره‌گر 20۳] مستقیما به متغیر > رسید.

صفحه 389:
ل ل ‎owe gC oe Ngee TT‏ ا 1 0 002 این است که نام یک تابع مثل نام یک آرایه. یک ‎ones Row eer 9 |‏ رز ‎ere oa BEE mel ROT PEN SCN mc ieee‏ گرفته‌اند. پس بنابر قسمت قبل اگر اشاره گری به تابع اعلان کنیم. در اصل اشاره‌گری به اشاره گر دیگر تعريف كرددايم. اما اين تعريف. نحو متفاوتى دارد: int f(int); // declares function f int. (*pf)(int); // declares function pointer pf

صفحه 390:
یچ تسس ما این که 0۴ اشاره‌گری به یک تابع است. بعد از آن یک تا ‎Po‏ ‏که 0۴ به آن اشاره می‌نماید. پارامتری از نوع 10 دارد. ‎pee Dice ed Tedd ioc‏ (6 ۳

صفحه 391:
فايدة اشارهكر به توايبع ايناست كهبهاين طريق می‌توانیم توابع مرکب بسازیم. یعنی می‌توانیم یک تابع را به عنوان ار كومان به تابع ديكر ارسال كنيم! اين كار با استفاده از اشاره گر به تابع امکان پذیر است. 6 . ۷ اد ‎nS‏ 70 «8

صفحه 392:
مثال ۷-۱۸ تابع مرکب جمع تابع 051060) در این مثال دو پارامتر دارد: اشارهگر تابع 0۴] و عدد صحیح 0: ‎int sum(int (*)(int), int);‏ 2 pea ‏ال‎ ‎‘cout << sum(cube,4) << oe } 3 ( ۵

صفحه 393:
دیگری به عنوان آر گومان به آن ارسال شده. هنگامی که (511101)500376,4 فراخوانسی شود مقدار ‎square(1)+square(2)+square(3)‏ ‎eyes STEELE C Oe‏ ‎ca COTS: TL Le-1 4 fopes‏ ۳ فراخوانی ۰ (5۳0۵)500۵۲6,4 مقدار ا را ی از الم نس زور ركه

صفحه 394:
int sum(int (*pf)(int k), int n) >) // returns the sum f(0) + f(1) + f(2) + ... + f(n-1): int s = 0; for (int i = 1; i <= n; i++) s += (*pf)(i); ica Hy y int square(int k) calc} 1 int cube(int k) }

صفحه 395:
‎ue 5 ink 50010 56‏ 0 علبلا ‎dil Foo‏ در رتايع 2 ‎ap oo erase ee eran aed‏ ‎EOE Ree ee ee SELLS‏ ‏27 هد ‎ ‎aes ‎

صفحه 396:
اب تب یا ‎ROTC Ce) Neen‏ ا ‎POROUS (TCL Beaver ana‏ اشاره‌گر 8۴] فرستاده می‌شود. با استفاده از عبارت ۱ am: eS eee

صفحه 397:
0 ثابت صفر (۰) از نوع 1108 است اما این مقدار را به هر نوع بنیادی دیگر مى توان تخصيص داد: char c = 0; // initializes c to the char '\O' short d = 0; // initializes d to the short int 0 int n = 0; // initializes n to the int 0 unsigned u = 0; // initializes u to the unsigned int 0 float x = 0; // initializes x to the float 0.0 dnithle 7 — nN: Tl initializveac 7 tr the doiihla

صفحه 398:
۳ e ‏مت‎ oe Coe PRES SB Cease ‏اشياى كاراكترى به كار رودء به‎ الالا است. اللا معادل كاراكتر ۳۹ ‎ees‏ ‏9

صفحه 399:
‎re ey CLL mies en Kees Te eee tee)‏ و که ادا آن را 1 لالا! كنيم تا مقدار زبالة آن پاک شود. اما هميشه باید ‎cpeel eee Se‏ 1 ‎int*p = 0; //p points to NULL 1D ee ۱/۵ ea ae ‎fo OS ‏لوو‎ ERI 1 ‎1 ‏حالا دستور 10222 ‎oe la eet‏ صفر نباشد. می‌دانید که ‎en 2‏ ‎1 ta 7

صفحه 400:
اشارهكرها را نمىتوان ناديده كرفت. آنها سرعت يردازش را زياد مىكنند و كدنويسى را کم با استفاده از اشاره‌گرها می‌توان به بهترین شکل از حافظه استفاده کرد. Peri eee Me ede Tene PED edn eee Do ney ‏کارآمدتر ساخت.‎

صفحه 401:

صفحه 402:
جلسه هشتم 3 استاندار۵» ‎chan,»‏ کاراکتری و فابل‌ها در ‎C++‏ و

صفحه 403:
آنجه دراين جلسه مىخونيد "| مروری بر اشاره‌گرها 0 | 1 ات اش ما 0 | آرايهاى از رشتهها 2) oe See on ee

صفحه 404:
0 1 ‎aoe 1‏ به تبادل داده‌ها ری عونت سك س‌ها و اصولاولیة به کر گیری © 5000-0 آنوع ‎a‏ ۱ 3 ©

صفحه 405:
هدف کلی: معرفی رشته‌های کاراکتری به سبک و 2بب+و نحوةّ ایجاد و دست‌کاری آن‌ها و همچنین نحوةٌ استفاده از فايلهاى متنى براى ذخيره سازى و بازيابى اطلاعات.

صفحه 406:
Seon eke Sees See Eg STC ere en ENEMY ‏ا‎ Re Noes ‏تولبع معرفی شده عضو 70 و 7۷ را شناخته و وظیفةً هر یک را‎ - ‏شرح دهيد.‎ ‏رشتههاى كاراكترى به سبى 0)++ استاندارد را ايجاد نماييد.‎ ‏مفهوم دورودی قالب‌بندی شده؛ و دورودی قالب‌بندی نشده را‎ - 1 ToBI DT FO CR Ley ‏نوع 2ات را شناخته و رشتههايى الم دع لجان لاك ريا‎ - rc 1 ‏ل‎ be feat a ‎ory‏ ایل متدی نوشته یا از 0 > هارت ‎ ‎ ‎

صفحه 407:
:مقدمه دادههايى كه در رايانهها يردازش مىشوند هميشه ا نیستند. معمولا لازم است که .۰ ۰ تا = زارت و ‎a‏ عر ‎Sinan‏ شردند: ود 0 ‎Se eee‏ در اين خلشه بررسى مى كنيم كه محر اطلاعات ترا شكل دلخراد باه شروبتي 0 در همين راستا توابعى معرفى مى كنيم كه انجام اين كارها را آسان می کنند.

صفحه 408:
‎Le TSE.)‏ ان یک اشاره گر متغیری است که حاوی یک آدرس از حافظه مىباشد. نوع اين متغير از نوع مقدارى است كه در آن آدرس ذخيره شده. با استفاده از عملكر ره ‎ee ieee nga sy‏ را مقداری که در بک درس قرار دارد را مشخص کنیم. به تعاریف زیر نگاه کنید: ‏۰2 ۱ ل

صفحه 409:
رشتههاى كاراكترى در 0 در زبان ++ یک درشتة کاراکتری آرايهاى از کاراکترهاست که این آرایه دارای ویژگی مهم زیر است: ۱- یک بخش اضافی در انتهای آرایه وجود دارد که مقدار آن. کاراکتر 424 بعنی ۰۱۱ است بس تعذاد کل ا ل ا ا ‎٠”‏ - رشتة كاراكترى را مىتوان با ليترال رشتهاى به طور مستقيم مقدا ركذارى كرد مثل: beet] = “are: Pay Ripe were rep] uel ie Cam vecer ety _ 9 HN gir 9 i ‏و‎ ot ‏و ا‎

صفحه 410:
[۱ LTS eo Pee Cee ‏جاب کرد. مثل:‎ عوك >> الور ‎orl ee)‏ ا ل ا ل 0 یکی يكى به خروجى مىروند تا وقتى كه به كاراكتر انتهايى ‎١١‏ ‏ا © - يى رشتة كاراكترى را مىتوان مثل يك متغير معمولى از ورودى دريافت كرد مثل: عه << وأو در اين صورت. همة كاراكترهاى وارد شده يكى يكى درون 2 ‎cIP TIC‏ ال ‎aS ee ete Ree‏ ‎Sen ST Sy)‏ ا ‎See‏ ‏براى دريافت همة کاراکترهای وارد شده جا دارد.

صفحه 411:
۵ - توابع تعریف شده در سرفایل <72:0> را 0 One roe Cee Oana Shes توابع الصاق رشتدها ‎Oe ae RO aa‏ توابع مقايسة رشته‌ها 2۷۰۲() و 2۲() 0

صفحه 412:
رشتههاى كاراكترى با كاراكتر ‎١‏ خاتمه مىيابند ا کوچک زیر نشان می‌دهد که کاراکتر به رشته‌های کاراکتری الصاق می‌شود: QOist wort دي اك دم Por (iti = O; 1 < SG; i++) Pout << "s[" <<i << "] =" << 5[i] << “lu ۱

صفحه 413:
رشتة کاراکتری < دارای پنج عضو است که سس لا کاراکتر ۲ مى باشد. تصوير خروجى اين مطلب را تاييد مىنمايد. ا لي می‌شود. هیچ چیز چاپ نمی‌شود. حتی ا 0 خط آخر خروجی. عضو پنجم را نشان می دهد كه ميان دو علامت ايستروف هيج جيزى جاب نشده. 5 ۰ © د 0 0 ه

صفحه 414:
ورودی /خروجی رشته‌های کاراکتری: ‎PRU TRUS DIC ae eas Ome)‏ 52 رادريافت كرده يا نمايش داد. یک ا ا 3 در بخش‌های بعدی به آن خواهیم پرداخت. ‎CEE TD)‏ ل ‎Pe)‏ ‎IBY‏ ا 0

صفحه 415:
سل سیر رزش ساده درراثت ز نمایش رشه‌های ‎1g ASUS‏ در برنامة زير يى رشتة كاراكترى به طول 9 كاراكتر اعلان شده و کلماتی که از ورودی خوانده می‌شود در آن ا ل 0 Vc 24 0 aes ۱ cout << "WW" << word << "\"\a Avda ca) it ۱

صفحه 416:
0 ‏ل‎ ro) nd Pe Te ee TCS Oe era | ore ‏ع‎ تست ‎pi. 5‏ ا ا ل ةا ‎Te)‏ ا ل ل ‎et ge‏ ‎eevee, EM y Cr NO Una ‏رت‎ ‏عضو را در ادامه خواهیم دید. فراخوانى ‎CA coca)‏ باعث لمع یت درون 7 خوانده شود و مابقى كاراكترهاى وأرزد شده تاديده ‎0

صفحه 417:
‎ceo‏ لد ار ‏:ابن برنامة ورودى راخط به خط به خروجى مى فرستد ‎0 ‎۱ W|; ‎le ‏گر باس بت ۱۱ ‎1 ) (۱/۷ > ۷۳ ۶۱ > ‏لسار ‎j

صفحه 418:
سم باسه بارامتر آتابع نا ۱ | ی ‎Bye)‏ 0غ ‎ee‏ نما موز 3 oO eos 2116 محا ی ۱ ١ (١ 5

صفحه 419:
تابع للا ‎ES TO) ee alee Sel‏ من كلدت وق ».٠ل‏ كاراكترفارا ب موظيت درون ( حاص دز 0

صفحه 420:
ال برنامة زیر اولین حرف از هر کلمة ورودی را به حرف بزرگ تبدیل كرده و آن را مجددا در خروجى جاب مى كند: مس se ae son ۱ | ۱ ‏ی‎ و 6١ ( 49

صفحه 421:
رب اس م8 با استفاده از برنامة زير» تابعى آزمايش مى شود كه اين تابع اعداد صحيح را از ورودى استخراج ‎re‏ تس درا ۱0 لل 00 و اه او سس || ‎DH‏ تا ‎jan $< q7 << "+ "<< << "=" << te << eel‏ t ماس( ae et re Ac (a) 9 رت ۱ عمس مد ناما ةقح // ‎Sona‏ اما جارجدحت 3 ‎I read os‏ به << وم

صفحه 422:
۱ ‏الل‎ LB Tel) Qist ext tsi اس ‎vin 0‏ (() ممه - او > << موز ۱ 0 حون ١ (SS @)) )) ‘SS

صفحه 423:
1 UT در مثال 8-5 به تابع 2007 اشاره شد.اين فقط يكى از توابعى است كه براى دست كارى كاراكترها استفاده ‎hb pw 9 4S pila lw dg 50‏ كم "- .. . تعریف شده به شرح زیر است: cue 2 int isalnum(int c); لگر > کاراکتر الفبلیییا عددی باشد مقدار غيرصفر وكينفه صفر 101132[ 152() را برمی‌گرداند int isalpha(int c); ‎ee en ere Te bs eae Ll‏ لمق ‏برمی گرداند ‎ ‎ ‎ ‎ ‎ ‎

صفحه 424:
شرح 1 ETT ee ۱ ‏اكر © كاراكتر‎ ESTES eed int isdigit(int c); ‏اگر 6 کاراکتر عددی باشد. مقدار غیرصفر و در غیر ن.‎ ‏ل‎ int isgraph(int c); ‏اگر 6 کاراکتر چاپی و غیرخالی باشد مقدار غیرصفر‎ SS eye a ee) int islower(int c); Pope Ie pee as Re eC ere peo ۳ ‏صفر را برمى كردائد‎ int isprint(int c); ‏اگر > کاراکتر قلبل چاپ باشد مقدار غیرصفر و در غیر‎ ‏آنه صفر را برمی گرداند‎ نام تابع Oiscntrt Qisdigit QOisgraph QOislower QOisprint

صفحه 425:
ار int ispunct(int c); ‏اگر > کاراکتر چلپی به غیر از حروف و اعداد و فضای خللی باشد. مقدار غیرصفر‎ ‏برمی گرداند وگرنه مقدار صفر را برمی گرداند‎ int isspace(int c); ‏ال‎ res Cae a Lee een eC ۱ EE Deel) en ‏ا اي ل‎ a int isupper(int c); ‏ل رن‎ coda LS Lal nl dB alc RSS ea ee int isxdigit(int c); OI erry eee re Peary Pe a ONC Pe CeCe Dr ier cana cy Cece anne COC ‏باشد. مقدار غیرصفر برمی گرداند و گرنه مقدار صفر را برمی گرداند‎ int tolower(int c); اكر © حرف بزرك باشد. كاراكتر كوجك معادل آَن را برمى كردلند وكرئه خود © را برمى كرد اند int toupper(int c); اكر © حرف كوجك باشد. كاراكتر بزرك معادل آن را برمى كردلند وكرنه خود © را برمى كرد اند نام تابم ‎Qispunct‏ Qisspace Qisupper Qisxdigit Qtolower Qtoupper

صفحه 426:
۱ در يافت مى كنند ويك مقدار 4 را برمى كردانئذ. علت ‎oe‏ ا ل ل ا ا در عمل وقتى توابع فوق را به كار مىبرندء يك مقدار »كات به تابع مى فرستند و مقدار بازكشتى را نيز در ‎IE yest. ree‏ ا ‎ae‏

صفحه 427:
به خاطر دارید که گفتیم یک آرايةٌ دوبعدی در حقیقت آرایه‌ای یک بعدی است که هر کدام از اعضای لن یک آراية ‎oe gee‏ ۱ اعلان شده باشد: راکنا این آرایه در اصل پنج عضو دارد که هر عضو می‌تواند پیست ا ‎etree eae pera‏ ت۱۳ ف تچ این یشوه که راید بلاق آراية پنج عنصری است که هر عنصر آن یک رشتة کاراکتری بيست حرفى است. اين آرايه ‎eee ep‏ تصور كنيم.

صفحه 428:

صفحه 429:
آرایه‌ای از رشته‌های کاراکتری ‎Ue SOL UE rere Ce I ese SECS‏ ‎ee a Ue Leer eae)‏ Fiera aD) aN ‏ل‎ Rc ‏ل‎ ar ec pwhile (vic-getioe(cae[pruatt++], SD)) FAS ied ‎cea‏ لل ا لله ‏ی ينا ‏الج >> "[" >> [اإصصم >> "] ." >> ز>ك> "يا" >> ووز ‎۱

صفحه 430:
يك آراية رشتهاى يويا اين برنامه نشان مىدهد كه جكونه مىتوان از كاراكتر و و ار ال دا ار مجموعه‌ای از اسامی را می‌خواند. طوری که هر اسم روی یک خط نوشته می‌شود و هر اسم با کاراکتر ۱ پایان ‎Ry ea Oe Scie mee on] I eee ge) Be FP‏ سپس نام‌های ذخیره شده در آرايةٌ 77777 چاپ می‌شوند:

صفحه 431:
0 > مسجم داز Por (cha* p=bPPer; “p !'\O'; pt+) ‏سس لب | مكلك‎ ‏عم مه ما || ی‎ 8 ‏مامه وسح سالا" 22 مد‎ hie eer | ee

صفحه 432:
مقداردهی یک آرايهةٌ رشته‌ای ‎ery Te ee oy Eo Te)‏ 1 تس ی سم johor* ‏مخ ) اس‎ Okxoraa", "Debd Detarckka", "Bbrobico ‏ا[ مسا‎ ‏نز‎ >> ۲ onves ‏حاتصه‎ Por (iat i = 0:۱ D; i++) 1 << [تإعدههه >> ۳ ,"<< ,<< "را" << ‎"oot‏ je > > {

صفحه 433:
5 5 اكه مه ‎eel er POLLY)‏ ا انك سرفايل <2200> كه به آن «كتابخانة رشتههاى ورد 99 هم مى كويند. 200 ۳ توابعى | ‎fever‏ ‏ا ا ل ل م ‎ene een |‏ ا ا ا ا ل ل نشان مىدهد. اين تابع. طول يى رشتة كاراكترى :اك :302 (يعنى تعداد كاراكترهاى لن رشته) را برمی گر داند.

صفحه 434:
:) ‏رای(‎ et rove ee URC bee ney oI eRe eT ee ۱ ‏قبل از کاراکتر ,06 قرار گرفته‌اند. باز گشت داده می‌شود:‎ <iochide <cstricept (ict ‏كدص‎ ‎;"chor s[] = 0۵۵ 1 want <<" ("<<a <<")="<< (5) << eet sont << "5 (\"\") = << ‏اک(‎ ‎har buPPer [OO] joout << "Boter striac ‏مم ؛"‎ << buPPRer ‏انيور‎ >> " | ("<< buPPer <<") = "<< - 0. (buPPer) << ‏المج‎ ‎{

صفحه 435:
نذا كمد رل ملصعند رل) ملع معط ) 2 ۱ ‏رتیت‎ ‎Ort ots Pa MN OE eta eA Lai ‏لل‎ am) ‎COR a Me‏ ةا ‎eo AD‏ ا ‎Hen <> ae‏ وز ‏>> و -م ک> و ط ط ( ۳ رجا ۲ >> ‎a,‏ ‏ار ی زا ‎CR A ca‏ اا ‎Mall" >> ‏5م جمر ‎Ml td‏ (كاظ"ا ‎ )5,‏ " >> يوم ‎2 ‎ ‎ ‎(s, \"b") ret‏ — اناك ‎OO\a‏

صفحه 436:
°()eropy eG Pe ea eo) er caper om ere eT ne) Stoke <pererowt > عم > وم () 660000860008" - 0 هر < [] هع سداد" ها :( 0د راد )تسود جراد 8" >> نحو" ز (0)مسلوه >> 2۲ ‎bagi‏ ,]" << 4و >> ] < 94" ک> سح << لمودرزر (©م) ماه >> ۲ < سا ,7 >> 6 >> "] د 6" >> فیح ‎jeud >>‏ ieevpy (oe) +( )سب ۳" >> فسه ز pou << "Wel = [" << ol <<", ‏موه >> ۲ = ام‎ )0( 4 << nt << "We = [" << 20 <<"), emt =" << ‏(©م) ام‎ jou >>

صفحه 437:
(pirswopy: 2 ESIC S ne <b See eon rE Hist (et are joka 0-۲۵۵00۵60 ۱ Moke CD = "KYL jot << "BePore ‏ما( صور )موه‎ prt << "\l = [" << sl << "], eats = "<< stteu(s() ied >> wand << "WO =f << 20 << "], bag =" << orbuloS) ‏لور‎ << ‏)رز‎ ,6( pou << "Per sraopi(o(,2O,6):\a mn >> ‏تك وها"‎ ff >> ‏يسما ,|" عه إل‎ - * Hot etl) ‏لور‎ << ‏(حع)مجله >> " - عدا |" >> هو >> "] د هم" >> تجو‎ ‏اسر‎ << 1 1

صفحه 438:
تابخ الصاق رشنه ؛یییی() م ل لل ا (ast Fiat ‏ال‎ C (Ca ۷ ت۱۳ ا اليك ‎aS a Me‏ 0 ‎Bea eed‏ mnt << "Wwe = [" << sO <<"), leah =" << sirleu(s@) ‏از‎ << Peas alae) ۱ ‏ری مس تحت‎ ‏را بت‎ jew >> Ton oo teal Ste a on eR Seca (ce) jen >> 4

صفحه 439:
مه ‎oy‏ ‎yep)‏ رل یر زر 0 ee oye le MTS ME Sey) ‏و البته بخش‎ ‏مهمی از نیز محسوب می‌شوند زیرا وسيلةً مفیدی برای پردازش‎ ‏سریع داده‌ها‎ ‏هستند. اما اين سرعت يردازشء هزينهاى هم دارد: خطر خطاهاى زمان‎ Abed ۱ Coney e- Sipe ‏ا‎ rae] Che S ie me) ‏تكيه مىشود.1١0 رشتدهاى كاراكترى خاصى نيز دارد كه امنتر و‎ ‏مطمئن تر هستند.‎ Oe ‏ا ا ا ا ا ل ا ل‎ ‏ا رك‎ ‏برای مشخص نمودن انتهای رشته اکتفا نمی‌شود.‎

صفحه 440:
نگاهی دقیق‌تر به تبادل داده‌ها وقتی می‌خواهيم داده‌هلیی را وارد کنيم لین دادمها ل ی ‎eed ea‏ ا 1 برنامه بفرستيم این نتایج در قالب محموعه‌ای از کاراکتر ها نملیش داده می‌شوند. لازم است که لین كاراكترها به نحوى براى برنامه تفسير شوند. مثلا ‎ee eer)‏ 2 ل لل ‎Ree TOD‏ كاراكتر عددى تايب مى كنيم

صفحه 441:

صفحه 442:

صفحه 443:
20000000000 ‏ع‎ ra ae i

صفحه 444:
استفاده از عملگر بیرون کشی برای کنترل کردن یک حلقه : هی 0 0 ( while (via >> <1) wot << "a =" <<a << ect i

صفحه 445:
ورودی قالب‌بندی نشده: 200-875 مر رو موز > تولبع مختلفى براى 59959( ‎BS)‏ ‏لين تومبع براى وارد كردن كاراكترها و رشتههاى كاراكترى ‎OTe‏ ۱ ذمى كير ند. رایج‌تیین آن‌هاء نلبع . . برای دربلفت‌یک کاراکتر تکی و تلبع . . .. . برای درتلفت‌سیک رشته کاراکتری است.

صفحه 446:
دریافت گاراگترها با استفاده از قایق بستنم رت 0 طبن [ او | زو - 0 حوع )'7'=< ‎oe‏ 68 0 << م) ثر ‎jout.put()‏ }

صفحه 447:
وارد کردن یک رشنة کاراکتری به وسیلة تابع +ع۵ب() برنامة زیر نشان می‌دهد که چطور می‌توان داده‌های متنی را خط به خط از ورودی خوانده و ‎ES TOL ae Tey‏ post rot LBO=908; UPsescint ua ‏ل‎ ‎fo‏ وب مس ‎۱ ‏بز ‎0 ‏م‎ oir road atic ae Once jet =O ‎she (ct. cpttoe(worrfat+], LED) && «<GOI1LC) ‎ ‎ws ‎Por (tat HRD; ta; ++) ‏جر >> ارا" >> جوز‎ <<". "<< carr] << ech

صفحه 448:
فوع بمنيد در 0+1 استاندارد: در . استاندارد نوع داده‌ای خاصی به نام .۰۰ ۰ وجود دارد که مشخصات این نوع ‎ee 0 ea Se)‏ ا ل ل ‎Pepe pee eee Sa SI Por cP ee eee SSC EO)‏ می‌توانند اعلان و مقداردهی شوند: ‎Hs‏ }5 رسد ‎strip SO = "POO Oaiversiy";‏ ‎5O(OO, ™");‏ ره ‏م | ‎SP = sO;‏ رسد جات تحن / ;)© ‎SO(sC, F,‏ برد ‎

صفحه 449:
استفاده از نوع 2۷ كد زير يك مجموعه كاراكتر رااز ورودى م ىكيرد و سيس بعد از هر كاراكتر "<)"' يك علامت ويركول ',' اضافه مى نمايد. ‎Nis ey eb.)‏ ‎'COETOORE COOCO COM 5 beaaa‏ ‎lee She Us She TSU)‏ Te COETOORE, DOOEC, OC OTs began ‎teed‏ 0 تس یی یز ‎stalks‏ ‎۱ ‎0 ‎1 ‏ال ال سا ‎ete eae ol

صفحه 450:
bbb SA Seder Ce ee) ‏حجیم است. فابل‌ها لین قدرت رلبه رابلنه می‌دهند.‎ ‏دا‎ ad ‏ال اد را‎ ‏نمی کردند.‎ ا ل ل ا ۱ دایند»یک برنامه‌نییس لازم است کمبا فلیل آشنا ‎ere ee an) eee ee ee‏ ‎eh‏ ۳۳ 2 را ۳ ‎odd‏

صفحه 451:
پردازش فایل در بسسیار شسبیه تراکنش‌های پر سس ‎Pe Sa en ego‏ ‎Se ee ee ee TO!‏ 00 ‏ال‎ Soy see ‏تقسيم مى شود.‎ جريان 200 براى خواندن اطلاعات ازيك فليل ا لت اطلاعات درون یک فایل استفاده می‌شود. @®) ) @

صفحه 452:
دای عم که این جرا هه مر مرلو ریت ela ‏ا‎ eee Tir ‏تس‎ Ce Ce et BC nee eer rene) ‏شكل زير تعريف كنيدة‎ Fema ac Ada ‏ا‎ Fee ees Red NCO ane chy طبق کدهای فوق» ‏ عنصری است‌که داده‌ها را از فلیلی به نام ۱ می‌خولند و .۱ .. نیز عنصری است که ما | اکنون می‌توان‌با استفاده از عملگر > > داده‌ها را به درون . .... ی

صفحه 453:
cal th ‏یک‎ ‏ار‎ eee be .ce ee ee Cees) GMS Gab els IS ‏در‎ ۱۱۱۱ ۱ SU 8, ابه ورودي بايد عدد (0 را تايب كند. ‎Ean oe Sonny‏ یه ساس > 0 یه از سب نیت (قج ۳ 0) سر اس ۳ امه ه ۵" >> نج ز

صفحه 454:
اين برنامه؛ فايل تولید شده توسط برنامة قبل را به کار مي‌گیرد ‎Pee Soe 0 sae ah‏ ‎ee SS‏ مه طعاه > ۱۳۵ عم () ‎Folch‏ ییاز ‎pisces‏ ‏مر ‎eee‏ ۳ لصتاديب صدصدام 25 لطم ‎FRC aR Ae‏ ‎ie‏ ‎ea teh‏ رةس طن ‎ra)‏ ‎pee)‏ ‎ee ee)‏ 2 سب > بو ۹ oe ie wot to this phowrbovk." << ead" >>

صفحه 455:
پایان جلسه هشتم

صفحه 456:
508 «شى كرايى»

صفحه 457:
: آنچه در این جلسه می خوانید - اعلان کلاس‌ها - سازنددها - فهرست مقداردهی در سازنده‌ها - توابع دستیابی | - سازندهة کپی )»

صفحه 458:
لد لد - آشیای ثابت ا اعضای داده‌ای ابستتا - توابع عضو ایستا

صفحه 459:
هدف کلی : آشنایی با کلاس‌ها و اصول اولیةً به کار گیری آن‌ها.

صفحه 460:
- تفاوت بين اعضاى «عمومى» و دخصوصىء را شرح داده و نحوة اعلان هر كدام را بيان كنيد. - «تابع سازنده» را شناخته و وظيفةٌ آن را شرح دهید. ...ی ی

صفحه 461:
مقد مه _ رهیافت جدیدی بود که برای پاره ای از مشکلات برنامه نویسی راه حل داشت. این مصمون از دنبای فلسفه به جبان و اك اشیا را می‌توان با توجه به مشخصات ورفتار آنها دسته بندى كرد.

صفحه 462:
eS Caen On pn Be ene SIE 0000 ee ec ye ae ety np ‏گفته می‌شود.‎ مشخصات هر شی را . . . می‌نامند و به رفتارهای هر شی ...۰ . ۳

صفحه 463:
برنامه‌نویسی شی گرا بر سه ستون استوار است: ‎we‏ :يعنىاين ‎Gloosls aS‏ مرتبط. با هم ترکیب شوند و جزییات پیاده‌سازی مخفی شود. OD) Ls ‏س‎ Sls 9 ot ‏معناست که یک شی وقتی متولد می‌شود.‎ ‏خصوصيات و ويزكىهايى را از والد خود به‎ همراه دارد .

صفحه 464:
امتياز وراثت در اين است كهاز كدهاى مشترى استفاده مى شود و علاوه بر اين كه مى توان از كدهاى قبلى استفاده مجدد ‎Ylej 42 03S‏ تت 0 استحكام منطقی برنامه هم ‎ysl‏ ‏مى يابد.

صفحه 465:
‎gi aya‏ سب می‌گویند به معنای یک چیز بودن و چند شكل داشتن است. هندريفتى بيشتر در ‎5005

صفحه 466:
اعلان کلاس‌ها كد زير اعلان يك كلاس را نشان مىدهد. هت رس :لس ) ‎void ussica(tct, iat);‏ ‎viod prici();‏ ۳۳۱ ۱ اعلان كلاس با كلمةً كليدى -دهات شروع مى شودسيس نام كلاس مىايد.

صفحه 467:
اعلان اعضای کلاس درون یک بلوک انجام می‌شود لح رت ‎pe)‏ كلاس يايان يافته است. عبارت ...۰ و عبارت "۰۰.۰ .هر عضوی که ‎eee)‏ عبارت تاجانم اعلان ‎eye)‏ يى «عضو عمومی» محسوب مىشود و هر عضوى كه ذيل عبارت ‎a AN od‏ الل 00ل ‎TS eee‏ ۳ ۳ خصوصی» محسوب مى شود.

صفحه 468:
سازنده‌ها ‎ee eral 4abs‏ است كه حافظة لازم را برای | داده و آن را مقداردهى نمايد و با اجراى وظايفى كه در تابع سازنده منظور شده. شىء ‎SCO Ts pe pee ees‏ 2 ‏هر ‎es‏ لك 99 سازنده داشته ‎pare)‏ در حقیقت تابع سازنده می‌تواند چندشکلی داشته ‎poe by‏

صفحه 469:
1 BITS SCS Om ۰ ‏از يكذ رم‎ مثال ‎٩-۵‏ افزودن چند تابع سازندهٌ دیگر به کلاس ۲؟) هک بط ) ا 0ك ‎cast (PY‏ 00 كا ‎(SRSA) Oscar‏ ا ‎Prete OR aa eae‏ ‎tog Ua‏ ‎POs Ans anh‏ B

صفحه 470:
این نسحه از کلاس توا ر ر سازنده دارد: ار هیع بارامتری ندارد و ضی اعلان ده ( با مقدار پیش‌فرض ۰ و ۱ مقدار می‌کند. ۰ نازنده یک پارامدر ار نع داز 9 ی اعلان ده را طوری مقداردهی می‌کند که حاصل کسر با مقدار آن پارامتر برایر باشد. در رم سازنده نیز همان سازنده متال ۲-۱۶ است.

صفحه 471:
یک کلاس می‌تواند سازنده‌های مختلفی داشته باشد. ساده‌ترین آن‌هاء سازنده‌ای است که هیچ ار زر ۰( << ‎٩‏ ‏578 اگر در یک کلاس. سازندة پیش‌فرض ذكر نشوذء كاميايلر به طور خودكار لَن زا بزاى كلاس مذكور ايجاد م ىكند.

صفحه 472:
فهرست مقدار دهی در ساز نده‌ها سازنده‌ها اغلب به غیر از مقداردهی داده‌های ا ‎penned‏ ‏همین دلیل در )++ یک واحد دستوری 7( تسهیل می‌نماید. این واحد دستوری . . .. مقداردهى ناد دارد.

صفحه 473:
به سومین سازنده در مثال ‎٩-۵‏ دقت کنید. این سازنده ر می‌توانيم با استفاده از ذهرست مقداردهی به شکل زیر قلاصه کنیم: ‎Rutio(ict o, td) > num(n), den(d) { }‏ مثال ‎٩-۶‏ استفاده از فهرست مقداردهی در ‎Ruta polS‏ فسات رت ‎atc‏ OR OL (ODER 2s (OR ل امد كيديا لدان يكنا ‎ca)‏ و واه ‎aa ow ot ‎DAR cast ‎1

صفحه 474:
توابع دستیابی داده‌های عضو یک کلاس معمولا به صورت خصوصی (,<) اعلان می‌شوند تا دستیابی به آن‌ها محدود باشد آها همین اهر باعث می‌شود كه نتوانيه در مواقع لزوه به اين دادهها دسترسى داشته باشيم. براى حل اين مشكل از توابعى باعنوانت 2 استفاده می‌کنيم.

صفحه 475:
تابع دستیابی یک تابع عمومی عضو کلاس است و به همین دلیل اجازة دسترسی به اعضای داده‌ای خصوصى را دارد. با استفاده از توابع دستيابى فقط مى توان اعضاى داده‌ای خصوصی را خواند ولی نمی‌توان آن‌ها را دست‌کاری کرد.

صفحه 476:
مثال 9-8 افزودن توابع دستيابى رصن میات تاج ) ۱ رت } 7ك كال و1 { ‎snverutvr()‏ زر ام سل ۳ در اينجا توابع ‎2202020١ ١85 ١‏ مقدير موجود در دادههاى عضو خصوصى را نشان مى دهند.

صفحه 477:
توايع عضو خصوصى توابع عضو را كاهى مئتوانيم به شکل یک عضو فصوصى كلاس معرفى كنيم. واضع است كه هنين تابعى از دافل برنامةً اصلى به هيج عنوان قابل دستيابى نيست. اين تابع فقط مىتواند توسط ساير توابع عضو كلاس دستيابى شود. به هنين تابعى يى ا ل

صفحه 478:
در بر 1 تابع عضو خصوصی به نام ۳۵۱() است. وظيفة تابع مذكور اين است كه معادل ممیز شناور یک عدد کسری را بر گرداند ( زاج >> ())/ه >> اه 2 زير. كلاس ‎ieas‏ ۳ اين تابع فقط درون بدنة تابع عضو مجحصخج() اس‌تفاده شده و به م انجام وظيفة آن کمک می‌نماید و هيج نقشی در برنامةً اصلی ندارد.

صفحه 479:
2 ‎Se Meteo‏ ا ل ل ا ۱ 3> fot ‏:جاتو‎ ا ا ل الك ل در 2 همهمين كار انجام مى كيرد بااين سارت كه ‎en‏ از اا > مقدار موجود در متغير >ا كه از قبل وجود داشته درون “< ‎٠‏ مىشود. اصطلاحا >< یک . از ااست.

صفحه 480:
Rae vs); ۱ تام از نوع 0057 زر س0 و تمام مشخصات شیب «را درون رل لا اكردر تسر عت كلا سازندة ذ ف ‎ow‏ قبلی) ‎Sy ae pp‏ ‎ee ee ccc os ce‏ لل

صفحه 481:
مثال ‎٩-۱۰‏ افزودن یک سازنده کپی به کلاس ۲9 2127 ار( ۰( ۱۱ ,۲۰۳۱۱ }{ (} Peal ret ‏ی( کف‎ a(x) void prici() { rout << cue << |’ << de [ PAS jit uray, der 1 در مثال بالاه تابع سازنده کی طوری تعریف شده که عنصرهای 7و از پارامتر -«به درون عنصرهای متناطر در شی ‏ جدبد کبی شوند.

صفحه 482:
سازندة کیی در سه وضعیت فرا خوانده می‌شود: ۱ - وقتی که یک شی هنگام اعلان از روی شیء دیگر تیر. 07 ا ۱ 0 ‎٠"‏ - وقتى که یک شی به وسبله .. ار از یک تبع بر داده شود .

صفحه 483:

صفحه 484:
مثال ‎٩-۱۲‏ اقزودن یک نابودکننده به کلاس 7ك کم ۲ ‎ne { aut << “OBIECT 16 CORD.\‏ ‎Ss‏ ‎~Ruato() { at << "OOIECT O1EG \s"; }‏ ‎Faas at‏ 7 ان[ },

صفحه 485:
اشياى ثابت اشيا را نيز مى توان با استفاده از عبارت 24 به صورت یک شىء ثابت اعلان کرد: :(۱)99,۲<) ۵۳؟) اوه ‎ne oF‏ ۱۹۹۱۹۹۱/۱5 دك كاي الل ‎PS (Zac‏

صفحه 486:
baal ay ‏اشاره‌گر‎ داشته ‎ral‏ از رتم یسک کلاس می‌تواند اشیای داده‌ای متنوع و متفاوتتی داشته باشد.ء اشاره كر به اشيا بسيار سودمند و مقید است. رد به__برای ساختن فهرست‌های پیوندی و درخت‌های داده‌ای ببسه کار ‎oye)‏

صفحه 487:
0 <0 Go eto cM Dente cet en toicn Ceca nella ‏ا‎ aetna! ‏مل<-م‎ < ه وس دح ۳ ‌ 2 (۵

صفحه 488:
در این مثال. . اشاره گری به شی-ء « است. پس ‎ae‏ را عضنو آن شى را دستيابى م ىكند. حتماباید هنگام استفاده از . آن را درون ‎ee.‏ ۳ تقدم بالاتری نسبت به عملگر مقداریابی () دارد. اکر برانتزها قید نشوند و فقط .. . , نوشته 2 ۱ ۲ ‎er ioe CISC IEC pe ape‏ ۱

صفحه 489:
مثال بعدى اهميت بيشترى دارد و كاربرد اشارهكر به اشيا را بهتر هر مثال ‎٩-۱۴‏ فهرست‌های پیوندی با استفاده از کلاس «() ار ماک مر تانج 1 ‎tata(d),‏ م 410000 1( ‎ee‏ رز درک 9( ‎i‏

صفحه 490:
عبارت بالا ‎LO arn epee ce‏ رت که اشیای این کلاس دارای دو عضو داده‌ای ا 0 ‎ey‏ 0 كار واقعا ممكن است و باعث می‌شود بتوانیم بيك شى رابا استفاده از همين اشارهكر به شىء ديكر ييوند دهيم و يك زنجيره بسازيم. eye =

صفحه 491:
اکر اشیای و و از نوع ۵( باشند. می‌توانیم پیوند این سه شی رابه صورت زير مجسم کنیم: ۲ 1

صفحه 492:
به تابع سازنده نيز دقت كنيد كه جطور هر دو عضو داده‌ای شی-- جديد را مقداردهى مى كند. 0-0 ‎De ihe‏ 1 ‎Ovde* 5‏ ‎Ovde* =O;‏ ‎while (via >> 1)‏ )9 ,)عله () سصه ‎p=‏ { 7 ‎i‏ ‏(لجه<دم ا ا لم ۳ يي ‎PS a‏ :۲ > > انس

صفحه 493:
شکل زیر روند اجرای برنامه را نشان می‌دهد. الف - قبل از شروع حلقه و ب - پس از اولین تکرار ale wm ‏رن كر‎ 3! ED

صفحه 494:
اعضاى دادهاى استا هر وقت که شیثی از روی یک کلاس ساخته می‌شود. آتن ‎EEC BI coed‏ ا ‎Oey er‏ رادارد. كاهى لازم است كه مقدار يك عضو دادهاى در همة اشيا يكسان باشد. اكر اين عضو مفروض در همة اشيا تكرار شود. هم از كارايى برنامه مى كاهد و هم حافظه را ‎tC peers)‏ ا 2 ل 0 0 2111011111111

صفحه 495:
عضو ایستا عضوی است که فقط یک نمونه از آتن ایجاد می‌شود و همه اشیا از همان ل ل ل ا اك ‎le Leora kel per Teel er ee oer cd‏ ااا ‎Be‏ ‏باید به طور مستقیم و مستقل از اشیا مقداردهی نمود. کد زیر نحوة اعلان و مقداردهی. یک عضو داده‌ای ایستا را بیان می‌کند: اماك :عاطم ) Sd ee ER ۷ | * جر دح © ©

صفحه 496:
و مرت رک ویک سار مر ‎pasate‏ سس ‎

صفحه 497:
۹ ‎Ore ens)‏ ل ا سيا 0 يي ان ( 0 ا ل ل ‎OS es‏ Ck Le Re MS TS a 1 CC aR Ie RT ‏مت‎ ‎CST aR ‏ا‎ SEL ‏تس‎ ار

صفحه 498:
ل ل ا ل ا ا ل بلوى خارج مى شودء اين اشيا نابود مى شوند و لذا تعداد ‏ ‎Id‏ ع به ‎١‏ تقليل مى يابد. ل 0 2 'تعداد شى از آسن كلاس موجود باشد. از آنجا كه عضو متا عضو ‎ae fei‏

صفحه 499:
9 اس هت 1 2 (6 ۳

صفحه 500:
ل ا لان آل ااا ۱ ‎aes‏ 19۹ ا ار ‎inne ire me eo‏ سر 1 ‏ا تي‎ Sree Oe hE, 5-0 | @ ۵

صفحه 501:
9 pean ‏ايستاى احج به شكل يى عضو خصوصى اعلان شده وو به‎ ‏همين دليل به تابع دستيابى حاص ل:(1)صى() نياز داريم تا‎ ‏م ا ال اا ا ل ل‎ ‏و‎ ۳ | re ‏باشيم.‎ مقابل تصور کنیم:

صفحه 502:
AS al peel or a بادقت در مثال قبلى به دو ايراد بر مىخوريم: اول اين كه كرجه ‎hour] pe ree Ot pre‏ ال ۱ ‎Tee ee LL ree an)‏ ۱ ار ‎cece at oe tere pees‏ ۱ الان موجود است فراخوانى شود.

صفحه 503:
* مثال ‎٩-۱۷‏ یک تابع عضو ایستا. ‎ie et dele Ena coe ee eee ey‏ اي للك تسه ا

صفحه 504:
زاس ‎OC Aas‏ ل اا ‎sO aes‏ ‎FO ‏ل ل‎ MLA ۲ ِ ‏ا ا‎ 286 ‏1 ‏۱ ‏وت ‎CeO SL ‎2 ( ۵

صفحه 505:
ام رس مر مهم ‎Teenie tel‏ ۹ ‎Dice eee ee ETO iO eed‏ فراخوانى كرد.. 2 ( ۵

صفحه 506:
بایان حلسه نهم

صفحه 507:
جلسه دهم ‎Ben‏ ل

صفحه 508:
آنچه در این جلسه می خوانید "- توابع دوست - سربار گذاری عملگر جایگزینی (-) ۰ اشاره‌گر سا - سربار گذاری عملگرهای حسابی ‎edit aC oc RCD) Dorie‏ - سربار گذاری عملگرهای رابطه‌ای - سربار گذاری عملگرهای افزایشی و کاهشی

صفحه 509:
هدف کلی: بیان اهمپت سربار گذاری عملگرها برای یک کلاس و نحوة انجام این کار.

صفحه 510:
رسد دا - «سربا ركذارى» را تعريف كرده و اهميت آن را شرح دهيد. ري ‎ae‏ لس لت ‎ene‏ سا ل نماييد. ا 1 - نحوة سربار گذاری عملگرهای حسابی را بیان کنید. ۱ LE oka Se ye

صفحه 511:
:مقدمه در 0۵++ مجموعه‌ای از ر.ر - 7 مختلف وجود دارد که برای کارهای سس رز در رد چادی ( زر سور مت سارکاری دار هنگامی که کلاسی را تعریف می‌کنیم. در حقبقت یک نوع جدید را به ‎pesroms ocou ene uC e mB ve renal‏ ۱ محاسبات ریاضی به کار بیریم. آسا چون عملکرهای رباصی (-ر .- - ,. چبری راجم به اشیای کلاس جدید نمی‌دانند. نمی‌توانند به درستی کار کنند. 0++ براى رفع اين مشکل جاره اندیشیده و امکان سربا رگذاری عملکره) را تدارک دیده از ود 9 وا ار نار جدیدی اضافه کنیم تا بتوانند با اشبای کلاس مورد نظر به درستی کار كت

صفحه 512:
5 انم سپس لض به کد زیر نگاه کنید: ‎a‏ 7 30 ‎Bi ١‏ استایر از كلاس ده به سل ترس ‎Merrie)‏ ‎Pa rang) Care POS es Oe eye oy‏ دستبایی‌اند و از بیرون كلاس (درون ‎gel a‏ امکان دستر سی به آن‌ها 0111100( اما يى استتنا وجود ادارد 2 قی اسر که عضو یک کلاس تیمت اما ساره شاد > مگ خصوصی آن دسترسي داشگ تشه زرم درو ‎ass |‏ >>( >> از 1

صفحه 513:
۲-سربار گذاری عملگر جایکزینی(ع): ار ا ا شاید بيشترين كاريرد را داشته باشد. اهرت ليان عسلكرء كبى كردن بيك شى ادر شي يكار رازن سازنده ‎uP ee‏ سازنده کیی )| ‎PIES OU‏ 00 ينى نيز به طور خودكار براى يك كلاس ايجاد ‎sacs‏ له یت رت رس تس صریح درون كلاس اعلان تعابیم.

صفحه 514:
0 Ee Pearce St) ata Baijbe Jol 4S cul lye GollS bul) Sa aj 0 ‏پیش فرض, سازندة کپی و عملگر جایگزینی می‌باشد:‎ dese (ip ۱ (۱ ‏لك در‎ 13۳) ۳۵ ‏رت ی ام مار ما را‎ asics ۳

صفحه 515:
VE ‏ا‎ ‎0 oer =ppercior — ees ‏ین‎ ‎(0 eco | ‏یک‎ eed ‏ار سازندة کپی می‌باشد‎ ‏تلبت‎ 0 pe mer ‏دارد كه از نوع همان کلاس‎ Boe eel Tee Sle en aay ve eed ۳ (Ss ppersior= (cout Retir& r) { UW = 1.7, NA in ac }

صفحه 516:
۲-اشاره‌کر :-ذا ا ار ‎Rye Nea‏ زیر به کار ببریم: :0.0064 < و < رر عر اجراى كد بالا از راست به جب صورت مى كيرد. ‎ee‏ 7 5 ا 00 سيس مقدار ‏ درون كيى مىشود و سرانجام مقدار لا درون "2 قرار داده مىشود. عملكر جايكزينى كه در مثال قبل ذكر شد. نمى تواند به ‎ed‏ ل ۱

صفحه 517:
مثال ۱۰-۲ سربارگذاری عملگر جایگزینی به شکل صحیح: مات تا اه Ruto(tct =O, tet =); ۱/۳ 2 ‏اس مس امس دا‎ ۱۸ a a Rute& vperder=(coet Rutv&); // westqawedt vpercior ۱ ‏رت و‎ 4 رم FRO al / وم مت ور 71 Mee RON ‏ات‎ ( ‏مسب‎ مط - مطل ‎Haag‏

صفحه 518:
توجه داشته باشید که عمل جایگزینی با عمل مقداردهى تفاوت دارد. هر جند هر دواز عملكر يكسانى استفاده مى كنند. مثلا در كد زير: ‎Ratio x(22,7); // this is an initialization‏ ‎Ratio y(x); // this is an initialization‏ ‎a // this is an initialization‏ < 2 ۸3110 ‎Ratio w;‏ ‎this is an assignment‏ // إلا ‎7g 222‏ ارم می‌فواند ولی دسلوز .. ‎PAS A‏ (افرافوانى مىكند.

صفحه 519:
ارجا یگزلو وه ملگر ها یعسابی #۶ ‎Oe ee eae Me eee cee) Td‏ ا ‎EOD ct Rend eC)‏ همه انواع بنيادى به كار كرفته م شوند. قصد داريم سربارى را به اين عملكرها ‎on 0‏ تا بتوانيم با استفاده از آنّهاء اشياى ساخت خودمان را در محاسبات رياضى به كار ببريم. عملكرهاى حسابى به دو عملوند نیاز دارند. مثلا عملگر ضرب :.) در رابطة زير: Cee 72-۳ بر ‎ea‏ رت ‏بازكشتى از نوع همان كلاس داشته باشد. يس انتظار داريم قالب سرباركذارى عملكر ضرب براى كلاس .به شكل زير باشد: ‏(بر () مد )سم 25 ‎RR ase ee Sic econ tects ‎jretwraz ‎1

صفحه 520:
۱ en COC era 2) CO AE orey Series FDIC pine cme nes (Ree ip rar ‏تابع سرباركذارى عملكر ضرب را بايد به عنوان تابع‎ ‏سربار گذاری عملگر ضرب درون کلاس مفروض آبه‎ رس ‎a Roce T operator*(const T&, const‏ ‎public members‏ ری یت 80۳۷۵ // = 5 ‎>» )

صفحه 521:
3 سربار گذاری عملگرهای حسابی +و-و/نيزاز ) قالبهاى كلى فوق استفاده مىكنيم با اين تفاوت كه در نام تابع سربار گذاری, به جاى علامت ضرب « باید علامت عملگر مربوطه را قرار دهیم و دستورات = Fle ‏اا‎ / required operations for z

صفحه 522:
مثال ۱۰-۳ سربار گذاری عملگر ضرب برای کلاس :۲7 ‎Dah od‏ Aen eee a) tbe (0 ده ,© - م)مدمر ۳ 9 eer) ver deckaraices yo here | / رسد ‎deo‏ ره از ‏/ | اي ساب ‎pher‏ ‎71 ‎eens er ea ۱ mT ‏فوصت ‎0 ‎| ‎eroded‏ و مج | تس ‎ei)‏ ی ‏اس موم موی || رود ‏ات ‏1

صفحه 523:
۵-سربارگذاری عملگرهای جایگزینی حسابی: ‎ee ele ec Ne Re eed ela Se ECO Cs dedi}‏ ‎Ree OD a ee eee oe Se eae ace‏ مم ا ا 1۱9 ‎css‏ ا ا 7000 سربار گذاری عملگرهای جایگزینی حسابی بر خلاف عملگرهای حسابی. می‌تواند عضو ‎StS) Sa‏ ا ل ‎OE ere lone‏ ‎NC eS CMS CD) Sone Mee Me nents Behe See‏ 30000 ا 00 ۲ ( سس Aeon cali (acc 9) el AC aCe ah 32222 31

صفحه 524:
بدنة تابع سربار گذاری به قالب زیر است: ‎DP ippersior*= (crust ۳4 x)‏ ۳ ‎returct *his;‏ } ااستادر از (داررتر راد رن شرد که پسراز ‎yet 2b‏ در يك رابطة زنجيرهاى به كار ببريم. در ‎٠‏ جهار عملكر جایگزینی حسابی .. و .و .و . وجود دارد. قللب کلی برای سربار کذاری همه این عملکرها به شکل قالب بالا است فقط در نام تابع به جای .. باید علامت عملگر مربوطه را ذکر کرد و دستورات بدنة تابع را نيز به تناسبء تغيير داد. مثال بعدى نشان مىدهد كه عملكر حكونه براى كلاس 242 سرباركذارى 00

صفحه 525:
مثال ۱۰-۴ کلاس عه؟) با عملگر ۴*- سربار گذاری شده:

صفحه 526:
۶-سربارگذاری عملگرهای رابطه‌ای؛ شش عملگر رابطه‌ای در . .. وجود دارد که عبارتند از: < 9 ‎ae‏ نو ‎by)‏ >= )= ‎pCeee age |‏ را حسابى: يعنى به شكل 0 5-0 سربار گذاری می‌شوند. اما نوع باز گشتی‌شان فرق می‌کند.

صفحه 527:
حاصل عبارتی که شامل عملگر رابطه‌ای باشد. همواره یک مقدار بولین است. یعنی اگر آن عبارت درست باشد. حاصل ‎2٠‏ است واكر آن عبارت ا ل 50118156 جون نوع بولين در حقيقت یک نوع عددى صحيح است. می‌توان به جای - م مقدار ۱ و به جای رت رد بازکشتی را برای توابع سربارکذاری عملکرهای رابطه‌ای. از نوع ۰ ۱ فرار داده‌اند.

صفحه 528:
قالب كلى براى سربا ركذارى عملكر رابطهاى ... به شكل زير است: ‎class ‘TY‏ ‎operctor==(cocst T&, oocst T&). }‏ ادا ‎Priead‏ ‏رد 2 اد مارم رز {

صفحه 529:
همچنین قالب کلی تعریف بدنةٌ این تابع به صورت زیر می‌باشد: int operator==(const T& x,const T& y) RSMO Ree KC ole eeh akon Result Aas ieee ie كه به جاى لأدحك: يك مقدار بولين يا يك عدد صحيح قرار) مى كيرد. ساير عملكرهاى رابطداى نيز از قالب بالا ييروى مى كنند.

صفحه 530:
ات تا COONS US sll y | ‏نک بای ۶س صورت تم وی هت سا ی‎ ‏انس پم دا‎ ame AC et Oe ence trad معادل بررسى ‎Satna Gly 4S Cul‏ 1 اين تسا ‎١ ١‏ ی ی ل ل مار 200000 ‎v)‏ ») را بررسی کنیم. بدنةه ‎Eee ee ee)‏ تلبع سربار گذاری در مثال ‎eed‏ ‏ل : ۱ ‏ليم‎ RON BD) ‏يي يي ل‎ {

صفحه 531:
۷-سربار گذاری عملگرهای افزایشی و کاهشی: عملگر افزایشی ++ و کاهشی -- هر کدام دو شکل دارند: | شكل ييشوندى. " شکل پسوندی. هر کدام از این حالت‌ها را می‌توان سربار گذاری ‎3S‏

صفحه 532:
قالب کلی برای سربارگذاری عملگر پیش‌فزایشی به شکل زیر است: (4+ Titpperaior required pperciogs // } jretura “this f { | زر نت ۱۳۶ استفاده شده. علت هم این است که مشخص نیست چه چیزی باید باز گشت داده شود. به همین دلیل اشاره‌گر به كار رفته تا شيئى كه عمل يبشافزايش روى ان صورت كرفته. بازكشت داده شود.

صفحه 533:
۳۹1 . بيك شى از كلاس ‎Rati‏ - و عبارت . ارزیابی كرددء مقدار به افزوده مىشود اما جون يك عدد ‎em re‏ ا 0 ا ا - باشد. حالا داریم: 22 22+7 29

صفحه 534:
ا الا 1 ‎rr carere eee‏ ا ا 000 اشاره‌گر . به شی جاری (مالک فراخوانی) اشاره دارد. کافی است مقدار این اشاره‌گر ا 7 1 ا ا ال ل ال ‎ye Te Pee Dee bole an Cae)‏ 2 aed pete ee oro a 00 ie Tal) ‏كيدي‎ oD) Com ee ORME Ta Uae ae CAS ‏ی‎ aL ۱ << '/' << dec $< pot } ‏از‎ at ا 11

صفحه 535:
‎See‏ ا ان نیز به همين شيوةٌ عملكرهاى يبشافزايشى و پب 0 اينهاء عملكرهاى ديكرى نيز مثل عملكر خروجى (<<). عملكر ورودى )<<( ‎reer‏ ا لت ‎yee a errr‏ دارند که می‌توان آن‌ها را برای ساز گاری برای کلاس‌های جدید سربار گذاری کرد.

صفحه 536:
پابان جلسه دهم

صفحه 537:
Prey ape es «تر کیب و ورائت»

صفحه 538:
«قرکیب و ورائت» مقدمه رس ورائت اعضاى حفاظت شد غلبه كردن بر ورائت ۱ توابع مجازی و چندریختی رز

صفحه 539:
کلاس‌های پاية انتزاعی ۱ پرسش‌های تشریحی ۱ ال :پاسخ‌نامة پرسش‌های گزینه‌ای ‎ee ae ee‏ 22 :كلمات كليدى 2 استاندارد :عملكرهاىب استندارد ‎Fre eee et eae‏ ومأخذ

صفحه 540:
هدف کلی: بیان اهمیت ترکیب و وراشت در شی گرایی و چگونگی انجام اين کارها. هدف‌های رفتاری انتظار می‌رود پس از پایان این خلسه بتوآناد: - علت استفاده از «ترکیب» و «ورائت ت» را در برنامه‌های شی گرا ی - نحوةٌ تركيب دو يا جند كلاس را براى ايجاد كلاس جديد, بدانید. وراتت را تكر لف كد

صفحه 541:

صفحه 542:
3 مق مد ات که همه چیز از اول طراحی شود. می‌توانیم برای ایجاد کلاس مورد نظر. از تعاریف کلاس-هایی که قبلا ساختهايم: استفاده نماييم. ‎eu‏ باعث صرفهجويى در وقت و استحکام منطق برنامه سس ‏در شى كرايى به دو شیوه می‌توان این کار را انجام داد: ‎ . .‏ .در این جلسه خواهیم دید که چگونه و چه مواقعی می‌توانیم از اين دو شيوه بهره ‎ore yee)‏

صفحه 543:
"ركيب تركيب كلاسسها (يا تجميع كلاس.ها) يعنى استفاده از يى يا جند كلاس ديكر در داخل تعريف يك كلاس جديد. هنكامى كه عضو دادداى كلاس جديد. شيئى از كلاس ديكر باشدء مىكويبم كه اين كلاس جديد ترصبی از سایر کلاس‌هاست. به تعریف دو کلاس زیر نگاه کنید.

صفحه 544:
Date pS کد زیر. کلاس ۱(:::7) را نشان می‌دهد که اشیای این کلاس برای نگهداری تاریخ استفاده و vhs Dot ای ۱۹ tot =O, rt PEO) ‏لت‎ eC) (ك م رك اه ,نر ‎Fee ee One‏ cas ail Ove hee Oke { jota >> pear >> covets >> day } Oye ORS He a a a Se priv jit pear, wots, day i

صفحه 545:
Bovk pW Beare caer ek Cae ‏م‎ ‎00 0 ‏اا‎ ae oy chiss (ook publ | :@vvk(cha* a =", tot i = ©, ‏تمه‎ DO) ) [ cerve(s), (i), poe(r) void privKDeawe() { aut << uae; } vod pricfld() { ‏:لك >> نحد‎ void privtPage() { mt $< poe; } pride ‎author‏ وه مسر ‏عدم رل از ‎1 ‎1

صفحه 546:
‎wold dog‏ كلاس حامم8) ‏0 سای ‎Drs‏ ار ‎gable ‎:@vok(chat a=", ti = O, ety =O) ‏ل ار نا‎ ‎aE‏ اي ا لل ا ‏( لاک )9 لس هت هس لت ‎ete Ola ۰, ‏اد‎ ( ‎wv, d) }‏ ,بوه )سد طاطم : ) ‎Pee er eats aero ara ‏رو‎ ‏سس سم ‏ععمم بلك لماز ‎cates ‎1

صفحه 547:
ورائت : 0 Tae Ty Toe Ir oles ‏روى كلاس قبلى است. ۳3 نه ورانت‎ ‏ا ا ا‎ ened ‏آشنايى مختصر داشته باشيد, احتمالا عبارت‎ یی << _ ااوراوان دیده‌اید. این موضوع ‎Rover RTC‏ 1۱

صفحه 548:
اعضای حفاظت شده: للا ا م ل خصوصی کلاس والدش دسترسی داشته باشد. اما با استفاده از ی اعضاى خصوصى 1 كلاس دستيابى كند. اين محدوديت بز ركى كلاس فرزند را براورده نسازندء كلاس فرزند ناكارا مد مىشود. اوضاع زمانی وخیم‌تر می‌شود که هیچ تابع عمومی برای دسترسی ا ا ل ا لت ل

صفحه 549:
غلبه كردن بر وراثت : اگر زیر کلاسی از باشد. آنگاه اشیای همه اعضای عمومی و 7 ۱۳ siete ISTEP) Oe CaN) Pc ‏رابه ارث می‌برند. به تابع .... ... یکد«عضو موروثی»‎ 200 ‏باشيم.‎ يعنى كلاس فرزند. عضوى هم نام با عضو موروثى داشته باشد كه مخصوص به خودش باشد و ارثى نباشد. براى مثال فرض كنيد كلاس .2 يك عضو عمومى به نام داشته باشد و كلاس زير كلاس باشد.

صفحه 550:
پا حال اگر یک عضو به همان نام ا كك 1 ۳ به این عضو جدید. «عضو غالب» می‌گوییم. بنابراین اگر )یک شی از کلاس : باشد. ۲۱.7 به عضو « غالب اشاره دارد نه به 7 موروثى. on ee aera Tete eee] Sa ca Xp @) ( ©

صفحه 551:
هم مى توان اعضاى دادهاى موروثى را مغلوب كرد و هم اعضاى تابعی موروثی ۳ یعنی اگر کلاس دارای یک عضو تابعی عمومی به نام “() باشد و در زیرکلاس نیز تابع ۴ را به ‎Pa] Fae Pica POC Cod POC SD Co Ora Cos‏ اشاره دارد و ۱.2::۴/() به تابع موروثی اشاره دارد. در برخی از مراجع به توابع غالب . . می‌گویند 0 ا 000 ا ‎Carrer ene. eae‏ می‌بریم. به مثال زیر نگاه کنید.

صفحه 552:
اعضای داده‌ای و تابعی الب : ۲ حون ‎public }‏ زب :اس( >> مج { ‎vord P()‏ امار ۴ class ‘7: public X aprile } void P() {out << "Dow ۲: ‏ز مامح ع‎ [ Oihie P() overrides CP // ‏از‎ ۲ ‏ول نع‎ ۸ 21

صفحه 553:
سازنده‌ها و نابودکننده‌های والد: EEO BQ) hae Se ‏ل‎ ‎3 )ا عاطم : لا عدات ات >> مج ) ۷ 0 ا 3 0 ایو المج ممصي رو 11" 22 ار ا ا : Ort ‏و‎ ( (6)« راز 0

صفحه 554:
اشاره‌گرها در ورائت : ره‌کرها در ورانت ؛ در ‎wren ree ev PETES Wen creer ean pte‏ اشارهكرى از نوع كلاس FCS RCH PUN IEE D1 ks ‏ا ا‎ hire) rea py ‏ل‎ کنید: کت bh لت / 0 IVS? ts 0 subchiss oP X publics ال / 1 تسس ۱۱ »ا وصمات عصمجا خام جامجزحاه صا عجامم د كا 7 // 0-7 م ۲ < ‏موم || زب‎ dy ‏با نونمم‎ objets oP subckiss 4 f

صفحه 555:
اشاره‌گری از کلاس والد به شیئی از کلاس فرزند؛ ا ا ا د ‎Spey Caneel sy Sipe‏ دارای یک عضو تابعی به نام هستند و 7 اشاره‌گری از نوع 06 ا تست 0 Teno Rene ‏لل‎ ot ine 7 ا عاج 0 eNO ere) ۱ لت نگ 94 0 ‎toutes XP() bern p beer type X‏ ]1 زج ‏ببة - مز ‎ean OF I tewobves XP () beware p Kos ype X ‎1

صفحه 556:
توابع مجازی و چندر یختی : تابع مجازى ۱ مشخص می‌شود. وقتی یک تابع به شکل مجازی ‎PAUSE Ce CNN cep epe rere eae ea]‏ فرزند نيز تابعى با همين نام وجود دارد. توايع مجازى امكان مىدهند كه هنكام استفاده از ا ‎et Dae eR ee‏ ا ‎eC ee eo‏ مثال زیر > ‎ESTES‏

صفحه 557:
استفاده از توابع مجازی: vhs X publics] — Ofrtual Pucwtion } ete eels t) tee Cra ements ce eH 520 رم ما۱ ‎pan‏ ‏۱ Re: 4 9۹ سس | )حم ا ‎S/F‏ سم | ۱ ‎i‏

صفحه 558:
چندریختی از طریق توابع مجازی : سه کلاس زیر را در نظر بگیرید. بدون استفاده از توابع‌مجازی, برنامه آن طور كه مورد انتظار است كار نم ىكند: ای لع اف ۳ پم ال ا لطر ‎ea 7‏ << |" 2 0 ۲

صفحه 559:
"نابود‌کنندة مجازی با توجه به تعريف توابع مجازىء به نظر مىرسد كه نمى توان توايع سازنده و نابود كننده را به شكل مجازى تعريف نمود زيرا سازنددها و نابود گرها ‎Mts eo) aE)‏ ل ا ا 01 ‎SCRE eas |e an Coro Fe Ppa DU Tey‏ 0 دیگری دارند. مثال بعدی ایراد مهلکی را نشان می‌دهد که با مجازی کردن نابود كر. برطرف مى شود.

صفحه 560:
حافظة گم شده : به برنامة زیر دقت کنید: ان صاطج 5 .0»” >> نحم ز[]م سح - م ) 0د -( "م () اد" >> فحد زم [] حاط ) (260 ل ا ل ا ا مسق 0 prints “مر مسر Por (tot =O; <0; ++) } are Naa از

صفحه 561:
کار ‎MESON EN Ope) Cae A seas res Pe CROW OM oes EIB‏ 19 ‎Pe pee een Nero oar Tey‏ BOOK

صفحه 562:
پایان جلسه باز دهم

جهت مطالعه ادامه متن، فایل را دریافت نمایید.
80,000 تومان