Transcript C++
مقدمات اولیه برنامه نویسی به
زبان C++اصول اولیه آن
مفاهیم اولیه زبان C++
تاریخچه مختصر C++
این زبان در اوائل دهه 1980توسط Bjarne stroustrupدر آزمایشگاه
بل طراحي شيده .ایين زبيان الميتو توسياه یازتيه زبيان برواميه وویسي Cمي
باشد كه امكان ووشتن بروامههاي ساخت یازته شئ گرا را م دهد.
شناسه
يك شناسه Cدنبالهاي است از حروف ،ارقام يا عالمت زير خط که با هر
ترتيبي ميتوانند قرار گيرند ،اما اولين کاراکتر بايد يك حرف باشد.
چند نمونه از شناسه هاي معتبر:
m1 , max , payam_noor , minimum
چند نمونه از شناسه هاي نامعتبر:
book-2 , 4s5 , $tax , "p" , computer science
3
اقنون انمگذا ري شناهساه
-1حروف کوچك و بزرگ در نامگذاري شناسهها متفاوت ميباشند.
بنابراين xy ، xY ، XY ، Xyچهار شناسه متفاوت از
نظر C++ميباشد.
)2در نامگذاري شناسهها از حروف الفباء ،ارقام و زير خط ()underline
استفاده ميشود و حداکثر طول شناسه 31ميباشد و شناسه بايستي با
يك رقم شروع نگردد.
استفاده از شواسه ها
شناسه نمی تواند با یک رقم شروع شود.
شناسه های name2 ،average ، sumو یا student_average
مجاز هستند،
شناسه های name 2و یا student averageمجاز نیستند.
البته در برنامه نویسی امروزی پیشنهاد می شود بجای شناسه هایی
همانند student_averageاز StudentAverageاستفاده
گردد.
وکته مهم
زبان c++برخالف بسیاری از زبانهای دیگر به کوچک و بزرگی
حروف حساس است (case sensitive).در نتیجه شناسه های زیر با
یکدیگر متفاوتند :
Sum ≠ sum ≠ SUM
نکته:
در هنگام انتخاب شناسه نمی توانید از کلمات کلیدی که برای منظورهای خاص در زبان c++رزرو شده اند استفاده کنید.
زبان c++دارای 32کلمه کلیدی است که عبارتند از :
متغير
متغير ،مكاني در حافظه اصلي کامپيوتر ميباشد که در آنجا يك مقدار
را ميتوان ذخيره و در برنامه از آن استتفاده نمتود .قتانون نامگتذاري
متغيرها همان قانون نامگذاري شناسهها ميباشد.
متغيرها در زبان Cشناسههايي هستند که محلهايي از حافظه را به
خود اختصاص ميدهند .
مقدار متغير در طول اجراي برنامه مي تواند تغيير کند .
8
انواع داده ها
حافظه الزم
مقادير
2بايت
32767تا –32768
2بايت
65535تا 0
4بايت
2147483647تا –2147483648
4بايت
4294967295تا 0
1بايت
يك كاركتر
1بايت
127تا –128
4بايت
3.4e38تا 1.2e-38
8بايت
1.8e308تا 2.2e-308
نوع داده
int
unsigned int
long int
unsigned long int
char
unsigned char
float
double
اعالن متغیرها
قبل از آنكه در برنامه به متغيرها مقداري تخصيص داده شود و از آنها استتااده تردد
بايستي آنها را در برنامه اعالن نمود.
برای تعریف متغیرها به شکل زیر عمل می کنیم :
;ليست متغيرها
نوع داده
چند مثال از اعالن متغیر ها :
براي اعالن متغير xاز نوع : int
;x
int
براي اعالن متغيرهاي pو qرا از نوع floatكه هر كدام چهار بايت از حافظه را
اشغال ميكنند :
; float p , q
براي اعالن متغير nextاز نوع كركتر كه يك بايت را اشغال ميكند.
; char next
نكته مهم
آنکه زبان c++به متغیرها مقدار اولیه نمی دهد (حتی )0و
برنامه نویس خود باید اینکار را صریحا انجام دهد ،درغیر اینصورت
مقدار اولیه متغیر ،نامعین خواهد بود.
تعریف متغیرها طبق اصول زبان c++میتواند درهرجایی از برنامه
صورت پذیرد ،و متغیرهای تعریف شده از همان خط به بعد قابل
استفاده خواهد بود .اما معموال توصیه می گردد که تعریف متغیرها در
همان خط ابتدایی تابع و بالفاصله پس از { صورت پذیرد .
تخ
ص
ت
م
ي
غ
ص مقادري هب يراه
با استااده از عملگر = ميتوان به متغيرها مقدار اوليه تخصيص نمود.
مثال :
در دستورالعمل
با مقدار اوليه 26اعالن نموده .
در دستورالعمل
X
;int x=26
;a=67000 , b=260
را از نوع int
double
متغيرهاي bو aرا از نوع doubleتعريف نموده با مقادير بترتيب
260و .67000
نمايش مقادري دادهاه
برای نمایش دادهها بر روی صفحه مانتور از coutکه بددنبال آن عملگدر در
یعنی << قید شده باشد استفاده میگردد .بایستی توجه داشت که دوکرکتر
< پشت سر هم توسط C++بصورت یک کرکتر تلقی میگردد.
مثال :
براي نمايش پيغام good morningبر روي صاحه نمايش :
;"cout << "good morning
براي نمايش مقدار متغير Xبر روي صاحه نمايش :
; cout << x
ت
م
غ
ي
ردیافت مقادري راه
به منظور دريافت مقادير براي متغيرها در ضمن اجراي برنامه از
صاحه كليد ،از cinكه بدنبال آن عملگر استخراج يعني >>
قيد شده باشد ميتوان استااده نمود.
: مثال
int x;
cout << "Enter a number:" ;
cin >> x;
عملگرها
عملگر ،نمادی است که به کامپایلر می گوید تا عملیات محاسباتی یا منطقی خاصی
را برروی یک یا چند عملوند ،انجام دهد.
به عملگرهایی که فقط یک عملوند دارند ،عملگر يكاني می گوییم و همواره عملگر
در سمت چپ عملوند قرار می گیرد(مانند عدد .)-125اما عملگرهایی که برروی دو
عملوند اثر می کنند را عملگر دودويي نامیده و عملگر را بین دو عملوند قرار می
دهیم (مانند .)86+23
هر ترکیب درستی از عملگرها و عملوندها را یک عبارت می نامیم .
c++از نقطه نظر عملگرها یک زبان بسیار قوی است .این عملگرها به چند دسته
اصلی تقسیم می گردند که آنها را به ترتیب بررسی می کنیم ..
الملگرهای اوتساب
در زبان c++برای انتساب چندین عملگر وجود دارد .ساده ترین عملگر
انتساب ،همان عملگر = است که در بسیاری از زبانها استفاده می شود.
بعنوان مثال :
;a = 5
;b = c + 2 * d
الملگر اوتساب
عملگر انتساب = ميباشد كه باعث
مي ردد مقدار عبارت در طرف
راست اين عملگر ارزيابي شده و در
متغير طرف چپ آن قرار يرد.
مثال :
;x=a+b
; x=35
; x=y=z=26
از عملگرهای انتساب چندگانده نیدز میتدوان اسدتفاده
نمود .کده مقددار سده متغیدر zو yو xبرابدر بدا 26
میشود.
این عملگر باعث می شود که عبارت سمت راست در عبارت سمت چپ قرار
گیرد .توجه کنید که مقدار سمت چپ باید عبارتی باشد که بتوان به آن یک مقدار
را نسبت داد(مانند یک متغیر) که به آن Lvalueگفته می شود ،بنابراین یک ثابت
نمی تواند در سمت چپ قرار گیرد.
نکته دیگر اینکه اولويت عملگر = از عملگرهای ریاضی كمتر است و درنتیجه ابتدا
آن عملیات انجام شده و در پایان حاصل در عبارت سمت چپ ریخته می شود .
الزم به ذکر است که در هنگام انتساب ،درصورت لزوم نوع عبارت سمت راست به
نوع عبارت سمت چپ تبدیل می شود .مثال :
;int a
;a = 2.5 * 5.0
که دراینصورت عدد 12در aذخیره خواهد شد .
عملگرهای محاسباتی
این عملگرها ،همان اعمال متداول ریاضی هستند که در زبان c++
مورد استفاده قرار می گیرند .این اعمال عبارتند از :
عملگرهای فوق برروی همه انواع داده های c++عمل می کنند بجز
عملگر %که فقط برروی نوع داده های صحیح عمل میکند و برروی
داده های اعشاری تعریف نشده است
اما نكته مهمي که باید به آن اشاره کرد ،نحوه کار عملگر تقسیم
برروی نوع داده های مختلف است .درصورتیکه هردو عملوند صحیحی
باشند ،تقسیم بصورت صحیح بر صحیح انجام خواهد شد .اما اگر یکی
یا هر دو عملوند اعشاری باشند ،تقسیم بصورت اعشاری انجام خواهد
پذیرفت .
مثال : 1
در حاالت هااه هاار دو عمعونااد عمع رهااي – ، + ، * ، / ، %از نااوع يااحيش باشااد
نتيجه عمل از نوع يحيش م باشد.
نتيجه
عبارت
7
5+2
10
5*2
3
5–2
1
5%2
2
5/2
مثال : 2
در يورتيهه حداقل يه از عمعوندهاي عمع رهاي + ، – ، * ، /از نوع اعشاري باشد
نتيجه عمل از نوع اعشاري م باشد.
نتيجه
عبارت
7. 0
5. 0 +2
10.0
5* 2. 0
2.5
5. 0 / 2
3. 0
5. 0 -2
2.5
5. 0 / 2. 0
int a,b ;
; float c,d
; a = 10 ; b = 4
;c = 8.2; d = 4.0
اکنون به نتایج عملیات زیر دقت کنید
a/b=> 2
c / d = > 2.05
a / d = > 2.5
a/4=> 2
چنانچه به آخرین مورد توجه کنید ،متوجه می شوید که از آنجا که aیک متغیر صحیح است و 4
نیز یک ثابت صحیح در نظر گرفته شده ،درنتیجه تقسیم بصورت صحیح بر صحیح انجام گرفته است.
چنانچه بخواهیم تقسیم بصورت اعشاری صورت پذیرد ،به دو شکل می توانیم عمل کنیم .اول اینکه
آن را بصورت a / 4.0بنویسیم و دوم اینکه از عملگر قالب ریزی استفاده کنیم .
بطوركل هرگاه ثابتها و متغیرهای از اوواع مختلف در یك البارت محاسبات داشته باشیم ،كامپایلر c++همه آوها را به یك
ووع یكسان كه همان بزرگترین الملوود موجود است تبدیل خواهد كرد .باووان مثال به مورد زیر دقت كوید:
نكته
اولويت عملگرها ،یعنی در عبارتی که شامل چندین عملگر است ،کدامیک در ابتدا اعمال خواهد
گردید .اولویت عملگرهای محاسباتی از باال به پایین بشرح زیر است:
1عملگر یکانی –
2عملگرهای *و /و %
3عملگرهای +و –
چنانچه اولویت دو عملگر یکسان باشد ،این عملگرها از چپ به راست محاسبه خواهند شد .چنانچه
بخواهیم یک عمل با اولویت پایین زودتر انجام شود ،باید از پرانتز استفاده کنیم .بنابراین اولویت
عملگر پرانتز از همه موارد فوق بیشتراست .در مورد پرانتزهای متداخل ،ابتدا پرانتز داخلی محاسبه
می شود؛ اما در مورد پرانتزهای هم سطح ،ابتدا پرانتز سمت چپ تر محاسبه می گردد .
ترتیب اجرای عملگرها
مثال
عبارات خاص
33
b = a++;
b = ++a;
b = a++ + 2;
b = ++a + 2;
if (a++ < 8)
if (++a < 8)
x = y = 4;
x = y + (z = 4*5);
عملگرهای جدید
34
;a++
;++a
;a--
;--a
عملگرهای افزایش و كاهش
در ،c++افزايش يك واحد به مقدار يك متغير از نوع صحيح را افتزايش و
بطور مشابه كاهش يك واحد از مقدار يك متغير از نوع صتحيح را كتاهش
مينامند..
عملگر كاهش را با - -و عملگر افزايش را با ++نمتايش ميدهنتد .چتون
عملگرهاي ++و - -فقط روي يك عملوند اثر دارند اين دو عملگر نيز جزء
عملگرهاي يكتائي ميباشند.
مثال :
سه دستور العمل :
;++x
;x++
;x=x+1
معادل ميباشند و بطريق مشابه سه دستورالعمل زير نيز معادل مي باشند.
;--y
;y=y-1
; y- -
از عملگرهاي ++و --ميتوان بدو صورت پيشوندي و پسوندي استااده نمود.
در دستورالعملهاي پيچيده عملگر پيشوندي قبل از انتساب ارزيابي ميشود و عملگر
پسوندي بعد از انتساب ارزيابي ميشود.
مثال :
;int x=5
;y=++x * 2
پس از اجراي دستورالعملهاي فوق :
y=12
;int x=5
;y=x++ * 2
پس از اجراي دستورالعملهاي فوق :
Y=10
عملگرهای جایگزینی محاسباتی
براي سادهتر نوشتن عبارتها در ،c++ميتوان از عملگرهاي جايگزيني محاسبتتتاتي
استااده نمود.
=+
=-
=*
=/
=%
نکته جالب درمورد زبان c++آنستکه دارای یک سری عملگرهای انتساب خالصه شده است که باعث می شوند در
بعضی موارد بتوانیم عبارات کوتاهتری را بنویسیم .این عملگرها عبارتند از :
عملگر اول و دوم ،عملگرهای یکانی هستند که بترتیب عملگر افزایش و عملگر کاهش نامیده می شوند .این دو عملگر
به دوصورت مورد استفاده قرار می گیرند .در حالتی که از دستور ; a ++استفاده شود به آن پس افزایش می گویند و
بدین معناست که ابتدا از مقدار فعلی aدر عبارت موردنظر استفاده کن و سپس آن را افزایش بده .اما دستور ++ a
که به آن پیش افزایش گفته می شود ،ابتدا aرا افزایش داده و سپس از آن در عبارت استفاده می کند .به برنامه زیر
دقت کنید :
;int a ,b
;a=5
;b = a ++
;a=5
;b = ++ a
a=6 b=5
a=6 b=6
اولویت عملگرها
ارزيابي مقدار يك عبارت رياضي براساس جدول اولويت عملگرها انجام مي ردد .در ذيل
جدول اولويت عملگرها براساس بترتيب از بيشترين اولويت به كمترين اولويت داده شده
است.
) (
+ -- ++
%
/
*
+
== += -= *= /= %
مثال : 1
(5+2) *(6+2*2)/2
با توجه به جدول اولويت عملگرها داريم كه
7 *(6+2*2)/2
7*(6+4)/2
7* 10 /2
70 /2
35
: 2 مثال
int a=6 , b=2, c=8, d=12;
d=a++ * b/c ++;
d
c
b
a;
: خروجی
1
9
2
7
عملگرهای مقایسه ای (رابطه ای)
این عملگرها دو عبارت را بایکدیگر مقایسه کرده و نتیجه را باز می گردانند .نتیجه می تواند درست
)(trueیا غلط ) (falseباشد .نتیجه این عملگرها یک عدد صحیح است که درصورت درست بودن 1
و درصورت غلط بودن 0باز می گردانند .این عملگرها عبارتند از :
عملگرهای منطقی
انواع عملگرها
+ - * / %
محاسباتی
||
منطقی
مقايسه ای
47
=!
=>
=<
==
&&
!
>
<
چند نكته درمورد عملگرها
شکل نامناسب
شکل بهتر
شکل کامال مناسب
;result=a-b*c/d+f*g
result = a – b * c / d + f * g
)result = a – ( b * c / d) + (f * g
مورد دیگری که باید به آن اشاره کرد ،نحوه محاسبه عبارات پیچیده ای است که عملگرهای مختلفی در آنها
استفاده شده باشد .درچنین حالتی باید از اولویت گروههای مختلف عملگرها نسبت به یکدیگر آگاه باشیم .جدول
زیر اولویت عملگرهای گفته شده تاکنون را بترتیب از باال به پایین آ ورده است :
توضيحات ()Comments
توضيحات در برنامه باعث خوانائي بيشتر و درك بهتر برنامه
ميشود .بنابراين توصيه بر آن است كه حتي االمكان در برنامهها از
توضيحات استااده نمائيم .در ،c++توضيحات بدو صورت انجام
مي يرد كه در اساليدهاي بعد به آن اشاره شده است.
توضيحات ()Comments
الف :اين نوع توضيح بوسيله //انجام ميشود .كه كامپيوتر هر چيزي را كه بعد از //قرار داده شتود
تا انتهاي آن خط اغماض مينمايد.
مثال :
c=a+b;//c is equal to sum of a and b
ب:توضيح نوع دوم با * /شروع شده و به */ختم ميشود و هر چيزي كه بتين* /و */قترار يترد
اغماض مينمايد .
مثال :
/ * this is a program
to calcufate sum of
n integer numbers */
توابع كتابخاهن
زبان C++مجهز به تعدادی توابع کتابخانه میباشد .بعنوان مثدال تعددادی
توابع کتابخانده بدرای عملیدات ورودی و خروجدی وجدود دارندد .معمدوال توابدع
کتابخانه مشابه ،بصورت برنامههای هدف (برنامه ترجمه شده بزبان ماشین) در
قالب فایلهای کتابخانه دسته بندی و مورد استفاده قرا رمیگیرند .این فایلهدا را
فایلهای headerمینامند و دارای پسوند .hمیباشند.
ح
ن
ب
ب
ت
ا
ت
س
ك
وه ا فاده از و ع تا خاهن اي
براي استااده از توابع كتابخانه خاصي بايستتتتي نام فايل headerآنرا در ابتداي
برنامه در دستور #includeقرار دهيم.
> اسم فايل < header
#include
abs(i)
int
i
stdlib.h
cos(d)
double
d
math.h
exp(d)
log(d)
log10(d)
double
double
double
math.h
math.h
math.h
sin(d)
double
ex
loge d
Log10 d
d
sqrt(d)
double
strlen(s)
int
tan(d)
double
toascii( c)
int
tolower(c )
int
stdlib.h
toupper(c )
int
stdlib.h
d
s
math.h
math.h
string.h
d
c
math.h
stdlib.h
ربانمه رد C++
اكنون باتوجه به مطالب اته شده قادر خواهيم بود كه تعدادي برنامه ساده و
كوچك به زبان C++بنويسيم .براي نوشتن برنامه بايستي دستورالعملها را در
تابع ) ( mainقرار دهيم و براي اينكار ميتوان به يكتي از دو طريقتي كته در
اساليدهاي بعد آمده است ،عمل نمود.
روش اول :
>
#include
<
) (int main
}
; دستورالعمل 1
; دستورالعمل 2
.
.
.
;دستورالعمل n
; return 0
}
روش دوم :
>
<
#include
) (void main
{
; دستورالعمل 1
; دستورالعمل 2
.
.
.
;دستورالعمل n
}
را روی صفحهC++ is an object oriented language برنامه ای که پیغام
.مانیتور نمايش مي دهد
#include
<iostream.h>
int main( )
{
cout <<"C++ is an object oriented language \n" ;
return 0 ;
}
.دو عدد از نوع اعشاري را رفته مجموع و حاصلضرب آنها را محاسبه و نمايش ميدهد
#include
<iostream.h>
int main( )
{
float
x,y,s,p ;
cin >> x >> y ;
s= x+y ;
p=x*y;
cout << s <<endl << p;
return 0 ;
}
keywords and alternative tokens.
asm
enum
protected
typedef
auto
explicit
public
typeid
bool
extern
register
typename
break
false
reinterpret_cast
union
case
float
return
unsigned
catch
for
short
using
char
friend
signed
virtual
class
goto
sizeof
void
const
if
static
volatile
const_cast
inline
static_cast
wchar_t
continue
int
struct
while
default
long
switch
xor
delete
mutable
template
xor_eq
do
namespace
this
or_eq
double
new
throw
not
dynamic_cast
operator
true
bitand
else
private
try
and_eq
bitor
not_eq
compl
And
--
or