120
برنامه زبان سازیC++ مؤلف فرشید شیرافکن: دانشجوی دکتر ا ینفورماتیک بیوا تهراننشگاه دا ناش ر: ادرسی آموزش فران علم سازم آموزش آنگترین پلتفرم بزر ایران ین وب: www.faradars.org

فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

سازیزبان برنامه

C++

: فرشید شیرافکن مؤلف

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

سازمان علمی آموزش فرادرس :رناش

ین ایرانالبزرگترین پلتفرم آموزش آن

www.faradars.org :وب

Page 2: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 2برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

تقدیم به:

روح پاک پدرم

فرشید شیرافکن -

Page 3: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 3برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

سخن ناشر

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

تمرکری و مآزمرون کیرارشرد بره عنروان یکنکور کارشناسر ژهیبه و را کنکور، موضوع نیهم .سؤاالت باشد؛ ارائه نشده است

.کندیبرخوردار م یدو ندان تیهماز ا ،یسراسر

یرعت از فضاسمؤسسات زونازون، به جادیآن با ا یرقابت یاست که فضا نیا یآزمون سراسر نیهمراه با ا یهابیاز آس یکی

و منابع مرت ط با هاها، دورهسرسام آور کالس نهیهی که یابه زونه ؛شودیم یرقابت اقتصاد یبه فضا لیت د یرقابت علم کی

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

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

.ابندییدست نم دند،یرسیبه آن م دیهمه با یبرا

جرادیر، ااجررا شرده برر بسرتر وو کشرو یپرروهه آمروزد دانشرگاه نیترفرادرس به عنوان بیرگ یهااز اهداف و آرمان یکی

یکرار سرتایبوده است. س انیدانشجو یلزمان و سطح ما ا،یبه آموزد و دانش؛ مستقل از جغراف کسانیو یهمگان یدسترس

سیبرا تردر ،نرهیکر هی اریبسر ایو گانیرا یو دانشگاه یتخصص ییدئویو یهاانتشار آموزد، آرمان نیا یفرادرس در راستا

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

نآرمرا راسرتای رد را خرود هرای دیگرر ی از زرامیک( گرید گانیبه ده کتاو را کیکتاو )به همراه نید نیا گانیبا انتشار را ما

در اشد؛بیمؤلف و مدرس فرادرس م فیو پژوهش و تأل سیدهه تدر کیبه کیکتاو حاضر که حاصل نید .برداشتی فرادرس

، بره به عنوان ناشر فرادرس یزذارهیو سرما یمال نیانتشار و فرود؛ با تأم یجا هب ،یسازو آماده فیتأل یباال یهانهیهی نیع

کتراو کیرشرده یحت ، یکرد که تا هر جا بتوان یتالد خواه یین یبعد یها. ما در زامشودیمنتشر م گانیصورت کامالً را

. یکن منتشر گانیکرده و به صورت را یآزادساز نه،یرا با پرداخت هی شتریو ب گریمرجع د

لیررمیبررا ا تواننررد یمرر را دارنررد،ادرس حررا انتشررار کترراو خررود برره فررر یبرره وازررذار لیررکرره تما ینیو ناشررر نیمررؤلف

[email protected] گرانیرت رابره مردرس و ناشرر، بره صرو فیتأل نهیها را با پرداخت هیکتاو نی. ما اندیمکات ه نما

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

rs.orgebooks@farada لیمیا با که آن را یشویخوشحال م د،یفرادرس داشته باش گانیرا یهادر خصوص کتاو یو نظر

.دیینما مطرح

سازمان علمی آموزش فرادرس

بزرگترین پلتفرم آموزش آنالین ایران

dars.orgawww.far وب:

Page 4: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 4برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

منبع مطالعاتی تکمیلی مرتبط با این کتاب

C++برنامه نویسی ویدئویی آموزش

باال اریبس یسینوبرنامه یهازبان انیدر م Cزبان ++ تیعمومود و زرفته ش ادی ییزبان ن نیتواند به عنوان اول می است و ن اشد. اجیاحت گرید ازین شیبه پ

فرض نی، با ا++C یسینوبرنامه یآموزش یهال یمجموعه فدر یدانش و تجربه ق ل چیشده است که مخاطب ه هیتهه هم ،یمجموعه آموزش نیدر او دندار یسینوبرنامه نهیزم

یسازادهیو سپس با پ ینظر یم ان حیو تشر انیم احث با ب نیشوند و از امی ادهآموزد د یعمل یهازام به زام مثال

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

افکن ریش دیمهندس فرش مدرس:

ساعت 2۰ مدت زمان:

faradars.org /fvcp9504 کلیک کنید –این آموزش یی دئویآموزش وشاهده جهت م

درباره مدرس

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

یارائه و آموزد دروس دانشگاه نهینمونه در زم نیاز مدرس شانیهستند. ا اند.انتخاو شده

کنکور رشته نهیکتاو در زم 3۰از شیمشاور کنکور هستند و ب شانیاایشان در حال حاضر به عنوان یکی از برترین مدرسین اند.نموده فیلأت وتریکامپ

عنوان درسی را در قالب آموزد ویدئویی از 2۰ فرادرس از جهت کمیت و کیفیت دروس ارائه شده، نیدیک بهدانشجوی سراسر کشور قرار ها هیار اند. این مجموعه دروس تا کنون مورد استفاده دهطریا فرادرس منتشر کرده

.زرفته اند کلیک کنید. -لف کتاب مؤموزش های تدریسی و تالیفی توسط مشاهده همه آ

Page 5: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 5برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

)+( دیکن کیکل - نیو ماشها زبان هینظر آموزش .1

)+( دیکن کیکل - سی پالس پالسدر ییگراءیش آموزش .2

)+( دیکن کیکل - هاداده گاهیپا آموزش .3

)+( دیکن کیکل - هاساختمان داده آموزش .4

)+( دیکن کیکل - عامل ستمیس آموزش .5

)+( دیکن کیکل - اطالعات یابیو باز رهیذخ آموزش .6

برای دانلود رایگان این مجموعه کتب، به لینک زیر مراجعه کنید:

exam-engineering-http://faradars.org/computer

Page 6: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 6برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

:فرادرس، در ادامه آمده است یهاآموزش یموضوع یبنددسته

–برنامه نویسی

کلیک )+(

آموزش های دانشگاهی و

کلیک )+( –تخصصی ی و یادگیری هوش مصنوع

کلیک )+( –ماشین مهندسی برق الکترونیک و

کلیک )+( –روباتیک

–دروس دانشگاهی

کلیک )+(

–مباحث مشترک

کلیک )+( –مهارت های دانشگاهی

کلیک )+( –نرم افزارهای تخصصی

یک )+(کل

کلیک – مهندسی نرم افزار

)+(

–نرم افزارهای عمومی

کلیک )+( –طراحی و توسعه وب

کلیک )+( –آموزش های عمومی

کلیک )+(

Page 7: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 7برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

فهرست مطالب

و...... رودی و خروجیدستورات و -انواع عملگرها -: انواع داده ها 1فصل

.......... .......: دستورات شرطی و تکرار.................................................... 2فصل

........................رشته................................................................ -: آرایه 3فصل

...................... ..ونیون............................ی -استراکچر -: نوع شمارشی 4فصل

..............................................................................: اشاره گر................ 5فصل

..............................: تابع........................................................................ 6 فصل

Page 8: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 8برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

: 1فصل

یدستورات ورودی و خروج –انواع عملگرها –انواع داده ها

مقدمه

ابعی زبران توسط دنیس ریچی طراحی زردید. این زبان، عناصر زبانهای سطح باال را برا خصوصریات تر 197۰در سال Cزبان

نامند. را یک زبان میانی می Cاسم لی دره آمیخته است و به همین علت زبان

می شود. یک ( استفادهobjectود از شیء )، استفاده می کند. در این ر (OOP)از شیوه برنامه نویسی شی ء زرا ++cزبان

وسرط ت 1983در سرال ++cشیء دارای یک سری متغیر و توابع است که برای شی ء های دیگر شناخته شده نیسرت. زبران

زیرر اسرت دارای سه ویژزی مه به قرار oopاستاندارد شد. هر زبان ANSIتوسط 1994استروستراپ ابداع شد و در سال

ی بعدی به آنها می پردازی :که در فصل ها

(Polymorphism)پلی مورفیسم -1

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

(Encapsulation) کپسوله سازی -2

جی.ی خارکنار ه قرار دادن کد و داده هایی که این کدها با آنها کار می کنند و حفظ آنها از دخالتها

(Inheritance) ارث بری -3

به دست آوردن خصوصیات یک شیء توسط شیء دیگر.

111)))

انواع داده ها

دیر صرحیح از نروع . برای ذخیره مقا void, double, float, int, charپنج نوع داده اصلی وجود دارد که ع ارتند از: Cدر زبان

int و برای مقادیر اعشاری از نوعdouble,float از نوع و برای ذخیره کاراکترهاchar شرود. در رابطره برا استفاده میvoid در

فصل تابع و اشاره زر صح ت خواهد شد.

ی ایرن اصرالح می توان نوع های دیگری نیی ساخت. تمام signed, unsigned, long , short تذکر: با استفاده از کلماتی مانند

فقرط double و برر روی unsignedو signedاصالح کننده هرای charبه کار روند. بر روی نوع intکننده ها می توانند با نوع

long .را می توان به کار برد

برای ذخیره مقادیر منطقی وجود دارد. boolداده ای به نام ++Cدر زبان

بیتی می توان استفاده کرد. 16برای ذخیره کاراکترهای wchar_tاز نوع ++cدر

دهد: ش میجدول زیر انواع داده ها را نمای

Page 9: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 9برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

نوع اندازه)بایت( بازه قابل قبول

char 1 128-تا 127

unsigned char 1 255تا 0

int 4یا 2 32768-تا 32767+

unsigned int 4یا 2 65535تا 0

+ 2میلیارد تا -2تقری اً

میلیارد4 long int

4 float 8 double

10 long

double

بایت است. 4بیتی برابر 32حیطهای در م intاندازه

است. intهمان signed intنوع

است. charهمان signed charنوع

ت است.قرق د 1۰دارای doubleرق دقت و نوع 6دارای floatنوع

المت است.بایتی بدون ع 4یک عدد unsigned long intمی توان ند اصالح کننده را با ه ترکیب کرد. مثال نوع

بعد از عردد Lمحسوو شود. کافی است که از حرف longبه عنوان یک 2۰می توان کاری کرد که عدد کو کی مانند

استفاده کنی . ;long int a=20Lبه صورت

اعالن ثوابت

د: می شو ثابت مقداری است که در طول اجرای برنامه قابل تغییر نمی باشند. برای اعالن ثابت به دو رود عمل

;const :const int x =5توسط دستور -1

define :#define Y 2#توسط دستور -2

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

دارد. ندر برنامه قرار بگیرد و این دستور در زمان اجرا وجود Yابت به جای ث 2برنامه توسط کامپایلر، مقدار

رنامره، آنهرا را برا تعریف می شوند، ماکرو می زویند و برای تفکیک آنهرا از متغیرهرای ب defineتذکر: به ثوابتی که با دستور

حروف بیرگ نمایش می دهی .

Page 10: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

تبدیل نوع

ا شوند، نوع هایی با طول کو کتر به نروع هرایی برع ارت با یکدیگر ترکیب میوقتی که متغیرهایی با نوعهای مختلف در یک

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

بره intزد متغیرر شود، بایت ک ارانتساو داده می charبه یک متغیر intاست اطالعاتی از بین بروند. مثالً وقتی یک متغیر

رود.منتقل شده ولی بایت با ارزد از بین می charیک متغیر

)کد اسکی کاراکتر 35مقدار ;'char ch='5برای ذخیره سازی کاراکترها، کد اسکی آنها ذخیره می شود. مثال با تعریف

ذخیره می شود. ch( در متغیر 5

نمایید؟نوع نتیجه ع ارت زیر را مشخص

float f;

char ch;

double d;

(f+ch)-(f*d)

است: doubleحل: نوع نتیجه ع ارت،

doublefloat

d)(fch)(f

double

بعد از اجرای دستورات زیر ه مقداری در ch زیرد؟قرار می

int i=65; char ch;

ch= i;

است.( 65برابر Aد.)کد اسکی کاراکتر زیرقرار می Aحل: کاراکتر

عملگرها

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

( ++ , --, % , /,*, -, +محاس اتی ) -1

(< , > ,=< ,=> ,== ,=! )رابطه ای -2

(&& ,|| , !)منطقی -3

( (&, | ,~ ,^, << بیتی -4

( ,عملگر کاما ) -5

(?)عملگر شرطی -6

( =ملگر ترکی ی ) ترکیب عملگرهای محاس اتی و عملگر ع -7

Page 11: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 11برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

وجود دارد، که در م حث اشاره زر ها بررسی می شوند. *، &ال ته عمگرهای دیگری مانند تذکر:

در نظر زرفته می شود. TRUEفر به منیله و هر مقدار غیر ص FALSEمقدار صفر به منیله

( دو ||)عملگرر or( دو ع ارت وقتی درست است، که هر دو ع ارت درسرت باشرند و حاصرل &&)عملگر andحاصل

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

اولویت عملگرهای رابطه ای باالتر از عملگرهای منطقی است.

عملگرها جدول تقدم

[ ] ) ( باالترین اولویت

! ++ -- * & sizeof

* / %

+ -

<< >>

< <= > >=

== !=

&

&&

?

= += -= *= /=

کمترین اولویت ,

مثالهایی از کاربرد عملگرهای محاسباتی

بعد از اجرای دستورات زیر مقدارx وy ه خواهد شد؟

x = 5;

y = --x;

خیره می شود.ذ 4هر دو متغیر مقدار ذخیره می شود. بنابراین در yیک واحد ک شده و سپس در متغیر xحل: ابتدا مقدار

بعد از اجرای دستورات مقدارx وy ه خواهد شد؟

x = 5;

y = x--;

خواهرد 4برابرر xو مقدار 5برابر yشود. در نتیجه مقدار ک می xشده و سپس یک واحد ازمنتقل yبه xحل: ابتدا مقدار

شد.

Page 12: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 12برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

ر بعد از اجرای دستورات زیر مقداx وy ه خواهد شد؟

x = 5;

y = ++ x * x;

خواهد 36برابر yار و مقد 6برابر xقرار می زیرد. در نتیجه مقدار yدر 66شده و سپس حاصل 6برابر xحل: ابتدا مقدار

شد.

بعد از اجرای دستورات زیر مقدارx وy ه خواهد شد؟

x = 5;

y = ++ x * ++x;

قرار می زیرد. yدر 49یعنی 77شده و در نهایت حاصل 7شده و سپس برابر 6برابر xحل: ابتدا مقدار

بعد از اجرای دستورات زیر مقدارx وy ه خواهد شد؟

x = 5;

y = ++ x * x++;

.خواهد شد 7برابر xقرار زرفته و در نهایت مقدار yدر 66شده و سپس حاصل 6برابر xحل: ابتدا مقدار

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

4 % 3 = 1 , 4 % -3 = 1 , -4 % 3 = -1 , -4 % -3 = -1

، با عالمت عملوند اول یکسان است و به عالمت عملوند دوم بستگی ندارد. %تذکر: عالمت نتیجه عملگر

تیمثالهایی از کاربرد عملگرهای بی

عملگر 3 | 129حاصل(را بدست آورید؟or )بیتی

129 = 10000001

3 = 00000011

---------------------

10000011=131

بیت وقتی یک است که حداقل یکی از آنها یک باشد. 2برای orحل: نتیجه

عملگر 3 ^ 129حاصل( را بدست آورید؟xor )بیتی

129 = 10000001

3 = 00000011

---------------------

10000010=130

Page 13: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 13برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

عملگر 3 & 129حاصل( را بدست آورید؟and )بیتی

129 = 10000001

3 = 00000011

------------

00000001=1

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

بعد از اجرای دستورات زیر مقدارx )ه خواهد شد؟ ) عملگر شیفت به راست

x = 96;

x=x >> 2 ;

خواهد شد. 24تقسی شده و حاصل برابر 4بر 96است. بنابراین 2حل: هر شیفت به راست معادل تقسی بر

از اجرای دستورات زیر مقدار بعدx )ه خواهد شد؟)عملگر شیفت به پ

x= 14;

x=x<<3;

ده و ضرو شر 8در 14است. بنابراین 8است و سه شیفت به پ معادل ضرو در 2حل: هر شیفت به پ معادل ضرو در

x می شود. 112برابر

عملگر شرطی

دهد: ر نس ت میاین عملگر با تست یک شرط، مقداری را به یک متغی

x = exp1 ? exp 2: exp3;

زیررد و ازرر قررار می xبعد از ارزیابی در exp2ود، مقدار بشود و ازر دارای ارزد درست ارزیابی می exp1یعنی ابتدا ع ارت

قرار می زیرد. xبعد از ارزیابی در exp3نادرست بود، مقدار

بعد از اجرای دستورات زیر ه مقداری درx زیرد؟قرا ر می

x = 5 > 2 ? 100: 20 ;

قرار می زیرد. xدر 1۰۰، درست است و مقدار ع ارت اول یعنی 2<5حل: حاصل ع ارت

عملگر کاما

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

x = (exp1 , exp2);

Page 14: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 14برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

برا exp2و exp1شود. در این نوع موارد معموالً منتقل می xبه متغیر exp2 ارزیابی شده و سپس نتیجه ارزیابی exp1ابتدا

زیرد. قرار می xدر متغیر 5یکدیگر ارت اط دارند. بعد از اجرای دستور زیر، مقدار

x = (a=2 , a+3);

حاصل ارزیابی ع ارت زیر یست؟

9 > 4 || !(5 <7 ) && 8 <=9

است: (True)حل: حاصل ارزیابی ع ارت ،

TFT

98&&7549 )(!

F

T

کوتاه نویسی

استفاده کرد. ;x+ =3از دستور ;x= x+3ه جای دستور توان از کوتاه نویسی استفاده کرد. مثالً بمی

با فرضx=5 وy=2 مقدار متغیر ،y بعد از اجرای دستورy *= x-2 ; ه خواهد شد؟

د:خواهد ش 6شود و حاصل برابر حل: در واقع ع ارت به صورت زیر ارزیابی می

y = y* (x-2) = 2*(5-2)=6

Page 15: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 15برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

cin , coutدستورات

ی شرود. بره اسرتفاده مر coutو برای نمایش اطالعات در خروجری از cin، برای خواندن اطالعات از ورودی از دستور ++cدر

تفاده مری شرود. اسر coutاز دستور printfو به جای استفاده از دستور cinاز دستور scanfبه جای استفاده از دستور ع ارتی

دو دستور خواندن زیر معادل می باشند:

scanf("%d%d",&x,&y);

cin>>x>>y;

دو دستور اپ زیر معادل می باشند:

printf("%d%d",x,y);

cout<<x<<y;

، داده ها را از ورودی می خواند. spaceتا رسیدن به cinدستور

و یا کاراکتر مشخص شده، داده ها را از ورودی می خواند. تابع enterتا رسیدن به ( )cin.getدستور

get( ) عضو شیء ،cin .است

: cinمثالهایی برای

ازر از ورودی reza ali وارد شود، فقط رشتهali در متغیرs :ذخیره می شود

char s[10]; cin>>s;

استفاده کرد. cin.getذخیره شود، باید از دستور sدر متغیر ali rezaازر بخواهید کل رشته

ازر از ورودیabcd وارد شود، فقط رشتهab در متغیرs :ذخیره می شود

char s[10]; cin.get(s,10,'c');

در صورت ورود کاراکترA در 65، کد اسکی آن یعنیx :ذخیره می شود

int x; x=cin.get( );

در صورت ورود رشتهali فقط کاراکتر اول آن یعنی ،a در متغیرs :ذخیره می شود

char s; s=cin.get( );

ت وارد کردن در صورEnter است 10خروجی:

cout<<cin.get( );

می باشد. 1-، خروجی ctrl+zتذکر: پس از وارد کردن

Page 16: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 16برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

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

cout<<(cin.get( ) +cin.get( ) +cin.get( ) );

می باشد. 30حل : خروجی

می باشد. 3-، خروجی ctrl+zز وارد کردن یک تذکر: بعد ا

Page 17: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 17برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

: coutمثالهایی برای

توسط دستور زیر یک رشتهali اپ شده و در خط بعد رشته reza :می باشد

cout<<"ali"<<endl<<"reza"; استفاده کرد. "n\"می توان از endlتذکر: به جای

توسط دستور زیر رشتهok آن اپ می شود:فاصله ق ل از 4با

cout.width(6);

cout<<"ok";

د، به جای فاصله خالی، کاراکتر خط تیرره راپ خواهرد ق ل از دستورات باال استفاده کنی ;('-')cout.fill تذکر: ازر از دستور

شد.

می باشد: 1.20000خروجی دستور زیر

cout.setf(ios::showpoint);

cout<<1.2;

خواهد بود. 1.2ور اول استفاده نشود، خروجی تذکر: ازر از دست

یعنی 16در م نای 1۰برای اپ عدد(A: از دستور زیر استفاده می کنی )

cout<<hex<<10;

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

cout.setf (ios::hex); cout<<10;

دستور زیر استفاده می کنی :( از 12)یعنی 8در م نای 1۰برای اپ عدد

cout<<oct<<10;

می باشد: 1-خروجی دستور زیر

cout<<EOF;

خروجی ه می باشد؟

char c=EOF;

cout<<c<<'a';

با یک فاصله خالی ق ل . aحل: اپ کاراکتر

خروجی ه می باشد؟

cout<<EOF<<'a';

Page 18: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 18برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

می باشد. 1a-حل: خروجی

می باشد. aبرابر ;cout.put('a')است. خروجی دستور cout، عضو شیء ( )put تذکر: تابع

مری باشرد. هنگرام اسرتفاده از ایرن ostream، شیئی از کرالس coutو دستور istream، شیئی از کالس cinدستور

کرد. includeرا در ابتدای برنامه <iostream.h>دستورات باید فایل

Page 19: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 19برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

خروجی یست؟ int x=3;

cout<<(x=0);

است.)ازر پرانتی برداشته شود، خطا دارد.( 0حل: خروجی

خروجی یست؟ int x=3;

cout<<(x=0)<<(x==0);

است.)ازر پرانتیها برداشته شود، خطا دارد.( 00حل: خروجی

خروجی یست؟ int x=0;

cout<<(x=0)<<(x==0);

است. 01حل: خروجی

خروجی یست؟ int x=4;

cout<<(x==0)<<(x=0);

است. 10حل: خروجی

خروجی یست؟ int x=0;

cout<<(x==0)<<(x=0);

است. 10حل: خروجی

می توان از آنها استفاده کرد، آورده شده است: coutلی که در در جدول زیر کاراکترهای کنتر

عملکرد کاراکتر عملکرد کاراکتر

\n انتقال کنترل به خط بعد \b حذف کاراکتر ق لی

\r انتقال کنترل به اول خط \ ( اپ دابل کوتیشن )

\t اپ کاراکتر \\ محل بعدی 8انتقال کنترل به \

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

Page 20: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 2۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

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

cout<<"abc"'<<'\r'<<'d'; dbc

cout<<"abc"'<<'\b'<<'d'; abd

cout<<'a'<<'\t'<<'b'; a b

خروجی ه می باشد؟

cout<<strlen("'\n'");

می شود.( یک کاراکتر محسوو n\می باشد. ) 3طول رشته ورودی را محاس ه می کند. بنابراین خروجی strlenحل: تابع

Page 21: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 21برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

ایتوابع کتابخانه

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

عملکرد نام تابع

abs(x) محاس ه قدر مطلا عدد صحیحx

fabs(x) محاس ه قدر مطلا عدد اعشاری x

sqrt(x) محاس هx

pow(x,y) محاس هyx

ceil ف(محاس ه کو کترین عدد صحیح بیرزتر یا مساوی با عدد ورودی ) سق

floor )محاس ه بیرزترین عدد صحیح کو کتر یا مساوی با عدد ورودی ) کف

exp(x) محاس هxe که (e )همان عدد نپر است

log(x) محاس ه لگاریت در م نایe یعنیlnx

log10(x) یعنی 10محاس ه لگاریت در م نایlogx

fmod(x,y) محاس هx mod y

modf جدا کردن قسمت صحیح و اعشاری یک عدد

ldexp(a,b) محاس هba 2

tolower(ch) ت دیل کاراکترch به حروف کو ک انگلیسی

toupper(ch) ت دیل کاراکترch به حروف بیرگ انگلیسی

isalnum(ch) ر مری را بر از حروف الفیا یا ارقام باشد، مقرداری غیرر صرفر chازر کاراکتر

زرداند.

isalpha(ch) ازر کاراکترch زرداند.از حروف الف ا باشد، مقداری غیر صفر را بر می

isascii(ch) باشرد، مقرداری غیرر صرفر را برر ox7fدر برازه صرفر ترا chازر کراراکتر

زرداندمی

isdigit(ch) ازر کاراکترch زرداندبرمیباشد، مقداری غیر صفر را 9تا ۰یکی از ارقام

islower(ch) باشررد، مقررداری غیررر صررفر را zتررا aاز حررروف کو ررک chازررر کرراراکتر

زرداند.برمی

isupper(ch) باشررد، مقررداری غیررر صررفر را Zتررا Aاز حررروف برریرگ chازررر کرراراکتر

زرداند.برمی

isspace(ch) ازر کاراکترch داند.زراز فضاهای خالی باشد، مقداری غیر صفر را برمی

Page 22: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 22برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

atof(s) ت دیل رشته عددیs بهfloat

atoi(s) ت دیل رشته عددیs بهinteger

atol(s) ت دیل رشته عددیs بهlong

:خروجی هر تابع، در مقابل آن نوشته شده است pow (10,2) =100 ceil (9.8) =10 ceil (-9.8) =-9 floor (9.8) =9

floor (-9.8) =-10 log10(100) =2 log(exp(x)) =x ldexp(4,3)=4*32 =32

Page 23: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 23برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

مثال های حل شده در مجموعه آموزشی فرادرس

#include <iostream>

#include <conio.h>

using namespace std;

main( ) { cout<<"hello"<<'\a';

} ///////////////////////// main()

{ int a;

cout<<"enter a:";

cin>>a;

cout<<2*a;

} ///////////////////////// main()

{ int a,b;

cout<<"enter a:";

cin>>a;

cout<<"enter b:";

cin>>b;

cout<<a+b;

} ///////////////////////// main()

{ char ch;

ch='A';

cout<<ch+1;

} ///////////////////////// main()

{

Page 24: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 24برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

int a,b;

a=5;

b=4;

cout<<++a*--b;

} ///////////////////////// main()

{ int a,b;

a=2;

b= ++a * a++;

cout<<b;

} ///////////////////////// main()

{ int a=2;

int b;

b=++a * a;

cout<<a;

cout<<endl;

cout<<b;

} ///////////////////////// main()

{ int a=4;

int b;

b= --a * a--;

cout<<b;

} ///////////////////////// main()

{ int a=2;

int b=3;

cout<<(a<b);

} /////////////////////////

Page 25: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 25برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

main()

{ bool a,b;

a=true;

b=false;

cout<<(a || b );

} ///////////////////////// main()

{

int x,y;

x=8;

y=x<<1;

cout<<y<<endl;

int z;

z=x>>1;

cout<<z;

} ///////////////////////// main()

{ int x=6;

int y=0;

int z=x && y;

cout<<z;

} ///////////////////////// main()

{ int x=8;

int y=4;

z= x>y ? x : y;

cout<<y;

} ///////////////////////// main()

{ int x=2,y;

y=(x=10,x+4,9);

cout<<x;

Page 26: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 26برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

cout<<endl;

cout<<y;

} ///////////////////////// main()

{ int i;

char ch;

float f;

double d;

result=(i+ch) *(f-d);

} ///////////////////////// main()

{ int r;

float x;

cout<<"enter the radius:";

cin>>r;

x=PI*r*r;

cout<<"area="<<x;

} ///////////////////////// main()

{ int x,y;

float ave;

cin>>x;

cin>>y;

ave=(float)(x+y)/2;

cout<<ave;

} ///////////////////////// main()

Page 27: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 27برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

{ int x=5;

cout.width(3) ;

// cout.setf(ios::left);

cout.fill('-');

cout<<x;

cout<<endl;

cout.width(8) ;

cout.setf(ios::right);

cout.fill('*');

cout<<"ali";

} ///////////////////////// main()

{ cout<<INT_MAX;

cout<<endl;

cout<<INT_MIN;

cout<<endl<<endl;

cout<<SHRT_MAX;

cout<<endl;

cout<<SHRT_MIN;

cout<<endl<<endl;

cout<<LONG_MAX;

cout<<endl;

cout<<LONG_MIN;

} ///////////////////////// main()

{ int x=9;

int y=2;

cout<< x/y;

Page 28: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 28برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

cout<<endl;

float a=9;

float b=2;

cout<< a/b;

cout<<endl;

int c=9;

float d=2;

cout<< c/d;

} ///////////////////////// main()

{ bool x,y;

x=true;

y=false;

cout<<(x && y);

} ///////////////////////// main()

{ cout<<pow(2,3)<<endl;

cout<<pow(2,-2)<<endl;

cout<<endl<<endl;

cout<<fmod(6,4)<<endl;

cout<<fmod(-20,7)<<endl;

cout<<endl<<endl;

cout<<abs(-2)<<endl;

cout<<fabs(-3.5)<<endl;

Page 29: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 29برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

cout<<endl<<endl;

cout<<floor(3.1)<<endl;

cout<<ceil(3.1)<<endl;

cout<<endl<<endl;

cout<<log10(100)<<endl;

cout<<log(2.7)<<endl;

cout<<tolower('A')<<endl;

cout<<toupper('a')<<endl;

cout<<endl<<endl;

cout<<islower('B')<<endl;

cout<<isupper('B')<<endl;

cout<<endl<<endl;

cout<<int('a')<<endl;

cout<<char(97)<<endl;

} ///////////////////////// main()

{ int i;

i=1;

cout<<++i<<" "<<++i<<endl;

Page 30: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 3۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

i=1;

cout<<++i<<" "<<--i<<endl;

i=1;

cout<<i<<" "<<++i<<endl;

i=1;

cout<<i<<" "<<i++<<endl;

i=1;

cout<<++i<<" "<<i<<endl;

i=1;

cout<<++i<<" "<<i++<<endl;

i=1;

cout<<i++<<" "<<++i<<endl;

i=1;

cout<<i++<<" "<<++i<<endl;

i=1;

cout<<i<<" "<<++i<<" "<<++i<<endl;

i=1;

cout<<++i<<" "<<i++<<" "<<--i<<endl;

i=1;

cout<<i<<" "<<i++<<" "<<--i<<endl;

Page 31: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 31برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

i=1;

cout<<++i<<" "<<i++<<" "<<--i<<endl;

}

Page 32: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 32برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

: : : 222فصل فصل فصل (((222

دستورات شرطی و تکراردستورات شرطی و تکراردستورات شرطی و تکرار (((333444)))

نوع می باشند: نوع می باشند: نوع می باشند: 333ساختارهای کنترلی ع ارتند از : ترتیب ، انتخاو وتکرار ، که ساختارهای انتخاو خود بر ساختارهای کنترلی ع ارتند از : ترتیب ، انتخاو وتکرار ، که ساختارهای انتخاو خود بر ساختارهای کنترلی ع ارتند از : ترتیب ، انتخاو وتکرار ، که ساختارهای انتخاو خود بر (((555

(if)تک انتخابی -1

(if/else)دو انتخابی -2

(switch) ند انتخابی -3

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

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

ifساختار تصمیم

تواند مورد استفاده قرار زیرد:این ساختار به صورتهای زیر می

1 )

if )شرط(

دستور ;

2 )

if )شرط(

{

جموعه دستوراتم

}

3)

if )شرط(

{

1مجموعه دستورات

}

else

{

2مجموعه دستورات

}

شود که دستور ضرو تنها وقتی اجرا میx :برابر صفر ن اشد

if (x!= 0)

Page 33: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 33برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

p=p*x;

توسط دستور زیر ازرx> = 0 ع ارتpositive و ازرx<0 ع ارت ،negative شود: اپ می

if (x >=0)

cout<< "positive";

else

cout<< "negative";

باید داخل پرانتی قرار بگیرد. ifشرط مقابل دستور

استفاده کرد. if(!a) می توان از دستور if(a==0)به جای دستور

ه در صورتی کa باشد، ه مقداری در 15برابرb زیرد؟قرار می

b = 25;

if (a != (b-10))

b=b–10;

else

b = b%2;

اجررا else شوی که شرط برقررار نیسرت و دسرتور قسرمتمتوجه می ifدر ع ارت مقابل bو aحل : با قرار دادن مقادیر

شد. خواهد 1برابر bشود. بنابراین مقدار می

در دستورif زیر، بعد از شرط و بعد از کلمهelse :دستورهای مرکب وجود دارد ،

if(x > y){

x=x+1;

cout<<"x Bigger \ n";

}

else

{

cout<<"x smaller \ n";

cout<<y;

}

خروجی برنامه زیر یست؟ main( ){

int x=0;

if (x) cout<<'A';

if (!x) cout<<'B';

if (x!=0) cout<<'C';

if (x==0) cout<<'D';

Page 34: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 34برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

}

عدد نادرست اسرت.) ifاول و سوم اجرا نمی شوند، ون نتیجه شرط داخل ifاست.دستور BDحل: خروجی

می باشد.( trueو هر عدد غیر صفر معادل falseصفر معادل

قدار در دستورات زیر ازر مb باشد، ه مقداری در 2برابرa شود؟ذخیره می

if (b<10)

if (b>=5)

a=2*b;

else

a=3*b;

else

a=4*b;

خواهد 6برابر aشود و مقدار اجرا می ;a=3*bدوم برقرار نیست. بنابراین دستور ifاول برقرار است. ولی شرط ifحل: شرط

توان دستورات را بصورت زیر بیان کرد:. میشد

10

5

105

4

3

2

b

b

b

b*

b*

b*

a

دستوراتif زیر را باif .تودرتو بنویسید

if(x>0)

a=a+1;

if(x<0)

b=b+1;

if(x==0)

c=c+1;

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

if(x>0)

a=a+1;

else

if(x<0)

b=b+1;

else

c=c+1;

ازر مقدار اولیهx باشد، آنگاه مقدار نهایی 1برابرx :را در دوحالت الف و و پیدا کنید

if (x>=0) if (x>=0)

x=x+1; x=x+1;

Page 35: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 35برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

if(x>=1) else if (x>=1)

x=x+2; x=x+2;

)و( ( الف)

خواهد بود. 2و در قسمت و برابر 4در قسمت الف برابر xحل: مقدار نهایی

Page 36: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 36برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

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

حل:

if (x <=50)

cout<<'A';

else if (x <=70)

cout<<'B;

else if (x <=90)

cout<<'C';

else

cout<<'D';

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

if(a>0 && a<10)

{

a=a+1;

c=c+a;

}

else

c=c+a/b;

حل:

c += (a>0 &&a<10) ? ++a : a/b;

switch دستور

ساختار این دستور به صورت زیر است :

switch )ع ارت کنترلی(

{

xمحدوده خروجی

A 5۰ یا کمتر

B 7۰- 51

C 9۰ – 71

D 91 به باال

Page 37: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 37برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

case ' 1ثابت ' : statement1; break;

case ' 2ثابت ' : statement2; break;

defult : statement n; }

Page 38: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 38برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

در دستورات زیر، ازر مقدار متغیر کاراکتریcolor برابر‘R’ ،باشدRed ازر برابر ،‘B’ ،باشدBule و ازر برابرر‘Y’ ،باشرد

Yellow شود. اپ می

switch (color)

{

case 'R' : cout<< "Red"; break;

case 'B' : cout<< "Blue"; break;

case 'Y' : cout<< "Yellow"; break; }

، مجاز نمی باشد.caseیا رشته ، برای بر سب های doubleاستفاده از مقادیر

قرار داشته باشرد، تعریرف caseمجموعه مقادیر بر حسب ، در خارج از switchازر مقدار ع ارت کنترل کننده دستور

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

دستورif زیر را باswitch .پیاده سازی کنید

if (x ==1)

cout<<'A';

else if (x ==2)

cout<<'B';

else if (x ==3)

cout<<'C';

else

cout<<'D';

حل:

switch (x)

{

case 1 : cout<<'A'; break;

case 2 : cout<<'B'; break;

case 3 : cout<<'C'; break;

default : cout<<'D';

}

زیر ه ذکر شوند، به طوری که فقط آخری شامل مجموعه دستورات باشد، در این صورت شرط آنها برا caseد ازر ن

شوند.می orه

Page 39: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 39برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

شود. اپ می NOغیر اینصورت پیام

char ch;

scantf ("%c",&ch);

switch (ch)

{

case 'a' :

case 'e' :

case 'i' :

case 'o :

case 'u': cout<< "OK"; break;

default : cout<< "NO";

}

ازر مقدارx باشد، خروجی ه خواهد بود؟ 2برابر

switch (x)

{ case 1 : cout<<'A';

case 2 : cout<<'B';

case 3 : cout<<'C';

}

شود. اجرا می استفاده نشده است، دستور پایین تر نیی break اپ می شود. ون در انتهای دستورات از BCحل: کارکترهای

. C اپ شده و سپس کاراکتر Bابتدا کاراکتر x=2یعنی به ازای

ع ارت وجود داشته باشد، فقط ع ارت سمت راست در نظر زرفته خواهد شد.بیش از یک caseازر مقابل

ازر مقدارx باشد، کاراکتر 2برابرA و در غیر اینصورت کاراکترB :اپ خواهد شد

switch (x)

{

case 1,2 : cout<<'A'; break;

default : cout<<'B'; break; }

Page 40: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 4۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

main()

} int x;

cin>>x;

if(x>=0)

cout<<"positive";

else

cout<<"negative";

{

///////////////////////////

main()

} int x,y;

cin>>x>>y;

if (x%y==0)

cout<<"yes";

else

cout<<"no";

{

/////////////////////////// main()

} int a,b;

cout<<"enter two number:";

cin>>a>>b;

if(a<b)

cout<<"min="<<a;

else

cout<<"min="<<b;

{

/////////////////////////// main()

}

Page 41: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 41برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

int n;

cin>>n;

if(n==13)

cout<<"yes";

else

cout<<"no";

{

/////////////////////////// main()

} int a,b,c;

cin>>a>>b>>c;

if(b<min)

min=b;

if (c<min)

min=c;

int k;

k=(a<b) ? a : b;

min= (c<k) ? c : k;

cout<<"min=" <<min;

if(a<=b && a<=c)

cout<<a;

if(b<=a && b<=c)

cout<<b;

if(c<=a && c<=b)

cout<<c;

{

/////////////////////////// main()

} int x,y,temp;

cin>>x>>y;

if(x>y)

} temp=x;

x=y;

y=temp;

{

Page 42: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 42برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

cout<<x<<'\t'<<y;

{

/////////////////////////// main()

} int a,b;

cin>>a>>b;

if(b!=0 && a%b==0)

cout<<"yes";

else

cout<<"no" ;

{

/////////////////////////// main()

} int a,b;

cin>>a>>b;

if(b!=0)

if(a%b==0)

cout<<"yes";

else

cout<<"no";

else

cout<<"no";

{

/////////////////////////// main()

} int a,b,c;

cin>>a>>b>>c;

if(a<b)

if(a<c)

cout<<a;

else

cout<<c;

Page 43: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 43برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

else

if(b<c)

cout<<b;

else

cout<<c;

{

/////////////////////////// main()

} int grade;

cin>>grade;

if(grade>=17 && grade<=20)

cout<<'A';

else if (grade>=15 && grade<17)

cout<<'B';

else if (grade>=10 && grade<15)

cout<<'C';

else

cout<<'D';

{

/////////////////////////// main()

} int grade;

cin>>grade;

if(grade>=17 && grade<=20)

cout<<'A';

else if (grade>=15 && grade<17)

cout<<'B';

else if (grade>=10 && grade<15)

cout<<'C';

else

cout<<'D';

{

/////////////////////////// main()

Page 44: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 44برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

} char ch;

cin>>ch;

switch(ch)

} case 'r': cout<<"red";

case 'g': cout<<"green";

case 'b': cout<<"blue";

default : cout<<"error";

{

{

/////////////////////////// main()

} char ch;

cin>>ch;

switch(ch)

} case 'a':

case 'e':

case 'i':

case 'o':

case 'u': cout<<"ok"; break;

default : cout<<"no";

{

{

/////////////////////////// main()

} int a,b;

char ch;

cout<<"enter a,b:";

cin>>a>>b;

Page 45: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 45برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

cout<<"enter ch:";

cin>>ch;

switch(ch)

} case '+' : cout<<a+b; break;

case '-' : cout<<a-b; break;

case '*': cout<<a*b; break;

{

{

Page 46: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 46برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

دستورات تکرار

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

for , while , do –while

forساختار تکرار

شود:می Aه مرت ه کاراکتر ساستفاده کرد. بطور مثال دستورات زیر موجب اپ forتوان از دستور جاد حلقه میبرای ای

for (i = 1;i <=3 ; i ++)

cout<<'A';

ه سازی کرد:توان این عمل را با دستورات زیر نیی پیادکه می

for (i=3;i >=1;i --)

cout<<'A';

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

forمقدار دهی اولیه به متغیر حلقه( ; شرط حلقه ;)زام حرکت

دستور ;

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

دهی .می

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

c = 4;

for (i =0;i <3;i ++) {

cout<<i;

c ++;

}

cout<< c;

، سره cشرود، مقردارکند و ون حلقه سه مرت ه راپ میرا اپ می 2و1و۰مقادیر forمی باشد. حلقه 0127حل: خروجی

کند.را اپ می 7قدار شود و دستور اپ خارج از حلقه مواحد اضافه می

خروجی حلقه زیر کدام است؟

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

cout<<i;

می رسد و حلقه پایان مری یابرد. بنرابراین در دسرتور 6 به iکالون استفاده شده و مقدار شمارنده حل: در آخر حلقه از سمی

خواهد شد. اپ 6 اپ، مقدار

زیر یست؟تکه برنامه خروجی

a=1;

Page 47: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 47برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

for ( i =2; i !=a+1; i += 2)

cout<< i ;

cout<< i+a;

یابرد بردون می شده و ون شرط برقرار نیسرت، حلقره پایران 2برابر i اپ می شود. بعد از ورود به حلقه مقدار 3حل: عدد

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

تورات زیر یست؟خروجی دس

for (i =1; i<3; i ++)

cout<<++ i;

++، iت وجرود شده و ون شرط برقرار است، در دستور راپ ابتردا بره علر 1برابر i اپ می شود. ابتدا مقدار 2حل: عدد

مری 3دار آن برابرر اضافه شرده و مقر iد به یک واح forشود و بعد از آن توسط حلقه شده و سپس اپ می 2برابر iمقدار

یابد. شود و ون شرط حلقه برابر نیست، حلقه پایان می

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

for (i =1,j=3;i<=j; i ++,j --)

cout<< i* j;

ود و سپس یک شیم اپ 3شده و ون شرط برقرار است، مقدار 3برابر jو 1برابر i اپ می شود. ابتدا مقدار 34حل:

شرود و برا اپ می 4شود و ون در این حالت باز ه شرط حلقه برقرار است، مقدار ک می jاضافه و یک واحد از iواحد به

یابد. تغییر شمارنده در مرحله بعدی، شرط برقرار ن وده و حلقه پایان می

یجاد کرد.، یک حلقه بی نهایت ا (; ;) forتوان با استفاده از دستور می

تواند صحیح، کاراکتری یا حتی اعشاری باشد. می Cمقدار شمارنده حلقه در زبان

مقدار نهایی در حلقه را می توان تغییر داد.

را حذف کرد. forتوان هر یک از سه قسمت داخل حلقهمی

، مقدار شمارنده بیشتر از مقدار نهایی خواهد بود.forبعد از پایان حلقه

Page 48: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 48برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

خروجی دستورات زیر یست؟

for (i =0;i <6; i += 2)

cout<< i++;

هنگرام اپ می شود. مقدار شمارنده حلقه ابتدا صفر است و ون شرط برقرار است، مقردار صرفر راپ شرده و در 03حل:

3یابرد و مقردار آن ایش مییابد و توسط حلقه نیی دو واحد افیمقدار شمارنده یک واحد افیایش می >>coutخروج از دستور

شرده و توسرط 4 اپ شده و مجدداً بعد از خروج از دستور اپ شرمارنده 3شود و ون شرط حلقه برقرار است، مقدار می

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

خروجی دستورات زیر یست؟

for (i =2 ;i <7; i ++)

if (i%2 == 0)

cout<<i;

شود، یعنی خروجی ع ارت است از:قابل قسمت هستند، اپ می 2هایی که بر iمقادیر ifحل: توسط دستور

246

عملکرد برنامه زیر یست؟

main( ){

char ch;

int i ;

for (i=0 ; (ch=getchar ( ) )! ='.' ; i++);

cout<<i;

}

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

whileساختار تکرار

شرود کره تعرداد دفعرات تکررار مجموعره دسرتورات مرورد نظرر مشرخص ن اشرد. در مواقعی اسرتفاده می whileاز ساختار

به صورت زیر است: whileساختار

while)شرط( {

مجموعه دستورات

}

کند.را اپ می 3تا 1عداد دستور زیر ا

i =1;

while(i<=3)

{

cout<< i;

i ++;

}

Page 49: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 49برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

عملکرد دستورات زیر یست؟

long int f=1;

while(n>1)

f *=n--;

. nحل: محاس ه فاکتوریل عدد

عملکرد دستورات زیر یست؟

int c=0;

while(getchar( ) != ‘\r’)

c++;

شود(خت می Enterحل: شمارد تعداد کاراکترهای یک جمله )انتهای جمله به کلید

خروجی یست؟

int i=3;

while(i){

cout<< i;

i--;

}

اپ خواهد شد. 321شود و تکرار می iحل: حلقه تا صفر شدن

حلقه زیر تا ه موقع تکرار می شود؟

while((ch=getcher( )) !='A' );

. Aحل: تا وارد کردن کاراکتر

ازر از ورودیali ^z وارد شود، ه ییی در صفحه نمایش نشان داده می شود؟

void main( ){

char c;

while((c=cin.get( ) ) !=EOF)

cout<<c;

}

شد.)یک رشته مشاهده خواهد alialiه خواهد شد. در واقع رشته نمایش داد ali، رشته ctrl+zو سپس aliحل: با وارد کردن

ali که کاربر وارد کرده و یک رشتهali که توسطcout ).نمایش داده شده است

Page 50: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 5۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

ازر از ورودیali ^z وارد شود، ه ییی در صفحه نمایش نشان داده می شود؟

void main( )

{

char c;

cout<<cin.eof( );

while((c=cin.get( ) ) !=EOF);

cout<<cin.eof( );

}

اده مری شرود. نیی نمرایش د 1، عدد ctrl+zو سپس وارد کردن aliحل: با اجرای برنامه عدد صفر اپ شده و با ورود رشته

نمایش داده می شود. 0ali1بنابراین در خروجی

Page 51: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 51برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

do –whileساختار تکرار

شود. بنرابراین مجموعره تست می است. با این تفاوت که شرط حلقه در انتهای حلقه whileمشابه حلقه do – whileحلقه

شوند. ساختار این دستور ع ارت است از :، حداقل یک ار انجام می do –whileدستورات داخل ساختار

do {

مجموعه دستورات

while{)شرط(

کند:را اپ می 7ا ت 5حلقه زیر اعداد

i =5;

do{

cout<< i;

i++;

}while (i <=7);

یست؟ 123خروجی برنامه زیر به ازای ورود عدد

main( ){

int n,d ;

scanf ("%d",&n);

do{

d = n%10;

cout<< d;

n/= 10;

}while(n!=0);

}

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

در ه صورت حلقه زیر پایان می یابد؟

do{

cin>>ch;

}while(ch <'A' ch >'D');

یابد.، حلقه پایان می Dتا Aحل: در صورت وارد کردن کاراکتری بین حروف

انتقال کنترل غیر شرطی دستورات

.break ،continue ،goto , exitدستورات انتقال کنترل غیر شرطی ع ارتند از :

breakدستور

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

خروجی دستورات زیر یست؟

for(i=1; i <8; i ++)

Page 52: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 52برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

{

if (i==4) break;

cout<< i;

}

یابد.( می رسد، حلقه پایان می 4کند )مقدار شمارنده وقتی به را اپ می 3تا 1حل: اعداد

شود.موجود در داخلی ترین حلقه، فقط موجب خروج از همین حلقه می breakدستور

continueدستور

رود و بعد از تغییر مقدار شمارنده شررط در داخل حلقه ها ، کنترل به ابتدای حلقه می continueاز دستور در صورت استفاده

شود.حلقه تست می

خروجی دستورات زیر یست؟

for (i =1; i <=5;i ++)

{

if (i ==2) continue;

cout<<i;

}

می باشد. 1345خروجی شود.به ع ارتی اپ می 2به غیر از عدد 5تا 1حل: اعداد

به ترتیب وارد شوند، خروجی ه خواهد بود؟ 8۰و 1۰۰و 5و -3و 12در صورتی که از ورودی اعداد

do {

cin>>x;

if (x< 0)

countinue;

cout<< x ;

} while (x!=100);

اپ می شود. 1۰۰و در نهایت 5و سپس 12حل: ابتدا

لقره پایران ح 1۰۰ورات داده شده، اعداد مث ت خوانده شده از ورودی را نمایش می دهند و در صورت وارد کرردن عردد دست

دیگر خوانده نمی شود. 8۰یابد. عدد می

gotoدستور

توان کنترل را به مکانی برد که توسط بر سب مشخص شرده اسرت. ال تره از ایرن دسرتور بره نردرت می gotoتوسط دستور

شود. تفاده میاس

Page 53: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 53برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

باشد : می 3تا 1خروجی دستورات زیر اپ اعداد

x =1;

loop1:

cout<< x;

x ++;

if (x <= 3)

goto loop1;

توان نام برد.خروج از حلقه تودر تو را می gotoاز کاربردهای خوو

for (…){

for (…){

for (…){

if (…) goto stop;

}

}

}

stop : cout<< "ERROR";

( )exitتابع

باعرث exit (0)توان به طور کامل از برنامه خارج شد. استفاده از عدد صفر در داخل پرانتی به صورت می ( ) exitتوسط تابع

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

باشد.می stdlib.hدر فایل ( )exitالگوی تابع

Page 54: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 54برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

حلقه های متداخل )تو در تو(

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

شوند.م میشوند و ع ارت کنترل حلقه آنها از نو ارزیابی شده و تمام تکرارهای مورد نیاز انجاه های داخلی از نو اجرا میحلق

خروجی حلقه های تودرتو زیر یست؟

for (i=1; i <= 3; i ++ )

for (j=4;j <=5; j ++ )

cout<<j;

مرت ه تکرار می شود. 2مرت ه و حلقه داخلی 3خارجی می باشد. حلقه 454545حل: خروجی

خروجی حلقه های تودرتو زیر یست؟

for (i=1;i<=3;i ++)

for (j=4;j <=5;j ++)

cout<<i;

می باشد. 112233حل: خروجی

ند مرت ه رشته farshid اپ خواهد شد؟

for (i =6 ; i >2 ; i --)

for (j =0; j <=2 ; j ++)

for (k=-3 ; k!=0 ; k ++)

cout<< "farshid";

می باشرد. بنرابراین دسرتور 3م برابر ( و حلقه سو2-۰+ 1برابر ) (، حلقه دوم6-2مرت ه. تعداد تکرار حلقه اول برابر ) 36حل:

مرت ه اجرا می شود. 3 34 اپ در کل

تورات زیر یست؟خروجی دس

for (i=1; i<=3 ; i++)

{

for (j=1; j <= i ; j++)

cout<<j;

cout<< "\n";

}

حل:

1

1 2

1 2 3

شود.به خط بعدی می موجب انتقال مکان نما ;"cout<< "\nبعد از پایان هر بار تکرار حلقه داخلی، دستور

Page 55: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 55برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

نویسیبرنامه

مدت زمان تقریبی عنوان آموزش

ساعت 3 کلیک کنید )+( - م انی برنامه نویسی

ساعت 13 کلیک کنید )+( - C برنامه نویسی

ساعت C 2۰++ آموزد برنامه نویسی

ساعت 14 کلیک کنید )+( - سی شارپ نامه نویسی کاربردیبر

ساعت 14 کلیک کنید )+( - آموزد جامع شی زرایی در سی شارپ

ساعت 23 کلیک کنید )+( - برنامه نویسی جاوا

ساعت 28 کلیک کنید )+( - PHP آموزد برنامه نویسی

ساعت 7 کلیک کنید )+( - (CodeIgniter) کدایگنایتر PHP آموزد فریمورک

ساعت 7 کلیک کنید )+( - jQuery آموزد اسکریپت برنامه نویسی

ساعت 13 کلیک کنید )+( - (Visual Basic.NET) آموزد ویژوال بیسیک دات نت

ساعت 16 کنید )+(کلیک - (Visual Basic.NET) آموزد تکمیلی ویژوال بیسیک دات نت

ساعت 4 کلیک کنید )+( - VB.Net آموزد برنامه نویسی با رود سه الیه به زبان

ساعت 16 کلیک کنید )+( - Small Basic برنامه نویسی اسمال بیسیک یا

ساعت 2 کلیک کنید )+( - آموزد ساخت بازی ساده در ویژوال بیسیک

ساعت 11 کلیک کنید )+( - SQL Server آموزد کاربردی

ساعت 2 کلیک کنید )+( - C# در LINQ to SQL آموزد آشنایی با

ساعت 4 کلیک کنید )+( - آموزد برنامه نویسی با رود سه الیه به زبان سی شارپ

ساعت 1 کلیک کنید )+( - آموزد برنامه نویسی تحت ش که با سی شارپ در قالب پروهه

ساعت 3 کلیک کنید )+( - در دات نت Cryptography آموزد

Page 56: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 56برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

)ادامه از صفحه قبل( نویسیبرنامه

مدت زمان تقریبی عنوان آموزش

ساعت 4 آموزد قفل نرم افیاری در سی شارپ از طریا رجیستری

ساعت 13 کلیک کنید )+( - ها در اندرویدزد ساخت اپلیکیشن کتاو و کار با دادهآمو

ساعت 14 کلیک کنید )+( - آموزد ارت اط با دیتابیس سمت سرور در اندروید

ساعت 16 کلیک کنید )+( - آموزد ساخت روبات و کنترل آن با اندروید

- کیشن دیکشنری صوتی دو زبانه با قابلیت تشخیص صوت کاربرآموزد ساخت اپلی

کلیک کنید )+(

ساعت 7

ساعت 9 کلیک کنید )+( - آموزد مدیریت بانک اطالعاتی اوراکل

ساعت 7 کلیک کنید )+( - آموزد مدیریت بانک اطالعاتی اوراکل پیشرفته

ساعت 1 در لینوکس 12cآموزد راه اندازی اوراکل

ساعت 3 کلیک کنید )+( - آموزد دیتازارد در اوراکل

عتسا 9 کلیک کنید )+( - برنامه نویسی متلب

ساعت 14 کلیک کنید )+( - متلب برای علوم و مهندسی

ساعت 7 کلیک کنید )+( - برنامه نویسی متلب پیشرفته

ساعت 8 کلیک کنید )+( - در متلب (GUI) طراحی رابط های زرافیکی

ساعت 7 کلیک کنید )+( - RStudioافیار و نرم Rآموزد برنامه نویسی

ساعت 5 (+) کلیک کنید - RStudio افیارو نرم R آموزد تکمیلی برنامه نویسی

ساعت 2۰ کلیک کنید )+( - 1آموزد برنامه نویسی پایتون

ساعت 5 کلیک کنید )+( - 2آموزد برنامه نویسی پایتون

ساعت 16 (+) کلیک کنید - OpenGL آموزد زرافیک کامپیوتری با

Page 57: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 57برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

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

ساعت 28 کلیک کنید )+( - PHP آموزد برنامه نویسی

ساعت 7 کلیک کنید )+( - (CodeIgniter) کدایگنایتر PHP آموزد فریمورک

ساعت 3 کلیک کنید )+( - HTML آموزد طراحی وو با

ساعت 5 کلیک کنید )+( - CSS آموزد طراحی وو با

ساعت 4 لیک کنید )+(ک -کلیک کنید - CSS و HTML آموزد پروهه محور

ساعت 9 کلیک کنید )+( - (JavaScript) آموزد جاوا اسکریپت

ساعت 1 کلیک کنید )+( - cPanel آموزد کار با

ساعت 1 کلیک کنید )+( -کلیک کنید - DirectAdmin آموزد مدیریت هاست با

ساعت 7 کلیک کنید )+( - راه اندازی سایت و کار با وردپرس

کلیک کنید - Easy Digital Downloads راه اندازی فروشگاه دیجیتال با وردپرس و

)+(

ساعت 1

ساعت 1 کلیک کنید )+( - آموزد راه اندازی سایت شخصی با وردپرس

ساعت 2 کلیک کنید )+( -آموزد ترجمه قالب وردپرس

ساعت 2 کلیک کنید )+( - آموزد راه اندازی سایت خ ری با وردپرس

Page 58: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 58برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

علوم کامپیوتر

مدت زمان تقریبی عنوان آموزش

ساعت 1۰ کلیک کنید )+( -ها ساختمان داده

ساعت 2۰ لیک کنید )+(ک - (ارشد کنکور تست –ها )مرور آموزد ساختمان داده

ساعت 9 کلیک کنید )+( -ها ها و ماشینآموزد نظریه زبان

ساعت 8 کلیک کنید )+( - (ارشد کنکور تست –ها و ماشین )مرور آموزد نظریه زبان

ساعت 11 کلیک کنید )+( - آموزد سیست های عامل

ساعت 12 کلیک کنید )+( - آموزد سیست عامل )مرور اجمالی و تست کنکور(

ساعت 8 کلیک کنید )+( -ها آموزد پایگاه داده

ساعت 5 کلیک کنید )+( - (ارشد کنکور تست –ها )مرور آموزد پایگاه داده

ساعت 1۰ کلیک کنید )+( - آموزد طراحی و پیاده سازی زبان های برنامه سازی

- (ارشد کنکور تست –آموزد طراحی و پیاده سازی زبان های برنامه سازی )مرور

کلیک کنید )+(

ساعت 12

ساعت 4 کلیک کنید )+( - آموزد رود های حل روابط باززشتی

تساع 2 کلیک کنید )+( - آموزد رود تقسی و حل در طراحی الگوریت

ساعت 8 کلیک کنید )+( - آموزد ذخیره و بازیابی اطالعات

ساعت 16 کلیک کنید )+( - سسته با رویکرد حل مسالهآموزد ساختمان ز

ساعت 1۰ کلیک کنید )+( - آموزد جامع مدارهای منطقی

ساعت 2۰ کلیک کنید )+( - امپیوتر با رویکرد حل مسألهآموزد معماری ک

کلیک - آموزد ساختمان زسسته )مرور و حل تست های کنکور کارشناسی ارشد(

کنید )+(

ساعت 12

ساعت 8 کنید )+(کلیک - طراحی الگوریت آموزد

ساعت 19 کلیک کنید )+( - 1آموزد ش که های کامپیوتری

Page 59: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 59برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

)ادامه از صفحه قبل( علوم کامپیوتر

مدت زمان تقریبی عنوان آموزش

ساعت 14 کلیک کنید )+( - آموزد نظریه زراف و کاربردها

ساعت 1۰ کلیک کنید )+( - (Network+) آموزد نتورک پالس

ساعت 3 کلیک کنید )+( - Rational Roseافیار با نرم UML آموزد مدل سازی

ساعت 3 کلیک کنید )+( - آموزد پردازد ویدئو

ساعت 16 کلیک کنید )+( - پردازد تصویر در متلب

ساعت 1۰ کلیک کنید )+( - OpenCV آموزد پردازد تصویر با

مصنوعی هوش

مدت زمان تقریبی عنوان آموزش

ساعت 14 کلیک کنید )+( - الگوریت هنتیک در متلب

ساعت 1۰ کلیک کنید )+( - در متلب PSO الگوریت

ساعت 2 کلیک کنید )+( - زسسته باینری (PSO) الگوریت ازدحام ذرات

ساعت 1 کلیک کنید )+( - در متلب PSO ترکیب الگوریت هنتیک و

ساعت 2 کلیک کنید )+( - اده از الگوریت هنتیکحل مسأله فروشنده دوره زرد با استف

ساعت 6 کلیک کنید )+( - الگوریت مور گان در متلب

ساعت 13 کلیک کنید )+( - الگوریت رقابت استعماری در متلب

با استفاده از الگوریت های فرا ابتکاری و ANFIS ازی عص ی یاطراحی سیست های ف

کلیک کنید )+( - تکاملی

ساعت 2

تساع 2 کلیک کنید )+( - در متلب Cultural Algorithm الگوریت فرهنگی یا

Page 60: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 6۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

)ادامه از صفحه قبل( هوش مصنوعی

مدت زمان تقریبی عنوان آموزش

ساعت 4 کلیک کنید )+( - در متلب Simulated Annealing ش یه سازی ت رید یا

ساعت 2 کلیک کنید )+( - در متلب Tabu Search جستجوی ممنوع یا

ساعت 1 کلیک کنید )+( - در متلب Firefly Algorithm الگوریت کرم شب تاو یا

ساعت 2 کلیک کنید )+( - در متلب BBO بهینه سازی م تنی بر جغرافیای زیستی یا

ساعت 2 کلیک کنید )+( - در متلب Harmony Search جستجوی هارمونی یا

ساعت 3 کلیک کنید )+( - در متلب Artificial Bee Colony کلونی زن ور مصنوعی یا

ساعت 2 کلیک کنید )+( - در متلب Bees Algorithm الگوریت زن ورها یا

ساعت 1 کلیک کنید )+( - الگوریت تکامل تفاضلی

ساعت 2 کلیک کنید )+( - در متلب IWO الگوریت بهینه سازی علف هرز مهاج یا

ساعت 1 کلیک کنید )+( - TLBO الگوریت بهینه سازی م تنی بر و یادزیری یا

ساعت 4 کلیک کنید )+( - در متلب SFLA ینه سازی جهش قورباغه یاالگوریت به

ساعت 19 کلیک کنید )+( - بهینه سازی ند هدفه در متلب

ساعت 9 کلیک کنید )+( - بهینه سازی مقید در متلب

ساعت 28 کلیک کنید )+( - تلبش که های عص ی مصنوعی در م

ساعت 9 کلیک کنید )+( - آموزد کاربردی ش که های عص ی مصنوعی

ساعت 3 کلیک کنید )+( - آموزد استفاده از ش که عص ی مصنوعی با نروسولوشن

ساعت 4 کلیک کنید )+( - در متلب GMDH ش که عص ی

ساعت 3 کلیک کنید )+( - ش که های عص ی زازی به همراه پیاده سازی عملی در متلب

ساعت 3 کلیک کنید )+( - در متلب LVQ ی و بازشناسی الگو با ش که های عص یط قه بند

ساعت 8 کلیک کنید )+( - آموزد پیاده سازی الگوریت های تکاملی و فراابتکاری در سی شارپ

Page 61: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 61برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

آمار و داده کاوی

مدت زمان تقریبی عنوان آموزش

ساعت 88 کلیک کنید )+( - زنجینه فرادرس های یادزیری ماشین و داده کاوی

ساعت 71 کلیک کنید )+( - زنجینه فرادرس های محاس ات هوشمند

ساعت 24 کلیک کنید )+( -آموزد یادزیری ماشین

ساعت 24 کلیک کنید )+( - در متلب Data Mining داده کاوی یا

ساعت 2 کلیک کنید )+( - RapidMiner آموزد داده کاوی در

ساعت 17 کلیک کنید )+( - آموزد وو کاوی

ساعت 28 کلیک کنید )+( - ش که های عص ی مصنوعی در متلب

ساعت 9 کلیک کنید )+( - آموزد کاربردی ش که های عص ی مصنوعی

ساعت 4 د )+(کلیک کنی - در متلب GMDH ش که عص ی

ساعت 3 کلیک کنید )+( - ش که های عص ی زازی به همراه پیاده سازی عملی در متلب

ساعت 3 کلیک کنید )+( - در متلب LVQ ط قه بندی و بازشناسی الگو با ش که های عص ی

ساعت 3 کلیک کنید )+( - خوشه بندی با استفاده از الگوریت های تکاملی و فراابتکاری

ساعت 2 کلیک کنید )+( - Classifier تخمین خطای کالسیفایر یا

ساعت 2 کلیک کنید )+( - Feature Selection انتخاو ویژزی یا

ساعت 4 کلیک کنید )+( - انتخاو ویژزی با استفاده از الگوریت های فرا ابتکاری و تکاملی

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

)+(

ساعت 1

ساعت 4 ید )+(کلیک کن - آموزد پردازد سیگنال های واقعی در متلب

ساعت 9 کلیک کنید )+( - Data Fusion م انی و کاربردهای راه رد تلفیا داده یا

ساعت 13 کلیک کنید )+( - آمار و احتمال مهندسی

Page 62: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 62برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

ساعت 3 کلیک کنید )+( - SPSS های فرض مربوط به میانگین جامعه نرمال درآزمون

)ادامه از صفحه قبل( آمار و داده کاوی

مدت زمان تقریبی عنوان آموزش

ساعت 2 کلیک کنید )+( - آموزد محاس ات آماری در اکسل

ساعت 5 کلیک کنید )+( - فیت آماریآموزد کنترل کی

ساعت 2 کلیک کنید )+( - SPSS آموزد کنترل کیفیت آماری با

ساعت 7 کلیک کنید )+( - Amos آموزد مدل سازی معادالت ساختاری با

ساعت 4 کلیک کنید )+( - SASافیار تجییه و تحلیل اطالعات با نرم

مهندسی برق

مدت زمان تقریبی عنوان آموزش

ساعت 7 کلیک کنید )+( - Verilog طراحی دیجیتال با استفاده از وریلوگ یا

ساعت 1۰ کلیک کنید )+( - آموزد جامع مدارهای منطقی

ساعت 4 کلیک کنید )+( - طراحی و پیاده سازی مدارات منطقیآموزد مروری

ساعت 4 کلیک کنید )+( - CodevisionAVRافیار و نرم AVR آموزد میکروکنترلر

ساعت 4 کلیک کنید )+( - CodevisionAVRافیار و نرم AVRآموزد تکمیلی میکروکنترلر

ساعت 6 کلیک کنید )+( - Keyence و Omron های ساخت شرکت هایPLC آشنایی با

ساعت 9 کلیک کنید )+( - CCS کامپایلر با PIC میکروکنترلر

ساعت 3 کلیک کنید )+( - Proteus آموزد تحلیل و طراحی مدارات الکترونیکی با

(PSpice) آموزد ش یه سازی و تحلیل مدارهای الکتریکی و الکترونیکی با پی اسپایس

کلیک کنید )+( -

ساعت 3

Page 63: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 63برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

ساعت 3 کلیک کنید )+( - ADS آموزد مقدماتی

ساعت 2 کلیک کنید )+( - ADSافیار آموزد تکمیلی آنالیی مدار با نرم

)ادامه از صفحه قبل( مهندسی برق

تقریبی مدت زمان عنوان آموزش

ساعت 2 کلیک کنید )+( - OrCAD مدارات الکتریکی با تحلیل ریاضیآموزد

ساعت 2 کلیک کنید )+( - Orcad Capture آموزد ش یه سازی مدارات الکترونیکی با

ساعت 8 کلیک کنید )+( - (Arduinoآموزد برنامه نویسی آردوینو )

ساعت 7 کلیک کنید )+( - (Arduino) آموزد تکمیلی برنامه نویسی آردوینو

ساعت 7 کلیک کنید )+( - Altium Designer افیارپی به کمک نرممدار ا آموزد طراحی برد

ساعت 5 کلیک کنید )+( - آموزد م انی ربات های برنامه پذیر

ساعت 16 کلیک کنید )+( - آموزد ساخت روبات و کنترل آن با اندروید

ساعت 9 کلیک کنید )+( - 1آموزد مدارهای الکتریکی

ساعت 11 کلیک کنید )+( - 2آموزد مدارهای الکتریکی

ساعت 1۰ کلیک کنید )+( - آموزد سیست های کنترل خطی

ساعت 13 کلیک کنید )+( - 1آموزد مکاترونیک کاربردی

ساعت 3 کلیک کنید )+( - آموزد کامسول )م احث منتخب(

ساعت 3 کلیک کنید )+( -ها آموزد سینماتیک مستقی و معکوس ربات

ساعت 27 کلیک کنید )+( - سیست هاها و آموزد تجییه و تحلیل سیگنال

- آموزد متلب با نگرد تحلیل آماری، تحلیل سری های زمانی و داده های مکانی

کلیک کنید )+(

ساعت 8

ساعت 4 کلیک کنید )+( - افیار متلبپردازد سیگنال های دیجیتال با استفاده از نرم

ساعت 4 کلیک کنید )+( - ش یه سازی سیست با سیمیولینک

ساعت 11 کلیک کنید )+( - آموزد سیست های قدرت در سیمولینک و متلب

ساعت 2 - افیار متلبآنالیی پایداری و کنترل سیست های قدرت با استفاده از جع ه ابیارهای نرم

Page 64: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 64برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

کلیک کنید )+(

ساعت 3 کلیک کنید )+( - در ش یه سازی سیست های قدرت SimPowerSystems آشنایی با

)ادامه از صفحه قبل( مهندسی برق

مدت زمان تقریبی عنوان آموزش

SimPowerSystem و Simulink ش یه سازی ماشین های الکتریکی در تول اکس های

کلیک کنید )+( - افیار متلبدر نرم

ساعت 4

ساعت 8 کلیک کنید )+( - سیمولینک و متلب در سازی ش یه –آموزد الکترونیک قدرت

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

کنید )+(

ساعت 1۰

ساعت 4 کلیک کنید )+( - برنامه های پاسخگویی بار

ساعت 21 کلیک کنید )+( - برای تحلیل سیست های قدرت ETAP افیار آموزد نرم

ساعت 5 کلیک کنید )+( - برای حل مسائل بازار برق GAMSافیار آموزد مقدماتی نرم

ساعت 2 کلیک کنید )+( - GAMS آموزد پخش بار اقتصادی )دیسپا ینگ اقتصادی( در

ساعت 2 کلیک کنید )+( - کاربرد فازی در سیست های قدرت

ساعت 5 )+(کلیک کنید - HFSSافیار آموزد نرم

ساعت 1 کلیک کنید )+( - HFSSافیار طراحی آنتن مایکرواستریپ به کمک نرم

ساعت 1 کلیک کنید )+( - HFSS با SIW آموزد طراحی و ش یه سازی آنتن های

کلیک کنید - CST آموزد بررسی کامل آنتن های مایکرواستریپ و طراحی آن توسط

)+(

ساعت 3

Empirical Mode Decomposition آموزد تجییه سیگنال به مولفه های مود ذاتی یا

کلیک کنید )+( -

دقیقه 4۰

ساعت 3 کلیک کنید )+( - نمونه برداری و بازسازی اطالعات در سیست های کنترل دیجیتال

ساعت 1 کلیک کنید )+( - بررسی پاسخ ورودی پله در شناسایی فرآیندهای صنعتی

و ش که فازی ARX مدل سازی و شناسایی سیست های دینامیکی با استفاده از مدل

کلیک کنید )+( - ANFIS عص ی

ساعت 1

Page 65: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 65برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

ساعت 2 کلیک کنید )+( - با منطا فازی PID ضرایب کنترل کنندهطراحی و تنظی

ساعت 2 کلیک کنید )+( - آموزد کنترل سیست هار تانک

Page 66: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 66برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

: 3فصل

رشته -آرایه

آرایه

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

نه آرایه می توان یرک را تعریف می کند که در هر خا2تا ۰خانه با اندیسه های 3، یک آرایه با ; int x[3]طور نمونه تعریف

عدد صحیح قرار داد:

0 1 2

ه دوم آرایره قررار در خانر 1۰استفاده می شود. مثالً با دسرتور زیرر عردد x[1]برای دسترسی به خانه دوم این آرایه از ع ارت

خواهد زرفت:

x[1]=10;

بایت از حافظه را اشغال می کند. 6بایتی است و 2خانه 3دارای xآرایه

در مثرال براال توسرط ;x[5]=10یعنی در صورت استفاده از دستوری مانند وجود ندارد. C ،bound checkingدر زبان

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

آرایه زیر ند بایت فضا می خواهد؟

float x[5];

= 2۰ار داد. یعنی به بایتی است را قر 4که floatخانه است که در هر خانه آن می توان یک داده از نوع 5حل : آرایه دارای

4 5 .بایت فضا نیاز دارد

عملکرد دستور زیر یست؟

int x[3] ={5};

شده و بقیه خانه ها صفر هستند. 5حل : مقدار خانه اول برابر

0 1 2 0 0 5 x

است. موجب بروز پیام خطا خواهد شد. ون بیشتر از تعداد خانه های آرایه ، مقداردهی شده اجرای دستور زیر

int a[2] ={5, 3, 6};

x

Page 67: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 67برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

عملکرد دستور زیر یست؟

float x[4]={2.6, 'a',5};

حل : اجرای دستور موجب مقدار دهی آرایه به صورت زیر می شود:

0 1 2 3

آرایهx دارای ند خانه است؟ int x[ ]={3,1,6};

خانه است. 3حل: آرایه دارای

0 1 2

6 1 3 X

ی باشد. دهی انجام شده م تذکر: می توان بعد آرایه را مشخص نکرد، که در این حالت عناصر آرایه به تعداد مقدار

خروجی دستورات زیر یست؟

double x[6]={16.0,12.0, 6.0, 8.0, 2.5, 12.0};

cout<<x[(int) x[4] ] ;

ت.اس ۰/6برابر x[2]است و مقدار 2آن برابر intاست که 5/2برابر x[4]است. ون مقدار 6.0حل : خروجی

پر می شود: 3تا ۰ه با مربع اعداد صحیح توسط حلقه زیر عناصر آرای

int square[4],i;

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

square[i]=i*i ;

به صورت زیر :

3 2 1 0 9 4 1 0

0.0 5.0 97.0 2.6 X

Page 68: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 68برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

بعد از اجرای دستورات زیر، محتویات آرایه ه تغییری خواهد کرد؟

int x[4]={1,2,3,4};

int i,j;

for (i=0,j=3;i<2;i++,j--)

x[i]=x[j];

: عناصر آرایه متقارن می شود :حل

i j عملکرد

0 3 4,2,3,4

1 2 4,3,3,4

.بود، همین نتیجه حاصل می شد. در واقع کارهای بعدی بی تاثیر بود i<4به صورت i<2تذکر: ال ته ازر شرط

بعد از اجرای دستورات زیر، محتویات آرایه ه تغییری خواهد کرد؟

int x[4]={1,2,3,4};

int i,j,temp;

for (i=0,j=3; i <2; i++,j--)

{

temp=x[i];

x[i]=x[j];

x[j]=temp;

}

ارونه می شود:تعویض می شود. بنابراین با اجرای حلقه عناصر آرایه و x[j]وx[i]حل: توسط دستورات داخل حلقه، محتویات

i j عملکرد

0 3 4,2,3,1

1 2 4,3,2,1

ه محتویات آرایه هیچ تغییری نمی کند.باشد، آنگا i<4، برابر i<2تذکر: ازر شرط حلقه به جای

بعد از اجرای دستورات زیر، محتویات آرایه ه تغییری خواهد کرد؟

int x[4]={1,2,3,4};

int i,j,temp;

for (i=0,j=3; i <4; i++,j--)

{

temp=x[i];

x[i]=x[j];

x[j]=temp;

}

Page 69: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 69برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

حل: محتویات آرایه هیچ تغییری نمی کند.

Page 70: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 7۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

آرایه دو بعدی

آرایه دو بعدی یا ماتریس را می توان به صورت زیر تعریف کرد:

int x[3][2] ;

بایت از فضا را اشغال می کند. 12ی است. بنابراین بایت 2خانه 6آرایه تعریف شده دارای

تعریف زیر ند بایت از حافظه را اشغال می کند؟

int a[3][2]={{50,12},{13,36},{15,20}};

بایتی است: 2خانه 6حل: در واقع آرایه دارای

0 1 12 50 0

36 13 1 20 15 2

را به صورت زیر ه مقدار دهی کرد: aوان آرایه تذکر: می ت int a[3][2] ={50,12,13,36,15,20};

در آرایه های دوبعدی ، بعد اول را می توان مشخص نکرد که با توجه به مقداردهی اولیه مشخص خواهد شد.

بعد اول آرایه زیر را مشخص نمایید؟

int x[ ][3]={1,2,3,4,5,6,7};

د اول آرایه از رابطه حل: بع

3 قابل محاس ه است.)صورت، تعداد مقداردهی های انجام شده و مخرج ، بعد دوم می باشد.( 7

با توجه به تعریف زیر، در هر خانه ه عددی قرار می زیرد؟

int a[3][3]={{1,2,3},{(4,5),6,7},8,9};

یف به صورت زیر می در نظر زرفته می شود و تعر 5و در بین پرانتی قرار دارند، فقط عدد با کاما جدا شده اند 4,5حل: ون

باشد:

int a[3][3]={{1,2,3},{5,6,7},8,9};

2

1

0 3 2 1 0 7 6 5 1 0 9 8 2

خروجی کدام است؟ int a[2][3]={{1,2},{3,(4,5)}};

for(int i=0;i<2; i++)

for(int j=0;j<3; j++)

cout<<a[i,j];

Page 71: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 71برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

}

. ال تره ازرر می باشد)ط ا خاصریت کامرا( a[j]به معنی a[i,j]آدرس را اپ می کند. ون دستور 6حل: برنامه داده شده ،

بود. 120350بود، خروجی a[i][j]دستور به صورت

آرایه های چند بعدی

باشد:بعدی می 3بعد، تعریف کرد. آرایه زیر 2می توان آرایه با ابعاد بیشتر از

int x[2][4][3];

خانه دوبایتی است. 24این آرایه دارای

مقداردهی اولیه آرایهa :

int a[3][4][2] = {{{1, 2},{3,4},{5, 6}{7,8}} ,

{{9,10},{11,12},{13, 14},{15,16}},

{17,18},{19,20},{21, 22},{23,24}}, };

آرایه زیر دارای ند عضو است؟

int a[ ][2][3]={1, 2, 3, 4, 5, 6, 7, 8};

ی کرده تا بعد اول آرایه مشخص شود:تقس 6حل : تعداد عناصر آرایه را بر

268

328

خانه است. 322بنابراین آرایه دارای

آرایه زیر دارای ند عضو است؟

int x[2 ][ ][3]={1, 2, 3,4, 5, 6,7,8};

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

توان محاس ه کرد.

تعداد عناصر آرایه زیر را بدست آورید؟

float k[ ][2][4][3]={1,2,3,4,5,6,7,8,9,10,11,12,13,14};

حل: بعد اول آرایه برابر یک است.

1342

14

بنابراین تعداد عناصر آرایه برابر است با

1 2 4 3=24

عملکرد برنامه زیر یست؟

main( ){

float x[10],min;

int i,j;

Page 72: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 72برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

for (i=0; i<10; i++) cin>>x[i];

min= x[0];

j =1;

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

if (x[i]<min ) min= x[i];

cout<<min;

}

قرار می دهد. سپس کو کترین عدد را اپ می کند. xعدد را از ورودی خوانده و در آرایه 1۰حل:

Page 73: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 73برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

رشتهصرورت ، رشته ها نروعی داده نیسرتند و برهCه می شود. اما در زبان ای به نام رشته استفادبرای ذخیره متن ها از نوعی داده

نردازه یرک واحرد اخت می شوند. بنابراین طول رشته ها را باید بره (NULL)می باشند که به رشته تهی آرایه ای از کاراکتر

رد:کیر استفاده زبیش از مقدار الزم در نظر زرفت. به طور نمونه برای ذخیره یک نام حداکثر سه حرفی، می توان از تعریف

char x[4];

توابع کار با رشته ها

عملکرد نام تابع

s=gets( ) خواندن یک رشته از ورودی و ذخیره آن درs

puts(s) نمایش رشتهs در مانیتور

strlen(s) محاس ه طول رشتهs

strupr(s) ت دیل حروف کو ک رشتهs به حروف بیرگ

strlwr(s) ت دیل حروف بیرگ رشتهs به حروف کو ک

strchr(s,ch) جستجو کاراکترch در رشتهs

strstr(s1,s2) جستجو رشتهs2 در رشتهs1

strcmp(s1,s2) مقایسه دو رشتهs1وs2

strcmpi(s1,s2) ، با این تفاوت کره برین حرروف کو رک و بریرگ تفراوتی قائرل ( ) strcmpمانند

شود.نمی

strcat(s1,s2) اتصال رشتهs2 به انتهای رشتهs1

strncat(s1,s2,n) اتصال حداکثرn کاراکتر رشتهs2 ه انتهای رشته بs1

strcpy(s1,s2) کپی رشتهs2 در رشتهs1

strncpy(s1,s2,n) کپی حداکثرn کاراکتر رشتهs2 به رشتهs1

memset(s,ch,c) کپی کاراکترch به تعدادc در رشتهs

strset(s,ch) جایگیینی کاراکترch با همه کاراکترهای رشتهs

در صورت ورودALL خروجی دستورات زیر ه خواهد بود؟ ،

char s[10];

gets(s);

cout<<strlen(s);

است. 3زرداند. بنابراین خروجی طول رشته را برمی strlenحل : تابع

Page 74: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 74برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

در مثال زیر رشته ای از ورودی خوانده شده و در آن به جای کاراکترA کاراکتر ،B :قرار می زیرد

main( ){

char s[50];

int i=5;

gets(s);

for (i=0; s[i]; i++)

if (s[i] =='A')

s[i] ='B';

puts(s);

}

در صورت ورود رشتهAB وCDEخروجی دستورات زیر ه خواهد بود؟ ،

char s1[10] ,s2[10];

gets(s1);

gets(s2);

strcat(s1,s2);

puts(s1);

خواهد بود. ABCDEکدیگر متصل کرد. بنابراین خروجی یتوان دو رشته را به ، میstrcatحل : توسط تابع

کنرد و در صرورت ، محل وجود اولین وقوع آن را مشرخص میsدر رشته chدر صورت بودن کارکتر strchr(s,ch)تابع

ن ودن کاراکتر در رشته، مقدار صفر را برمی زرداند.

ی دستور زیر یست؟خروج

if (strchr ("ABCD" ,'B' ))

cout <<"found";

وجود دارد. ABCDدر رشته Bاست. ون کاراکتر foundحل: خروجی اپ رشته

خروجی دستورات زیر یست؟

char *p;

p=strchr("ABCDEF",'C');

cout<<p;

است. CDEFحل : خروجی

زرداند و در صرورت عردم وجرود، ، محل اولین وقوع را برمیs1در رشته s2صورت بودن رشته ، در strstr (s1, s2)تابع

زرداند. مقدار صفر را برمی

خروجی دستورات زیر یست؟

if (strstr ("ABCD" , 'BC') )

Page 75: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 75برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

cout <<"found";

شود. اپ می foundوجود دارد، پیغام ABCDدر رشته BCحل: ون رشته

شوند و در صورت برابر بودن آنها، مقدار کاراکتر به کاراکتر با ه مقایسه می s2و s1، دو رشته strcmp(s1,s2)تابع در

صورت خروجی منفی خواهد بود. ، خروجی مث ت و در غیراین s1شود و در صورت بیرگ بودن صفر برزردانده می

عملکرد دستورات زیر یست؟

char s1[4]="ABC";

char s2[4]="ADE";

int i=strcmp(s1,s2);

(66-68= -2شود. )ذخیره می iدر متغیر -2یعنی مقدار Dو Bحل : اختالف کد اسکی کارکترهای

خروجی دستورات زیر، اپ رشتهGGCDEF :خواهد بود

char s[ ]= "ABCDEF";

memset (s,'G',2);

puts(s);

ر، اپ رشته خروجی دستورات زیDDD :خواهد بود

char s[ ] ="ABC";

strset(s,'D');

puts(s);

خروجی برنامه زیر در صورت ورود رشتهALI یست؟

main( ){

char s[50]; char temp ; int i ,j;

gets(s);

for(j=0; s[j]; j++);

j--;

for(i=0; i<j/2; i++)

{ temp = s[i]; s[i] = s[j-i]; s[j-i] = temp; }

puts(s);

}

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

تذکر: برنامه برای رشته با طول فرد نوشته شده است.

در برنامه زیر کدام خط رشتهali را اپ نمی کند؟

void main( ) {

char s[4];

Page 76: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 76برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

int i=0;

strcpy(s,"ali");

do putch (s[i]); while ( s[i++]!='\0'); //1

i=0 ; while (s[i++]) putch(s[i] ); //2

for(i=0; i< strlen(s); i++ ) putch(s[i]); //3

}

ه شده و بعرد یک واحد اضاف iرا اپ نمی کند، ون بعد از ک شرط حلقه، مقدار aliرشته a، کاراکتر whileر حل: دستو

ام اپ می شود. iاز آن کارکتر

Page 77: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 77برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

::: 444فصل فصل فصل (((666

یونیونیونیونیونیون ---استراکچر استراکچر استراکچر ---نوع شمارسینوع شمارسینوع شمارسی (((777

نوع شمارشی

صر تعریف با سه عن colorنوع به نام می توان یک نوع شمارشی تعریف کرد. به طور نمونه یک enumبه کمک کلمه کلیدی

می کنی :

enum color{red , green , blue}c;

ضافه می شود. به شروع می شود و یکی یکی ا ۰کامپایلر به هریک از عناصر نوع شمارشی، عددی را نس ت داده که معموالً از

ت داده می شود.نس blueبه 2و شماره greenبه 1، شماره redبه ۰طور نمونه شماره

می توان روند شماره زذاری را تغییر داد.

در تعریف زیر مقدار منتسب شده به هر یک از عناصر کدام است؟

enum x{a,b,c=5,d,e}t;

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

a=0,b=1,c=5,d= 6,e=7

شود. می 7برابر eو شماره 6برابر dری تغییر می کند و شماره ، روند شماره زذاcبه عنصر 5یعنی با انتساو

بایتی است. 2متغیر از جنس نوع شمارشی ،

تعریف زیر ند بایت اشغال می کند؟ enum size{small ,medium,large,xlarge} s1,s2 ;

بایت فضا اشغال می شود. 4ر تعریف شده است. بنابراین مقدا sizeازجنس نوع شمارشی s2وs1حل: دو متغیر

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

خروجی برنامه زیر یست؟

main( ){

enum e{x,y,z}a;

a=z;

Page 78: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 78برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

a -=2;

if(a==x)

cout<<a;

}

ستور اپ اجرا حد از آن ک می شود و ون شرط برقرار است، دشده و سپس دو وا 2یعنی zبرابر شماره aحل: ابتدا مقدار

می شود و مقدار صفر اپ خواهد شد.

خروجی برنامه زیر یست؟

main( ) {

enum e{a,b,c,d} i;

for (i=d ; i>=a; i-- )

cout<<i;

}

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

در دستورات زیر از متغیر شمارشی به عنوان اندیس آرایه استفاده شده است و کاراکترA در خانهarr[2] :قرار می زیرد

enum e {x,y,z,w}t;

char arr[4] ;

t=w;

t --;

arr[t]='A' ;

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

خروجی یست؟ enum flower { roze, violet=3 , linda , mina};

cout<<mina;

flower a=4;

cout<<(a==linda);

می باشد. 1دوم برابر coutو خروجی دستور 5اول برابر coutحل: خروجی دستور

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

Page 79: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 79برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

استراکچر

باشد. بررای تعریرف اسرتراکچر از دسرتور برای مجموعه ای از متغیرهای همنوع یا غیر همنوع میساختمان یا استراکچر، نامی

struct شود که ساختار آن به صورت زیر است:استفاده می

structنام ساختمان

{

اجیای ساختمان

};

:تعریف یک استراکچر برای نگهداری مشخصات کارمند

struct personel{

char name[20];

int id;

long int salary;

};

کنی :که برای تعریف متغیری از نوع استراکچر کارمند، به صورت زیر عمل می

struct personel x;

بالفاصله بعد از تعریف استراکچر، متغیر را تعریف کرد: توانال ته می

struct personel{

char name[20]; int id; int salary;

}x;

کل فضای اشغالی توسط تعریف زیر جند بایت است؟

struct addr {

char city[15];

char street[30];

long int zip;

}x,y;

کنی :کند را با یکدیگر جمع میفضایی که هر فیلد استراکچر اشغال می

city=15,street=30 ,zip=4

تعریف شده است، کل فضرای اشرغالی yو xکند و ون دو متغیر بایت فضا را اشغال می 49بنابراین متغیر از نوع استراکچر

بایت است. 98برابر

تمان دسترسی به اجزای ساخ

idشرود. بطرور مثرال بررای دسترسری بره جریء برای دسترسی به هر جیء، از نام متغیر و عملگر نقطه و نام جیء استفاده می

شود.استفاده می x. idاستراکچر کارمند، از دستور

مقدار دهی اولیه به ساختمان

Page 80: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 8۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

تروان اال، میاولیه به ساختمان کارمند تعریف شده در ب لیه داد. به طور نمونه برای مقدار دهیتوان به استراکچرها، مقدار اومی

به صورت زیر عمل کرد:

struct personel x = {"ali" , 1600 ,200000} ;

شود:برابر صفر در نظر زرفته می salaryازر از دستور زیر استفاده شود ، آنگاه مقدار

struct personel x = {"ali" , 1600 };

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

ز یک نوع هستند، را به یکدیگر انتساو داد.توان متغیرهای ساختمان که امی

خروجی تکه برنامه زیر یست؟

struct a{

char name[30]; float grade;

}x,y;

x. grade=17.5; y=x;

cout<< y. grade;

از همین نوع که yاست را به متغیر aکه از نوع ساختمان داده x، متغیر ;y=x اپ می شود. توسط دستور 17.5حل: مقدار

است، منتسب می کنی .

ای از ساختمانآرایه

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

شود:یره کنی ، از تعریف زیر استفاده میدانشجو را از ورودی خوانده و ذخ 2۰مشخصات

struct personel x[20];

کند؟تعریف زیر ند بایت از فضا را اشغال می

struct time {

int hour;

int minute;

int second;

} x[10];

کره x شود، بنرابراین آرایرهیبایت از فضا اشغال م 6در مجموع کند، یعنی بایت فضا را اشغال می 2حل : هر فیلد استراکچر

کند.بایت از فضا را اشغال می 6۰بایتی است. مقدار 6خانه 1۰دارای

استراکچرهای متداخل

توان استراکچرهای تودرتو تعریف کرد. یعنی استراکچری که فیلدی از آن، خود یک اسرتراکچر باشرد. در مثرال می Cدر زبان

وز است:فیلد معرف تاریخ استخدام یک کارمند یعنی سال و ماه و ر 3که استراکچر تاریخ است، شامل xر، فیلد زی

struct date {

int year;

int month;

Page 81: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 81برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

int day;

};

struct personel {

char name[30];

struct date x ;

}p;

کند:بایت را اشغال می p ،36اال متغیر در مثال ب

name=30, x=(2+2+2=6)

مقدار دهی به فیلدday باشد:در مثال باال به صورت زیر می

p.x.day=10;

شودتوسط دستور زیر مقدار دهی اولیه برای مثال باال انجام می:

p={"Ali",1363,4,1};

ند؟کتعریف زیر ند بایت از فضا را اشغال می

struct x{

int a; char b[3];

};

struct y{

float c,d;

struct x e;

}k[5];

کره kبنرابراین آرایره کند.شغال میابایت را 13مقدار yکند و استراکچر بایت از فضا را اشغال می 5مقدار xحل: استراکچر

کند.بایت را اشغال می 65بایتی است، مقدار 13عضو 5دارای

استراکچر بیتی

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

استراکچر بیتیs :به صورت زیر تعریف شده است

struct s {

unsigened char x:4;

unsigened char y:3;

unsigened char z:1;

}a;

کند.بایت را اشغال می 1یعنی بیت 8مقدار aکه متغیر

0 1 2 3 4 5 6 7

Page 82: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 82برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

x y Z

نتیجه اجرای دستورات زیر، با توجه به مثال ق ل یست؟

a.x = 10;

a.y = 3;

a.z = 0;

حل:

بعد از آن 011 یعنی y( در هار بیت ک ارزد قرار زرفته و مقدار دودویی 1010به صورت دودویی) 10یعنی xابتدا مقدار

ذخیره خواهد شد: zذخیره شده و مقدار دودویی

0 1 2 3 4 5 6 7

0 1 0 1 1 1 0 0

x y Z

توان استفاده کرد.می 16بعد از عالمت : حداکثر از عدد

را برای آن انتخاو کرد. unsignedفیلد بیتی دارای عالمت نیست و باید نوع

توان بیتهای بال استفاده در نظر زرفت.می

کند؟تعریف زیر ند بایت فضا را اشغال می

struct k{

unsigened a:5; unsigened :2; unsigened b:1;

}s;

بال استفاده است( 6و 5کند.) بیتهای شماره بایت را اشغال می 1بیت یعنی 8، مقدار sحل : متغیر

کند؟ریف زیر ند بایت را اشغال میتع

struct s{

int a; unsigened b:10; unsigened c:3;

}x;

کند:بایت را اشغال می 4مقدار xمتغیر حل :

4 228

132

Page 83: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 83برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

خروجی دستورات زیر یست؟

struct s{

unsigened a: 4; unsigened b: 2;

}x; x.a=23;

cout<<x.a;

شرود و یذخیرره م aدر متغیر بیتری 7بیت اول یعنی 4ذخیره می شود. که 00010111در م نای دو یعنی 23حل : مقدار

است. 7خروجی اپ عدد

مری publicو privateال ته می توان استراکچر را مانند کالس تعریف کرد. در این حالت استراکچر دارای دو قسرمت

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

struct s{

private : int x;

public: s(int b) {x=b};

int f( ) {cout <<x;} };

void main( ) {

s a(1); a.f( );

}

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

اختیاری است( privateاختیاری است.)در کالس استفاده از publicتذکر: استفاده از کلمه

Page 84: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 84برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

یونیون ها

متغیرهرا یونیون، محلی از حافظه است که توسط دو یا ند متغیر بطور اشرتراکی مرورد اسرتفاده قررار مری زیررد کره ایرن

ساختمانی است کره آدرس شرروع کلیره اجریای آن از یرک union . در واقعتوانند بطورهمیمان از این فضا استفاده کنندنمی

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

union <نام >{

اجیاء

; نام متغیر {

با توجه به تعریف زیر، فضای اشغالی توسط متغیرz بایت است، ون طول 4برابرa و طرول 2برابررb اسرت و 4برابرر

بیرزتر است. bطول

union u{

int a;

float b;

}z;

بعد از اجرای دستورات زیر ه مقداری درb[1] قرار خواهد زرفت؟

union u{ int a; char b[2];

}x;

x.a = 265 ;

حل:

مری قررار b[1]بیت پرارزد آن معرادل عردد یرک در 8که (۰۰۰۰۰۰۰1۰۰۰۰1۰۰1برابر است با : ) 2در م نای 265عدد

زیرد.

خروجی دستورات زیر کدام است؟

union a{int x; char y[2]; }u;

u.y[0]=35;

u.y[1] =2;

cout<<u.x;

حل:

می باشد. 547خروجی

547352562

Page 85: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 85برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

Page 86: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 86برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

اندازه حافظه واحدt ند بایت است؟

union s{

float a; int b;

union u{long int d ;char e[3];}c;

}t ;

حل:

، به اندازه بیرزترین tر بایت را اشغال می کند. بنابراین متغی 4مقدار cبایت و متغیر 2مقدار bبایت، متغیر 4مقدار aمتغیر

بایت فضا اشغال می کند. 4آنها یعنی

حافظه واحد اندازهt ند بایت است؟

union s{

float a;

int b;

struct u{

long int d ;

char e[3];

}c;

}t ;

حل:

، به اندازه بیرزتررین tر را اشغال می کند. بنابراین متغی بایت 7مقدار cبایت و متغیر 2مقدار bبایت، متغیر 4مقدار aمتغیر

بایت فضا اشغال می کند. 7آنها یعنی

محتویاتx[0] وx[1] ه خواهد شد؟

union u{

int a;

char x[2];

}y;

y.a =100;

فت.قرار خواهد زر x[0]در 1۰۰و مقدار x[1]حل: مقدار صفر در

کند؟ تعریف زیر ند بایت از فضا را اشغال می struct s {

int i;

float f;

union u{char ch;double d;} a;

}b[2];

حل:

Page 87: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 87برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

( 2+4+8، مقدار ) aو fو iبا سه فیلد sستراکچر کند. بنابراین ابایت از فضا را اشغال می 8است و مقدار unionاز نوع aمتغیر

کند.بایت را اشغال می 28بایتی مقدار 14با دو خانه bکند. در نهایت آرایه بایت را اشغال می 14یعنی

Page 88: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 88برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

یونیون گمنام

ون بره یرن نروع یونیرایونیون بدون نام، نوع خاصی از یونیون می باشد که نام ندارد و نمی توان از آن اشیایی را تعریف کررد.

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

استفاده از عملگر نقطه نمی باشد.

می باشد: 2خروجی دستورات زیر

union {

int x;

double y;

};

x=2;

cout<<x;

++cها در زبان نکاتی در رابطه با یونیون

د.تذکر: ازر با مفاهی کالس آشنایی ندارید، این نکات را بعد از مطالعه فصل های آموزد کالس مطالعه کنی

باشد. می تواند عالوه بر اعضای داده ای، حاوی توابع عضو نیی ++cیونیون در -1

ونیون نمی تواند کالس دیگری را به ارث ب رد. ی -2

ی توانند از یونیون به ارث ب رند.کالس های دیگر نم -3

و یونیون نمی توانند مجازی باشند.توابع عض -4

ن نمی توانند استاتیک باشند.اعضای یونیو -5

ی یونیون نمی توانند از نوع مرجع باشند.اعضا -6

یئی که دارای سازنده یا مخرو است، نمی تواند از یونیون استفاده کند.ش -7

Page 89: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 89برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

::: 555فصل فصل فصل (((888

اشاره زراشاره زراشاره زر (((999

نکه به ره نروع ، هر متغیر اشاره زر بدون توجه به ای Cشاره زر متغیری است که حاوی آدرس متغیر دیگری است. در زبان ا

یف اشاره زر بصورت زیر است: کند. فرم کلی تعربایت را اشغال می 2کند، مقدار داده ای اشاره می

نوع داده *نام اشاره زر ;

: intاز نوع pمثال اشاره زر

int *p;

انواع اشاره گر

اشاره زر به نوع -1

اشاره زر به اشاره زر -2

اشاره زر به تابع -3

voidاشاره زر به -4

خروجی برنامه زیر یست؟

main( ){

int x=5;

int *p;

p=&x;

cout <<*p;

}

p*شود. در دستور اپ مقردار زذاشته می pر متغیر اشاره زر د xشود. سپس آدرس قرارداده می xدر متغیر 5حل: مقدار

شود.کند، اپ میبه آن اشاره می pیعنی محتوای محلی که

زیرد.در مورد اشاره زرها مورد استفاده قرار می &و*دو عملگر

ازرp اشاره زری از نوعint حافظه اشاره کند، با اجرای دستور 100باشد و به محلp ++ دید اشراره زرر ، محتویات جp ،

بایت است.( 2برابر intخواهد شد. ) ون طول نوع 102برابر با

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

عملکرد دستورات زیر یست؟

float x,*p;

p=&x;

cin>>p;

دهد. قرار می xدر متغیر حل : عددی را از صفحه کلید زرفته و

Page 90: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 9۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

خروجی برنامه زیر یست؟

main( ){

int x=2,y=3,*p;

p =&x;

p--;

cout<<*p;

}

y ون زودترر از xاشاره خواهد کرد. )متغیر yبه --pکند و بعد از دستور اشاره می xبه pشود. ابتدا اپ می 3مقدار حل :

ارد(. در ایرن قررار د 98در آدرس yباشرد، متغیرر 100در آدرس xآدرس بیشتری قراردارد. مثالً ازرر تعریف شده است، در

زیرند:مثال متغیرها بصورت زیر در حافظه قرار می

y 3 98 X 2 100

خروجی برنامه زیر یست؟

main( ){

int x=2,y =3,*p,*q;

p=&x;

q=&y;

q=p;

cout<<*q;

}

اشاره می کند: 3با مقدار yبه qو اشاره زر 2با مقدار x به pحل: در ابتدا اشاره زر

نی هر دو به متغیر به آن اشاره می کند، یع pبه همان آدرسی اشاره خواهد کرد که q، اشاره زر ;q=pو بعد از اجرای دستور

x اشاره خواهند کرد:

2 3

2 3

Page 91: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 91برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

خروجی برنامه زیر یست؟

main( ){

int a=2,*p;

void *q;

q=&a;

p=q

cout<<*p;

}

ا در اشاره زر ربکار رفته است. برای اپ عدد، مجدداً آدرس آن aبرای نگهداری آدرس عدد صحیح (q)حل : اشاره زر تهی

اپ می شود. 2ر داده و مقدار همنوع عدد قرا

دهد. کند، باید یکسان باشد، در غیر اینصورت خطای منطقی رخ مینوع هر متغیر با نوع اشاره زری که به آن اشاره می

باشد.می ;void *pیف آن به صورتشود که فرم تعراستفاده می (void)برای رفع این مشکل از اشاره زر تهی

در برنامه زیر ازر آدرس x برابرA9 و آدرسy برابرBC باشد، آنگاه کدام درست است؟

int x=1, y=2;

int *px ,*py;

py=&y;

*py=y+1;

x =*py+1;

px=py;

*px=x+y;

است. BCبرابر px( مقدار 2است. 7برابر y( مقدار 1

( همه موارد4است. 7برابر px*( مقدار 3

حل:

اضافه yر قرار داده می شود و سپس یک واحد به متغی pyدر y، آدرس ;py=&yدرست است. ابتدا به کمک دستور 4زیینه

، اشراره ;px=pyخواهد شد. و بعد از اجرای دستور 4برابر x، مقدار ;x=*py+1می شود. سپس توسط دستور 3شده و برابر

ر نهایت مقدار داشاره می کند، اشاره خواهد کرد و pyبه همان جایی که pxپر می شود، یعنی BCیعنی pyبا مقدار pxزر

y خواهد شد. 7برابر

به کمک اشاره گر constتغییر مقدار

به صورت زیرر عمرل مری 6ه ب 5از xمقدار ثابت را تغییر داد. به طور مثال برای تغییر مقدار ثابت توان به کمک اشاره زر می

کنی :

const int x=5;

int *p;

p= &x;

Page 92: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 92برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

*p=6;

constاشاره گر از نوع

ی تروان محتروای ا نمرتعریف کرد. در این حالت می توان محتوای اشاره زرر را تغییرر داد، امر constمی توان اشاره زر از نوع

می شود: 2ر آدرسی که اشاره زر به آن اشاره می کند را تغییر داد. به طور مثال، اجرای دستورات زیر موجب اپ مقدا

const int *p;

int x=2;

p=&x;

cout<<*p;

موجب خطای کامپایلری می شود. ;p=6* و اجرای دستوری مانند

در یست؟ qبا pسئوال : تفاوت

const int *p;

int *const q;

را نمری تروان qو آدرس pیک اشاره زر ثابت است. بنرابراین محتروای qاشاره زر به متغیر ثابت است و متغیر pحل: متغیر

تغییر داد. بنابراین دستورهای زیر نادرست است:

*p=2;

q=&x;

گر با آرایه رابطه اشاره

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

تروان کند. برای دسترسی به عناصر آرایه عالوه بر انردیس، از اشراره زرر نیری میآرایه آدرس اولین عنصر آرایه را مشخص می

استفاده کرد.

ازر آرایه ای به صورتint x[3]; نام و اشاره زری بp به صورتint *p; ر تعریف کررده باشری ، آنگراه دسرتوp=&x[0]; ،

، معرادل (p+1)*باشد(. در این حالرت می ;p=xر دهد. )این دستور معادل دستوقرار می pآدرس شروع آرایه را در اشاره زر

x[1] باشد و در حالت کلی می*(p+i) بهi +1 کند.امین عنصر آرایه اشاره می

وجی برنامه زیر یست؟خر

main( ){

int i ; int x[3] = {5,2,8};

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

cout <<*(x+i);

}

اپ خواهد شد. 528حل: محتویات آرایه یعنی

Page 93: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 93برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

باشد.می (x[i]+j)*معادل با x[i][j]یک آرایه دو بعدی باشد، آنگاه xازر

باشد.می x[i]+jمعادل با x[i][j]&شد، آنگاه یک آرایه دو بعدی با xازر

خروجی برنامه زیر یست؟

main( ){

int x[5]={1,2,3,4,5};

int *p,*q;

p=x;

q=x+4;

for( ; q>=p ; q --)

cout<<*q;

}

ت آرایه از آخرر بره د. سپس توسط حلقه محتویابه خانه آخر اشاره خواهد کر qبه خانه اول و اشاره زر pحل: ابتدا اشاره زر

می باشد. 54321اول اپ می شود. بنابراین خروجی

خروجی دستورات زیر کدام است؟

int x[3][4]={{1,2,3,4}, {5,6,7,8} ,{9,10,11,12}};

cout<<*(x[1]+2);

می باشد.( x[1][2]همان (x[1]+2)* اپ می شود. )منظور از 7عدد حل:

،هستند؟ نادرستکدام خط ها

void main( ) {

void *q; int *p; int a[3]={5,8,2}; q=p=a;

a++ ; //1

p++; //2

q++; //3

cout<<*p; //4

cout<<*a; //5

}

ست است، ون نادر 3نادرست است، ون نمی توان از عملگر ++ برای اس آرایه استفاده کرد. خط شماره 1حل: خط شماره

را نمی توان تغییر داد. voidاشاره زر از نوع

3 2 1 0

4 3 2 1 0

8 7 6 5 1

12 11 10 9 2

Page 94: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 94برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

اشاره گرها و رشته ها

شوند.به صورت آرایه تعریف می cارند. ون رشته ها در زبان رشته های ارت اط بسیار نیدیکی با اشاره زرها د

ت دیل کلیه حروف کو ک رشتهs :به حروف بیرگ

char *s;

gets(s);

while(*s) {

if(*s>='a' && *s<='z') *s=*s -32;

s++;

}

است.( 32)یادآوری : اختالف کد اسکی حروف کو ک و بیرگ برابر

محاس ه تعداد دفعات تکرار کاراکترA در رشتهs :

int c=0;

while(*s)

if (*s++='A') c++;

cout<<c;

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

زردند.مییان حافظه می باشند، موجب صرفه جویی در

بایت از حافظه اشغال شود: 24شود که تعریف زیر موجب می

char name[3][8]={"omid","ali","mohamad"};

7 6 5 4 3 2 1 0

\0 d i m o 0

\0 i l a 1

\0 d a m a h o m 2

ین نام است. ل طوالنی تراد افراد و تعداد ستون ها برابر با طودر هنگام استفاده از آرایه دو بعدی، تعداد سطرها برابر با تعد

char *name[3]={"omid","ali","mohammad"};

\0 d I m o 0

\0 I l A 1

\0 d a m a H o m 2

Page 95: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 95برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

زر است.خانه از نوع اشاره 3کند. ون آرایه دارای بایت از حافظه را اشغال می 6تعریف باال

تعدادی نام از ورودی و قرار دادن در یک آرایه :خواندن

main( ){

char x[20][81];

char *p[20];

int c=0;

while(c<20) {

gets(x[c]);

if (strlen (x[c] ) == 0 )

break;

p[c]=x[c];

c ++;

}

}

Page 96: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 96برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

)عملکرد دستورات زیر یست؟ )با توجه به مثال ق ل

for (i =0 ; i <c-1; i++)

for (j=i+1;j <c; j++)

if (strcmp(p[i],p[j])>0)

{ temp=p[j]; p[j]=p[i]; p[i]=temp; } دریافت شده از ورودی در مثال ق ل. حل : مرتب کردن اسامی

ت زیر یست؟خروجی دستورا

char * s[ ]={"ali","farshid","omid"};

cout<<s[1];

cout<<*s[1];

است. fدوم، اپ کاراکتر coutاست. خروجی دستور farshidاول، اپ رشته coutحل: خروجی دستور

حتوای آدرس بعدی.، یعنی م ;p++*کند و دستور به آن اشاره می p، یعنی افیایش محتوای آدرسی که ;p*++دستور

رو، خروجی کدام است؟ ی روبهدر برنامه

main( ){

char *p="ALIREZA"; cout <<*p; cout <<*++p;

cout <<++*p;

}

راکتر بعردی، را اپ کرده و توسط دستور دوم اشاره زر به کا A اپ می شوند. دستور اول کاراکتر ALMحل: کاراکترهای

M، یعنری در حرروف الف رای انگلیسری Lاشاره کرده و آن را اپ می کند. سپس توسط دستور سوم کاراکتر بعد از Lی یعن

اپ می شود.

خروجی دستورات زیر کدام است؟

char *x ="A";

char y = 'B';

char z[2]="C";

cout <<*x;

cout <<y;

cout <<z[0];

وتیشرن کرشته می باشند و هنگام مقردار دهری نیراز بره دابرل zوx اپ می شوند. )توجه کنید که ABCحل: کاراکترهای

دارند.(

Page 97: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 97برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

عملکرد برنامه زیر کدام است؟

char *p1,*p2, a[10] ,b[10];

char m[ ] ="ABCD";

i=0;

while ((a[i]=m[i])!='\0')

i++;

p1=m; p2=b;

while((*p2++ =*p1++)!= '\0');

وم، دکپری شرده و توسرط حلقره aدر آرایه mکپی می شود. توسط حلقه اول رشته bو aدر آرایه های ABCDحل: رشته

کپی می شود. bبه کمک اشاره زرها در آرایه m رشته

به استراکچر اشاره گر

می توان یک متغیر اشاره زر از نوع استراکچر تعریف کرد :

struct s{ int x; char y; }*p;

باید استفاده کرد. به طور نمونه: <-در این حالت برای دسترسی به فیلدهای استراکچر از عملگر

p->x =5;

اشاره گر به اشاره گرها

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

رنامه زیر یست؟خروجی ب

main( ){

int x ,*p ,**q;

x=5; p=&x;

q=&p;

cout<<**q;

}

کند.اشاره می pبه qکند و متغیر اشاره زراشاره می xبه p اپ می شود. متغیر اشاره زر 5حل: عدد

خروجی برنامه زیر یست؟

main( ){

int x =6, *p1,**p2;

p2=&p1; *p2=&x;

**p2=*p1-1;

cout<<x;

}

5

Page 98: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 98برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

xبه p1ط ، معادل برقراری اتصال خ;p2 = &x*، اجرای دستور ;p2=&p1 اپ می شود. بعد از اجرای دستور 5حل : عدد

خواهد شد:

اشاره گر آویزان

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

int main( ){

int a=1;

int *p;

*p=a;

}

در واقرع در ، آدرسی نس ت داده نشده است و یک اشاره زرر آویریان محسروو مری شرود. pدر این برنامه به متغیر اشاره زر

استفاده می ;p=&aقرار داده شده است.در واقع باید از دستور 1به آن شاره می کند، مقدار pآدرسی که به طور پیش فرض

شد.

زباله

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

int main( ){

int a=1,b=2;

int *p,*q;

p=&a;

q=&b;

p=q;

}

به همان محلی p، اشاره زر ;p=qذخیره می شود ولی بعد از اجرای دستور qدر bو آدرس متغیر pدر aابتدا آدرس متغیر

خواهد برود و بره نقابل دسترس pدیگر از طریا اشاره زر aیر اشاره می کند، اشاره خواهد کرد. در نتیجه متغ qکه اشاره زر

یک زباله ت دیل می شود.

متغیرهای پویا

در حافظره (SS)و پشرته (CS)، کرد (DS)نامه و قرار زرفتن آن در حافظه، سگمنت های داده دانی که با اجرای یک برمی

را که در اختیار برنامه نیست را حافظره پویرا RAMو بقیه حافظه کندکیلو بایت را اشغال می 64زیرند. هر سگمنت قرار می

(Heap) زویند. متغیرهای سراسری در میDS متغیرهای محلری در ،SS لهای برنامره در و دسرتورالعمCS زیرنرد. قررار می

newاز حافظه پویا از ترابع شود. برای زرفتن فضاکیلوبایتی از حافظه پویا استفاده می 64بنابراین برای رفع محدودیت اندازه

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

6 P1 P2

Page 99: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 99برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

استفاده می شود. deleteبه جای freeو از newبه جای mallocاز cتذکر: در زبان

س ه اندازه شری برای محا sizeofنیازی به استفاده از newمی باشد. در دستور mallocساده تر از newتذکر: کار با دستور

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

Page 100: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

متغیر مرجع می تواند بره می توان متغیرهای مستقلی از نوع مرجع تعریف کرد. مرجع، نوع خاصی از اشاره زر است،که فقط ++cدر زبان

ر ر بررای متغیرو این متغیر باید در هنگام تعریف متغیر مرجع مشخص شود. به ع ارتی مرجع، نرام دیگر یک متغیر اشاره کند

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

ندارد: aمستقل می باشد و هیچ تفاوتی با متغیر ، مرجع bنمی باشد. در مثال زیر متغیر &استفاده از

main( ) {

int a;

int &b;

a=1;

b=a;

...

}

این کار ممکن نمی باشد. cمی توانند رفرنس نیی برزردانند که در زبان ++cتذکر: توابع در زبان

است: 53خروجی برنامه زیر

main( ){

int a;

int &p=a;

a=5;

cout<<p;

p=3;

cout<<a;

}

می باشد: 4خروجی برنامه زیر

int a=1;

int &f( ) { return a; }

main( ){

f( ) =2;

cout<< a + f( );

}

aو مقدار ( 2مجموع خروجی تابع )یعنی coutمی شود و در خط 2برابر mainبعد از خط اول تابع aمقدار متغیر سراسری

( اپ می شود.2)یعنی

آرایه ای از مرجع ها نمی توان تعریف کرد.

Page 101: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰1برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

برای یک مرجع نمی توان مرجع دیگری تعریف کرد.

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

Page 102: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰2برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

666فصل فصل فصل (((101010

تابعتابعتابع (((111111باشند ولی در برنامه های طوالنی و پیچیده کره از نرد بخرش می mainنام برنامه های کوتاه فقط شامل یک تابع اصلی به

متها کنی . هریک از این قستقری اً مستقل تشکیل شده اند، برای هرقسمت، یک برنامه نوشته و سپس آنها را به ه متصل می

به صورت شکل زیر است : cزویند، که در زبان را یک زیر برنامه می

>نوع خروجی تابع < >تابع <ترها ( )نام پارام

تعریف پارامترها

{

بدنه تابع

}

شود.در نظر زرفته می intازر نوع خروجی تابع مشخص نشود، نوع

تعیین نوع پارامترها در حین تعریف تابع نیی امکان پذیر است.

خروجی برنامه زیر یست؟

int f (int);

main( ){

int x=3;

cout<< f (x);

}

int f(int a)

{

return(a+2);

}

را بر 5مقدار fتابع صدا زده می شود و 3با مقدار fاعالم شده و سپس تابع f، یک تعریف اولیه از تابع ( )mainحل: ابتدا در

می زرداند.

ن به یکی از روشهای زیر عمل کرد: می توا fبرای تعریف متغیرهای رسمی تابع

int f (x,y )

int x; char y;

{

...

} و یا :

int f (int x , char y)

{

Page 103: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰3برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

}

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

float area(float);

main( ){

float x;

cin>>x;

cout<< area(x);

}

float area(float r)

{

return (3.14*r*r);

}

خروجی برنامه زیر یست؟

int f1(int, int);

main( ){

int x,y;

x=2;

y=4;

cout<< f1(x, y);

}

f1(int a,b)

{return (f3 (f2(a) , f2(b))); }

f2(int c)

{return(c+c); }

f3(int m,n)

{return(m*n); }

زردانرد و را برمی 4شده و مقردار انی فراخو 2یک ار با مقدار f2شود و سپس تابع فرستاده می f1به تابع 4و 2مقادیر حل :

را 32شرود و مقردار یمفراخروانی 8و 4برا مقرادیر f3 را برمی زرداند. در نهایت تابع 8ر فراخوانی و مقدا 4یک ار با مقدار

شود. زرداند و در تابع اصلی اپ میبرمی

.می باشد voidزردانند. نوع خروجی این توابع بعضی از توابع مقداری را به تابع صدا زننده بر نمی

ت:اس 6خروجی برنامه زیر، اپ مقدار

void f (int);

main ( ){

Page 104: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰4برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

int x=3;

f(x);

}

void f (int a)

{

cout<<a*2;

}

شوند، فقط در همان تابع قابل استفاده هستند و به محض برزشت کنترل اجرای متغیرهایی که در یک تابع تعریف می

زویند.می (Local)ن متغیرها، محلی روند. به ایبرنامه از آن تابع ، این متغیرها از بین می

خروجی برنامه زیر یست؟

f( );

main( ){

int a=5;

f( );

cout<<a;

}

f( ){

int a=6;

cout<<a;

}

شود. می اپ ( )mainدر تابع 5شود و سپس مقدار در تابع اپ می 6حل : ابتدا مقدار

باشد و در بخش مجیا در حافظه قرار دارند.کامالً جدا می ( ) fداخل aاز متغیر ( )mainداخل aتذکر: متغیر

عملکرد تابعf یست؟

void f(char *s1, const char *s2)

{

while(*s1 != '\0')

++s1;

for( ;*s1=*s2 ; s1++ ; s2++);

}

اضافه می کند. s1را به انتهای رشته s2یرفته و رشته را به عنوان آرزومان پذ s2و s1دو رشته حل:

Page 105: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰5برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

cانواع فراخوانی تابع در زبان

(call by Value)فراخوانی توسط ارزد -1

(call by Reference)فراخوانی توسط ارجاع -2

هرا ، ونره تغییرری در پارامترشود. بنابراین هرز، مقدار آرزومان تابع در پارامتر متناظر با آن کپی می call by Valueدر رود

ع صردا زننردههیچگونه تاثیری در مقدار آرزومان نخواهد داشت. یعنی هیچ مقداری توسط پارامترهرا و آرزومران هرا بره تراب

شرود. بنرابراین در کپری می ، آدرس آرزومان به جای آرزومان در پرارامتر call by Referenceشوند. در رود برزردانده نمی

ارامتر پرزیرد. بنابراین هر تغییرری در ا زننده، آدرس آرزومان برای دسترسی به آرزومان مورد استفاده قرار میداخل تابع صد

موجب تغییر در آرزومان خواهد شد.

خروجی یست؟

f (int );

main( ){

int a=3;

f(a);

cout<< ("%d",a);

}

f (int x) {

x=5;

}

(call by Valueشود. )رود اپ می 3حل: عدد

خروجی یست؟

f (int *) ;

main( ){

int a=3;

f(&a);

cout<<a;

}

f (int *x)

{*x=5;}

(call by Refrence اپ می شود. )رود 5حل: عدد

خروجی برنامه زیر یست؟

k(int *,int) ;

main( ){

int x,y; x=3; y=5;

k(&x,y);

cout<<x ,y;

}

k (int *a ,int b) {

*a=*a+3;

Page 106: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰6برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

b=b+1;

}

د که کند.)توجه کنیتغییری نمی yشود، اما مقدار برزردانده می 6یعنی x اپ خواهد شد. مقدار جدید متغیر 65حل : عدد

به رود با مقدار فراخوانی شده است.( yبه رود با ارجاع و متغیر xمتغیر

(global)و سراسری (Local)یرهای محلی متغ

ان ر محدوده همدمتغیرهایی که در داخل یک تابع و پایین یک جفت آکوالد تعریف شوند، محلی نام دارند. این متغیرها فقط

شوند، سراسری نام دارنرد. همره تروابعی کره در تعریف می mainبلوک شناخته شده اند. همچنین متغیرهایی که ق ل از تابع

شناسند.تعریف می شوند، متغیرهای سراسری را می mainپایین

شوند.ساخته می data segmentمتغیرهای محلی در پشته و متغیرهای سراسری در

مقدار اولیه متغیرهای محلی، نامعلوم و مقدار اولیه متغیرهای سراسری، صفر است.

عدد از ورودی و محاس ه مجموع مربعات آنها 3دریافت :

int x,y;

int s=0;

f1( ){ cin>>x; f2( ); s+=y;}

f2( ){ y=x*x ;}

main( ){

int i;

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

f1( )

cout<<s;

}

است. استفاده شده بدون تعریف این متغیرها، ( )f2و ( )f1سراسری هستند و از آنها در توابع s, y,xدر این مثال، متغیرهای

درصورتی که یک متغیر محلی همنام با یک متغیر سراسری باشد، با تغییر متغیرر محلری در ترابع، تغییرری در متغیرر

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

خروجی برنامه زیر یست؟

int a;

f2( ){ int a; a=5;}

f1( ){ f2( ); cout<< a; }

main( ){

a=10;

f1( );

}

Page 107: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰7برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

حلری تعریرف شرده اسرت، م ( )f2کره در داخرل aتعریف شده است، سراسری و متغیرر ( )mainکه خارج از aل : متغیر ح

تعریف شرده اسرت و تغییرر آن تراثیری در ( )f2، مراجعه به متغیری است که در ( )f2داخل aباشد. بنابراین مراجعه به می

خواهد بود. 1۰نخواهد داشت و خروجی aمقدار متغیر سراسری

استفاده در مواقعی که توابع موجود در برنامه به متغیرهای مشترکی نیاز داشته باشند، بهتر است از متغیرهای سراسری

شود.

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

ه اختصراص برای متغیرهای سراسری، حافظ یادی اشغال خواهد شد. در شروع اجرای برنامهنشوند، ون مییان حافظه ز

شود.جرای برنامه، این حافظه از متغیرها زرفته مییابد و بعد از پایان امی

خروجی کدام است؟

void main( ){

int x=2;

cout<<x;

{

int x=3;

cout<<x;

}

cout<<x;

}

است. 232حل: خروجی

می شود. 233دارد را بردارید، خروجی 3ای که مقدار xق ل از intتذکر: ازر

::عملگر

شرد، دسترسری به محتویات یک متغیر سراسری در تابعی که دارای متغیری ه نام با آن مری با ::می توان به کمک عملگر

پیدا کرد.

خروجی یست؟

int x=3;

void main( ){

int x=1;

x=::x-x;

cout <<::x<<x;

}

Page 108: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰8برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

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

می باشد: 32این برنامه

Page 109: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 1۰9برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

ارسال آرایه به تابع

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

دهد و سپس بیرزترین عنصر آرایه را توسط تابع عدد را از ورودی خوانده و در آرایه ای قرار می 1۰برنامه زیرmax ا پیرد

کند. کرده و اپ می

max(int [ ] );

main( ){

int a[10];

int i;

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

cin>>a[i];

cout<< max(a);

}

max(int b[ ] ){

int k, m;

m=b[0];

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

if (b[k] > m)

m=b[k];

return(m);

}

استفاده کرد. int *bاز [ ]int bتوان به جای می maxتذکر: در تعریف

جی برنامه زیر یست؟خرو

f(int [ ]);

main( ){

int x [5]={1,2,3,4,5};

int m;

m=f(x[3]);

cout<<m;

}

f(int y[ ]){

return(y[0]);

}

ود. شرشود و مقدار خانه اول آرایه ارسال شده توسط ترابع برزردانرده میبه بعد صدا زده می 3از خانه با اندیس xحل : آرایه

است. 4بنابراین خروجی

خروجی برنامه زیر یست؟

void k(int a[ ][2]);

main( ){

int x[3][2]={1,2 ,3,4, 5,6};

k(x);

Page 110: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 11۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

}

void k(int a[ ][2]){

cout<< a[2][1];

}

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

باشرد. بنرابراین راکت دوم شامل تعداد سرتونها میبخالی و ، براکت اول kشود و در هنگام معرفی در تابع براکت استفاده نمی

است. 6خروجی

برای ارسال آرایه ند بعدی به تابع، تمام ابعاد به جی اولین بعد را باید مشخص کرد.

ست؟خروجی برنامه زیر ی

void f (char [ ][5] ,int );

void main( ){

char x[ ][5]={"AB","mnp","AB","OR"};

f(x,4);

cout<< x[2] ;

}

void f (char y[ ][5] , int row){

int i;

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

if (!strcmp (y[i] ,"AB"))

strcpy (y[i],"EF");

}

خواهرد EFبرابرر x[2]کنرد. بنرابراین خروجری ت دیل می EFهستند را به رشته ABهمه رشته هایی که برابر fحل: تابع

بود.

استفاده از مقادیر پیش فرض

ازر به پارامتری در هنگام صدا زدن تابع، مقداری داده نشود، از مقدار پیش فرض اد استفاده می کند.

رو به رو، خروجی کدام است؟ در برنامه ی

int f( int =1, int =2);

void main( ){

cout <<f( );

cout << f(3);

cout <<f(4,5);

}

int f( int a , int b)

{

return a+b;

}

Page 111: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 111برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

می باشد. 9 دستور سوم و 5، دستور دوم 3حل: خروجی دستور اول

ندارد: prototypeقرار داد که دیگر لیومی به خط mainرا ق ل از fمی توان تابع

int f( int a=1 , int b=2)

{

.........

}

void main( ){

.....

}

Page 112: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 112برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

اشاره گر به تابع

توان تابعی را بعنوان آرزومران بره یمره زر به تابع شود. توسط اشابرای نگهداری آدرس تابع ها از اشاره زر تابعی استفاده می

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

( نوع داده*)لیست پارامترها( )نام اشاره زر ;

تعریف زیرمعرف این است که متغیرp تواند آدرس همه تابع هایی را که پارامتر آنها از نوع میint خروجری آنهرا از است و

باشد، را نگهداری کند. floatنوع

float (*p) (int a);

را فراخوانی کرد: ;float f(int)توان تابع مثالً به کمک اشاره زر می

p =f;

n =(*p) (m);

است.( floatاز نوع nو intاز نوع mاست.) n= f(m)که معادل

در برنامه زیرp اشاره زر به تابعf است و خروجی اپ پیغامok :است

void f( );

main( ) {

void (*p)( );

p=f;

p( );

}

void f( ) {

cout<< "ok";

}

که از توابع کتابخانه ای رشته ای است از این نوع محسوو strchrتواند از نوع اشاره زر باشد. تابع خروجی یک تابع می

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

char *strchr (char *s, char ch)

{

int i;

for ( i=0 ; s[i]! = '\0' ; i ++)

if (ch == s[i])

return (&s[i]) ;

return NULL;

}

Page 113: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 113برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

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

.غیر ثابت داشته باشی . ون وقتی که اشاره زر ثابت باشد، امکان تغییر آن درون بدنه تابع نمی باشد

Page 114: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 114برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

تابع بازگشتی

رط جهرت انجرام . ایرن توابرع دارای یرک شرباشدمی(Recursive)تابعی که درون بدنه خود، خود را فراخوانی کند، باززشتی

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

خروجی تابع زیر به ازایn=4 قدر است؟

int fact (int n){

if (n== 1)

return 1;

else

return n* fact (n-1);

}

حل :

fact (4) = 4* fact (3) = 4 * 6 = 24

fact (3) = 3* fact (2) = 3 * 2 = 6 fact (2) = 2* fact (1) = 2 * 1 = 2

خروجی تابع زیر به ازایn=4 , m=3 یست؟

int mul (int m, int n){

int ans;

if (n==1) ans=m;

else ans=m+mul (m,n-1);

return(ans);

}

ل :ح

mul(3,4) = 3+ mul (3,3)

mul(3,3) = 3+ mul (3,2)

mul(3,2) = 3+ mul (3,1)

، داری : mul (3,1) =3و ون

mul(3,2) = 3+3 = 6

mul(3,3) = 3+6 = 9

mul(3,4) = 3+9 =12

باشد.می 12یعنی 4و 3یعنی خروجی ضرو

تابع زیر ه عملی انجام می دهد؟

int f( int a, int b) {

if(b==1) return a;

else return(f (a,b-1)*a);

}

می رساند. مثال : bرا به توان aحل: تابع داده شده

Page 115: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 115برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

f(2,3)=f(2,2)*2=4*2=8

f(2,2)=f(2,1)*2=2*2=4

f(2,1)=2

عملکرد تابع زیر کدام است؟

int k(char ch,const char *str){

int x;

if(str[0] == '\0')

x=0;

else if(ch == str[0] )

x=1+k(ch,&str[1]);

else

x=k(ch ,&str[1]);

return(x);

}

را می شمارد. strموجود در رشته chبه طور باززشتی، تعداد کاراکترهای k حل: تابع

آرایه عملکر تا(بع زیر یست؟x 7و6و5خانه شامل اعداد 3دارای )می باشد(n=3)

int f(int x[ ],int n)

{

if(n==1)

return x[0];

else

x[n-1]+f(x,n-1);

}

، مجموع خانه های آرایه را محاس ه می کند:fحل: تابع

f(x,3)=x[2]+f(x,2)=7+11=18

f(x,2)=x[1]+f(x,1)=6+5=11

f(x,1)=x[0]=5

( عملکرد تابع زیر کدام است؟n )تعداد عناصر آرایه :

void f(int x[ ] , int n)

{

if(n>0)

{

f(&x[1],n-1);

cout<<x[0];

}

}

از انتها به ابتدا. xحل: اپ محتویات آرایه

کالس های حافظه

Page 116: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 116برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

ز:اهای حافظه ع ارتند شود. انواع کالسعمر متغیر و حوزه متغیر مشخص می توسط کالس حافظه طول

(extern)خارجی -4 (static)استاتیک -3 (register)ث ات -2 (auto)اتوماتیک -1

کالس حافظه اتوماتیک

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

باشد.برای آنها نمی autoکالس هستند، بنابراین نیازی به ذکر کلمه

کالس حافظه ثبات

شرود. در ایرن حالرت سررعت انجرام محاسر ات در ث ات ها ذخیره می RAM، به جای حافظه registerمتغیر از نوع کالس

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

نظر بگیری .

در نظر زرفت. registerتوان از نوع کالس متغیرهای سراسری را نمی

برای آنها ن اید استفاده شود. &ندارد. یعنی از عملگر برای متغیر از این نوع کالس، آدرس مفهومی

زیر مثالی برای کالس درregister :آورده شده است

register int i ;

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

cout<<i;

کالس حافظه استاتیک

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

یست؟خروجی برنامه زیر

f( );

main( ){

int i;

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

f( );

}

f( ){

static int x=5;

cout<<x;

x--;

Page 117: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 117برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

}

است. 543شود. بنابراین خروجی از نوع استاتیک است و فقط یک ار در بار اول مقداردهی اولیه می xحل : متغیر

کالس حافظه خارجی

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

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

ایرد بداده شود، نی ، بدون اینکه در واحدهای فرعی حافظه ای به آنها اختصاصواحد اصلی، در واحدهای فرعی نیی استفاده ک

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

مثال زیر، کاربردextern دهد:را نشان می

File1 File2

extern int a,b ; int a,b ;

f2 ( ) main( )

{ {

a = b+1 ;

.

.

.

.

} }

f3 ( ) f1 ( )

{ {

b=3 a=6;

} }

ی دیگرری تعریرف شرده انرد، لرذا در ق الً در جرا b,aزوید که متغیرهای به کامپایلر می externدر این مثال کلمه کلیدی

File2 یابد.نمی ، حافظه جدیدی به آنها اختصاص

( )mainآرگومانهای تابع اصلی

قررار دارد و argcباشد. تعداد آرزومران هرای خرط فرمران در می argvو argcدارای دو پارامتر به نام های ( )mainتابع

argv ض کنیرد کنند. به عنوان مثال فرکند که عناصر آن به آرزومانهای خط فرمان اشاره میبه آرایه ای رشته ای اشاره می

سازی . برای اجرای ایرن از آن می add.exeترجمه شده و برنامه ای به نام Cنوشته، توسط کامپایلر add.cبرنامه ای به نام

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

>add 2 5

Page 118: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 118برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

انرد. در ایرن فاصرله از هر جردا شردهعملکرد این برنامه، جمع دو عدد دریافتی از طریا آرزومانهای ورودی است که با یک

و 2ن اول یعنری حاوی آرزومرا argv [1]و add.exeحاوی نام برنامه یعنی argv [0]باشد و می 3شامل عدد argcحالت

argv[2] است. 5حاوی آرزومان دوم یعنی

دهد:را انجام می برنامه زیر یک عدد را بعنوان آرزومان پذیرفته و عمل شمارد معکوس از آن عدد تا صفر

main (int argc,char *argv[ ] ){

int i;

for(i=atoi(argv[1]); i ;i --)

printf ("%d",i);

}

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

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

باشد.می 32767حداکثر تعداد آرزومان ها برابر

است. Tabو blankجداکننده در آرزومانهای خط فرمان،

،با توجه به اجرای خط فرمان زیرargc وargv را مشخص کنید؟

A :\ > test 21, 32 43

ورت زیر می باشد: به ص argvخواهد بود و 3برابر argcحل :

argv[0] = test

argv[1] = 21, 32

argv[2] = 43

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

Page 119: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 119برنامه نویسی

exam-engineering-http://faradars.org/computer دانلود رایگان مجموعه کتب ارشد کامپیوتر

:فرادرس، در ادامه آمده است یهاآموزش یموضوع یبنددسته

–برنامه نویسی

کلیک )+(

آموزش های دانشگاهی و

کلیک )+( –تخصصی هوش مصنوعی و یادگیری

کلیک )+( –ماشین سی برق الکترونیک و مهند

کلیک )+( –روباتیک

–دروس دانشگاهی

کلیک )+(

–مباحث مشترک

کلیک )+( –مهارت های دانشگاهی

کلیک )+( –نرم افزارهای تخصصی

کلیک )+(

کلیک – مهندسی نرم افزار

)+(

–نرم افزارهای عمومی

کلیک )+( –طراحی و توسعه وب

کلیک )+( –آموزش های عمومی

کلیک )+(

Page 120: فصل اول - Sahand University of Technologyche.sut.ac.ir/People/Courses/109/cpp-shrafkan.pdfاب ط ترم عبانم و اههرود ،اهسلاک رو ماسرس هنییه

C++ 12۰برنامه نویسی

http://faradars.org/computer-engineering-exam امپیوتردانلود رایگان مجموعه کتب ارشد ک

منبع مطالعاتی تکمیلی مرتبط با این کتاب

C++سی برنامه نوی ویدئویی آموزش

باال اریبس یسینوبرنامه یهازبان انیدر م Cزبان ++ تیعمومود و زرفته ش ادی ییزبان ن نیتواند به عنوان اول می است و ن اشد. اجیاحت گرید ازین شیبه پ

فرض نی، با ا++C یسینوبرنامه یآموزش یهال یمجموعه فدر یدانش و تجربه ق ل چیشده است که مخاطب ه هیتهه هم ،یمجموعه آموزش نیدر او ندارد یسینورنامهب نهیزم

یسازادهیو سپس با پ ینظر یم ان حیو تشر انیم احث با ب نیشوند و از اآموزد داده می یعمل یهازام به زام مثال

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

افکن ریش دیمهندس فرش مدرس:

ساعت 2۰ مدت زمان:

faradars.org /fvcp9504 کلیک کنید –یی این آموزش دئویآموزش وجهت مشاهده