صفحه 1:
دانشگاه آزاد اسلامی واحد گرگان
گروه مهندسی کامپیوتر و فناوری اطلاعات
برنامه نویسی (6++
محمد رضا ملک شاهکویی
مم wena aah
OOO.OrOdek.I-
سایت و انجمن علمی تخصصی مهندسی شیمی
GOTOWE.COD
صفحه 2:
برنامه نوبسی به زبان ++ (6. نوبسنده: جعفرنژاد قمی
* کتاب آموزش زبان برنامه نوبسی ++ () دایتل دایتل
ابزارها و نرم افزارهای مورد نیاز:
نرم افزارهای آفیس و ویژوال استودیو ۲۰۰۸ 2 @orkaad 4
آدرس پست الکترونیکی:
mamad.malek@gmail.com
صفحه 3:
Oourse Cuckritica Gchewe
امتحان پایان ترم: ۱۴ نمره
امتحان میان ترم: ۵ نمره
تمرین های کلاسی و شرکت در بحث کلاس: | نمره
صفحه 4:
جایگاه این درس در رشته مهندسی کامپیوتر و مهندسی ۲۳
این درس اولین درس دانشگاهی رشته می باشد و نقطه شروعی برای ورود به
دنیای جالب برنامه نویسی و علم و فن کامپیوتر هست. بنابراین یاد گیری اصول
اولیه برنامه نویسی در این درس از جایگاه ویژه ای برخوردار است.
این درس پایه و اساس برنامه نویسی است که جزء اصول این رشته می باشد و
اين اصول را به فرگیران یاد می دهد . بنابراین یادگیری دقیق این درس به
همراه ارائه پروژه های عملی که لازمه اين درس می باشد جزء اهم مسائل می
باشد .
صفحه 5:
اهداف درس
الگوریتمی برای حل مسئله ارائه دهد.
اصول و مبانى اوليه نرم افزار و سخت افزر را بشتاسد.
اهدلف و مفاهیم زبانهای برنامه نویسی را بداند.
مفاهيم اوليه برنامه نويسى ساخت یافته را بداند و اصول لازم را در مرحله اجراء بکار برد .
دستورا (کب+ را در برنامه ها بکار ببرد.
از توایع و روال های استاندارد زبان HO در صورت لزوم استفاده نماید.
از توابع » روال ها برای جدا کردن قطعات برنامه استفاده کند.
صفحه 6:
ان های برنامهنویسی
نرمافزارها توسط زبان های برنامهنویسی نوشته میشوند. زبان های برنامهنویسی»
یک سیستم ارتباطی هستند که توسط آن ها میتوان دستورات لازم را به ماشین
انتقال داد.
هر زبان برنامهنویسی به مجموعهأی از علایم. قواعد و دستورالعملها گفته میشود
که امکان ارتباط با کامپیوتر را جهت بیان کاری یا حل مسئلهای فراهم میکند.
صفحه 7:
در حالت کلی زبان های برنامهنویسی را به سه دسته زیر تقسیمبندی میکنند:
ان های سطح بالا
زبان های سطح پایین
زبان های سطح میانی
برنامه نوشته در یک طح بالا را به برنامه مقصد تبدیل میکند.
Source
Object Executable
File
صفحه 8:
صفحه 9:
هدفهاي كلي
شناخت حل مسئله و ارائه الگوریتم
شناخت اجزاء لازم برای حل مسئله
بررسی صحت الگوریتم
صفحه 10:
هدفهای رفتاری
دانشجو يس از مطالعه اين فصل بايد بتواند:
_ الگوریتمی را برای حل مسئله ارائه دهد.
* . الگوریتم های مختلف برای یک مسئله را مقایسه کند.
_ شرط ها و حلقه ها را در الگوریتم بکار پبرد .
صفحه 11:
مقدمه
در زندگی روزمره. انسان با مسائل مختلفی روبروست و برای هر کدام از این
مسائل (حل مشکلات) راه حلی و روشی را بر میگزیند. مسائلی از قبیل راه رفتن.
غذا خوردن. خوابیدن و غیره که بشر تقریباً هر روز آنها را پیش روی خود دارد.
همه اين مسائل نیاز به روشی برای حل کردن دارند مثلا راه رفتن باید با ترتیب
خاصی و مراحل معینی انجام شود. تا سئله راه رفتن برای بشر حل شود.
اصطلاحاً روش انجام کار یا حل مسئله را الگوریتم آن مسئله مینامند.
صفحه 12:
تعریف الگوریتم
هر دستورالعملی که مراحل انجام کاری را با زبانی دقیق و با جزئیات کافی
بیان نماید بطوریکه ترتیب مراحل و شرط خاتمه عملیات در آن کاملا"
مشخص شده باشد را الگوریتم گویند. به عبارتی دیگر: الگوریتم
مجموعهای از دستورالعمل هاء برای حل مسئله میباشد که شرایط زیر را
باید دارا باشد:
¥ دقيق باشد
۲ جزئبات کامل حل مسئله را داشته باشد.
۴ پایانپذیر باشد.
صفحه 13:
مراحل الگوریتم
برای حل یک مسئله باید الگوریتم آن مسئله را مشخص كنيم (يا بيابيم). كه
7 7 ۳ 2
اصطلاحاً طراحی الگوریتم برای آن مسئله نامیده میشود. در طراحی الگوریتم
معمولاً سه مرحله زیر را از هم جدا میکنند:
“”" خواندن دادهها
۲ انجام محاسبات
خروجیها
صفحه 14:
مثال : الگوريتمي بنویسید که دو عدد از ورودي دریافت کرده مجموع
دو عدد را محاسبه و چاپ نماید.
٠ شروع
۵-۱ر ۲ را بخوان.
۲-مجموع 2 , ظ را محاسبه و در 51110 قرار بده.
۳- 511110 را در خروجی چاپ کن
۴-پایان
صفحه 15:
مثال: الگوریتمی بنویسید که سه عدد از ورودی دریافت کرده مجموع و ميانگین
سه عدد را محاسبه و چاپ کند.
خروجىها م محاسبات
ese
جاب ميانكين
wre
١ سه عدد از ورودى بخوان
۲ مجموع سه عدد را محاسبه و در soy JB SUM
۳- 51110 را بر سه تقسیم کردهدر 216 قرار بده.
4 511۳0 ر 376 را در خروجی چاپ کن.
6 پایان.
صفحه 16:
معمولا درک یک الگوریت يتم با شكل راحت تر از نوشتن آن بصورت متن
میباشد. لذا الگوریتم را با فلوچارت(6122۳ 0100 نمایش میدهند.
فلوچارت از شکلهای زیر تشکیل میشود.
علامتهای شروع و پایان: که معمولا از یک بیضی استفاده می کنند:
علامتهای ورودی و خروجی: که معمولا از متوازیالاضلاع استفاده میشود:
صفحه 17:
علامتهای محاسباتی و جایگزینی: برای نمایش دستورات جایگزینی و
محاسباتی از مستطیل استفاده میکنند:
جایگزین یا
محاسبات
علامت شرط:
برای نمایش شرط از لوزی
استفاده میشود.
علامت اتصال:
برای اتصال شکلهای مختلف بهم از فلشهای جهتدار استفاده میکنند.
< >
صفحه 18:
فلوچارت مجموع سه عدد
Read(a,b,c)
صفحه 19:
مثال: فلوچارتی رسم نمائید که دو عدد از ورودی دریافت کرده سپس
محتویات دو عدد را با هم جابجا نماید
برای حل این مسئله 2 , 0 را دو متفیر که در آنها دو عدد خوانده شده. قرار
میگیرند در نظر میگیریم. سپس با استفاده از یک متفیر کمکی محتویات این دو
عدد را جابجا میکنيم :
صفحه 20:
صفحه 21:
Ki Boel
فلوچارت مسئله بالا بصورت زیر خواهد بود:
صفحه 22:
دمرين
۱- فلوچارتی رسم نمائید که طول و عرض مستطیل را از ورودى دريافت كرده
محیط و مساحت آنرا محاسبه و چاپ کند.
۲ فلوچارتی رسم نمائید که شعاع دایرهای را از ورودی دریافت کرده. محیط و
مساحت آنرا محاسبه و چاپ نماید.
۳- فلوچارتی رسم کنید که سه عدد ات ,له , ۳۳۷ را از ورودی
دریافت کرده. محتویات آن ها را جابجانموده, حاصل را در خروجی چاپ کند
۴ فلوچارتی رسم نمائید که دو عدد از ورودی دریافت کرده. سپس محتویات دو
عدد را بدون استفاده از متفیر کمکی جابجا کند.
۵ فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد) را از
ورودی دریافت کرده سپس آن را به درجه فارنهایت تبدیل کند.
2ج 2د
fase
صفحه 23:
دستورالعملهاي شرطي
در حل بسيارى از مسائل يا تقريباً تمام مسائل نیاز به استفاده از شروط
جزء نیازهای اساسی محسوب میشود. همانطور که ما خودمان در زندگی
روزمره با اين شرطها سرکار داریم. بطور مثال اگر هوا ابری باشد ممکن
است چنین سخن بگوییم:
اگر هوا بارانی باشد سپس چتری برمیدارم. در غیر اینصورت چتر برنمیدارم
صفحه 24:
:در حالت كلي شرط را بصورت زير نمایش مي دهد
NO
عمل يا اعمال بعدى
صفحه 25:
مثال : فلوچارتی رسم نمائید که عددی را از ورودی دریافت
,کرده» فرد یا زوج بودن آن را تشخیص دهد
Write(‘odd’)
صفحه 26:
مثال : فلوچارتی رسم کنید كه دو عدد از ورودی دریافت کرده بزرگترین عدد را بيدا کرده در
خروجی چاپ نماید.
صفحه 27:
مثال : فلوچارتی رسم نمائید که سه عدد از ورودی دریافت کرده.
کوچکترین عدد را یافته در خروجی چاپ نماید:
صفحه 28:
انمونه اجرای فلوچارت بالا بصورت زير میباشد
صفحه 29:
تمرین
۱- فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده. قدر مطلق عدد را در
خروجی چاپ کند.
۲- فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده مثبت. منفی یا صفر
بودن عدد را تشخیص داده. در خروجی با پیفام مناسب چاپ کند.
۳- فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده. بخش پذیری آن بر ۲
و ۵ را بررسی نماید.
۴ فلوچارتی رسم نمائید که ضرایب یک معادله درجه دوم را از ورودی. دریافت
کرده. ریشههای آن را محاسبه در خروجی چاپ کند.
صفحه 30:
حلقدها
در حل بسیاری از مسائل با عملیاتی روبرو میشویم . که نیاز به تکرار دارند
بیرد. فرض کنید. بخواهیم
میانگین ۱۰۰ عدد را محاسبه کنیم. در اینصورت منطقی بنظر نمیرسد که
۰ متغیر مختلف را از ورودی دریافت کنیم سپس آن ها را جمع کنیم.
و عمل تکرار آن ها به تعداد مشخصی انجام می
صفحه 31:
انواع حلقه ها
حلقه های با تکرار مشخص
حلقه های با تکرار امشخص
صفحه 32:
حلقه هاي با تکرار مشنخص
در اين نوع حلقهها تعداد تکرار مشخص میباشد این حلقه از اجزاء زیر
:تشکیل میشود
ال انديس حلقه
۲- مقدار اوليه براى انديس خلقه
۳- مقدار افزاینده برای اندیس حلقه (معمولا یک واحد در هر مرحله)
4 مقدار نهایی (تعداد تکرار حلقه)
۵- شرطی برای کنترل تعداد تکرار حلقه
صفحه 33:
اين حلقهها را غالبا با فلوچارت بصورت زیر نمایش ميدهند:
مقدار اولیه برای اندیس حلقه : ۱
مقدار افزاینده برای اندیس حلقه (معمولا
یک واحد در هر مرحله) : +۱
صفحه 34:
مثال : فلوچارتی رسم نمائید که عدد 1 را از ورودی دریافت کرده. مجموع
اعداد از یک تا 7 را محاسبه کند.
صفحه 35:
صفحه 36:
:نمونه اجرای فلوچارت بالا بصورت زیر است
صفحه 37:
مثال : فلوچارتی رسم کنید که « عدد از ورودی دریافت کرده بزرگترین مقدار از
بين « عدد را پیدا کرده در خروجی چاپ نماید.
انديس حلقه
صفحه 38:
صفحه 39:
مثال : فلوچارتی رسم نمائید که 6 , 1 . دو عدد صحیح مثبت را از
ورودی دریافت کرده سپس 5 به توان 8 را محاسبه کند.
انديس حلقه
مقدار نهایی
عدد به توان ۳۲
صفحه 40:
x
5
1
5
2
صفحه 41:
حلقههایی که تعداد تکرار آن ها مشخ
ان ها مشخص نیست.
صفحه 42:
در حالت کلی این نوع حلقهها بصورت زير نمایش داده میشوند:
صفحه 43:
مثال: فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده سپس
تعداد ارقام آن را شمرده در خروجی چاپ نماید.
عدد خوانده شده
تعداد ارقام
صفحه 44:
صفحه 45:
مثال : فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده. سری
فیبوناچی قبل از آن را تولید نماید.
ندر حالت کلی جملات سری بصورت
مگ یگ
عدد خوانده شده
جمله اول سری
جمله دوم سری
جمله سوم سری
صفحه 46:
3 سه» ۲2
1+2 ث©» 3
صفحه 47:
تمرین
۱- فلوچارتی رسم نمائید که عددى از ورودی دریافت کرده. کامل بودن آن را
بررسی نماید. (عدد کامل, عددی است که مجموع مقسومعلیههای آن با خودش
برابر باشد.)
۲- فلوچارتی رسم کنید که () را از ورودی دریافت کرده. () جمله سری
فیبوناچی را تولید نماید.
۳ فلوچارتی رسم نمائید که دو عدد 0 , 60 را از ورودی خوانده. بزرگترین
مقسومعلیه مشترک دو عدد را محاسبه و چاپ کند.
صفحه 48:
حلقههاي تودرتو
الگوریتمهایی که تا حال بکار بردیم. فقط شامل یک حلقه بودند. در صورتی که در
بسیاری از مسائل ممکن است نیاز به استفاده از چند حلقه در داخل هم باشیم. در این
نوع حلقهها باید دقت پیشتری به خرج دهیم. تا مشکلی پیش نیاید. اگر از حلقههای
نوع اول بصورت تودرتو استفاده کنیم در اینصورت برای هر حلقه شرط نهایی و
انديس اوليه جداكانه بايد تعريف كنيم .
صفحه 49:
در حلقههای تودرتو به ازای یکبار تکرار حلقه اولیه. حلقه داخلی به اندازه
مقدار نهایی خود تکرار میشود. در کل اگر حلقه اولیه 10 بار تکرار شود و
حلقه داخلی 190 بار: در اینصورت کل حلقه :
nxm
بار تکرار خواهد شد
وب
صفحه 50:
فلوچارت حلقههای تودرتو را میتوان بصورت زیر نشان داد:
اتمام کار حلقه های تو
در تو
مجموعه دستورات و جايكزينى ها
صفحه 51:
مثال : فلوچارتی رسم نمائید که را از ورودی دریافت کرده. مجموع سری زیر
را محاسبه نماید:
S=1+2+34+..44
N
انديس حلقه اول
ورودى ©
محاسبه فاکتوریل ۳
اندیس حلقه داخلی
مجبوع سس
صفحه 52:
ایا راه ساده تری وجود دارد؟
صفحه 53:
اس sum ا
1
صفحه 54:
تمرینات آخر فصل
- فلوچارتی رسم نمائید که (1) عدد از ورودى دريافت كرده تعداد اعداد اول و كامل را شمرده در خروجى
جاب نمايد.
؟- فلوجارتى رسم نمائيد كه 6 , 00 را از ورودى خوانده مقدار سرى زير را محاسبه كنيز و
A
دب بو
2 tal
۳-فلوچارتی رسم نمائيد كه عددی را از ورودی دریافت کرده مقلوب عدد را محاسبه و در خروجی
۴- فلوچارتی رسم کنید كه تاريخ تولد شخصی را از ورودی خوانده. سن شخص را با تاريخ روزه محاسبه
نموده در خروجی چاپ کند.
۵- فلوچارتی رسم نمائید که (<6) ۷, لال را از ورودی دریافت کرده سری فیبوناچی بین (, (4 را
تولید کرده. در خروجی چاپ کند.
صفحه 55:
x
2
3
t
3
=
2.
9
5
صفحه 56:
8 فصل اول : مقدمات زبان 40+
9افصل دوم : ساختار های تصمیم گیری و تکرار
8 فصل سوم : سایر ساختار های تکرار
8 فصل چهارم : اعداد تصادفی
8 فصل پنجم : آرایه ها
۵ فصل ششم : توابع
© فصل هفتم : ساختارها و اشاره گرها
صفحه 57:
صفحه 58:
فهرست مطالب فصل اول
قانون نامگذاری شناسه ها
متغیر ها
اعلان متغیر
تخصیص مقادیر به متغیر
داده های از نوع کرکتر
کرکتر های مخصوص
رشته ها
نمایش مقادیر داده ها
دریافت مقادیر
عملگر انتساب
عملگر های محاسباتی
. عملگرهای افزایش و کاهش
. عملگر مد
. عملگرهای جایگزینی محاسباتی
اولویت عملگرها
توضیحات (0)
. توابع کتابخانه
برنامه در 60++
صفحه 59:
این زبان در اوائل دهه ۱۹۸۰ توسط صفصحه )در آزمایشگاه بل
طراحی شده. این زبان عملاً توسعه یافته زبان برنامه نویسی () می باشد که
امکان نوشتن برنامههای ساخت يافته شی گرا را میدهد.
صفحه 60:
قانون نامگذاری شناسهها
OY حروف کوچک و بزرگ در نامگذاری شناسهها متفاوت میباشند.
4
صفحه 61:
انون نامگذاری اسهها
۲ در نامگذاری شناسهها از حروف الفبا ارقام وزیر خط (1۴06۳560۲6)
استفاده میشود و حداکثر طول شناسه ۳۱ میباشد و شناسه بایستیبا
یک رقم شروع نگردد.
صفحه 62:
مكذ اسه
۳ برای نامگذاری شناسهها از کلمات کلیدی نبایستی استفاده نمود. در زيز بعضى از كلمات
کلیدی داده شده است.
صفحه 63:
صفحه 64:
انواع داده ها
tt ۱۳۲۷۶۸- تا ۷۷
Beare + د سس
۷ تا -۳۸۳۶۲۸ ۱۲۱۴۷ -
۹۷۵ تا sted brag
یک کارکتر
۷ تا -۱۲۸ مسب
GS 16r-00 50.4268
ال
9مو تا 6.6606
صفحه 65:
قبل از آنکه در برنامه به متغیرها مقداری تخصیص داده
شود و از آنها استفاده گردد بایستی آنها را در برنامه اعلان
نمود.
صفحه 66:
چند مثال از اعلان متغیر ها :
“” _برای اعلان متغیراز نوع tint
tt x;
براى اعلان متغيرهاي م و 0 راز نوع 103 که هر کدام چهاربایت از
Poa 7,
حافظه را اشغال oe
براي اعلان متفیر 066 از نوع کرکتر که میتوان یکی از ۲۵۶ کرکتر را
به آن تخصیص داد و یک بایت را اشغال میکند:
chor vend;
صفحه 67:
با استفاده از عملگر < میتوان به متغیرها مقدار اولیه تخصیص ذ
صفحه 68:
* در دستورالعمل
نوع »با مقدار اولیه ۲۶ اعلان نموده .
در دستورالعمل 0 HOPOOO مسار
متغيرهاى ناو ف را از نوع,م بط تعريف نموده با مقادير بترتيب
و
صفحه 69:
دادههای از نوع کرکتر
برای نمایش دادههای از نوع اه در حافظه کامپیوتر از جدول
1 استفاده میشود. جدول اسکی به هر یک از ۲۵۶
کرکتر یک عدد منحصر بفرد بین ۰ تا ۲۵۵ تخصیص میدهد.
صفحه 70:
کامپیلر HO بعضی از کرکترهای مخصوص که در برنامه میتوان از
آنها برای فرمت بندی استفاده کرد را تشخیص میدهد. تعدادی از
این کرکترهای مخصوص به همراه کاربرد آنها در اسلاید بعد آورده
شده است .
صفحه 71:
کرکترهلی مخصوص
بعنوان مثال از کرکتر [ه میتوان برای ایجاد صدای بسا
استفاده نمود.
joka x= Me
صفحه 72:
رشته یا cram عبارتست از دنبلهای از کرکترها که بین قرار داده
میشود. در حافظه کامپیوتر انتهای رشتهها بوسیله ۰۱ ختم میگردد
در اسلاید بعد به دو مثال دقت تما سد.
صفحه 73:
STORE" 80016" یک رشته ده کرکتری میباشد
که با توجه په کرکتر ۰۱ که به انتهای آن در حافظه
لضافه مى شود جمعاً يازده بايت را اشغال م ىكند.
صفحه 74:
دقت نمایید که ۲۷۲" یک رشته میباشد که دو بلیت از
حافظه را اشغال میکند در حالیکه ۲۷ یک کرکتسر
میباشد که یک بایت از حافظه را اشغال مینماید.
صفحه 75:
نمایش مقادیر دادهها
برای نمایش دادهها بر روی صفحه مانتور از لت که
بدنبال آن عملگر درج یعنی < <قید شده باشد استفاده
میگردد. بایستی توجه داشت که دوکرکتر يشت سر هم
توسط HO بصورت یک کرکتر تلقی میگردد.
صفحه 76:
۱ لخد +
برای نمایش پیفام بیس اسب بر روی صفحه نمایش
:"مب لعي" >> جد
۲ برای نمایش مقدار متفیر ۲ بر روى صفحه نمايش :
صفحه 77:
دریافت مقادیر متغیرها
به منظور دریافت مقادیر برای متفیرها در ضمن اجرای برنامه از
صفحه کلید. از 240 که بدنبال آن عملگر استخراج یعنی >>
قید شده باشد میتوان استفاده نمود.
صفحه 78:
int x;
cout << "Enter a number:" ;
cin >>: x
صفحه 79:
عملگر انتساب میباشد که باعث میگردد
مقدار عبارت در طرف راست اين عملكر ارزيابى
صفحه 80:
از عملگرهای انتساب
چندگانه نيز مىتوان
استفاده نمود. كه مقدار
سه متفیر 2 و ۷و برابر
با ۶ می شود
صفحه 81:
عملگرهای محاسباتی
در 0++ پنج عملگر محاسباتی وجود دارد که عبار تند از :
/
%
این عملگرها دو تائی میباشند زیرا روی دو عملوند عمل مینمایند. از طرف
دیگر عملگرهای + و -رامیتوانبعنوان عملگرهای یکتائی نیز در نظر گرفت.
صفحه 82:
در حالتی که هر دو عملوند عملگرهای .۰1 ۰*۰۱ +, - از نوع
صحیح باشد نتیجه عمل از نوع صحیح میباشد.
صفحه 83:
در صورتیکه حداقل یکی از عملوندهای عملگرهای ۰1 *. -. + از
نوع اعشاری باشد نتیجه عمل از نوع اعشاری میباشد.
9.۸
ه 9.0
6.0/8.0
صفحه 84:
متغیر از نوع صحیح را کاهش مینامند..
صفحه 85:
عملگر کاهش را با - - و عملگر افزایش
رابا ++ نمایش میدهند: چون ععلگزهای
++ و - - فقط روى يك عملوند اثر دارند
اين دو عملكر نيز جزء عملگرهای یکتائی
مى باشند.
صفحه 86:
معادل میباشند و بطریق مشابه سه دستورالعمل زیر نیز معادل می باشند.
صفحه 87:
از عملگرهای ++ و -- میتوان بدو صورت پیشوندی و پسوندی استفاده نمود.
در دستورالعملهای پیچیده عملگر پیشوندی قبل از انتساب ارزیابی می شود و عملگر
پسوندی بعد از انتساب ارزیابی میشود.
صفحه 88:
int x=5;
yHt+x * 2;
پس از اجرای دستورالعملهای فوق :
پس از اجرای دستورالعملهای فوق :
صفحه 89:
عملگر رسد
ازعملگرهایب_کتلتیمیباشد و مشخصک نندم
تعناد بلیتهالیلسنکه یکنسوع دادم لشغل مک ند
مثال :
مقدار ۲ نمایش داده میشود .
مقدار ۴ نمایش داده می شود.
صفحه 90:
عملگرهای جایگزینی محاسباتی
برای سادهتر نوشتن عبارتها در (6++۰ میتوان از عملگرهای
جایگزینی محاسباتی استفاده نمود.
صفحه 91:
اولویت عملگر
ارزیایی مقدار یک عبارت ریاضی براساس جدول اولویت عملگرها انجام میگردد. در ذیل جدول اولویت
عملگرها براساس بترتیب از بیشترین اولویت به کمترین اولویت داده شده است.
پرانتزها
عملگرهای یکتابی
عملگرهای ضرب و تقسیم و باقیمانده
عملگرهای جمع و تفریق
عملگرهای درج و استخراج
عملگرهای جایگزینی و انتساب
O
جد sizeof
صفحه 92:
ورم*هبم۰ ربو)
با توجه به جدول اولویت عملگرها داریم که
چب به راست پرقترها
رلست به چپ ععلگرهای یکتایی
چپ به راست | عملگرهای ضرب و تقسیم و باقیمانده
عملگرهای جمع و تفریق
عملكرهاى درج و استخراج
عملكرهاى جايكزينى و انتساب
صفحه 93:
i u=O , b=O, v=O, =O;
dEat+ * ble +4;
ل >> نوو >> <<b <<a;
عملگرهای ضرب و تقسیم و بقیمانده
عملگرهای جمع و تفریق
عملگرهای درج و استخراج
عملگرهای جایگزیتی وانتساب
صفحه 94:
,ضیحات در برنامه باعث خوانلئی بیشتر و درک بهتر برنامه می شود.
بنابراین توصیه بر آن است که حتی الامکان در برنامهها از توضیحات
استفاده نمائیم. در (++. توضیحات بدو صورت انجام میگیرد که در
اسلایدهای بعد به آن اشاره شده است.
صفحه 95:
الف: این نوع توضیح بوسیله || انجام میشود. که کامپیوتر هر چیزی را که بعد از // قرار داده
شود تا انتهای آن خط اغماض مینماید.
مثا
[lew exprd ip ano of a ond جمدم
ب: توضیح نوع دوم با ا# شروع شده و به 4/ ختم میشود و هر چیزی که بین* | و */ قرار گیرد
اغماض مینماید .
مثال :
صفحه 96:
توابع کتابخانه
زبان (6++ مجهز به تعدادی توابع کتابخانه میباشد. بعنوان
مثال تعدادی توابع کتابخانه برای عملیات ورودی و خروجی
وجود دارند. معمولا توابع کتابخانه مشابه . بصورت برنامههای
هدف (برنامه ترجمه شده بزبان ماشین) در قالب فایلهای
کتابخانه دسته بندی و مورد استفاده قرا رمیگیرند. این فایلها
را فایلهای دس مینامند و دارای پسوند .۲ میباشند.
صفحه 97:
نحوه استفاده از توابع کتابخانه ای
برای استفاده از توابع کتابخانه خاصی بایستی
نام فایل سفعس آنرا در ابتدای برنامه در دستور
#طعخم قرار دهیم.
صفحه 98:
عا ۱
تعداد کر کترهای رشته 5
desist
کداسکی کرکتر»
تبدیل به حروف کوچک
تبدیل به حرف بزرگ
(e
tot
dovble
double
double
double
dpuble
dpuble
tot
double
لت
tou(d)
leaded)
vin Gd)
vari(d)
virlea(e)
tau(d)
لاطا
toupeerle )
صفحه 99:
برنامه در ۵)++
اکنون باتوجه به مطالب گفته شده قادر خواهیم بود که تعدادی برنامه ساده و
کوچک به زبان 62++ بنویسیم. برای نوشتن برنامه بایستی دستورالعملها را در
تابع ع( ) قرار دهیم و برای اینکار میتوان به یکی از دو طریقی که در
اسلایدهای بعد آمده است ۰ عمل نمود.
J
صفحه 100:
صفحه 101:
صفحه 102:
terror I
به خطاهای برنامه نویسی ۳۲۳۳ می گویند. ما در برنامه نویسی دو نوع خطا داریم:
خطاهای دستوری (۲۲ رو)
خطاهای منطقی (سوه ایا.
صفحه 103:
برنامه ای که پیغام عچعجمم| لس oben دج ها ++) را روی صفحه مانیتور تمایش
ss
می دهد.
حلمم طعادة
stot)
1
: "ما عوسيهما احفصت امصزجات مو وا 0+4" >> اوم
: 0 مسج
1
صفحه 104:
نماید
مین
یل
تبدا
تب
بزر
wy
>
به
فته ب
کوچک را گر
انگلیسی
رف انكلي
حرا
7
.2
امه ز
نا
بر
۸
صفحه 105:
,دهد
نمایش می:
اسیه و
محاسپا
اصلضیب آنها را
lo
مجموع و
a ad.
گر
4
نوع اعشاری
۵ از ن
عد
>
ss
صفحه 106:
فصل دوم
ساختارهای تصمیم گیری و تکرار
صفحه 107:
عملگر های رابطه ای
عملگر شرطی
دستورالعمل شرطی
عملگر کاما
عملگر های منطقی
دستورالعمل ۳۲
صفحه 108:
های رابطه 1
از اين عملكرها براى تعيين اينكه آیا دو عدد با
هم معادلند يا يكى از ديكرى بزركتر يا كوجكتر
میباشد استفاده میگردد. عملگرهای رابطهای
عبارتند از
مساو
مخالف
صفحه 109:
عملكر شرطى
شکل کلی عملگر شرطی بصورت زیر میباشد:
عملگر شرطی تنها عملگری در 60:+ میباشد که دارای سه عملوند میباشد.
صفحه 110:
90ص ۱
زمر : ع7 (بجمحم
اين دو دستور العمل باعث می شوند که ماکزیمم مقادیر مرو در ط قرار بگیرد.
200 7 سیم" >> وه : pou << "Poked" ;
اكر مقدار »< بزركتر يا مساوى ده باشد رشتة لدم در غیر اینصورت رشته
tales Pode داده مى شود.
صفحه 111:
v,
< > دستورالعمل شرطی
۰
توسط این دستور شرطی را تست نموده و بسته
به آنكه شرط درست با غلط باشد عکسالعمل
خاصی را نشان دهیم.
if ope)
{
م مستورا سل
از MeL 5
else
{
دستورا سل[
ار مستورا اهمل13
صفحه 112:
صفحه 113:
freckle <a . k>
coed)
تیا
وم <<
P(x<O)
oat << "xt weave” << pad;
vey
{
:وس د
قحس >> >> فج
}
rena O;
}
صفحه 114:
LIS عملگر
تعدادی عبارت را میتوان با کاما بهم متصل نمود و تشکیل یک عبارت
پیچیدهتری را داد. این عبارتها به ترتیب از چپ به راست ارزیابی شده و مقدار
عبارت معادل عبارت» میباشد.
صفحه 115:
اگر داشته باشیم ۵عو, عط , ۰26: عبارت زیر را در نظر بگیرید:
مقدار عبارت برابر است با DEC که معادل ۱۰ میباشد.
صفحه 116:
عملگرهای منطقی
با استفاده از عملگرهای منطقی میتوان شرط های ترکیبی در برنامه ایجاد نمود.
عملگرهای منطقی عبار تست از :
6220
OR
00
که در 0۵++ به ترتیب بصورت زیر نشان داده می شود.
&&
صفحه 117:
صفحه 118:
if (x= = 5) ily != 0))
cout << x << endl;
صفحه 119:
۳
iostream.h > <_— علساعصق
int main()
{
float a, b, c;
cout << “Enter three real numbers" << endl ;
cin >> ن << ط << ه
if((a <b + c) &&(b < atc) &&(c < atb))
cout << “It is a triangle" ;
else
cout << “Not a triangle" ;
return 0;
1
صفحه 120:
دستور العمل Por
از دستور العمل دا براى تكرار دستور العمل ها استفاده مى شود. شكل كلى دستور
Por بصورت زیر میباشد:
۲0۲ ) عبارت 7 ۲ عبارت Yorke)
دستوراهمل1 :
لمستورا_اهمل2 5
Todt jy j
صفحه 121:
i++)
cout << “hello \n”;
4
مجموعه دستورات بدنه حلقه
{
صفحه 122:
مثال
میا
1
ict i;
Por (FC; i<=O; it +)
1
رما صلاصما" >> نوص
}
}
صفحه 123:
نحوه اجرای دستور ۳
iat i;
Por (Fd; i<=O; i++)
{
”ما ماب" >> انم
}
صفحه 124:
نحوه اجرای دستور ۳
: - 08
it+)
Por (iF; i<=9;
{
<< “ ۷
}
صفحه 125:
نحوه اجرای دستور ۳
: - 001
it+)
vo
Por (iF; i<=9;
{
<< “ ۷
صفحه 126:
نحوه اجرای دستور ۳
:-23
iat i;
صفحه 127:
نحوه اجرای دستور ۳
:-2
iat i;
صفحه 128:
نحوه اجرای دستور ۳
inti; one
f ۱-2
tN
Por (FC; i<=9;5 i
{
<< “ ۷
}
<a”
صفحه 129:
نکته
* لزومی ندارد که کنترل گر حلقه حتماً از ۱ شروع شود.
int i;
for G=5 i<=7% i++)
{
cout << “hello \n”;
}
صفحه 130:
نکته
* مقدار دهی اولیه کنترل گر حلقه می تواند خارج از دستور ۳۳ باشد.
inti =1;
for Cj; i<=3; i++)
{
cout << “hello \n”;
1
صفحه 131:
نکته
* مقدار دهى اوليه كنترل كر حلقه مى تواند خارج از دستور +8 ياشد. در اين صورت مى توان جملهاول موجود در عبر ۲ را
خالی کذاشت.
int i=1; int i=1;
for (i; i<=3; for ر i<=3;
i++) i++)
{ {
cout << “hello cout << “hello
\n”; \n”;
1 1
صفحه 132:
نکته
* گام حرکت می تواند در بدنه دستور ۳ تعریف شود.
int i=1;
for ( i; i<4 )
{
cout << “hello \n”;
i++;
}
صفحه 133:
نکته
* معرفی کنترل گر حلقه می تواند در داخل دستور ۳۲ باشد.
for (inti= 1; i<=3; i+
+)
{
cout << “hello \n”;
}
صفحه 134:
نکته
* در دستور ۳ اگر قسمت شرط خالی باشد. حلقه همیشه اجرا خواهد شد. به عبارتی هیچ شرطی برای توقف نداریم
for (int i= 1;
+)
{
cout << “hello \n”;
وقتی هیچ شرطی نداریم, دو قسمت دیگر دستور ۴۳۲ نیز می توانند خالی باشند.
for ( i 3 )
{
cout << “hello \n”;
1
صفحه 135:
نکته
* لزومی ندارد که گام حرکت بصورت افزایشی باشد بلکه می تواند
بصورت کاهشی نیز باشد.
for (inti= 3, i>=1; i-)
{
cout << “hello \n”;
}
* تمرین: اعداد ۱۰۰ تا ۱ را به صورت نزولی چاپ نمایید. ( با گام
حرکت افزایشی و کاهشی جداگانه بنویسید)
صفحه 136:
نکته
* گام حرکت می تواند افزايش یا کاهش بیش از ۱ واحد را داشته
باشد.
* مثال: چاپ اعداد فرد بین ۱ تا ۱۰۰
10۲ حالص 1 1 >< 100:
k=k+2)
{
cout << k << “\n’;
}
صفحه 137:
نکته
* کنترل گر حلقه می توند اعشاری یا کاراکتری باشد. لزومی ندارد
که حتما عدد صحیح در نظر بگیریم.
بطم ر2 حعطم رج؛ خطه تتقطاء) ۲0۲
)+
{
cout << ch << “\n’;
}
صفحه 138:
فته فاکتوریل آن را محاسبه ونمایش
جح وموم
يك
زج << وم
Por( =; t<=a; ++)
tay
لدم >> بصو >> قحم
rena O 5
}
صفحه 139:
صفحه 140:
)سدم
1
tt FO;
(: 9 ع>۱: )و
Dal << + >> cud,
rena ;
}
صفحه 141:
fet bikin
کوج <=O; +H)
Por(i=d; <=9; +41)
Por{k=;; k<=O; +h)
{
۳400و + ۳00+
mou <<a << ‘Wj
صفحه 142:
دمرين
برنامه ای که اعداد ذوج بین ۱ تا ۱۰۰۰ را چاپ کند.
برنامه ای که ۱۰۰ عدد را خوانده. مجموع را محاسبه و چاپ کند.
برنامه ای که حاصلضرب اعداد ۱ تا ۵۰ را چاپ کند.
برنامه ای که ۵۰ کاراکتر از صفحه کلید خوانده و تعیین کند که
کدام یک حرف کوچک است.
برنامه ای که ۱۰۰ عدد صحیح را خوانده «70 و 7 را چاپ کند.
برنامه ای که کاراکتر هایی که کد آن ها بین ۱۰۰ تا ۲۰۰ هست. را
چاپ نماید.
صفحه 143:
کاربرد دستور سا در دستور Por
اگر در بدنه ۳۲ از جمله ی کنر استفاده شود. ادامه ی اجرای
حلقه متوقف شده و حلقه خاتمه می یابد.
iti, x}
Por (i=C;i<=dOO j++)
{or >x;
قطعه کد فوق حداکثر ۱۰۰ عدد صحیح از ورودی می گیرد. ولی اگر در بين
اعداد ورودی عدد ۵۰ وارد شود بدون بررسی شرط حلقه از ادامه اجرای
دستورات ۳ اجتناب کرده و از حلقه خارج می شود.
صفحه 144:
مثال
* قطعه کدی که تعدادی کاراکتر از صفحه کلید خوانده. بعد از
فشردن دکمه ی ۶) تعداد آن ها را مشخص کند:
ی
inti
jit +) ,)سوم
<<
B (ch=='@’) brick;
}
صفحه 145:
حلقه ۳ تودر تو
* می توان داخل بدنه ی دستور 7" هر دستور دلخواه دیگری نوشت. به عنوان
مثال می توان از یک دستور ۳۳ در بدنه دستور ۳۲ استفاده کرد.
* قطعه کد زیر عبارت 1/۳" را ۱۵ بار اجرا می کند:
pout<<"“Wello رز
صفحه 146:
مثال: چاپ جدول ضرب اعداد
icf wain()
(rai
بلح د )سوط i=; i ++)
Por(wt FC; <=; i++)
{ mu<<ij<<" 5
P (FID) cous<<‘\W;
}
صفحه 147:
مثال: برنامه ای که ۲۰ عدد را خوانده و برای هرکدام
.مجموع اعداد ۱ تا آن عدد را محاسبه کند
fat او
1
تا
Por(it FRC; i<=CO; i++)
fAnD=O; via>>x}
Por (tot RC; i<=x; i++)
2و
ty “<<x<<" >>> 1( اه میک کلم
صفحه 148:
کاربرد حلقه ۲ با دو اندیس
برنامه ای بنویسید که ستون اعداد زیر را جاب کند:
Js! روش
Por(it RC; i<=CO; i++)
:الحجج> >- 00> >" “>> كك لوو
روش دوم:
Por(t Rd, RCO; i<=CO; i*4, i)
DIAIS<I<<", “<<j<<eurc;
صفحه 149:
دستور هر > Por
* اگر دستور صحفلستز در حلقه ۳۳ استفاده شود. جملاتی از حلقه که
هنوز اجرا نشده اند بدون اجرا مانده و ادامه اجرا از انتهای حلقه اغاز
خواهد شد.
)عدم
1
۷۱, 2:
Pore; =O; +)
{ora >x;
صفحه 150:
فصل سوم
ساير ساختارهای تکرار
صفحه 151:
فهرست مطالب فصل سوم
whee Joa! gins
ce while Jeall دستور
bredk دستورالعمل
pore Jl دستور
sutk Josll giao
تابع اصه۳()
<> kira Slee
جدول اولویت عملگرها
صفحه 152:
دستور العمل white
از این دستور العمل مانند دستورالعمل 8 براى تكرار يك دستورالعمل ساده يا تركيبى
استفاده میگردد. شکل کلی این دستور العمل بصورت زیر مى باشد.
صفحه 153:
Por 9 while تفاوت دستورهای
دستورالعمل 103 زمانی استفاده می شود که تعداد دفعات تکرار
از قبل مشخص و معین باشد. در صورتیکه تعداد دفعات تکرار
مشخص نباشد بایستی از دستورالعمل ۱۷0116 استفاده نمود.
دقت کنید با پیاده سازی مکانیزم های خاصی مي توآن بدون
توجه به دفعات تکرار از هر دو دستور بصورت مشابه استفاده
os
صفحه 154:
tet x=O
while(x<S)
زج کج << Tal
با اجرای قطعه برنامه فوق مقادير زير نماي
: میشود
صفحه 155:
yor
it cout = O , g;
Poot x, pu =O, wy;
/*» تعناد مقامير ورومى */ زه << ويم
1 > سح )طن
صفحه 156:
نکته
* همانند دستور ۳۲ اگر داخل بدنه دستور عللطاربه فقط یک جمله
باشد می توان [ و ] را حذف کرد.
* مثال: نمایش اعداد ۰ تا ۱۰۰:
صفحه 157:
برنامه زیر را تفسیر کنید
صفحه 158:
دستورالعمل عازن سل
این دستور العمل نیز برای تکرار یک دستورالعمل ساده
یا ترکیبی استفاده میشود. شکل کلی این دستورالعمل
بصورت زیر میباشد.
زمعرفی کنترل گر حلقه
زمقدار دهی اولیه کنترل گر حلقه
do
5 مستوردامل۱)
دستورالعمل ۲
nga! دستورا :
گام حرکت i
} while( 4);
صفحه 159:
تفاوت دستورهای انب hie 9 do
@
هه
در دستورالعمل ۷۷10116 ابتدا مقدار شرط
ارزیابی شده اما در دستورالعمل 00
While ابتدا دستورالعمل اجرا شده سپس
مقدار شرط ارزیابی میگردد. بنابراین
دستورالعمل ۲۷۷116 00 حداقل یک بار
انجام می شود .
صفحه 160:
include <iostream.
int main()
int count = 0;
do
cout << count ++<<endl ;
while(count <= 9);
return 0 ; }
ارقام ۰ تا ٩ را روی ده خط نمایش میدهد.
صفحه 161:
دستورالعمل لب
این دستورالعمل باعث توقف دستورالعمل های تکرار( طاب ط, عاس , ۵۰۲ شده و
کنترل به خارج از اين دستورالعمل ها منتقل مینماید.
Break
صفحه 162:
> وتاب
لمانا
1
5=O.0 ; رورسم
<< وم
) (4000.0 > بط
}0.0 > ممم
صفحه 163:
حا > طعاطة
)سم
{
tet cout = D 5
٩( )انب
counter : 11 {
pont ++;
( 00 < سس
breck |
"م" >> سج >> " :
صفحه 164:
جمع تعدادی عدد اعشاری که بیشتر از 0 و کمتر از
(0000هستند را محاسبه می کند. اگر بین اعداد
وارد شده عدد منفی وارد شود؛ بواسطه دستور
(break حلقه خاتمه می یابد.
اگر عدد وارد شده بزرگتر یا مساوی 1006060 باشد
نیز شرط حلقه برآورده نشده و حلقه خاتمه می یابد
Porc = (; x < (DOO . 0; ++ vont )
{
0
Dat << ۲۵ - سرب dhe " <<eud
bred ;
}
ano tex}
وو <<
pet << pu << ‘Wa |
}
صفحه 165:
Ocho" << vad; مهب - ۵" >> فحر
جمع تعدادى عدد كه بين ) و 0000000 هستند. اگر بین
اعداد وارد شده عدد منفى وارد شودء بواسطه دستور
«ila sbreak خاتمه مى يابد.
اكر عدد وارد شده بزرگتر از 000000 باشد نیز شرط
حلقه برآورده نشده و حلقه خاتمه می یابد.
نکته: اين حلقه حداقل یک بار اجرا می شود.... حتی اگر
عدد اول بزرگتر از 00000 باشد نیز در مجموع شرکت
داده خواهد شد. سپس از حلقه خارج خواهیم شد.
:یا
1
} ubdele <= 0000:0(
pow << suo << pod;
renee O ;
}
صفحه 166:
دستورالعمل صفسه
از دستورالعمل عع# میتوان در دستورالعمل های تکرار . طانب. طاب عل
Por استفاده نمود. این دستورالعمل باعث میشود که کنترل به ابتدای دستورالعمل
های تکرار منتقل گردد.
(تذکر: در ابتدای حلقه بایستی شرط حلقه نیز بررسی شود)
پس بهتر است بگوییم به انتهای بدنه حلقه تکرار رفته و از آن جا ادامه می دهد.
Cont
صفحه 167:
مثال ۱:
جمع تعدادی عدد که کوچکتر و مساوی
0 هستند را بدست می اورد. اگر بین
اعداد وارد شده عدد منفی وارد شود» در حاصل
جمع شرکت نخواهد کرد و اجرای دستورالعمل
ها به انتهای حلقه هدایت خواهد شد.
اگر عدد وارد شده بزرگتر از 4000000 باشد نیز
شرط حلقه برآورده نشده و حلقه خاتمه می یابد.
نکته: این حلقه حداقل یک بار اجرا می شود....
حتی اگر عدد اول بزرگتر از DOO باشد نیز
در مجموع شرکت داده خواهد شد سپس از حلقه
خارج خواهیم شد.
صفحه 168:
)سيم
1
:© مص دور
:0 مه ود تس
/* و عبيتاز تتعناد معاد ورومي" زب << و
raed <u; + ome) :0 2 يسح Port
1
حدم
تسمم ( © عدوم
ot x;
صفحه 169:
suck Joa)! gis
همانطور که می دانید از دستورالعمل شرطی(عطا« ۵) می توان بصورت تودرتو
استفاده نمود ولی از طرفی اگر عمق استفادة تو در تو از اين دستورالعمل زياد
گردد. درک آن ها مشکل می شود . برای حل این مشکل ۰:60 . دستورالعمل
mutch: که عملا یک دستورالعمل چند انتخابی میباشد را ارائه نموده است.
switch
Case
صفحه 170:
صفحه 171:
ver 4:
val << "owe" << wud;
سا
pel << "bun" << od;
bred
:قمع
vou << "Pad" << ead;
| * ايد ناه لجس */
صفحه 172:
Phere” << red; متا سییر >> نج
breds;
To These" << ead; لعج >> نیو
یط
DM << "Breuer Thos Three" << rod;
صفحه 173:
32000000 ne orc]
Pepe resem es
ابتداى برنامه بايستى داشته باشيم
#include
<iostream.h>
صفحه 174:
كرى صفحه کلید گر
قطعه برنامه ذیل یک کرکتر را از
صفحه 175:
EOF 4 معنی1 0۶ ۳00 ميياشدكه در
ط.دةء تعریفشده و مقدار آزسولبر
با ا- سوباشد مقدار آردر سیستمعامل05
عبیتستز 2 1اه .
خاممیی.. وه
)سم
ae
who (xe = )سد (( BOP)
قحو >>:
rena ;
}
صفحه 176:
:)اس
0
:©
۳ >> ۵00" >> فصو
:ی
ape
8:
pou << “BLOG” << end;
bred ;
oo
“Y@WOO" << werd; bros; >> فجن
صفحه 177:
سنا
1
chor wen;
he (cont = )سم ) ) BOP)
Pont I=" ")
oot <<cend}
سم 0 :
}
صفحه 178:
تمرین : برنامه ای با استفاده از ساخنار عص طسو که یک عملگر و دو
عملوند را از ورودی خوانده . عملگر را بر روی عملوند اجرا نمایید.
صفحه 179:
از این عملگر برای تبدیل موقت یک نوع 8382 به نوع
استفاده مى شود. اين عملكر يك عملكر يكتائى مى باشد.
صفحه 180:
صفحه 181:
صفحه 182:
صفحه 183:
دمرين
برنامه ای که یک سکه ۱۰۰ ریللی رابه سکه های "و۵ و۱۰و۲۰ و ۵۰
ریالی خرد کند.
برنامه ای که خروجی زیر را چاپ کند:
برنامه ای که حاصل عبارت زیر را بدست اورد:
لذ ... + 3+ 2 +1- ى
صفحه 184:
صفحه 185:
فهرست مطالب فصل چهارم
تولید اعداد تصادفی
تعریف نوع داده ) CypedeP
داده های از نوع شمارشی
صفحه 186:
اعداد تصادفی
تصادفی پا شانسی در اکثر برنامههای کاربردی در زمینه شبیه سازی و بازیهای
مهمی را ایفا مینمایند. برای ایجاد یک عدد تصادفی صحیح بین ۰ و ۳۲۷۶۷
بایستی از تابع لج) استفاده نمائیم.
rand
صفحه 187:
( )و بر
{
)4+ ;00=< :20 م۳
:م >> ( )لحم >> قحم
© بر
}
صفحه 188:
تعریف نوع داده (ppedeP)
از #طحبومیتوان برای تعریسف نوع دادههای جدیسد کسه معادل نوع
دادههای موجود باشد استفاده تمود. شکل کلی عبارتست از :
نشان دهنده نوع داده موجود
صفحه 189:
حال میتوان مرو درا بصورت زیر تعریف نمود :
صفحه 190:
دادههای از نوع شمارشی
بمنظور معرفی دادههای از نوع شمارشی از کلمه مجح استفاده میگردد.
مثلل
3
/ ۶ fa!
02 ی کننوع دادم ش مشیم اشد
penne skis {worted, devorced, uidow, stnde};
stokes a}
oF stergle |
صفحه 191:
بایستی در نظر داشت كه داددهاى از نوع شمارشى در
عمليات ورودى و خروجى شركت نمى نمايئد. بعبارت ديكر
مقادير دادههاى از نوع شمارشى بايستى در برنامه تعيين
نمود. دستورالعمل های ورودی و خروجی مانند 19 و
8 در مورد دادههای شمارشی نمیتوان استفاده نمود.
صفحه 192:
صفحه 193:
فهرست مطالب فصل پنجم
ot آرایه یک بعدی
۲ _ آرایه دو بعدی (ماتریسها)
صفحه 194:
آرایه یک بعدی
آرایه یک فضای پیوسته از حافظه اصلی کامپیوتر میباشد که میتواند
,چندین مقدا را در خود جای دهد
عناصر آرایه بوسیله اندیس آن ها مشخص میشوند.
کلیه عناصر یک آرابه از یک نوع میباشند.
در 6++. اندیس آرایه از صفر شروع میشود.
صفحه 195:
صفحه 196:
آرایه یک بعدی از نوع الا
اولين عنصر 101
صفحه 197:
تخصیص مقادیر اولیه به عناصر آرایه :
14 OKs (@, ©, 8, 07, 00);
صفحه 198:
دریافت مقادیر عناصر آرایه :
ae =P; +H)
FO; <P;
we via >> Lt];
زه زوم نمع ممم
oo >>
صفحه 199:
tt x9] = (00, 9, 7};
صفحه 200:
ه داشت كه أرايهها به صورت ضمنى مقدار اوليه صفر نمى كيرند. برنامه نويس بايد به ار
ار اولیه صفر تخصیص دهد تا عضوهای باقی ما 1 ۳
tt xf] = {0};
صفحه 201:
,6.6 ,0.6 ,000 ,6.6 ,6.6 سا سرا
;}48.8
9
9
صفحه 202:
گرفنه تشکیل یک آرایه مي دهد سپس بحه
نموده نمایش میدهد.
( )سم بر
{
vot Kt areas = IO ;
Pout x{ wrote], 1 = 0.0 ;
taretze; H+) ;0 مس
۱ << و
Por{FO; iSarstze; t+)
ete afi]
:اط >> قحم
مس ©
}
صفحه 203:
صفحه 204:
زج >> [ ]>> مه
:0 سم
1
صفحه 205:
آرایههای دوبعدی (ماتریسها)
ماتریس ها پوسیله آرایههای دوپعدی در کامپیوترنمایش داده می شوند.
int a[3][4];
ستون ۲ ستون ۲ ستون ۱ ستون ٠
1 | [0[]0]ه [0[]1] SOLO}
ات ات AAO} lata
اتات ات ات ۰ الاب ۰ ACO]
صفحه 206:
تخصیص مقادیر اولیه به عناصر آرایه :
;})0,00,00,00( ,}0,7,0,©( وت تا
صفحه 207:
OIF] { {@, {0,9}, {F,9,9}}; م
صفحه 208:
AOIP]= )0, ©, ©, ©,.6 (: م
صفحه 209:
در یک آزاب موتديسي. هر سطر. در حقيقت آرايفاى يك اتديسى ات در
أعلان gl دیس در تاد ستون ات
(©,©,1,6,6)-[©][ ]ه م
صفحه 210:
را كرفته مجموع عناصر آن را مشخص نموده و نمايش مى دهد.
heck <wetrrcask>
ایک ی
total)
f
Poa xfO][P], wrt= 0.0;
۳ «۹
|| مشج صفحدج >
Por{=O; <9; +)
Por (FO; 1c; ++)
مم << 11:
| اه ۵۳ مه سا طلطله
Por{=O; <9; +H)
Por (FO; 6
ord + =x [1101]
pent << “pid = "<< thd << pod
مور © :
1
صفحه 211:
تا
همراه شماره سطر آن جاپ نماید.
صفحه 212:
ا...ضدحال
1 برنامه ای بنویسید که دو ماتریس را از ورودی خوانده و
حاصلضرب آن را محاسبه و چاپ نماید.
* توجه کنید که دو ما زمانی قابل ضرب هستند که تعداد ستون های
باتریبی اول با مداد سظرهای ماتریین ,جوم جرائر باقندد بيس آنعاد
ماتریس را می توانید تحت عنوان سه عدد از کاربر بپرسید. بصورت
JSS زیر:
[“-]mxn X [“-Inxp = [-Imxp
ابعاد ماتریس را از کاربر بپرسید. یعنی ۲و 0 و 0
صفحه 213:
صفحه 214:
تابع باز گشت
توابع درون خطی
انتقال پارامترها از طریق ارجاع
(sirene cheer ) aliil> clo wt
سربارگذاری توابع
صفحه 215:
استفاده از توابع در برنامهها به برنامهنویس این امکان را میدهد که
بتواند برنامههای خود را به صورت قطعه قطعه برنامه بنویسد. تا کنون
کلیه برنامههائی که نوشتهایم فقط از تابع هسب( ) استفاده نمودهايم.
صفحه 216:
شکل کلی توابع بصورت زیر میباشند :
نوع مقدار برگشتی
لیست پارامتر ها جهت انتقال اطلاعات از تابع احضار كننده به تابع فراخوانده شده
return-value-type function-name (paérameter-
list)
1
declaration and statements
تعریف اعلانهای تابع و دستورالعمل های اجرائی
صفحه 217:
نوع مقدار برگشتی
پارامتری از نوع هط
نام تابع
oe
oka buy (chor ofl)
1
© ساد
كد حرفكرجكد كد حرنفيزركه ©©// :26 :(©6 -7)60( + ' ->لم 88 ' (A= a =
يا
P (Al>= a’ && <= "2')
6-0-6:
:0د هم عم
صفحه 218:
ee en esp ree ree een ey
troche Sorte h>
har bur_to_sp(okar ol)
{
chor 0;
;08 0ه “- سد ” © )7( د" > دق "5 * ع< الماع وهم
صفحه 219:
(مزام مدای با
{
mz;
ركد دام UP (> =y) 2x; رن 9( ع< معد
retwra Zz;
}
صفحه 220:
theoknle <petrecwh>
وس سس
{
wz}
Fer WP > عر
b ,3 آرگومانهایتلبع مس
صفحه 221:
صفحه 222:
صفحه 223:
وقتی در تابعی, تابع دیگر احضار میگردد
بايستي تعريف تابع احضار قبل از تعریف
.تابع احضار کننده در برنامه ظاهر كردد
صفحه 224:
اگر بخواهیم در برنامهها ابتدا main gil
ظاهر گردد بایستی 10۳0801106 تلبع یعنی
ش نمونة تلبع كه شامل نام تلبع. نوع مقدار
بركشتى aol تعداد يارامترهائى را كه تابع
انتظار دریافست آنرا دارد و انواع پارامترها و
ترتیب قرارگرفتن این بارامترها را به اطلاع
کامپایلربرساند
در اسلاید بعد مثالی در این زمینه آورده شده است.
صفحه 225:
ایک یا
0
bog tat Poctortal(tai); // Pocctoa prototype
pect
ito;
pal << "@uler u postive لت >> مس
به << وم
صفحه 226:
در صورتی که تلبع مقداری بر نگردلند نوع مقدار برگشتی
تابع را ۷۵301 اعلان میکنيم. و در صورتیکه تس
مقدارى را دريافت نكند بجاى slparameter- list
01 یا () استفاده می گردد.
در اسلاید بعد مثالی در این زمینه آورده شده است.
صفحه 227:
{rtm vi
زو << بر << ميم
(م) وو
07 سم
}
(براك بای ایس
لسسع ال 1
تابع مقداری بر نمی گرداند.
nz
(0p) Px iv)
pant << “wax udu \a" << 2<< odd
rena;
}
صفحه 228:
احضار بوسیله مقدار ( 04 6 00)
»در و
خروجی برقامه :
20
40
20
حا ممه freckle
rt ood And);
weed) Se لسعم
:00و
pad; << >> تجو
(3) 5
wo <<a << pad;
rena ;
}
)3 خلت بر
تج الو وو از
pot <<a << ead
rena O;
}
صفحه 229:
در اين نوع احضار تابع حافظههای مورد
استفاده آرگومان ها و پارامترها
از هم متمایزند و هرگونه تغییر در پارامترها
ener
در آرگومان های متناظر نمیگردد.
صفحه 230:
تابع بازگشتی (عصسی< (recursive
توابع بازگشتی یا 166111516 توابعی هستند که
وقتی احضار شوند باعث میشوند که خود را احضار نمایند.
صفحه 231:
نحوه محاسبه فاکتوریل از طریق تابع بازگشتی
۰ .۳6۳ عم
Fig) =a!
{ eV HO Si
۲۵۶ میم تیصیلریغرب
ج)* زهم"* ... *و*ق *0 دام
0
«* ا(مج)دام
در اسلايد بعد تابع بازكشتى مورد نظر پیاده سازى شده است.
صفحه 232:
تابع بازكشتى محاسبه فاكتوريل
Hrohke <pstreu.k>
ما Paactortea{ ted) 5
tet ata )
{
feu;
عم ” >> نود >:
مب <<
wot << pad <<” Poster = ” >> كك زو
rena ;
}
سس
P(o<=d)
renro();
renero(s "Postrel )
صفحه 233:
نحوه محاسبه « امین مقدار دنباله فیبوناچی از طریق تابع بازگشتی
متیله فیوناچی ... ,00,90 ,0۵ ,9,9 ,9 ,۵4,69
hole Po(s) =
رهد )ص رجام
در اسلايد بعد تابع بازكشتى مورد نظر پیاده سازى شده است.
صفحه 234:
20
<bvirroh> 0ك
Ibert Poo tt); Porward deckarctira
pn
toon mtr;
م
]لحم >> > ضاي سبحم من س9 > >> نحو
vt >> a;
Pe(s) ; =
زج >> >> فصو
era |
}
ber tot Plo(loory it)
(P (G==O) rena;
اه
سر
renrefPib(odl) + P(e) )
صفحه 235:
يك شط ست انیس را ترتت آر را زارزت
# include <iostream>
# include <conio.h>
using namespace std;
void reverse(void) ; // forward declaration
int main( )
{
reverse( ) ;
getch();
return @ ;
1
void reverse(void) // read a line of characters and reverse it
{
char ¢ ;
if( (c=cin.get()) "\n')
reverse( );
cout << زع
return ;
1
صفحه 236:
نتقال پارامترها از طريق ارجاع
تاکنون وقتی تایعی را احضار م ىكرديم يك كبى از مقادير آركومان ها دريارامترهاى متناظر
قرار میگرفت . این روش احضار بوسيله مقدار با ۷۵106 11 0811 نامیده شد.
در انتقال پارامترها از طریق ارجاع در حقیقت حافظه مربوط به آرگومان ها و پارامترهای متناظر
بصورت اشتراکی مورد استفاده قرار میگیرد. این روش call by reference
تامیده میشود.
صفحه 237:
نتقال پارامترها از طريق ارجاع
روش بارامترهائى كه از طريق 766929006 نط 6311 عمل مىتمايئد در
.قبل از نام جنين يارامترهائى از 84 استفاده مى شود.واضح است
که در تعریف تابع نيز بهمين طريق عمل مىشود.
صفحه 238:
<bereww.h> سنا
tet VP rile);
ord vPro (tet &) 5
eS)
و
اج >> ب BM SS x SC werd <6 cf) Cel SS
صفحه 239:
وقتی پارامتری بصورت لاط call
0006 اعلان میگردد اين بدان معنى
است کهبا تغییر مقدار لين پارامتر در تلبع احضار
شده مقدار آرگومان متناظر نیز تغییر مینماید.
صفحه 240:
Poa 6.6 :6سا
Det <<a << pad <b;
Powap( a,b);
زط >> اقحس >> ه >> فجن
: © مور
صفحه 241:
توابع درون خطی (صطح)
کلمه 11011106 بدین معنی است که به کامپایلر دستور میدهد که
یک کپی از دستورالعمل های تابع در همان جا (در زمان مقتضی)
تولید نماید تا از احضار تابع ممانعت بعمل آورد.
صفحه 242:
بجای داشتن تنها یک کپی از تابع . چند کپی از دستورالعمل های تابع در
برنامه اضافه میشود که باعث بزرگ شدن اندازه با طول برنامه میشود.
بنابراین از 11011196 برای توابع کوچک استفاده میگردد.
صفحه 243:
مثالی از توابع درون خطی
frookde 9 <pstreawh>
Plot ube (covet Boot ») frotirc oe} } لم
‘ef wrote )
{
Pot side 5
tr >> wider 5
DIM << pike << ribe(okke) << pwd ;
سم 0 :
1
صفحه 244:
(Horne cheese) abd کلاسهای
متغیرها بدو طریق متمایز مشخص میشوند یکی بوسیله نوع (عجبه) آن ها و دیگری بوسیله
کلاس حافظه آن ها. نوع متغیر قبلاً اشاره شده بعنوان مثال عفط. ۰۳۳۵ ۰۰.۰۳۸ ولی
کلاس حافظة یک متغیر در مورد طول عمر و وسعت و دامنة متغیر بحث مینماید.
در اسلاید بعد به انواع كلاس حاقظه می پردازیم.
صفحه 245:
: بطور كلى كلاس حافظه متغيرها به جهار دستة تقسیم میگردد
automatic
static
external
register
صفحه 246:
automatic
متفیرهای عفد در درون یک تابع تعريف مى شوند و در تاعی که آعلان میشود بصورت متفیرهای
محلى براى آن تابع مى باشند. حافظه تخصيص داده شده به متغيرهاى سحده» يس از اتعاماجرایتابع
أز يبن مى رود بعبارت ديكر وسعت و دامنة متغيرهاى از نوع صفح تابعی میباشد كه متغير در آن
اعلان گردیده است.
صفحه 247:
static
متغیرهای 2۵ نیز در درون توابع تعریف می شوند و از نظر وسعت و دامنه شبیه
متغیرهای عصحمطه هستند ولی در خاتمة اجرای تابع. حافظه وابسته به اين نوع
متغیره از بین نمیرود بلکه برای فراخوانی بعدی تابع باقی میماند.
و به دودسته تقسیم می شوند
امهم ساى انتحاتیک ععلی
۲- متفیر های استاتیک عمومی
مقدار اولیه متغیرهای استاتیک محلی و عمومی صفر است.
در اسلاید بعد به یک مثال از كاربرد اين نوع كلاس حافظه مى بردازيم.
صفحه 248:
استائیک محلی
*فقط در همان تابعی که تعریف می شوند قابل استفاده اند.
*هنگام فراخوانی تابع ایجاد می شوند و به هنگام خروج تابع . آخرین مقدار
خومشان را عفظ ین كنت
*فقط یک با مقدار اولیه می گيرند.
در اسلايد بعد به يك مثال از كاربرد اين نوع كلاس حافظه مى بردازيم.
صفحه 249:
"See" 2 حبر وح کون
ی One
ve
1
صفحه 250:
|
Hl pron امه اسلا مه تففطلی با
been tt P(e) 5
)سم
1
كم
اك
حدم
pow << rod
Por (et 0; 1<=0; +4)
po <<] <<" "<< Phi) << red}
rea;
+
foo tt P(t oor)
{
rte bey na = 0, OC;
foray att}
: © +70:0 (6> سدم
0 ©
صفحه 251:
external
متغیرهای از نوع اجه متغیرهلئی هستند که در بیرون از تولبع اعلان می شوند و وسعت و
دامنه فعالیت آنها کلیه توابعی میباشد که در زیر دستور اعلان متغير قرار دارد.
در اسلاید بعد به یک مثال از کاربرد این نوع کلاس حافظه می پردازیم.
صفحه 252:
یی tke
۱
tot) مد نی(
{
اس >> جع
زو سا
تللم >> بن >> الحم >> قحو
retura xYZoy 5
}
est)
Dat << pad << o << ead << d << pad << wy;
rewraO ;
}
صفحه 253:
register
وقتی متغیری از نوع طبحم اعلان مى شود از كامييوتر عملا درخواست
میشود که به جای حافظه از یکی از رجیسترهای موجود استفاده نماید
صفحه 254:
0 0ك یا اندیس های آرایهها
pe mea re Ieee tees eran Te ee] 1۱
دردستور 139© 0[
register int i;
for(i=1;i<=10;i++)
cout<<“hi”;
صفحه 255:
سربار گذاری توابع (بلماصه مسلسسح)
در 6++ این امکان وجود دارد که دریک برنامه بتوانیم از چند توابع هم نام
استفاده نمائیم مشروط بر این که پارامترهای این توابع متفاوت باشند. (از
نظر تعداد پارامتر و پا نوع پارامترها و ترتیب آنها)
صفحه 256:
زج >> (ا ماه >> همه
:0 سم
}
tet dP (tot x, tot)
{
rena ty |
}
Pout wk (Poa x, tv)
{
renee ty |
}
صفحه 257:
برنامه ای که با استفاده ار تابعی به نام يج 8() »
مربع یک عدد را محاسبه می کند
دقت شود این برنامه باید بتواند مربع یک عدد صحیح و اعشاری را با استفاده
از توابع سرباگذاری محاسبه نمایید.
صفحه 258:
دمرين
برنامه ای بنویسید که ۳ عدد اعشاری را خوانده و به تابعی ارسال کند و تابع
میانگین آن ها را محاسبه کرده و برگرداند.
بزنامه آی که قتزایب منباذله ی بوریجه جومن را خوانبه: آن«ها را بداتابينى
ارسال كند. تابع معادله را حل كند و جواب ها را در خروجى جاب كند. (تابع
جواب هارا يه تابع اصلى ase كزدائد)
برنامه اى بنويسيد كه عددى را از ورودی خوانده و هریک از ارقام آن را د
یک سطر چاپ کند. تفکیک و چاپ ارقام توسط تابع بازگشتی صورت
برنامه ای بنویسید که حاصلضرب دو عدد صحیح را به کمک جمع کردن
نیم برای این کار از تابع بازگشتی استفاده کنید.
اگر 0
bd si
صفحه 259:
# include <iostream>
# include <conio.h>
using namespace std;
float average(float a, float b, float c){return
((atb+c) /3) ;}
void main()
1
float x, y, 2
cin>>x>>y>>z;
cout<<average(x,y,Z);
getch();
1
صفحه 260:
# include <iostream>
# include <conio.h>
# include <math.h> e
using namespace std;
void f(int a, int b, int c){
float delta = (b*b)-(4*a*c);
if(delta == 0)
cout<<"The only answer:n"<<"x= "<<(-b)/(2*a);
else if(delta > 0)
{
cout<<"Two answers:n"<<"xl= "<<(-b+sqrt(delta) )/(2*a) ;
cout<<"x2= "<<(-b-sqrt(delta))/(2*a) ;
+
1
void main() {
float x, y, Z}
cine>x>>y>>z;
FOGy.Z)5
getch();
1
صفحه 261:
9
# include <iostream>
# include <conio.h>
# include <math.h>
using namespace std;
void f(int a)
{if (a>10) f(a/10);
cout<<(a%10)<<endl;
1
void main()
3
int n;
cin>>n;
F(n);
getch();
1
صفحه 262:
# include <iostream>
# include <conio.h>
# include <math.h>
using namespace std;
int f(int a,int b)
{if (b==1) return a;
return (f(a,b-1)+a);
void main()
int n,m;
cin>>n>>m;
cout<<f (n,m);
getch();
1
صفحه 263:
ساختار ها و اشاره گرها
صفحه 264:
فهرست مطالب فصل هفتم
| ساختارها
bOws |
(Porter) oF 0,31
آرایه
آرایه های دو بعدی و اشاره گرها
تخصیص حافظه بصورت پویا ( عملگر دح)
رشته ها و توابع مربوطه
صفحه 265:
ساختارها شبیه آرایهها بوده بدین صورت که یک نوع داده گروهی است که فضای
پیوسته از حافظه اصلی را اشغال مینماید. اما عناصر ساختارالزاما از یک نوع
نمیباشند بلکه اعضای ییک ساختار میتوانند از نوعهای مختلف از قبیل ۰ و
لط. ۳ . ... باشند.
صفحه 266:
نام ساختار
struct til
{
int hour ; // 0 - 23 0
int minute ; // 0 -
اعضا ساختار
59
int second; //
13
صفحه 267:
acc_no
2
pert)
ser yeep Meee Cnt
صفحه 268:
به دو صورت می توان اعلان یک متغیر از نوع ساختار را نمایش داد:
روش اول
:روش دوم
صفحه 269:
به ساختارها میتوان مقدار اولیه نیز تخصیص داد
wood mst = (PESO, "Ouder Daderi” , POSES};
صفحه 270:
دسترسی به عناصر یک ساختار
صفحه 271:
صفحه 272:
: نکته
عضو یک ساختار خود میتواند یک ساختار دیگر باشد. sticaste'y
int month;
int day;
int year;
1۳
struct account {
int acc_no ;
char acc_typer;
char name[80];
float balance ;
date lastpay ;
1۳
اگرداشته باشیم
account x, y;
آنگاه عضو 1256۳257 بوسیله
x.lastpay.day
x.lastpay.month
x.lastpay.year
مشخص میگردد.
صفحه 273:
: نکته
میتوان آرایای تعریف نمود که هر عضو آن یک ساختار باشد و حتی به آنها مقادیر اولیه تخصیص نمود.
صفحه 274:
)سم
اه اسمود.
سيم
:د مر ود[ رط سحام
>> راهطا © سحن" >> فج
طع< حور << ويم
ل م فده
بطي << بير << وو
+ مت ود
طبر + طعد د طد
2b >>" > >> ميد >> لمم >> نوو
:0 سر
1
صفحه 275:
oy از نظر ساختايىشبيه 5831368 ميهاشد. بالمينة فلوتكه
0
ar een OO Te 11111
[۱0 ora
صفحه 276:
هر کدام از متفیرهای و لا يك رشته
۱۰ کرکتری با یک مقدار از نوع int
میباشد وکامپیوترییک بلوک حافظه که
بتواند رشته ۱۰ کرکتری رادر خود جای
دهد . برای60102 و 526 در نو
میگیرد.
صفحه 277:
صفحه 278:
تمرين:
برنامه اى بنويسيم كه يك دفترجه تلفن 7١ تايى (ظرفيت يذيرش ١؟ نام و شماره تلفن را
داشته باشد)و امكان جستجو در آن را بر اساس نام فرد ايجاد نمايد.
صفحه 279:
اشارهگرها (صبه)
مادممافى كه در كامبيونر مرحاففنه أصلى فخيزه ميشوند
بايتهاى متوالى از حافظه بسته به نوع 212 اشغال میکنند.
مقادير
1
۸۷ ۳۱۳۷۲۸۳۶۲۸
یک کارکتر
9 16-6
0 تا هی
صفحه 280:
(Potcters) bs Fo ,L.5!
با داشتن آدرس داده در حافظة اصلی میتوان براحتی به آن داده
دسترسی پیدا نمود و از طرف دیگر آدرس هر داده در حافظه آدرس
بایت شروع آن داده میباشد.
صفحه 281:
نکته
در کامپیوتر آدرسها معمولاً دو بایت اشغال مینمایند. اگر آدرس «را در «م قرار دهیم آنگاه میگوئيم که بجر یه
isla ge alle
آدرس متغیر »«را بوسیله ۶« نشان میدهیم و عملگر 64 را عملگر آدرس مینامند.
صفحه 282:
26
حال اكر دستور العمل 10 -+ 6 زرا بدهیم:
36
حال اكر دستورالعمل 7# + 0* < 01 ز بدهیم.
43
صفحه 283:
آرایه یک بعدی و اشاره گرها
اولین عنصر آرایه بوسیله 24101 مشخص میشود.
آدرس اولین عنصر آرایه بوسیله LOVE بوسیله ع .مشخ میشود.
آدرس ذامين عنصر آرایه بوسیله 3[64] با بوسیله +02 مشخص میشود.
دو دستورالعمل زیر با هم معادلند .
5 2 [ 1 ]۶ :
de + 6 1۸۲.۵۰
از طرف دیگر اگر داشته باشیم
1101 11021
jfloat *p
99 دستورالعمل زیر معادلند.
21 دمر
2+ عوز
و ه ۵ ۵ 5 ۵ ۵ ۵0
صفحه 284:
ساختارها و اشاره گرها
میتوان اشاره گری را تعریف نعود که به اولین بایت یک ساختار (معمهع) اشاره نماید.
صفحه 285:
استفاده از آرایهها بعنوان پارامتر تبع مجاز است.
505
در اسلايد بعد به يك مثال توجه نمایید.
صفحه 286:
ماوت امس ا/ ز( [ ] میلست فد
coos
rt ofS] 5
Por(tat RD; <P; +4)
pat << of |] << ood |
مجم ©
}
void ood (it of [( || مت مس
{
Por(tat =D; 1<S; +4)
[+
سوت رز سل مسا
wont << of j] << rod;
: یمور
}
صفحه 287:
در صورتیکه آرایه بیش از یک بعد داشته باشد
ee
نمونه تابع ذکر گردد.
در اسلايد بعد به يك مثال توجه نمایید.
صفحه 288:
خدسسیه طايه
Ds 12 ملس
دم
1
;)©( ,}0.2 )6/8۳ کم , (ه ,»1,6,6 -زمززم 079 ( (ق,6,©) ,(4,6,6) ) > ]819[ rf بر
)ميم
5 ' >> [1[]1]» >> بحم
pont << pod ;
1
9
8
9
oO
wo?
0
صفحه 289:
آرایههای دوبعدی و اشارهگرها
يقن ازآیه دویسی بمبورت تغدافی آزایه زک بعدی موانوان تغویف مود
آگربدیک ماتریس ۵ سطری و ۴ ستونی از نوع اعشاری باشد قبلاً این ماتریس را با
iPoa ASIP]
معرفی کردیم. حال با استفاده از اشارهگرها بصورت زیر معرفی نمائیم:
صفحه 290:
آرايه يك بمدى اول
آرايه يك بعدى دوم
آرایه يك يعدى سوم
آرايه يك بعدی چهادم
آرایه یک بعدی پنجم
آرایههای دوبعدی و اشارهگرها
صفحه 291:
<ا ممه طعا
سح
rex F100, 29, ©, 49, 400},
نام آرليه نو رإنديس لشليه به عنصر او يليه مريسايدا| يديرم" هط
رمي مر
اقحس ی
اساي حدمت ملا
Pork; 120; r++)
م > کف
سس له |
Por; a 144)
>>[ سم >> نحم
{iw Pork bard
زهج سا
wnt << Monet) اقحس
rena; }
صفحه 292:
تخصیص حافظه به صورت پویا یا (عملگر سح)
تخصیص صورت پو
از عملكر ely ce تخیصیص حافظمبه صورت پویا
dynamic memory allocation
صفحه 293:
۳2 به اولین داده از نوع 3108 اشاره مینماید.
+تاو ب» 1 +ألمیرعنصراز فضای ی یوسته لشایه میماید.
صفحه 294:
بازگرداندن فضای یک آرایة یک بعدی پویا
اكر در برنامة خود با استفاده از عملگر ۲ . مقدار زیادی حافظه از سیستم اخذ كنيد آنگاه تمام فضای امکانپذیر
11008 در اختيار يك برئامه قرار مى كيرد و ممكن است سيستم از کار بیفند (به اصطلاح سیستم RAM) apy
مى كند). براى اطميئان از كاربرد مطمئن عملكر 007 . بايد بين عملكر 09 و عملكر 0101# متناظر با آن هماهنكى لازم
را بهوجود آوريد تا حافظة اخذ شده را به سيستم عامل بركردانيد. بءطور كلى هركاه كه با مقدارى حافظه كه بدطور بويا
از سيستم اخذ كردهايد كارثان به اتمام رسيد, بهتر است آن را بى درنك به سيستم عامل بركردانيد. نحوة بازكردائدن
حافظة تخصيص يافته به يك آراية يكبعدى بويا بدصورت زيرا.
صفحه 295:
را وا( رح
۰
0
)سدم
1
م
;0.0 = ينوم" مح
قجس >> > و سین جح >> مج
<< مم
:[-] حاط سصمحوم
+ يدكر زوع مجم
إل + سوم" << وم 0
ما هيت
0)
Por (=O; زه بكم
wits "pr +);
pant << teh;
U sx order © Prov be ope we
cee] prs
renee O;
}
صفحه 296:
ant << how wary records? ba";
mPa;
Pr = cew revs);
+H){ يم زه موم
% >> رسد >> مس
i) 0= #0.8) << vod ۱۳|
}
[] سيد
)اص
rena;
1
صفحه 297:
حسة ليه
Poss *); ,* مهبم
wed)
Pht ob, "pb, "ph,
دی
اسر
سیر
wurp(papb); liiitouxeab);
toa cea ce vad ob xe ve
rare
صفحه 298:
eRe fe hear Cntr ee ا ل ل
به تابعى ارسال مى كند .تايع تعداد اعداد زوج و قرد را تمايشب دهد.
صفحه 299:
char name[ ]= ”
sara’;
صفحه 300:
نحوه رفتار با رشتدها همانند رفتار با آرايدها مى باشد ولی یک تفاوت اساسی در نتهای رشتها میباشد که
یک علامت نشاندهنده انتهاى رشتهها میباشد ولی در آرایهها هیچ علامتی انتهای آریهها را مشخص نمی کرد.
علامت ۱0 انتهای رشتهها مشخص میکند. مثلا در دستور
و اكر رشته را با "00000007 مشخص نماييم به صورت زير در حافظه جا مىكيرد.
24 5121 [5]0
له |
]9[ 1 لا [5]3 [5]1
صفحه 301:
مقداردهی اولیه به رشته
:1 -[ ]5۱ مه
char $2[10]= “is”:
char S3[ ]={'N',‘e’",'w’,’ ','L,i','v’,‘e',\0'};
اكر همانند دو دستور بالا عمل كنيم خود كامبايلر اتوماتيك در آخر رشته '10' قرار میدهد ولی در حالت سوم بايد
حتماً خودمان به رشته ۱0" را بدهيم.
نکته قابل توجه این است که رشتهها هميشه یک کارکتر بیشتر بخاطر ۱0" فضا میگيرند.
صفحه 302:
خواندن و نوشتن رشته:
برای خواندن رشتهها از ورودی طبق رویه زیر عمل مینماييم.
char str [51];
cin >> str;
cout <<"string is "<< str;
در اين مثال يك رشته با طول 5 فرض كرديم (يك كاركتر بخاطر '10' در نظر تكرفتيم) و وسیله )3 ورودی
خوانديم وبا تايع )00 در خروجى جاب تموديم.
كاربر اكر كليد 177/67 را در مثال فشار دهد رشته 5/7 مقدار م ى كيرد يا اكر 5/0268 يا 438 را فشار دهد دوباره
مقدار میگیرد.
صفحه 303:
استفاده از متد 851 :
تابع #261 را مىتوان به شکل زیر بکار برد.
(['جداكننده '] و طول رشته و نام رشته) cin. get
و مىتواند نباشد. اين قسمت يك كاركتر را به عنوان انتهاى رشته مشخص
طول رشته:
حداکثر مکانی را مشخص میکند که رشته میتواند بگیرد.
صفحه 304:
char str [30];
cin.get (str ,10);
cin.get(str 10,
در دستور دوم حداکثر میتوانیم با طول ۱۰ به 5/7 از ورودی مقدار دهیم و دستور سوم بجای 1711/07 که آخر رشته
باشد با " . " مشخص میشود.
صفحه 305:
تفاوت ( )۵64 و 60
همانگونه که گفته شد انتهای ورودی دستور CIN را یا 1711/67 مشخص میکند یا 5۸06 ولی در «
میتوانیم فاصله و 14 را نيز به رشته بدهيم. مثلاً
char ٩ ]01[:
cin.get (S.50);
cin >> S:
اگر کاربر رشته "13۷2 701 IT is را به برنامه بدهد تابع () 864 همه را در ') جا مىدهد IT bid cin Jy 1
در 5 قرار میدهد.
صفحه 306:
رشته و اشاره گر
هر رشته از طریق اشارهگری به اولين کرکتر آن در دسترس قرار میگیرد. آدرس یک رشته. آدرس کرکتر
اول آن میباشد. به رشتهها میتوان مقداراولیه تخصیص داد.
char *name =” sara’;
صفحه 307:
انتساب رشتهها.
دو رشته را به صورت مستقیم نمیتوانیم در داخل یکدیگر بريزيم.
دستور (51,52) ۹/70۳ مقدار 52 را در داخل 51 کپی مینماید.
char Si[ ]="computer";
char $2[20];
strepy (S2, S11);
صفحه 308:
مقایسه رشتهها
برای مقایسه رشته نمیتوانیم به اين صورت عمل نماييم. if (S1==S2)
چون 52,51 اشارهگر به رشته میباشند ولبی دستوری بنام
(5۱,52) 5/۳0/772 وجود دارد که دو رشته 52,51 را مقایسه مینماید.
و5
stremp(S,,5>)
صفحه 309:
و5
(و۹,٩) رسد
عدد برگردانده شده از تابع 'زتز5]76 طبق جدول بالا مىباشد. منظور از اینکه دو رشته از هم کوچکتر باشد
يا بزركتر به اين صورت میباشد که سمت چپترین کارکتر را با کد اسکی مقایسه میکند اگر بزرگتر بود که آن
رشته از رشته دوم بزرگتر میباشد. اگر کوچکتر بوده آن رشته کوچکتر میباشد و اگر مساوی بود کارکتر بصدی را
تگاه میکند.
صفحه 310:
برای الحاق دو رشته از تام (51,52) 50701 استفاده مینمايم. اين تایع 52 را بهانتهای 51 وصل
مینماید.
صفحه 311:
رشتههای 51 و 52 رابا هم مقایسه نموده (بدون توجهبه حروف کوچک و بزرگ) اگر
رشته 51 برابربا رشته 92 باشد مقدار صفر و اگر رشته 51 کوچکتر از رشته 82 باشد
یک مقدار منفی در غیر اینصورت یک مقدار مثبت بر میگرداند.
char *sl= "ALI"; // char s1[10] =
"ALI";
char *s2="ali"; //char s2[10]="ali";
cout << strcmpi(sl, s2) << endl;
0
صفحه 312:
رشتههای 91 و 582 رابا هم مقایسه نموده اگر 51 برابربا 52 باشد مقدار صفر و اگر
رشته 51 کوچکتر از رشته 92 باشد یک مقدار منفی در غير اینصورت یک مقدار
Cote برمیگرداند.
char *512 ۶
0۱2۲ 221
char s1[10]= "ALI"
char s2[10]="ali";
cout << strcmp(s1, s2) << endl;
صفحه 313:
تابع ) ه,©2 ,0ك) محمد
حداکثر « کرکتر از رشتة 51 رابجا « کرکتر از رشتة 92 مقايسه نموده در صورتيكه
1 کوچکتر از 22 باشه یک مقدار منفی اگر 81 مساوی با 22 باشد مغذار صفر در
غير اينصورت يك مقدار مثبت برمیگرداند.
*sl= "211 2":
*s2="ali"
s1[10 11 ۶
s2[(10]="ali";
<< strncmp(sl, s2,3) <<
*sl= “ali reza";
ali";
s1[10J= “ali reza";
s2[10]="ali";
<< strncmp(sl, s2,4) <<
char
char
char
char
cout
endl;
char
char
char
char
cout
endl;
صفحه 314:
دو رشتد 51و 52 را بعنوان آرگومان گرفته رشتة 52 رابه انتهای رشتذ 91 اضافه
مىنمايد. كركتر اول رشتة 52 روی کرکتر پالتی "۱0" رشتة 51 نوشته میشود ونهایتً
رشتة 91 را برمیگرداند.
char s1[20]= "ali "; و انك
char *s2="reza";
char s2[20]="reza";
cout << strcat(sl, s2) << endl;
صفحه 315:
دو رشته 51و 52 ومقدار صحیح و مثبت 9 را بعنوان آرگومان گرفته, حداکشر «
کرکتر از رشتة 52 را در نتهای رشتة 51 کبی مینماید.اولین کرکتر رشته 52 روی
كركتر يايانى “710 رشتة 91 مىنويسد ونهايتاً مقدار رشتة 51 را برمیگرداند.
char s1[20]= “ali ۶
char *s2="reza";
char s2[20]="reza";
cout << strncat(sl, s2,2) <<
endl;
صفحه 316:
رشتة ورا بعنوان آرگومان گرفته طول رشته را مشخص مینماید
"ناه" ع1و* ود
char s1[10]= “ali";
cout << strlen(s1);
char *sl= “ali ";
char s1[10]= “ali ";
cout >> strlen(sl);
صفحه 317:
دو رشتة 51 و 52 را بعنوان آرگومان گرفته رشتة 52 را در رشتة 51 کپی مینماید و
نهایتاًمقدار رشتة 51 را بر میگرداند.
char St 28 1- al. 9 reza
char
char
cout << strcpy(sl, s2) << endl;
s1[20];
*s2=“ali";
s2[10]=“ali";
<< strcpy(sl, s2) << endl;
صفحه 318:
5 و مقدار صحیح و مثبت «را بعنوان آرگومان گرفته, حداکثر «
592 در رشتة 51 کپی نموده. نهايتاً مقدار رشتة 51 را برمیگرداند
char s1[20]= “ali ";
char *s2="reza";
char s2[10]="reza";
cout << strncpy(sl, s2,3) <<
endl;
char s1[20];
char *s2=“amir ali";
char s2[10]=“amir ali";
cout << strncpy(sl, s2,4) <<
endl;
کتصع
صفحه 319:
برای استفاده از توابع مربوط به
رشتهها بایستی حتماً در ابتدا برنامه
<include <string.h+ ,|
قرار دهیم.
صفحه 320:
{// interchange the two strings
strepy(t,name[i]) ;
strepy(name[i] , name(j]);
strcpy(name[j] , t) ;
1
“babak", "saman", "naser" };
ea Milage
using namespace std;
#includeciostream>
#include<conio.h>
#include<string.h>
void sort(char name[{][10])
{char t[10];
for(int i=0; i<4; ++i)
for(int j=itl; j<5; (زج+
if(strempi(name[i}, name[j])> 0)
}
void main()
1
char name[5][10] = {"sara", “afsaneh",
sort (name) ;
// display sorted strings
for(int i=0; i<5; ++i)
cout << name[i] << endl;
getch();
1
صفحه 321:
using namespace std;
#include<iostream>
#include<conio.h>
#includecstring.h>
int main( )
1
char s1[20]= "happy birthday";
char s2[20]= "happy holidays:
cout <« stromp(si, s2) << endl;
cout << strnemp(si, s2, 7) << endl ;
getch();
+
صفحه 322:
using namespace std;
#include<iostream>
#include<conio.h>
#include<string.h>
int main( )
{
char s[10] = "sara";
cout << strlen(s);
getch();
}
صفحه 323:
int nikstrcemp(char s[] , char t[] )
{
int i=0;
while (s[i] ]11 ۱
if ( s[i++]='\o' )
return 0;
return (s[i]-t[i]);
1
صفحه 324:
زرررتت لا تابر سرد رت(
تا
* توضیح: در این برنامه از تابعی به نام ۷۳۳۳۲() استفاده کنید که در
این تابع باید عملیات تبدیل را انجام دهد
* نکته : تفاوت کد اسکی حروف کوچک و بزرگ ۳۲ واحد است برای
تبديل “5” به “608 کافی است از کت" به اندازه ۳۲ واحد کم کنید.
صفحه 325:
By IIe
sb ib aes : تدارا
و
صفحه 326:
5 1 هنت
برنامه نویس شی گرا
صفحه 327:
فهرست مطالب فصل هشتم
تعریف شی گرایی ۲ عضوهای بو
چند ریختی (مصامسساس . کلاسهای تودرتو
خاصیت ارث بری . کلاس های محلی
پشته مسج استفاده از باه ها بعنوان
ایجاد شی پارامترهای تابع
ارث بری ۶ برگشت اشیاء
سازنده ها و نابود کننده ها ۷ انتساب اشیاء
توابع دوست ۸ آرایه اشیاء
كلاس هاى دوست ٩ اشاره گر به اشیاء
توابع سازنده پارامتر دار ۰ اشاره گر عل
توابع سازنده یک پارامتری ۱ توابع مجازی و پلی مرفیسم
صفحه 328:
wT
برنامه نویسی شی گرا یا 0010 یک روش جدید برنامه
تویسی میباشد که در آن از ویژگی
ساختيافته همراه با چند ویژگیهای قوی جدید استفاده
میشود. زیان برنامه نویسی 67++ امکان استفاده از 00
را به راحتی فراهم مینماید.
صفحه 329:
نوع داده انتزاعی
*برنامه ها برای حل مسائل دنیای واقعی نوشته می شوند . مثل نگهداری
اطلاعات مربوط به دانشجویان . نگهداری اطلاعات مشتریان بانک ها .
*گر چه می توان بسیاری از مسئله های دنیای واقعی را با استفاده از انواع
اولیه حل کرد . اما با تعریف انواع جدیدی که بتوان اشیای دنیای واقعی . مثل
دانشجویان را مدلسازی کنند . حل مسائل راحتر خواهد Og
*در زبان برنامه نویسی شی گرا امکان تعریف انواع جدید وجود دارد
*در زبان برنامه نوبسی /6++ برای تعریف نوع جدید . از کلاس ها استفاده
اف
>
می شود
صفحه 330:
کلاس ها و اشیا
*کلاس ها نوع جدیدی است که برنامه نویس آن را برای حل مسئله های
دنیای واقعی تعریف می کند .
*کلاس ها حاوی داده ها و تعریف عملیات است
*داده های عضو کلاس را فیلد یا صفت می گویند.
*عملیات کلاس ها را تابع يا متد می نامند.
*شی یک نمونه از کلاس است که در تکنیک برنامه نویسی شی گرا یک نهاد
زمان اجرا می باشد. ۳
>
صفحه 331:
تمام زبانهاى برنامه نويسى شیگرا دارای سه
خصوصيت مشترك زير مى باشند
الف: 12©2051312:13023© (محصورسازى)
(5%) polymorphism :—
(s»©;) imheritance:c
صفحه 332:
محصورسازی (ق له )
محصور سازی يا بسته بندی به معنای این است که تمام جنبه های یک نهاد در داغل یک کلاس جمع
آوری و از سایر نهاد ها تفکیک می شود .بسته بندی . مانع از اين مى شود که داده ها یک شی.
توسط متد های شی دیگری دستیابی شود.
صفحه 333:
جند ريختى به معناى اين است كه نهادى مثل انع شن سای
يا كاربردهاى مختلفى داشته باشند .به عنوان مثال توايع همنام نوعی
جند ريختى محسوب مى شوند.
صفحه 334:
ارث بری فرآیندی است که بوسیله آن یک شی (010[661) میتواند
خاصیتهای شی دیگری را دارا شود.
صفحه 335:
تعریف کلاس و اشیادر ++
نامكلاس Class
{
داده ها توابع اختصاصی
Public :
داده ها و عمومی
Private :
داده ها و توابع اختصاصی
Protected:
داده ها و توابع oni
يلشليواز كلاس[
صفحه 336:
مثال
class employee
ل
char name[20];
public:
void putname(char *s);
void getname(char * 8);
private:
double age;
jemi, em2;
void employee ::putname()
void employee :: getname()
صفحه 337:
دستیابی به اعضای یک کلاس
dal) 9 80 مرک ای OREN ی وت
برای دستیابی به اعضای یک کلاس از نت
eon Cad
امکان پذیر نیست
9 منم ان
امکان پذیر نیست .000
صفحه 338:
برنامه ای که طول و عرض مستطیلی را از ورودی خوانده , مساحت و محیط آن را به
ی ۳
‘
tnt des, dens
papiie:
votd anpat():
vold calc!
int prane,
0
void rect ::caic)
1
len * width;
primes 2 * (len + wadtn)+
1
۱
1
courcc"Enter Len
cans>1en >>wiern:
1
Ant meia()
Feinpac a);
Freaic():
1۱ "Ce Evareac<",Pezime ~ "eee prime;
geten(
retera
صفحه 339:
۳
ونمایش میدهد.
صفحه 340:
صفحه 341:
ايجاد شى (object)
بمنظور ایجاد یک شی بایستی از کلسة رزروشده
1255 استفاده نمود. 01855 از نظر ظاهر شبیه
ساختار یا 5031208 میباشد. پشته را بعنوان یک
068 مىتوان در نظر كرفت كه 0818 تن
شامل يك آرلیه ویک 805 و عملیاتی که روی
اين object انجام میشود عبار تست از PUSH,
initialize .pop كردن
در اسلاید بعد مثالى از نحوه ایجاد شی آورده شده است.
از نحوه ایجاد شی آور
صفحه 342:
بدین معنی است که »ماو 0 9110 ۷
5 بوسیله توابعى كه عضو |
060 نباشند غير قابل ۷
Sh tg ae gees
شترتی هستند این یکی از اد
ee 91ج
kf toy;
بدين معنى است كه بوسيله ساير vai),
قطعات برناصسه قابسل دسسترسی ز(۱ 0اه جمد
میباشد"
:( )سم مر
صفحه 343:
فقط تولبع عضو میتوانند به متغیرهای عضو از نوع همهم
دسترسی داشته باشند. بایستی توجه داشت که اگر نوع عضوی
مشخص نكردد آن عضو به صورت اتوماتيك مهم مى باشد.
Private
صفحه 344:
نحوه تعریف تابع عضو یک کلاس
vord )اس : : اناد i)
1( ©6112 - د دوم
عملكر: : مشخص مینملید که تبع متعلقبه کدام 010[661 میباشد. عملگر : : عملگر
resolution 560۳۵6 نامیده میشود.
صفحه 345:
مج
اه ‘peck wf, 9; || rete te
wok سای
rare)
صفحه 346:
(powers und desiruriors) lao rg: 9 سازتددها
Initializatio — با مقر ایلیه دادن صویطتوملنیکاز طریخ لبعینجام
مشود بام تابع 00۳5]۳06010 با تابع سازندم تابعسازنده تابع
مخصوصوسنکه عضوواز کاس سوده و همام با کاهیمياشد.
صفحه 347:
(powers und desiruriors) lao rg: 9 سازتددها
Joc Se. destructor bois opt alt تلبع سازنده را انجام
ee ای اد sie ۰
آن فراخوانی میگردد.
صفحه 348:
سازندهها (عسسسسه)
class myclass
1
int a,b;
public:
myclass():
void show();
de
myclass ::myclass()
1
0 sb=0;
)
void myclass::show()
{
cout<<"a= " <<az
cout<<"b= "<<bz
1
myclass obi;
ob1.show()
صفحه 349:
سازندهها با پارامتر ( وص حوصهم)
class myclass
1
int a,b;
public:
myclass(int i, int 3):
void show():
1۶
myclass ::myclass(int i, int 3)
void myclass::show()
1
cout<<"a= " <<a;
cout<<"b= "<<b;
1
myclass 6۲1 )20,15( ۶
myclass ob2=myclass (20,30);
ob1.show();
abd. show () +
صفحه 350:
مثال از سازنده با یک پارامتر
#include <iostream.h>
#include <conio.h>
class store
{
int a;
public:
store(int 3) {a=3;}
int getA(){return a:}
1
int main()
{
store ob= 99;
cout<<"j = "<<ob.getA():
getch()
return 0;
صفحه 351:
توابع دوست کلاس
همانطو رکه گفته شد تابعی که عضو کلاس نباشد . نمی تواند به اعضای
اختصاصی آن کلاس دستیابی داشته باشند
برای اعلان تابع دوست باید الگوی آن را در داخل کلاس قرار دهید و
Priccd css vals را قبل از آن ذکر کنید.
صفحه 352:
برنامه ای که با استفاده از تابع دوست دوعدد را با هم جمع و تفریق می کند
#include <icstrean.a>
#include <conio.n>
class AClass {
private:
tat a,b;
public:
void teet() (a=107b=207)
JJ Declare the tvo functions friends
friend int add (AClass input):
friend int minus (AClass input);
ie
// Fonction one
int add(AClass input) {return int (input.a + input.b);}
// Fonction tvo
Ant minus(ACiass input) {return int (inpac.b ~ input.a);}
void main (void) {
AClase ourputy
77 Initialize output
output. test )(
cout << add(cutpus) << endl;
cout << minus(output) << enc
geten(} +
}
صفحه 353:
مثال: تابع دوست دو كلاس
Finciuge <Loscream
ا
class 3;
class A
1
private
int ay
public:
Alfa > 1907)
friend void add (A,B):
iP
class 3
private
int b:
public:
BI){ = 1907)
Friend void add (A,8)+
1
vold ada(A Acb}, B S0b})
1
cout << (Aobj.a + Bol
0
void main()
1
AAG:
B 2:
add (A1,B1)+
gecen():
صفحه 354:
هه مج هومن> تون
#include <conic.n>
مثال: كلاس هاى دوست cues crabs
كلاس هاى را مى توان دوست كلاس هاى ie a
ی
دیگر معرفی کرد دراين حالت» كلا evovaluee int i, int s)lacisbejz}
دوست و تمام توابع عضو آن به اعضای Friend class min;
١ 2 ۳
اختصاصی کلاس دیگر دسترسی دارند class min
1
public:
برنامه ای که با استفاده از کلاس دوست . بین int findmin (twovalues x);
1
int mins: findnin evovalues x) دو عدد کوچکترین را پیدا می کند.
{
return xacn.b2a ant)
1
int main()
{
tvovalues 0b (10,20);
coutcctmin cf 10 , 2048:"cem.findmin (0b)
getch ();
return 9:
صفحه 355:
اعضای کلاس با ویژگی هد
در بعضی از مواقع . فقط يك كبى از يك متغير بايد بين تمام اشياى
يك كلاس مشترك باشد . كلمه كليدى 5597 براى اين منظور به
كار مى رود.
وقتى كلمه كليدى 287 را با اعضاى داده اى كلاس به كار مى بريم »
به كاميايلر مى كوييم كه فقط يك كبى از آن متغير وجود خواهد
داشت و تمام اشياى آن كلاس ء آن متغير را به اشتراك مى كذارند.
صفحه 356:
تمد هب8
کت هی نی
0
int bs 3 nafs fle
مثال: اعضاى كلاس با ويزكى جاع الع
لومم وصور یو موه ای
Sold show:
برنامه ای که کاربرد و اثر عضو داده ای
طقهرا نشان مى دهد. bitcenecendl: |
1
int main()
1
shared x,y;
weet (1,1)7
lenow()7
920 (2,2)7
renew ()7
snow )( ۶
getch():
return 0;
صفحه 357:
انتساب اشیاء (م موی سسوم
در اسلاید بعدمثالی آورده شده است.
صفحه 358:
] ی وس <petrrow.h>
# اه >
امن سا
tt
rable:
لح 4 3) (xi)
st ett) frenrart}
eee
wocken obfl, ob;
)128( باه
b= offi; If cas cess Prow ob ob
)ضام (:
اسم >>
rer ©:
}
صفحه 359:
#include <iostream.h>
#include <conio.h>
class display )
int number;
public:
display(int n) {number=n;}
int show() { cout <<number
مثال: آرایه ای از اشیا
1۶
int main() {
display myarray(4] = {1,2,3,4,}7
for (int 4 = 0; i < 4 +بده )
myarray[i].show();
getch();
return 0;
صفحه 360:
اشاره گر به کلاس عصوص!ن) وا و۳)
اشاره گرها همانطور كه مى توانند به متفیرها اشاره کننده می توانند
به اشياء يك كلاس نيز اشاره کنند و چون شی نمونه ای از کلاس
است پس به كلاس اشاره مى كنند .
در حالت ساده براى دسترسى به اعضاى كلاس توسط شی تعریفی؛
از نقطه () استفاده کردیم. اما در اشاره گر به شی باید از ترکیب ۲
کاراکتر خط و بزرگتر (<-) استفاده کنیم. با هم مثالی کامل از
اشاره گر به شی پا همان کلاس را بررسی می کنیم :
صفحه 361:
sinciuae <destream.n>
#include <condo.n>
lacs CRectangle
£
int width, netents
public
void set_values (int, int);
int area (void) {return (uidth + height);)
35
void CRectangle::set_values (int a, int b)
width - a5
height - ره
21
int main()
{
Rectangle a, *b, *c;
CRectangle * d= new CRectangle[2]3
b= new CRectangie;
c= aa;
S.set_velues (2,2);
boxset_values (3)4)3
توعد 0576
۰۲1. ععن1ه )78(2
cout << "a area: "<< a.area() << endl;
cout << "b area: " << b-varea() << endl;
cout <4 “te area: " << carea() << endly
ose 26 “a[Od wren: © <2 )دهد زهات 6 endl;
cout << “d[1] area: " << d{1]-areat) << endl;
deleter] a:
delete b5
return 03
صفحه 362:
امه اى كه نام . شماره دانشحويى و معدل تعداد 18 دانشجو را از ورودى خوانده در آرايه اى
ee ee er eer EO
صفحه 363:
ارث بری فرآیندی است که بوسیله آن یک شی (010[661) میتواند
خاصیتهای شی دیگری را دارا شود.
صفحه 364:
کلاس های پایه و مشتق شده
* چند کلاس ممکن است خصوصیات و رفتارهای مشترکی داشته باشند
اما هریک شامل خواص و تولبع ديكرى هم باشد. وراثت اجازه می دهد
یک کلاس عمومی تعریف شود که اشیا درخصوصیات آن مشترک
هستند و این کلاس می تواند توسط سایر کلاس ها ارث برده شود و
خواص جدیدی به آن اضافه شود بدون اینکه تاثیری روی کلاس عمومی
داشته باشد.
ورائت شباهت بین دو کلاس را با استفاده از مفاهیم كلاس يايه «صط و
کلاس مشتق شده ۳9 بیان می کند. کلاسی که از آن ارث بری
مى شود كلاس يليه يا مبنا و کلاس وارث که خصوصیات کلاس پایه را
به ارث مى برد را كلاس مشتق شده مى نامند. كلاس يليه شامل كليه
خواص و رفتارهائى است كه بين كلاس هاى مشتق شده مشترك است.
صفحه 365:
مثال:
* مثال. كلاس پایه ۳۳۳< را درنظر بگیرید که دارای خاصیت های اندازه.
رنگ و موقعیت است. هر شکل می تولند رسم شود, پاک شود. حرکت
کند و رنگ شود. هر کدام از اشکال دارای خواص و رفتارهای اضافه تری
هستند. برای یک شکل معین بعضی رفتارها ممکن است متفاوت باشد
نکته. یک کلاس متشق شده به نوبه خود می تواند کلاس پایه برای
سایر کلاس ها باشد.
نکته. اگر کلاس پایه تغییر کند کلاس , مشتة, شده نبز تحت تاثب ابو
تغییرات قرار می گیرد.
Circle Triangle
صفحه 366:
تعریف کلاس مشتق شده
* فرم کلی تعریف یک کلاس مشتق شده به صورت زیر است:
و وه : تنل لام
1
:وصمات سوه خام جموجاروون ||
}
رفوك نام كلا رجديد لستكه از كاهريايه ۲ مشتقشدم
۷۷ باشد و برلیتعیینی جوز دسترسی|عضایک اسپایه در
کاشجدید بکار میرود. گر مجوز دسترسیذکر نشود به ليزمعنى
لستکه کلیه لعضایعءمومیک لاپ ایه در کلسمشتقشده به
صورتخصوصیخوهند بود.
صفحه 367:
مثال. كلاس جديد له 0) از كلاس ععه2) مشتق شده است. در برنامه اصلی 200 wheres
از کلاس سجبو0) فراخولنی شده که خود دو تلبع بجع و لصو از کلاس سعه) را صدا می زند.
#include <iostream.h>
#include <conio.h>
class Base
1
tat i:
public:
int read() { return i; }
void set(int ii) { 4 = 447 }
Base() { i=07 }
۶
class Derived : public Base
1
int 3:
public:
Derived() { 3-07 }
void change(int x) { set(x); cout << read(); }
be
int main() {
Derived a:
d.change (10):
getch()7
return 0;
صفحه 368:
include <iostream.n>>
include <i >
// base class
class Shape
1
public:
void setWidth(int w) {width = w;
void setHeight (int h) {height = hs}
protected:
int width;
int height;
1۶
// Derived class
class Rectangle: public Shape
1
public:
int getArea(){return (width * height) +}
1۶
int main()
1
Rectangle Rect;
Rect. sevWideh )5( ۶
Rect.setHeight (7);
// Print the area of the object.
cout << "Total area: " << Rect.getArea() <<
getch():
return
صفحه 369:
پروژه
کلاسی به نام 10002 تعریف کنید که با آن بتوانید دوزبازی انجام دهید
اين كلاس حاوى یک آرایه دوبعدی #۳ ۲ از نوع صحیح
است سازنده کلاس باید عناصر آرایه را برابر صفر قرار دهد. دو
بازیکن ۰ بازی می کنند . بازیکن اول عدد ۱ را در قرار می دهد و
بازیکن دوم عدد ۲ را در مربعی قرار می دهد . حرکت ها باید در
خلنه های خللی انجام شود بپس از هر حرکت کنترل می کنید که
آما کی ببزنده:شده ابجتا جا خی ربزنامه یلید a Gales yeast
مشخص کند که کدام بازیکن باید اول شروع کند.
صفحه 370:
i
:
i
i
|
صفحه 371: