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

برنامه سازی پيشرفته ++C

صفحه 1:

صفحه 2:
دانشگاه RE cy ‏اطلاعات‎

صفحه 3:

صفحه 4:
:مقدمه ‎obj‏ 2 یک زبان همه منظوره است. دستورالعملهاى اين زيان بسيار شبيه عبارات جبرى و نحو آن شبيه جملات انگلیسی می باشد. این امر سبب مىشود كه 0 يك زبان سطح بالا ل ‎Pre rl pei‏ در آن آسان eae oe |

صفحه 5:
1 ‏ا‎ fad 4S ‏را بهارث برده است. اما برترى فنى‎ )0 ‏دیگری هم دارد: 2 اكنون دشىكراء‎ ‏است. می‌توان با استفاده از این خاصیت.‎ ‏برنامهدهاى شى كرا توليد نمود. برنامههاى‎ 7 ‏كردناندء به سهولت تغيير و بهبود مى يابند‎ و قابليت اطمينان و يايدارى بيشترى دارند.

صفحه 6:
: اهم مطالب این کتاب جلسه اول: «مقدمات بر نامه نویسی با لبب» ۳ «انواع اصلی» «جلسه سوم: «انتخاب جلسه چهارم: «تکرارب» «جلسه پنجم: «توابع جلسه ششم : « آرایه‌ها»

صفحه 7:
«رجلسه هفتم: «اشاره‌گرها و ارجاع‌ها ‎ORCC a eee‏ 001 جلسه نهم: «شبی‌گرايي» ‎eS)y‏ ا ‏جلسه يازدهم: «تركيب و وراثت» ‎ ‎ ‎

صفحه 8:
(۷ مقدمات بر نامه‌نویسی با ‎+C‏ ‎ne‏

صفحه 9:
آنچه در این جلسه می خوانید ند ۲- تاریخچهةه )+ 00007 ۴- شروع 009 ۵- عملگر خروجی ع۶- لیترال‌ها و کاراکترها /ا- متغيرها و تعريف آنها ‎PAP Eee Rr‏ 0 53 ٠-عملكر‏ ورودى

صفحه 10:
هدف كلى: آشنایی با تاریخچه و مزایای زبان برنامه‌نویسی (++و ا ا اا يت ‎Oy‏

صفحه 11:
:هدفهاى رفتارى 0 مىرود 2000 يايان این حلسه بتوانید: - مزاياى زبان ()2++ رابر زبانهاى مشابه ذكر كرده و تفاوت آن را با زبان ) بیان کنید. PPE ET OST Se MEY Se oe ae Ee ‏رابيان كرده و مشكلات هر دوره را به اختصار شرح‎ ‏دهید.‎ 1 SMB ENP eI as bee - اصول سه‌گانهةً شی‌گرایی را نام برده و هر یک را به اختصار شرح دهد. >

صفحه 12:
000 Lege enn] Peay arene ned De OTe) pte Cena Ce ‏م‎ SER Tepe Tey PEL e Tew Ee 0 SUC NT TY Sy eas eae ‏برنامه‌ها استفاده کنید.‎ - نحوهّ اعلان متغیرها و شیوهٌ مقداردهی به آن‌ها را بدانید. - سه موجودیت د«لیترال» «کاراکتر» و «عدد» را شناخته و فرق بین آنها را شرح دهید. - علت و شيوههاى افزودن توضيح به كد برنامه را شرح دهيد. - علت و شيوةٌ معرفى ثابتها در برنامه را شرح دهيد.

صفحه 13:
مقدمه در دهه ‎١917١‏ در آزمايشكاهدهاى بل زبانى به نام © ايجاد شد. انحصار اين زبان در اختيار شركت بل بود تااين كه در ا 2-0 ‎Ree‏ ‏زبان منتشر شد و به سرعت نظر برنامه‌نویسان حرفه‌ای را ‎Ey aed‏ هنگامی که بحث شی گرایی و مزایای آّن در جهان نرم‌افزار رونق يافت. زبان 0 كه قابليت شى كرايى نداشت ناقص به نظر مىرسيد تا اين كه در اوايل دهة ‎١9/8٠١‏ دوباره شركت ‎as Cl at ata eds) Ce Renn INE)‏ ل 0 0 ل طراحی نمود

صفحه 14:
‎OTe SEB pacman ioe]‏ ی شیگ رلیی‌ن یز دلشتاز آتززمانبه بعد شر کهای ‎Fon aye pelle eer yan pn yh Te‏ وجود بیاید و از قابلب تس از گاربیو لنتقال] نک استه ‎2 ‏شود. ‏به همين دليل در سال ۱۹۹۸ زبان ()++ توسط موسسة ‎ene eeo] Relet‏ ل ل 0 0 يك يارجه درآمد.

صفحه 15:
1-جرا 0 ++؟ ‎Obj SO obj”‏ رت <در این زبان عملگرهایی تعبیه شده که برنامه‌نویسی سطح يايين و به زبان ماشين را نيز امكانيذير مىسازد ا را( اين زبان بسيار كوتاه است

صفحه 16:
< -زبان ) براي اجراي بسياري از دستوراتش از توابع کتابخانه‌اي استفاده مي‌کند و بیشتر خصوصیات وابسته به سخت‌افزار را به اين ۳ Se برنامة مقصدي که توسط كامپايار هاي ) ساخته مي‌شود بسیار فشردهتر و كمحجمتر از برنامههاي مشابه در ساير زبانها است. ۱ 0 0 ‏ل ا ا‎ Ole ‏بردم لست‎ < و سرانجام آخرین دلیل استفاده از ()++ ورود به دنياي #0 است.

صفحه 17:
"- قار يخجة 10+ در دهه ۱۹۷۰ در آزمایشگاه‌های بل زبانی به نام © ايجاد ‎es ewe noe) weve eae)‏ ا ‎Pe Oye) ey‏ ا 0۱۰۱ ‎Pere‏ ‎SRE AB‏ ا ‎ae eee‏ تا ا ا ا ‎Been RCS Ce eno fe Roe‏ ‎ee Tee eee ROMKS) Sm nC ST SBS.) Dee) d‏ نداشت ناقص به نظر می‌رسید تا این که در اوایل دهة ۱۹۸۰ دوباره شر کت بل دست به کار شد و ©18[3112 ۱

صفحه 18:
ب+ ترکیبیاز دو نبان ۵ و ان بود و قابلیهای شجريئنيز دلشطز تنزمانبه بعد شركهائزيادى كاميايلرهايىبرلى 0 ++ طرلحمىكرهند ليزلمر سبب شد ت-فامهایی یب ا دن بيايد و از قابليحتسانكابىو لنتقلل]-نكاسته شود. به هميرجليزدر سلل99! نبان0)++ توسط موسسةً لستانداردهاىملى]مريكا (00081©) به ش كإ[يستاندارد ويتمابيه درآمد كاميايلزهاىكنونى به لين لستاندارد يايبندند كتابهاضر نيزبرمبتاىهمين لستاندارد نكابشيافته لست

صفحه 19:
2 اإيى «برنامه» دستورالعملهاى متوالى است كه مى تواند توسط يك رايانه اجرا شود. براى نوشتن واجراى هر ‎dob‏ به یک «ویرایش گر متن» و یک 9 احتیاج داریم. ۱ نمونه‌های جالبی از محیط مجتمع تولید برای زبان /)++ به شمار می‌روند.

صفحه 20:
0 —F ‏ار را لستيعني8) و ه-‎ 7 Oi ‏يكونمدلند‎ Vy ‏مثال : اولین برنامه‎ ۱ oars MLN pment) Bree NNN eS eee mcecharsid م9 ‎SI ce ee UR ara cca AN }‏ م ‎aN acd 0‏ ‎{

صفحه 21:
اولین خط از کد بالا یک «راهنمای پیش‌بر دازنده» ا ار ‎-١ *‏ كاراكتر # كه نشان مىدهد اين خطء يك راهنماى پیش پردازنده است. این کاراکتر باید در ابتدای همةٌ خطوط راهنماى يبش يردازنده باشد. 0 > نام بى دفايل كتابخانهاى» كه ميان دو علامت < >> ین(

صفحه 22:
اين خط به كاميايلر ميكويد كه «بدنة اصلي برنامه» از كجا شروع مي‌شود. اين خط داراي اجزاي زير است: aul +4+O ‏كت"‎ | ew ed) 1۳ OM Ke ‏ل ا‎ nr rep rere! Re Re hr rep ea Ors RECT) Ib Bertier)

صفحه 23:
خط آخر برنادء. «بدثة اصلى . . را تشکیل می‌دهند دستورات برنامه از خط سوم شروع شده است. دستور خط سوم با علامت سميكولن : يايان يافته است.

صفحه 24:
توضيم <توضیم. متنى است كه به منظور راهنمايى و درک بهتر به برنامه اضافه مى شود و تاثيرى در اجرای برنامه ندارد. . کامیایلر توضیحات ری ۶۱ < استفاده از توضیم سبب می‌شود که سایر افراد كد برنامة شما را راحتتر درك کنند.

صفحه 25:
به دو صورت می‌توانيم به برنامه‌های ++ توضیمات اضافه کنیم: ‎bill Sal cure 99 jl old La - >‏ متتی که بعد از دو علاهت اساش بیلید تا بایان همان سطر یک توضیح تلقی می‌شود . ‏هر و ۳ علامت /: شروع شود و با علامت */ پایان یابد یک توضیح تلقی می‌شود.

صفحه 26:
۵- عملکر خیوجی علامت << عملكر خروجى در 0+ ناه دارد (به كن عملكر درج نيز مىتويند). ‎ee]‏ ا ا ا 6 م2 ۳ ‎Os‏ ری مت مر نی خرس | [oe haa ye مقدار ۶۶رابه خروجی اجه می‌فرستد که انح معمولا به صفحهنمايش اشاره دارد. در نتيجه مقدار *؟ روى صفحه نمايش درج مى شود.

صفحه 27:
2000 يك « »© رشتداى از حروف. ارقام يا علايم جايى استحد كه ميان دو علامت نقل قول " ' محصور شده باشد. ‎GY‏ > »یک هرف. رقم یا علامت قابل هاب است كه ميان دونشانة '' محصور شده باشد. پس 7 و ۲۲و ۱ هر کدام یک کاراکتر است. ‏به تفاوت سه موجودیت عدد» و «کارکظر» و «لیترال ‏رشتهاى» دقت كنيد: » يك عدد اسح '' يك كاراكتر اسحءدو ‎Neetu‏ 52

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

صفحه 29:
در ++ قبل ازاين كه بتوانیم از متغیری استفاده ی 1 نحو اعلان یک متغیر ‎ANON She‏ ۱۷ عبارت عمرةنوع متغير را مشخص مى كند. نوع متغير به كاميايلر اطلاع مىدهد كه اين متغير جه ل ال ‎OE Ae eee‏ روی آن انجام داد.

صفحه 30:
عبارت حححه نام متغیر را نشان می‌دهد. این نام مداکتر مىتواند اللا كاراكتر باشد. نبايد با عدد شروع شود. علايم رياضى نداشته باشد و همهنين «كلمة كليدى» نيز نباشد. مقداردهی اولیه عبارت عدداندةاه: عبارت «مقداردهى اوليه» نام دارد. با استفاده ازاين عبارت مىتوان مقدار اوليداى در متغير مورد نظر قرار ۰ دستور زير تعريف يك متغير صحيح را نشان مىدهد: 5 لك 10

صفحه 31:
- مقداردهی او لیه به متغیرها در بسیاری از موارد بهتر است متغیرها را در همان محلی که اعلان می‌شوند مقداردهی کنیم. استفاده از متغیرهای مقداردهی نشده ممکن است باعث ایجاد دردسرهایی شود. دردسر متغيرهاى مقداردهى نشده وقتى بزركتر مىشود كه سعى كنيم متغير مقداردهى نشده را در يك محاسبه به كار ببريم. مثلا اكر »درا كه مقداردهى نشده در عبارت © + ,د > بر به كار ببريم. حاصل برغير قابل بيشيبينى خواهد بود. براى اجتناب از ينين مشكلاتى عاقلانه است كه متغيرها ر! هميشه هنكام تعريف. مقداردهى كنيم. ‎a‏ ۷ 209: :جره

صفحه 32:
‎-٩‏ ثات‌ها ‏در بعضی از برنامه‌ها از متغیری استفاده می‌کنيم که فقط یک بار لازم ۱ ‎i‏ ‏مقداردهی کنیم و سپس مقدار آنن متغیر در سراسر برنامه بدون تغییر باقی می‌ماند. مثلا در یک برنامعٌ محاسبات ریاضی. متغیری به نام ۱<) تعریف مىكنيم و لن را با عاا.نا مقداردهى مىكنيم و مىخواهيم كه مقدار اين متغير در ‎TN‏ ا ل ا ا ل ل 0ك ‏يك .يك نوع متغيراست كه فقط يك بار مقداردهى مىشود د 1ن آن در ادامة برنامه ممكن نيست. ‎ ‎ ‏تعريف ثابتها مانند تعريف متغيرهاست با اين تفاوت كه كلمه كم = ‎shila‏ ا ل 0 ‎ ‎ ‎ ‎

صفحه 33:
مثال تعریف ثابت‌ها: fot wuia() I oo INN CoN AAU ACH Daca haan miele eet ca ‏رت م۱‎ ROU A Aer noel ‏تک‎ ‎Pract ras MODOC ONC ‏جر ار‎ ‏ات ما‎ )۳۱29 9 retura OD; 0 ل لك

صفحه 34:
CS Bee براي اين كه بتوانيم هنگام اجراي برنامه مقاديري را وارد کنیم از ‎SESE D TIS Arts‏ 0 3 ‎od‏ دور << واو حاطنس.: ناه يكستغير لست

صفحه 35:
ات تن مس ا ‎Peek (one‏ ا ‎Ma‏ كعدوا ۳ >> انوس

صفحه 36:
عملگر ورودی نیز مانند عملگر خروجی به شکل جریانی رفتار می‌کند. یعنی همان طور که در عملگر خروجی می‌توانستیم چند عبارت را با استفاده از چند عملگر << | می‌توانیم با استفاده از چند عملگر >> چند مقدار را به | ‎Faye)‏ ‎abies‏ ا ا ‎ae bead‏ ا لل ل ل ا 0 ‎ee ee eel el eee‏ ا ا ل يي لل د ‎Mere pen)‏ ل ال 0 ا اال 1 ‎IDE Tey ae econ nee‏ 1

صفحه 37:
مثال ‎١ - ١١‏ جند ورودى روى يك خط 1۳ ‏ل‎ On eae see Le ‏از ورودی گرفته و همان اعداد را دوباره در خروجی نمایش‎ ‏مى دهد:‎ رم

صفحه 38:
(0

صفحه 39:

صفحه 40:
آنچه در ابن جلسه می خوانید (- انواع دادةٌ عددی 1 متیر کب ‎eee‏ ‎le‏ محاسبات اعداد صحيح ا 0 3- عملكرهاى مقداركذارى مركب 7- انواع مميز شناور )ا

صفحه 41:
| اا 0 ‎book oy 2, ~'‏ ‎Ns a‏ زرا ا 2 سر مرس 200101117 >?

صفحه 42:
با 0 | - سرريزى عددى 0 RCTs) rena) ‎-|١7‏ حوزة متغيرها

صفحه 43:
امعرفیر زواع ‎Te) Ria‏ 0 ا ا مشحیح در +برانام ببریدو شعت اا ل هارا اه ار رك ‎ie‏ ل ل ا ال 00 ‎Se ne BNL era)‏ ال لا لل ۱ - نوع بولین را تعریف کرده و متغیرهایی از این ۱ ‏ل‎ Sl <<<

صفحه 44:
‎ed oD) eh Sie‏ ۱۳ ازاين نوع را در برنامه‌ها به کار ببرید. ‏- مفاهیم «تبدیل نوع» و «گسترش نوع» را شناخته ‎Fa pe cee eI‏ 1 ‎rues Cee‏ ا ا ‎UPPER SERPENTS‏ رادانسته و بتوانيد محل وقوع آنها را كشف كنيد. - عملكرهاى حسابى وافزايشى و كاهشى و ‎Be uCe ECB) ENT)‏ ۱

صفحه 45:
مقدمه ل ا ا لت مى كنيم: اعداد . تصاويرء. نوشتهها يا حروف الفباء صداهاء بوها و ... . بايردازش اين دادهها ‎el ET‏ ا ا 2 ‎SES) oon)‏ ا الت ا ‎Fae LD‏ قراراست همين كاررا انجام ات دادههايى را بكيرند. آنها رابه شكلى كه ما تعيين مى كنيم يردازش كنند و در نتيجه اطلاعات مورد

صفحه 46:
(-انواع دادهة عددی در ()++ دو نوع اصلى داده وجود دارد: «نوع صحيح و «نوع مميز شناور». همة انواع ديكر ‎FOO a at lt idee ERC Ce EL‏ دقت كنيد). ساب

صفحه 47:
نوع صحبح 2 براى نككهدارى اعداد صحيح (اعداد ‎٠‏ و ‎١‏ و " و...) استفاده ‎Ces ee nee et Tee)‏ به کار می‌روند و دامنه محدودی دارند.

صفحه 48:

صفحه 49:
نوع ممی شناور بای نگهداری اعداد اعشاری اسستفاده می‌شود. اعداد اعشاری بیشتم برای اندازه گیمری دقیق به کار می‌روند و دامته بر رگاتری دارند. یک عدد اعشاری مفل ۳6۲/۱۸۷ را می‌توان به شک[ ۷۳۹۳/۱۸۱۰ ۳۹۳/۱۱۰۱۲ ۸۷ ب۱" ۰ ۰ و با ... نوشت. به این ترتیب با کم و زیاد کردن توان عدد ۱۰ ممیز عدد نیز جابه‌جا می‌شود. به همين دليل است كه به اعداد اعشارى «اعداد ‎ore‏ 9 0 كويند.

صفحه 50:
عتغیر عدد صحیح -6 7 ey DSS per rary Se fe ‏ا‎ ‎| eee ele ah ee ‏محدودةٌ مقاديرىواسمنكه هر كدام ميتولنند‎ دلشته باشند این ا ‎eR EST Se SEES‏ ‎ee ae BIS ere RCL Re arn)‏ سا عامل دارد. يعنى ممكن است روى يك رايانه, نوع ا دو بايت از حافظه را اشغال كند در حالى كه روى رايانهاى از نوع ديكر نوع ابه جهار بايت حافظه 520030006

صفحه 51:
حداكثر مقدار قابل | حداقل مقدار قابل ۳ روم و رگ گرگ 2 ۶5 وقتى برنامهاى مىنويسيد.ء توجه داشته باشيد 000 ron pera cer Ser ree ete) FOOWOnE DEES STE NEU ep ESE Ope للاراهدر ندهيد. لام 1ك ‎wy‏ ك1 1۳1۳۳1 999 ‎APP Pose‏ = 0 93 FS

صفحه 52:
۳ RY fe On Eee )++ مانند اغلب (بانهاى برنامه‌نویسی برای محاسبات از عملترمان مسع (ج) ر تفریق (-) ر ضرب )4( ‎ess s‏ )7( ر بافیداندد استفاده می‌کند.

صفحه 53:
eS g nt 551 cla Klos — F ‏براىدستكارىمقدار متغيرهاىوصحيح دو عملكر‎ ++)( ما ار اما هر کدام از این عملگرها دو شکل متفاوت دارند: ‎xe » PSS‏ 000 1 a KS RUS WORE ies Teen pee Tee eH

صفحه 54:
ذر شكل ر زر اند منعیر ماس i eae CUP (oly yaks aed yl ورگ عاذ همل شوه : 1 = سل 7227 انتذا مقدار متعبر در محاسبات به کار می‌رود و بس از ان مقدار متقی ر بتک واه و افزای ش را کاهت م باند.

صفحه 55:
++ عملكرهائديكرئدارد كه مقداركذارئدر ا الس ل ا ال عملكر +- موتولنيم هشر واحد به ب لضافه ‎end rend‏ ا لا Local, gtd Jolee UL poi ‏این تفاوت که کوتاه‌تر است. به عملگر +- «عملگر‎ - ‏مرکب» می‌گویند زیرا ترکیبی از عملگرهای + و‎ 08

صفحه 56:
عملگر هایقدل رکنلووع رکب 5 قبلا از عملكر - براى مقداركذارى در متغيرها استفاده كرديم. )++ عملكرهاى ديكرى دارد كه مقداركذارى در متغيرها را تسهيل مئنمايند. م ار | 0

صفحه 57:
نحوة عمل اين عملكرها به شكل ل || sw

صفحه 58:
0 ta eee eT Poa UOe 7 | re ere ECs 7 7 ree Bam a) ‏رایانه ذخیره شود. ابتدا باید به شکل دودویی تبدیل شود:‎ 199.۳9 < 0000.00 001 ۱ سمت راست ممیز منتقل می‌کنیم. البته با هر جابجایی ممیز. عدد حاصل باید در توانی از ۲ ضرب شود: 499.9 2 * OY Ur sie cae nl Levy edo le 39,20 48S en al 93 59) Wg

صفحه 59:
در ‎Cos aw ٠‏ ممیز ناور وود دارد: انواع ممیز شناور نوج ‎acer ea‏ عدد استفاده می‌کند. 2 ار

صفحه 60:
جدول تخصيص حافظه براى متغيير هاى مميز شناور تعداد بیت برای ذخیره‌سازی الا سس ۳ اس ۳ سس فوع متغیر ها بیتی double OF (Cre

صفحه 61:
Tee Se eee | ام ‎od‏ ام lm Acie double x,y=O;

صفحه 62:
اعداد مميز شناور به دو صورت در ورودى و خروجى نشان داده می‌شوند: به شکل.«ساده» و به شکل «علمی». .۲ ۳ علمى- © 1 9997 مشخص است كه ا دادن اعداد خيلى كويت و همينين ‎siacl‏ ‏ا | 35

صفحه 63:
‎٩‏ - نوع بولین اس این نوع فقط می‌توانند مقدار ۲۶ با ۳۵۲ ‎vec ae eee)‏ 0 معنى نادرست است. اما اين مقادير در اصل به صورت ‎١‏ و - درون رايانه ذخيره مى شوند: ‎١‏ براى 057و ‎١‏ براى ‎Pate‏

صفحه 64:
وق یت یک کاراکتر بک حرف. رقم با نشانه است که یک شمارهة منحصر به فرد دارد. به عبارت عامبانه. هر کلیدی که روی صفحه کلید خود می‌بینید یک کاراکتر را ‎Olas,‏ می‌دهد. مثلا هر یک از ‎ae‏ 0 تا ابا و ر ‎‘a‏ تال و هر یک از اعداد "۰ تا 54 هی نا روی صفحه کلید را یک کاراکتر ‎=a‏

صفحه 65:
1 ne epee کلیدی 2۵7 استفاده می‌کنيم. یک کاراکتر باید درون دو علامت آپستروف 7 باشد. پس () یک کاراکتر است؛ همچنین ۸" ار( ره را یک عدد صحیح است . ‎Ue,‏ thar 7 2007

صفحه 66:
0002 يك نوع شمارشى يك نوع صحيح است كه توسط ‎poe ws‏ س ترد تسر تتريت بك نرق شمارشی به شکل زیر است: ‎TNT‏ ار در ره ‎on eed pened‏ ۰ ۶ ‎ee eS Cay Way ee 2 TINA ett‏ رم ل

صفحه 67:
به عنوان مثال به تعريف زير دقت كنيد: ‎0301١ , 60707 , 026007 POC OEO MIND, ERT,‏ ره( مسمم امه اف دب ای ‎Pia‏ 59 جدبد ر.زا) و محدوده ‎Sor‏ ر ی من تس ‎aoe‏ مت رت > ۱ کر از نوع ر را تعریف شده‌اند. آنگاه ار بامقدار 700200 2و2 ا ‎DAD DE‏ مقداردهى شده است.

صفحه 68:
می‌توان ‎Presb) fence elo‏ كم رابه شمارشكرها نسبت داد: ‎Ow‏ ‏همچنین دو یا چند شمارشگر در یک فهرست می‌توانند مقادیر یکسانی داشته باشند: (0,00-0- :1:00:00 4- 00ج ‎٠‏ ()- ا نا را(ز):), (0- 0 ()) وسح 9 «سحم ااانا ‎DODO, POE, OEO, PLY, CR}‏ راف ‎> ee ee ee ee eee Y oe ee ۱۳ | | ee rs ‎۳۳۲۲۳ 7 re

صفحه 69:
نحوةٌ انتخاب ناموشمارشكرها آزاد است اما بيشتر ا ا ا | - برای نام ثابت‌ها از حروف بزرگ استفاده ناکنشمارشگر باید معتبر باشد- eye sere Te een ag ۷ ‏ا‎ ‎21000005 ‎eed ‏ا ال‎

صفحه 70:
شمارشگرهای :ام تباید در محدوده‌های مشترک استفاده شوند. برای مثال تعر یف‌های زیر را در نظر بگیرید: eau ‏)سرت‎ 69۱۵۵, ,00[ pun Croup, B,C} دو تعريف بالا *.ر :از است زيرا شمارشكر 00 در ا 0

صفحه 71:
ا ‎eae‏ للم ‎DIC)‏ ا ا ا ا ‎PE‏ ‏به توضيحات اضافى نداشته باشد. مثلا تعاريف زیر مررر ‏ هستند زیرابه راحتی تام و نوع کاربرد و محدوده مقادیرشان درک مى شود: ‎ORPOGE)‏ اه ۱ ۱( ‏۹( ی ‎pon Dorney o (۳07۱/۷ ۱۸۱۱۷ ‎pre Brak {OOLE,PEOOLE}

صفحه 72:
وا در محاسباتی که چند نوع متغیر وجود دارد. جواب همیشه به شکل متفیری است که دقت بالاترى دارد. يعنى اكر يك عدد صحيح رابا سک عدد مسر اور عم 0 با ‎pe ream ere age pe 2‏ 00 شناور را به نوع صحیح تبدیل کنیم از عبارت 0 0 نوع گفته می شود

صفحه 73:
مثالهاى زير تبديل نوع و كسترش نوع را نشان مىدهند. مثال گسترش نوع پرنامةً زیر یک عدد صحیح را با یک عدد ممیز شناور جمع می‌کند: اسمن ‎double udue:‏ 0 ا اي 100 ۸۰۶ 7 :9.0 2 م بل تشه pou << "pH" <<p <<" qe" << << pod Peake

صفحه 74:
۳- برخی از خطاهای برنامه‌نویسی «فطای (مان کامپایل» ‎an Oo re‏ ار ل ال رلك آنها را رفع نمود. «خطاى زمان اجرا» کشف اینگونه خطاها به راحتی ممکن نیست و ‎keer tee eee Lely‏ 2 خطاهای زمان اجرا سبب می‌شوند که برنامه به طور با رت تر برس

صفحه 75:
‎-١6‏ سرريزى عددى ‎0 ‏ا‎ KUT peo) treed e ‏آن متفیر بیشتر باشد. اگر سعی کنیم در یک‎ ۱۹ eo ‏متغير‎ ‏متغير فراتر باشد. متغير «سر ريز» مى شود.در‎ ‏جنين حالتى مىكوييم كه خطاى سرريزى رخ‎ ‏دادة است.

صفحه 76:
مثال ۱۳ - ۲ سرریزی عدد صحیح ۱ مر ۳ «گردانیده» می‌شود ا از ۱ سرريز شود., نماد “ا به معناى بىنهايت رابه دست مى دهد.

صفحه 77:

صفحه 78:
‎eowa aye‏ 2ك ‏اصطلاح «بلوک» در ()++ وایه مناسبی است که می‌توان به وسيلة آن حوزة متغير را مشخص نمود. یک بلوک برنامه. قسمتی از برنامه است که درون بک جفت علامت كروشه 1 محدود شده است. ‎eee a ee oz ‏ما

صفحه 79:
|02 nn Sle ‏می‌شود وتا پایان همان بلوى ادامه مى يابد.‎ ‏خارج از لن بلوى نمى توان به متغير دسترسى‎ ‏داشت. همچنین قبل از این که متفیر اعلان‎ شود ‎oll Pel Spe‏ را استفاده نمود. مى توانيم در يك برنامه. جند متغير متفاوت با 1 يك نام داشته باشيم به شرطى كهدرا

صفحه 80:
يايان جلسه دوم

صفحه 81:
<¢ aa 5 ‏اد‎

صفحه 82:
آنچه در این جلسه می خوانید -دستور “ا ‎aa aT ee‏ ام 00 رت ا 0 اا كت -ارزیابی میانبری >>>

صفحه 83:
/- عبارات منطقى 4 - دستورهاى الك تودرتو ا ا ‎oa‏ اا د ۱ ۱- عملگر عبارت شرطی (- کلمات کلیدی

صفحه 84:
‎koa‏ ناه نی تکار وشيوة یت ‎e:‏ زرا شناخته و آمن را در برنامه‌ها به کار ‎Pee 0 noe ri‏ پیچیده استفاده کنید. ‎Ferre AES Yer UCIT Ua Pee BEAU Toe Se‏ 25 - بلوک دستورالعمل را تعریف کنید. ‎a WT Ome IAF BCS ete‏ ال ا شرطى به كار ببريد. - از شرطهاى مركب استفاده كرده و ارزيابى ميانبرى را شرح دهيد. - «كلمة كليدى» را تعريف كنيد. <<<

صفحه 85:
مقدمه همه برنامه‌هایی که در دو جلسه اول بیان شد. به شکل ترتیبی اجرا می‌شوند. یعنی دستورات برنامه به ترتیب از بالا به پایین و هر کدام دقیقا یک بار اجرا ‎eS bee) Oe Orne ge] Ey oP)‏ 00 ا ‎pete‏ ‎Sis‏ له ‎

صفحه 86:
de) Ins ره رم 000 ۴ رب_ ریگ که شرط ناسیده می‌شود بک عبارت صحیح است (عبارتی که با یک مقدار صحیح برآورد ‎eel 7 eet eye IP)‏ ۱ با ۳ اس اد در 3 ردم ری مقدار عبر صفر داشته باشد. دفت کنید که شرط باید درون پرانتز قرار داده شود.

صفحه 87:
۲- دستور صاد. .1 دستور ‎Rebbe‏ مى شود بسته به اين كه ‎Ber)‏ ل ل الل ا 37 اجرا گردد. این دستور به شکل زد فرعى اجر! كردد. نإو اين «ستوع بع ۱۳2 9 9 1 7۳*۳77 فرمانهایقابل جرا هستند اگر مقدار شرط غیر صفرباشد !..... . لجرا خولهدشد وگرنه 6

صفحه 88:
۱ | Re Sens |e 70[ :0 لک 1 ا ا ا ا ال ‎e‏ << و << بر ا ل ا ل لضا رس ‎Sr of ere ie‏ 5

صفحه 89:
ی در (++ شش عملگر مقایسه‌ای وجود دارد:. و ‎Se‏ مد کت ارات و هر بت ازااین شش عملكر به شكل زير به كار مىروند: « کوچکتر از بلستتا بت« بزر-گتر از 7 لستا/ ۸ « کوچکتر یامساویر لستاا رت : «< بزر گر بامساویب لست// ,۰ -.-..: > سات كا ‎PAY Heal py‏ > مساووع‌بانیسار ح1 .:

صفحه 90:
اينها مى توانند براى مقايسة مقدار عبارات با هر نوع ترتیبی استفاده شوند. عبارت حاصل به عنوان يى شرط تفسير مىشود. مقدار اين شرط صفر است اگر شرط نادرست باشد و غیر ‎pe wee y Rasen ge o)‏ ۱ عبارت برابر باصفرارزيابى مىشود.ء به اين معنى كه اين شرط نادرست است.

صفحه 91:
عتغیر عدد صحیح -6 7 ey DSS per rary Se fe ‏ا‎ ‎| eee ele ah ee ‏محدودةٌ مقاديرىواسمنكه هر كدام ميتولنند‎ دلشته باشند این ا ‎eR EST Se SEES‏ ‎ee ae BIS ere RCL Re arn)‏ سا عامل دارد. يعنى ممكن است روى يك رايانه, نوع ا دو بايت از حافظه را اشغال كند در حالى كه روى رايانهاى از نوع ديكر نوع ابه جهار بايت حافظه 520030006

صفحه 92:
دقت کنید که در ++ عملگر با عملگر ‎eee Slee mS EE‏ يك مساوى تكى " -"است ولى عملكر برابری. دو مساوی " - - " است. مثلا دستور ‎DO‏ = «۶ مقدار ۳۳را در ‎JS x‏ می‌دهد ‎ees)‏ 00 99 ا الك ‎OSE ee ed oe ames wee ay‏ تفاوت اهمیت زیادی دارد.

صفحه 93:
۴- بلوک‌های دستورالعمل يك بلوك دس تورالعمل زنجيرداى از دستورالعمل‌هاست که درون براکت }{ محصور شده. مانند : } مها ۱ may 1 = tevop ۱ ‏و 00 مانند‎ 256 By

صفحه 94:
(QS ‏تسم‎ 4 Wl ee) 00 ال رو زا ۱۳9۳ 0 ات ان ‎Sees cae‏ (مر< 6 ۸ 1 Wan eae ncn 89a ‏له >> رر >> ۲ > ۲ >> و ک> ام‎ 0

صفحه 95:
int wain() - EPR A ih ‏ا ا‎ ۱ 2 7 0 ۲7۲ << ۲ ‏زلجج >> و >> 2۲ و >> ابرم‎ 1 ۱ ‏ا ا لي‎

صفحه 96:
Tea ae aa) شرطهايى مانند و ‎re)‏ لت ا ‎oe‏ لت ا ل ل لات ازعملگرهای منطقی ری و فك ‎(wot)‏ ‎oe DSc ee REDE Te Rasy‏ ۱ ‎EE‏ ‏درسنلستلاگر و تنهااگر هم وهم هر دو درسساشند ا ا ا ا ا 0ك درست است اگر و تنها اگر نادرست باشد يز 2 0 اكر 900 براير صفر و كوجك تر از ب باشد.

صفحه 97:
‎Spe Pear‏ و معمولا با استفاده از جداول درستى به كونة زير بيان مى شوند: ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‏©! م ‎Ply‏ و م +88۵ و م تس 2 ۱ ۳ 4 4۳ ۳ ‎TD Ay‏ ‎cay‏ 0001 ‏۳ کر &€ ‎٩۳۲۹‏ ‏طبق جدول = ز 2 ابه ماس © نا ‏درست است. ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 98:
0 SS a ‏به دو عملوند نیاز دارندتا‎ ۳ ‏درستی‎ «dd ‏مقايسه راروى آنن د سم‎ ا ل عم حالت گفته شده. يا ارزيابى عملوند اول به سرعت نتیجه معلوم می‌شود. این کار . ...7 نامبده می‌شود.

صفحه 99:
fier.) bere) By Pe oad یک عبارت منطقی شرطی است كه يا درست است ال ‎ee DEP‏ اا ك6 معنای نادرست و هر مقدار غیر صفر به معنای درست است. به عبارات منطقی هم مى كو يند.

صفحه 100:
چون همه مقادیر صحیح ناصفر به معنای تغيير قيافه مىدهند. براى مثال دستور وقتى غير صفر است عبارت را چاپ می‌کند زیرا عبارت منطقی ‏ وقتى مقدار . غیر صفر است به عنوان درست تفسیر رک ری

صفحه 101:
کد زیر را نگاه کنید: ل ان جارج ب اج جز ب" >> انون ( 200 دستور خروجى فقط وقتى كه ناصفر ا ۰( وقتى ناصفر ممكن است فراموش كنيم كه عبارات منطقى مقادير صحيح دارند و اين فراموشى باعث ايجاد نتايج غير منتظره و نامتعارف شود.

صفحه 102:
یک خطای منطقی دیگر. این برنامه خطادار است: ( )ددص ‎int‏ 00 11 2 Prat A (ran ‏ا‎ ‎۱ woo LOS eal wee) a Sen UH i منشأ خطا در برنامة بالا اين اصل است كه عبارات منطقى مقدارهاى عددى دارند.

صفحه 103:
دستور ها عنتخابتودیتو 6۰ دستورهاى انتخاب مىتوانند مانند دستورالعملهاى مركب به كار روند. به اين ا 0 000 اين روشء جملات تودرتو مى كويند.

صفحه 104:
Ws وقتی دستور -حا..:به شکل تو در تو به کار می‌یود. کامپایلر از قانون زیر جهمت تجزیه این دستورالعمل مر کب استفاده نس تاد .هر حطو با آخرین جفت مى شود.» 1

صفحه 105:
phe P bly —4 ee TCD ee at ‏ا‎ | ee ‏مجموعه‌ای از حالت‌های متتاوب یاموازی به‎ ebe rang Or ‏مىرود. در این حالات فقط‎ 01 ‏شامل دستور بعدی خواهد بود. این قبیل‎ ‏ا ل ا ا‎

صفحه 106:
ا 0 000 برنامة زير يك نمرةٌ امتحان را به درجهٌ حرفى معادل تبديل م ىكند: )0 با مت ۱۱ ‎ied A‏ ا ‎De atk ce‏ ‎(Sore > (00) cou << "Crm: the sore & out oP range”;‏ ‎be P (sere >= OO) cout << "You wate & 00 @." << ead;‏ ‎eee (sare >= CO) cout << "You gate & ©." << pod;‏ ‎(Gere >= TO) rot <5 "Your gk & 1 0.” << ead;‏ ‎BO) cout << "Your yates & oO." << ead‏ => ۱ ‎tiated) Doo nce A SS‏ ۱ ‎vat << "Cro: tot score ts vu DP raaw.")‏

صفحه 107:
‎er) id‏ یر دستور ,.... , می‌تواند به جای ساختار , ,, , برای ۱ به كار رود. نحو دستور . . . به شكل زير است:

صفحه 108:
ابن دستور ابتدا تسووومووو را براورد می کند ay ‏عبارت یک عبارت اختیاری است.‎ ‏ا 70 آن راقید‎ Tene) ‏نكنيم. -20200 بايد به شكل يك نوع‎ ‏هابايد‎ 2 ١ ‏صحيح ارزيابى شود و‎ 9 ‏ت‌ها کار‎ ۳ ‏ثابت‌های صحیح باشند‎ , cap ene) fo a ‏هاء. سم‎ val اس

صفحه 109:
۱ دستور قرار بگیرد. بدون این دستور. اجرای برنامه پس از این که مربوطه را اجرا کرد از دستور وت نمی‌شود. بلکه همةً های زیرین را هم خط به خط می‌پیماید و دستورات مقابل آن‌هارا اجرا می‌کند. به ۱ PAPAS SNC e aer ae OR 1

صفحه 110:
1- عملگر عبارت شرطی 3 2 عبارت برابر با مىشود واكر 2 ‏اا‎ yr) = ‏می‌شود.‎ 7 ‏نشانههاى 12و ' كل زير استفاده مى كند:‎ ‏ل ل لك‎

صفحه 111:
مثلا در دستور انتساب زير: ‎Qxiv }‏ ركم ) = ‎wia‏ ‏اگر ‎W992 ly glade WAL 2<<y‏ نت قرار می‌دهد واكر ر>:. نباشد مقدار .ب را درون ‎als <i‏ مىدهد. يعنى به همین سادكى و اختصار مقدار کمینة ::و :درون متغير ‎SESS‏ قرار می‌گیرد.

صفحه 112:
ا ‎Pp‏ ‎Pe ar cen an Comer a Cone‏ أيك كلمة كليدى در يك زبان| إبرنامهنويسى كلمهاى است كه از قبل | اتعريف شده و براى هدف مشخصى | ‎sw! dud 7‏ با آمعراع ی 77 نوع۲ تن[ لک 7337777

صفحه 113:
qtr كاد ال Dust dodouble delete

صفحه 114:
اه ۲7۷ : نله ادن ‎wit‏ ‎Dr‏ ‎eprotevted‏ سم سم مس رها منود ‎ost‏ _ اد اه ‎PROE‏ ۱1199 ۰

صفحه 115:
rigid

صفحه 116:
دو نوع كلمة کلیدی وجود دارد: ۱ 00 ك5 كلة رررو كد : كليةاى است كه رى دستور ‎Bere‏ ا اك ا ان 2 ام م ا 20077 يك شناسة استاندارد كلمهاى است كه یک نوع دادةٌ استاندارد از زبان را مشخص مى كند. كلمات كليدى إددطا و شناسههاى استاندارد هستند

صفحه 117:
پابان جلسه سوم

صفحه 118:

صفحه 119:
: آنچه در این جلسه می خوانید کر را '!- خاتمه دادن به يى حلقه ‎NPA ae‏ ‎eae yee ae ie‏ ‎OE eee)‏ وا 7- دستئور 7712 ۷- دستور 1۳۳ - تولید اعداد شبه تصادفی

صفحه 120:
‎re 0‏ ا از مطالعة این جلسه بتوانید: -شخاخستینانلواع! فناخاخهاز های اتکیوار وتنهتوآک‌ها و ‎ares Byte te‏ ایک واگ ر| شناخته و تفاوت آن با دستور ‎while‏ را بیان کنید. ‏- نحو دستور را شناخته و با استفاده از آن حلقه‌های گوناگون بسازید. ‏- حلقه‌های فوق را به یکدیگر تبدیل کنید. ‏- علت استفاده از «دستورات يرش» را ذكر كرده و تفاوت سه دستوز ا ل ل ل ‏- اهميت اعداد تصادفى را بيان كرده و نحوةٌ توليد «اعداد شبه تصادفى» را بدانید.

صفحه 121:
dovio ‏"را احرای بی در بی یک دستور بابلوکی از‎ ‏دستورالعملها در يك برنامه است. با استفاده از‎ ‏تكرار مى توانيم كنترل برنامه را مجبور كنيم تابه‎ 200 0 ‏ا ل‎ SPCC ce yee. ب+ دارلی‌سه دستور تکرار لستدستور ...۰ ‎gid 9 gw‏ ۳۲ به علرمطبيعرجر خهمانند شا حلقه نيز ناميده 6 تست رت

صفحه 122:
el oer به جای .یک شرط قرار می‌گیرد و به جای دستورى كه بايد تكرار شود قرار مى كيرد. سر مر ی 0 ‎eG ۳3‏ بعد از

صفحه 123:
ا 000 اين برنامه مقدار ‎١‏ 7۰ 7۰ بر -.,- را براى عدد ورودى > محاسبه مى كند: سم زر ‎Scns ies‏ 0 (onc eh ee casi e ee ۳ 0 7( (۰ > طابر 00 Pe Nessa ed ec SSS en creo << an;

صفحه 124:
00 | eo 7 eC ‏اي لت ا سب‎ ‏لك‎ 001 cae ‏تنفاده اد‎ ) ۶ )< a) breck; ‏ا‎ ae i Pr Noe aan one ee ‏ل‎ 1

صفحه 125:
ese ee ea ee ۱ ‏ارت ررق پا‎ OPCS ‏معادله‌های زیر تعر یف می‌شوند:‎ | اور تا وتا لا ۱ مثلا براى 1-2 داريم: ‎F,=F,,+F,,.=F,+F,=0+1=1‏ ‏يا براى 1-3 داريم: ‎F,=F,,+F,,.=F,+F,=1+1=2‏ ‏و برای 1-24 داریم: ‎F,=F,,+F,,=F,+F,=2+1=3‏

صفحه 126:
1 OTe D ا 0 4 ا 7 سین 3 ‎ay‏ ‏ارات ‎se <<" << bound << ":\n0, 1";‏ نت ‎long f0=0, 4‏ ‎raat .)1۳۷6(‏ ‎f2 = f0 + fl;‏ { ‎nt acl.)‏ ل ‎fe‏ ‎eee ۰ 2‏ ‎fl;‏ زا 2۶۳ < ۲1 ‏ی 1

صفحه 127:
odie (0) Pep ese YUL) Pre ee Se ore eRe SE NON NE Mle pats EE SOND. 18 (0) 1 ‏بلافاصله اجراى كل برنامه را يايان مىدهد:‎ ‏اس‎ ‎iat ‎Pea Sone ence Vcd ot ee ۱ arate nce Dea BAS Coens ‏ا‎ oN SOD ‏بسا‎ ۳۵۶۵, ۳2۵: { loo PO = PO + FA; P (PO > bowed) ext(O); pout <<", "<<PO; PO = Pd; ‏بهم د مم‎ (

صفحه 128:
متوقف كردن يك حلقة نامتناهى : با فشردن کلیدهای 0۳۱*0) سیستم عامل یک برنامه رايه احبار خاتمه مىدهد. كليد 001 را ‎Perle)‏ ‏نكّه داشته و کلید ()روى صفحهكليد خود را فشار ‎O‏ 000

صفحه 129:
| را ۱ ات ال ‎AS ASA‏ اهلد م اين دستور ابتدا 25-7264 را اجرا م ى كند و 7 شرط درست بود حلقه دوباره تكرار مى شود و و 1

صفحه 130:
دستور عالانب..ع مانند دستور علاربه است. ‎rae‏ اين ‎Gale 45 Cowl lp Soda ١ ‏هميشه بدون توجه به مقدار‎ ٩<..بنطلاع‎ Soe eed) eee ‏ا‎ Bes ‏ماما حلقةٌ حانطار می‌تواند اصلا اجرا نشود. . ۰ ‏ز نم رون ‏آن تنظتم ‎3p‏ ‎ ‎

صفحه 131:
و ‎eee ore Pee ence‏ 1 مر ل 0 1 ‎Vice a ae‏ ا ‎A Cohn‏

صفحه 132:
PO Pppec Ce kes ee Wo FREE ‏ااا‎ ‏زير تعريف مى شوند:‎ 0۲-4 , ۱ - ‏ارمیه‎ ‏برای مثال. به ازای < « در معادلةٌ دوم داریم:‎ ‏7ك‎ 1010 ‏همچنین برای 2 داریم:‎ 2) 99 0 6۱ - 5) 5 215055 5

صفحه 133:
برنامةٌ زیر همةّ اعداد فاکتوریال را که از عدد داده شده کوچک‌ترند. چاپ می‌کند: 6 سا ‎Von oc‏ لانن ‎joi >> bout ‎۱ ‎۳ ‎2 ‎mews ۲ ‏رسک ۲ ‎i ‎white (P< bourd) ‎{

صفحه 134:
عبارت 05ص دبراى ييش-بردن متغير كنترل حلقه به كار مىرود. اين عبارت يس از اجراى 210۷ ارز یابی می گر دد.

صفحه 135:
بنابراین زنجيرة وقايعى كه تكرار را ايجاد می‌کنند عبارتند از: | - ارزیابی عبارت له ۳ -بررسی شرط .._.. .اگر نادرست ‎erie)‏ ‎ee‏ ا ري يد 7 ‎a‏ صهلبعبارت‌های اختیاری هستند. یعنی مى تواني آنها را در حلقه ذكر ذ ‎awe‏

صفحه 136:
eer See Ree oe meen a Cael on heen Mele) ‏اين برنامه همان تأثير مثال ١-ه را دارد:‎ ‏الا‎ ‎{ ‏فش‎ ‎۱ ‏ی‎ ‏كا‎ eaten foag su=O; <= regen pene 7 als Fae rye e ‏ا ال‎ ey as ‏مىشود (مانند ادر مثال بالا) حوزةً آلن متغير به هان‎ ‏ا متا‎ ocd eee eC ۳ ‏نتبجة دیگر این است که می‌توان از نام مشابهی در خارج از حلقةً‎ 0000 dy soe cep eee Te eT pe)

صفحه 137:
مثال ۱۲ ‎Ie‏ و برنامة زير ده عدد صحيح مثبت مثبت را به ترتيب نزولى جاب مى كند:

صفحه 138:
۱ ‏دارد:‎ Oe SIDE CLIPS a et tie اه نز ‎Por (at w=OS, v=, w%u > O; w -= 9, ot +)‏ { ل ‎Sy‏ ا ل 0 /

صفحه 139:
م ل ‎PPPS‏ ‏ا ل 1م |

صفحه 140:
35 ‎et)‏ ا وقتى دستور و درون فا روی حلقه‌ای که مستقیما درون آن | حلقههاى بيرونى بدون هيج تغييرى ‎ai ‏دهد.

صفحه 141:
332 سا ها دستور ‎Oa‏ تورهای درون بلوک حلقه را نادیده گ این دستور بیرون 57 این 2 م رالغو كرده و اجراى دور ۹ بعدى حلقه را آغاز م ىكند.

صفحه 142:
‎ST Eee A neem Ed‏ دمم يما ‎ST eee TE eel]‏ 10 ‎iat wuin()‏ ۳ ویر { ‎Ne ao‏ ‎Por(; rt )‏ ‎SS ee ESE‏ ا ‎rout‏ ‎vin >> ۳‏ م۱ میت ‎i ‏زو ا يي ل لا يي‎ Mi

صفحه 143:
۷- دستور اس ۱9 eee BC es Rey aren ‏تزسط مت برحسب‎ ee) ‏است, متسه‎ ‏معين مى شود.‎ برجسب شناسهاى است كه جلوى آنن علامت ‎eated‏ ا ل ا ل مى كيرد. یک مزیت دستور ۰۲7 این است که با استفاده ‎ee reais |‏ را زر شد و به مكان دلخواهى در برنامه يرش نمود.

صفحه 144:
۱ ‏سل از رم رت را‎ ist c7aini() 7 ‏ار یا‎ cal Osi Os enim) { Por (ist K=O; K<@; K++) iP (FARO) pte esr; fee ar a ‏ا‎ ‏ارو‎ ‎1 ‏ا تا‎ j i

صفحه 145:
2000 Reo ere ee LD oe) en SSS) ne ee) ‏«شبیه‌سازی» سیستم‌های دنیای واقعی است.‎ ‏تحقیقات و توسعه‌های بسیار پیشرفته به این‎ ‏راهکار خیلی وابسته است. به وسيلة شبيهسازى‎ ‏می‌توانیم رفتار سیستم‌های مختلف را مطالعه‎ ‏کنیم بدون این که لازم باشد واقعاان‌هارا‎ ‏پیاده‌سازی تماییم. در شبیه‌سازی نیاژ اسست‎ G ‏توسط رایانه‌ها توليد شود‎ FEE ey ‏اعدا‎ نادانستههاى دنياى واقعى مدلسازى شود.

صفحه 146:
رايانهها «ثابت كار» هستند يعنى با دادن دادههاى مشابه به رایانه‌های مشابه. هميشه خروجی یکسان ل ا ل ل يت كرد كه به ظاهر تصادفى هستند؛ اعدادى كه يه طور یکنواخت در یک محدودة خاص گسترده‌اند و برای ‎ploS qu‏ الكوى مشخصى وجود ندارد. ۳ ‎Peel Ree DL heed De MP ETD De |‏

صفحه 147:
‎ar}‏ توليد اعداد شبه تصادفى اين برنامه از تابع 4-(() براى توليد اعداد شبهتصادفى استفاده مى كند: ‎#include<cstdlib>//defines the ۳۵۳۵ 0‏ ‎RAND_MAX‏ ‎#include <iostream> int main(), { // prints pseudo-random numbers: for (int i = 0; i < 8; i++) cout << rand() << endl; cout << "RAND MAX =" << RAND MAX << endl; ‎} ‏هر بار که برنامة بالا اجرا شود. رایانه هشت عدد صحیح 2 تولید می‌کند که به طور یکنواخت در فاصلةً ۰ تا ‎)1٩61201(6(_۷‏ گسترده شده‌اند. 629 _606060) در این رابانه برایر با ۲:۱۲۴۷,۴۸۳:۶۴۷ است.

صفحه 148:
هر عدد شبه‌تصادفی از روی عدد قبلی خود ساخته می‌شود. اولين عدد شبهتصادفى از روى يك مقدار داخلى که« . . گفته می‌شود ايجاد می‌گر دد. هر دفعه که برنامه اجرا شود. هسته با یک مقدار :10000 براى حذف اين اثر نامطلوب كه از تصادفى بودن اعداد مى كاهدء مى توانيم با استفاده از تايع ‎sraad()‏ ‏خودمان مقدار هسته را انتخاب كنيم.

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

صفحه 150:
پابان جلسه جهارم

صفحه 151:

صفحه 152:
آنچه در ابن جلسه می خوانید ۳ توابع كتابخانهاى ()++ استاندارد '!- توابع ساخت كارير ۳ برنامةً آزمون ۳- اعلان‌ها و تعاریف تابع کامپابل جداکانة توابع 7 یرس محر تایه نی

صفحه 153:
را توارع بولق ا ا 46 ‎-١‏ ارسال به طريق ارجاع (درس) ۱ - ارسال از طریق ارجاع ثابت 1 )>

صفحه 154:
Eee ee le 0 ‏كك ني‎ 00 to) a

صفحه 155:
هدف‌های رفتاری؛ ا ا 7 ‎neu‏ «تعريف» ‎ee‏ را بدانيد و خودتان توابعى را ايجاد ‎PolPen prem ip ISS arr I OVEN RpCarer Septal DiTUye ey Oper peer ben) ‏مفهوم دآ ركومان»‎ - ‏- تفاوت ارسال به طريق ى «ارجاع» و ارسال به طريق «مقدار» و ارسال به طريق «ارجاع ثابت» را بيان كنيد و شكل استفاده از هر يكد را بدانيد. ‎200

صفحه 156:
- «تابع ی را شناخته و نحوةٌ معرفى ‎bol‏ ‏۳ ‏- جندشكلى توابع را تعريف كنيد وشيوة آلن را بدانید. - طریقة به کار گیری آر گومان‌های پیش‌فرض را

صفحه 157:
( سرتررد برنامه‌های واقعی و تجاری بسیار بزرگ‌تسر از برنامههايى هستند كه تاكنون بررسى كرديم. برای این که برنامه‌های بزرگ قابل مدیریت باشند. » ‎gi dol‏ 7 7 ‎a TP ed Le BB]‏ بندى مىكنند. اين زيربرنامههها «تایسع» ‎Pewee)‏ مى شوند. توابع ۳ ‎ree)‏ ا 0 ‎lado» y>‏ ل ا 0 ا ‎SS‏

صفحه 158:
وراه ردان زارد 1ه © استاندارد» مجموعهاى است كه ‎eerie)‏ ل | برنامه است. این توابع و عناصر از طریق «... » قبلا برخی از آن‌هارا استفاده کرده‌ایم: ثاببت ‎"1011-١1‏ كهدر < ‎١‏ > تعريف شده. تابع ()021< كه در < ‎20١‏ > تعريف شده است ‎wed‏

صفحه 159:
200 ‏نسدد‎ ‎00 ERC-Tul eke OMT E RC TES) ‏ريشة دوم‎ تابع 20000 كاملء داراى روند ورودى - پردازش - خروجی است هرچند که پردازش. مرحلهاى ينهان است. يعنى نمىدانيم كه تابع روى عدد ۲ چه اعمالی انجام لي كي رك إل رسن كنا حاصل می‌شود.

صفحه 160:
برای اجرای یک تابع مانند تابع اجح() کافی ‎reese ae a eel fr noe‏ | 00 ‏ا‎ ESL oe USER TONG Ces py eery p=sqnt(x);

صفحه 161:
م تاییع» با اخضار تابعة گفته ‎ye Tee)‏ ا ال ا ل 1ت 6 فراخوانی می‌گردد. عبارت درون پرانتز ‎Reel nae pe pC 7 OSL ETC‏ ‎et ll oe RR al DEE ed‏ «مقدار» به نت فرستاده مى شود. ‎BY}‏ وقتى ) است, با اجراى كد ()1»< تابع 0<() فراخوانى شده و مقدار ۳ به لن فرستاده می‌شود. تابع مذکور نيز حاصل 2-2 رابهعنان ياسسخ برمى كرداند...

صفحه 162:
ا 0 رم نج 5 متغيرهاى « و بر در تابع ۵() تعریف شده‌اند. مقدار « که برابر با ااست به تابع #4() فرستاده مىشود و اين تابع مقدار ۵ .را به تابع ل ا ا 000 را نشان مىدهذ به رنك تيره است, به اين معنا كه فرايند داخلى و ا 5 05957

صفحه 163:
۱ ‏ا‎ any] اين برنامه هم از سرفايل <21ك> استفاده مىكند. هدف اين است كه صحت رابطة +«وم0.م:8) 6-,:92ج:8) به شكل تجربى بررسى شود. سم ‎Por Poa x=O; x < S; x += O.C)‏ { ‎rout << x << "WW" << (G*x) << "WF"‏ >>( رم 2۳ >>

صفحه 164:
‎io‏ لان 0 0 ‏خروجى نشان مىدهد كه براى هر مقدار ا ‎DNC‏ ‏>ود 708510 برابر است. ‏0 ‏۷ ‏ده تا سر ۳۱۱۱۹ جاب می‌کند. ‎ORE‏ ۳ ‎act ‎0 ‏ری ‎ae ‎9 ‎۳9

صفحه 165:
i a Sc ‏م‎ Tee ‏ریت شده است. بعفيى إن لين‎ ae ‏را‎ ee 00 ‏ا ل‎ ‎asin(x) 1, 0.201358‏ ‎aie‏ سينوس معكوس + ابه راديان) ‏(8830)0.2 مقبار ‎atan(x) 1, 0.197396‏ بر تنزانت معکوس ‏ (بهرادیان) ‎ceil (3.141593) ‎ceil(x) 0 aie 5 0 cos (2) ‎cos (x) 1,0.416147‏ در رط کسینوس ‏ (به رادیان) ‎suis exp (2)

صفحه 166:
floor(x ‏مقدار كف (كرد‎ floor(3.141593) مقدار 3.00 را برمی‌گردلند ‏ شده) ) ۳۹ 0.693147 ,| لگاریتم طبیعی عد (در و۱0 بسرمیگردلند پایه ع) ‎rere jus Log (2)‏ لك ۹ [ ‎pow(x,p 1, 8.0 ,vi pow(2,3)‏ جردا نه «به تولن ) ‎ ‎

صفحه 167:
7 ay Spee Corser EES lee eae ea eee SD ‏نوع‎ ‏تابع فرستاده شود, قبل از اين كه تابع ان را يردازش‎ ‎yl 3 ۳ ۳۳ eS‏ می‌دهد.

صفحه 168:
۵ 0 بع" ,عي :۶ 715۳5 این سرفايلها از كتابخانة ) استاندارد ‎gee‏ ‏شده‌اند. استفاده از آن‌ها شبیه استفاده از سرفایل‌های )++ استاندارد (مانند > >> ) الست. براى مثال اكر بخواهیم تابع اعداد تصادفی له را از سرفایل <2ت> به کار ببریم. باید دستور پیش‌پردازندةٌ زیر را به ابتدای فایل برنامةً اصلی اضافه کنیم: ۸ ۸۱ | ۸ ‎<vstdlib>‏ مش ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 169:
رد تب نات در كرجه توابع بسيار متنوعى در كتابخانة ‎HHO‏ ‏استاندارد وجود دارد ولى اين توابع براى بيشتر وظايف برنامهنويسى كافى نيستند. علاوه بر اين برنامه‌نویسان دوست دارند خودشان بتوانند توابعی را بسازند و استفاده نمایند.

صفحه 170:
eat eo Ole Pye Cgoes rt eas Sane | oy tat ‏دك )عطي‎ 1 00 ate eS ca ed return ‏کرک‎

صفحه 171:
یک تا بع سا< 3 خت کاربر دو ق لح 0 ee Sirs) ers 3 ‏چم‎ | 0 من

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

صفحه 173:
بسرنامة ‎Paygasd‏ ‏تنها هدف این برنامه. امتحان كردن تابع و بررسی صحت بر = - 2 برچسب‌ها و راهنماهای خوانا - را لحاظ کنید.

صفحه 174:
مثال ۵-۴ یک برنامهةً آزمون برای تابع علح() ‎Pome elmer SIKH SEN) AC en eee EC?‏ tot mube(int x) برنامهً حاضر اعداد صحیح رااز ورودى ‎Eyre)‏ ‏مكعب انها راجاب بر و ف كلد شااكن كه كارير مقدار ‎٠‏ را وارد كند. ‎ict coin)‏ ‎aco O Osc Cac‏ 0000 20 ۱ ‎white (a |= O)‏ ‎eras‏ ‎rat << "\imube(" << a <<") =" << pube(a) << eo); }}‏

صفحه 175:
هر عدد صحیحی که خوانده می‌شود. با استفاده از ( به تابع ‎Orbe‏ فرستاده مى شود. ۱ 0 ام ان و ۰ 52 دقت كنيد كه ‎on Fan EO AC ar‏ تعریف ‎RO eee et ce Cae CLs Tees‏ رودء كاميايلر (00++ بايد در بارةٌ آن اطلاع حاصل كند. ‎main() cube()‏ ع 5 ۳ ۳ ۰ بین لتك ا آل ‎aly a‏ تصور نمود:

صفحه 176:
(eed ae eer aL A pene ee WO ‏تابع زير دو بارامتر دارد. اين تابع از دو مقدار فرستاده شده به آن مقدار بزركتر را برمى كرداند:‎ ‏سوت سم ها‎ ‏را‎ EN ea ee 2 Sl tel Coe 2 ما

صفحه 177:
رت (شبیه دستور . . )زیرااجرارابه ‎ee‏ و ی اگرچه معمولا ‎١‏ 2020202 درانتهاى تابيع قرار 95۱ 9 دیگری از تابع قرار داد.

صفحه 178:
۵- اعلان‌ها و تعار بف تابح به دو روش ميتوان توابع را تعريف نمود: ا ال تن مربوطه اورده شوند. اه دیگری که بیشتر رواج دارد این گونه 1 0 قرار بكيرد.

صفحه 179:
لد لا تسایس ات مه لس اد اعلان تابع شبیه اعلان مد رس ‎pe aid ole!‏ مس در انتهای آن قرار دارد. ایک متغیر زر زر رب ور برن ردب ۱ .اعلان شود. تابع هم همین طور است یا این فرق که متعیر (۱ در هر جایی از برفاعه میتوان اعلان ترد انا تابم را باب قبل از برنامة اصلی اد رد نمود.

صفحه 180:
te ae oly ‏فقط‎ Mahe oir 1 rene pee cape FL Pe Con peg Seen ‏كاميايل برنامه را آغاز كند. سيس در زمان اجرا‎ ‏به تعريف بدنة تابع نيز احتياج مى شود كه اين‎ ‏بدنه در انتهاى برنامه و يس از تابع 5ه<ت() قرار‎ ‏می گیرد.‎

صفحه 181:
BC ee renee. ) متفیرهایی هستند که در فهرست يارامتر يك تابع نام ا 6 ‎See)‏ ا ی مىشوند؛ يعنى فقط در طول اجراى تابع وجود ۳ آ رگومان‌ها متغیرهایی هستند که از برنامةً اصلى به تابع فرستاده مى شوند.

صفحه 182:
:كارا )عدت لها لمان a 0-1 { ‏زو << مه << وو‎ rout << "\eax(" << 7 << ")"<< a >> "-" CA >> ‏الس‎ (

صفحه 183:
۱ ترابع بهارساند 3 ‎۱2٩ eee) oe‏ پیادسازی شدداند ر سای كا یکی از آن. ‎als‏ را در برناناءمايتان به كاز م بريد اند نش برر راسشدای پیش بردازندد: ثایل آلبن توابع رابه برتادا-تان بیدا کید 0 ع ‎fe‏

صفحه 184:
۱- اولین مزیت «مخفی‌سازی اطلاعات» است. ۲-مزیت دیگر این است که توابع مورد نیاز را می‌نوان قبل از این که برنامة اصلی نوشنته شود. جداگانه آزمایش نمود. ۳سومین مزیت این است که در هر زمانی به راحتی می‌توان تعریف توابع را عوض کرد بدون این که لازم باشد برنامة اصلی تغییر یابد. ۴-چهارمین مزیت هم این است که می‌توانید یک بار یک تابع را کامپایل و ذخیره کنید و از تن پس در برنامه‌های مختلفی از همان تابع استفاده بیرید.

صفحه 185:
رت

صفحه 186:
حال کافی است ‎<tochide <test.cppHi he‏ را به اول برنامه اصلى وقبل از ‎١‏ اضافه كنيم: ‎ber acd cee Rec ee‏ اه ز :مصتعصخا ‎wax()‏ ۱۱ 00000 2 ۱ --" | << wax(w,a) << eo;

صفحه 187:
rang vont eer erence en ye ‏كت‎ TN el rent See ence) POE 0 Dede ol ot cer PEED] Darr) ‏و ذخیره‎ Jools DLL ‏رادر فايلهايى از نوع‎ 0 2020 yy etc wpe) ‏می‌نمایند. فایل‌های بابلا رابه دو طریق ایستا و‎ 1۳ 7 ener) ‏بيشتر بافايلهاى ,ارا(ا) به مرجع ويندوز و‎ كاميايلرهاى (0++ مراجعه كنيد.

صفحه 188:
ا د ی متغيرها فقط در دا< يارامترهاى تابع محلی برای آن تابع هستند.

صفحه 189:
۱ 011101111 11 1 0 BENIN OP ecL EI ‏(6()©()0)..(هم) رمم" - اه‎ BR Pe re SCAN ele eT ta BS] { Mretures a! = o*(oHl)*(r-@)*...*(C)*(0) P (a< ©) retro O; ۷ < : ۱ PAS or; ca

صفحه 190:
‎Bee Pepe ye oom ercmy ee)‏ باشند تن ‏باشند. ‎1 Sl Ree Mey oS © geen ee eS oa eve we elke ree eee Bee eee alee BES a ‏ساخت. به مثال زير نكاه كنيد.‎ ‎0000 Te ‎Polar ‏ا ل ا ا ا‎ r Y - ‏مىكند كه به جند طريق مىتوان >اعنصر دلخواه از يك مجموعة‎ 7 ۰ ‏استفاده مى شود:‎

صفحه 191:
‎SE. EY otro oe‏ رل ا ۳ ‏شرط به کار رفقته در دستور *برای محدود کردن ‎Tene‏ ا ا ال ل ا ا ا 0 تابع مقدار ‎٠‏ را برمى كرداند تانشان دهد كه يك ورودى اشتباه وجود داشته است. ‎Desc RA LD) ‎SY eNews Gl CA) ene cee Se et emcee ee F(a <Q) [| k<O || k> 5) retro O; retura Pact(a)/Pact(e-k);

صفحه 192:
POMBE ac ent pers Aes TA ee ‏امد‎ ‎Oe tonne "20 0 ۱ aT oC) pout << eed; } 7 ۱ ۵9

صفحه 193:
۷- تایع اب ا ا ‎Meee‏ 0 000 مشخص كردن جنين توابعى از كلمة كليدى لاصمابه عنوان نوع باز كشتى تابع استفاده مى كنند ‎S)‏ از ۱ از آن‌جا که یک تابع لس مقداری را برنمی گرداند. نیازی به دستور 9 ‎reser SBIR eee eee ele Sec Crowe‏ به شکل تنها استفاده کنیم بدون این که بعد از کلمةٌ نم تم .۶ دیگری بیاید: ۳۳2 CSW ‏ال‎ NaN ay re Ren caus] a)

صفحه 194:
peut omy te BSW se rope ۳ ‏استفاده مى شود بسيار مفيد است.‎ ere رت ا ‎ee‏ 5 ‏را ی را‎ ۱ et Se re ie ed Oo ‏ا‎ owe ters]

صفحه 195:
مثال ۵-۱۰ تابعی که اول بودن اعداد را بررسی می‌کند كد زير یک تابع بولی است که تشخیص می‌دهد آیا عدد صحیح ارسال شده به آن, اول است یا خیر: زاس مها ‎P ais prive, Pause vihenwise!‏ 010 ‎a)‏ موی مسا ‎OCR Rear ccd‏ لي ۱ ‎[CO od 9 oe the Pret prives‏ ۱ ‎PF (a%C == O) retura Poe} // © is the vy eves prive‏ ‎(cme cela a He tad)‏ يكنا ‎(QM SO) ae Nal ean esas‏ ‎retura fru; USN aaa aa es cece‏

صفحه 196:
۳0( ‏توابع ورودق /خروجی‎ -٩ بح 1۱۳ به هدف اصلى برنامه مربوط نيست را مىتوان به توابع سيرد. در چنین شرایطی سودمندی توابع محسوس‌تر می‌شود. ‎Seer NES‏ ا ‎cere‏ الم كرددايد كه سوابق تحصيلى دانشجويان را نكه مىدارد. در اين نرمافزار لازم است كه سن دانشجو به عنوان يكى از اطلاعات يروندة دانشجو وارد شود. اكر وظيفة دريافت سن را به عهدةٌ يك تابع .۰ جزيياتى از قبيل كنترل ورودى معتبرء يافتن سن از روى تاريخ تولد و ... را در اين تابع ييادهسازى كنيد 0 ‏از مسير برنامة اصلى منحرف شويد.

صفحه 197:
۱۱ Cr wen ec ‏ا ا لل ان ل‎ SO ear ls) ‏فقط براى جاب‎ إن نات بات إن تولبع خروجی ‏ . -. یعنی توابعی که فقط برای ‎le‏ نتایج به کار می‌روند و هیچ مقدار باز گشتی ندارند. اا .سا یز به همین روش کار می‌کنند اما در جهت ا ا ا ا لت اال ا ا ل ل ل ‎a‏ ل ندارند.

صفحه 198:
rent) ‏مثال ۵-۱۱ تابعی برای دریافت سن کاربر‎ ‏رس عفص ارسي ا ع سي‎ 007 7 PEE bo5) cruelgs y2 4 Se DE ede eel CaN eae ok SED 1۱ Ot ga thea 1 ee eRe er Caen | cacy ‏مى ين ست‎ زه << ميو PF (a < O) wu ‏ل ا‎ wt be vexnive."; ebe F (oc > (CO) pou << “lalou coud wot aa el eee 5 "م اميه بوايادا" >> تنوم

صفحه 199:
fom eM AN Brel bn ener pear eres A eres ‏اسف‎ ‏مب‎ ‎{ Mess the ‏رات‎ ‏)صم د سم‎ م ا وال ی ام و7779 00 مه سا بو له توب تسم 0 سنطكيوكه صط اص للنوص جكب عسويو نا ماده بصا 512101011116 امس ا 0

صفحه 200:
تااين لحظه تمام يارامترهايى كه در توابع ديديم به طریق ارسال شدااند. يعنى ابتدا مقدار متغيرى ‎ROO ES TEES er Scene eer cy‏ ‎TE RCE ae NC Bers) ew Ee gs]‏ Pee E Se ware te) mee pC EE cy ‏سيس اين مقدار به متغير محلى > در تابع فرستاده‎ ‏را آغاز می‌کند. در‎ Te Oe ne! is Pee Ey TP) ‏طی اجرای تابع ممکن است مقدار « تغییر کند اما چون‎ ۰ محلی است هیچ تغییری روی مقدار « نمی گذارد.

صفحه 201:
پس خود ‏ به تابع نمی‌رود بلکه مقدار آن درون تابع کپی می‌شود. ‎ee Oe ee See ae an eS SEE eer ee ne Leer)‏ به اين ترتيب تابع مى تواند مقدار »ارا بخواند اما نمى تواند مقدار »درا تغيير دهد. به همین دلیل به « یک پارامتر «فقط خواندنی» می‌گویند. SS as Re rer Se reap Coed eRe, eer NU BC) ‏استفاده كرد.‎ ا ال ا ا ل ا ان 5 ات مور مات ما 0 ۱ آن مقدار به تابع فرستاده می‌شود.

صفحه 202:
۰ ارسال به طریق )5 !2 (آدرس) ا ا ل ا ا ‎con ped es) peer Ov OS‏ ا 00 eel ee و ‎Pen‏ اوقات عمدا می‌خواهیم این اتفاق رخ دهد. یعنی می‌خواهیم که تابع بتواند محتویات 7 فرستاده شده به ‎ol‏ را دست‌کاری کند. در زا می‌کنیم.

صفحه 203:
براى اين كه مشخص كنيم يك يارامتر به طريق ارجاع ارسال مىشود. علامت رابه نوع يارامتر در فهرست پارامترهای تابع اضافه می‌کنیم. این باعث می‌شود که تابع ‎Pe Cree ee melt ic ann‏ ۳ خود آرگومان محلی را به کار بگیرد. به این ترتیب تابع هم می‌تواند مقدار آر گومان فرستاده شده را بخواند و هم می‌تواند مقدار آن را تغییر دهد. در اين.حالت آنن يارامتر يك يارامقر 22000 ص۳۰۳

صفحه 204:
هر تغييرى كه روى يارامتر ا 7 مستقيم روى متغير برنامة اصلى اعمال مى شود. به مثال زير نكاه كنيد. 0 ena oe ‏تابع كوج زير در مرتب كردن داددها كاربرد فراوان دارد:‎ votd swap(Ploot& x, Ploot& ‏(مر‎ ‎۱0/۳ ‏و مت مر‎ هدف این تابع جابجا کردن دو عنصری است ‎rr cae‏ ل ‎ree‏ 1۱ پارامترهای >«و مربه صورت پارامترهای ۱ ماما سنا

صفحه 205:
‎ee SIE Re ee Tee Sa eae pees‏ ارسالی ‎econo)‏ ا ‎Pow‏ ‎ed)‏ مد وت رم رات رت تیمک ‎ntsc, ca‏ | ‎Ha biel oleh oil ol wlohe)‏ ‎eek ee <a ee | ‎

صفحه 206:
وقتی فراخوانی ا می‌شود. »<به "اشاره | 1 ۹۳ ا ا ل فى كيرد و آنگاه»هقدار ‎as‏ ۳( ‎crow 06 2‏ 2 جابجا مى ‎eye)‏ . شکل ‎ne‏ نشان مى دا جابجايى ‎ae a oe‏ 5500006 1 float& float& لت ‎float‏

صفحه 207:
00 ‏ای سد لصا‎ oan oO ears 9) اين اعلان شامل عملكر ارجاع © براى هر يارامتر است. برنامهنويسان 4 ۳۹ ا و6 ۳ به عنوان پیشوند نام 0 1 است (مثل »« مها 1 د

صفحه 208:
۲ Beebe ENO ato) eat ed RCM Cape y eNO ee FCO ‏ل‎ ‏كه‎ nn}) poe wot eee) ‏ا‎ CA )) 27 Rye EY ‏ل‎ S| era eo AR eee dma ۳ OS | Pb) wou << "a= "<<u<<"\b="<<b << ocd ‏ارت وت‎ eS SE eR >> ‏للج >> ط‎ 0 7( ‏2و‎ 99,۲۶۶ 2606 ‏ات‎ ‎6 ۱

صفحه 209:
00 RIN Cod Cha Rae pear ced ۲)( ۳ 22 10 cane

صفحه 210:
در جدول زير خلاصة تفاوتهاى بين ارسال از طریق مقدار و ارسال 7 00 jint x Cee wee ‏*مترادفبا آركومازلست‎ | ‏و‎ آ رگومان ارسال شده از طبریق ارجاع فقط باید يك متغيس باشد آركومان نواندنى- نوشتنى است a ‏اه‎ ‎Pah a 4 eee Pee. Cee Pe sen CORP Ar Sia io wer) آركومان ارسال شده از طبریق مقدار می‌تواند يك ثابته يك متغيس یا یک عبارت باشد آركومان فتط خواندنى است

صفحه 211:
يكى از مواقعى كه يارامترهاى ارجاع مورد نياز هستند جايى است كه تابع بايد بيش از يك مقدار را باز گرداند. اا ۰۳ ۱ می‌تواند یک مقدار را 2 بنايراين اكر بايد بيش از يك مقدار بر كشت داده ‎eye)‏ اين 067 0 پارامترهای ارجاع انجام مى دهند.

صفحه 212:
۷ FY ea av OME? ae At PP ee dee SNCS Pe Be ioc ‏جح أمس جوج (محيط و مساحت) براى دايرهاى كه شعاع آن عدد‎ مفروض «است: ‎arcu, double& vircucPereue,‏ ل ب 0 ام ۸/۱ ان ‎Ne AS ahh ane ee oats‏ ‎Pac tg‏ رت ارت بت ره رت رت ره یت لا ل ‎Cod baat‏ ال ماس ات تس مت المع 1

صفحه 213:
برنامة آزمون تابع فوق و يك اجراى آزمايشى آن در شكل زير نشان داده شده است: ‎double)‏ گت مس مگ رز ‎oF a circle wits //‏ ام لعن يا يس يدا مه هط ۱ ‎Pe oe ain id‏ He AC ata

صفحه 214:
7 5 4 5 الوسداز طميؤلوجاع تلبت 06 ارسال يارامترها به طريق ارجاع دو خاصيت مهم دارد: ‎BC Srp pr ele SUNT SPC PP ek ie‏ ان كه از إشتال بى دورد حافظه 1 ‎SES)‏ ل ل اك .اين روش مانند ارسال از طريق ارجاع است با اين فرق كه تابع نمى تواند محتويات يارامتر ارجاع ‎nel Ment) Cromny By‏ 1 ۱ براى اين كه يارامترى رااز نوع ارجاع ثابت اعلان كنيم بايد ‎es‏ ا ا 0

صفحه 215:
مثال ۵-۱۵ ارسال از طریق ارجاع ثابت و ا ل ‎Dee En tn 2(‏ تک تصش Peet ee ee I eo Sd لو >> >>

صفحه 216:
۱ FR eH ‏امین‎ ‎ea anaes acd CO lc FE ado lar Peet he ed a ‏وت‎ 1 eC SRT Cre Seay | ‏ل‎ CRE be Ser ‏سس«‎ Rs aR ۰ 3 Se PILES Tee) CO Re we. wikis eerie) EIT OO Tae See beatae) ‏روى آركومان طهم تاثير مىكذارد زيرا ط‎ ‏از طريق ارجاع به تابع فرستاده شده.‎

صفحه 217:
ارسال به طریق ارجاع ثابت بیشتر برای توابعی استفاده مىشود كه 0 ‎eeC ep‏ ا ا ا ‎Pee age) Ce‏ ‎Lanes‏ ام ل ‎eee‏ ‏كه ‎pes Re. Wee) eee We Oe‏ ‎ee De net Te ele BES)‏ ا لت ‎ Yoy ren epre‏ ل ا 50

صفحه 218:
تسولبع بسپلسطه -19 تابعی که به شکل بی‌واسطه تعریف می‌شود. ظاهری شبیه به تولبع معمولی دارد با این فرق که عبارت ۲ در اعلان و تعریف آنن قبد شده است. ها اين همان تابع ۱ اس مرا ‎Race A aes‏ خم ار ها تما

صفحه 219:
0 SHS ‏امه‎ ‎۱ ار وه سس داشته باشد. مثلا اگر یک تابع بی‌واسطه مات ۰ خط کد باشد و این ‎ey‏ ۳ مختلیف ابو نامه اصیلی فراخوانی شوه هنگلمت. phi reser A رت ۲ 9 تلف کاهش د

صفحه 220:
چندشکلیسوایع -46 در + می‌توانیم چند تابع داشته باشیم که همگی ‎race)‏ دارند. در اين حالت ‎coer ee)‏ تابع مذکور چندشکلی دارد. شرط این کار آنن ‎CE ane eS Omer ror‏ تفاوت داشته باشد. يعنى تعداد يارامترها متفاوت باشد يا دست كم يكى از يارامترهاى متناظر هم نوع نباشند.

صفحه 221:
مثال 0-11 جندشكلى تابع >5 () ۱ Same) oe) 9 eee Ee i ee Ray) cea) ‏می‌گیریم:‎ رسمه 000 0 DR te ‏رسمه‎ تور 0 (66.6 .)وس >> ۲۰ i

صفحه 222:
tat cax(tet 2, tot v) ) | ‏یه‎ the wontkour oP the tty qed iiexers: vets (x < ‏مر‎ 2? x tp); } it wardtat x, toy, tz) :وه مورف ‎oP he tere‏ موم ‎the‏ بو | ) (ى, بای دص دجم عم ‎rea (z> a 22: w);‏ } ۳ es ae eae eis etiersd Ose xin nay ae MERE xe vehed Geet xt), ۷

صفحه 223:
1 ات مر 1 0 0 ‏م ا م ا مر‎ BED es 00 > tat 7-۳ ‏ارسال ا نسخه‌ای که دو‎ ‏يارامترهايش دارد فراخوانى مىشود. اكر اين نسخه‎ ‏وجود نداشته باشد. کامپایلر #اهارابه عطط ارتقا‎ ‏می‌دهد و سپس نسخه‌ای که دو پارامتر عاط دارد را‎ ‏فرا می‌خواند.‎

صفحه 224:
(kod ‏تابع‎ -۴ Fee EC ‏ل ل‎ Rey om ‏ا‎ eine Celt gs) ۳۳۳7 MONA ا ا ‎Pe tp Pee eel‏ مر ۳ در حقیقت هر برنامه کامل, از یک تابع 2-5 () به همراه توابع دیگر تشکیل شده است که هر یک از این توابع به شكل ‎OL SIO Li er ce rece‏ ات هرا ‎abe,‏ 0

صفحه 225:
خود برنامه با فراخوانی تابع ۵۳() شروع می‌شود. چون این تابع یک نوع باز گشتی ۱ دارد. منطقی است که بلوک ا ‎eS‏ ‏از كاميايلرهاى 0++اين خط اجبارى نيست و مىتوان آن را ذكر نكرد. مقدار صحیحی ا ل ا ل برمی گردد م ا | به این معنا که برنامه بدون خطا پایان گرفته است. oy ee el Te a gy mere DL mec) a) Peer Se Cee U eer Bers

صفحه 226:
مثال ‎0-١‏ استفاده از دستور هؤْه: براى يايان دادن به يى برنامه اماد ۱ ‎Casey oe)‏ ل ل 30 :لك ره ها ‎SSCs res res pC Fa‏ 530000 3 که اجرای دستور ا لضن ‎owe‏ ره << و << ويم ‎feed) hata kOe‏ ۱ ‎d << "=" << dd << ocd‏ << تا i نت يمد ين تت

صفحه 227:
6 که بتوا ‎epee yer‏ به شك ‎mA‏ ‏۳ ۱ ‎a 7‏ ‎je‏ که اجر ‎aes‏ ی بر ‎ree‏ 5 دج ۳ رش وجوه ‎ee‏ ‏رود 5 ; ‎cee‏ ل از این تمه ‎oe‏ : ‎a)‏ بلوک اصلی برسد) خا دهیم: ستفاده از دستو ۱ 90 ‎-١‏ اه اد ها

صفحه 228:
مثال ‎۵-۱۹٩‏ استفاده از تابع ۳۳4 برای پایان دادن به برنامه تمس ‎Se OO‏ دس رز ‎pout bbe‏ و Re a a دراين برنامة اكر كاربر عدد ‎٠‏ را و ی وارد كند. تابع كدص عدت ‎)(١‏ خاتمه مم می‌یابد و برنامه بدون هیچ مقدار :» عاططط ) ا ا << و :(0)سمواطجر >> لحو } buble reviprovd (double x) — Cxvepion RN A haa a es ‏م ل الس سان‎ dd ara acd ‏م00 یمس‎ +

صفحه 229:
توكومارهائه يثؤ رض 08 در (0)++ مىتوان تعداد ۱۳ يكد تابع را در زمان اجرا به دلخواه تغيير داد. BO per eR TS Rests oer co sore ee ger | ‏امکان‌پذیر است.‎ 9 SON SOG we Bee ROSE neve iC be ‏فهرست پارامترهای تابع و جلوی پارامتر مربوطه به همراه علامت مساوی‎ ۱ Ore Rey TP rd nl ee) nd a PORES De ‏ا‎ BMP res econ on el SIT ael Op cs

صفحه 230:
Bee ER URN be ‏ذا‎ ‏سم‎ ‎١ 5‏ 0-7 برنامة زير حاصل جند جملهاى درجه سوم را بيدا ‎eos‏ ‏اين مقدار از الكوريتم هورنر استفاده شده. به ی برأى كرأ بیشتر. محاسبه به صورت نوی نود داس ل ما ‎part << "p(x,P,Q) =" << p(x,P,O) << euch‏ ‎ont << "p(x,P,O,9) =" << p(x,P,O,9) << edd‏ ‎mnt << "p(x,?,98,5,F) =" << p(x, ?,9,S,€) << ead;‏ 0 ‏علط ‎=O,‏ الط ,420 الط ‎oral‏ تیا 2-0 ‎1 || ‏جصموور‎ oD + ol*x + O*%O + WO*O: 2-7 ‎rete WD + (ol + (GO + WO*K)*x) "x; ‏ری‎ ‎۱ ‏ی‎ = 66.0060 — 1 ‏يا‎ ‏©0106 د ( ۱۳

صفحه 231:
دقت كنيد كه يارامترهايى كه مقدار يب شفرض دارند بايد در فهرست ل ل ا ل ل ‎OM‏ // ال اي الي ‎P( tata, tab,‏ ةا ‎void u(tat a, tot b=O, tat o=P, tad, tot =O); // GRROR ‎Seep Ree See BoE NC. ely OL a Les ter Boece ‎Seen Be Ore ‏ل لل‎ San Oe ee TP RO rere Rec y) ‏لاسرم ‎Peep ee een) FEE ee)‏ ارا سار ‎Fer Oe Ney ۰‏ ‎

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

صفحه 233:

صفحه 234:
آنچه در این جلسه می خوانید - يردازش آرايهها - مقداردهی آرایه‌ها - ایندکس بیرون از حدود آرایه - ارسال آرایه به تابع ‎oreo OTe‏ ۱۳ -مرتب‌سازی حبابی 21:1 ‎Ce ye ee‏ 0

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

صفحه 236:
هدف هاى رفتازی: ا ام ا 00 ا ل ا 0 - آرايههاى ديك بعدىء و «جندبعدى» را تعريف كنيد. ا ا ا ا 1 - طريقة ارسال آرايه به توابع را بدانيد. - دجستجوى خطى» و «جستجوى دودويى» را به اختصار شرح دهيد. - «مرتبسازى حبابى» را به اختصار شرح دهيد.

صفحه 237:
وال ههد در برنامههايى كه دادههاى فراوانى را يردازش مى كنند ا ‎ar‏ ل معمولى کار ‎tee‏ ات زيرا بسیا ‎et‏ یر صر ‎ce)‏ يرو ‎Sere‏ زر شود. به ‎Neem eA) See EI ogee)‏ ‏تدارک دیده شده‌اند.

صفحه 238:
ا ا 0 0 د یک نوع هستند. به اين متغيرها ‎0١١‏ مىكويند. eC ‏ل ا ا‎ Orage) ‏شماره « » پا « » مى كويند‎ عناصر يك آرايه در خانههاى يشت سر هم در حافظه ذخیره می‌شوند. به این ترتیب آرایه را می‌توان بخشی از ص ‎ey ca at‏ مساوی تقسیم شده و هر قسمت به یک عنصر تعلق دارد.

صفحه 239:
1 عنصر [2]0 حاوى مقدار 11.8 وعنصر [2]1 حاوى 19.0 وعنصر |

صفحه 240:
پسردلزشآپلیدها -6 ۱ برنامة سادة زير يك آرايةٌ سه عنصرى را تعريف مىكند و سيس مقاديرى رادر 0 استفاده كرد. با اين تفاوت كه آرايه يك ملافيبر " مرکب است و برای دستیابی به هر یک از خال ایآ er ۱ 000 0 -]0[ > 9 لمج >> [0]ه >> " - [00]ه" >> نوم اد اس لمم >> [8]ه << "= ‎mat << "o[C]‏ }

صفحه 241:
نحو کلی برای اعلان آرایه به شکل زیر است: اس ماس رم سر تبارت ۷۳۶ تز2 حناعر آرایه را مشخص می‌کند. 1 ل لت ‎EC Raa: as‏ ا لت ‎a ree re OLD EC CH)‏ ۳ بايد داخل كروشه | قرار بكيرد.

صفحه 242:
‎neew roe OME)‏ ا ا ا 3 ‎Ha al] = 66 66 666 ‏به این ترتیب مقادیر داخل فهرست به همان ترتیبی که چیده بر 00 ‎EEL See ae) Dea)‏ له ‏يس همين خط مختصرء آرايهاى از نوع وبانام وبا تعداد ی رها هی ااا فهررست. ترس مى كند. ‎0 ۵9 4 ‎68.8 ‎ ‎ ‎ ‎ ‎ ‎

صفحه 243:
مثال ۶-۳ مقداردهی آرایه با استفاده از فهرست مقداردهی ‎ESS CHE SOCAL: 0‏ 1 ‎int main()‏ ‎float al] = { 22.2, 44.4, 66.6 };‏ { ‎int size = sizeof(a)/sizeof(float);‏ ‎for (int i=0; i<size; i++)‏ ‎ceed NN ga (eee) ee) eer >‏ الاو ‎endl;‏ ‎y ‏ره‎ ‎

صفحه 244:
هنكام استفاده ‎I‏ براى اعلان آرايه. مى توانيم تعداد عناصر آرايه را هم به طور صريح ذكر كنيم. در اين صورت اكر تعداد عناصر ذكر شده از تعداد عناصر موجود در فهرست ۳ پیشتر باشد. خانه‌های بعدی با مقدار صفر پر می‌شوند: ‎float a[7] = { 55.5, 66.6, 77.7 };‏ ‎ol Secor nas ah Gig oa a a Ica SS aS‏ دك سكي وفيس رس تعن سو سي ارو و ل اش 9 ‎float a{3] = { 22.2, 44.4, 66.6, 88.8 }; // ernon: too many‏ & یی ون 5 ۵.00 م

صفحه 245:
یک آرایه را می‌توائیم به طور کامل با صفر مقداردهی اولیه کنیم. برای مثال سه اعلان زیر با هم برابرند: float a[ ] = { 0, 0, 0, 0, 0, 0, 0, 0, O }; float a[9] = { 0,0}; float a[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ‎Lee‏ مسد ‎ye wee RCN Que!‏ لاسي هس با و کت امتفاده نشود. ‏درست مثل یک متفیر معمولی. اگر یک آرایه مقداردهی اولیه ‎yee Sear lip een arse tel ew nye)‏

صفحه 246:
مثال ۶-۵ یک آرايةٌ مقداردهی نشده برنامةً زیر آرایةً 8 را اعلان می‌کند ولی مقداردهی نمی‌کند. با وجود اين: مقادير موجود 00 راجاب مىكند: int main() { const int SIZE=4; // defines the size N for 4 elements float a[SIZE]; // declares the array's elements as float for (int i=0O; i<SIZE; i++) cout << "\ta[" << i << "] =" << afi] <<

صفحه 247:
آرايهها را مى توان با استفاده از عملكر جايكزينى مقداردهى :کرد اما نمی‌توان مقدار آن‌ها را به یکدیگر تخصیص داد ا تك ا نر ;} .7° رس Ain HR C(O acca et همچنین نمی‌توانیم یک آرایه را به طور مستقیم برای مقداردهى به لا در رن ‎Pred‏ ‏ارق فونه ميهف د إسادونة Pou bP] = uj ۱ ‏نتب‎ orreps coset be wed ow carers!

صفحه 248:
۴- ایند گس بیرون از حدود آرابه 1 نمی‌تواند از محدودهٌ تعریف شده برای آن بیشتر باشد. ۳ ۳3 در پاسکال اگر آراية با تعداد ينج عنصر تعریف شده باشد و آنگاه [ 7 ]3 دستیابی شود. برنامه از این سیستم حفاظتی در وجود ندارد. مثال بعدی نشان می‌دهد که ایندکس یک آرایه هنگام دستیابی می‌تولند بیشتر از عناصر تعریف شده برای ‎OF‏ ‏باشد و باز هم بدون این که خطایی گرفته شود. برنامه ادامه یابد.

صفحه 249:
مثال ۶-۶ تجاوز ایندکس آرایه از محدودةّ تعریف شده برای آن 7 یک خطای ‎o ley]‏ 0 ی Ea) { woost ct GILE=4; pa Ama) ee oe) pes ‏وت‎

صفحه 250:
سا ره ۳ ۲ ep OE Ree EOr RAE Cree yo Se Oe TS Meee bBo Hse ‏متغير به طور ناخواسته تغيير كند:‎ ۱ const int SIZE=4; float al] = { 22.2, 44.4, 66.6 }; float x=11.1;

صفحه 251:
بعد از اعلان شده. يس يى سلول جهاربايتى بلافاصله بعد از دوازده بایت آرایه به آتن تخصیص می‌یابد. بنابراين وقتى برنامه تلاش مى كند مقدار 88.8 را در [3]3 قرار دهد (كه جزو آرايه نيست) اين مقدار به شكل ناخواسته در ‎[Sus‏ 0 00 منبع خطا را كشف كنيم. حتى ممكن است به اين روش دادههاى برنامههاى ديكرى كه در ‎pea ees ca‏ 1 ‎x 88.8 7 erm e i -corecde <a Re) a‏ می‌گویند. این وظيفةٌ برنامه‌نویس ۱ ی ۱ رس ۲ ۶۶۶

صفحه 252:
مثال ۶-۸ ایجاد استثنای مدیریت نشده مه نر ا ا ا ‎a)‏ ل اك ‎ae‏ ‏۰0 ‎vost et OVLO=P;‏ { ‎Poa of] > ) 69.6, 660.62, 69.6‏ :200.0 مراع mat << "x=" << x << ocd;

صفحه 253:
وقتى اين برنامه روى رايانهاى با سيستم عامل ويندوز اجرا شود. یک صفحهٌ هشدار که در شکل نشان داده شده ‎Syl etwas)‏ و این پنجره بیان می‌کند که برنامه تلاش دارد به نشانی 06 از حافظه دستیابی کند. این مکان خارج از ‎reat ol pene) tt pen a reer] py vere a etc‏ | بنابراين سيستم عامل برنامه را متوقف مى كند.

صفحه 254:

صفحه 255:
ارسل[آیلیه سه تسلبع 5۰ ۱ كاميايلر مى كويد: ۱-اين که نام آرایه 3 است ۲- عناصر آرایه از نوع 1031] هستند. سمبل 3 تشانی حافظة آرایه را ذخیره می‌کند, ارم 2 برد ا ا ا ا ‎Tee)‏ ا ا ..یعنی فقط نوع آرایه و نشانی حافظةً آن به عنوان پارامتر به تابع فرستاده می‌شود.

صفحه 256:
ا ا ل ل ‎int sum(int[],int);‏ ‎int main()‏ ‎int al] = { 11, 33, 55, 77};‏ { int size = sizeof(a)/sizeof(int); cout << "sum(a,size) = "<< sum(a,size) << endl;} ee Cae) PD) 4 ‏نو 0>-طاناد ام[‎ for (int i=0; i<n; i++) اب ده :111 <+ با اناك اناعم

صفحه 257:
هنكام فراخوانى تابع نيز از عبارت ‎SuM(a,SIZE)‏ ‏استفاده شده كه به تابع ارسال شده. نام آرایه در حقیقت نشانی اولین عنصر آرایه است (یعنی ات تابع از این نشانی برای دستیابی به عناصر آرایه استفاده مى كند. همجنين تابع مى تواند با استفاده از اين نشانى, يس ارسال آرايه به تابع شبيه ارسال متغير به طريق ارجاع است.

صفحه 258:
3/۰ ی CAB ‏ا‎ er) 0 ‏در این برنامه از تابع‎ COIN ese Sema Ups ne ney eS CAD ‏ساب د شرك‎ void read(int[],int&;) void print(int[],int); int main() { const int MAXSIZE=100; int a[MAXSIZE]={0}, size Pa

صفحه 259:
void (int a[], int& n) cout << "Enter integers. Terminate with 0:\ 5 ۲۱ < 0: do { cout << "a["<<n<<"]:"; cin >> a[n]; { while (a[n++] !=0 && n < MAXSIZE); --n; // don't count the 0

صفحه 260:
7010 ‏(صغصا ,[]ه غما)‎ for (int i=0; i<n; i++) ‎we‏ >> []ة 22 نوه ‏جون ‎١‏ يك متغير است, براى اين كه تابع [30©() بتواند مقدار كن را تغيير دهد اين متغير بايد به شكل ارجاع ارسال ‏شود. ‏همجنين براى اين كه تابع مذكور بتوائد مقادير داخل آرايه 3 را تغيير دهد. آرايه نيز بايد به * طریق ارجاع ارسال شود؛ 1 ۱ ‎

صفحه 261:
Cr Sy Pe SAH DP OOS) HID Ieee he eto D ICH Sires OMB) ‏استفاده می‌شود:‎ ۱ soa orga) bee oes) تعداد نوع تابع با استفاده از اين سه عنصر مىتواند به تىك تى ‎pecan ome Fl pd rr 4‏

صفحه 262:
آدرس اولين خانة آرایه. همان نام آرايه است. پس وقتی نام آرایه را به تابع بفرستیم آدرس اولین خانه ‎Pee ay‏ ye Weay) tae Snes Be BES Ep] Ere بتابراین با این دو مقدار, تابع می‌تواند به آرابه دسترسی داشته باشد.

صفحه 263:
1 eM Oe LE ond E>) 1 owe a ern Se Sco Mp SNES oI Oe ‏می‌کند:‎ { int al] = { 22, 44, 66, 88 }; cout << "a =" <<a <<endl; // the address of 2]0[ cout << "a[0] =" <<a[0]; // the value of a[0]

صفحه 264:
۶- الگورینم جستجوی خطی آرایه‌ها بیشتر برای پردازش یک زنجیره از داده‌ها به لاد 2 اغلب لازم است كه بررسى شود آيا يك مقدار خاص ‎mee uey yn)‏ ا 2 0 0220000 32 ا ل ا ا 6 همة عناصر آرايه را جستجو نماييم تا بفهميم كه مقدار مورد نظر در كدام عنصر قرار كرفته. به اين روش ا ا می‌گویند.

صفحه 265:
سل امس برنامةٌ زير تابعی را آزمایش می‌کند که در این تابع از روش جستجوی خطی برای یافتن یک مقدار خاص استفاده شده: int index(int,int[], int); int main() { int al] = { 22, 44, 66, 88, 44, 66, 55}; cout << "index(44,a,7) endl; cout << "index(50,a,7) endl; "<< index(44,a,7) << "<< index(50,a,7) << KS)

صفحه 266:
تابع سه يارامتر دارد: 0 ‏ل ا ل‎ By ‏ا ا ل تن‎ ‏برابر باشد ایندکس آن عنصر باز گردانده شده و تابع خاتمه‎ " ‏می‌یابد.‎

صفحه 267:
1 ‏ا‎ eed ‏مقدارى خارج از ايندكس آرايه بازكردانده مىشود كه به‎ این معناست که مقدار در آرابةً ۱ ‎PN eae SCC De 2 eS Te Se‏ واقع است و در اجرای آزمایشی دوم مشخص شده ا ا ا ۱ ا ل ه فقط تا 0000 عنصر داردء مقدار /ا نشان می‌دهد كه ‎٠‏ در ارايه موجود نیست).

صفحه 268:
حونبسازمی‌هبلبی- 7 ۱ است. ‎ses Steel by‏ ا ل | در هر مرتبه بزرگ‌ترین عنصر موجود به سمت بالا ‎Bey‏ ا ا ا ۱ مرتبة بعدى يكى كاسته مى شود. در يايان همة يويشهاء آرايه مر تب شده است.

صفحه 269:
1 ‎.١‏ اولین عنصر آرایه با عنصر دوم مقایسه می‌شود. ‏۲ اگر عنصر اول بزرگ‌تر بود. جای این دو با هم عوض می‌شود. ‏۳ سپس عنصر دوم با عنصر سوم مقایسه می‌شود. ‏۴ اگر عنصر دوم بزرگ‌تر بود. جای این دو با هم عوض می‌شود ‎۱ ‎۳ Leer Ee nee Tees nee pI ‏05 ان تااات محدوده جستجو یکی کاسته می‌شود ‏1 ۱ ‎ey‏ ا ال اا ا ا ل 000 اذام مى يابد تا اين كه الا ا |

صفحه 270:
ات 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);

صفحه 271:
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

صفحه 272:
تابع :5011() از دو حلقة تودرتو استفاده می‌کند. ‎-١‏ حلقه 101 داخلى زوجهاى همسايه را با هم مقايسه می‌کند و اگر آن‌ها خارج از ترتیب باشند. جای آن دو را ‎ped)‏ کون می‌کند: ‏وقتی ۲0۲ داخلی به پایان رسید. بزرگ‌ترین عنصر موجود در محدودهٌ فعلی به انتهای آن هدایت شده است. ۲-سپس حلقةً ۲ بیرونی محدودهٌ جستجو را یکی کم ‏"می‌کند و دوباره ۲0۲ داخلی را راه می‌اندازد تا بزرگ‌ترین عنصر بعدی به سمت بالای آرایه هدایت شود.

صفحه 273:
۸- الگور بتم جستجوی دودویی ‎nL‏ م ا ا 2 ااا لل 2 تقسیم می‌شود. ”مقدار مورد جستجو با . . . . ‎ .‏ بخش پایینی ۳ oe ee SLs ie ae EE reece ‏بالايى به دنبال آن كشت.‎

صفحه 274:
دو بخش تقسیم می‌گردد و سرانجام محدودةٌ جستجو به یک عنصر محدود می‌شود که پا آن عنصر با مورد جستجو برابر است و عنصر مذكور يافت شده و يااين كه آن عنصر با ‎ame a‏ ل ا

صفحه 275:
مثال ۶-۱۴ Pee Cee ae roe ee onl ‏ل‎ Oley Pep yee ee) ‏زير آمدهاز روش جستجوى دودويى براى يافتن مقدار درون آرايه‎ استفاده مى كند: int index(int, int[],int); int main() { int a[] = { 22, 33, 44, 55, 66, 77, 88 }; cout << "index(44,a,7) = " << index(44,a,7) << endl; cout << "“index(60,a,7) = " << index(60,a,7) << endl; p

صفحه 276:
int index(int x, int a[], int n) {_ // PRECONDITION: a[0] <= a[1] <= ... <= a[n- 1]; // ۵۱۳۵۲۷ 6۵۲1 int lo=0, hi=n-1, i; while (lo <= hi) 5 1 < )۱0 + (2۶ /{ the average of lo and | if (a{i] == x) return i; if (ali] < x) lo = i+1; // contint ‏و‎ else hi = i-1; // continue searct ۳۵ a 3 Be

صفحه 277:
Fenn es pee CBT ‏ا‎ organ Pp yes 2 cles) index(44,a,7 وقتی حلقه شروع می‌شود. ۰ ۰ رو ۱۱2و ۱050 ‎I‏ ‏است. ابتدا مقدار .. . . رامی‌گیرد.پس عنصر . عنصر ‎DNS cul Lyle lao cael UIT aang‏ مقدار بزرگ‌تر است. پس در نيمه بالایی نیست و جستجو ‎FPO eee ee)‏ ۱۳ مى شود و حلقة تكرار مى كردد.

صفحه 278:
‎Ve‏ 9 است و دوباره عنصر وسط آرايةٌ ‎oh) ep)‏ ۱ با است که کوچک‌تر از می‌باشد. پس این دفعه . ‎٠ we bal‏ می‌شود. ‏در سومین ‎ec aed akontres‏ 952 است. پس عنصر ‎ay ees‏ که همان ۱۰ است با . مقانسه می‌شود. . برابریا . است که‌با ‏ برابر است. پس مقدار ‏ باز گشت داده می‌شود؛ یعنی ۰ مورد نظر در 5۳21 وجود دارد.

صفحه 279:
144 44 44 ues aie 55 33 44 fix cng to

صفحه 280:
ص 1 2 2 ا ل 0 00 2 و اشلت ‎al0..6) Col a es‏ 520 ۰ است که از . کوچک‌تر است. پس ۰ برابر ‎oe ey oe‏ ۳ بت وع۱ا۳ر ‎ors eS lO=4‏ رر ۰۳۰ ‎al 4..6]‏ ی ‎٩151277‏ رست کر ر‌تر از ‎X‏ ‏می‌باشد. ‎Pr ot‏ اا تغییر می‌یابد و دوباره حلقه س 010 ‎ohl=4‏ 10-4 ست ودر 5-7 رگ ۰-۵۱4 ۱8۱4[2660 " 1 بزرگ‌تر از ۲ می‌باشد. لذا به ‏ کاهش 5-0

صفحه 281:
0 6 3 55 < 60 4 5 77 > 600 ار 66 4 4 اكنون شرط حلقه غلط مىشود زيرا ‎ay eee cee |‏ م ل ۳ يعنى عنصر مورد نظر در آرايه موجود نيست.

صفحه 282:
در تابع فوق هر بار که حلقه تکرار می‌شود. محدودةٌ جستجو ‎/05١٠‏ كوجكتر مى شود. در آراية عنصری. روش جستجوى دودويى حداكثر به تت تت ل ا ‎Be‏ ۱ [eo است.

صفحه 283:
تفاوتهاى جستجوى و فظی ‎Sg ©‏ ازجستجوی است. ‎gees Ber‏ ال ا ا ا ۱0| مقادیر یکسانی باشند. آنگاه جستجوی خطی هميشه 7 ا ان ل ‎ee‏ 0 لك جستجوى دودویی را گفت ‎4s‏ کدام ایندکس 0 4

صفحه 284:
| Cee eS SONG ee on INE و 7 220 bool isNondecreasing(int a[], int n); int main() ‎int a[] = { 22, 44, 66, 88, 44, 66, 55 };‏ { بلس ک>( )مهس >> ۲ ع ( )وله > لو ‎DOUE<"sOouderreustr((a,?) =" << eQ@paderreusty(a,?) << ral:‏ ‎1

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

صفحه 286:
این تابع یک بار کل آرایه را پیمایش کرده و زوج‌های ۵11-11 و [3]1 را مقايسه م ىكند. اگر زوجی یافت شود که در آن [211[>]1-1 باشد. مر تب نیست. ببینید که مقادیر ۲۱16و ۲۵156 به شکل اعداد )9 + در خروجی چاپ می‌شوند زیرا مقادیر بولی در حقیقت به شکل اعداد صحیح در حافظه ذخیره می‌شوند.

صفحه 287:
‎ree eae oe‏ پر نت نون رنه ‏ار ] ‏بل یر اب رت تشر برس رت ‏ركشت . . می‌توان اجرای یک ‏برنامه را به يى شرط وابسته كرد. ‎PES Se ‏ا ل ا‎ ee ‏و ‎teat‏ باشد. برنامه را خاتمه داده و موضوع ۳ ‏به سیستم عامل گزارش می‌کند. اگر مقدار آر گومان باشدء برنامه بدون تغيير ادامه مى يابد. ‎eave) <Cassert> 15-5 08551 4! ‏شاد است.

صفحه 288:
ات۱ :1ك رات کردن یک پیش‌شرط برنامة زير نسخة بهبوديافتهاى از تابع ‎١‏ مثال 1١-ء‏ را آزمايش مىكند. در اين نسخه.ء از تابع ۲۵۵ 1ف ذا ]|0 نثال 16كء استفاده كوه 7 00 نتيجه اين تابع به تابع ‎١‏ ارسال مىكرددتا ا ا 0

صفحه 289:
#include <cassert> // defines the assert() function #include <iostream> // defines the cout object using namespace std; int index(int x, int af], int n); iat Tl) { int a[] = { 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) <<

صفحه 290:
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; ۱۱) ‏فا‎ ‎if (a[i] < x) lo = i+1; 2) ‏آط‎ - 1-1: ١ return n; ااا 000 1

صفحه 291:
لك لك ل ا 990000 | ل 00 ا 000 فراخوانی(۱۱۵6)44,3,7 تب ان در ‎ev‏ ‏232-20 ارسال مىكند و برنامه ادمه مىيابد. اما در دوس فراجواتى 22 41-40 ‎ch‏ مر شود ا مقدار ‏ رابه تابع ‎Qassert‏ ارسال کند که ‎DP)‏ این تت برنامه 20 می‌شود ‎tT) CUD) Arey hen a ye eT Bere)‏ |

صفحه 292:
ملستفاشت ازبافولع شسمایشوور آرلیه -9

صفحه 293:
به خاطر بیاورید که انواع شمارشی به شکل مقادیر عددی ذخیره می‌شوند. اندازة آرايه. 581-21 است زيرا 58:7 مقدار صحيح ع را پا ‎FS)‏ ‏ترا 19 استفاده از انواع شمارشى در برخى از برنامهها باعث مى شود كه ‎Jlio yo Vio ogc Mol oS‏ ۶-۱۷ کنترل حلقه به ‎JESS‏ باعث می‌شود که هر بیننده‌ای حلقةٌ ۴0۲ بالا را به خوبی

صفحه 294:
| ‏ا‎ ‎pe een OC pecs یک نوع جدید به نام تعریف می‌کند که متفیرهایی از این نوع می‌توانند ‎UBLUE UGREEN LYELLOW LORANGEL sp. wl‏ ‎A al eee Oe oni ee ere Clete Bay‏ مر و ای ‎Poa per‏ ‎BEDE; BLUE ,RED ,GREEN os 54‏ زر ۱ ‎BL Sh cote ba‏ یدای ‎etl ts‏ ‎pais VIOLET+1‏ OER RT TTI aah pe (10102 01

صفحه 295:
1 EY) eon ree) re ‏يك نام مستعار براى يك نوع‎ 0 ‏استاندارد موجود تعريف مى كند.‎ ‏نحو استفاده از آن به شكل زير است:‎ تحت ‎typedef‏ ‏كه یک نوع استاندارد و 21135 نام مستعار برای wl Ol

صفحه 296:
jllon~ ‏"اس‎ عبار اكر دستور رابه شكل زير بكار بارت ل ا 00 لقع تعريف كنيم: لومي اد ]لا 4 بود ‎Inte‏ soe) frequency[64]

صفحه 297:
دستور ۱ به یک نوع موجود نام مستعاری را بت می‌دهد. 1 00 ‏ا‎ ‎FAC] Re] poy ee Se ‏بكار اك‎ Eran) hp ee Se) ee 0 erro) PRE Seep OU pTS DEN Tee] ever ne yc) ‏در تابع +20 به كار رفته است:‎

صفحه 298:
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.711 print(a,8); sort(a,8); print(a,8); I

صفحه 299:
void sort(Sequence a, int n) { for (int i=n-1; i>0; i--) for (int j=0; j<i; j++) if (alj] > alj+1]) swap(alj],alj+1]);

صفحه 300:
آملیه‌های‌چند بسعدی-1 1 ل ا ۱ ‎Ap Cap evowr)‏ ا ا ‎ie‏ تعريف كنيم كهاز نوع آرايه باشد. يعنى هر خانه از آن آرايه. خود يك آرايه باشد. ‎t—t«éi wT eS pl‏ 0 يك آراية دو بعدی آرایه‌ای است که هر خانه از آن» خود یک آراية يك بعدى باشد. يك آراية سه بعدى آرايهاى است كه هر خانه از آن يك ارابة دو بعدی باشد.

صفحه 301:

صفحه 302:
[۱ ee torte el 7) Bye Ie SS TOT Ren ee Sete ens void print(int a[][5]); int main() { int a[3][5]; read(a); print(a);

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

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

صفحه 305:

صفحه 306:
1۳ On Pome nge s oNN) Ee ‏ا ا‎ s) pee] gee eee BCBS) مثال ١٠٠-ع‏ يردازش يك آراية دوبعدى از نمرات امتحانى const NUM_STUDENTS = 3; const NUM_QUIZZES = 5; typedef int Score[NUM_STUDENTS] [NUM_QUIZZES]; void printQuizAverages(Score); rintClassAv

صفحه 307:
int main() { Score score; cout << "Enter " << NUM_QUIZZES << _" quiz scores for each student:\ 3 read(score);

صفحه 308:
) { for (int s=0; s<NUM_ STUDENTS; 5++( { cout << "Student "<<s <<": 1 1 for(int q=0; q<NUM_ QUIZZES; ‏(++و‎ cin >> score[s][q];

صفحه 309:
void printQuizAverages(Score score) { for (int s=0; s<NUM_STUDENTS; s++) { float sum = 0.0; for (int q=0; q<NUM_QUIZZES; q++) sum += score[s][q]; cout << "\tStudent "<< s << '";" << sum/NUM_QUIZZES << endl; 3

صفحه 310:
{ for (int ۱00۱۳۵۵20 ‏عن‎ +( { float sum = 0.0; for (int s=0; s<NUM_STUDENTS; s++) sum += score[s][q]; cout << "\tQuiz "<< q << '":" << sum/NUM_STUDENTS << endl; /

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

صفحه 312:
| اين برنامه تعداد صفرها را در يك آراية سه بعدى مى شمارد: 1۳ (int afJ[4][3], int n1, int n2, int n3); int main() i tle ‏شاك‎ St {5,02}, {0,0,9},{4,1,0}, 1 1 £3,0,0}, 85,0}, 10/00, 12,0,9( ۳ cout << "This array has " << numZeros(a,2,4,3) <<" zeros:\n";

صفحه 313:
۱18۱771۱ int n3) { int count = 0; for (int i = 0; i < n1; i++) for (int j = 0; j < n2; j++) for (int k = 0; k < n3; k++) oe ۳ 5-55

صفحه 314:
توجه كنيد كه آرايه چگونه مقداردهی شده است. این قالب مقداردهى به خوبى نمايان مى كند كه آراية مذكور يى آرايه دو عنصرى است كه هر عنصرء خود يى آراية می‌باشد. پس این آرایه در مجموع ۲۴ عنصر دارد. لك ۱-۱ ۱19۳-۳4 و یا مانند این int 2004131 = {{5,0,2,0,0,9,4,1,0,7,7,7}, {3,0,0,8,5,0,0,0,0,2,0,9}}; هر سة اين قالبها براى كاميايلر یک مفهوم را دارند اما با نگاه کردن به دو قالب اخیر به سختی می‌توان فهمید که کدام عنصر از آرابه. کدام مقدار را خواهد داشت.

صفحه 315:
یار خلسة سسم

صفحه 316:
9 ۰ رز «اسساه ام ارب 555 ,اشارهكرها و ارجاعها ؛

صفحه 317:
آنجه در این جلسه می خوانید ۱-عملگر ارجاع 7 ۳ - مقداريابى ا 0 - بازكشت از نوع ارجاع ‎es Fp) lea‏ ۱۳ >>>

صفحه 318:
7- عملگر ‎New‏ ‎delete jstc__‏ - - آرایه‌های پویا - اشاره‌گر ثابت ا ا -اشارهكرى به اشارهكر ديكر -اشارهكر به توابع ‎ .‏ ۱

صفحه 319:
هدف کلی: آشنایی با اشاره گرها و نحوةٌ کار با آدرس‌های حافظه هدف‌های رفتاری: انتظار می‌رود پس از پایان این جلسه بتوانید: 1 ee En om eee ne vee res - «اشاره گر» 7 1ك مختلف ايجاد كرده و آنها را مقداريابى كنيد. >> >»

صفحه 320:
- «چپ‌مقدارها» و «راست‌مقدارها» را تعر یف كرده و آنها را از یکدیگر تمیز دهید. - باز گشت‌هایی از نوع ارجاع ایجاد نمایید. - طريقة استفاده از عملكرهاى الا © و ©]0)©|©1 و وظيفة هر يك را بدانيد. | آرایه‌های ایستا ذکر کنید. - آرایه‌های پوبا را در برنامه‌هایتان ایجاد کرده و مدیریت ۳ -ثفاه‌ت ب- الالا هه إن ا دهد

صفحه 321:
2 حافظة رايانه را مىتوان به صورت يى آراية بزرك ‎»bs yo‏ 23,5 ا ا 9500007 60 در حقيقت حاوى آرايهاى بهاندازة ‎a‏ ل ا 2 رك 1۱7 خانه یک بایت است. این خانه‌ها دارای ایندکس صفر تا ۲۶۸۰۴۳۵۰۴۵۵ هط

صفحه 322:
آدرس-های حافظه را با اعداد شانزده‌دهی نشان 0 اكه مذکور دارای محدوده آدرس 4[ تا 000۲۲۲۲۲۲ می‌باشد. هر وقت كه متغيرى را اعلان مىكنيم, سه ويزكى اساسی به آن متفیر نسبت داده می‌شود: : «نوع 0 دنام متغیر» و «آدرس حافظه» آن. ل ال ا لل ات

صفحه 323:
n Oe) ‏ااا ل‎ 10 الا ات ل | ۱ در بالاى جعبه است و ادرس متغير در سمت جب ‎crag‏ 0 و ‎PROS heel eee‏ در بيشتر رايانهها نوع :]11 جهار بايت از حافظه را اشغال ا ل ا 1 ان داده شده است. متفیر ۲۱ یک بلوک چهاربایتی از حافظه را اشغال می‌کند که شامل بایت‌های 000506060 تا 000506063 است. توجه کنید که آدرس شی. آدرس اولین بایت از بلوکی است که شی در آلن جا ذخيره شده.

صفحه 324:
‎A esto PN CoP Ete See‏ 01[ مقداردهى اوليه شود. آنگاه ‎Sy eel ee ae Deedee Sa‏ می‌شود. ‎0x0050cdb8 ‎0x0050cdb9 ‏ا‎ | ‎int ‎clita: (on 0x0050cdc2 0x0050cdc3 000506064 0x0050cdc5 ‎

صفحه 325:
ل ا ا ‎Be‏ ‏عملگر ارجاع ۱ 4 استفاده نمود. به این عملگر «علمگر آدرس» نیز می‌گویند. عبارت آدرس متغفیر ۳۳9 دست مى ذهد. ‎int main()‏ { int n=44;

صفحه 326:
خروجی نشان می‌دهد که آدرس- 1۱ در این اجرا برابر با 3 است. مى توان فهميد كه اين مقدار ا ل ‎Been SSS Se Ce pee‏ داده شده. اعداد شانزدهدهى را از روی علامت *0 مىتوان تشخيص داد. معادل دهدهى عدد بالا مقدار ۹ می‌باشد.

صفحه 327:
لرجاع‌ها -3 | نحو اعلان یک ارجاع به شکل زیر است: type& ref_name = var_name; 022 6 ‏ا د الل ل‎ ‏ار 0 كت‎ 1 Orne Cree Yeu] Capua int& rn=n; // ۱5 asynonym for n 7 ey may leer ane ۱

صفحه 328:
هميشه مقدار بکساني‌دارند اگر کاسته شود. ‎So ee ee eee poe]‏ 1 نيزلفزليشيافته لست

صفحه 329:
‎a teed ieeerlcey‏ ۳ باید هنگام اعلان مقداردهی اوليه شوند با اين تفاوت كه مقدار اولية يى ارجاع. يىك متغير است نه يك ليترال. اشتباه ‎/۱ ۲۴۵۴: 44 ۱6 ۱0۵۲ 2 ۷۲۵0۱ ‏۱ ‏بدانند ولی با نشان دادن یک هشدار اعلام می‌کنند که یک متفیر موقتی ایجاد شده تا ۰ . به حافظةٌ آن متغیر. ارجاع ‏داشته باشد.

صفحه 330:
زد متغیر نیست. یک متفیر. فضای ذخیره‌سازی و نشانی مستقل دارد. ‎AE COSCON PCO Cmaa hy eo‏ 1 ‎Soe ee ate es‏

صفحه 331:
مشلل!-۷ ارجاع‌ها متفیر های» ستقل:یستند * int main() { int n=44; int& rn=n; // rn is a synonym for n cout <<" &n="<< &n <<", &n=" << &n << endl; alka dada // rn2 is another synonym = ین 0x0064fde4, ‏روت‎

صفحه 332:
n Pe TOME ES PES CS ‏ا‎ STE On eeae .دنتسها١ ‏است. (1او 102و 13 ارجاعهايى به‎ ۲03 ‏خروجی نیز تایید می‌کند که آدرس ۲ و ۲02و‎ با آدرس ۲۱ یکی است. ارجاع‌ها ‎pew)‏ برای ساختن پارامترهای ارجاع در توابع به ۷1 می‌روند. تابع می‌تواند حون 57 0 را كه ‎tin ee‏ ند اواك ‎ar‏ را ‏تنها فرق اين است كه دامنة 7 ‎fel ee.)‏ ‎Bear oie‏ لت ‎۳

صفحه 333:
7 ee eo مىدانيم كه اعداد صحيح را بايد در متغيرى از نوع ‎int‏ ‏نكهدارى كنيم و اعداد اعشارى را در متغيرهايى از نوع ‎float‏ | DNC Ser Pel Meh D1 eee ean de] Fee ‏وف ا ا‎ bool - |

صفحه 334:
عملگر ارجاع 6 آدرس حافظة یک متغیر موجود را به ‎OMA Ke) ee Ee Rene)‏ آدرس 00 ‎Byer oe‏ متغفیری که یک آدرس در آن ذخیره می‌شود ناميده مى شود براى اين كه يك اشارهكر اعلان كنيم., ابتدا بايد مشخص کنیم كه آدرس ‎Ep te‏ داده‌ای قرار است در آن ذخیره شود. سپس از عملگر اشاره * استفاده م ىكنيم تا اشارهكر را اعلان كنيم.

صفحه 335:
برای مثال دستور : - آدرس يك شى از نوع ‎BESS epee SAL‏ اشارهكرى از نوع * ذخيره كرد و آدرس يك شوازنوع 93]6]رافقط مىتوان در اشارهكرى از نوع ‎yee no‏ ل ل ام ‎CIETY‏ ل ‎RON‏ اده ‎4S‏ نوع متغيرهايى است كه اين اشاره كر آدرس ا ا ۳ اشارة كر ‎owe‏

صفحه 336:
۱۳ Cee a EE برنامة زير يك متغير از نوع 1118 به نام 19 و يك اشاردكر از نوع 1131* به نام 013 را اعلان مىكند: n= 44, &n = 0x0064fddc pn = 0x0064fddc ۱۳ ‏الا‎ ® con = ox0064fdeo int main() Couey SY Sa) ee sa ‏کی ۲ ح‎ &n << endl; int* pn=&n; // pn holds the address of n cout <<" pn =" << pn << endl; RS Le epee BAN | ‏رم‎ er eR) | ‏سر رد ی‎ ere ‏د 3 ل و‎ fl

صفحه 337:
متغیر ۲۱بامقدار ۴۴ مقداردهى ‎ree)‏ آدرس ۱ 3 ‎db ,0 Ox0064fddc‏ درس ‎]١‏ مقداردهى شده. يس ا وه ۱۳ 020064100 است (خط دوم خروجى اين موضوع را تاييد 00064100

صفحه 338:
اما یک متفیر مستقل است و آدرس مستقلی دارد. كلدل ‎SN‏ ۳ ناك سك دده كما سوم وقتی می‌گوییم.. ۱۳۳5 . به اشاره می‌کند» g pn ‏یعنی درون‎ 5 ‏دارد.‎ eC oP

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

صفحه 340:
| این برنامه همان برنامهة مثال ۷-۴ است. فقط یک خط کد بیشتر دارد: int main() | ‏ا اك‎ cout << "n="<<n <<", &n =" << &n<< endl; int® nn—f.n- Inn halide tha addracs ۳ ا ل است زيرا هر دو یک مقدار دارند.

صفحه 341:
{ 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;

صفحه 342:
فا ‎iy‏ ‏در برنامهٌ بالا متغیر ۱ از نوع ]1۲ تعریف شده. 0۲۱ اشاره گری است که به ۲ اشاره دارد. پس نوع 0۲ باید ]0]* باشد. 001۱ اشاره‌گری است که به ۵۲۱ اشاره می‌کند. پس نوع 00۲ باید ]0]/:* باشد. همچنین چون 00۲ به 0۲۱ اشاره ‎ye dul‏ 0 مقدار 0۲۱ را نشان می‌دهد و چون 7 به ۱ اشاره دارد. پس *0۲۱ مقدار 10 - لا &n 0x0064fd78 pn 0x0064fd78 &pn 0x0064fd7c *۵0 < 4 ppn ۱ ۹۹ &ppn 0x0064fd80

صفحه 343:
عملگر مقداریابی * و عملگر ارجاع 6۷ معکوس یکدیگر رفتار م ىكنند. اكر اين دو رابا هم تر كيب كنيم: يكديكر ‎sep)‏ ا ل ا 2 ا ‎esa‏ ا ا 0 مقداری که در آدرس ‎n&‏ قرار كرفته رابه دست آورد. ‎Sey ee ea eyed ee pei come pees‏ ۱ 0 یک اشاره گر باشد. *0 مقداری که 0 به آلن اشاره دارد را مىدهد. از طرفى بااستفاده از عملكر نب ‎Ste ae SEN ee Te)‏ ا 0 آوریم. پس ‎ABIlg> P 99> L ply Px&‏ )139 5 قرار گرفتن اپن عملگرها مهم است. یعنی */۷6 با ‎owl ile Cad pl nx&‏ ۱

صفحه 344:
عملكر * دو كاربرد دارد. اكر يسوند يى نوع ‎pers‏ ا ل ل ل تعريف مىكند و اكر ييشوند يك اشارهكر باشد (مثل *0]) آنگاه مقداری که 0 به آتن دو كاربرد دارد. اكر يسوند يك نوع باشد (مثل 6»1108) یک نام مستعار تعریف می‌کند و اگر پیشوند یک متفیر باشد (مشل 06۲) ‎Petre ne orl)‏ تا

صفحه 345:
يى دستور جايكزينى دو بخش دارد: بخشى كه در سمت جب علامت جايكزينى قرار مى كيرد و بخشى كه در سمت راست علامت جایگزینی قرار می‌گیرد. مثلا دستور < ‎n‏ ‎Heys)‏ متفیر ‎٩‏ در سمت چپ قرار گرفته و مقدار ۵۵ در سمت راست. این دستور را نمی‌توان به شکل ۵۵ - 7۲۱ 7 ثابت است و نمى تواند مقدار بكيرد. يس هنكام استفاده از عملكر جايكزينى بايد دقت كنيم كه جه جيزى رادر سمت جب قرار بدهيم وجه حيزى رادر سمت راست.

صفحه 346:
۱۳ re ie eee aad ۳ ۰ Ce) Ee rte) ‏قرار بگیرند‎ ‏چیزهایی که می‌توانند در سمت راست جایگزینی‎ ۱ ‏قرار بكيرند‎ ‏(و به طور کلی اشیا) چپ‌مقدار هستند و لیترال‌ها‎ 7 ("ABC" ۱۱۰۳۵

صفحه 347:
یک ثابت در ابتدا به شکل یک چپ‌مقدار نمایان می‌شود: ‎const int MAX = 65535; // MAX is an‏ value 1 are) eee ae) epee eee pe ved] | ‏استفاده کرد:‎ MAX = 21024; // ERROR: MAX is constant به این گونه چپ‌مقدارهاء چپ‌مقدارهای «تغیبر ناپذیر» گفته می‌شود. مثل آرایه‌ها: int a[] = {1,2,3}; //O.K

صفحه 348:
1 7 fel fre) Pe OMe See ee ‏پذیر نامیده می‌شوند. هنگام اعلان یک ارجاع به یک چپ‌مقدار نیاز‎ داریم: ‎int& r =n; //O.K. nis an ۱۷۵۱6‏ eer be lend Mo eB ‏ا‎ anc int& r = 44; // ERROR: 44 is not an Ivalue int& r = n++4; // ERROR: n++ is not an lvalue int& r = cube(n); // ERROR: cube(n) is not an lvaluel-—L_values 2- R_values ا ‎eer‏ ۱ می‌توان تابع را به یک چپ‌مقدار تبدیل کرد.

صفحه 349:
بایکشاز نوع‌لیجاع -7 ۱ رد ۳ دیدیم. این دو شیوةٌ تبادل در مورد باز گشت از ا توابعى كه تاكنون ديديم بازكشت به طريق مقدار داشتند. ‎ee 2)‏ ات الم ا ل ا 00 مى توانيم تابع را طورى تعريف كنيم كه به جاى مقدار, ‎pees re‏ ا ل را را بازكشت دهد., يك ارجاع به 117 را بازكشت دهد.

صفحه 350:
خواهد بود زیرا مقدارهالیترال هستند و لیترال‌ها راست مقدارند. به اين ترتيب تابع رافقط در سمت راست یک جایگزینی می‌توان به کار برد مثل: m = f(); وقتی باز گشت به طریق ارجاع باشد. تابع یک چپ‌مقدار ‎py ee‏ ارجاعها جب مقدار ‎eel DP ye ecene.)‏ حالت تابع ۳ می‌توان در سمت چپ یک جایگزینی قرار داد مثل. f() = m;

صفحه 351:
7 Pen oes ae ae nb) ere Meco ‏ارجاع را به عنوان يسوند نوع باز كشتى درج كنيم.‎ Fee ‏ل‎ int& max(int& m, int& n) { return (m>n?m:n);} int main() { intm = 44, n = 22; ‎max(m, ,۱( >>‏ عع" معدم عع » ‎<a Mas‏ بل ‎

صفحه 352:
تابع 1 از بين و !! ۱۳7۳50 بيدا کرده و سيس ارجاعى به آن را باز مى كرداند. (11376)133,10 آدرس 1179 را برمى كرداند. يس وقتى مىنويسيم 55 > (1113))118,11: مقدار 0 در حقيقت درون متغير !11 قرار مى كيرد (اكر ۱ < باشد). 7۳۱۳۱ ‏کر‎ Repel re car en Ore Ayre) eee ee eae

صفحه 353:
اخطار: وقتی یک تابع پایان می‌بابد. متغيرهاى محلى آنن نابود ‎ee cede Rear het eed oc ae Reed ald‏ بازذكشت ندهيد زيرا وقتى كار ۱ متغيرهاى محلىاش غير معتبر مى شود و ارجاع بازذكشت داده شده ممكن است به يك مقدار غير معتبر اشاره داشته باشد. تابع 11937() در مثال بالا یک ارجاع به ۲ یا 0 را بر می‌گرداند. چون ۲ و 9 خودشان به طریق ارجاع ارسال شدهاند. يس محلى نيستند و بازكرداندن ‎tulir Fapae S|‏ ل 1

صفحه 354:
‎e‏ ات۳ ‎۱ beeen kee ee Bl Eee ‏یک ارجاع درآمده است.‎ ‎

صفحه 355:
float& component(float* v, int k) ‏و۱2‎ ‎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++) (fella <q AV ee ‏عت ۱۱ کر < اب یت‎ endl; 7

صفحه 356:
تابع و ۳ ۱ يكى» تغيير كند. بنابراين (0111201111)1/,3© الل ا ا ‎eS]‏ 0

صفحه 357:
آيليدها ولشليدكرها -8 027 ‏ا‎ eB LC SCE ee SCs ‏از اعمال حسابى را مىتوان روى اشاره كرها انجام داد.‎ ‏حاصل این می‌شود ا دیگری از حافظه‎ FN oe Pee Sea cP SL ‏افزايش و يا كاهش داد و مىتوان يك عدد صحيح را به‎ 0 ten vy)| ‏کاهش اشاره كر بستكى به نوع دادهاى دارد كه اشاره كر‎ ‏به آن اشاره شابن‎ tis lon ۷-۱۰ ‏مثال‎

صفحه 358:
int main() { const int SIZE = 3; short a[SIZE] = {22, 33, 44}; cout << "a =" <<a << endl; cout << "sizeof(short) = " << sizeof(short) << endl; short* end = + SIZE; converts SIZE to ‏1ه‎ is e ot 7 wry *p = 33 ۲۳ ۶ < او 5۳0۲ for (short* p = a; p < end; p++) { sum += *p; 8 ۳ ۰۱۴ >> دم cout << "\t *p sizeof(short) = 2 ۱۳ ‏نگ‎ He) Wines p = Ox3fffdic sum = 55 ‎oT ee‏ ی ها

صفحه 359:
0 ‏ا ل‎ eae Conga ‏ا 1 رت‎ PCa SBC Prue ip) RCo see ‏ا اشاره‌ گری به‎ cute L pl» Sizeof(double) ‏ت۰۵‎ ‏بايت باشدء. هر كاه كه 0 يك واحد افزايش يابد,‎ ا اه ات ا ل ا ات

صفحه 360:
: ‏مثلا كد زير‎ float a[8]; float* p =a; //p points to a[0] ++); // increases the value of p by sizeof(float)

صفحه 361:
PRC 1 prtoe Fa al a (oy~ | ey ‏درون 0 را“ بايت افزايش مىدهد و 5 -+ م‎ ‏بايت افزايش می‌دهد. با استفاده‎ ٠١ ‏مقدار درون (] را‎ ‏از خاصيت مذكور مىتوان آرايه را ييمايش نمود: يك‎ ‏اشارهكر را با آدرس اولين عنصر آرايه مقداردهى‎ ‏کنید. سپس اشاره گر رايى در يى افزايش دهيد. هر‎ ‏افزایش سبب می‌شود که اشاره گر به عنصر بعدی‎ 0 ere ear gc hee reece wha PBT | CCN beep pee oY Tce Bc

صفحه 362:
Pre ‏اا‎ float* p = a; // p points to a[0] ‏و ن‎ // now p points to a[5] یک نكتهةّ ظریف در ارتباط با آرایه‌ها و اشاره گرها وجود دارد: اكر اشاره كر را بيش از ايندكس آرايه افزايش دهيم: ممكن است به بخشهايى از حافظه برويم كه هنوز تخصيص داده نشدهاند يابراى كارهاى ديكر تخصیص ا دادن مقدار این بخش‌ها باعث پروز خطا در برنامه و کل سیستم می‌شود. هميشه باید و و و

صفحه 363:
SCS ‏تن‎ ne eho at Se Ree eee float a[8]; float* ‏-ام‎ al7]; // points to last element in the ‏الريك‎ ‎last‏ ۱۰ 0 ره رید إغمع دمعاء ‏ا ل ا ‎Si‏ ‏مثال بعدی نشان می‌دهد که ارتباط تنگاتنگی بین آرایه‌ها واشارهدكرها وجود دارد. نام آرايه در حقيقت يك لل ل ا ا ‎pee‏ ‏همجنين خواهيم ديد كه اشارهكرها را مانند هر متغير |

صفحه 364:
[0 Be ieee elem a int main() { short a[] = {22, 33, 44, 55, 66}; عب هو کب ۲ < ۰:2۵ ۲ که و کب ۰ < ۱2۵ کع> الا60 ‎endl;‏ for (short* p = a; p <a +5; p++) a = Ox3fffd08, *a = 22 Fa #p << PROS TiCc(1s ar awed cS p = Ox3fffd0a, *p = 33 0 p = Ox3fffdOc, *p = 44 p = Ox3fffd0e, *p = 55 p = Ox3fffd10, *p = 66 p = Ox3fffd12, *p = 77

صفحه 365:
۳ | :302 اشاره مى كنند و هر دو داراى مقدار 8 سستند. اما 2 یک اشاره گر ثابت است و ‎ee ere LA CEC NEM CC Be ere‏ 1 ل ‎FLOP‏ 1 ‎at5)‏ > 0) حلقه را خاتمه مىدهد. 2+5 به شكل زير ارزيابى مى شود: ‎Ox3fffd08 + 5*sizeof(short) = Ox3fffd08‏ ‎Ox3fffd08 + Oxa = Ox3fffd12‏ = 5*2 + پس حلقه تا زمانی که 03۲۴۴012 > 0۵ باشد ادامه می‌یابد.

صفحه 366:
عملگر زیرنویس [] مثل عملگر مقداریابی * رفتار می‌کند. هر دوی ‎Bead os ee ep EE pI ae eel Cea gel‏ alO] == *a a[1] == *(a + 1) a[2] == *(a + 2)

صفحه 367:
Fae a a Oy 22 ‏در این مثال, تابع 0106 در میان 91 عنصر اول آراية 81 به دنبال 92 عنصر اول آراية‎ CREE eS eee VC CRC See Mere ‏ا ا‎ SCI ۳ 6 Batre) short* loc(short* al, short* a2, int n1, int n2) { short* endl = al +n1; for (short* p1 = al; pl <end1; p1++) if (*pl == *a2) { for (int j = 0; j < n2; j++) if (p1[j] != a2[j]) break; if (j == n2) return pl; } return 0;

صفحه 368:
int main() { short al1[9] = {11, 11, 11, 11, 11, 22, 33, 44, 55}; short 22]5[ - 11, 11 11,22, ‏رو‎ ‎cout << "Array al begins at location\t" << al << endl; cout << "Array a2 begins at location\t" << a2 << endl; short* p = loc(al, a2, 9, 5); if (p) { cout << "Array a2 found at location\t" << p << endl; for (int i ‏ناد عن‎

صفحه 369:
‎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‏

صفحه 370:
‎kg‏ و ‏وقتی یک اشاره گر شبیه این اعلان شود: ‎0 (۱17 AT ١ ‎ee 57‏ جهاربايتى به ]| تخصيص داده مىشود (معمولا ‏۱ ا ل ۱ اما به هيج جايى اشاره نمى كند زيرا هنوز آدرسى 3917 تن قرار نگرفته. به چنین اشاره گری اشاره‌گگر س رگردان مى كويند. اكر سعى كنيم يك اشارهكر سركردان را مقداریابی یا رجاع کنیم با خطا مواجه می‌شویم.

صفحه 371:
۱7 ‏ار‎ ‎*0 < 3.14159: // ERROR: no storage has been allocated for *P A caer we Hen S) MSP ICN Des Beaices ‏را كجا ذخيره كند. براى رفع اين‎ ta Cee ether 111111111111119 11081 7۷ < 0 ۱۱۷ cintains the value 0 float* p = & // now p p 0-00 415 WE

صفحه 372:
در اين حالت مىتوان به «0] دستيابى داشت زيرا حالا 2] به كا اشاره م ىكند و آدرس آنن را دارد. راه حل ديكر اين است كه يك آدرس ‎eed‏ ا ل 0 خارج مىشود. اين كار با استفاده از عملكر /الا©19 صورت مى يذيرد: float* p; p = new float; // allocates storage for 1 float *p = 3.14159; // O.K. assigns this value to that

صفحه 373:
با این دستور, اشاره گر 0 از نوع :7103+ تعریف می‌شود و سپس یک بلوک خالی از نوع 1031] منظور شده و ل او ‎rere‏ ل ‎PE eee‏ 89 ."در آن آدرس قرار مى كيرد. اكر عملكر لالا١!‏ نتواند خانة خالى در حافظه بيدا كند. مقدار صفر را برمى كرداند. اشارهكرى كه اين جنين باشد. «اشاره كر تهىء يا |-الالاا می‌نامند.

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

صفحه 375:
تاكنون دانستيم كه به دو طريق مىتوان يك متغير را ايجاد و مقداردهى كرد. روش اول: ‎allocates‏ // ؛ ‎named memory‏ و روش دوم: / (9 ‎allocates unnamed memory ‎

صفحه 376:
0616186 ‏عملكر‎ Do عملكر -. . . ..عملى برخلاف عملكر ‎١...‏ دارد. كارش اين است كه حافظة اشغال شده را آزاد كند. وقتى حافظهاى آزاد شود. سيستم ‎Tee oc‏ ا ا ا 000 ‎CCE Fae‏ ا | لل ل 3 كار برد كه با دستور الا ©19 ايجاد شدداند. وقتى حافظة يك اشاره كر ال ا ا ل ا ا دوباره اين حافظه تخصیص یابد: ‎float* p = new float(3.14159);‏ ‎delete p; // deallocates q‏ Be) oer M18) Femi cele ar deallocated

صفحه 377:
وقتى اشاره كر (] در كد بالا آزاد شود. حافظهاى كه توسط ۷ به آن تخصیص يافته بود. آزاد شده و به میزان (512601)103 به حافظة آزاد اضافه مىشود. وقتتى | که مقداردهی نشده. ا اشاره گر سر گردان می‌گویند. اشاره كر به يكد شىء ثابت را نمىتوان آزاد كرد: const int* p = new int; delete p; // ERROR: cannot delete pointer to const objects علت اين است كه «ثابتها نمى توانند تغيير كنند».

صفحه 378:
‎per ats ead‏ ات ‎bey ese] |S) Rover‏ 3017 ‏اشتباه غير عمدى زير مى شود: ‎// x contains the value 3.14159 ‎// p contains the address of x // WARNING: this will make x ‎

صفحه 379:
آيليمهاوبويا -11 خر ‎Pe iv‏ تخصيص داده مى شود: نام آرایه در //a is a const pointer to a block of 20 floats م5 50// ل ل ا ‎So nee eee‏ ل | ‎iyo Teor‏ ا ا ل ۱ ‎Bey ed‏ ل ا ا ا ا كه یافت حتی اگر از آن هیچ استفاده‌ای نشود.

صفحه 380:
۹ Leonie re) ever ea pes te eRe P Ee Tony RESTO eter Rarency ‏يابد:‎ 700 ‏ا ل العلل‎ cor elena Eeyore) 02000 2 0 ‏ا ا ل‎ BCs ‏م‎ Bp ree heer Se rin ‏ل‎ Lie بسته‌یندی پویا۳ یا «بسته‌بندی زمان جرا» می گویند.

صفحه 381:
0 ۱ پایان اجرای برنامه, حافظةً تخصیصی به آسن مشغول آراية يوياى (] در زمان اجرا و هر جا كه ا ا 0 ا 57 عملكر 1616© حافظة تخصيصى به آن را آزاد كرد: ‎delete [] p;‏ برای آزاد کردن آرايةٌ پویای 0 براکت‌ها [] قبل از نام 0 باید حتما قید شوند زیرا 0 به یک آرایه اشاره دارد.

صفحه 382:
مثلل 8 ‎/-١‏ استفاده از آرايههلى يويا ا 2 0 ‎void get(double*& a, int& n)‏ ‎cout << "Enter number of items: "; cin >> n;‏ { ‎a = new double[n];‏ ‎cout << "Enter " << n << " items, one per line:\n";‏ ‎for (int i = 0; i < n; i++)‏ ‎cout << "\t" <<i+1 <<": ";‏ { ‎cin >> ali];‏ 1 ‎void print(double* a, int n)‏ ‎ee ee oe)‏ ۰ ‎cout << a[i] <<"";‏ ‎cout << endl;‏ 1

صفحه 383:
int main() 0 ‏اا‎ Mer MMe ame MTT] Le 1 3-1 | ‏وت رازه۱‎ int n; get(a,n); 1 now a is an array of n doubles print(a,n); Geleten ay Arias eeu orien ui again get(a,n); // now a is an array of n doubles print(a,n); }

صفحه 384:
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 ع ع ارو حا ‎QQ‏

صفحه 385:
۷ ۳ ya Fogle ‏«اشاره كر به يى ثتابت» با 7 ثابت» تفاوت زر‎ 7 ‏ات ا‎ erie ‏ثابتها‎ ا 7۳ اشاره كر اعلان شده. اشاره كر , اشاره كر ثابت (2. اشاره به يى ثابت ©0]. اشاره كر ثابت به يى ثابت 066 :

صفحه 386:
‎ms‏ رو ‏غصاا مج مغ عمعغمامم د // ‎int* p = &n;‏ ‎++(*p); // OK: increments int *p ‎++p; // OK: increments pointer p int* const cp = &n; Mie Seelam oe ++(*cp); // OK: increments int *cp ++cp; // illegal: pointer cp is const const int k = 88; ۱۱ < 2 ۲ ‎const int * pc = &k; // a pointer to a const int ++(*pc); // illegal: int *pc is const ++pc; // OK: increments pointer pc ola int* const cpc = &k; // a const pointer to a const ‎++(*cpc); // illegal: int *pc is const ‎

صفحه 387:
اشاره كر ( اشاره كرى به ‎IG P 995 em cul patito‏ افزايش است (++0) و هم مقدارى كه ( به لن اشاره مى كند قابل افزايش است (++(*2)). اشاره كر 0© يك اشاره كر ثابت است. یعنی آدرسی که در 00 است قابل تغییر نیست ب ‎ee OP‏ 0007 کرد. اشاره گر 0 اشاره گری است که به آدرس یک ثابت اشاره دارد. خود 0©(] را مىتوان تغيير داد ولى مقدارى كه ‎O16‏ ل 0 ‎(ol‏ ‏يك اشارهكر ثابت به يى شىء ثابت است. نه مقدار 6ع م0 © قابل تغيير است و نه مقدارى كه آدرس آن در ©6 © است.

صفحه 388:
آیلیهاواز-اشایه‌گرها -13 می‌توانیم آرایه‌ای تعریف کنیم که اعضای آن از نوع اشاره گر باشند. مثلا دستور: float* p[4]; ‎EL CLL eres] pew Uy ele‏ اشارهكرى به 11938])اعلان مىكند. عناصر اين آرايهرامثئل ‏اشاره كرهاى معمولى مى توان مقداردهى كرد: ‎new float(3.14159);‏ = [0]م ‎p[1] = new float(1.19);

صفحه 389:
اين آرايه را مى توانيم شبيه شكل مقابل مجسم كنيم: مثال بعد نشان می‌دهد که آرایه‌ای از اشاره‌گرها به چه دردی می‌خورد. از این آرایه می‌توان برای مر تب‌کردن یک فهرست نامرتب به روش حبابی استفاده کرد. به جای 0 می‌شوند. ‎Pp‏ 8 oe |

صفحه 390:
‎PeaD ool Ld‏ را ‎void sort(float* p[], int n)‏ ‎float* temp;‏ { ‎for (int i = 1; i < n; i++)‏ ‎for (int j = 0; j < n-i; j++)‏ ([1+زام* < [زام*) ؟1 زرا - موعة ) :1+ نزام < [ز]0 ‎p[j+1] = temp;‏ }

صفحه 391:
۱ ae ‏حلقه‌های تودرتوی ۴0 بررسی می‌کند که آیا مقادیری که‎ ‏اشاره گرهای مجاور به آن‌ها اشاره دارند. مرتب هستند یا نه.‎ ‏اگر مرتب نبودند. جای اشاره گرهای آن‌ها را با هم عوض‎ ‏مى كند. در يايان به جاى اين كه يى فهرست مرتب داشته‎ ‏باشیم. آرایه‌ای داریم که اشاره گرهای درون آتن به تر تیب‎ قرار كرفته اند.

صفحه 392:
A aS le meee Sl eel ‏یک اشاره گر می‌تواند به اشاره گر دیگری اشاره کند. مثلا:‎ char c = 't'; char* pc = &c; char** ppc = &pc; char*** pppc = &ppc; **oppc = 'w'; // changes value of 6 30 حالا 0 اشاره گری به متغیر کاراکتری » است. 0۳ اشاره گری به ‎So Lil‏ 7 0 ا 1۱

صفحه 393:

صفحه 394:
لشایدگر به تولبع -15 این بخش ممکن است کمی عجیب به نظر برسد. حقیقت این است که نام یک تابع مثل نام یک آرایه. یک ار مىدهد كه كدهاى درون تابع را كرفتهاند. يس بنابر قسمت قبل اكر اشارهكرى به تابع اعلان کنیم. در اصل اشاره‌گری به اشاره گر دیگر تعريف كرددايم. اما اين تعريف. نحو متفاوتى دارد: ‎function f‏ 06601۵۲65 / :(غصأ)؟ غصا ‎int’ (*pf)(int); // declares function pointer pf

صفحه 395:
ee ES Dep ne EME eee MeL Se ‏اين كه 5(] اشارهكرى به يك تابع است. بعد از كن يى‎ 210 ‏ا ا‎ SEPA LY ‏ل و‎ OL cy CBT Ie ON Coca ‏ا‎

صفحه 396:
فايدهٌ اشاره گر به توابع این است که به این طریق می‌توانیم توابع مرکب بسازیم. یعنی می‌توانیم یک تابع را ا ا ل ۳ ‎a petioles Polar eecr yes Benet]‏ .|

صفحه 397:
مثال ‎١-١8‏ تابع مركب جمع تابع 514130() در اين مثال دو يارامتر دارد: اشارهكر تابع 05] و عدد صحيح 19: int sum(int (*)(int), int); int square(int); int cube(int); int main() { cout << sum(square,4) << endl; cout << sum(cube,4) << endl;

صفحه 398:
تابع 7 يك بيارامتر غير معمول دارد. نام ‎rai‏ ‏دیگری به ا ل شده. هنگامی که ور مقدار ‎square(1)+square(2)+square(3)‏ ‏(50013:)4+ بازكشئست ذاده مىشود. جون(©12) 50101316 مقدار ‎oS onl K*K‏ ‎SUM (Square,4) 19515‏ مقدار ‎(ejb 9 09905 4 _wloce Ly Me =1 F494 F 4)‏ 95 513 تعریف توابع و خروجی آزمایشی به شکل زیر است:

صفحه 399:
int sum(int (*pf)(int k), int n) { // returns the sum f(0) + f(1) + f(2) + ... + f(n-1): 1552: for (int i = 1; i <= n; i++) s += (*pfi); ‏تاناعم‎ 5 1 نيلات نت فليا

صفحه 400:
5 در فهرستهارلمترهائتابع 0051017) يى اشايدكر به تابع لسستلشاره كر به تابعىكه لن تابع پارلمترءاز نوع 80۴ دارد و مقدارعاز نوع ‎Int‏ رابرميكردلند »ادر تابع 510117 لصلالستفادهم 0201 001 00 0 1 0 vod ‎4s‏ ۴ ب به تابعیاشاید دارد که سس نوع ‎

صفحه 401:
‎Se CirE‏ ل ا 026 الل نك آدرس شروع تابع ©5010131() را دارد. بنابراين وقتى تابع 0514117 به شكل ‎sum(square,4)‏ ‎pee be‏ ال ا و اشاره كر 65] فرستاده مىشود. با استفاده از عبارت ‎DI LED)‏ ا ا 0 ا ‎oi‏ 0 ا

صفحه 402:
NULL , NUL-1¥ ثابت صفر (۰) از نوع 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: | ‏مود روز‎ 7 tr the doiihla

صفحه 403:
مقدار صفر معناهاى كوناكونى دارد. وقتى براى اشياى عددی به کار رود. به معنای عدد صفر است. وقتی برای ل ا ا ل ‎Oe RC‏ الالاا است. الالاا معادل كاراكتر ‎٠٠"‏ نيز هست. وقتى مقدار صفر برای اشاره گرها به کار رود. به معنای «هیچ جيزءيا ا الالاا است. | الالاا يى كلمة كليدى است و کامپایلر آتن را می‌شناسد. هنگامی که مقدار أالالا با ا ا 0 0 در حافظه اشاره دارد. اين خانة حافظه. يى خانة استثنایی است که قابل پردازش نیست. نه می‌توان آتن خانه را مقداريابى كرد و نه مىتوان مقدارى را درون آن ا ا می‌گویند.

صفحه 404:
‎Key ed TBS) esl ed)‏ ان ‎Ba pret i bes cy‏ 6 ل ا ‎Bul Ree Uh eye Rete ree i ep‏ ‎Pree Cer ep Revel) LU) 8 Biscay) boi Cave eco] DT care int*p = 0; //p points to NULL ‎*p = aes // ERROR: cannot dereference the NULL foeyial ee ‏يس خوب است هنكام مقداريابى اشارهكرهاء احتياط كرده و بررسى كنيم که آن اشاره‌گر االالا نباشد: ‎if ‏کر‎ ‎ere w le‏ 0 ل ا ا ا ان ‎fond eB Seen ee pen)‏ ‎if (p != NULL) *p = 22;

صفحه 405:
اشارهكرها را نمىتوان ناديده كرفت. آنها سرعت يردازش را زياد مىكنند و كدنويسى را با استفاده از اشاره‌گرها می‌توان به بهترین شکل از حافظه استفاده كرد. ۱ ‏ا‎ ede) ‏ساخت.‎ 20000

صفحه 406:

صفحه 407:

صفحه 408:
آچه دراین پلسه می فینید ! مروری بر اشاره‌گرها ! رشته‌های کاراکتری در () 1 " چند تابع عضو 2 و 2 " توابع کاراکتری () استاندارد ‎Rp Cp) ae‏ ‎SES ES ae‏ 0[ )2

صفحه 409:
0 ‎cS‏ دقیق‌تر به تبادل داده‌ها دی قالب‌بند خی : اشنابي بأ ۷ ‎M P|‏ آنهاء. آنوع ا أفايلها

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

صفحه 411:
هدف‌های رفتاری: انتظار می‌رود پس از پایان این جلسه بتوانید: ‎were IY Brod pC Layee‏ 7 1 - توابع معرفى شده عضو 25 و 7701 را شناخته و وظيفة هر يك را شرح دهید. - رشتههاى كاراكترى به سبى (00++ استاندارد را ايجاد نماييد. - مفهوم «ورودی قالب‌بندی شده» و «ورودی قالب‌بندی نشده را ‎Emel by‏ ۱ ‎Et Ree PRC aD Mad cae cle‏ | ل ‎Se Ee‏ ل 26 - اطلاعات كاراكترى و رشتهاى رادر يك فايل متنى نوشته يااز 0

صفحه 412:
:مقدمه داده‌هایی که در رایانه‌ها پردازش می‌شوند هميشه نيستند. معمولا لازم است که اطلاعات کاراکتری مثل نام افراد - نشانی‌ها - متون - توضیحات - کلمات و ... نيز يردازش گردند. جستجو شوند. مقایسه شوند. به یکدیگر الصاق شوند يا از ی در اين حلسه بررسى مى كنيم ‎4S‏ چطور اطلاعات تا شكل دلخواه به -.:2-.. بفرستيم. در همين راستا توابعى معرفى مى كنيم كه انجام اين كارها را آسان ام كلند

صفحه 413:
ل ل | Rents Sake) ‏حافظه می‌باشد. نوع این متغیر از نوع مقداری است‎ ‏که در آن آدرس ذخیره شده. با استفاده از عملگر‎ ‏ارجاع 6 می‌توان آدرس یک شی را پیدا کرد.‎ ‏همچنین با استفاده از عملگر مقداریابی * می‌توانیم‎ ‏مقداری که در یک آدرس قرار دارد را مشخص‎ ‏كنيم. به تعاريف زير نكاه كنيد:‎ 6026 د و ور ا

صفحه 414:
ور( در ی ۱ کاراکترهاست که این آرایه دارای ویژگی مهم زیر است: ‎-١‏ يك بخش اضافى در انتهاى آرايه وجود دارد كه مقدار اك ب بون ل ل ‎gore oe‏ ول تا ‎٠"‏ - رشتة كاراكترى را مىتوان با ليترال رشتهاى به طور مستقیم ۳ ره ‎sir[] = "striae";‏ ان ا ا ا ‎Pay Riper Wemreor‏ ‎Wy gt yt p UGS‏

صفحه 415:
ا- كل يكد رشتة كاراكترى را مىتوان مثل يك متغير معمولى چاپ کرد. مثل: در این صورت. همه کاراکترهای درون رشتهة کاراکتری یکی ‎PTT me pee ae‏ 7 برخورد شود. - يك رشنة كاراكترى راامىتوان مثل يى متغير مفدولى ال ورودى دريافت كرد مثل:

صفحه 416:
۵ - توابع تعریف شده در سرفایل <:7> را ‎wl» |‏ دست‌کاری رشته‌های کاراکتری ‎oe‏ ‏کار بگیریم. اين توابع عبارتند از: Oca ‏ا‎ 1 (eee ae SRP

صفحه 417:
۳ LCM FY Seed DCMT LF Con) ۱ CoC oo ep Ce ORE ee RC er Cr Ae ان( ۷ Por (iat i = O; i < S; i++) at} << Mel >> ۱ >> y=" << Fall << ۳ ۱

صفحه 418:
رشتة کاراکتری < دارای پنج عضو است که عضو پنجم. کاراکتر ۰ مى باشد. تصوير خروجى اين مطلب را تاييد مىنمايد. 39 کاراکتر ۱ ۰ به .. فرستاده ‎enero ne eed mre ee‏ سا خط آخر خروجی. عضو پنجم را نشان می دهد كه ميان دو علامت ايستروف هيج جيزى جاب نشده. ههه 1516 OO oOs4 3

صفحه 419:
1 در (0++ به جند روش مى توان رشتههاى كاراكترى رادريافت كرده يا نمايش داد. یک راه استفاده از عملگرهای کلاس 27:7 است که ا ا 0 ‎Pe ere Ree Ea ES SCENE TD)‏ در ادامه شرح می‌دهیم.

صفحه 420:
معال ۸۰۱۳ روش ساده دربافت و بمایش رستة فاق كار اكترق”: در برنامة زير يك رشتة كاراكترى به طول 1 كاراكتر اعلان شده و كلماتى كه از ورودى خوانده مى شود در آن رشته قرار می‌ گیرد: | 0 | _ کی ا ل i

صفحه 421:
‎g vin gas QU i>‏ مت ی ‎ee‏ ‏شامل توابع زير است: ‏ات هت ‎Diu. ‎70 ‏همه این توابع شامل پی پیشوند 7:7 هستند زیرا آن‌ها طضوی از‎ ‏می‌باشند. به 7۷ شیء فرآیند خروجی می‎ ‎ay mae ESO care ror ect RUAN ees 5 ‏ل لت‎ Papi yo ‏الما‎ Rye Ow ot an) a Be) ‏درون 1 خوانده شود و مابقى كاراكترهاى وأزد شده تاديده‎ ‎0

صفحه 422:
ط ات یت دا ار :این برنامه ورودی را خط به خط به خروجی می‌فرستد 20 1 رگا { 7 ٩۱ ‏رک‎ ‎eee‏ رز ‏ل ‎i

صفحه 423:
را مرا اه 3 ل هرت سرت وا ۱ eal Glico) Borat Me ‏هال"‎ ‎Ae cd ‏؟‎ ۱

صفحه 424:
لا كل این برنامه تعداد حرف "< در جریان ورودی را شمارش مى كند. قا وقتى (5-):<.: كاراكترها را با موفقيت به درون می‌خواند» حلقه ادامه می‌باید: ‎oe‏ ‎Ree ale‏ ‎oe 0‏ كرك ‎Pe‏ ‏يكيس 22 = = ‎iP (ck‏ 1 ۱

صفحه 425:
ل ‎S,‏ ل ل ورودی را به حرف بزرگ تبدیل كرده و آن را مجددا در خروجى جاب مى كند: ‏ل ‎char ck, pre = \O } ‎Pe CC) ‎Ca dec eC ‏مت مب مسا‎ ‏نم تست‎ ‎۳ ‎{

صفحه 426:
درل اس مسر امسر رت Pape ICON BSE orc ie Ony even Sine ee eB ‏:مى كند‎ Reker dn nd ‏سسحتي ددنت‎ ony ‎ene |‏ للب یر نا 0 ‎1 ‎(edn) ‎۳ ‏نت ‎1 ‎۱ Ont teed) 3 | be } ‏زه << وم

صفحه 427:
تابع 00 اين نسخه از تابع 14 () معادل آن است كه در مثال قبلى بودة 0 ‎ae‏ رت ‎sh ‎while (ch = vis.perh()) iP (ch >= 'O' && vk <= 'O') Bo ‎Rand ‎0 ‏ا ‎Ree cc) ۳

صفحه 428:
توابع کاراکتری استاندارد در مثال 8-8 به تابع:1017() اشاره شد. اين فقط يكى از توابعى است كه براى دست كارى كاراكترها استفاده ‎epee cael Uy ope‏ ا ا 2 7 تعریف شده به شرح زیر است: شرح نام تابع ‎A int isalnum(int c);‏ ار > کاراکتر الفبلیی یا عددی باشد مقدار فیرصفر ۱5۵10۳۳۳( وگرنه صفر را برمی‌گرداند ۶( 106) 152100۵ 106 لكر > کاراکتر الفبليى باشد مقدار ‎eed‏ ۱ (۵۵ (

صفحه 429:
(eu int iscntrl(int c); ‏کر » کاراکتر کنترلی باشد مقدار غیرصفر و در غیر گن.‎ ‏صفر را برمى كرداند‎ int isdigit(int c); ‏اكر © كاراكتر عددى باشد. مقدار غيرصفر و در غير آن.‎ ‏صفر را برمى كرداند‎ int isgraph(int c); 0 | نام تابع )015 1 Oisdigit Oisgraph

صفحه 430:
(ese int ispunct(int c); ‏اگر 6 کاراکتر چلپی به غیر از حروف و اعداد و فضای خللی باشد. مقدار غیرصفر‎ SS TOS seed cine Rel oleae 10 isspace(int os ‏ی ی لش نت ی مت ها نس‎ SINE ‏ام‎ ‎(۱ ae ‏الل‎ we ‏لمر ل‎ lar an en eS aad nee a int isupper(int c); ‏اگر 6 حرف بزرگ باشد. مقدار غیرصفر برمی گرداند وگرنه صفر را برمی گرداند‎ int isxdigit(int c); اكر © يكى از ده كاراكتر عددى يا يكى از دوازده حرف عدد شائزدهدهى شامل را و ا ا و رد و '2' و '5' باشد. مقدار غيرصفر برمى كرداند وكرنه مقدار صفر را برمى كرداند int tolower(int c); Drea ee seed arian eee cere gene ata ae ead ‏برمی گرداند‎ int toupper(int c); اگر 6 حرف کوچک باشد. کاراکتر بزرگ معادل آن را برمی گردلند وگرنه خود 6 را برمى كرد اند نام تابع Qispunct Qisspace Qisupper Qisxdigit Qtolower Qtoupper

صفحه 431:
ee ea Lo ee eres ‏دريافت مى كنند و يك مقدار اودارا برمى كردانند. علت‎ این است که نوع 77 در اصل یک نوع صحیح است. در عمل وقتى توابع فوق رابه كار مىبرند. يك مقدار

صفحه 432:
به خاطر دارید که گفتیم یک آرايةٌ دوبعدی در حقیقت آرايهاى يكه بعدى است كه هر كدام از اعضاى لن يك آراية ‎se gee‏ 1 ‎peed Reo) al]‏ ‎wher unve[S][CO]‏ ا هد تس مس مت سب ‎Creare 1 1‏ ‎SSSI a ie aa es a cae‏ ۳ سس 2 ‎ere Sees‏ 1 0 تصور كنيم.

صفحه 433:
از طويق ‎reper bd ee OC ped BM yee) ees eget‏ ا ‎EC DY ree‏ ‎ree’ Sona‏ م ل ا ‎CU pe eWepyer eer Rey.‏ يك بعدى با آن رفتار مى شود. ين

صفحه 434:
آرابه‌ای از رشته‌های کاراکتری ‎CUE PO Ue eee I ese SES‏ ذخیره کرده و سپس مقادیر آن آرایه را چاپ می‌کند: مت 6۱ م۳ AN RC en Rca eS Rn aca phi (cic. getioe(cae[pouit++], SO)) حت ول جار ‎cea‏ ل ا له ‎Leal ce OS ‏ا‎ ‎jot << "VW" <<i <<", [" << cacvefi] << "]" << ext ‎1

صفحه 435:
يى آراية رشته‌ای پویا ‎Beye) el‏ ل مىدهد كه چگونه مى توان از كاراكتر ‎SSE ere OS Sea SL Se)‏ کرد. متال زیر تقر با معادل متال ‎٩-٩‏ است. برنامه زیر 1 يك خط نوشته مىشود و هر اسم با كاراكتر '1' يايان مى يابد. اين اسامى در آراية 77 ذخيره مىشوند. سيس نامهاى ذخيره شده در آراية 577 جاب مى شوند:

صفحه 436:

صفحه 437:
مقداردهى يك آراية رشته‌ای ‎Te‏ لا سا ‎Weert }}‏ ماه سا تا مان مطس۳ ۲ ) حاسمت ‎jobor*‏ ‏و ۲ << ‎Spout‏ ‎Por (ict i = 0:۱ DO; i++) ‎“oot << "\I" <<; <<", ۱ << xeve(i] << ‏اله‎ ‎je > > ‎f ‎1

صفحه 438:
00 5 الله مه توابع استاندارد رشته‌های کاراکتری: سرفايل <22002> كه به آن «كتابخانة رشتههاى کاراکتری» هم می‌گویند. شامل خانوادةٌ توابعی است كه براى دست كارى رشتههاى كاراكترى خيلى مفيدند. ‎ene sen |‏ ل ا ا ل ل 9۳ می‌دهد. این ا طول ‎ae)‏ رشتة ‎pricy‏ ‏۰1۰۰۰۳ (یعنی تعداد کاراکترهای لن رشته) را برمى كرداند.

صفحه 439:
Qsiries ‏تابع‎ Rowe Oe er nC eee ney Ik eee eT ey CCA Peer SOMES Brel PCM CRY oe Pn es DC ‏ا‎ ‏ا ا و ال داده می‌شود:‎ >> ‏#بمساوص> على اوم‎ )(5 ‏كعد‎ ‏[]د عصساه" زر‎ < 00008 1 joo >> sided >> ‏و‎ >> 1" =o Se ae >> ‏المج‎ ‎0 ‏ل ا‎ har buPPer [OO] oot << "Cater stray") ia >> buPPer want << "0 ("<< buPPer <<") = "<< (buPPer) << endl

صفحه 440:
4 (oir ronr(), srenr(), sire OS Eats 11 Ee SBE Ire SESE ‏ا ا‎ BG ‏يي‎ مها _ ا ل ایب ‎Sa‏ ا )09 و ‎CO cea MS i‏ اال 0 ‏مط[" >> د - م >> "إء طاطهمم (ه ,5 | " >> بحو" ‎w= ,')‏ ‎Ho ‏ل‎ ae Mee ‏یا‎ ‏ددم >> "إدص صصمم ‎CRN AW‏ ">> نوم ‏جح ]۳ ‎۱۳ te ae a ‎race? Me cn a a Ma td ‏و ‎aa‏ اد اناك ‎ ‎

صفحه 441:
3()eropy ‏قايع‎ PRO Pere ee oe rr ere TEn e) Stoke <pereont <tock de <potrterg مس ب() ۶ 2 ۵۵0066 ۱ < ]6و ز ۰( وراه عخه۲ >> له ز (0)مطمم >> " - ايحا ,[" >> )م >> "] د هنا" >> بجو << 4 (م) وه >> ۲ < بمط ,[" >> 6و >> ] < 6" >> وم ‎jeud >>‏ jorop{o(l,e@) Fond << "OPer os (0,28) :ha pot << "Well = [" << ofl >> "[, ‏(0ج) موی >> ۲ < یبط‎ jeod >> (6م) ماه >> ۲ 2 بط ,(" >> هو >> ۲ = ‎pon << "WO‏ ‎jowd >>‏

صفحه 442:
تب مرو مورا ۱ ی كدص () | ۲8۵۵۵۵۵ < 0و ات ز ‎Moher sl] = "XL‏ joo << "DePore sirap) (ol, 2@,C):\0 ‎ofl << "], leony = "<< stlea(o(l)‏ << "[ = ورا" >> نحص << از ‎irteu(sO)‏ >> ۲ 2 اما [" ک> هو >> ] < هويا" >> يوم << از ‏(0, ور موز ‎Soma << "Per ‏ما( مرو‎ ‎pot << 90 = [" << 5 << "], eos =" << stteu(o(l) joo >> ‎"J, lexus = " << sirtea(sO)‏ << ۵و >> ۳] > هم" >> يوم ‎jes >>‏ 1

صفحه 443:
تابع الصاق رشته ؛مسب() برنامة زیر بررسی می‌کند که فراخوانی ( 26 ,7)26*< چه تاثیری دارد: منیا ل الل ا ‎rap‏ 2 [] 6د سواه ت۱۳ الا ‎ene eo SP‏ << لمور ‎ee Se (ce)‏ ال ا ا ا اي << از ‎po eee)‏ ‎Cee)‏ 0 ‎Bey See SP ae on St)‏ ‎je >>‏ ‎Pe RS oe Me Seo Scar Em Sa ice)‏ ‎jead >>‏ 0 ‎ ‎ ‎ ‎ ‎ ‎

صفحه 444:
لك مه 6 رشته‌های کاراکتری در (-++ استاندارد : ‎MSI CME ey)‏ ا 0 و البته بخش م ا ا 0 0 30000 سريع داددها Oe ee ne ee Se ee Se aren) Abel CPD eS Sp CBee Yr Caney. pers nes ree NU rae] ‏عنوان پایان رشته‎ ۱ CT ey ET Te Cy ‏در اين رشتههاء طول رشته نيز درون رشته ذخيره مىشود و لذا فقط به‎ 0 برای مشخص نمودن انتهای رشته اکتفا نمی‌شود.

صفحه 445:
نكاهى دقيقتر به تبادل دادهها LEN) RAE eer BN YS Pe eT ‏را در فالب مجموعه‌ای از کاراکترها تایسپ می‌کنیم.‎ 1 ‏ا ل‎ ete ea ‏برنامه بفرستیم» این نتایج در قالب محموعه‌ای از‎ ‏کاراکتر ها نملیش داده می‌شوند. لازم است که لین‎ ‏کاراکترها بسه نحوی برای برناصه تفسیر شوند. مثلا‎ ‏وقتی قصد داریم‌یک عدد صحیح را وارد کنيم» جند‎ كاراكتر عددى تايب مى كنيم

صفحه 446:
ee Bieter SPIN Be) bed ‏سیک مقدار صحیح بسازد وبه برنلمه تحویل دهد.‎ ‏همجنين وقتى قصد داييميك عدد اعشارى رلبه‎ ‏خروجى بفرستيم, بليدجا استفاده از راهكارى»‎ Re ener Sap Pees ane nee | ‎eT egy)‏ لت

صفحه 447:
۱ ee ‏ا‎ ey Leeann Wed pre ‏کاراکترها را بسه داده‌هایسی از یسک نوع بنیادی تبدیل‎ ۱3 cae LOSS ie By ee ie ۱ Tee eee ee) oad زیر کلاس‌هایی تقسیم می‌شود:

صفحه 448:
شممء 1 جريلنى است كه دادههاى مورد ‎se.‏ كا بل وارد شده از صفحه كترم ‎(OP AY‏ رلبه کار ‎st‏ هاى - خروجی تابل ‎TN Rupe eee) es nee‏ )_— و ‎fem‏ است که داده‌های ‎Coy‏ ‏نياز را از دادههاى داخل يك فليل» فراهم می‌کند. شيمء ‎Ped ASNT‏ جريلنى رم داده‌های حاصل را درون یک فایل ذخبره ‎VUE ne ee Beamer Le‏ را در ادامه خواهیم دید.

صفحه 449:
استفاده از عملگر بیرون کشی برای كنترل كردن یک حلقه : دل سه while (via >> a1) الوح ك>ك اي >> " دي" ‎rea i‏ {

صفحه 450:
ورودی قالب‌بندی نشده: ۱ eee bE ‏لین تولبع برای واره کردن کاراکترها و رشته‌های کاراکتری‎ ‏جه کار می‌رونه که کاراکترهای فضای سفید را نادیده‎ ذمى كير ند. ‎TP)‏ ا الل ان ‎ean ot eee ere ey eam or pee‏ است.

صفحه 451:
فریافت کاراکترها با استفاده از تایع .ستوز).

صفحه 452:
وارد گردن یک رشتة کاراکتری به وسیلة تابع +۵«( De ROSIE ae bea Teele) ea) oe Eee ae Shane) ‏درون یک آراية رشته‌ای قرار داد:::‎ 00 26 )صا م عمجم ‎vans eae‏ 00ت جل ر] 801 وا دمت (pede etre Der MG Oy ec Aor ti OMen aay pre Oss sects ener errr ee ae na ct (rol jet =D whie(cie.qwitoe(coomprfert+], LEO) && «OL ) in Por (it HO; ‏کر‎ ++) wan << ۳ >> ۲ <<" " << oneirfi] << ‏لمم‎

صفحه 453:
BS) ee Ore me ey mira) در ():+ استاندارد نوع داده‌ای خاصی به نام :7:77 وجود دارد که مشخصات این نوع ا ‎Bp eects ee ee dee pore eRe eee a aan‏ ‎a te Me Tee Dene See Ret‏ 0 می‌توانند اعلان و مقداردهی شوند: 0 as ae ‎ace‏ مس ت۱۳ ‎ ‎eave ene ۱۳ ‏ا‎ ‎۱/۳ es SRS iam asc anata

صفحه 454:
استفاده از ره اروت کد زیر یک مجموعه کاراکتر را از ورودی می‌گیرد و سپس بعد از هر کاراکتر ‎ne Ao‏ 1 مثلا اگر عبارت ۳ ‎"COPTOORE DOOCOEOT 6 begat‏ ‎ON eee eM ee SCS ee)‏ The ‏رگ‎ DOOCG, OE, OT & begac ‏متن برنامه این چنین است: امس سس‎ ide Cae}

صفحه 455:
خابل‌ها يكى از مزيتهاى رايافه» قدرت نكهدارى اطلاعات حجیم است. فابل‌ها لین قدرت رلبه رابلنه می‌دهند. ‎Ce her ety Se es ad‏ ‎SS tt Tee rd‏ نمی کردند. چون اغلب برنامه‌های امروزی‌با فایل‌ها سر و کار دایند»یک برنامه‌نییس لازم است کمبا فلیل آشنا ‎eee‏ ا ‎pes‏ ‎eB‏ کارابی ۳ را ‎eddO LR)‏

صفحه 456:
۱۳ eB) ee Te Lae 3S) ‏ا ا ل ال‎ eee) Boat ‏ا ل‎ oar | ‏ل ل‎ eros, ‏دو زير شاخة مرس و رو وت‎ dot ped ‏ومحوجدا‎ ‏تقسيم مى شود.‎ جريان مرو براى خواندن اطلاعات ‎ei)‏ فلیل اه کار می‌رود و جريان موص وناو براى نونتن اطلاعات درون يك فايل استفاده مى شود.

صفحه 457:
ae a Som Serer een ‏شده‌اند.‎ ‎1 nee ‏ی‎ ‏سا سا‎ ۱ ‏اک و‎ | طبق کدهای فوق» ا ی

صفحه 458:
یک دفتر تلفن برنامة زيرء جند نام و تلفن مربوط به هر يك را به ترتيب از كاربر دريافت كرده و ذر قايلي به نام ۱۱ 1۱۱۱ 0 دخیره مي‌کند. کاربر براي بایان دادن به ورودي بايد عدد (0 را تايب كند. ‎Pree ae eee‏ ‎ee ee‏ ee ees RC ROOD Ce یس و مزا سس موز ‎(RS et)‏ وه ۳ ‎RC‏ ۲ >> فد ز ود ‎SR SKC ‏2 بر ‎۳ ‎ ‎ ‎۳ ‎0 ‏عدم >> السام << ' أ ‎aa‏

صفحه 459:
جستجوي یک شماره در دفثر ثلفن اين برنامه» فایل تولید شده توسط برنامه قبل را به کار مي‌گیرد و درون آن به دنبال یک شماره ثلفن مي‌گردد: مد رت ‎el‏ داكا میا ‎ee See Fel ch‏ ۳[ ‎aS ee‏ >> لو وم سر ‎0 ‏اس ل 110 ‎pe ee a oe ‎{

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

صفحه 461:

صفحه 462:
‎ABLE‏ ی (- اعلان کلاس‌ها - سازنددها "- فهرست مقداردهی در سازنده‌ها با 0- توابع عضو خصوصى ‎ee‏ و۳ )»>

صفحه 463:
۷- نابود کننده ‎Se‏ Peed Ie Eo Ore | ‏اعضاى دادهاى ايستا‎ - ٠ ‏توابع عضو ايستا‎ -١١

صفحه 464:
هدف کلی : آشنايى با كلاسها و اصول اولية به کار گیری ‎ag!‏

صفحه 465:
۳۹ رفتاری: انتظار می‌رود پس از پایان این جلسه بتوانید: - نحوةّ اعلان «کلاس‌هاء را بدانید و اعضای یک کلاس را برشمارید. ‎a ee BELEN Bed Dred re ed ee Cre Rat cia‏ 0 کدام را بیان کنید. - «تابع سازنده» را شناخته و وظیفةٌ آن را شرح دهید. - روش‌های گوناگون :

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

صفحه 467:
در بحث شى كرايى به دستهها ‎(eID‏ ‏می‌گویند و به نمونه‌های هر کلاس 00 00 مشخصات هر شى را «صفت؛ می‌نامند و به رفتارهاى هر شى «متد؛ 2

صفحه 468:
برنامهنويسى شى كرا بر سه ستون استوار است: الف. دستهبندى: يعنى اين كه دادههاى مرتبط. با هم ترکیب شوند و جزییات پیاده‌سازی مخفی شود. ‎Am)‏ وراشت: در دنیای واقعی. ورافت به این معناست که یک شی وقتی متولد می‌شود. خصوصيات و ويزكىهايى را از والد خود به همراه دارد .

صفحه 469:
امتياز وراثت در اين است كهاز كدهاى مشترى استفاده مى شود و علاوه بر اين كه مى توان از كدهاى قبلى استفاده مجدد ‎Eee‏ رس استحكام منطقی 0-0 هم 0 مي‌پابد.

صفحه 470:
ل 2 می‌گویند به معنای یک چیز بودن و چند شکل داشتن است. چندریختی بیشتر در وراثت معنا ييدا مىكند.

صفحه 471:
لدت ۱7۳ كد زير اعلان يك كلاس رأ نشان مى د هذ موه :لس ) 0 رس( ‎viod prici();‏ ۳۳۱ ‎ce‏ ۱ اعلان کلاس با ‎chase 5345 aal5‏ شروع می‌شودسیس نام کلاس می‌اید.

صفحه 472:
35 if ‏علان اعضا‎ ‏که کلاس درون نک وی از‎ ‏بلوى انجام مى شود‎ ‎ES peer)‏ سمیکولر 71 9 بلوک نشان مىدهد كه اعلان كلا ‎te‏ 9 بت ‎ee LO og‏ فته | 2 | ‏ارت ‏ریت 2 هر عصوى 5 5 عبارت ۳۲۱/۷ كه ‎le Ju‏ ت ره ا 1 2 2 0 عمومی» ‏محسوب می‌ش ‎Te)‏ 0 عضوى كه 3 ذیل عبارت ‎2 ‎۱ ۳ 7 DY OD Cl a ANd > 2 3 ‏ده‎ ‏خصوصی»‎ ‎08 ‏شود. ‎

صفحه 473:
سازنده‌ها وظيفة ‎ee rol‏ است که حافظةً لازم را برای شىء جديد تخصيص داده و آن را مقداردهى نمايد و با اجراى وظايفى كه در تابع سازنده منظور شده. شیء جدید را برای استفاده آماده کند. هر کلاس ‎Bw PP)‏ چندین سازنده داشته باشد. در حقیقت تابع سازنده می‌تواند چندشکلی داشته ۰

صفحه 474:
راز نس را از یکدیکر تفکیک می‌شوند. ,رب( مثال 4-0 افزودن جند تابع سازندةً ديكر به كلاس 47-©) هت تاطحم ) ‎casted (PR‏ ل 0ك ‎(PY‏ ا ‎(RG)‏ كا ‎cain‏ ال 000 كا 0 0 0 :ادرفم ‎att‏ 00 7

صفحه 475:
این نسخه از کلاس ۶( ر., سازنده دارد؛ Lee eae ee rau rca ۱ PENS SCTSCUU MI RCTNC) برد سازنده یک بارامتر از نوع از دارد و ی اعلان شده را طوری مقداردهی می‌کند که حاصل مقدار آن يارامتر برابر باشد. 20 شازتدة نير همان سازندة مثال ۲-۱۶ زر

صفحه 476:
یک کلاس می‌تواند سازنده‌های مختلفی داشته باشد. ساده‌ترین آن‌هاء سازنده‌ای است که هیچ بر اسری ندارد + ابر ‎BIS‏ سازئدة يريش فرضص. 38 اكر در يك كلاسء سازندة ييشفرض ذكر نشود. كاميايلر به طور خودكار كن را براى كلاس مذكور ايجاد مىكند.

صفحه 477:
فهرست مقداردهی در سازنده‌ها سازنددها اغلب به غير از مقداردهى دادههاى ‎ee este ae repos‏ 20 همين دليل در 0++ يك واحد دستورى مخصوص بيش رببينى شده كه توليد سازنده را ‎ECP) ee a ROLE RO ced‏ «قداردهی تن داردد

صفحه 478:
به سومین سازنده در متال ‎٩-۵‏ دقت کنید. این سازنده ر می‌توانيم ب) استفاده از فهرست مفداردهی به سكل ركر خلافه کندم: ‎o, ct): num(n),den(d) { }‏ ۱02 مثال ‎٩-۶‏ استفاده از فهرست مقداردهى در كلاس -1-) مدا سا ۱ (0(1)-ظ یراس نف ۱ ‏از‎ en sl (OE AY 0 ‏ا‎ ca) rag aw ot ‎ach‏ رن با ‎1

صفحه 479:
توايع دستيابى داده‌های عضو یک کلاس معمولا به صورت خصوصی (۶,<) اعلان می‌شوند تا دستیابی به آن‌ها محدود باشد اما همین اهر باعث می‌شود ‎A5‏ در مواقع لزوه به اين دادهها دسترسى داشته باشيم. براى حل اين مشكل از تواتعئ نا عنوان ‎٠2:0‏ ٠ب‏ استقادة می‌کنيم.

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

صفحه 481:
مثال ‎٩-۸‏ افزودن توابع دستیایی به کلاس ۳؟) ۱ وم ۹ 20, Nap) 9 8 ‏الح‎ ( دصل 99 ۳ 0

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

صفحه 483:
co در بر تابع عضو خصوصی به نام ۳۵۱() است. وظيفة تابع مذكور اين است كه معادل ‎jroo‏ شناور یک عدد کسری را بر گرداند مه زير. كلاس 0 ‎a‏ يي اين تابع فقط درون بدنة تابع عضو 7 )) استفاده شده و به انجام ‎ol dab‏ كمكدمىنمايد و 1 ‏هیچ نقشی در برنامةً اصلی ندارد. ۱

صفحه 484:
سازندة كبى ۱ در متفیری به نام » از نوع ‏ ایجاد می‌شود. در هم همین کار انجام می‌گیرد با این تفاوت كه يس از ايجاد >< مقدار موجود در متغير >ا كه از قبل وجود داشته درون *< مىشود. اصطلاحا >< 3 00

صفحه 485:
0۲ كد بالا يك شى به نام باز نوع 0557 ايجاد ‎Ooo eed‏ كت ا ل ‎SPP‏ ‏آسن قرار مىدهد. اكر در تعريف كلاس» سازندةٌ كيى ذكر نشود (مثل همة ‎etd‏ ل ا ل ات زره رم دس لت خواهد شد.

صفحه 486:
مثال ‎٩-۱۰‏ افزودن یک سازندهٌ کپی به کلاس ۲ 0 اك اك 1 ‎xn), ely xox)‏ اك و0 اق قسن رن ‎0 ۷ ۶ ۱ ۶ ‎Aan ‎fot ony, choc ‎1 ‏در مثال بالاء تابع سازندة کیسی طوری تعریف شده که ‏سس را رت سر ل ا

صفحه 487:
سازندة کپی در سه وضعیت فرا خوانده می‌شود: ‎See TCI ree eee PCy eal]‏ ل شود. 1 1 شی به وسیله .:_ ر به یک تابع رال ‎٠”‏ - وقتى كه يك شى به وسيلة ‏ :ار از ز گشت ‎an‏ شى راز یک تابع .زر <-

صفحه 488:
زابود كننده { ‎١ 5‏ یب نسم ِ رل( ‎r ‎ ‎ ‏وقت که وقتی 5 ‏یک نابود کننده ۱ .دارد تع | ‎>

صفحه 489:
مثال ‎٩-۱۲‏ افزودن یک نابودکننده به کلاس ۲97) ‎uss Ratz‏ رم ۷ .60000 ۱ متسر 0 iy ~Ruto() { cu << "OBJECT O1EG.\a"; } ‏م۱2‎ ‏در زر‎ ce

صفحه 490:
اشیای ثابت اشيا را نيز می‌توان با استفاده از عبارت 772۱ به صورت یک شیء ثابت اعلان کرد: vows Ruic PUCS,?); 9.00۴93 ۱ of], = wnt GIL);

صفحه 491:
۱ ‎ee eee Te)‏ كر 0 از آن‌جاکه یک کلاس ا ا ا ا داشته باشد.ء اشاره كر به اشيا بسيار سودمند و مفید است. ‏7 به ._برای ساختن فهرست‌های ييوندى ‎SEE‏ كار ‎oy)‏

صفحه 492:
مثال ‎٩-۱۳‏ استفاده از اشاره گر به اشیا

صفحه 493:
‎pS)‏ ار ‎pa‏ تسس - ای ز ‎Cleitel (pee)‏ رز مر آن شى ۳7 ‎Perrone)‏ می‌کند. ‏حتماباید هنگام استفاده از آن را درون ‎py)‏ ((۱ تقدم بالاتری نسبت به عملگر مقداریابی (4) دارد. اکر برانتزها قید نشوند و فقط . . ., نوشته شود کامپایلر این خط رابه صورت ...۰ ا تفسیر خواهد کرد که اين باعث خطا می‌شود.

صفحه 494:
تا لس ‎Oe IDE DD EDC‏ ل نشان می‌دهد. مثال ‎٩-۱۴‏ فهرست‌های پیوندی با استفاده از کلاس اك ‎Gr‏ اذ اک خناتانم 1 ‎data(d),‏ ل 4 200 ا ‎Reeser‏ ‏7 20

صفحه 495:
عبارت بالا کلاسی به نام 702() تعریف می‌کند که اشیای این کلاس دارای دو عضو داده‌ای هستند که یکی متغیری از نوع 1 است و ديكرى يك اشارهكر از نوع همين كلاس- اين ل ل ا ‎Papa ACS od‏ ديكر ييوند دهيم و يك زنجيره بسازيم.

صفحه 496:
اکر اشیای و «و از نوع ع() باشند. می‌توانیم پیوند اين سه شی رابه صورت زير مجسم کنیم:

صفحه 497:
به تابع سازنده نیز دقت کنید که چطور هر دو عضو داده‌ای شی.- جدید را مقداردهی می‌کند.

صفحه 498:
0 ا نامه را نشان می‌دهد. شكل زير روند اجراى بر ر دا می | ‎[int data‏ م ‎[Node* next]‏ int data int data ‏م‎ لمع | كك

صفحه 499:
اعضای داده‌ای استا هر وقت که شیثی از روی یک کلاس ساخته می‌شود. ن ‎Oey lr rR EC BL coed‏ رادارد. كاهى لازم است كه مقدار يك عضو دادهاى در همة اشيا يكسان باشد. اكر اين عضو مفروض در همة اشيا ‎ee)‏ ل ا ل ‎FC‏ ‎pe: Sipe pe agere entrees)‏ 2 ل 0 عنوان يك عضو ايستا اعلان كنيم.

صفحه 500:
۱ meee oe Roe itr ole perry 1۱ Cree ONC ‏ا ل‎ an Papen L etee) ‏متغیر. می‌توانیم آلن متغیر را به صورت ایستا اعلان نماییم. یک متفیر ایستا را فقط‎ | یک عضو داده‌ای ایستا را بیان می‌کند: )ا ععواص ) ‏:عناطح‎ ‎۱ ‏ل‎ eae RR RR Cac cco

صفحه 501:
See a ae eer ‏اه‎ care) ‏گونه متغیرها‎ 0 tee SS en be mete Te) Pe ee re ok Mer Be eae ‏ا‎ ‏داشته باشيد.‎ eae Re a on PNT كد زيرء كلاسى به نام اعلرن اعلان مى كند كه اين كلاس يى عضو داده‌ای ایستا به نام سس دارد. این عضو تعداد اشیای اس که موجود هستند را نگه می‌دارد. هر وقت که یک. ‎ered‏ ل ا ل ل ل كت ا ل ا ا لاك مى شودء از طريق نابود كننده مقدار دحج يكد واحد كاهش می‌یابد:

صفحه 502:
۳ ) ‏عاطم‎ ‎OO aa BO Gee) ‏تفه بت‎ 1 يي نا :"ما حاصيلشيد " >> توميب >> " ضبن جمصذا بيه ()" >> انجس و۲ ‎Oe‏ | = 4 0 ۳ ۳ LS

صفحه 503:
توجه کنید که چگونه چهار شی-ء اعلب درون بلوک ۱ بلوى خارج مى شودء 7 ‎SOCIO MME aE A ND‏ يى عضو دادداى ايستا مثل يك متغير معمولى است: فقط دک نان موه خاس دی دی

صفحه 504:
peer ‏ا‎ ‎Pe ONS a 9 OO aes ‏ره‎ ‏اس‎ { retura cout; }

صفحه 505:
۱۹ fea OD 0ك 0 pout << "Dow there ure" << wn Dideets() << " widgets. la"; 0 ا ال ال } FNS OE Sa ‏ا لل ا‎ Ae ‏ما‎ I OYE wrt he STR ‏ل ل‎

صفحه 506:
اين برنامه مانند مثال 4-18 كار مىكند با اين تفاوت كه متغير ایستای سح ‌به شکل یک عضو خصوصی اعلان شده و به م ا ‎ROU Oa earn‏ كل بتوانیم درون برنامةٌ اصلی به متغیر #سحسه دسترسی داشته ‎Steer ed‏ | مقیل تور کم ‎QWidget‏ ‎QWidget~‏ QnumWidgets

صفحه 507:
WO Cnt atthe ‏بادقت در مثال قبلى به دو ايراد بر مىخوريم: اول اين كه كرجه‎ 0 ‏متفیر 77:0 یک عضو ایستا ال‎ 1 1 ‏ا ا‎ ا 00

صفحه 508:
پر كد زير همان كد مثال قبلى است با اين فرق كه در اين كد. تابع دستيابى كننده نيز به شكل ايستا اعلان شده است: يت ‎public:‏ { ‎OR etal‏ یو تساه ا ما ان 00 اه انز ماد

صفحه 509:
PO teats (De fat ata) ‏ات۱‎ SZ al Ses pout >> "Onw there ane" << Didget:taucn() <<" wideets-\0"; SS a i a 0 ‏ل ل‎ i NSM a ee RE OO Oc OS ‏ها لس‎ 5 5 5) Bs -

صفحه 510:
وقتی تابع () به صورت ایستا تعریف شود. ‎Femi 002‏ آن نیازی به یک شیء موجود نیست و می‌توان با ‎Ree ER OS Cay‏ م ‎ee‏ فراخوانی کرد.

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

صفحه 512:
9 ۰ رز دما مود ارب جلسه دهم ۷ عملک ها «

صفحه 513:
: آنچه در این جلسه می خوانید "- توابع دوست - سربار گذاری عملگر جایگزینی (-) ۷ - سربار گذاری عملگرهای حسابی ‎Dl aCe Soca PO) Soa‏ 1 - سربارگذاری عملگرهای رابطه‌ای ا ‎FPS BCI 1 BCe ONT‏

صفحه 514:
خا ا ل كت كلاس و نحوة انجام اين كار.

صفحه 515:
هدفهاى رفتارى: انتظار مىرود يس از يايان اين جلسه بتوانيد: -«سربار گذاری» را تعریف کرده و اهمیت آن را شرح دهید. با ا بیان نمایید. م 15۱۳۱ - نحوةً سربار گذاری عملگر جایگزینی را بیان کنید. - نحوةّ سربار گذاری عملگرهای حسابی را بیان کنید. - نحوةٌ سربار كذارى عملكرهاى جايكزينى حسابى را بيان كنيد. - نحوةٌ سربا ركذارى عملكرهاى رابطهاى را بيان كنيد. ا 00

صفحه 516:
مش وه در 0++ مجموعداى از ر»2, .71 مختلف وجود دارد كه براى كارهاى ‎ee eed Sem nee toe)‏ ا له ار هنگامی که کلاسی را تعریف می‌کنیم. در حقبقت یک نوع جدید را به ۱ ۱ اما چون عملگرهای ریاضی زر ۲,۰ -, -) چیزی راجع به اشیای كلاس جديد نمىدانندء نمى توانند به درستى كار كنند. 0++ براى رفع اين مشكل جاره انديشيده و امكان سربا ركذارى عملكرها را تدارك ديده ا ل ا ا ل ل ل ل 4 جدپدی اضافه کنیم تا بتوانند با اشیای کلاس مورد نظر به درستی کار

صفحه 517:
Sa که (صله) )م سجاصب وا لمحناز اعضایی از کلاس که به شکل خصوصی . مزر ‎AO) care Or ee ee eee eae‏ دستیابی‌اند و از بیرون کلاس (درون بات امكان دستر سى به ‎bol‏ نیست. ‎on‏ ۹ اما يك استثنا وجود دارد. 2 ا که عضو یک كلاس نیست اما اجاژه دارد به اعضاى | وی ره >> ۶ >> لز 1

صفحه 518:
۲-سربا رگذاری عملگر جایکزینی(ع): دربین . . . . . . .عملگر جایگزینی شاید ل ال ل 211 ‎sea‏ || ل ا ا ا ل 0 مانتدر ازن زر رس زد کر ونر رت ره عملگر جایگزینی نیز به طور خود کار برای یک و ابحاد مى شود اما اين تابع 7 می‌توانیم كت ‎SS‏ ‏صربح درون كلاس اعلان نماييم.

صفحه 519:
افزودن عملگر جایگزینی به کلاس: ‎pres Ce pc eep ety‏ است که شامل سازندةٌ ‎gee ECR D AS ie Deer)‏ لت ) وه سس ۲ ‎(Dy‏ 4 420 ‎(Nir (zeacicah Onbeui49‏ ‎vod operator =(roust Rutin&);‏ 5-5 ‎Ane aace‏ در زر

صفحه 520:
0000 Ce] EEC S OCU) CES ‏است و فهرست آر گومان‎ 0 ‏آّن ل ل ا ا ا ل منفرد‎ ‏دارد كه از نوع همان کلاس است که 1 ارجاع ثلبت‎ Peed ‏ا ل ا الل‎ Osh a { ۳ ae ‏کد فوق اعضای داده‌ای شی-ء را لل‎ 2 ‏به درون اعضای داده‌ای شیثی که‎ مالک فراخوانی این عملگر است. / ‎GE‏

صفحه 521:
۲-اساره گر :۲ در ‎ .‏ می‌توانیم عملگر جایگزینی رابه شکل زنجیره‌ای مثل زير به کار ببریم: 07 < « < رر: اجراى كد بالا از راست به جب صورت مى كيرد. يعنى ابتدا مقدار ‎(OL PP)‏ 0 مى كيرد و سيس مقدار درون كيى مىشود و سرانجام مقدار لا درون 41,5 اا ا 0 جایگزینی که در مثال قبل ذکر شد. نمی‌تواند به شکل زنجیره‌ای به کار رود.

صفحه 522:
‎od‏ عصاس ‏اه ‎tet =); I] teP ok poostrutor‏ اد ‎aia gt aed‏ اس ماس دا وم ‎Cee Ta. cme (ek)‏ ‎vier devloraicas yp here //‏ ‏سم ‏نویه ‏/ ور مت ور ‎1 ‎Mee RO ‏دا مت‎ a) ‏ار مار ۳ ‎tan ad Hae

صفحه 523:
۱۱ ee eee eee ened) ‏مقداردهى تفاوت داردء هر جند هر دواز عملكر‎ یکسانی استفاده می‌کنند. مثلا در كد زير ۵۵ وا وا ۱ :(7 ‎Ratio mes‏ Ratio y(x); // this is an initialization 8۵0 2 - a // this is an initialization 8316 ‏الا‎ > ۸ < /۱ ‏واعوه طه عا عنط‎ 6۶ پآ ‎os‏ . جایکزینی عملکر جایگزینی . ان

صفحه 524:
:سر بل وذليوت سار هاو رعسبو چهار عملگر حسابی . و - و و ل زبان‌های برنامه‌نویسی وجود دارند و با ‎kre sre‏ ل ل مل اكت . « أ آنهاء اشياى ساحت خودمان را در محاسبات ی و 2 اي مر ‎eee ee ARIEL Rees Ae‏ ۱ ی ‎Tay OTe em] Es nei era a‏ 2 دسر 3 ‏عملگر ضرب براى كلاس 2 به شكل 7 (بر صنه<ا) ,> مها )) “مومه ص2 ‎cyt‏ 1 2 ۳ ‎{

صفحه 525:
| هب« ‎el‏ کلاس دستيابد. برای رفع این محدودیت‌ها. تابع سربار گذاری عملگر ضرب را باید به عنوان تابع دوست كلاس معرفى كنيم. لذا قاالب كلى براى سربار گذاری عملگر ضرب درون کلاس مفروض آبه شكل زير است؟ Class T ۱ T operator*(const T&, const :ء1اطنام ‎public members‏ // oleae Ue ۶ ۹۵

صفحه 526:
| در سرباركذارى عملكرهاى حسابى +و -و /نيزاز ‎aren | Perc open NFP Cas Fe‏ 1 ‎ae WS EB Dee ele a‏ ی علامت عملگر مربوطه را قرار دهیم و دستورات بدنة 7 T operator*(cor T& y) 0 // required operations for z = st T& x, const

صفحه 527:
مثال ۱۰-۳ سربار گذاری عملگر ضرب برای کلاس :۳؟) سستات اس ‎pee eee eer cee re‏ ‎ee‏ (0 دس ره د ه)مدمار )) سمدم )ماه ةر | eek) رد هط 3 Rate opercie” (cost Reto& x, ret Reaio& y) | ee ee ee ‏دم‎ 1 لا لع (مبمار زه )مدر 7 1

صفحه 528:
۵-سربا رگذاری عملگرهای جایگزینی حسابی؛ Oe en eles ‏ا ا‎ eae a ۱ ‏ا ا ا الل‎ ۱ . . ‏حسابی ساده. فقط یک عملوند دارند..‎ ele Slee GUS yp Le Sloe ‏سربار گذاری عملگرهای جایگزینی حسابی بر خلاف عملگرهای حسابی. می‌تواند عضو‎ ۱ eo eee Bl RC Soe tS CB) Sa CEP ‏ی زر رد‎ ا 00 5 ee كه )د ‎D&‏ فا و۳ 31

صفحه 529:
بدنة تابع سربارگذاری به قالب زیر است: ‎T& Topercia*= (cost T& x)‏ ‎required 7۳۲‏ // { ‎returce “this;‏ } استفاده از اشاره گر .. . باعث مىشود كه بتوانيم عملكر2 را در يك رابطة زنجیره‌ای به کار ببریم. در چهار عملگر ا ا ا ال ل 0 بر ا ‎er amen ya‏ ل دستورات بدنة تابع را نيز به تناسبء تغيير داد. مثال بعدى نشان می‌دهد که ال ا ل ‎OES) Mina 0D) SCD‏ 00

صفحه 530:
کلاس عطلت(1) با عملگر *- سربار گذاری شده ات >21 5 ‏774ص‎ ‎Re ana ‎ac ane al‏ 2 مجدر ‏عا محر

صفحه 531:
#-سربار كذارق تملترفاق رابطداقة شش عملكر رابطهاى در ‎١‏ وجود دارد كه عبار تند از: > وح از ل >= ۳۳ این عملگرها به همان روش عملگرهای ‎arrce‏ ل سا ۳ ‎ECD) peer‏ می‌شوند. اما ی ‎RO Tones”‏

صفحه 532:
حاصل عبارتی که شامل عملگر رابطه‌ای باشد. همواره یک مقدار بولین است. یعنی اگر آن عبارت درست باشد. حاصل 20 است واكر آن عبارت نادرست ‎wel‏ جون نوع بولين در حقيقت یک نوع عددى صحيح است. می‌توان به جای 20 مقدار ‎١‏ و به جاى ال ‎Fon nee‏ بازکشتی را برای توابع سربار گذاری عملگرهای رابطه‌ای. از نوع . . قرار داده‌اند.

صفحه 533:
قالب كلى براى سرباركذارى عملكر رابطهاى -- به شكل زير است: ‎chase “|‏ ‎jPriead tot operctor==(cocst T&, coset ۳۵۵ jf‏ 9 مر راز رز 1

صفحه 534:
int operator==(const T& x,const T& ۸ required operations to finding // } result ۳2۰۱۱24 ee en en ee aa at tear nce) ‏مى كيرد. ساير عملكرهاى رابطهاى نيز از قالب بالا ييروى‎

صفحه 535:
ey 5 ‏وسيسب‎ 35 CaO ae) Ci eiey cd ‏اد‎ SN sel CS ee DD ‏كسر هستند,‎ 7 ‏است که برای‎ Sines Renee glee ‏بررسى اين تساوى مى توانيم‎ 0 ‏(ى*دا--00) را بررسى كنيم. بدنة‎ ‏ان‎ = — DPE Nts bp perro re ‏را بررسی می‌کند.‎ ‎a‏ رسمه از ‎7 ‎0 ‎aD)‏ يي سا مت ی سس ‎Fee RMA. a Cen) |‏ ‎i

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

صفحه 537:
قالب کلی برای سربار گذاری عملگر پیش‌افزایشی به شکل زیر است ان جا ع ار اشارة كر "7 (استنادة ره علت هم ‎eee ad‏ ا ا ۱ باز گشت داده شود. به همین دلیل اشاره‌گر به و ۱ ۱

صفحه 538:
0 " یک شى از كلاس باشد وعبارت ارزیابی كرددء مقدار به افزوده مىشوداما جون يك عدد ‎pee)‏ ا ال ل 2 ل 0 200 دارد. فرض کنید . . . . باشد. حالا داریم: 22 22+7 29 Sa pe 3

صفحه 539:
1 ل 00 اشاره‌گر . به شیء جاری (مالک فراخوانی) اشاره دارد. کافی است مقدار این اشاره‌گر ا ا ل ا ا ل ۷ ۱ در عمل جایگزینی, درون قرار می‌گیرد: 12 arc ed Par: wee (clo ie) ean ۱9 ACL ie ‏و‎ ۱ ‏سس‎ om eta OME ‏ا‎ Cae ees ccs ny ld (ec eaL Fc Rea aS MI Sa ۳ en ane ad FST ae 1

صفحه 540:
0 0 ل نیز به ال ‎eee See ay‏ ‎Te RCD) eae)‏ 0 اينهاء عملگرهای دیگری نیز مثل عملگر خروجی (<<) , عملگر ورودی (> >). عملكر انديس (]) و عملكر تبديل نيز وحود دارند که می‌توان آنهارا براى سازكارى براى كلاسهاى جديد سرباركذارى كرد.

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

صفحه 542:
9 ۰ رز دما مود ارب جلسه بازدهم «تر کیب و ورائت»

صفحه 543:
مقدمه رس وراثت اعضاى حفاظت شد غلبه كردن بر وراثت ار ا ل ‎peec eye‏ ا

صفحه 544:
کلاس‌های پايةٌ انتزاعی پرسش‌های گزینه‌ای پرسش‌های تشریحی eed ‏شي‎ 5 : ياسخنامة يرسشهاى كزينهاى استاندارد استاندارد

صفحه 545:
بيان اهميت تر كيب وورائت در شى كرايى و جكونكى انجام اين كارها. انتظار می‌رود پس از پایان این جلسه بتوانید: ده( ‎See Peon eke Soe I‏ ۳

صفحه 546:
- «اعضاى حفاظت شدة كلاس» را تعريف كنيد و تفاوت اين اعضا با اعضاى عمومى و خصوصى كلاس را شرح 5 - نحوةٌ غلبه كردن بر وراثت را شرح دهيد. - «تابع مجازى» را تعريف كنيد و علت استفاده از توابع مجازى را بدانيد. - «چندربختیی را تعریف کنید و ل چندر بختی بر کلاس‌ها ۳۳ - «کلاس پايةٌ انتزاعی» را تعریف کنید و علت تعریف این كلاءان افا را ذكز) كنيد:

صفحه 547:
‎Ree ee Re Were Ret nore‏ رت ‏كه همه جيز از اول طراحى شود. مى توانيم براى ايجاد ‏کلاس مورد نظر از ارت ‎TH coy Ge‏ ‎11211111117 ‏اين باعث صرفهجويى در وقت و استحكام منطق برنامه د. ‎

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

صفحه 549:
کد زیر. کلاس -::() را نشان می‌دهد که اشياى اين كلاس براى نكهدارى تاريخ استفاده می‌شوند. تایه ‎W=O, rt S=D)‏ ۱۹ ad a) Fee Oe ea on) 1: il Sc Cs ie را ۱0 | ‏ل ل‎ ieee a) 000 et ‏اا ا‎ privat ۲ Sd 0

صفحه 550:
®ovk pS Soe) ‏ا ا ا‎ ECS ‏مشخصات يك كتاب را نكهدارى مى كنند:‎ chose Book atc } :@ovk(cha* a ="") tot i = ©, ‏تمه‎ O) {} sae(a), (1), poce(r) vod pricKDawe() { cout << ove; } void priefld() ) ‏ايلع >> نحم‎ } ‎rout << pore; }‏ ) ()جوه "ماسم لور ‎۳۳ ‏دنه سوه موز ‎proce‏ رل از

صفحه 551:
‎Cad‏ تا ‏رام ‎Oe 0‏ ‎0S Oma)‏ ‎Peta One OE Gt eer an Tad OR OC TE ‏تعدمم >> نحم ‎On‏ دم صر ‏(0 يا رج يا ره يب 008 2اميسد لين ‎00 ‏ل‎ Aa ‎ane Nel Nets ae eo nora ‏هه ریت۲‎ ‏مان ‎RO ‏و‎ os ‎۱

صفحه 552:
وراثت روش ديكرى براى ايجاد كلاس جديد از نيز مى ككويند. ا ال

صفحه 553:
اعضای حفاظت شده: ۱0 ‏ا‎ Ju Jin p> we Aa ST ‏خصوصى كلاس والدش دسترسى داشته باشد., اما با استفاده از‎ ‏توابع عضو عمومى كه از كلاس والد به ارث بردهء مى تواند به‎ Oe 1 0 ‏ا‎ hoe e ee Cy ol ‏اعضاى خصوصى‎ ‏كلاس فرزند را براورده نسازندء كلاس فرزند ناكار ا مد مى شود.‎ ‏اوضاع زمانی وخیم‌تر می‌شود که هیچ تابع عمومی برای دسترسی‎ ا ۱

صفحه 554:
۱ cldlolST th jl wIS aj SI ‏حفاظت شدهٌ كلاس راارث مىبرند.‎ مثلا تمامی اشیای تابع دستيابى ‎00٠١١١‏ ازكلاس رابه ارث مىبرند. به تابع ‎١١١١‏ يكدهعضوموروثى» soul باشیم يعنى كلاس فرزندء. عضوى هم نام با عضو موروثى داشته باشد كه مخصوص به خودش باشد و ارثی نباشد. برای مثال فرض كنيد كلاس يك عضو عمومى به نام داشته باشد و كلاس زير ‎bb pS‏

صفحه 555:
در این حالت اشیای کلاس : عضو موروثی 7 را خواهند داشت. حال اكر يكد عضو به همان نام 7 در زير كلاس ‎٠“‏ به شكل ‎eee) ors Be.‏ ا ا ا ‎RG‏ ‏مقلوب می‌کند. Te IR ele ek Se Rare ee aCe a ane ie 7 ‏شى 801 ا عضو 7 غالب اشاره دارد نه به‎ 0 ا 7 ۱۲ به 7 موروثی دستیابی دارد.

صفحه 556:
هم مى توان اعضاى دادهاى موروثى را مغلوب كرد و يعنى اكر كلاس داراى يك عضو تابعى عمومى به نام ۴() باشد و در زیرکلاس نیز تابع ۴ را به ‎Ce eC OB Cord‏ ل 7 ‎TF‏ ‏اشاره دارد 9 ‎a (001d Ge me‏ تابع موروتى اشاره دارد. در برخی از مراجع به توابع غالب. . می‌گویند ۱ كتاب هر دو مفهوم را به عنوان اعضاى غالب به كار مى بريم. به مثال زير نكاه كنيد.

صفحه 557:
اعضای داده‌ای و تابعی غالب : [ تال ۱ ار تا : ۷۲ عون [ ارو ) f= Poetic"; }

صفحه 558:
سازنده‌ها و نابودکننده‌های والدة 0 :"ا>سحجمت سماصحفصط ()7::02" >> نحط ) 0 ‎Fey‏ al ۲ ) ‏مه‎ >> ۷ ) ‏وم‎ >> cee publ | BO On ea) eae eee 7 ‏راک مت‎ ۱ ۳ 0 oan ۳ ۱

صفحه 559:
اشاره‌گرها در ورائت : ‎٠. ©‏ 2 د ود" در شى كرايى خاصيت جالبى وجود دارد و لن اين است كه اكر « اشارهكرى از نوع كلاس ‎Ine)‏ ل ا ا ۱ کنید: که ‎able‏ ‏فلت ‏/ ‏) خان وجواسطد ه ‎IIS? ts‏ عاطم : ث٠‏ سداد ‎able |‏ فلت 0 ‎Od‏ ‎Ih pte spotter to objets oP base chew X‏ ‎ua‏ ‎oP subckes VY‏ ماه او سل موم ار 0

صفحه 560:
5 ۰ شه و ‎Ss‏ ‏اشاره‌گری از گلاس والد به شیئی از گلاس فرزند؛ در برنامه زیر کلاس زر کلاسی از است هر دوی این کلاس‌ها دارای یک عضو تابعی به نام هستند و 7 اشاره‌گری از نوع : تعريف شده: نيدت احج ‎Pee ean rn eee ca‏ 3 ا ‎ble |‏ ( 0 ريس 1 1 تخد ‎Dewi‏ ‏94 ‏>« < ) عجب ل عم مسا (::۷ لس || ترا ‎Re‏ ‎X‏ عرب دكا م «صوجهنا ()*:: لا وجحاهها |/ )8م {

صفحه 561:
توابع مجازی و چندر یختی : ا ل ا ا ل مشخص مىشود. وقتى يى تابع به شكل مجازى ‎Pes Sg Cs SO CRC ee Pye pee) es‏ فرزند نيز تابعى با همين نام وجود دارد. توابع مجازى امكان مىدهند كه هنكام استفاده از اشارهكرهاء بتوانيم بدون در نظر كرفتن نوع اشارهكرء به توابع شىء جارى دستيابى كنيم. ‏ مثال زير ‎Pees ss‏

صفحه 562:
استفاده از توابع مجازى: ا عصان ‎pablo: — Orrtud Puarion }‏ وک ۱۳ سس ae eG Cea 0 | ‏ا‎

صفحه 563:
چندریختی از طریق توابع مجازی ؛ سه کلاس زیر را در نظر بگیرید. بدون استفاده از توابع‌مجازی, برنامه آن طور 1 اف ۳ eer saree ‏ناریو ویو‎ < حجنو إي كوهيم ‎aces ot tea aa aca‏ بخ" ' 1 ea ‘= on oe ۳

صفحه 564:
آنابود‌کنندة مجازی با توجه به تعريف توابع مجازى. به نظر مىرسد كه نمىتوان توايع سازنده و نابودكننده رابه شكل مجازى تعريف نمود زيرا سازنددها ‎BCEY‏ ل ا ا ا 00 ‎CL Deo‏ ا ‎COS BY CES BeBe RSC IN ee‏ دیگری دارند. مثال بعدی ایراد مهلکی را نشان می‌دهد که با مجازی کردن نابود كر. برطرف مى شود.

صفحه 565:
لح لي الي -("ها.0)-" >> ففجم زم [] منطاط ) )0 رو [7 NER eae aS Ohl ie hes dD od pride int 000 | ات اس یا | لسع حم “لاز از i 1 1

صفحه 566:
کلاس‌های پایة انتزاعی : در شی‌گرایی رسم بر این است که ساختار برنامه و کلاس‌ها را طوری طراحی کنند که بتوان. آن‌ها را به شکل یک نمودار درختی شبیه زیر نشان داد:

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