تبليغاتX
C++ آموزش

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

این عملگر ها دو مقدار را به هم مقایسه نموده و حاصل را به صورت true یا false

برمی گردانند

 

مساوی ==

مخالف =!

بزرگتر >

بزرگتر یا مساوی >=

کوچکتر <

کوچکتر یا مساوی<=

 

عملگر شرطی

دستورات…درست نبودن شرط;  دستورات اجرایی در صورت درست بودن شرط?   عبارت مورد ارزیابی

(3>1)?0:1;

برای مثال حاصل عبارت بالا صفر است

میتوان بجای صفر ویک متغییر یا عبارت محاسباتی قرارداد

یا دستور دیگری مثل چاپ یک عبارت قرار داد که در این صورت این عملگر

دیگر مقداری را بر نمی گرداند.البته بازم می تونه مقداربر گردونه ....

 

عملگر کاما

این عملگر ربطی به این مبحث نداره اینجا میگم چون خیلی جا ها می شه استفادش

کرد واگه بلدش نباشید حسابی گیج می شید.منم حالش رو ندارم ده بار جاهای مختلف

توضیح بدم .خیلی سادس اما توی دستورات مختلف می تونه گیج کننده باشه.

);عبارت n ,…,عبارت2,عبارت1)

این دستور تمام عبارات را اجرا نموده وارزش عبارت یعنی مقدار بازگشتی آن

برابر با سمت راست ترین عبارت است.

(a++,b=a,a);

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

کرد هم مقدار بر گرداند

بلاک های دستور

هر بلاک دستور قسمتی از برنامه است که کامپایلر آنها را با هم فرض می کند

دو نوع بلاک داریم نوع اول بلاک تک دستوری است که فقط یک دستور است

وبه یک سمیکالن ختم می شود نوع دوم بلاک با بیش از یک دستور است که با }

شروع وبه} ختم می شود وتمام دستور های مد نظر بین این دو قرار می گیرند

 

دستور if

این دستور ارزش یک عبارت را ارزیابی نموده بر اساس آن دستوراتی را

اجرا می نماید

(عبارتIf(

; دستور در صورت صحیح بودن ارزش عبارت

else

; دستور در صورت  نادرست بودن ارزش عبارت

 

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

چند دستوری باشند

{(عبارتIf(

.

.

.

{

else

}

.

.

.

{

 

همچنین بلاک else می تواند وجود نداشته باشد عبارت مورد ارزیابی هم

میتواند یک عدد یک مقایسه ساده یا یک مقایسه ی مرکب از عملگر های

رابطه ای و منطقی باشد

 

نکته

ارزش اعداد بزرگتراز صفر صحیح است  

 

نکته

ارزش عبارت b=a برابر به مقدار متغییر aاست

 

مثال چاپ قدر مطلق

if(a>0)

cout<

else

cout<<-a;

مثال چاپ و محاسبه ی قدر مطلق

If(a>0)

cout<

else{

cout<<-a;

{a=-a;

حلقه ی for

حلقه ای با یک یا چند اندیس.

(گام حلقه: شرط حلقه:مقدار اولیهfor(

بلاک دستور تک دستوری یا چند دستوری

 

شرط حلقه تا زمانی که درست هست حلقه اجرا میشه شرط حلقه را

میتوان به هر صورت تعریف کر حتی می شود شرطی استفاده کرد که

هیچ ربطی به اندیس حلقه نداشته باشه در حالی که پاسکال شرط حلقه را

خودش در نظر میگیرد و شما حتی نمی توانید شرط را ببینید مبتد ی ها

 هم که متوجه وجود چیزی به نام شرط نمی شوند بعد از شرط حلقه

می رسیم به گام حلقه شما می توانی با دستورات محاسباتی تعریف کنید

که اندیس حلقه چه مقدار تغییر کند حال آنکه در پاسکال مقدار پیش فرض

یک داره!!! هیچ کسی هم نمیبیندش تا زه گام حلقه و مقدار اولیه می توانند

با استفاده از عملگر کاما چند تا یی باشند مثلا می شه دوتا متغییر رو مقدار

اولیه داد بعد دو تا گام حلقه تعریف کرد و در نتیجه حلقه دو اندیسی تولید

کرد!!! کف کردید تازه میشه مقدار اولیه نداد شاید برنامه جوری بود که

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

رو ببینید و بازم کف کنید.

for(i=0;i<10;i++)

cout<

 

for(int i=0;i>-10;i--)

cout<

 

for(i=0,j=32;j>=0;j/=2,i+=j){

cout<

cout<

{

 

for(;i>-10;i--)

cout<

 

}for(int i=0;i>-10;)

cout<

i--;

}

حتی می شود حلقه while را با forشبیه سازی کرد

 

حلقه ی while

شرط این حلقه در ابتدای هر بار رجوع به ابتدای حلقه بررسی می شود

هر گاه شرط نا درست شود اجرا حلقه خاتمه می یابد

(شرط حلقهwhile(

بلاک دستور تک دستوری یا چند دستوری

 

while(a>0){

a--;

cout<

}

 

حلقه بینهابت به همراه بوق متد و مانیتوری پر از پیغام خطا برای خروج از کنترل پاوز استفاده کنید.

while(1)           

cout<<''Error!"<<'\a';

حلقه ی do while

شرط این حلقه در ابتدای هر بار رجوع به انتهای حلقه بررسی می شود

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

هر گاه شرط نا درست شود اجرا حلقه خاتمه می یابد.

do

بلاک دستور تک دستوری یا چند دستوری

;(شرط حلقهwhile(

دستورbreak

این دستور برای پرش به بیرون از حلقه ها استفاده می شود بدلایلی بهتر است

استفاده نشود و بجایش شرط حلقه را نادرست کرد اساسا دستورات پرش دار

باعث کاهش سرعت اجرا می شوند.

 

دستور continue

این دستور باعث پرش به ابتدای حلقه می شود بجای این دستور هم بهتر است

بلاک های برنامه را بگونه ای نوشت که نیاز به استفاده این دستور نباشد.

 

دودستور اخیر اگر درون حلقه های تودر تو استفاده شوند روی همان حلقه ای

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

 

دستور switch

گاهی اوقات لازم است برای مقادیر مختلف یک عبارت تصمیمات مختلفی

گرفته شود در این موارد استفاده از ifمی تواند سر در گم کننده باشد.

){عبارتswitch(

:مقدار1          case

یک یا چند دستور

          break;

:مقدار2          case

یک یا چند دستور

          break;

            .

           .

           .

         default:

یک یا چند دستور

}

این ساختار می تواند فاقد defaultباشد  دستورات این بخش در صورت درست

نبودن هیچ یک از مقادیر قبلی اجرا می شود

 

مقادیر  موجود در caseها نمی توانند برابر باشند(دو یا چند caseبا یک مقدار)

 

این دستور فقط  تساوی عبارت با مقادیررا مور بررسی قرار میدهد.

اگر در یک caseدستورbreak استفاده نشود با caseبعدی orمی شود.

در هر case  می توان ساختار switchدیگری ایجاد کرد

 

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

می توانید با عمگرهای منطقی عبارات شرطی پیچیده تری ایجاد کنید

این عملگرها شامل and or not هستند که در C++ معادلشان

! || && میباشد

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

a>0)))&&if((3>a)

اگر aبین 3و0 باشد عبارت صحیح می شود و دستورات درون بلاک

ifاجرا میشود

 

در یافت این پست به صورت پی.دی.اف

+ نوشته شده توسط سجاد مهدی بیرقدار در چهارشنبه بیست و نهم فروردین 1386 و ساعت 1:33 |

سلام

زبان C++ یک زبان ساختیافته شئ گراست (ساختیافته یعنی از توابع یا قطعه

برنامه های مختلف در کنار یکدیگر استفاده می کند و شئ گرا یعنی از توابع

بسته بندی شده استفاده میکند بعدا توضیحات بیشتری ارائه می شود)

این زبان تعدادی توابع و اشیا پیش ساخته دارد که درون فایل های سرآیند

تعریف شده اند برای استفاده از این امکانات پیش ساخته باید نام این فایل ها با

استفاده از دستور#include به برنامه اضافه نمود

>نام فایل#include<

فایل های سرآیند فایلهایی هستند با پسوند h شما میتوانید این فایلهارادر پوشه ی

کامپایلر پوشه ی lnclude بیابید.

ساختار کلی برنامه در C++

>فایل سرآیند#include<

 

int main()

{

     اعلان متغییرهای محلی

دستورات اجرایی

return 0;

}

 

در این ساختار تابع main تعریف شده. نقطه ی شروع اجرا برنامه همین تابع

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

پس از خاتمه ی اجرا برنامه می خواهد بداند که برنامه درست اجرا شده یانه خاتمه

ی برنامه دقیقا وقتی است که اجرا تابع main خاتمه می یابد میدانیم که هر تابع

می توان مقداری را به برنامه اجرا کنند باز گرداند پس تابع main می تواند

مقداری را به سیتم عامل برگرداند درساختار بالا نوع مقدار باز گشتی تابع مذکور

صحیح اعلام شده آخرین دستور آن نیز دستور returnاست که اجرای تابع راخاتمه

داده و مقدار صفر را به برنامه ی اجرا کننده(در اینجا سیستم عامل) بازمی گرداند

بااین کار سیستم عامل از اجرا درست برنامه اطمینان می یابد.

 

توجه داشته باشید که دستوراتی که با # شروع می شوند دستورات پیش پردازشی

هستند وبه سمیکالن ختم نمی شوند این دستورات قبل از ترجمه برنامه به زبان

ماشین تغییراتی در برنامه ایجاد میکنند.

 

ورودی و خروجی

اشیا cinو cout از اشیا پیش ساخته می باشند که توابع مختلفی برای مقاصد ورودی

خروجی در اختیار برنامه نویس قرار می دهند اشیا مذکور در فایل سرآیند

iostream.h تعریف شده اند بنابراین برای استفاده از آنها باید این فایل را با استفاده

 از دستور include#به برنامه اضافه نمود.

چند مثال

#include

 

int main(){

int a;

cout<<a;

cin>>a;

cout<<a*a;

return 0;

}

قبلا گفتم که C++ به متغییرها مقدار اولیه نمی دهد اگه این برنامه رو اجرا

کنید اول محتویات متغییر aچاپ میشه یعنی همان چیزی که تو حا فظه به

صورت تصادفی وجود داشته اما اگه همین کار رو با پاسکال انجام بدیت نباید

انتظاری غیر از چاپ شدن صفر داشت پس همیشه باید دقت داشته باشید که

یه وقتی متغییری بدون مقدار اولیه توی شرطها  قرار نگیره چرا که نتیجه

نا معلوم یا در اصطلاح نا معتبر است

 

بعد از چاپ محتویات متغییرa با دستور cin مقدار متغییر مذکور از کیبرد

خوانده شده و دستور بعد توان دو آن را محاسبه نموده و چاپ میکند

 

 کاراکترهای خاص

کاراکترهای خاصی به نام کاراکتر های کنترلی وجود دارند که یا کاراکتر خاصی

راچاپ می کنند یا عمل خاصی انجام میدهند این کاراکترها با \ شروع می شوند

اگر چه با بیش از یک کاراکتر نوشته می شوند اما یک کاراکتر محسوب می شوند

بنابراین برای چاپ یا انتساب این کاراترها به متغییر ها باید آنهارا بین دو کوتیشن

تکی (')قرار داد.البته از کتیشن دوتایی هم میتوان استفاده نمود با این تفاوت که

که عبارت حاصل یک رشته ی یک کارکتری است ونه یک کاراکتر

 

                             کاراکتر                           عمل

                 \f                                      انتقال کنترل به صفحه جدید

                \n                                     انتقال کنترل به خط جدید

                \t                                     انتقال به 8 کاراکتر بعد از موقعیت جاری

                \a                                     به صدا در آمدن بوق سیستم

                \b                                     Backspace

                \"                                     چاپ کوتیشن دوتایی

                 \'                                     چاپ کوتیشن تک

                 \\                                      چاپ بک اسلش

                \0                                     NULL

               \v                                      انتقال کنترل به 8 سطر بعد

                \:                                     چاپ دو نقطه

              \?                                       چاپ علامت سوال

مثال

cin>>a>>b;

cout<<a<<'\n';

cout<<b<<'\n';

cout<<'\a';

دراین مثال ابتدا مقادیر با  cin خوانده می شوند وبعد در خطوط جدا چاپ می شوند

در پایان سیستم بوق می زند

بجای '\n' می توان از endl استفاده نمود                   

 cout<

در C++ رشته ها را بین کتیشن دوتایی قرار می دهند پس برای چاپ رشته باید

بنویسیم

cout<<''C++ is a powerful language";

C++ & سالاد ونوشابه

نوبت رسیده به چند تا دستور با حال تا راحت تر بتونیم برنامه بنویسیم

اولیش تابع getch() برنامه وقتی به این تابع می رسه منتظر می مونه تا کاربر

یک کلید رو فشار بده تازه کد کلیدی که فشرده شده رو هم بر میگردونه می تونید

از این تابع در انتهای برنامه استفاده کنید تا بتونید خروجی برنامه رو قبل از

خروج از صفحه ببینید.

دومیش تابع clrscr() که خیلیم تابلو که صفحه نمایش رو پاک میکنه

سومیش تابع  ( gotoxy(int x,int y که موقعیت جاری مکان نمارو تغییر می ده

تمامی این توابع در فایل سرآیندconio.h  قرار دارند. می دونید که معنیش چیه؟

اگه نمیدونید!!!! این جلسه رو از اول بخونید.

#include

#include

 

int main(){

char kb;

cout<<"ye mesal";

gotoxy(10,5);

cout<<''**********";

 kb=getch();

cout<<''You Pressed "<

cout<<'' Press any key to clear screen";

getch();

clrscr();

 cout<<'' Press any key to Exit";

getch();

return 0;

}

یک مثال محاسباتی نکته دار

می خواهیم یک عدد ارز کاربر بگیریم نصفش را محاسبه و چاپ کنیم

#include

#include

int main(){

int a;

float b;

cin>>a;

b=a/2;

cout<

getch();

return 0;

}

حالا اگه کاربر یک عدد فرد مثلا سه وارد کند خروجی برنامه یک خواهد بود

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

است در این مثال میبینید که حتی با تعریف متغییر b بعنوان ممیز شناور

مشکل همچنان پا بر جاست زیراکه حاصل تقسیم صحیح است وبه نوع متغییر

مربوط نمی شود برای حل مشکل باید بنویسید b=static_cast(a/2);

به این عمل تغییر نوع  یا type casting میگویند که برای کامپایلر نوع عبارت

را تعریف میکند. من از این دستور استفاده کردم اما در توربو سی سه کار نکرد

 بجای آن از دستور

b=(float)a/2;استفاده کردم که از دستور های زبان cاست . این کامپایلر زیادی قدیمی بهتر یه بهتر شو گیر بیارید. مثلا Borland C++ 5.02یا visual c++ 6 که البته

این مورد آخر دستور های مد گرافیک رو اجرا نمی کنه.

در یافت این پست به صورت پی.دی.اف

+ نوشته شده توسط سجاد مهدی بیرقدار در پنجشنبه بیست و سوم فروردین 1386 و ساعت 11:45 |

سلام

همه جا اول از شناسه ها متغییر ها و... شروع می کنن اما من میگم اول باید

یه Compiler خوب پیدا کنیم بعد باید باهاش دوست بشیم ورفتاراش و

منظورهاش رو بفهمیم.

خب لینک کامپایلر رو براتون گذاشتم که می تونید دانلود کنید.

بدیش این که ورژنش یکم پایین و محیطش داس اگه ویندوز 98 یا ME دارید

از سیستم عامل های ذکر شده استفاده کنید چون ویندوز ایکس پی با برنامه

های داسی قدیمی یکمی مشکل داره وسرعت سیستم عامل رو میاره پایین.

دانلود ونصب

بعد ازدانلود با استفاده از برنامه فشرده سازی WinRAR کامپایلر را از حالت

فشرده خارج کنید فایل install.bat را اجرا کنید کامپایلر در پارتیشن C نصب

خواهد شد.

برای ورود به محیط کامپایلر C:\TC\BIN\TC.EXEرا اجرا نمایید

 

به نظر من این کامپایلر کامل هستش وتمام دستورات از جمله وقفه ها و دستورات مد گرافیک

رو اجرا می کنه.

 

نکاتی مهم:

 

لازم بگم که کامپایلر های بور لند خطاها ی برنام رو یه خط بالا و پایین نشون می ده!!!

 

این زبان به حروف کوچک و بزرگ حساس است معنیش این که اگه بجای تابع

coutبنویسید Cout  کامپایلر خطا می گیره وبعد چند ساعت تازه می فهمید که

مشکل چیه خب البته کامپایلر هم حق داره چون این زبان این دو عبارت رو دو

شناسه و در نتیجه دو تابع مختلف شناسایی می کنه در حالی که Cout وجود

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

 

وجود خطا در برنامه طبیعی و لازم است (البته تا وقتی که بدست کاربر نهایی

نرسیده) پس با دیدن حتی چهلتا خطا هم نباید ناراحت شد باید پیغامها رو خواند

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

فراموش شده ممکن سه تا خطای نامربوط ایجاد بشه و پیغامهای عجیبی ببینید

که بعد از یه مدت بهش عادت میکنید و پیغام ها و معانیشون رو دستون میاد.

 

بخوانیم یا بنویسیم؟       جونم !!!   بخوانید و بنویسید.

بعضی ها کتاب می خواند بعد دوباره می خوا نند وبازهم میخوانند آخ که چقدر

زحمت می کشند جدی می گم ها اگه فقط نصف وقتی که برای خواندن صرف

میکنن رو روی برنامه نویسی عملی روی کامپیوتر صرف کنن با زحمتی کمتر

بیشتر یاد میگیرن می دونید برنامه نویسی هم مثل ریاضی هر چقدر بخوانید

بازهم نمی تونید تمرین حل کنید مگر اینکه.... تمرین زیاد حل کنید.

 

چه کتابی بخوانیم:

الان که دارم اینو تایپ میکنم کتاب برنامه نویسی پیشرفته نوشته ی داریوش

نیک مهر دستم اما کتاب دکتر فراهی رو هنوز ندیدم کتابی که در دست دارم

نیاز به یک استاد برای تدریس دارد و مطالب مبحث فایل ها درآن ذکر نشده

احتمالا با خواندن کتاب دکتر فراهی و این کتاب می توان تمام مطالب رو یاد

گرفت.اما اگه دنبال منابع دیگری هم می گردید من کتاب های CوC++

مهندس عین الله جعفر نژادقمی رو به شما معرفی میکنم اولیش آموزش C

هست بعلاوه گرافیک و وقفه ها برنامه نوبسی سیستمی که این قسمتش بیشتر

برای ترم بعد مفید ودومیش کتاب آموزشی C++ هست که خیلی جامع هست

و مطالبی خارج از کتاب داره که یاد گیریش برای یک مهندس بعنوان یک

زبان بسیار مطرح مهم( البته C++ داره جا ش رو به C# می ده اما نه کاملا)هست

لازم بگم که مطالب این کتاب اگر چه راجع بهC++ اما مفاهیم مهمی داره

که در بیشتر زبانها وجود داره آخرش این که اگه C++رو فهمیدید یادگیری

بقیه زبان ها براتون خیلی کاری نداره.

 

پیش به سوی C++

 

شناسه ها

تمام کلمات شامل نام توابع نام متغیر ها و... شناسه هستند نام گذاری این

شناسه ها قوانینی دارد

1.شامل کرکترها A-Z a-z اعداد و زیر خط _میباشند

2.بااعداد شروع نمی شوند و بهتر است به _ نیز شروع نشوند

 

انواع متغیرها

انواع پایه (یعنی انواعی که انواع داده ای جدید از آنها ساخته میشوند)در C++

در این جدول معرفی شده نوع bool نیز در برخی کامپایلرها با قا بلیت ذخیره

مقادیر  falseو trueقرار داده شده

 

با استفاده از کلمات

         signed unsigned short long

می توانید انواع جدیدی ایجاد کنید

long بازه مقادیر را بزرگتر می کند و unsigned با در نظر نگرفتن مقادیر

منفی بازه مقادیر را دو برابر می کند.قبل از استفاده از این پیشوندها باید کمی

فکر کرد تا عبارات بی مورد یا خطا ساز بکار نرود مثلا

signed int  بی مورد است چون با توجه به جدول بالا همان int است

یا long char بی معناست زیرا کاراکتری با کد بزرگتر از 255 نداریم

 

نکته :

بازه ی مقدار char عددی اعلام شده زیرا فقط عدد است که در حافظه ذخیره

می شود واین برنامه است که این اعداد را به صورت کاراکتر نمایش میدهد

همجنین نوع unsigned char  مقادیر 0 تا 255 را که همان کد های کاراکتر

ها میباشد را ذخیره می کند از نظر کار با کاراکترها دو نوع مذکور تفاوتی

ندارند اما اگر بخواهیم با کد کاراکترها کارکنیم اهمیت محاسباتی می یابد.

 

اعلان متغیر ها

; نام متغیر  نوع داده ای

int a;

long int b,c;

char d;

در C++ متغییر ها مقدار اولیه ندارند یعنی محتویات متغیر های تعریف شده

در بالا بلافاصله بعد ازتعریف هر چیزی میتواند باشد در حالی که پاسکال

خودش بلا فاصله بعد از تعریف متغییر به همه آنها مقدار اولیه ی صفر می دهد

توجه کنید که مقدار اولیه ی صفر برای متغییر کاراکتری یعنی کاراکتی با کد

صفر و منظور کاراکتری که نمایانگر صفر عددی است وکد آن 48 است نیست

منظور یک بایت حافظه است که هر 8 بیت آن صفر شده به این کاراکتر با کد

صفر NULL می گویند.

برای مقدار اولیه دادن به متغیر ها می توانید به صورت زیر عمل کنید

int a=0;

long int b=0,c=135;

char d=’A’,e=65;

برای مقدار دهی به متغییر های کاراکتری یا باید کاراکتر مد نظر را بین’’

قرار بدید یا مستقیما کد کاراکتر را به متغییر انتساب بدید.

در مورد رشته ها هم فعلا فقط یه اشاره می کنم که آرایه ای از کاراکترهاست

مثل پاسکال اما در پاسکال طول رشته در خانه ی صفر آرایه ذخیره میشد

C++ برای تعیین طول رشته انتهای رشته را با کاراکتر NULL می بنده

و تعیین میکند.

چرا باید طول رشته تعیین شه؟

برای چاپ رشته روی مانیتور نمی شه که همین جوری محتوای حافظه رو

چاپ کرد برنامه باید بدون چند کاراکتر رو چاپ کنه تا کار بر با مانیتوری

پر از چیزهای عجیب وناخوانا(محتویات حافظه به زبان ماشین)روبرو نشه

که البته این فقط یکی از جواب های این سوال

 

لطفا خودتون انواع عملگر ها و ترتیب اجراشون ورو مطالعه کنید بهتر حفظ

هم کنید من که حفظ نیستم حفظمم نمیشه

 

دانلود کامپایلر

 

نظر یادتون نره  سوال جواب مشکل ... در خدمتیم

+ نوشته شده توسط سجاد مهدی بیرقدار در سه شنبه چهاردهم فروردین 1386 و ساعت 23:29 |