KNToosi.in - همکلاســــی

وبلاگ گروهی دانشجویان ِ دانشگاه صنعتی خواجه نصیرالدین طوسی

KNToosi.in - همکلاســــی

وبلاگ گروهی دانشجویان ِ دانشگاه صنعتی خواجه نصیرالدین طوسی

اموزش ++c قسمت دوم

قسمت دوم اموزش ++c

  • فصل اول - مبحث چهارم

معرفی ساختاری زبان ++C

++C عموماً از سه بخش تشکیل شده است:

- محیطی برای نوشتن برنامه و ویرایش آن.
- کامپایلر ++C.
- کتابخانه استاندارد ++C.

یک برنامه زبان ++C برای رسیدن به مرحله اجرا از شش مرحله عبور می کند.

مرحله اول : برنامه نویس، برنامه را در محیط ویرایشگر می نویسد و آن را بر روی دیسک ذخیره می کند.

مرحله دوم : برنامه پیش پردازنده، خطوط برنامه را از لحاظ ایردات نگارشی بررسی می کند، و در صورت وجود اشکال در برنامه پیغام خطائی داده می شود، تا برنامه نویس نسبت به رفع آن اقدام نماید.

مرحله سوم : کامپایلر، برنامه را به زبان ماشین ترجمه می کند و آن را بر روی دیسک ذخیره می نماید.

مرحله چهارم : پیوند دهنده، کدهای زبان ماشین را، به فایلهای کتابخانه هایی که مورد استفاده قرار گرفته اند پیوند می دهد و یک فایل قابل اجرا بر روی دیسک می سازد.

مرحله پنجم : بار کننده برنامه را در حافظه قرار می دهد.

مرحله ششم : واحد پردازش مرکزی کامپیوتر دستورات برنامه را اجرا می کند.

مرحله اول
مرحله دوم
مرحله سوم
مرحله چهارم
مرحله پنجم
مرحله ششم

نکته : همانطور که گفته شد پیش پردازنده ایرادات برنامه را بررسی می کند و در صورتی که برنامه مشکلی نداشت در نهایت به زبان ماشین ترجمه می شود و قابلیت اجرا پیدا می کند اما در هنگام اجرای برنامه نیز ممکن است خطایی بروز کند به عنوان مثال تقسیم بر صفر بوجود آید. این خطا قابل تشخیص توسط پیش پردازنده نیست و در زمان اجرای برنامه رخ می دهد و باعث خروج ناگهانی از برنامه می شود. به اینگونه خطاها، خطای زمان اجرا گفته می شود. تقسیم بر صفر جزء خطاهای مهلک است. خطای غیر مهلک خطایی است که اجازه اجرای ادامه برنامه را می دهد ولی ممکن است نتایج غیر صحیحی را به ما بدهد 

 

 

  • فصل اول - مبحث پنجم

مفاهیم حافظه و انواع داده

   همانطور که در سازمان کامپیوتر گفتیم یکی از واحدهای کامپیوتر، واحد حافظه می باشد.

این واحد که به آن RAM ( حافظه با دسترسی تصادفی Random Access Memory) نیز می گویند، برای ذخیره موقت داده ها و دستورالعملها تا هنگامی که به آنها احتیاج شود استفاده می شود. اطلاعاتی که در RAM قرار دارند قابل پاک شدن و جایگزین شدن با داده های دیگر است. فضایی که ما در برنامه نویسی برای متغیرها و داده ها استفاده می کنیم در RAM قرار دارد. برای درک بهتر مطلب ، واحدهای اندازه گیری حافظه را بررسی می کنیم:

Bit بیت: یک بیت عنصری الکترونیکی در کامپیوتر است که دارای دو حالت روشن (1) و خاموش(0) می باشد و کوچکترین واحد اطلاعاتی است.

Byte بایت: چون بیتها واحدهای اطلاعاتی کوچکی هستند و فقط می توانند دو حالت را انتقال دهند، بنابراین آنها را در واحدهای بزرگتری سازماندهی می کنند تا اطلاعات بیشتری هر بار قابل انتقال باشد. این واحد بزرگتر بایت است که واحد اصلی اطلاعات در سیستمهای کامپیوتری می باشد. هر 8 بیت ، یک بایت را تشکیل می دهند.

از واحدهای زیر برای اندازه گیری حافظه استفاده می شود:

یک کیلو بایت 1 KB = 1024 B = 210B

یک مگا بایت 1 MB = 1024 KB = 220B

یک گیگا بایت 1 GB = 1024 MB = 230B

ما در برنامه نویسی نیاز به خانه های حافظه داریم. در تعریف خانه حافظه باید نام و نوع اطلاعاتی که در آن قرار می گیرد معین شود.

نام متغییر      نوع داده ;
int i1,i2,index;

دستور فوق سه خانه حافظه با نامهای i1 وi2 وindex از نوع اعداد صحیح تعیین می کند، یعنی در هر کدام از خانه های حافظه فوق می توان یک عدد صحیح در بازه 32767 تا 32768- قرار داد. نوع داده int به دو بایت حافظه نیاز دارد.

نکته :

  • هر دستور زبان ++C به ; ختم می شود.
  • برای نام گذاری خانه های حافظه فقط می توان از حروف، اعداد و ... استفاده کرد و نیز حرف اول نام یک متغیر باید یک حرف باشد. به عنوان مثال نامهای 1test و test!num و mark.1 اسامی غیر مجاز می باشند.
  • بین حروف نام متغیر نمی توان از کاراکتر فاصله استفاده کرد.
  • زبان ++C دارای تعدادی کلمات کلیدی است که نمی توان از این کلمات به عنوان نام متغیر استفاده کرد. کلمات کلیدی زبان ++C عبارتند از:
    asm auto break case cdecl char
    class const continue _cs default delete
    do double _ds else enum _es
    extern _export far _fastcall float for
    friend goto huge if inline int
    interrupt _loadds long near new operator
    pascal private protected public register return
    _saveregs _seg short signed sizeof _ss
    static struct switch template this typedef
    union unsigned virtual void volatile while
  • زبان ++C نسبت به حروف حساس است یعنی بین حروف کوچک و بزرگ تفاوت قائل می شود. در این زبان تمام کلمات کلیدی با حروف کوچک نوشته می شوند، به عنوان مثال short یک کلمه کلیدی می باشد ولی SHORT یا shoRT کلمات کلیدی نیستند. توصیه می شود که تمام برنامه های این زبان با حروف کوچک نوشته شوند.

در زبان ++C چهار نوع داده اصلی وجود دارد که عبارتند از :

1- char : این نوع داده برای ذخیره داده های کاراکتری مانند 'a' ، '1' ، '.' به کار می رود و بازه قابل قبول آن از 128- تا 127 می باشد. در حقیقت خانه های char  نیز از نوع اعداد صحیح می باشند که یک بایت طول دارند و کد اسکی کاراکتر مورد نظر را در خود حفظ می کنند. به عنوان مثال کد اسکی کاراکتر A  عدد 65 می باشد.

2- int : این نوع داده برای ذخیره اعداد صحیح مانند 1300، 32000 ، 850- به کار می رود و بازه قابل قبول آن 32768- تا 32767 می باشد.

3- float : این نوع داده برای ذخیره اعداد اعشاری مانند 12.5241 ، 1501.3- ، 1415.1234 به کار می رود و دقت آن تا 7 رقم اعشاری می باشد.

4- double : این نوع داده برای ذخیره سازی اعداد اعشاری بزرگ به کار می رود و دقت آن از float بیشتر می باشد.

باکلماتی مانند signed ( علامت دار) ، unsigned ( بدون علامت)، short (کوتاه) و long ( بلند) انواع داده های جدیدی می توان ایجاد کرد. نوع int با هر چهار کلمه فوق می تواند مورد استفاده قرار گیرد. نوع char می تواند با signed و unsigned به کار رود و نوع double می تواند با long به کار رود. به جدول زیر توجه کنید:

نوع داده طول داده بازه
unsigned char 8 bits 0 to 255
char 8 bits -128 to 127
enum 16 bits -32,768 to 32,767
unsigned int 16 bits 0 to 65,535
short int 16 bits -32,768 to 32,767
int 16 bits -32,768 to 32,767
unsigned long 32 bits 0 to 4,294,967,295
long 32 bits -2,147,483,648 to 2,147,483,647
float 32 bits 3.4 * (10**-38) to 3.4 * (10**+38)
double 64 bits 1.7 * (10**-308) to 1.7 * (10**+308)
long double 80 bits 3.4 * (10**-4932) to 1.1 * (10**+4932)

 

 

 

 

  • فصل اول - مبحث ششم

اعمال ریاضی و محاسباتی

در مبحث حافظه با انواع داده و شیوه اختصاص دادن حافظه به متغیرها آشنا شدیم حال می توانیم متغیرها را در محاسبات به کار ببریم. برای نیل به این هدف ++C عملگرهایی را در اختیار ما قرار داده است.

عملگر انتساب (=)

عملگر تساوی جهت اختصاص دادن یک مقدار به یک متغیر به کار می رود ، مانند a = 5 که عدد 5 را به متغیر a تخصیص می دهد. جزئی که در سمت چپ تساوی قرار دارد همواره باید نام یک متغیر باشد، وجزء سمت راست تساوی می تواند یک عدد، یک متغیر و یا ترکیبی از هر دو باشد. مانند: a=b+5 ، که در ایجا حاصل b + 5 در متغیر a قرار می گیرد. توجه داشته باشید که همواره مقدار سمت راست تساوی در مقدار سمت چپ قرار می گیرد. به دستورات زیر توجه کنید.

int a,b;
a = 10;
b = 4;
a = b;
b = 7;

اگر از دستورات فوق استفاده کنیم در نهایت مقدار a برابر 4 و مقدار b برابر 7 خواهد بود. ++C قابلیتهای زیادی دارد یکی از این قابلیتها اینست که می توانیم چند دستور را در یک دستور خلاصه کنیم ، به عنوان مثال دستور :

a = 2 + (b = 5);

برابر است با:

b = 5;
a = 2 + b;

که هر دو عبارت در نهایت عدد 7 را در متغیر a قرار می دهند.

ضمناً استفاده از عبارت زیر نیز در ++C مجاز می باشد:

a = b = c = 5

عبارت فوق عدد 5 را به سه متغیر a و b و c اختصاص می دهد.

عملگر های محاسباتی

پنج عملگر محاسباتی که قابل استفاده در زبان ++C هستند عبارتند از:

+     جمع
-     تفریق
*     ضرب
/     تقسیم
%     باقیمانده تقسیم

تنها عملگری که ممکن است برای شما ناشناس باشد عملگر % است. این عملگر باقیمانده تقسیم دو عدد صحیح را به ما می دهد، به عنوان مثال اگر از دستور زیر استفاده کنیم:

a = 11 % 3;

متغیر a حاوی عدد 2 خواهد شد. چون عدد 2 باقیمانده تقسیم 11 بر 3 می باشد.

عملگر های انتساب مرکب

عملگرهای انتسال مرکب عبارتند از =+ ، =- ، =* ، =/ ، =% .این عملگرها دو کار را با هم انجام می دهند و در کم شدن کد نویسی به ما کمک می کنند، به جای توضیح اضافی به مثال های زیر که فهم مطلب را ساده تر می کند توجه کنید:

value += increase;«برابر است با»value=value+increase;
a -= 5; «برابر است با»a = a - 5;
a /= b; «برابر است با»a = a / b;
price*=units+1; «برابر است با»price=price*(units+1);
x %= y * z; «برابر است با»x = x % (y * z);

عملگرهای افزایش و کاهش

گونه ای دیگر از عملگرها که در کم شدن کد نویسی به ما کمک می کنند عملگر افزایش(++) و عملگر کاهش(--) می باشند. عملگر افزایش(++) یک واحد به مقدار قبلی که در متغیر بود اضافه می کند و عملگر کاهش(--) یک واحد از مقدار قبلی که در متغیر بود کم می کند.

++a;      a++;      a += 1;      a = a + 1;

هر چهار دستور فوق یک واحد به مقدار قبلی متغیر اضافه می کنند.

--a;      a--;      a -= 1;      a = a - 1;

هر چهار دستور فوق یک واحد از مقدار قبلی متغیر کم می کنند.

اگر از دستورات ++a و a++ به تنهایی استفاده کنیم فرقی ندارد که ++ قبل از متغیر قرار گیرد یا بعد از متغیر. اما اگر از ++ در کنار عملگرهای دیگر استفاده شود، اگر ++ قبل از متغیر قرار گیرد ابتدا یک واحد به متغیر اضافه شده سپس در محاسبه استفاده می شود، ولی اگر ++ بعد از متغیر قرار گیرد ابتدا متغیر در محاسبه استفاده می شود سپس یک واحد به آن اضافه می شود. همین روال برای عملگر -- نیز برقرار است. به مثال های زیر توجه کنید:

b = 3;
a = ++b;
b = 3;
a = b++;

در مثال سمت چپ ابتدا یک واحد به b اضافه می شود، یعنی b مقدار 4 را می گیرد سپس عدد 4 در a قرار می گیرد؛ اما در مثال سمت راست ابتدا مقدار b یعنی عدد 3 در a قرار می گیرد سپس یک واحد به b اضافه می شود و مقدار 4 را می گیرد.

در این مثال عدد 6 در m قرار می گیرد:

a = 2;
b = 3;
m = ++a + b--;

b مقدار 2 و a مقدار 3 را می گیرد.


حال که با انواع عملگرهای محاسباتی آشنا شدید عبارت زیر را در نظر بگیرید.

y = 5 * 3 + 2 - 1 * 3 / 2;

مقداری که در y قرار می گیرد چه عددی می تواند باشد؟ 30 یا 24 یا 15.5 یا 17.5 . نظر شما چیست؟ شما مقدار y را چگونه حساب می کنید؟

کامپیوتر برای بررسی و محاسبه چنین عبارتی برای اینکه با چندین جواب مواجه نشود قواعدی را در نظر می گیرد و طبق قوانین تقدم عملگرها عمل می کند. این قوانین که مشابه قوانین جبر می باشند به ترتیب عبارتند از:

1- عملگرهایی که درون پرانتز قرار دارند اول محاسبه می شوند. در صورتی که پرانتزها تودرتو باشند ابتدا داخلی ترین پرانتز مورد بررسی و محاسبه قرار می گیرد.

2- اگر عبارتی حاوی * ، / و % باشد پس از پرانتز این عملگرها در اولویت قرار دارند. اگر عبارتی حاوی ترکیبی از این عملگرها باشد چون این عملگرها در تقدم یکسانی نسبت به یکدیگر قرار دارند، محاسبه به ترتیب از چپ به راست انجام می شود.

3- اعمال + و - در انتها انجام می شوند. اگر عبارتی شامل ترکیبی از این دو عملگر باشد چون این دو عملگر در تقدم یکسانی نسبت به هم هستند، محاسبه به ترتیب از چپ به راست انجام می شود.

با توجه به قواعد گفته شده حاصل عبارت فوق عدد 15.5 خواهد بود.

y = 5 * 3 + 2 - 1 * 3 / 2;    ----»  y = 15.5

به مثال های زیر توجه کنید:

x = (2 + 1) * 3 + 5;          ----»  x = 14

z = 5 % 3 * (3 + 1); ----» z = 8

y = p * r % q + w / x - y;
 
 
 
فصل اول - مبحث هفتم



عبارات منطقی

یک عبارت منطقی، عبارتی است با مقدار درست یا نادرست. به عنوان مثال 5 بزرگتر از 3 است، یک عبارت منطقی است با مقدار درست و 5 کوچکتر از 3 است، نیز یک عبارت منطقی است اما با مقدار نادرست. در کامپیوتر نتیجه عبارات منطقی درست عدد یک و نتیجه عبارات منطقی نادرست عدد صفر خواهد بود.

ضمناً کامپیوتر هر عدد مخالف صفر را به عنوان یک عبارت منطقی درست در نظر می گیرد.

عملگرهای رابطه ای

برای مقایسه دو متغیر یا دو عبارت از عملگرهای رابطه ای استفاده می کنیم که همانطور که گفته شد دارای نتیجه درست یا نادرست می باشد. عملگرهای رابطه ای عبارتند از ==( مساوی )، =!( متفاوت )، <(بزرگتر از )، >( کوچکتر از )، =<( بزرگتر مساوی از )، =>( کوچکتر مساوی از ). به مثال های زیر توجه کنید.

ضمناً به جای اینکه فقط از اعداد در عبارتهای رابطه ای استفاده کنیم می توانیم از عبارتهایی شامل متغیرها و یا ترکیبی از متغیرها و اعداد استفاده کنیم به عنوان مثال فرض کنید a = 2 و b=3 و c=6 خواهیم داشت:

(a==5)        ----->  نادرست
(a*b>=c) -----> درست
(b+4 نادرست
((b=2)==a)) -----> درست

توجه کنید که عملگر = همانند عملگر == نمی باشد. اولی عملگر انتساب است که مقدار سمت راست را در متغیر سمت چپ قرار می دهد و دیگری عملگر رابطه ای است که برابر بودن یا نبودن دو مقدار را با هم مقایسه می کند. بنابراین در عبارت ((b=2)==a)) ما ابتدا مقدار 2 را در متغیر b قرار دادیم سپس آن را با a مقایسه کردیم، لذا نتیجه این مقایسه درست بود.

عملگرهای منطقی

عملگرهای منطقی عبارتند از ! ، || و && . نتیجه عملگر ! (NOT) وقتی درست است که عبارتی که این عملگر بر روی آن عمل می کند نادرست باشد و نتیجه هنگامی نادرست است که عملوند آن درست باشد. ضمناً این عملگر تنها یک عملوند دارد. در حقیقت این عملگر نقیض عملوند خود را به عنوان نتیجه می دهد.

به مثال های زیر توجه کنید:

!(5 == 5)   ----> نادرست
!(6 <= 4) ----> درست
!0 ----> درست
!1 ----> نادرست

عملگرهای &&(AND) و ||(OR) هنگامی مورد استفاده قرار می گیرند که بخواهیم از دو عبارت یک نتیجه را بدست آوریم. نتیجه این عملگرها بستگی به ارتباط بین دو عملوندشان طبق جدول زیر دارد:

عملوند اول
b
عملوند دوم
a
نتیجه
a&&b
نتیجه
a||b
درستدرستدرستدرست
درستنادرستنادرستدرست
نادرستدرستنادرستدرست
نادرستنادرستنادرستنادرست

به مثال های زیر توجه نمائید:

((5==5)&&(3>6))   ----->  نادرست
((5==5)||(3>6)) -----> درست
((3-3)&&(3<5)) -----> نادرست
((3-3)||(3<5)) -----> درست

در مثال های زیر به جای اعداد از متغیر نیز استفاده شده است ( فرض کنید a=1 و b=2 وc=3)

((b-2*a)&&(c==3))       ----->  نادرست
((b==2*a)&&(c!=4)) -----> نادرست
((c==a+b)||(b درست
((b-c==-a)||(b-c==a)) -----> درست

عملگر شرطی

این عملگر یک عبارت را مورد ارزیابی قرار می دهد و براساس عبارت ارزیابی شده مقادیر متفاوتی را به عنوان نتیجه بر می گرداند. ساختار این عملگر به صورت زیر می باشد:

نتیجه 2 : نتیجه 1 ? شرط

اگر شرط برقرار باشد نتیجه 1 به عنوان خروجی خواهد بود در غیر این صورت نتیجه 2 به عنوان خروجی در نظر گرفته می شود. به مثال های زیر توجه نمایید:

7==6?4:3   --->خروجی عدد3 می باشد چون7 مساوی 6 نمی باشد 
8==6+2?4:3 --->خروجی عدد4 می باشد چون8 مساوی 6+2می باشد
6>3?a:b --->خروجی a می باشد چون 6 از 3 بزرگتر است
a>b?a:b --->خروجی عدد بزرگتر می باشد a یا b

همانطور که در عملگرهای محاسباتی دیدیم درک تقدم عملگرها، اهمیت ویژه ای داشت در اینجا نیز دانستن این تقدم از اهمیت خاصی برخوردار می باشد، تقدم عملگرهای رابطه ای ، منطقی و شرطی به ترتیب عبارتند از:

1- !
2- => > =< <
3- =! ==
4- &&
5- ||
6- :?

به عنوان مثال مراحل بررسی عبارت مقابل به صورت زیر می باشد:

2 >= 3 && 2 == 2 || 2 != 3

جواب نهایی درست می باشد

پیشنهاد می شود برای جلوگیری از پیچیدگی فهم عبارتهای منطقی و یا محاسباتی تقدم های مورد نظر را با به کار بردن پرانتز کاملاً مشخص کنیم ، به عنوان مثال عبارت فوق را به صورت زیر مورد استفاده قرار دهیم:

(((2 >= 3) && (2 == 2)) || (2 != 3))
نظرات 1 + ارسال نظر
buyadipexa جمعه 12 تیر 1388 ساعت 20:10 http://buyadipexonline.wackwall.com/

http://buyadipexonline.wackwall.com/ Buy Adipex Online

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد