صفحه 1:
۰ & آي
رام سا بسو
UPd
۰
less
:hosseini@uin.at.ir E.mail
Home page: http://hosseini.staffems.um.ac.ir
@
فص
2
3
?_
2
2
9
© 7
>
هج 3
2
ل
©
2
2
صفحه 2:
geil
GPs Shale shel ff, اوقل ٠
کرو
امكان مان 01 4 مرو +
* نان نم ۵ مه
صفحه 3:
3۵
a
۵
صفحه 4:
cs الب
۰ رای کر یکت
bly یز ۰
27
صفحه 5:
aw
= در اوایل دهه ۱۹۷۰ میلادی , زبان (), توسط دنیس ریچی و به عنوان زبان
برنامه نویسی سیستم ها طراحی شد.
این زبان از دو زبان قدیمی تر بنامهای ,9606۳ و ظ) حاصل شده است.
> زبان () تا سال ۱۹۷۸ منحصر به استفاده در لابراتوار کمپانی دارا9) بود تا
اینکه توسط دو تن بنامهای ربچی و کرنیه نسخه نهایی این زبان منتشر شد
>
- لي
2
2
tn
>
>
هه
- ه
4
2
a
a
-
2 >
>
صفحه 6:
مرس فا ای ویر و ا#ای ماس ای +4C
ار ییفاهیها ردبرویرایشگر زوشتهشوه رود دیسسک وخیرهرمیشوند
ثاز,۲- ,پیش چردازنده دستورات را يردازش مى,كند
فاز۳ - کامپاپلر ,کد مقصد را ایجاد میکند, و آن را در دیسیک ذخیره_می,کند
ثاز,۴ - پيوند. دهنده.کد مقصد را به.کتابخانه پیوند می دهد و Sy فایل:قابل اجرا
ایجاد.کرده و آن را در دیسک ذخیره DS ge
ثاز ,۵ -پارکننده فایل را در جافظه .قرار می د.هد
Fed - پردازشیگر ,هیک از دستورات را ,دریافت, و اجرا میکند
ها هه 0۰0۵۵۵۵
صفحه 7:
4 ۰
Coli wha
زبان () به طور گستردهای در دسترس است .
() زبانیلستهمه منظوره ساخیدافته سطح ب الاو لنعطافپ ذیر که بسرخی
از خصوصیانتیبانهایسطح پایین | نیز دارلست
برنامههای نوشته شده به زبان () به طور کلی مستقل از ماشین یا نوع
کامپیوتر است و تقریباً تحت کنترل هر سیستم عاملی اجرا میشود.
() روش رنامهسازیاژولار را پسشتیبانیميک ند
>
- لي
2
2
tn
>
>
هه
- ه
4
2
a
a
۰
td
a
صفحه 8:
) دبای بان x
کامپایلرهای () فشرده و کم حجماند و برنامههای هدف ایجاد شده با آنها خیلی
كوجك و كارأ مدئد. ?=
se
[| برنامههای () در مقایسه با سایر زبانهای برنامهسازی سطح بالاء به راحتی قابل چم
انتقالاند.
>
به طور کلی جامعیت. عمومیت. خوانایی. سادگی. کارآیی و پیمانهای بودن که ©# 7
همگی از مشخصات برنامهای ایدهآلاند در زبان () پیادهسازی میشوند.
a
-
©
صفحه 9:
کر
زبان برنامهنویسی () مجموعهای خاص از کاراکترها را شناسایی میکند. این
مجموعه عبارتاند از:
7 حروف بزرگ و حروف کوچک: زبان ()بین حروف بزرگ و کوچک تفاوت
قائل می شود(سه) سه) .
+ ارقام دهدهی : شامل ۰ تا ٩
7 جای خالی یا Oknk
کاراکترهای مخصوص : شامل :+ ,#81 ©! + *١/-- ۶() < > [1[] :
و
77 کاراکترهای فرمتدادن: که برای بیان کردن حالات ویژه ای بكار مى روند
عبارتند از :
sai ..., كار عار خلا Ww la Wb \
9
ه 7
ها
2
ه11
2
2
۰
Le
le
و
هه
4
۰
©
2
2
صفحه 10:
al
یک شناسه O دنبالهای است از حروف . ارقام یا علامت زیر خط که با هر ترتیبی
میتوانند قرار گیرند. اما اولین کاراکتر باید یک حرف باشد .
:چند نمونه از شناسه های معتبر
مج ر و رو و رن
:چند نمونه از شناسه های نامعتبر
وه مت رب book-O , PeS , Sto
>
a
2
2
>
>
>
هه
- ه
@
2
a
a
©
>
a
صفحه 11:
be’. 21 We اون
-احروف کوچک و بزرگ در نامگذاری شناسهها متفاوت میباشند.
۱
چهار شناسه متفاوت از 6, ۰2 or” cry gpl ply
نظر (6++ میباشد.
۲ در نامگذاری شناسهها از حروف الفباءء ارقام و زیر خط (۳۷) استفاده
شود و حداکثر طول شناسه ۳۱ میباشد و شناسه بایستی با یک رقم شروع
نگردد.
ao
4
2
2
يا
>
2
هه
- ه
4
?
a
4
@
©
>
صفحه 12:
مم oe 4
كو ناكار 21 Lt
3) برای نامكذارى شناسهها از كلمات كليدى نبايستى استفاده نمود. بعضی از
كلمات كليدى در زير داده شده است.
And Sizeof | then xor | Templat
e
Float | False | Friend | While | continue
extern | Private | Switc Const
h
delete |typedef| if 1 Virtual
Coe ooo H HHO OOS
صفحه 13:
50
مج
.+ متغیر. مکانی در حافظه اصلی کامپیوتر میباشد که در آنجا یک مقدار را
میتوان ذخیره و در برنامه از آن استفاده نمود. قانون نامگذاری متفیرها
همان قانون نامگذاری شناسهها میباشد.
متغیرها در زبان () شناسههایی هستند که محلهایی از حافظه را به خود
اختصاص میدهند .
خ#> مقدار متغیر در طول اجرای برنامه می تواند تغییر کنذ .
00۵۵00۵۵0۵۵۵۵۵
صفحه 14:
ply
32768-32767
0865535
- 62147483647
2147483648
064294967295
SSS
128-6127
1.2e-38153.4e38
2.20-308 نا 8
لوغ داوه
int
unsigned int
long int
unsigned long
int
char
unsigned char
float
double
ها هه 0۰0۵۵۵۵
صفحه 15:
مان یر
قبل از آنکه در برنامه به متغیرها مقداری تخصیص داده شود و از آنها استفاده
گردد بایستی آنها را در نامه اعلان نمود.
رال از ان تخرد
برای اعلان متغیر از نوع se
برای اعلان متفیرهای « و + را از نوع ۱7۵ که هر کدام چهار بایت از حافظه را اشغال
کنو
Plat po
برای اعلان متغیر ۳4" از نوع کاراکتر که میتوان یکی از ۲۵۶ کاراکتر را به آن تخصیص داد
ویک بایت را اشغال میت ge 2
سا
صفحه 16:
۳
مقرار اول Lo” pls
و"
با استفاده از عملگر *میتوان به متفیرها مقدار اولیه تخصیص نمود.
۲ در دستورالعمل X :266« بدرا از نوع ابا مقدار اولیه ۲۶
اعلان نموده .
۲ در دستورالعمل ۰ ۵0 , 272000 يداز
متغیرهای « و را از نوع a psi Irae نموده با مقادیر بترتیب
۶۰و۶۷
صفحه 17:
کامپایلر ()++ بعضی از کراکترهای مخصوص که در برنامه میتوان از آنها
برای فرمت بندی استفاده کرد را تشخیص میدهد. تعدادی از این
کراکترهای مخصوص به همراه کاربرد آنها آورده شده است .
n\ Newline
t\ Tab
b\ Backspace
a\ Beep sound بعنوان مثال از کراکتر ۱" میتوان برای
3 Double quote ایجاد صدای 7ج استفاده نمود.
5 وزميي ماوماء | : char <
0\ Null character
2 Question mark
\ Back slash
Coo oeodH TH HOOVES
صفحه 18:
a
try
رشته یا :0< عبارتست از دنبالهاى از كاراكترها كه بين قرار داده
میشود. در حافظه کامپیوتر انتهای رشتهها بوسیله ۰۱ ختم میگردد.
۲ ۵" یک رشته ده کاراکتری میباشد که با توجه به کر کتر ۰۱
كه به انتهای آن در حافظه اضافه می شود جمعاً یازده بایت را اشغال
میکند.
دقت نمایید كه "د" یک رشته میباشد که دو بایت از حافظه را اشغال میکند
در حالیکه هب" یک کاراکتر میباشد که یک بایت از حافظه را اشغال
مینماید.
00۵۵00۵۵0۵۵۵۵۵
صفحه 19:
7 قاور دادم
برای نمایش دادهها بر روی صفحه مانیتور از 77۰۵ که بدنبال آن عملگر
درج يعنى << قيد شده باشد استفاده میگردد. بایستی توجه داشت که
دوکر کتر < پشت سر هم توسط 460+ بضوزت یک کر کتر تلقی میگردد.
مثال :
۲ برای نمایش پیفام ۳۲ ۱ب بر روی صفحه نمایش :
زو وی" ک> وم
۲ برای نمایش مقدار متغیر ابر روی صفحه نمایش :
00۵۵00۵۵0۵۵۵۵۵
صفحه 20:
ie” pe رات
به منظور دریافت مقادیر برای متفیرها در ضمن اجرای برنامه از صفحه کلید.
از 7 که بدنبال آمن عملگر استخراج یعنی > > قید شده باشد میتوان
استفاده نمود.
مثال :
صفحه 21:
كر رتب
عملكر انتساب - مىباشد كه باعث مى كردد مقدار عبارت در طرف راست اين
عملكر ارزيابى شده ودر متغير طرف جب آن قرار كيرد.
از عملكرهاى انتساب جند كانه نيز مى توان استفاده نمود. كه مقدار سه متغير < و
,و «برابر با ۲۶ میشود.
x=utb;
x=0S ;
09عرعرحر :
صفحه 22:
dls گر
در (++ پنج عملگر محاسباتی وجود دارد که عبارتند از :
+ جع
7 تفریق
x ضرب
/ تقسیم
% باقيمائده
اين عملكرها دو تائى میباشند زیرا روی دو عملوند عمل مینمایند. از طرف
دیگر عملگرهای + و - رامیتوان بعنوان عملگرهای یکتاتی نیز در نظر گرفت.
00۵۵00۵۵0۵۵۵۵۵
صفحه 23:
سل 7:
در حالتى كه هر دو عملوند عملكرهاى ۰۰/۰ +۰ - از نوع صحيح باشد
نتيجه عمل از نوع صحیح میباشد.
نتيجه عبارت
7
10
صفحه 24:
مل 2:
در صورتيكه حداقل يكى از عملوندهاى عملكرهاى /. *, -, + از نوع
اعشارى باشد نتيجه عمل از نوع اعشاری میباشد.
نتیجه عبارت
0.7 05 +2
0.245
25 5 2/0
O13: 2-05
)2:5 0.2/0.5
صفحه 25:
رای زد کال
در ()++ ,افزایش یک واجد به مقدار یک متغیر از نوع صحیح را افزایش و
بطور مثایه کاهش یک واجد از مقدار یک متیر از نوع صحیح را کاهش
مینامند.
عملگر کاهش را با - - و عملگر افزایش را با ++ نمایش میدهند. چون
عملگرهای ++ و - -فقط روی یک عملوند اثر دارند این دو عملگر نیز جزء
,عملگرهای یکتائی میباشند
>
- لي
2
2
tn
>
>
هه
- ه
4
2
a
a
-
2 >
>
صفحه 26:
سه دستور العمل زیر معادل میباشند :
xt
pt+x
2+1
و بطریق مشابه سه دستورالعمل زیر نیز معادل می باشند.
صفحه 27:
yaxt+ #2;
پس از اجرای دستورالعملهای فوق :
y=12
صفحه 28:
sizeof i
مسق .از عملگرهاییکتائیمیب اشد و مشخصرک ننده تسعداد بایتتهائیاستکه یک
نوع داده لشغا میک ند
مثال :
مقدار ۲ نمایش داده میشود .
مقدار ۴ تمایش داده می شود.
صفحه 29:
گرای یعس
برای سادهتر نوشتن عبارتها در (6++. میتوان از عملگرهای جایگزینی محاسباتی
استفاده نمود.
=%
صفحه 30:
اولوت گرا
ارزیابی مقدار یک عبارت ریاضی براساس جدول اولویت عملگرها انجام مى كردد. در ذيل
جدول اولویت عملگرها براساس بتر تیب از بیشترین اولویت به کمترین اولویت داده شده
است.
چپ به راست پرانتزها )0
راست به چپ عملگرهای یکتایی sizeof چا اس با
چپ به راست | عملگرهای ضرب و تقسیم و بافیمانده | *
چپ به راست عملگرهای جمع و تفریق - +
چپ به راست | عملگرهای درج و استخراج > <K<
راست به چپ | عملگرهای جایگزینی و انتساب
هه ۵۵ 0۵۵۵۵۵
صفحه 31:
2/(2*64+2)* (5+2)
با توجه به جدول اولویت عملگرها داریم که
2/(2*64+2)* 7
2/(6+4)*7
2/10 *7
2/70
35
صفحه 32:
,عم ,99 , حم در
blo * +جوحل ببز
jou <<d<<o<<b<<a
صفحه 33:
۰
۳
علامت وري
Corie nit— ل لئان
توضيحات در برنامه باعث خوانائى بيشتر و درك بهتر برنامه ميشود. بنابراين توصيه © '
بر آن است که حتی الامكان در برنامهها از توضيحات استفاده نمائيم. در ()++,
توضيحات بدو صورت انجام مى كيرد (1) هر عبارتى كه
شال > 0ك
9 )(
7 سال ماس 7 ۱
سس ۳ wed:
سا مت ۳ ) 0( =< 7( whle
{orrih("%SI", «7 );
ber مس )+ tt رز سكم ;020( Por
prick ("%Sd", 7 * a);
"ممم
( ( يعدي
صفحه 34:
wes
زبان ()++ مجهز به تعدادی توابع کتابخانه میباشد. بعنوان مثال تعدادی
توابع کتابخانه برای عملیات ورودی و خروجی وجود دارند. معمولا توابع
کتابخانه مشابه , بصورت برنامههای هدف (برنامه ترجمه شده بزبان ما
در قالب فایلهای کتابخانه دسته بندی و مورد استفاده قرا رمیگيرند. این فایلها
را فایلهای «طتمینامند و دارای پسوند .-میباشند.
00۵۵00۵۵0۵۵۵۵۵
صفحه 35:
وه ده اوعد اک
برای استفاده از توابع کتابخانه خاصی بایستسی نام فایل Lil heuer 29
kde cots CURA اند قور هيم
header < thik 6 pul<
صفحه 36:
۳7 ret
pee) Eee
سس ساك ذل مك
lou(d) يه
ا Severe
vta(d) double
mG) 2
tot
dpuble
7 اب ۸ ۲ 9 ل
me 7 ۹
۱ tere)
صفحه 37:
++C) oly
اکنون باتوجه به مطالب گفته شده قادر خواهیم بود که تعدادی برنامه ساده و کوچک
به زبان ()++ بنویسیم. برای نوشتن برنامه بایستی دستورالعملها را در تابع ۵()
قرار دهیم و برای اینکار میتوان به یکی از دو طریقی که در اسلایدهای بعد آمده است
+ غمل نمود.
©
@.L
صفحه 38:
++) ور als
#include dnclude >
int main() void main()
i 1
ره : ستور العمل 0
3 ستورالسل © سس
۰ 3 ستورا ملع
: مستورا اسلف ;0 return
1 1
صفحه 39:
ade
برنامه ای که پیفام مها لسن امسبتات میج ++() را روی صفحه مانیتور نمایش
می دهد.
#nclude <iostream.h>
int main()
{
cout <<"C++ is an object oriented language \
خم
return 0;
3
صفحه 40:
سل 2
برنامه زیر یک حرف انگلیسی کوچک را گرفته به حرف بزرگ تبدیل مینماید.
<include <iostream.h#
<include <stdlib. h#
(int main
1
shar cl, c2
"cout << "Enter a lowercase letter
هنز << 1
;2 = toupper(cl)
jcout << c2 << endl
{return 0
صفحه 41:
ade
دو عدد از نوع اعشاری را گرفته مجموع و حاصلضرب آنها را محاسبه و نمایش میدهد.
#include <iostream.h>
int main()
1
زد اما
cin >>x>>y;
AY
ددم
cout << s <<endl << p;
return 0;
1
صفحه 42:
رم
wn sf SF a 0 Lev
صفحه 43:
boy کل دوم
عملگر های رابطه ای
عملگر شرطی
دستورالعمل شرطی
عملگر کاما
عملگر های منطقی
Por دستورالعمل
صفحه 44:
رای راد ای
از اين عملكرها براى تعيين اينكه آيا دو عدد با هم معادلند یا یکی از دیگری بزرگتر یا
کوچکتر میباشد استفاده میگردد. عملگرهای رابطهای عبارتند از:
مساوی
مخالف
بزرگتر
بزرگتر یا مساوی
صفحه 45:
16 7
شکل کلی عملگر شرطی بصورت زیر میباشد:
expression test ? expression _ true : expression _ false
عملگر شرطی تنها عملگری در (6++ میباشد که دارای سه عملوند میباشد.
ao
4
2
2
>
>
>
هه
- ه
4
4
a
--
©
>
>
صفحه 46:
jint x=10,y=20,b
;b=(x>y) ?x:y
مثال ۱ :
اين دو دستور العمل باعث میشوند که ماکزیمم مقادیر 7و «<در ۲7 قرار
200 ? pou << "paswed" | pou << "Pated" |
اكر مقدار »ا بزركتر يا مساوى ده باشد رشتة حدم در غير
اينصورت رشته لحك نمايش داده ميشود.
صفحه 47:
lus
توسط این دستور شرطی را تست نموده و بسته به آنکه شرط
درست يا غلط باشد عكس العمل خاصى را نشان دهيم.
(عبیت )]1
{
مستورا همل
از مستورا همل
1
else
{
دستورا ادمل1
سییر
صفحه 48:
if(x != y)
}
; cout <<x
جع
{
else
}
;eout <<y
uy:
{
صفحه 49:
سل د
ا برنامه زير يك عدد اعشارى رااز ورودى كرفته جذر آنرا محاسبه مینماید.
<include <iostream.h#
<include <math . h#
(int main
float x,s
pein >> x
if(x <0)
; cout << "x is negative" << endl
else
}
3S = sqrt(x)
; cout << s << endl
return 0
{
>
a
2
2
>
>
>
هه
- ه
4
?
a
a
©
>
>
صفحه 50:
تعدادی عبارت را میتوان با کاما بهم متصل نمود و تشکیل یک عبارت پیچیدهتری را داد.
این عبارتها به ترتیب از چپ به راست ارزیابی شده و مقدار عبارت معادل عبارت» میباشد.
صفحه 51:
اگر داشته باشیم 6و , 926 , ۰26 ۱ عبارت زیر را در نظر بگیرید:
مقدار عبارت برابر اس با »سا که معادل ۰ ۱ میباشد.
صفحه 52:
ری نی
با استفاده از عملگرهای منطقی میتوان شرطهای ترکیبی در برنامه ایجاد نمود. عملگرهای i,
عبارتست از :
AND
OR
NOT
که در 0++به ترتیب بصورت زیر نشان داده میشود.
&&
0
!
صفحه 53:
>
لي -
2
2
يا
>
2
هه
>
@
?
a
4
@
©
>
صفحه 54:
if (x= = 5) ity != 0))
cout << x << end
اگر بر برابر با ۵ یا مرمخالف صفر باشد مقدار « نمایش داده شود
صفحه 55:
سال :
برنامه زیر طول سه پارهخط را از ورودی گرفته مشخص مینماید که آیا تشکیل یک مثلث میدهد یا .
خیر؟
#nclude <iostream.h >
int main()
float a, b, c;
cout << "Enter three real numbers" << endl ;
cin >> a>>b >>; //
if((a <b + c) &&(b < atc) &&(c < atb))
cout << "It is a triangle" ;
else
cout << “Not a triangle" ;
return 0;
>
a
2
2
_ 2
>
2
هه
>
>
” ج
>
a
@
©
>
صفحه 56:
For f brs
از دستور العمل ۴ برای تکرار دستورالعملها استفاده میشود. شکل کلی دستور Por بصورت زیر
میباشد:
(عبارت ۳ ۶ عبارت ز ۲ عبارت ) 802
مستوراهمل1
j مستوراهمل2
1 كر
صفحه 57:
برنامه زیر عدد صحیح و مثبت »را از ورودی گرفته فاکتوریل آنرا محاسبه ونمایش میدهد.
@ <include <iostream.h#
I» (int main
1
;int n,i
; long fact = 1
)_@ ;*cout << “Enter a positive integer number
jcin >> و
jfor( i=1; i<=n; ++i) fact *= i
4۵ scout << fact << endl
صفحه 58:
“include <iostream.h>
Oint main
1
pint n, i=1
;longs=0
;cin>>n
jforG i<=n; i++) s +=i
; cout <<s
{; return 0
صفحه 59:
برنامه زیر ارقام ۰ تا ٩ را نمایش میدهد.
#mclude <iostream.h>
int main()
3
int j=0;
for( ; j <= 9; ) cout << j++ << endl;
return 0 ;
صفحه 60:
<iostream.h> متام
<=3; ++k)
{
n=i*100 + j*10+k;
cout << n << ‘\n’;
1
return 0;
1
هه"
لي -
2
2
يا
>
2
هه
>
@
?
a
4
۰
©
>
صفحه 61:
ot
Lees وكلزار
صفحه 62:
A
۰
i
۴
۵
۶
#۷
A
ort” مطالب Lp
hie دستورالعمل
دستورالعمل فالس حل
bredk Josllygiw>
دستورالعمل لت
دستورالعمل اطابرد
تابع اس(
عملگر اصح_ << >
جدول اولویت عملگرها
صفحه 63:
از این دستور العمل مانند دستورالعمل ۳ برای تکرار یک دستورالعمل ساده یا ترکیبی
استفاده میگردد. شکل کلی این دستور العمل بصورت زیر میباشد.
(شرط )۲۷۲16
1
دستورالعمل ١
ز دستورالعمل ۲
: دستورا سمل«
صفحه 64:
for , ۱۷۳۱۱6 ی besa
دستورالعمل زمانی استفاده میشود که تعداد دفعات تکرار از قبل مشخص و معین باشد.
در صورتیکه تعداد دفعات تکرار مشخص نباشد بایستی از دستورالعمل انها استفاده نمود.
صفحه 65:
int x=0
while(x<5)
cout << x ++<< endl;
با اجرای قطعه برنامه فوق مقادیر زیر نمایش داده میشود :
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 66:
سال :
برنامة فوق » مقدار از نوع اعشارى را كرفته ميانكين آنها را محاسبه و در متغير يمع قرار مىدهد.
#inclode <iostream.h>
int main()
{
int count = 0, n;
float x, sum = 0, avg;
تما متادیرورودی */ ز ظ << تك
while(count > (۲
cin >> x;
sum += x;
++ count ; }
avg = sum/n;
cout << avg << endl;
return 0 ; }
Coe oe odH TH HOOVES
صفحه 67:
do while J وسورا
این دستور العمل نیز برای تکرار یک دستورالعمل ساده یا ترکیبی استفاده میشود. شکل کلی این دستورالعمل بصورت
زیر میباشد.
صفحه 68:
وت وسورای مانطن while ,do
در دستورالعمل طا ابتدا مقدار شرط ارزيابى شده اما در دستور العمل حوارم ل ابتدا
دستورالعمل اجرا شده سپس مقدار شرط ارزیابی میگردد. بنابراین دستورالعمل عارب cb
حداقل یک بار انجام میشود .
<iostream.h> مب
int main( )
int count = 0;
do
cout << count ++<<endl ;
while(count <= 9);
return 0 ; }
ارقام ۰ تا ٩ را روی ده خط نمایش میدهد
صفحه 69:
break J” و سورا
این دستورالعمل باعث توقف دستورالعملهای تکرار( عن ط, طالبا , ۳) شده و کنترل به
خارج از اين دستورالعملها منتقل مینماید.
Break
صفحه 70:
هه"
لي -
2
2
d#include <iostream.h>
int main()
0
@ float x, s=0.0;
cin >>x;
5 @ while(x <= 1000.0) {
۱ 4 if(x < 0.0){
cout << “Error-Negative Value" ;
4@ cout <<s << endl;
صفحه 71:
ه 7
ها
2
2
#mclude <iostream.h>
int main()
4
| @ while( 1)
0
جه count ++ ;
if(count > 10)
@ break ;
۳
cout << “counter: “<< count << "\n";
صفحه 72:
#mclude <iostream.h>
void main()
{
int count;
float x, sum = 0;
cin >> x;
for(count = 1; x < 1000 . 0; ++ count )
1
cin >>x;
if(x < 0.0) {
cout << "Error - Negative value “ <<endl;
break ;
1
sum += x; }
cout << sum << ‘\n’; }
Pood d He eOO ROS
صفحه 73:
include <iostream.h>
int main()
float x , sum = 0.0;
do
iv
cin >> x;
if(x < 0.0)
{
cout << "Error - Negative Value" << endl ;
break ;
1
sum += x;
} while(x <= 1000.0);
cout << sum << endl;
return 0 ; }
هه"
لي -
2
2
tn
>
>
هه
ه -
4
?
a
a
۰
td
a
صفحه 74:
continue J” وسور|
از دستورالعمل صج#دمه میتوان در دستورالعملهای تکرار ۳۲ . طاس. طارب حل
استفاده نمود. اين دستورالعمل باعث میشود که کنترل بابتدای دستورالعملهای تکرار
Continue
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 75:
<iostream.h> علساعمة
int main()
1
float x, sum = 0.0;
Do
1
زع << مك
iff < 0.0)
cout << “Error” << endl ;
continue ;
1
sum += x;
} while(x <= 1000.0 );
cout << sum ;
return 0 ; }
صفحه 76:
4include <iostream.h>
int main()
{
int n, navg = 0;
float x, avg, sum = 0;
* ظ عبارتاز تحداد اعداد ورودي* | ز << دآع
for(int count = 1 ; count <=n; ++ count )
{
cin >> x;
if(x < 0 ) continue ;
sum += x;
++ navg ;
avg = sum / navg;
cout << avg << endl ;
return 0 ;
1
ها هه 0۰0۵۵۵۵
صفحه 77:
switch J سورا 3
go (Pebow) cb pb Jesllygi> jails iso S jghilen توان بصورت تودرتو
استفاده نمود ولی از طرفی اگر عمق استفادة تو در تو از این دستورالعمل زیاد گردد.
درک آنها مشکل میشود . برای حل این مشکل (6++, دستورالعمل طاسمح که عملاً
یک دستورالعمل چند انتخابی میباشد را ارائه نموده است.
switch
صفحه 78:
=
3
oan
7
6
zs
5 ۱
ayy L
220000008 ۰ ۰ 4 ۰
wi
5
صفحه 79:
<include <iostream.ht
(void main
+
} unsigned int n
jcin >> n
switch(n)
xease 0
; cout << "ZERO" << endl
sbreak
rease 1
; cout << "one" << endl
; break
rease 2
} cout << "two" << endl
jbreak
: default
;cout << "default" << endl
/ * end of switch statement * /
{
Coe ooo H HHO OOS
صفحه 80:
#mclude <iostream.h>
void main( )
unsigned int n;
cin >>n;
switch(n) {
case 0:
case 1:
case 2:
cout << “Less Than Three" << endl;
break;
case 3:
cout << “Equal To Three" << endl ;
break;
cout << "Greater Than Three" << endl;
1
>
a
2
2
tn
>
>
هه
- ه
4
?
a
a
©
22
>
صفحه 81:
: (cin.get re
اين تابع یک کرکتر را از صفحه کلید میگیرد. برای استفاده از این تابع در ابتدای برنامه
بایستی داشته باشیم :
قطعه برنامه ذیل یک کراکتر را از صفحه کلید گرفته و نمایش میدهد.
jchar x
3Q)x = cin.get
; cout >> ع
صفحه 82:
برنامة ذیل یک سطر متن انگلیسی که به ,1 0۳ ختم میشود را گرفته دقیقاً نمایش میدهد.
fnclude —<iostream.h>
int main()
{
char x;
while((x = cln.get() !=EOF)
cout << x;
return 0;
1
تعریفشده و مقدار نب رلیر با ۱- میساشد مقنار آندر سیستمعامل10:00000 میساشد که در 16 of تیه معنی0ع
< اوه عبارتستلز 2005
صفحه 83:
سال :
در قطعه برنامه ذیل ازتابع اص.وبه() و دستور اصامو استفاده شده است.
char x
x = cin.get();
switch(x) {
case ‘r’:
case 28
cout << “RED” << رخص
break ;
b
8
cout << "BLUE’ << endl ;
break ;
وم
Ye:
cout << “YELLOW” << endl;
صفحه 84:
Hal ذیل یک سطر متن انگلیسی را گرفته کاراکترهای خالی (99:0) آثرا حذف نموده و نمایش میدهد.
.- ۵ <iostream.h>
le ee main( )
® char next;
while((next = cin.get( ) ) !=EOF)
if(mext !=" ۰(
cout << next;
صفحه 85:
static_cast
2
از اين عملكر براى تبديل موقت يك نوع 149 به نوع ديكر
استفاده میشود. این عملگر یک عملگر یکتائی میباشد.
نک
وه ا
Be
>
2
Ze
2
2
Le
2
و
5-42
©
Le
Le
2
2
صفحه 86:
© © ۰ ۰ ۰ ۰ > > ؟ 9 6
۱ م۱ و2 ۱۳2
و
صفحه 87:
|
ووأ و , , ؛ , ؟, ؟ دا ۱
صفحه 88:
mds) Jue
چپ به راست 27
راست به چپ | Static_cast< >() ++ - + - sizeof
چپ به راست 6 / *
جب به راست سب
چپ به راست
هه هه هن هه 0
صفحه 89:
صفحه 90:
تولید اعداد تصادفی
تعریف نوع داده ( #علجمب)
داده های از نوع شمارشی
فرمت های مختلفه مقادیر خروجی
صفحه 91:
٠9
4 /
مقادیر تصادفی یا شانسی در اکثر برنامههای کاربردی در زمینه شبیه سازی و بازیهای
کامپیوتری نقش مهمی را ایفا مینمایند. برای ایجاد یک عدد تصادفی صحیح بین ۰ و ۳۲۷۶۷
بایستی از تابع اه( ) استفاده نمائیم.
فد
a
>
2
۹
>
2
>
rand =
4
>
4
a
a
>
a
صفحه 92:
<stdlib.h> م90
dinclude < iostream.h>
int main()
{
for(int j=1; j<=10; ++j)
cout << rand( ) << ‘\n’;
return 0;
صفحه 93:
اگر برنامةٌ فوق را چندبار اجرا نمائیم جواب یکسانی را از کامپیوتریمی گیریم.
برای تصادفی کردن اعداد میبایستی از تابع لججسبح() استفاده نمائیم.
اين یک آرگومان صحیح از نوع لس نیاز دارد.
به اين آرگومان لح گفته میشود.
در اسلايد بعد برنامه قبلى رابا تابع 6۳۵۳( )نوشته یم
هوؤةةؤوؤوؤووةؤوؤوؤوو ووه
صفحه 94:
۱
فوؤؤوؤوةووهة
Anclude <stdlib.h>
include < iostream.h>
int main( )
unsigned seed;
cout << "Enter seed value: ";
cin >> seed ;
srand(seed)
for(int j=1; j<=10; ++))
cout << rand( ) <<’"\n
return 0 ;
صفحه 95:
<iostream.h>
<stdlib.h>
3. @ unsigned seed, di, d
cout << "Enter see
cin >> seed ;
srand(seed) ;
trand()% 6 ;
+trand()% 6 ;
cout << dl << r<<d2;
صفحه 96:
@ anclude <stdlib.h>
@ include < iostream.h>
؟ * int main()
4
unsigned seed ;
cout << “Enter seed:
@ “in >> seed ;
@ | srand(seed) ;
4 for(int i=1; i<=10; ++i)
cout << rand() / 32768.0 << endl ;
® return 0;
صفحه 97:
لعرليب لوع وأوه (typedef)
از عم میتوان برای تعریف نوع دادههای جدید که معادل نوع
دادههای موجود باشد استفاده نمود. شکل کلی عبارتست از :
نشاندهنده نوع داده
موجود
صفحه 98:
stypedef int integer
حال میتوان مرو »«را بصورت زیر تعریف نمود :
وت رز
صفحه 99:
a 4 *
دادمأى ال نوع عارى
بمنظور معرفى دادههاى از نوع شمارشى از كلمه صصحح استفاده مى كردد.
: مثال
له اك
color يكشوع دادد شمارشیمیپاشد
صفحه 100:
emum status {married, devorced, vidow, single};
status a;
a= single ;
vobr { yelbw, red=O, brown, whte }; مسج
vobr x=browns}
>
4
2
2
>
>
>
هه
- ه
4
2
a
a
-
2 >
>
صفحه 101:
بایستی در نظر داشت. که دادههای از نوع,شمارشی در عملیات ورودی و خروجی
شرکت نمی( این. بعبارت دیگر مقادیز دادههای از نوع شمارشی بایستی در
تورالعلهای ورودی و خروجی مانند 29 و یم در مورد
جادههای شمارشی نمیتوان استفاده نمود.
صفحه 102:
peal sis وى
مقدار « بطور غیر علمی با نقطه اعشار ثابت
نمایش داده می شود.
include <iomanip.h>
;double x=1050
cout << setiosflags(ios : : fixed | ios: : showpoint ) <<
3 Setw(23) << setprecision(2) << we
مقدار > با طول میدان ۲۳ نمایش داده می شود. مقدار »دبا دو رقم اعشار نمایش داده می
شود.
بنابراین مقدار « بصورت زیر نمایش داده می شود :
شانزده ستون خالی 1050.00
هه ۵۵ 0۵۵۵۵۵
صفحه 103:
صفحه 104:
رست طالب bat
١ آرايه يى بعدى
۲ آرایه دو بعدی (ماتریس ها)
صفحه 105:
gant
1 آرایه یک فضای پیوسته از حافظه اصلی کامپیوتر میباشد که
میتواند چندین مقدا را در خود جای دهد.
۱. کلیه عناصر یک آرایه از يك نوع میباشند.
عناصر آرایه بوسیله اندیس آنها مشخص میشوند.
در ++O اندیس آرایه از صفر شروع میشود.
هه ۵۵ 0۵۵۵۵۵
صفحه 106:
7 AN
آرایهها در برنامهنوبسی در مواردی, کاربرد دارند. که
بخواهیم اطلاعات و دادهها را در طول اجرای
برنامه حفظ نمائیم.
صفحه 107:
آرایه یک بعدی از نوع int
;int x15] مه
صفحه 108:
تخصیص مقادیر اولیه به عناصر آرایه :
jint x[5]= {4, 2, 5, 17, 30}
صفحه 109:
دریافت مقادیر عناصر آرایه :
int x15];
for(int i=0; i<=4; ++i)
cin >> x[i];
co <<a]; لج رمدم زوع سوم
>
>
2
2
>
2
7 ۰
نمایش مقادیر عناصر آرایه : Ls
2
>
a
a
>
2
a
صفحه 110:
اگر تعداد مقادير اوليه كمتر از تعداد عضوهای آرایه باشد عضوهای باقیمانده بطور اتوماتیک. مقدار
اولیه صفر میگیرند.
x[5] = {12, 5, 7} غصئر
2
و
2
2
>
>
>
هه
- ه
@
2
a
a
©
>
a
صفحه 111:
بایستی توجه داشت که آرايهها به صورت ضمنی مقدار اولیه صفر نمی گیرند. برنامه نویس باید به
عضو اول آرایه. مقدار اولیه صفر تخصیص دهد تا عضوهای باقیمانده بطور اتوماتیک, مقدار اولیه
صفر بگیرند.
pint x[5] = {0}
UES 3 130
صفحه 112:
دستور زیر یک آرایه یک بعدی شش عنصری از نوع ۳۳۵ ایجاد مینماید.
float xf ] = {2.4, 6.3, -17.1, 14.2, 5.9,
316.5}
=
ard | deo
9 8
صفحه 113:
برنامه ذیل ۱۰۰ عدد اعشاری و مثبت را گرفته تشکیل یک آرایه میدهد سپس مجموع عناصر.
آرایه را مشخص نموده نمایش میدهد.
<include <iostream.h#
<include <iomanip.h#
(int main
1
; const int arrsize = 100
; float xf arrsize], tot = 0.0
for(int j=0; j<arrsize; j++)
jcin >> ۶] ز [
for(j=0; j<arrsize; j++)
cout << setiosflags(ios::fixed ios :: showpoint ) << setw(12) <<
;setprecision(2) << xf j ] << endl
for(j=0; j<arrsize; j++)
;tot += xj]
cout << tot
صفحه 114:
پرنمه ذیل ۲۰ عدد اعشاری را گرفته تشکیل یک آرایه داده سپس کوچکترین عنصر آرایه ۱ ؟ 2
#include <iostream.h>
#include <conio.h>
int main()
{
float x[20], s;
int j;
clrscr() ;
for(j=0; j<20 ; ++j) cin >> xf j 1
s=x[0];
for@j=1; j<20; ++))
if@d j] <s) s = x jl;
cout << s << endl;
return 0;
+
صفحه 115:
زیر ۱۰۰ عدد اعشاری را گرفته بروش حبابی ) بصورت صعودی مرتب مینماید.
include <iostream.h>
include <conio.h>
int main ()
1
float x[100] , temp;
> ر100 ++i) cin >> xfi J;
3 i++)
1; j<100; j++)
1۶61 ز [ < xfi lt
temp = x[j 1;
xfj]=xlil;
x[i] = temp;
cout >> x[ i] << endl;
صفحه 116:
tela ى دوعری دسا
ماتریسها له آرایههای دوبعدی در کامپیوترنمایش داده میشوند.
Tose
AOS)
sate}
«9[9[
۱ ستون
AO]
011
ACG
: ستون
AOU}
AMO}
CIO]
int a[3][4];
هه"
لي -
2
2
>
>
>
هه
ه -
4
2
a
a
۰
td
a
صفحه 117:
تخصیص مقادیر اولیه به عناصر آرایه :
} }9,10,11,12{ ,}5,6,7,8{ ,}1,2,3,4{ )3۱)412اه اه ز
صفحه 118:
} }4,5,6{ ,}2,3{ ,}1{ { 2131141 اه ز
صفحه 119:
چم
<
a
a
a
>
a
=
5
8
2
4
صفحه 120:
نكته 3 :
در يك آراية دواندیسی, هر سطر. در حقیقت آرایهای یک اندیسی است. در اعلان آرایههای
دواندیسی ذکر تعداد ستونها الزامی است.
of IFFGS,9,F,9}, بر
صفحه 121:
#include <iostream.h>
#include <conio.h>
int main()
{
float x[3][4], total= 0.0;
int i,j;
// generate matrix x.
for(i=0; i<3; ++i)
10۳ 6 <3; j++)
cin >> xL ill jl;
// calculate the sum of elements.
for(i=0; i<3; ++i)
j=0; j<4; j++)
< ]11] 1
cout << "total = " << total << endl;
return 0;
صفحه 122:
صفحه 123:
a4 Ue ۰
a
تعريف تابع
تابع باز گشتی
توابع درون خطی
انتقال پارامترها از طریق ارجاع
كلاس هاى حافظه ( دعوصماك عب 36 ).
سربارگذاری توابع
صفحه 124:
تعريث واع
استفاده از توابع در برنامهها به برنامهنویس این امکان را میدهد که
بتواند برنامههای خود را به صورت قطعه قطعه برنامه بنویسد. تا کنون AUS
برنامههائی که نوشتهایم فقط از تابع هو( ) استفاده نمودهایم.
صفحه 125:
شکل کلی توابع بصورت زیر میباشند :
return-value-type function-name
(parameter-list)
declaration and statements
تعریف اعلانهای تابع و دستورالعملهای اجرائی
صفحه 126:
تابع زیر یک حرف کوچک را به بزرگ تبدیل مینماید.
انوع مقدار برگشتی
بارامترى آز نوع char
نام ايع
char low“to_up (char c1)
{
char ¢2;
نله 1-۵ +2۵۸ ععله 66 ۵۲ عحلم) < 02
return (c2) ;
1
صفحه 127:
ae تار ا ار ای دا
<include <iostream.ht
char low_to_up(char cl)
صفحه 128:
تابع سمخ دو مقدار صحیح را گرفته بزرگترین آنها را برمیگرداند.
int maximum(int x, int y)
1
j int z
jZz=(K >= yy)? xy
jreturn z
>
>
2
2
>
>
>
ها
2
>
>
a
©
>
a
صفحه 129:
برنامه کامل که از تابع ۳۳۵ جهت بافتن ماکزیمم دومقدار صعیح استفاده
4nclude <iostream.h>
int maximum(int x, int y)
{
intz;
z=(x>y)?xty;
return z;
int main()
inta,b;
cin >>a>>b;
cout << maximur(a,b);
return 0;
1
water ali stiles’) a, b
0۵0۵۵00۵۵۵۵۵۵۵۵۵
صفحه 130:
tla
«اسامی پارامترجا و آرگومانهای يك تابع مى توانند,.همنام باشند
صفحه 131:
برنامه زیر یک مقدارمثبت را كرفته فاكتوريل آثرا محاسيه نموده نمایش میدهد.
x1=1*2*3*4*,..*(x-1) x
<include <iostream.h#
Jong int factorial(int n)
1
jlong int prod=1
if(n>1)
forGnt
yprod *=i
jreturn(prod)
(int main
} cout << factorial(n)
; return 0
ها 0۰0۵۵۵0
صفحه 132:
تكيى 2+
وقتی در تابعی, تابع دیگر احضار می گردد بایستی تعریف تابع اجضار
شونده قبل از تعریف تابع احضار کننده در برنامه ظاهر گردد.
صفحه 133:
تكته 3:
اگر بخواهیم در برنامهها ابتدا تابع 9+ ظاهرءكردد يايستى ۳7 تابع
پعنی پیش digas تابع که شامل نام تابع, نوع مقدار بر گشتی تابع. تعداد
پارامترجائی را که تابع انتظار دریافت آنرا دارد, و انواع پارامترها و ترتیب
قرارگرفتن این پارامترجا را به اطلاع .کامپیلر برساند.
در اسلاید بعد مثالی در این زمینه آورده شده است.
00۵۵00۵۵0۵۵۵۵۵
صفحه 134:
<include <iostream.h#
<include <conio.h#
long int factorial(int); // function prototype
(int main
}
‘int n
;cout << “Enter a positive integer” << endl
<< صر
jcout << factorial(n) << endl
;return 0
long int factorial(int n)
slong int prod = 1
iff@>1)
for(int :1 ++i)
prod
jreturn(prod)
صفحه 135:
در صورتی.که تایع مقداری بر نگرداند نوع مقدار بر گشتی تابع رار لس اعلان
ميکنيم. و در صورتیکه تابع مقداری را دریافت نکند بچای وج« از
جریا () استفاده میگردد.
در اسلاید بعد مثالی در این زمینه آورده شده است.
صفحه 136:
>
a
2
2
>
<include <iostream.h#
<include <conio.h#
; void maximum(int , int)
@ (int main تابع مقداری بر نمی گرداند.
jint x, y}
2 و
1 x>>y
@ scout << “max value \n" << z<< endl
صفحه 137:
i> (Call By Value ۱ راز obey 4
<include <iostream.h#
int modify(nt)
(int > < < " " " "
}
jint a=2
jcout << a << endl
; modify(a)
jcout << a << endl
;return 0
1
int modify(int
}
ya*= 2
jcout << a << endl
صفحه 138:
#include <iostream.h> = 1
int modify(int)
int main()
{
int a=20;
cout << a << endl;
modify(a) ;
cout << a << endl;
return 0 ;
eo
+ woodFy ددر
int modify(int a) eo
a*=2;
cout << a << endl; PPS Seale درل
استفاده آركومانها و يارامتترهها
از هم متمايزتد و هرگونه تفییر در
پارامتره.اباعث تفر
در آر گومانهای متناظر نمیگردد.
صفحه 139:
,هر زمان. که نوع مقدار بر گشتی تابع 1۷ ميباشد نیازی به ذکر آن نیست و همچنین نیازی يه
تعریف پیش نمونه تابع نمیباشد. ۱
صفحه 140:
توابع بازكشتى يسا #رذو هت توابعى هستند كه
وقتى احضار شوند باعث مىشوند كه خود را احضار نمايند.
صفحه 141:
و
n l= 1*2*3*...*(n-1) *n
a { *0)00( Carpal ad»
ج)* هم" ... ع تن دام
۰* ا(0م)عله
در اسلاید بعد تابع بازگشتی مورد نظر پیاده سازی شده است.
صفحه 142:
#include <iostream.h>
2-4۵ ong int factorial(int) ;
® int main()
intn;
cout << "n=";
cin >>n;
cout << endl >> " factorial = ” << factorial(n) << endl;
return 0;
long int factorial(int n)
if(m<=1)
return(1);
return(n *factorical(n-1) ) ;
صفحه 143:
نحوه محاسبه ۰ امین مقدار دنباله فیبناکی از طریق تابع باز گشتی
se... 934,21 33 كره 221389
oS
اگره
در اسلاید بعد تابع بازگشتی مورد نظر پیاده سازی شده است.
صفحه 144:
برنامهزیر 0 امين مقدار دنبالةٌ فيبناكى (7<ا) را مشخص 9 نمایش میدهد.
<include _<iostream.h#
long int fib(ong int); // forward declaration
(int main
jlong int r
pint n
j cout <<“ Enter an integer value * << endl
jein >>n
cout >> r << endl
صفحه 145:
برنامه زیر یک خط متن انگلیسی را گرفته آنرا وارون نموده نمایش میدهد.
<include <iostream.h# هه
void reverse(void) ; // forward declaration
(jint main
void reverse(void)
@ vead a line of characters and reverse it //
@ (if(c=cin.get()) != ’\n’) reverse
out << ©
صفحه 146:
استفاده از آرایهها پعنوان پارامتر تابع مجاز است.
صفحه 147:
در برنامه زیر تابع ۳۳۶ آرایه و را بعنوان بارامتر مى كيرد. 5
<include <iostream.h#
5-2 void modify(int [ ] ); // forward declaration
(int main
1
int a[5]
® fortint j=0;
@ saljl=iti
; modify(a)
forG=0; j<5; ++)
; cout << af j] << endl
j return 0
1
2
3
4
5
1
void modify(int a[ ]) // function definition
1
ني ات
(ز(++ رد>ل:
2
(ز++ رد>ز :00-0؟ هي
‘out << al j] << endl
صفحه 148:
كج :
در صورتيكه آرايه بيش از يك يعد داشته باشد يعدهاى دوم يه يعد بايستى در
تعریف تابع و پیش نمونه تابع ذكر كردد.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 149:
<include <iostream.h#
svoid printarr(int [ 113 1)
Ojint main
scout << al iJ] <<‘ °
2. @ ; cout << endl
at
1 9 9
e 9 9
1 9 9
e 9 o
q 9 oO
e 9 o
صفحه 150:
(inline) Pe ws
کلمبه ۱08 بدیین معز ت.کیه بیه,کامپیلر دسبتور میدهبد. کیه
تک کت راز د Hee ع درهبان چ با (در زمان مقتضی)
توليد نمايد تا از أحضار تابع ممانعت بعمل آورد.
صفحه 151:
inline oy كل ۱
بجای داشتن تنها یک, کپی ان تابع . چند کپی از دستورالعملهای تابع در
برنامه اضافه میشود. که باعث بزرگ شدن اندازه یا طول برنامه میشود.
بنابراین از ,8 برای توابع کوچک استفا میگردد.
صفحه 152:
19 ار yey على
#include <iostream.h>
inline float cube(const float s) {return s*s*s; }
{
float side ;
cin >> side ;
= @ cout << side << cube(side) << endl ;
صفحه 153:
CoN I-A SEI
تاکنون وقتی تابعی را احضار میکردیم یک کپی از مقادیر آر گومانها درپارامترهای متناظر
قرار مى كرفت . اين روش احضار بوسیله مقدار value L بط ات نامیده شد.
در انتقال پارامترها از طریق ارجاع در حقیقت حافظه مربوط به آر گومانها و پارامترهای متناظر
بصورت اشتراکی مورد استفاده قرار میگیرد. این روش تاه برط ادس
نامیده میشود .
هه ها هه هه هه 0۵
صفحه 154:
CHAGAS id Je
در اين روش پارامترهاتی که از طریق عصحجلاه" با اه عمل مینمایند در
پیش نمونه تابع قبل از نام چنین پارامترهائی از 6۷ استفاده میشود.واضح است
که در تعریف تابع نیز بهمین طریق عمل میشود.
هه ۵۵ 0۵۵۵۵۵
صفحه 155:
#include <iostream.h>
4@int vfunct(int); // for
void rfunct (int &) ;
Mint main()
3
int x=5, y=10; 10
cout << x << endl << vfunct(x) << endl << x
<< endl;
cout <<¥
G7
rfunct(y) ; 2
cout << y << endl}
return 0;
7 مقدار آرگومن تیب نمی کند
5
1
return a *=a;
id rfunct(int &b)
صفحه 156:
وقتی پارامتری بصورت تسه بط لو
اعلان میگردد این بدان معنی است که با تفییر
مقدار اين يارامتر در تاببع احضار شده مقدار
آرگومان متناظر نیز تغییر میتماید.
هه ۵۵ 0۵۵۵۵۵
صفحه 157:
برنامهزیر با استفاده از ۳" دو مقدار اعشاری را مبادله مینماید.
<include <iostream.h#
wwoid fswap(float & , float & )
(jint main
}
float a=5.2, b=4.3
:cout <<a << endl <<b
;fswap(a, b)
; cout <<a << endl <<b
;return 0
{
void fswap(float &x , float & y)
1
float t
Oooo ood ooo dO OLOS
صفحه 158:
(storage classes) LL Sty کل
متغيرها بدو طریق متمایز مشخص میشوند یکی بوسیله نوع (7۳۳) آنها و دیگری بوسیله
كلاس حافظه آنها. نوع متغير قبلاً اشاره شده بعنوان مثال ات . ۰۳۵ ۰.۰۰۸۱ ولی کلاس
حافظة یک متفیر در مورد طول عمر و وسعت و دامنةٌ متفیر بحث مینماید.
صفحه 159:
بطور کلی کلاس حافظه متفیرها به چهار دستةٌ تقسیم میگردد :
صفحه 160:
automatic
متغیرهای 7087 در درون یک تابع تعریف میشوند و در تابعی که اعلان
میشود بصورت متفیرهای محلی برای آن تابع میباشند. حافظه تخصیص داده
شده به متغیرهای 077087 پس از اتمام اجرای تابع از بین می رود بعبارت_
دیگر وسعت و دامنةٌ متفیرهای از نوع 70707 تابعی میباشد که متفیر در آن
اعلان گردیده است.
هه ۵۵ 0۵۵۵۵۵
صفحه 161:
static
متغیرهای 7087 نیز در درون توابع تعریف میشوند و از نظر وسعت و دامنه شبیه
متغیر های 7070۸۲ هستند ولی در خاتمةّ اجرای تابع. حافظه وابسته به اين نوع
متغيرها از بين نمیرود بلکه برای فراخوانی بعدی تابع باقی میماند.
صفحه 162:
سال :
بایستی توجه داشت که اگر در توابع به
متغيرهاى از نوع 5087 مقدار اولیه تخصیص
ندهيم مقدار ضفر بصورت اتوماتيك براى
آنها در نظر گرفته میشود.
۱
// program to calculate successive fibonacci
cout << * how many fibonacci numbers?” ;
| @cin >>n;
cout << endl
@ forint j=1; j<=n; +45)
cout <<j <<” 7 >> fib(j) << endl;
return 0;
+
tong int fib(int count)
1
static long int t1 = 1, t2:
صفحه 163:
external
متغيرهاى از ذ متفیرهائی هستند که در بیرون از توابع اعلان
بیشوند و وسعت و ل رم
متغیر قرار دارد.
صفحه 164:
#include <iostream.h>
int w; // external variable
functa(int x, int y)
بایستی توجه داشت, که اگر در توابع به متغیرهای cout <<w;
از نوع روك مقدار اولیه تخصیص ندهیم مقدار wexty;
صفر بصورت اتوماتیک برای آنها در نظر گرفته cout << endl << w << enld;
turn x%y 5 5
return 6۲ شود
int main()
int a, b, c, تل
زط << ه << صل
c=functa(a, b) ;
d=functa(w, b+1);
cout << endl << c << endl << d << endl
<<w;
return 0;
Coo ooo H HHO OOS
صفحه 165:
register
وقتی متفیری از نوع ۲۳۸۳۸۲ اعلان میشود از کامپیوتر عملاً درخواست میشود که به
جای حافظه از یکی از رجیسترهای موجود استفاده نماید.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 166:
كار دكلال 61 ]1:15
صفحه 167:
function) Cy (SA
1 11 ۰
۰
>
2
2
>
در (++اين امکان وجود دارد که دریک برنامه بتوانیم از چند توابع هم نام ۰
استفاده نمائیم مشروط بر این که پارامترهای این توابع متفاوت باشند. (از 2
نظر تعداد پارامتر و یا نوع پارامترها و ترتیب آنها) le
2
>
a
a
>
>
Sd
صفحه 168:
#include <iostream.h>
float addf(float , int);
int addf(int , int);
int main()
cout << addf(a , b) << endl;
cout << addf(d, b) << endl;
return 0 ;
+
int addf(int x, int y)
{
return x+y ;
1
float addf(float x, int y)
صفحه 169:
صفحه 170:
PP wes
اشاره كرها ( (Porter
تعريف آرايه
آرايه هاى دو بعدى و اشاره كرها
تخصيص حافظه بصورت يويا ( عملكر سب)
رشته ها و توابع مربوطه
صفحه 171:
Lev
ساختارها شبیه آرایهها بوده بدین صورت که یک نوع داده گروهی است که فضای
پیوسته از حافظه اصلی را اشغال مینماید. اما عناصر ساختار الزاما از یک نوع
نمیباشند بلکه اعضای یک ساختار میتوانند از نوعهای مختلفه از قبیل . ۲«
امواا, اجز, ... باشند.
صفحه 172:
is
B® struct tine
اعضا ساختار
{
int hour ; // 0-23 1
ها int minute ; //0-
59
int second; //
صفحه 173:
ساختار مسجت دارای چهار عضو میباشد.
تحت شماره حسابلز نوع ٠
7 نوع حسابلژ نوع 2
۶ . مشخصاتصاحبعسابلز نوع ريشتة ۸۰ کرکتری
تاه مانده حسابلز نوع ۲۳
struct account {
int acc_no ;
char acc_type;
char name[80] ;
float balance ;
1
صفحه 174:
*به دو صورت می توان اعلان یک متغیر از نوع ساختار را نمایش داد :
وش اول.
struct account {
int acc_no;
char acc_type;
char name[80];
float balance;
cust, cust2, cust3; }
روش دوم
صفحه 175:
به ساختارها میتوان مقدار اولیه نیز تخصیص داد
jaccount cust = {4236, ‘r’, “Nader Naderi* , 7252.5}
صفحه 176:
بمنظور دسترسی په عناصر یک ساختار از عملگر , استفاده
.میگردد . عملگر. چزء عملگرهای پ5 ائی ميباشد
صفحه 177:
cust .acc_no = 4236
cust .acc_type = ‘r”
cust . name = "Nader Naderi”
cust . balance = 7252.5
صفحه 178:
٠9
.عضو يك ساختار خود مى تواند يك ساختار ديكر باشد
>
a
2
2
>
struct date {
int month;
® int day;
int year;
© (:
struct account {
مصمعة غم © م
زوا مه مه هه
char name[80];
float balance ;
@ ‘ate lastpay ; };
اگرداشته باشیم
4#@ account x, y; 3
2 آنگاه عضو 18510317 بوسیله
x.lastpay.day
@ *.lastpay.month
x.lastpay.year
. pay.ye
صفحه 179:
صفحه 180:
برنامه زیر هر عدد مختلط را بصورت یک ساختار در نظر گرفته, دو عدد مختلط را مى كيرد و
مجموع آنها را مشخص و نمایش میدهد.
<include <iostream.h#
(int main
jstruct comple
float a
jfloat b; } x, y,z
; cout << “enter 2 complex numbers” << endl
;cin >> x.a>>x.b
jcout << endl
icin >> y.a >> y.b
طم
>> 2۵ >> 01ج >> أتدمه:
بطویییکه 120-4 46+ سا
ود
65+40 )+ (مجه)- وببعر
Coe oeodH HHO OOS
صفحه 181:
صفحه 182:
هر کدام از متفیرهای او / یک رشته
۰ کرکتری ایک مقدار از نوع مىباشد
وکامپیوتر یک بلوک حافظه که بتواند رشته ۱۰
کرکتری رادر خود جای دهد , برای 77۳۲ و 527
در نظر میگیرد.
union id
1
char color [10];
int size;
x,y;
صفحه 183:
union xpq
صفحه 184:
(Pointers)$ fost
دادههائی که در کامپیوتر در حافظه اصلی ذخیره میشوند بایتهای متوالی از
حافظه بسته به نوع ٩0 اشغال میکنند.
>
4
2
2
يا
>
2
#2
۷۷ تا -۳۲۷۶۸
۷ تا ۰۲۱۴۷۴۸۳۶۴۸
یک کارکتر
مج وت 5-99
0 تا 66۵06
9
صفحه 185:
(Pointers) fost
با داشتن آدرس داده در حافظةٌ اصلی میتوان براحتی به آنن داده دسترسی پیدا نمود و از
طرف دیگر آدرس هر داده در حافظه آدرس بایت شروع آن داده میباشد.
int x = 613;
صفحه 186:
در کامپیوتر آدرسها معمولاً دو بایت اشغال مینمایند. اگر آدرس را در *7 قرار دهیم آنگاه
مى كوئيم كه »ات به >< اشاره مینماید.
آدرس متغير *را بوسيله :8»< نشان میدهیم و عملگر :6 را عملگر آدرس مینامند.
it x, "px
۶
صفحه 187:
26
حال اگر دستور السمل 10 + ع را بدهيم:
36
حال |"
ال اگر دستورالعمل 72 + ۳* < 6[ : بدهيم.
43
صفحه 188:
دک مری وش هگا ۱
اولین عنصر آرایه بوسیله [2:]0 مشخص میشود.
آدرس اولین عنصر آرایه بوسیله 4 [3:]0 با بوسیله :3 مشخص میشود.
0090090098
آدرس امین عنصر آرایه بوسیله 35]1-1[64 یا وسیله (26)1-1 مشخص میشود.
دو دستورالعمل زیر با هم معادلند .
Li] = 82.5
+1 + ۵ ۰ ۱۲.۵
از طرف دیگر آگر داشته باشیم
101 اهملاز
۵ ادملاز
دو دستورالعمل زیر معادلند.
>
a
2
2
tn
>
>
هه
- ه
4
?
a
a
©
22
>
صفحه 189:
ols LoL
Sp به وین با
صفحه 190:
ا رای دونعری و اباره
یک آرایه دوبعدی بصورت تعدادی آرایه یک بعدی میتوان تعریف نمود.
اگر »یک ماتریس ۵ سطری و ۴ ستونی از نوع اعشاری باشد قباً اين ماتریس را با
Plot [01
معرفی کردیم. حال با استفاده از اشارهگرها بصورت زیر معرفی نمائیم:
صفحه 191:
آرايه يك بمدى اول
آرايه يك بعدى دوع
آرايه يك بعدى سوم
tole gee Seat
آرايه يك بعدى يدجم
00۵۵00۵۵۵۵۵۵۵۵
صفحه 192:
در برنامه زیر یک آرایه ۵ عنصری از نوع ۱۷ ایجاد شده و مقادیر عناصر آرایه را به چهار طریق
نمایش میدهد.
#include — <iostream.h>
4nclude — <conio.h>
int main()
{
int x[ }={12, 25, 6, 19, 100};
elrser();
int *px=x;
نام آایه بدوناندیم شا به عنم اوذآرليه ميزسايد |
for(int i=0; i<=4; i++)
cout << *(x+i) << endl;
/Ithe second method
for(i=0; i<5; i++)
cout << xf i] << ‘\n;
/Ithe third method
for(i=0; i<=4; i++)
cout << px| i ]<<endl;
/Ithe forth method
for(i=0; i<=4; i++)
cout << *(px+i)<<endl;
هه ۵۵ ۵۵
صفحه 193:
از عملگر و سس میدز
صورت پویا می توان
میتوان برایبلوکی ( حاف که میت
dynam! ¢ memory ron on
صفحه 194:
برای تخصیص حافظه باندازه ۲۰ مقدار از نوع :۱ که اشارهگر 7۷6 به آن اشاره نماید بصورت زیر
sint *ptx
sptx = new int [20]
> به اولین داده از توع 306 اشاره میتماید.
ptt 1 + لميرمنصر از فضاءي يوستهلشايه میماید
صفحه 195:
برنامه زیر یک فضای 0 عنصری از نوع اعشاری در حافظه ایجاد نموده. سپس آنرا مقدار داده و
مجموع مقادیر رامشخص و نمایش میدهد.
#include —_ <iostream.h>
int main()
int n;
float *ptr, tot = 0.0;
cout << “enter a value for n * << endl;
cin >> n;
ptr=new float [n];
for(int j=0; j<n; ++))
5
cin >> *(ptr +);
cout << سا
}
for(=0; j<=n-1; ++))
tot += *(ptr + j);
cout << tot ;
//in order to free the space use
delete[ ] ptr;
return 0;
1
Coe oeodH HHO OOS
صفحه 196:
برنامه زیر آرایههای ۰ عنصری از ساختار را ایجاد مینماید.
#include —_<iostream.h>
finclude — <conio.h>
int main()
{
struct rec {
float a;
int b; };
int n;
ree “ptr;
clrser( );
cout << * how many records? \n*
cin >>n;
rectal) مده عر
for(int i=0; i<n; ++i) {
cout <<((ptr+i) >b=i) <<" رك
cout <<((*(ptr +i)).a = i+0.5) << endl;
delete [] ptr;
return 0; }
Oddo odo eed ELLOS
صفحه 197:
برنامه زیر دو مقدار اعشاری را گرفته مقادیر آنها را بکمک تابع 97 جابهجا مینماید.
#include —_<iostream.h>
#include _ <conio.h>
void swap(float *, float *);
int main()
{
float a,b;
cin >> a >> b;
cout << a << endl << b << endl;
return 0;
1
void swap(float *px , float *py)
1
صفحه 198:
J
a
a
ا
۰
=
صفحه 199:
فى ره
رس و اساره
هر رشته از طريق اشارههكرى به اولين كركتر آن در دسترس قرار مى كيرد. آدرس يك رشته.
آدرس كركتر اول آن میباشد. به رشتهها میتوان مقدار اولیه تخصیص داد.
char *name =” sara’;
2
>
>
a
©
>
a
صفحه 200:
برنامه ذیل پنج اسم را بصورت ۵ رشته در نظر گرفتهآنها را بترتیب حروف الفباء مرتب نموده *
نمايش مىدهد.
#include —_<iostream.h>
1. @ #include <string.h>
void sort(char *[ );
@® int main()
{
® char *name(5] = {‘sara’, “afsaneh’, “babak’, ‘saman’,
۱۳۹۳۳ display sorted strings
for(int i=0; i<5; +44)
@ ___ cout << name| i} << endl;
= © return 0; }
@ sert(char *name[ ])
1
@ char *t;
for(int i=0; i<4; ++i)
@® for(int j=i+1; j<5; ++)
if (strempi(namel i], namel j 1< 0(
{// interchange the two strings
t= name| i};
® namel j} = name i);
namel i] = t;}
زر ۵
a
صفحه 201:
4.
strempi(s1, s2) Cb
رشتههای 0« و (6رابا هم مقایسه نموده (بدون توجه به حروف کوچک و
بزرگ) اگر رشته 24 برابر oO andy bl باشد مقدار صفر و اگر رشته 0< کوچکتر
از رشته © باشد يك مقدار منفى در غير اینصورت یک مقدار مثبت بر
میگرداند.
هه هه هن هه 0
صفحه 202:
strcmp(s1, s2 a
رشتههای 20و (6<را با هم مقایسه نموده اگر 20 برابر با 263 باشد مقدار
صفر و اگر رشته 7 کوچکتر از رشته 0 باشد یک مقدار منفی در غیر
اینصورت یک مقدار مثبت برمیگرداند.
صفحه 203:
strncmp(s1, s2,n (Cb
حداکثر ۰ کر کتر از رشتةٌ < را با » کر کتر از رشتةٌ (6< مقایسه نموده در
صورتیکه 2 کوچکتر از (6< باشد یک مقدار منفی, اگر 0<مساوی با 26
باشد مقدار صفر در غیر اینصورت یک مقدار مثبت برمیگرداند.
صفحه 204:
strcat(s1, s2)¢4
دو رشتة 50و ©5 را بعنوان آركومان كرفته رشتة © را به انتهاى رشتة 50
اضافه مىنمايد. كركتر اول رشتة ©5 روى كركتر VD" bb رشتة 50 نوشته
مى شود ونهايتاً رشتة !50 را برميكرداند.
صفحه 205:
strncat(s1, s2,n) C4
دو رشته 0< و 260 ومقدار صحیح و مثبت " را بعنوان آرگومان گرفته. حداکثر
Sad, jl aS So (< را در انتهای رشتةٌ »< کپی مینماید. اولین کر کتر رشته
(6روی کرکتر پایانی "۱0 رشتة 81 مىنويسد ونهايناً مقدار رشتة 51 را برمیگرداند.
صفحه 206:
(ع ماه
| رشتة > را بعنوان آرگومان گرفته طول رشته را مشخص مینماید.
صفحه 207:
(ع ماه
| رشتة < را بعنوان آرگومان گرفته طول رشته را مشخص مینماید.
صفحه 208:
strcpy(s1,s2) Cs
| دو رشتة |50 و © را بعنوان آرگومان گرفته رشتة © را در رشتة |)5 كبى
مینماید و نهایتاً مقدار رشتة 201 را بر میگرداند.
>
a
2
2
>
>
>
هه
- ه
@
2
a
a
©
>
a
صفحه 209:
strncpy(s1, s2,n) 74
دو رشتة vO , 0< و مقدار صحیح و مثبت ۰ را بعنوان آر گومان گرفته.
حداكثر © كركتر را از رشتة © در رشتة 0ت كبى نموده. نهايتاً مقدار رشتة
0 را برمیگرداند.
00۵۵00۵۵0۵۵۵۵۵
صفحه 210:
6۳۱۲ برای استفاده از توابع مربوط به رشتهها بایستی جتماً در ابتدا برنامه
را قرار دهیم <بونبی>
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 211:
#include —_<iostream.h>
#nclude — <string.h>
#include — <conio.h>
int main()
char *s1= "happy birthday”;
char *s2= “happy holidays *;
clrser( );
cout << stremp(s1, s2) << endl;
cout << strncmp(s1, s2, 7) << endl ;
return 0;
1
ها 0۰0۵۵۵۵
صفحه 212:
#include —_<iostream.h>
#nclude — <string.h>
#include — <conio.h>
int main()
{
char *s = “sara”;
clrscr( );
cout << strlen(s);
return 0; }
صفحه 213:
تابع زیر معادل تابع کتابخانه 207077 می باشد.
if (sli++]="\0" )
return 0;
return (s[i]-tlil);
صفحه 214:
صفحه 215:
سازنده ها و نابود کننده ها
توابع دوست
كلاس هاى دوست
. توابع سازنده يارامتر دار
. توابع سازنده یک پارامتری
3 عضوهای تاد
. كلاسهاى تودرتو
. کلاس های محلی
. استفاده از 70-7 ها بعنوان پارامترهای
آرایه اشیاء
. اشاره گر به اشیاء
۱ اشاره كر دكا
|| توابع مجازى و يلى مرفيسم
صفحه 216:
7(
مرف نرم قرا به مجموعه برنامة» ساختار داده ای و عستندات نرم افزارگفته می
ate
تعاریف مهندسی نرم افزار :
dil eA get 1 عیرست از کاربرد عملی علم کامپیوتر. علم مدیریت و سایرعلوم
براى تحليل» طراحي. ساخت. نگهداری نرم افزار و مستندسازی مورد نیازبرای استفاده
ار ف الو لوت
-2 ری رم Ml عبارتست از كاربرد اصول مهندسى براى بهينه سازى روند توليد
و نگهداری سیستم های نرم افزاری با هدف کاهش هزینه و افزایش قابلیت اطمینان
3- 1151535 استفاید از روشهایس یستماعیکنب | قاعدة و ق ابللنداند گبریب رلی
تولیده ب کلرگیریو ن گهدارینرم لفزار
-4 تعریف و استفاده از قواعد و اصول صحیح مهندسی است برای دستیابی به نرم
افزاربصورت اقتصادی که دارای قابلیت اطمینان بوده و بصورت کارا روی ماشین های
واقعی کار کند
2۳ 2۳222
صفحه 217:
صفحه 218:
صفحه 219:
صفحه 220:
۰
۰
۰
۰
۰
۰
۰
۰
۰
۰
۰
۰
2
تعریف سیستم: يك مجموعه از مولفه هایی که برای انجام داد
یک فرایند سازماندهی شده باشند.
تولید یک نرم افزار بطور کلی دارای سه فاز است :
-1 تعریف
-2 تولید
-3 نگهداری
در فاز تعریف بررسی های زیر انجام می شود:
-1 چه اطلاعات و داده هایی باید پردازش شود .
-2 چه عملیات و کارهایی لازم است.
-3 چه واسط هایی) نرم افزاری یا سخت افزاری) لازم است.
-4 چه محدودیت هایی وجود دارد .
-5 ضوابط ارزيابى سيستم بايد مشخص شود .
* در اين فاز بر روی اینکه چه چیزی مورد نیاز است. تاکید مى شود.
صفحه 221:
فاز تعریف
* به طور کلی در فاز تعریف سه قدم(گام) اصلی وجود دارد :
-1 تجزیه و تحلیل سیستم : در این گام نقش هر مولفه در (سیستم سیستمی که قرار
است تولید شود) و نقش کل سیستم ن می شود. به عبارت دیگر حوزه عمل
سیستم و بستر لازم چه سخت افزاری و چه نرم افزاری تعیین می شود. به علاوه
بررسی کلان در مورد کل سازمان و کارهای مربوطه در این گام انجام می گیرد.
نامه ریزی پروژه انجام می شود. در این گام. برنامه ریزی انسانی و هزینه و زمان
نام کارها مشحسی می شود
وه وتحلیل تیازهای سیستم مورد نظر, در انن مرحله عملیات مورد انتظار از
و يرونده هاى )بانکهای [اطلاعاتى لازم تعریف و سپس فرمهای ورودی
و خروجى مشخص مى شود.
كام سوم به يك تكه از كل نكاه مى كند ولى كام يا قدم اول كل سيستم را مى
بيند كه در خيلى از يروزه هاءمتاسفانه به كل توجهى نمى شود. در نتيجه
سيستم بصورت وصله وصله در مى آيد نه يك تكه.
>
a
2
2
tn
>
>
هه
- ه
4
2
a
a
©
22
>
صفحه 222:
فاز تولید
فاز توليد: در اين فاز بر روى جكونكى تاكيد مى شود و چگونگی تبدیل مرحله تحلیل )گام 3 ) به نوم
افزار(برنامه ها(
مورد توجه قرار مى كيرد .
- ساختار داده ها و معمارى نرم افزار تعيين مى شود.
جزئيات رويه ها تعيين مى شود
عكوتكى تبذيل طراحى بذ برناعه كلدييوترى مشخص مى .شود
- ايجاد دلده هاى آزمايشى براى تست نرم افزار
سه كام اصلى در اين فاز وجود دارد:
-1 طراحی نرم اقزارة aC كام نيازمنديهاى نرم افزار به صورت مجموعه ای از نمایشها (مانند
گرافیکی جدولی و غیره) که ساختمان داده ها و معماری والگوربتم ها را توضیح می دهد تبدیل می
شود
2 تولید کد: در این گام نتایج طراحی با کمک یک زبان برنامه سازی به برنامه ها تبديل مى شود
معمولا ازبآت30 ر 10۳ استفاده می شود. البته این به پارامترهای بسیاری از جمله موقعیت مکانی و
زمانی سازمان. تکنولوژی فعلی سازمان. روش طراحی ( مثلا شتی گرا) و ... بستگی دارد.
-3 تست نرم افزار: در این گام. نرم لفزار تولید شده را جهت بر آورده شدن
نیازهای مشتری تست می کنیم.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 223:
پیش می آید تاکید می شود .
(corrective maintenance) >| ol,.05 1- *
-2 تعمیرات تطبیقی Jes gle 4 “adaptive maintenance)
سیستم عامل تغییر كرد يا زبان برنامه سازی جدید آمد و يا تغییراتی سخت
افزاری اعمال گردید یا در قوانین سازمانی غییراتی داذه شد .
-3 تعمیرات تکمیلی olse » (perfective maintenance)
de
دانشجویان شبانه هم اضافه شود و
>
- لي
2
2
tn
>
>
هه
- ه
4
2
a
a
-
2 >
>
صفحه 224:
فرایند تولید نرم افزار
تمام کارهای توسعه,و ارایه یک نرم افزار را می توان یک جلقه جل
مشکل طیق.شکل, زیر توصیف کرد
صفحه 225:
فرایند تولید نرم افزار
* چهار مرحله در شکل فوق :
* - وضع موجود : نمایانگر وضعیت موجود امور است .
اله: لیست نیازها و خواسته ها و مشکلات و کاستی ها مشکل
با مشکلتی که باند حل شود
* - توسعه قنی: مشکل را از طریق بکارگیری فنآوری حل می کند .
© - یکپارچه سازی راه حل : راه حل هايي که در طی فرایند توسعه بدست
می آیند. یکپارچه کرده و نتایج حاصل (مثل اسناد. برنامه هاء داده هاء
عملکرد کسب و کار جدید. محصول جدید ) را به
* کسانی که راه حل را در مرحله اول تقاضا کرده اند. ارایه میدهد
00۵۵00۵۵0۵۵۵۵۵
صفحه 226:
مدل آبشاری خطی -ترتیی
چرخه حیات نرم افزار بصورت کلاسیک .:
صفحه 227:
مونه سازی
* وقتی نمونه نهایی ساخته شد واهداف لازمه مثل تعیین
اس رات ها ودارتای eae له
می توان از یک مدل فرایند
؟ دیگر استفاده کرد ونرم افزار را بصورت مهندسی تولید کرد .
صفحه 228:
مدل ونه سازى
اين روش:
مشترى بك نيخه كارى از نرم اقزر ب می ید ونمى داند كه ين نمونه بدون در نظر كرفتن کیت ليم
اقزار eal نگهداری دراز مدت ساخته شده:
مشتری ناراحت می شود.
- تولید کننده اغلب برای اینکه نمونه را سریع به پایان برساند به خیلی از ص
نامناسب يا زبان برنامه نویسی نامناسب. چون در دسترس و شناخته شده هستند بكار
ناكارامد فقط براى نمايش قابليت انجام يك كار بكار مى رود. بعد از مدتى تولید كننده با ين
دلایل نامناسب بودن آنها را فرآموش می کند.
- توقف این سیکل مشکل است..مشتری ادوست تارذ دائم یکبری وی گیها آشافه شود,
- مشترى فكر مى كند توليد نرم افزار به سادكى همين نمونه (ماكت) مى باشد . بتابراين در زمان تحويل نرم افزار
و هزينه انجام بروزه. ممكن است با مشترى با مشكل مواجه شويم.
- ممكن است مشترى وقت لازم را براى تعامل و ارزيابى نكذارد يا مشتری بسادگی در دسترس نباشد.
* بنابراين با اينكه مدل فرايند نمونه سازى يك الكوى موثر در مهندسى نرم افزاراست بايستى مسايلى را در نظر
كرفت. از ابتدا قوانينى را تعريف كرد. مشترى و توليد كننده بايستى هر دو موافقت كنند كه اين نمونه به عنوان
مكانيزمى براى تعريف نيازها تعريف شده است. بس از آن بايستى نمام أن يا قسمتى از آن دور انداخته شود و نرم
افزار مورد نظر با در نظر گرفتن کیفیت و قابلیت نگهداری توليد شود.
* از این مدل زمانی مناسب است استفاده کنیم که نیازهای مشتری واضح و مشخص نیست و ابهام در خواسته های 4
کاربر وجود دارد. همچنین اگر می خواهیم واسط کاربر مناسبی داش باشیم یا کارایی یک الگوریتمی و ...را
برزسی کبنم نمونه سازی من تواند انستفادم شود.
صفحه 229:
نونه سازی
وقتی, نمونه نهایی ساخته, شد, و |هداف, لازمه مثل, تعیین لیست. خواسته, ها ونیازهای, مشتری, /, کاریران
جاضل کردید, می توان از یک مدل فرایند. دپگر استقاده کرد, و نرم افزار وا بصورت مهندسی. تولید
گر
>
a
2
2
tn
>
>
هه
- ه
4
a
a
©
>
>
صفحه 230:
Wo
برنامه نوبسی شی گرا یا ۲۳۳ یک روش جدید برنامه نویسی میباشد که در آن
از وير
ساختیافته همراه با چند ویژگیهای قوی جدید استفاده میشود. زبان برنامه
نویسی ()++امکان استفاده از 77۳ را به راحتی فراهم مینماید.
در ۰777 بطور کلی مساله به تعدادی زیر گروه قطعات مربوط بهم شکسته
میشود که برای هر زیر گروه ع7 و 0 تهیه شده و نهایتا اين
زیر گروهها تبدیل به اها یا واحدهائی میشود که تاه (یا اشیاء)
نامیده میشوند.
00۵۵00۵۵0۵۵۵۵۵
صفحه 231:
2 واده
در همه زبانهلی برنامه نویسی وجود دارند در زبان (6++و 2
انواع داده ای پلیه
ما
Chor
اشياى دنيا واقعی را باید با مجموعه ای از اين متفیر ها نمایش داد
مثال: صندلی دارای ویژگی هایی ملنند وزن, ابعاد. رنگ, مالک, قيمت و ... است
صفحه 232:
2 واده
* در زبان های برنامه نویسی شی گراء می توان انواع جدید را تعریف کرد *
انواع جدید. نوع داده انتزاعی (96071)) نامیده می شوند *
* ويركى هاى (OT)
- دارای مجموعه ای از ویژگی ها است
- مجموعه ای از عملیات دارد که روی ویژگی ها کار می BS
- ویژگی ها بسته بندی می شوند.
* ویژگی ها تنها توسط عملیات تعریف شده برای 06077 قابل دسترس هستند
* از بیرون 76077 نمی توان به طور مستقیم به ویژگی ها دسترسی داشت
* دسترسی از بیرون. به صورت غیر مستقیم و از طریق عملیات تعریف شده برای 60607۳
Sas است
Coe ooo H HHO OOS
صفحه 233:
صفحه 234:
۰
او واده
در زبان ()++, انواع داده انتزاعی با استفاده از کلاس ها تعریف می شوند
ویژگی های «sla 031s DOT عضو کلاس یا فیلد ها يا صفت ها گفته می شوند
عملیات 090021١ توابع يا متدهای کلاس نامیده می شوند .
* کلاس و شی
- کلاس, تعریف کلی برای یک col BOT
- شىء نمونه اى از كلاس است و در زبانهای برنامه نوبسی یک نهاد زمان
اجرا است
00۵۵0 0۵۵۵۵۵۵۵۵ ۵
صفحه 235:
ری تکاس
* داده ها و توائع خصوصى تبها درون توايع class.ClassName{
كلا ترس هستند
Oe 0 داده,ها و توابع خصوصى
* داده ها و توابع عمومی, هم درون کلاس و هم public:
بیرون کلاس در دسترس هستند دادهها و توابع عمومی
private:
. ۲ ۲ داده ها و توابع خصوصی
زكى بخش ها حفاظت شده نيز در |/
ا ل protected:
درسي كوهد كد ae
داده ها و توابع حفاظت شده داده ها و توابع حفاظت شده
سس وت
* تعریف اشیایی از نوع کلاس- زنام شی ,نام کلاس
۰
ها
2
ه11
2
2
2
Le
le
و
۰
4
a
©
Le
2
صفحه 236:
Jt :کاس )كر مم
Class employee{
دادم هاو تولبحبه صویتپ یترف رضخموصیهستد // ([8106]26 تقطه
public:
void PutName(char *s); || تسولبع عمومي
void GetName(char *s);
void PutAge(double age);
double GetAge();
private:
double Age; دادم خصوصي//
تعریفشیهنگام تعریفکاهی // em2; , 61۳01 (
تعريفشويساز تعریفکاهی// :6۳04 , Employee em3
ل ى ى ى م ى ه ه م م 4
0۵۵۵00۵۵۵۵۵۵۵۵
صفحه 237:
4
مال :کاس )كر مم
و تقح )عسة املد :وه وو اتسين ١
e}
هنكام تعريف توابع کلاس, باید نام کلاس
و عماکتتفکیك دامته( را قبل از نام gob بیلوریم ©
:GetName(char *s) :و۲003
{
0
صفحه 238:
اه ا یکلاس
* * اعضاي داده اي کلاس را چگونه می توان مقدار دهی اولیه کرد
- مي توان يك تابع با نام دلخواه و بدون پارامتر ورودي تعریف کرد که
متغیر ها را مقدار دهی اولیه کند (مثلا همه را صفر کند)
* سازنده
- کلاس می تواند تابع عضو ویژه اي به نام سازنده داشته باشد
- تان سارنده همتام کلاسی اسب که در آن تعریف شده اب
- هنكام ايجاد اشيايي از كلاس به طور خودکار اجرا مي شود
صفحه 239:
اه ا یکلاس
#include <iostream h> MyClass::MyClass()
#include <conio.h> {
0و
int ent=0: i Global Variable b=0;
ent ++; ۱ entis accessible because it is
$$$ «2 global variable
class MyClass 1
{ void MyClass::Set(int int j)
private: {
int a.b: asi
Public: ba;
MyClass(): 1
void Set(int .int ): void MyClass::Show()
void Show(): 1
">> >>> ]>> اه
سس سس سس سا
صفحه 240:
JE tet
main()
1
MyClass ct, c2. امه"
forlint i=0 : i<10 : i++)
cptr= new MyClass:
Gelete ام
1
صفحه 241:
ساره نا يار اس رورود ی
ب«
* سازنده با يارامتر ورودي
- سازنده ها مى توانند يارامتر ورودي داشته باشند
- معمولاء اين بارامترها براي مقدار اوليه دادن به اعضاي شي به كار
من روند
اكر هنكام تعريف يك شي. آن را با يك شي دیگر مقداردهي کنیم.
سازنده آن فراخوانی نمی شود
صفحه 242:
MyClass::MyClass()
MyClass::MyClass(int iint j)
1
5
ent ++: i ontis accessible because it as
a global variable
1
void MyClass::Set{int i int j)
1
عه
برعم
1
#include <iostream h>
#include <conio.h>
int ent=0; 1 Global Variable
| سس
class MyClass
{
private:
int a,b;
public:
MyCiass():
MyCiass(int int
‘Set{int Lint );
Show():
صفحه 243:
void MyClass::Show()
1
بعل" >> 5 >>" >>> >> ازيم
1
"۳
)متهم
1
MyClass ct , عاد" , (2)1.1ه
MyClass 3 = MyClass(2.2);
for(int i=0 0
1
ptr = new MyCiass(3,3);
delete cptr;
1
‘cout << ent:
geteh():
1
صفحه 244:
Phot
اس
* * اگر يك سازنده داراي يك پارامتر باشد. حالت ویژه اي از
* سازنده است
* تفسیر مي شود (010)1 به صورت 1 < ۰0 - در اين حالت
* - تابع سازنده با يك پارامتره تبدیل نوعي از پارامتر به نوع كلاس
۰ انجام مي دهد
Int main()
int a; {
store ob=7;
store(int j) {a=j:} cout << “ob=" << ob.GetA(); // output 7
GetA() {return a; getch();
1
Class Test{
public:
int
k
صفحه 245:
* هنكامي كه شي يك كلاس به تابع فرستاده مي شود. يك کپي از
شي محل فراخواني در شي داخل تابع ايجاد مي شود
اين كار هنكام بازكرداندن (17©111133) نيز صورت مي كيرد
- ايجاد يك كبي از شي داخل تابع كه بازكردانده مي شود در شي
موقتي كه در محل فراخواني ايجاد مي شود
eo ES ا
- کلاس داراي آرایه پویا باشد (مانند کلالاس رشته با طول متغیر) و
od توابعي وجود داشته باشند (عضو یا غیر عضو) که اشيايي از نوع
كلاس را به عنوان ورودي بكيرند يا به عنوان خروجي باز گردانند
۰
۰
۰
٠
«>
«٠
«٠
«٠
۰
00۵۵00۵۵0۵۵۵۵۵
صفحه 246:
و7
* * مخرب
- يك تابع عضو ويؤه از كلاس اسث
* - همنام با كلاس است و با يك كاراكتر -- شروع مي شود
* - هنكامي كه يك شي از بين مي رود به صورت خودكار فراخواني مي شود
٠ هنكام بكار گرفتن عملگر 16166 براي از بین بردن يك متغیر با
فضاي پویا
* * نوشتن مخرب براي كلاس زماني كه برخي اعضاي داده اي آن
حافظه پویا دارند. ضروری است
فد
a
>
2
ل
>
2
>
* * هنكام بايان ياقتن عمر متفيرهاي محلي در انتهاي تابع 1
>
2
4
a
a
=
a
صفحه 247:
7
لي
:0 > مهو
str= NULL;
1
۳
class MyString
{
private:
int size:
char ‘st
public:
MyString();
MyString(char ");
MyString(const
wena eh: MyString(int
MyString(char *.char *):
0
Set(MyString 8): فنص
void Set(char *):
MyString AddTo(MyString 8);
void ۳0:
صفحه 248:
MyString::SetiMyString &s) فنص
1
ifisize>0)
deletel] st:
size = 0;
str = NULL;
Setis st:
1
MyString::MyStringfint i)
1
char temp{20}:
‘size = 0;
str= NULL;
jitoa(itemp, 10);
Setitemp):
w ۳
MyString::MyString(char *s1.char "s2)
Set((MyString8 (MyString(s1) AddTo((MySt
ring&)MyString(" *)). AddTo( (MyString8)
MyString(s2)))):
صفحه 249:
MyString MyString::AddTo(MyString &5)
{
MyString result:
result size = size + s.size;
result str= new charfresult size+1];
stropy(result.str.str);
streat{result str.s str):
return result
ف
void MyString::Print()
{
if(size>0)
:"م" >> عاو >> انمه
void — MyString::Set(char *s)
if(size>0)
{
delete] str:
str= NULL;
}
size = strien(s):
if(size==0)
return:
str = new charfsize+1]: // one more
character for end of string (NULL)
strepy(str.s):
صفحه 250:
MyString st .s2.s3.s4(°A*"B"):
شهم )504 1و
25228877
53. Set{ (MyString &)s1.AddTo(s2) ):
s1.Print();
2
53۳۳0
.4و
geteh():
1
صفحه 251:
لمان ىبي ذش
مي توان هنگام تعریف توابع. مقدارهاي پیش فرضي به ورودي ها
فسیت داد:
- اگر هنگام فراخواني توابع. پارامتر مربوط قيد نشود. مقدار پیش فرض به
آرگومان اختصاص مي یابد
* آرگومان هاي پیش فرض در سازنده ها
- سازنده ها مي آرگومان هاي پیش فرض داشته باشند
- در این حالت. اگر هنگام فراخواني سازنده آرگوماني به آن داده نشود. ارزش
دهي اولیه به کلاس با استفاده از مقدارهاي پیش فرض انجام مي شود
- سازنده اي که برنامه نویس همه آرگومان هاي آن را به صورت پیش فرض
مشخص مي کند. سازنده پیش فرض نامیده مي شود
- در هر كلاس تنها يك سازنده پیش فرض مي تواند وجود داشته باشد
۰
۰
۰
۰
۰
۰
۰
۰
۰
۰
۰
صفحه 252:
void time::SetTime(int h, int m, int 5
hour = (h>=0 && h<24) 7h: 0;
minute = (m>=0 && m<80) ? m : 0:
second = (5>=0 && <60) ? 5:0:
1
u
void time:-PrintMilitary(}{
‘cout << (hour > 10 ? “0”: “) << hour <<*-"
<< (minute > 10 2 "0" :“™) << minute:
1
۱
‘cout << ((hour==0 || hour==12)?12:hour% 12)
>> << (minute<10 ? “O° : “) << minute
> (second<10 ? “0° :“) >> second
‘<< (hour < 12?" AM" :* PM");
time{int = D, int = 0, int = 0);
void SefTime(int .int ,int );
void PrintMilitary();
void PrintStandard():
private:
int hour:
int minute;
time::timetint hr, int min, int sec}{
SetTime(hr.min,sec};
1
صفحه 253:
*5.PrintStandard();
getch();
int main(y{
:ممه
time ti, — //All arguments defaulted
12(2), / Minute and second defaulted
13(21,34), I second defaulted
14(12,25.42), //All values specified
18(27.74,99) 1/ All values specified bad
>> ام
ها
صفحه 254:
صفحه 255:
or وست
* * گاهی لازم است. يك تابع غیر عضو به اعضاي خصوصی
2 کلالاس دسترسی داشته باشد ۱ ۱
* * دوستي: هنگامي كه يك كلاس دوست يك تايع غير عضو يا
© يك کلالاس دیگر است. امکان دسترسي به اعضاي خصوصي آن
* در تابع يا كلاس دوست فراهم مي شود
<function signature * * 0 >ر
;Example: friend void Print(Myclass ,int ) * *
>
- لي
2
2
tn
>
>
هه
- ه
4
2
a
a
-
2 >
>
صفحه 256:
void Rational::Set{int _p.int _q)
{
:مادم
if{q!=0)
كول
else
at;
class Rational
۴
friend boo! IsGreater(Rational ,int };
private:
صفحه 257:
int main()
{
Rational 11;
int a=-1,b=0;
rA.Set(1.-2);
cout << IsGreater(r1.a) << "in";
cout << IsGreater(r1,b):
:ماو
return 0:
}
boo! IsGreater(Rational rint i)
if (Roaty.p /.q> i)
return true;
retum false;
{
صفحه 258:
* * كلاس هارا نيز مي توان دوست كلاس هاي ديكري تعريف
كرد
* * كلاس دوست و همه توابع عضو آن به اعضاى خصوصى
© کلالاس دیگر دسترسی دارند
;friend class Circle « *
صفحه 259:
Void —Point::Setifloat _x,flost _y)
{
xx
yey
صفحه 260:
کلاسای ووست
void — Circle::Set(float x,float y.float r)
1
center.x ع ع
centery = y:
if(>0)
radius =F;
else
radius = 0:
}
UW
void Circle::Print()
{
cout << "Center: (" << centerx <<"," <<
centery <<"), radius: " << radius:
۳
class Circle
1
private:
Point center,
float radius:
public:
Cirele():
void —_Set(float float ,float ):
void Print():
1:
1
Circle::Circle()
1
radius = 0;
1
صفحه 261:
Center: (2.2). radius: 1
صفحه 262:
تمام زبانهای برنامه نویسی شی گرا دارای سه خصوصیت مشترک زیر میباشند :
encapsulation :} (محصورسازى)
(4 =) polymorphism :—
(s2)) imheritance:¢
صفحه 263:
(Encapsulation) (f Sur?
محصورسازی مکانیزمی است که ع771 و ل را بهم وصل نموده و هر
دوی آنها را از استفادههای غیرمجاز مصون نگه میدارد. شی یک موّلفه
alas است که 14 و رل حصوز تنوده و رباع دنشکازی و
پردازش 2 میشود.
صفحه 264:
e
وه
(Fur) polymorphism
چند ریختی مشخصهای است که بیک وسیله امکان میدهد که باتعدادی از
.سیستمها یا عمیات یا دستگاهها. مورد استفاده قرار كيرد
ها
2
2
By
2
2
Le
le
و
هه
4
le
©
2
2
صفحه 265:
(Somes!) inheritance
ارث بری فرآیندی است که بوسیله آن یک شی (7۷7۲7) میتواند
خاصیتهای شی دیگری را دارا شود.
صفحه 266:
(stack) a
پشته ساختاری است که دارای خاصیت ۰ 2۱" 10 اتت! میباشد. پشته فضای پیوسته در
حافظه اشغال مینماید. عملیاتی که روی پشته انجام میشوند عبارتند از :
الف: اسب که باعث میشود یک عنصر وارد پشته شده.
ب: ۰۳۳۲ که باعث میشود یک عنصر از پشته خارج گردد.
صفحه 267:
0
ايكادى انه زطه)
بمنظور ايجاد يك شى بايستى از كلمة رزروشده ات استفاده نمود. جات از نظر ظاهر
شبیه ساختار یا 2507 میباشد. پشته را بعنوان یک 7" میتوان در نظر گرفت که 0
آن شامل یک آرایه و یک ۰۲ و عملیاتی كه روى اين اتات انجام میشود عبارتست از
«poy ات9 حاص کردن پشته.
صفحه 268:
بدین معنی است که 0و مه پوسیله
توابعى كه عضو اتعؤتات نباشند غير قابل
بدين معنى است كه بوسيله ساير
قطعات برناسه قابسل دسترسی
میباشد.
#lefine SIZE 100
// this creates the class
int stck[SIZE];
int tos;
void init();
void push(int i);
int pop( );
صفحه 269:
فقط توابع عضو میتوانند به متفیرهای عضو از نوع ۲۳۵/۳ دسترسی
داشته باشند. بایستی توجه داشت که اگر نوع عضوی مشخص نگردد
آن عضو به صورت اتوماتيك جرفم مى باشد.
Private
>
لي -
2
2
2 _
>
2
هه
ه -
4
a
a
-
> 2
>
صفحه 270:
U وب ك guy. of
void stack : : push(int i)
4۵ )
if(tos = = SIZE) {
cout << “stack is full.”;
return;
+
stck[tos]= i;
tos ++;
عملگر: : مشخص مینماید که تابع متعلق به کدام اه میباشد. عملگر :: عملگر
دمخي سرت ناميده میشود.
صفحه 271:
stack ws
#include <iostream.h>
#define SIZE 100
1/this creates the class stack.
class stack {
int stck[SIZE];
int tos;
publ
void init(int i);
int pop;
void push(nt i);
void stack : : init()
1
tos = 0;
1
Void stack: : push(int i)
{
if(tos = = size) { neh),
cout << “stack is full. eat << ofl por) << rok
return ; wont << of yop) << يلع
) ent << por) << veh
stck[tos] = i; ot << o. pop) << ot,
مور وم 0:(
صفحه 272:
ارث بری فرآیندی است که بوسیله آن یک شی (تام) میتواند
خاصیتهای شی دیگری را دارا شود.
در اسلايد بعد مثالى از ارث برى آورده شده است.
1
3
۰
a
Le
2
۰
le
Le
و
2
a
le
۰
رگ
صفحه 273:
در روبرو تام ای بنام ساختمان یا ,۲4 تعریف گردیده
است. هر ساختمان دارای تعدادی اطاق, تعدادی طبقه و سطح زیر
نا نیز میباشد. از طرف دیگرتوابعی که برای شی تعریف شده :
حال اتات ديكرى بنام بسحا تعريف مىنمائيم كه نه تنها دارای
تمام اعضای شی :۸۳| میباشد بلکه دارای دو اقلام داده
اضائی و چهار تابع اضافی میباشد. دراینجا Mae شی Fone
از شی 44| ارث مى برد :
>
a
2
2
tn
>
>
هه
- ه
@
2
a
a
©
22
>
صفحه 274:
Us fener ied . را ات ماو معا را تیا هط مي نامند baths hd Us 39
ار oe yet cabs Siig ont Ao betas
alee bed) caet ل ot uae میت تج
Inheritance.
صفحه 275:
constructors and)
(destructors 2
0 Meee eae tae oe
لماص اصح سازنده
۳ رای راد a
هد
Be
>
2
هه
>
2
>
2 _
۰
4
۰
a
>
a
صفحه 276:
constructors and)
(destructors 2
تابع نابود کننده یا -«عا. عکس عمل تابع سازنده را میدهد. وقتی که
“Gs أز بين مىرود بصورت اتوماتیک تابع کننده آن و میگردد.
ao
4
2
2
>
>
>
هه
- ه
4
a
--
©
>
>
صفحه 277:
ted
"00 (friend functions) — 0 C4
72
با استفاده از کلمهٌ ۳۵-۷ این امکان وجود دارد که به تابعی که عض
باشد اجازه دسترسی به متغير: کال رات را اب
از کلمه قبل از تعریف تابع استفلده مینماثب
0 أعلان نمائيم للا
در اسلايد بعد مثالى آورده شده است.
صفحه 278:
>
لي -
2
= ® #include <iostream.h>
#include <conio.h>
class myclass {
int main( )
{myclass n;
clrscr( );
n. set_ab(5,8);
cout << sum(n);
friend int sum(myclass x); return 0 ; }
void set_ab(int i, int j);
+:
void myclass :: set_ab(int i, int j)
a b=j;
® //sum is not a member function
=. int sum(myclass x)
~® return s.a + x.b;
صفحه 279:
| -کلاسی که از کلاس دیگر ارث ميبرد . توابع دوست آن کلاس
را به ارث نميبرند. als vhs Sy
دوست را به آرث نمیبرد.
۲-توابع دوست دارای مشخصه نوع ذخیره نمیباشند یعنی توابع
دوب رامین بصورت 237 یا لس تعریف نمودء
صفحه 280:
(friend classes) —~99(f كلاسا
اين امكان وجود دارد که یک کلاس دوست کلاس دیگری باشد . در جنين وضعيتى تلبع دوست
به كليه اسامی private تعر یف شده در کلاس دیگر دسترسی دارد.
Friend Class
در اسلاید بعد مثالی آورده شده است.
بر ور
صفحه 281:
int main()
ob.setm( );
cout << ob.getm();
return 0 ;
#include <iostream.h>
class coins {
enum units {penny, nickel, dime, quarter,
1 ۳
friend class amount,
h
class amount {
coins :: units money;
public:
void setm();
int getm();
} ob;
void amount :: setm()
1
money = coins :: dime;
int amount :: getm( )
{
return money;
صفحه 282:
وا ساره بأر مرو
ل یه رواد
امکان انتقال آر گومانها به توابع سازنده وجود دا از اين آركومائها
atcha Le نمودن شی seer ۳ ۳
در اسلاید بعد مثالی آورده شده است.
ها
2
2
By
2
2
Le
le
و
هه
4
le
©
2
2
صفحه 283:
#include <iostream.h>
#include <conio.h>
class myclass {
int x, y;
public
myclass(int i, int j) {x = i; y=j; }
void show( ) {cout << x << endl << y; }
int main()
0
myclass )زطه 3 , 5);
clrser( );
obj.show( );
return 0;
1
صفحه 284:
صفحه 285:
عو ی static
eee | رت 6 ان کرد بدين معنی است که
از تفر مدکوز را تگهداری نموده و تمام tec
یی ور مر 19 آن کپی استفاده نمایند. برای اینکلر
میبایستی از کلمه تفت 12 اعلان عضو استفاده نمود؛
هه ۵۵ 0۵۵۵۵۵
صفحه 286:
int main()
{
shared x,y;
oe اللا || 0
x.show( );
y-set(4,4); // change
ato4
y-show( );
x.show( );
return 0;
1
>
a
2
2
#include <iostream.h>
=-® class shared{
2 static int a;
int b;
۰ public :
void set(int i, int j)
© رط ل :
2 void show( );
>
int shared :: a; i
define a
4 void shared :: show()
۰ cout << “static a:
De <<end;
cout << “nonstatic b: <<
35 © b<<endl’
<<a
صفحه 287:
میتوان یک کلاس را در یک کلاس دیگر تعریف
نمود. اما بعلت اينكه در ()++ برای کلاسهلٍ
خاصيت ارث برى وجود دارد نيازى معمولا به
تعريف نمودن يك كلاس در كلاس ديكر نيست
Nested Classes
صفحه 288:
local classes صاسازش
وقتی که کلاسی در درون یک تابع تعریف میشود.
اين كلاس فقط برای آن تابغ شناخته شده است
وبرای ge دیگر ناشناخته میباشد. چنین
کلاسی را کلاس محلی مینامند؛
Local Classes
صفحه 289:
در مورد کلاسهای محلی رعایت نکات زیر ضروری است :
تمام توابع عضو بایستی در درون کلاس تعریف گردند.
از متفیرهای محلی, تابعی که کلاس در آن تعریف شده نمیتواند استفلده نماید.
از متفیرهای عضوی 2+۳7 نمیتوان استفلاه نمود.
صفحه 290:
اسماده از 01 وان اراسرای ۱3
هه 4#
از جنات ها مى توان بعنوان پارامترهای توا 30 و مکانیزم انتقال آر گومانها و پارامترها بصورت
a tet goodly ke َ
صفحه 291:
returning) +=
: /
مقدار بر گشتی یک تابع میتواند يك ادناه باشد.
در اسلاید بعد مثالی آورده شده است.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 292:
#include <iostream.h>
class myclass {
inti;
public :
void set_i(int n) { i=n;}
int get_i() {return i;}
myclass funct(); // return an object
int main()
{
myclass ob;
ob=funct( );
cout << ob.get_i() << endl;
return 0;
myclass funct()
1
myclass x ;
x.set_i(1);
return x;
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 293:
اماب اساء (1»هزمان
ل 91عطحصولوعه) ع
در صورتيكه دو تا اتات از يك نوع باشند
میتوان یک تاه را بدیگری انتساب نمود.
در اسلاید بعد مثالی آورده شده است.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 294:
#include <iostream.h>
#include <conio.h>
class myclass{
int i;
public:
void set_i(int n) {i=n;}
int get_i() {return i;}
int main()
1
myclass ob1, ob2;
obl.set_i(126);
0b2= ob]; // assign data from ob1 to ob2
clrser();
cout << ob2.get_i();
retrun 0 ;
1
ها هه 0۰0۵۵۵
صفحه 295:
a ص
(array of objects) اراء اساء
امکان استفاده از آرایه در مورد اشیاء میباشد.
بعبارت دیگر میتوان در برنامه ها آرایهای از اه ها
داشته باشیم.
در اسلاید بعد مثالی آورده شده است.
صفحه 296:
#include <iostream.h>
#include <conio.h>
myclass ob[3];
@ inti
<3; i++) obf i ].set_iG+1
<3; i++)
صفحه 297:
pointers to) --/, J
در مورد اشیاء نیز از اشاره گرها نیز میتوان استفاده نمود.
از عملگر <- در اين مورد استفاده میشود.
در اسلاید بعد مثالی آورده شده است.
>
>
2
2
>
>
>
هه
2
>
>
a
©
>
a
صفحه 298:
® #include <iostream.h>
finclude <conio.h>
= ® class myclass{
myclass( ) {i=0;}
myclass(int j) {i
int get_i() {return i;}
int main( )
myclass ob[3]= {1, 2, 3};
myclass *p;
int i
p=ob; // get start of array
for(i=0; i<3; i++)
3+
cout << p >get_i() << endl;
p++; // point to next object
return 0;
۲۲7
صفحه 299:
4
this (this pointer) Sot
هر تابع عضو یک کلاس دارای یک پارامتر مخفی
بنام سم ع میباشد. -ه اشاره به تام
خاصی مینماید.
در اسلاید بعد مثالی آورده شده است.
صفحه 300:
}class pwr
4 ‘double b
int e
@ ‘double val
‘public
49 ;pwr(double base, int exp)
ی one user) زراك سعدا
0
pwr :: pwr(double base, int exp)
fort; exp > 0; exp --) هي
this -> val = this -> val “this >b
(jint main
@ ‘pwr x(4.0, 2), y(2.5, D, 26.7,0)}
jout << x.get_pwr() <<" *
jcout << y.get_pwr() >> > >
صفحه 301:
virtual) 4 7 ىنبل Weld
tions —*
تابع مجازی,تابعی است که 19 depute chee شد و
بوسیله تاه جرج تغیر داده ميشود. براى اعلان يك
تابع مجازی بایستی از کلمه ۶۸۳ استفاده نمائيم.
تغیر تابع در کلاس مشتق روی تابعی که در کلاس (bre ohare) ao
تعریف شده انجام میشود.
در اسلاید بعد مثالی آورده شده است.
صفحه 302:
#include <iostream.h>
class base {
public :
virtual void vfunc( ){cout << * this is base ‘s vfunc( ) \n* ;}
as darted’ +public base-{
vold vfunc() {cout << “ this is derivedi ’s vfunc( )* << endl;
i
class derived2: public derived! {
public:
/*vfunc( ) not overridden by derived2.In this case, since
derived2 is derived
from derived1, derived! ‘s vfunc( ) is used */ } ;
int main()
{
base *p, b;
derived1 d1;
derived2 42;
Iipoint to base
p= &b;
p> vfunc( ); // access base's vfunc
// point to derived1
p=&d1;
p> vfunc(); //access derived1's vfunc( )
Iipoint to derived2
p= &d2;
p>vfunc( ); // use derived! ‘s vfunc( )
return 0 ; }
۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵ ۵
ل 0
صفحه 303:
صفحه 304:
i
58
i
3
5
8
:
8