Fundamentals of Progrmaming - Finalized Revised
Fundamentals of Progrmaming - Finalized Revised
با احترام
ب
فهرست مطالب
فصل اول – معرفی زبانهای برنامه نویسی
فصل اول 4...................................................................................................................
معرفی زبانهای برنامه نویسی 4........................................................................................
برنامه نویسی 5............................................................................................................
مترجمان زبان (7.............................................................. )Language Translators
خالصه 9......................................................................................................................
پرسش های فصل 10.....................................................................................................
فصل دوم 11.................................................................................................................
الگوریتم و فلوچارت 11..................................................................................................
انکشاف راه حل کمپیوتری )16.................. (Development of Computer Solution
ردیابی اشتباهات )17................................................................ (Debugging
مستند سازی)18..................................................................... (Documentation
خـالصه فصل 18............................................................................................................
پرسشهای فصل 18......................................................................................................
فصل سوم 19................................................................................................................
ثابت ها ،متحولها و انواع دیتا 19.....................................................................................
تطبیق زبان سی پلس پلس ( 20.................................. )Application of C++
ساختار ابتدایی یک برنامه 20.................................................................................. C++
مجموعۀ حروف (27.................................................................)C++ Character Set
اجزای 28.................................................................................... )C++ Token( C++
دستورهای کلیدی (28.............................................................................. )Keywords
ثابتها (30............................................................................................. )Constants
ثابتهای سمبولیک یا ماکرو )33............................................. (Symbolic Constants
مفهوم 37.......................................................................... Escape Sequences
متحولها (38............................................................................................ )Variables
انواع دیتا ( 39......................................................................... )Data Types in C++
معرفی متحولها)41............................................................... (Declaring Variables
ت
42...... (Assigning Values to Variables)توظیف قیمت ها در متحولها
42.................................................................. (Assignment Statement) = بیانیه
48.......................................................................................................... خـالصۀ فصل
48....................................................................................................... پرسشهای فصل
50..............................................................................................................فصل چهارم
50................................................................................................ عملگرها و عبارت ها
52........................................... )Arathematic Operators( عملگرهای حسابی
53......)Precedence of Arathematic Operators( اولویت بندی عملگر های حسابی
56........................................... (Relational Operators)عملگرهای ارتباطی
57..................................................... )Logical Operators( عملگرهای منطقی
58............................................................. )Assignment Operators( = عملگر
62............................................................ )Bitwise Operators( عملگر بیتی
64................................................................................................. (sizeof) عملگر
65..................................................................................... )Expressions( عبارت ها
66.........................................................................................)Statements( بیانیه ها
67................................................ )Evaluation of Expressions( ارزیابی عبارت ها
68.............................................. )Precedence of Operators( حق اولویت عملگرها
70............................... )Some Computational Problems( بعضی مسایل محاسباتی
71.....................................................................)Library Functions(توابع کتابخانه
75.............................................................................................................خالصۀ فصل
77....................................................................................................... پرسشهای فصل
78................................................................................................................ فصل پنچم
78................................................................................. بیانیه های تصمیم گیری یا شرطی
78...................................................................................................... )if( بیانیۀ شرطی
82.................................................... THE IF ( ) ELSE STATEMENT بیانیۀ شرطی
89.................................... NESTED IF ( ) STATEMENT یک شرط داخل شرط دیگر
97.................................................................................... THE ELSE – IF ( ) بیانیه
100............................................................................................. switch بیانیۀ شرطی
106.................................................... )The Conditional Operator( عملگر شرطی
ث
بیانیه 108.......................................................................................................... goto
خـالصۀ فصل 111..........................................................................................................
پرسشهای فصل 112.....................................................................................................
فصل ششم 113.............................................................................................................
حلقه ها 113.................................................................................................................
انواع حلقه (116................................................. )Types of Looping Constructs
پرش در حلقه ها (136..................................................................... )Jump in Loops
تابع ) ( 139........................................................................................................ exit
خـالصۀ فصل 141..........................................................................................................
پرسشهای فصل 142.....................................................................................................
فصل هفتم 143..............................................................................................................
صف یا 143...................................................................................................... Array
انواع صف (144............................................................................. )Types of Array
خـالصه فصل 161..........................................................................................................
پرسشهای فصل 162.....................................................................................................
فصل هشتم 163.............................................................................................................
تابع )163...................................................................................................(Function
توابع کتاب خانه ای164..................................................................................................
توابع تعریف شده توسط کاربر 165....................................................................................
نوشتن توابع 166..........................................................................................................
روشهای ارسال پارامتر ها به توابع 171.............................................................................
مآخذ177.....................................................................................................................
ج
مـقدمـه
طوري که همۀ ماميدانیمدراین اواخرعلم کمپیوتر رشد وتوسعۀ
چشم گیري نموده ،وباگذشت هر روز در حال تغییر و پیشررفت
میباشد .کمپیوتر و تکنالوژي معلوماتي نقش بسیار مهرم و
ارزنده را در زند گي روزمره بشر ایفا مینماید.
هدف ازتألیف این کتاب این است که بتواند نیازهای محصرالن
را در بخش اساسات نویسی فراهم نماید .کتاب اساسات نویسی
با درنظرداشت مفردات جدید که توسط دیپارتمنت های متذکره
اخیرا آماده شده تألیف گردیده است .کتاب برا ززم لسران
C++تالیف گردیده است .مفاهیم اساسی نویسی و C++در ایرن
کتاب به زبان ساده و عام هدف اینکه توانایی هرای محصرالن
را در بخش حل مسایل ( )Problem solvingبا فراهم نمودن دانرش و
مهارت های فهم بیان گردیده است .در هر فصل این کتاب یک
تعداد مثال ها ذکر گردیده ترا در مفراهیم را سراده ترر
سازد.
فصل اول در رابطه به مفاهیم اساسی برنامه نویسی ،تحلیرل
و دیررزاین حررل مسررأله .فصررل دوم درمررورد الگرروریتم و
فلوچارت .فصل سوم در رابطه به اهمیت و تطبیرق لسران ،C++
ساختارابتدایی یک . C++فصل چهارم در رابطه به ثابت ها،
متحولها ،دستورهای کلیدی و انرواع دیترا .فصرل پرنمم در
رابطه به عملگرها ،انواع مختلف عملگرها ،حق اولویت بندی
عملگرها ،عبارات و باآلخره توابع کتابخانه یی .فصل ششرم
درمورد تنظمیات ورودی و خروجی ،فایرل صردری ،عملگرهرای
ورودی و خروجی .فصل هفتم در رابطه به بیانیه های تصمیم
گیری مانند switch ،ifوعملگر شررطی . The Conditional Operatorفصرل
بیانیه هرای حلقروی ماننرد ،for ،do while ،while هشتم درمورد
Nested loopو . Jump in loopsفصل نهم در رابطه به صرف و انرواع
صف فصل دهم درمورد توابع ،نیراز بررای توابرع ،سراختار
توابع و ارگومنت های حقیقی و رسمی .
هر فصل با مقدمه ،اهداف آموزشی در ابتداء و به تعقیب آن
به موضوعات اساسی فصل پرداخته شده است ،به هر موضوع بره
اندازه نیاز شرح داده شده ،خالطه مطالب هر فصرل در قسرمت
اخیر آن آورده شده و پرسش برای ارزیرابی مطالرب فصرل در
آخر آن گنمانیده شده است و فصل ها با معرفی فهرست مآخرذ
پایان یافته است.
2
امیدوارم خداوند متعال این تالش ناچیز را ق بول نمروده و
وسیله گسترش علم و دانش در بخش برنامره نویسری کمپیروتر
درکشور عزیز مان بگرداند.
3
فصل اول
معرفی زبان های برنامه نویسی
Introduction to Programming Languages
4
مختلف باید اقداماتی ززم و منطقی راه اندازی گردد تا به
حل درست و مطلوب مسایل نایل گردیم.
برنامه نویسی
برنامه نویسری در حقیقرت پروسرۀ راه یرابی (الگروریتم و
فلوچارت) حل یک مسأله میباشد .زبان برنامه نویسی برای
نوشتن ممموعۀ از کودهای کمپیوتر استفاده میشود.
زبان برنامه نویسی ممموعۀ دستورالعمل های است که توسط
راص را اجررا
آن کمپیوتر رهنمرایی گردیرده ترا عملیرات خر
نماید .این برنامه نویس است که با استفاده از زبان هرای
مختلف برنامه نویسی کمپیوتر را هدایت نموده ترا عملیرات
مطلوب را انمام دهد.
تاریخچۀ زبان های برنامه نویسی
در سال 1960یک بسته اززبان های برنامه نویسری بره میران
آمد که هر یکی آن مروارد اسرتفاده خاصری خرود را داشرت.
مردم به فکر این شدند که بره جرای آمروختن چنردین زبران
برای اهداف متعدد چرا یک زبان را نیاموزند که در تمرام
بخش ها مورد استفاده باشد .به همرین خراطر کمیترۀ برین
الملل ،زبان الگول )Algol 60( 60را ایماد نمرود .امرا ایرن
زبان خشک و بسیار عمومی برود و مرورد پسرند مرردم قررار
نگرفت و سبب گردید تا زبان جدیدی به نرام زبران ترکیبری
کمپیوتر ( )1CPLتوسط پوهنتون کامبریج به میان آمد .بعردا
دیده شد که آموختن و تطبیق این زبان بسیار دشروار اسرت.
رام زبران ترکیبری ابتردایی متعاقبا ،زبران دیگرر بره نر
کمپیوتر ( )2BCPLبه میان آمد به امید این که مشرکالت فرو
را نداشته باشد .اما دیده شد کره ایرن زبران ضرعیف و در
عرصه های خاص مورد استفاده قرار می گرفرت .در ایرن وقرت
زبان دیگر تحت نام Bبه وجود آمد که بررای سیسرتم عامرل
یونکس ( )Unixتوسط کین تامسن ( )Ken Thompsonدر زبراتروار AT
و Tبیل نوشته شد.
در سال 1972شخصی دیگر به نام دینس ریچی ( )Dennis M Ritchieبرا
ترکیب نمودن بعضی مشخصرات لسران Bو BCPLو مفکروره هرای
1
Combine Programming Language
2
Basic Combined Programming Language
5
خودش یک زبان جدید را به نام زبان Cبه میان آورد C .یک
زبان عمومی برنامه نویسی می باشد .این زبان به هدف خاصی
که بتواند کود های سیستم عامل یونکس را برای برار مکررر
نوشته کند تهیه شده بود (.)Aitken, Jones, 2014
در سال 1979برنامه نویس به نام Bjarne Stroustrupدر زبراتروار
Bellایالت نیوجرسی آیازت متحده امریکا کرار را روی لسران
C++را آغاز نمود .لسان C++شکل انکشاف یافته Cبروده و
از جملۀ زبان هرای شری گررا ()Object Oriented Programming Language
محسوب میگردد .این زبان دارای محیط گرافیکی و دوسرتانه
بوده و آموختن آن نسبتا آسان میباشد.
طوریکه قبال ذکر گردید C++شکل پیشرفتۀ زبان Cمیباشرد و
میتواند تقریبا تمامی برنامه های که در Cقابل اجرا است
در این زبان هم اجرا گردد .عمرده تررین برترری زبران C++
نسبت به Cاین است که C++مفاهیم کالس ها ( ،)Classesوراثرت
( ،)Inheritanceتوابع ()Functionsرا دربر دارد .این ویژگیهرای
انواع دیتا های مممل ( Abstract خاص به ما اجازه میدهد که
)Data Typesرا ایماد و خصوصیات ( )Attributesکالس ها را بره ار
برده و مفکوره چندین شکلی ( )Polymorphismرا حمایرت نمراییم
).(Aitken & Jones, 2014
به صورت عموم ،زبان های برنامه نویسی به پنج دسته تقسیم
گردیده که عبارت اند از:
.1زبان ماشین
.2زبان های سطح پایین
.3زبان های سطح باز
.4زبانهای نسل چهارم
.5زبان های نسل پنمم
میگیریم: حال هر یکی از این دسته زبان ها را به بحث
زبان ماشین
عبارت از زبان است که از 0و 1تشکیل گردیده و توسط کمپیوتر قابل
فهم میباشد .به این معنا که ضرورت نیست کود های 0و 1توسط یک
مترجم ترجمه گردد تا کمپیوتر آنرا بفهمد.
زبانهای سطح پایین
زبان های است که بیشتر مشابهت به زبان ماشین دارد ..دستور
های این زبان ها به شکل سمبول های خاص است که با استفاده از
6
آن میتوانید برنامه های مخلتف را تهیه نماید .زبان اسمبلی
( )Assemblyمربوط به زبان های سطح پایین میباشد .قابل یاد آوری
است که مترجم اسمبلر ( )Assemblerبه خاطر ترجمه عبارتهای زبان
اسمبلی به زبان ماشین استفاده می گردد.
در عبارات زبان های سطح پایین برای پرزه جات کمپیوتر نظر به
انسان ساده تر است زیرا عبارات این زبان ها بیشتر شباهت به
زبان ماشین دارد
اسمبلر ()Assembler
این مترجم کودهای زبان اسمبلی را به زبان ماشین ( 0و )1
تبدیل مینماید .مترجم اسمبلر تنها در زبان اسمبلی مورد
استفاده قرار میگیرد .زبان اسمبلی یکی از زبان های سطح
پایین بوده و نوشتن برنامه در آن نیز مشکل میباشد .به
همین خاطر از زبان اسمبلی فعال استفاده زیاد صورت نمی
گیرد.
مترجم ()Compiler
این مترجم کودهای زبان های سطح باز را به زبان کمپیوتر
( 0و )1تبدیل مینماید .لسان سی پلس پلس و یک تعداد زبان
های دیگر برنامه نویسی از مترجم Compilerاستفاده
مینمایند .این مترجم تمام کود های یک برنامه را در اخیر
بعد از اینکه برنامه نویس روی دکمه Runکلک نماید به 0و
1تبدیل مینماید .اگر در برنامه اشتباه وجود داشته باشد
طور مثال سیمی کولن (;) در اخیر یک بیانیه نوشته نشده
باشد و یا کدام دستور به شکل نادرست نوشته شده باشد ،در
آنصورت مترجم Compilerاشتباهات برنامه را دریافت و مشخص
نموده طی یک پیام روی سکرین نشان میدهد .برنامه نویس
بعد از خواندن پیام ،اشتباهات را رفع نموده و برنامه را
دوباره اجرا ( )Runمینماید .در صورت که تمام اشتباهات
برنامه رفع شده باشد برنامه اجرا ( )Executeگردیده و
نتایج برنامه روی سکرین ظاهر میگردد.
تفسیر کننده ()Interpreter
این مترجم برنامه را سطر به سطر ترجمه مینماید .به این
معنا که وقتی برنامه نویس یک بیانیه را مکمل نوشته کند
و دکمۀ Enterروی صفحه کلید را فشار دهد در آنصورت Interpreter
به شکل اتومات سطر متذکره را ترجمه مینماید .اگر در
8
بیانیه کدام مشکل وجود داشته باشد تفسیر کننده اتومات
یک پیام را روی سکرین نشان میدهد و اشتباه موجود در
همان سطر را نشانی مینماید که باید اصالح گردد در غیر آن
کرزر به سطر بعدی نمیرود و یا هم سطر متذکره را به رنگ
سرخ نشان میدهد .بعد از رفع اشتباه کرزر به سطر بعدی
رفته و رنگ نوشته نیز درست (سیاه) میشود.
همینطور وقتی برنامه نویس در سطر دوم بیانیه را نوشته
میکند بعد از فشار دادن کلید Enterدر صورت وجود اشتباه
در سطر جاری تفسیر کننده یک پیام را نشان میدهد و اگر
کدام اشتباه وجود نداشته باشد در آنصورت کرزر به سطر
بعدی رفته برنامه نویس میتواند بیانیه بعدی را نوشته
کند.
پس گفته میتوانیم که سرعت مترجم Compilerنسبت به Interpreter
بیشتر است به خاطر Compilerبرنامه را در اخیر به یک باره
گی یکبار اجرا مینماید.
خالصه
در این فصل مسایل مختلف که با اسرتفاده از کمپیروتر حرل
میشود مورد بحث قرار گرفرت و در نتیمره مفراهیم ذیرل را
آموختیم:
برای اینکه مسایل مختلف را با اسرتفاده از کمپیروتر حرل
نماییم ،ززم است که مسأله به شرکل واضرح و روشرن تعریرف
گردد .با استفاده از زبان های برنامره نوی سی مسرهله را
پروگرام نموده به حل کمپیوتری آن نایل می شود.
مبحث دوم که در این فصل توضیح گردید تاریخچۀ زبران هرای
برنامه نویسی میباشد .از سال 1960تا حال زبان های مختلرف
برنامه نویسی به میان آمده که هر یکی آن دارای خصوصریات
متفاوت میباشد .در حال حاضر ،بیشتر تالش میگردد کره غررض
حل مسائل مختلف از زبان های شی گررا ()Object Oriented Languages
استفاده صورت گیرد به خاطر که این نروع زبران هرا دارای
محیط گرافیکی و دوستانه بوده و کار کردن در آن نیز آسان
میباشد .مبحث نهایی این فصل مترجمان لسران هرای برنامره
نویسی میباشد که کودهای زبان های سطح براز را بره زبران
ماشین ( 0و )1تبدیل مینماید .مترجمان انواع مختلف دارند
که هر یکی آن دارای مشخصات جداگانه میباشد.
9
پرسش های فصل
10
فصل دوم
الگوریتم و فلوچارت
Algorithm and Flowcharts
11
اهگوریتم )(Properties of Algorithm
خصوصیات
هر الگوریتم باید خصوصیات ذیل را داشته باشد:
.1ساده باشد.
.2مختص و صریح باشد.
.3ورودی داشته باشد.
.4حل یگانه ( )Uniqueرا برای مسأله پیشکش نماید.
ران برسرد. .5بعد از طی نمودن چند مرحلرۀ محردود بره پایر
(نقطۀ انمام داشته باشد).
.6حد اقل یک خروجی داشته باشد.
به خاطر اینکه برای یک مسأله الگروریتم را طررح نمراییم
باید:
.1مسأله را به شکل درست فهمیده باشیم.
.2خروجی که به دست می آید معلوم باشد.
.3ورودی آن مشخص باشد.
.4پروسۀ که قیمت ها را وارد برنامه میسرازد و در نتیمره
خروجی تولید میگردد دیزاین شده باشد.
.5صحت الگوریتم ارزیابی و امتحان شده باشد؛ به این معنا
که دیتا به طوری امتحانی وارد الگوریتم گردیده باشد و
نتیمه نیز بررسی شده باشد.
.6اگر خروجی مورد نظر به دست نیامد در آنصورت الگروریتم
باید بار دیگر مورد بررسی قرار گیرد.
عالمتگذاری اهگوریتم )(Algorithm Notations
در اثنای نوشتن الگوریتم عالمت گذاری هرای ذیرل بایرد در
نظر گرفته شود:
.iنأام ( :)Nameمسأله را مشخص میسازد.
.iiشماره مرحل ( :)Step Numberهر هدایت (عبارت) را توسرط یرک
شمارا خاص مشخص مینماید.
.iiiتبصره ( :)Commentsعبارت ها و عملیات را توضیح می دهد؛
تبصره هرا در داخرل قوسرهای مربرع شرکل ()square brackets
نوشته میشود.
.ivآغاز/خاتم ( :)Beginning / Terminationاین بیانیه آغاز و خاتمرۀ
الگوریتم را نشان میدهد.
12
مثال :1.2الگوریتمی را بنوسید که درجه حرارت را به سانتی گرید بگیرد و آنرا به فارنهایت تبدیل نماید.
فواید اهگوریتم
.1ردیابی مشکالت آسان است زیرا تمام مراحل به شکل مرحلره
وار نوشته شده است.
.2تهیه نمودن الگوریتم آسان است به خاطر کره نیراز بره
دانستن لسان های برنامه نویسی ندارد.
.3الگوریتم ما را کمک می کند تا برنامه را درست محافظرت
کنیم.
نواقص اهگوریتم
.1تهیه نمودن الگوریتم برای مسایل مغلق و پیچیده مشکل و
زمان گیر است.
.2فهمیرردن مسررایل پیچیررده ( )Complex logicبررا اسررتفاده از
الگوریتم دشوار است.
فلوچارت )(Flowchart
بیان تصویری مرحله وار الگوریتم بره نرام فلوچرارت یراد
میگردد .فلوچارت شرامل شریوا حرل مسرأله (،)Solution procedure
محاسبات مرتبط ( ،)Relevant computationsنکات تصمیم گیری ( Points of
13
برا )decisionsو دیگر معلومرات مهرم میباشرد .فلوچرارت هرا
هرر استفاده از اشکال و سمبولهای هندسی تهیه میگرردد.
برا شکل هندسی نشان دهندا عملیه خاص میباشد .این اشرکال
حرل استفاده از تیرها ( )Arrowsبا همدیگروصرل گردیرده کره
کامل یک مسأله بزرگ را نشان می دهد (. )Halterman, 2018
معنی سمبول
آغاز /انجام ()Start/End
این شکل نشاندهندۀ آغاز و انجام برنامه است.
ورودی /خروجی ()Input/output
این شکل به خاطر خواندن قیمت های ورودی و
خروجی استفادهمیگردد.
14
مثال :4.2فلوچارت را رسم کنید که مساحت مثلث را مثال :3.2فلوچارت را رسم کنید که نمرات 4
دریافت نماید و دارای اضالع B ،Aو Cباشد؟ مضمون را وارد نموده ،مجموعه و اوسط آنرا
دریافت نماید؟
آغاز آغاز
قیمت های وارد شدۀ اضالع نمرات وارد شدۀ چهار مضمون
A, B, C M1, M2, M3, M4
پایان پایان
15
اگر کدام دستور شکل حلقوی ( )Loopداشته باشرد ،ززم اسرت
تا اشکال هندسی مکرر ترسیم گردد.
17
مستند سازی)(Documentation
هدف مستند سازی این اسرت کره یرک مآخرذ بررای رهنمرایی
استفاده کننده ( )User manualو یا نگهرداری برنامره ( Program
)maintenanceترتیب گردد .این مستند سازی میتواندبه شکل یک
فایل جداگانه و یا فایل های هم کار در داخل برنامه وجود
داشته باشد ).(Oualline, 1995
خـالصه فصل
در این فصل مسایل مختلف که با اسرتفاده از کمپیروتر حرل
میشود،مورد بحث قرار گرفرت و در نتیمره مفراهیم ذیرل را
آموختیم:
به خاطر دیزاین حل مسایل مختلرف مری تروانیم از مفراهیم
الگرروریتم و فلوچررارت اسررتفاده نمرراییم .الگرروریتم یررک
پروسیمر مرحله وار است که برای حل مسایل مختلف اسرتفاده
میگردد ،در حالیکه فلوچارت بیران تصرویری الگروریتم را
میگوید.
پرسشهای فصل
اهداف آموزشی :در پایان این فصل ،محصالن قادر خواهند بود تا:
.1ساختار برنامه C++را بیان نمایند.
.2عملگر های ورودی و خروجی ( C++ )cin / coutرا شرح دهند.
.3دستورهای کلیدی ( )Keywordsرا شرح دهند.
.4ثابتهاو انواع آنرا تشریح نمایند.
.5متحول ( )Variableرا تعریف نمایند.
.6انواع مختلف دیتا را در برنامه های گوناگون اسرتفاده
نمایند.
در این فصل زبان برنامره نویسری سری پلرس پلرس ،سراختار
برنامه ،دستورهای کلیدی ،ثابت ها و انرواع آن ،متحرول و
انواع مختلف دیتا مورد بحث قرار گرفته است.
زبان برنامه نویسی C++نسبت به زبران هرای دیگرر برنامره
نویسی ،سطح باز یک سلسله برتری های دارد که عبرارت انرد
از (:)Rama, 2011
یک زبان قوی و توانمند است.
بیشتر برای نوشتن نرم افزار های سیستم ( )System softwareو
برنامه های تطبیقی ( )Application softwareاستفاده میگردد.
دارای انواع متعردد نوعیرت دیترا ( )Data typesو عملگرهرا
ران
رن زبر رارآیی ایر ررعت و کر رث سرردکه باعر
( )Operatorsمیباشر
میگردد.
دارای Platformآزاد و قابل انتقال میباشد .اکثریت برنامه
های که در C++نوشته میشوددر تمرام سیسرتم هرای عامرل
قابل اجرامیباشد.
از جملۀ زبان های شی گرا ()Object Orientedمیباشد.
19
تطبیق زبان سی پلس پلس ( )Application of C++
زبان C++بیشتر برای انکشاف برنامه های سیسرتم و برنامره
های تطبیقی مانند (:)Rama, 2011
مترجمین ()Compilers
تفسیر کننده ()Interpretors
سیستم های عامل ()Operating Systems
سیستم های مدیریت دیتابیس ()DBMS
برنامه ورد ()MS Word
برنامه اکسیل ()MS Excel
برنامه های گرافیک ()Graphics packages
برنامه های ساینسی و انمینری استفاده میگردد
20
سازی ()Documentation Section
.Iبخش مستند
این بخش دربرگیرنده ممموعۀ تبصره های مفید است کره غررض
رهنمود استفاده کننده به کار میرود .با وجود اینکره در
تبصره اجباری نیست امرا اسرتفاده کننرده گران را در در
مفاهیم و اهداف برنامه ها و سطر های آن کمک میکند.
.IIبخش پیش پرداز و تعریف آن ()Preprocessor and Defination Section
این بخش دربرگیرنده فایل های صدری است که با عالمه #آغاز
گردیده و در اخیر خویش .hرا نیز در برر دارد .اینهرا را
به نام رهنمود پیش پردازنده ( )Preprocessor directiveیاد میکند
که دربرگیرندا فایل صدری در C++میباشد.
چند نمونه بیانیه Preprocessorعبارت اند از:
># include <iostream.h
># include <math.h
راز ره #را در آغر عالمر رمبولیک ()Symbolic constants
رای سررت هر ثابر
مثال: دستور defineدارد.
# define PI 3.14159
# define e 2.71826
1.3 مثال
Output
!!Programming in C++ is fun
نتیمۀ این برنامه عبارت است از:
!!Programming in C++ is fun
سررطر اول مثررال فررو مربرروط برره بخررش مسررتند سررازی
()Documentationمیشود.این بخش دربرگیرندا ممموعرۀ از تبصرره
22
های است که بررای معرفری نرام برنامره و توضریح کودهرای
برنامه استفاده میشود .سطر دوم به نام بیانیه پیش پرداز
( #include<iostream.h> )preprocessorیاد میگرددکه رابطه را با کتاب
خانه سیستم بره وجرود آورده و دسرتور خروجری coutرا کمرک
نموده تا نتیمۀ برنامه را روی سکرین نمایش دهد .سطر سوم
مربوط به تابع اصلی )(mainمیباشد .تمرام برنامره هرای C++
رد .بخرش باقیمانرده تمامرا باید یک تابع اصلی داشته باشر
مربوط به بخش اجرایی میشودکه در آن بیانیه هرای اجرایری
قرار دارد .بخش معرفی ( )declaration sectionو بخش اجرایی (section
)executationباید در بین قوسرهای جفرت { } قررار گیررد .هرر
بیانیه بخش معرفی و اجرایی با سیمی کولن اختتام مییابرد.
یک برنامه از قوس باز { که بعد از تابع اصلی ) (mainقررار
دارد آغاز و با قوس بسته { که در اخیر تابع قررار دارد
ختم میگردد).(Nawaz, 2006
مثال :2.3برنامۀ ذیل قیمت حروفی را با استفاده از coutروی سکرین نشان میدهد.
>#include <iostream.h
#include <string> // used for string data type
24
) ( main
{
// Declaration
;" string First_Name = "Habibullah
;" string Last_Name = "Barakzai
;cout << "The Complete Name is : " << First_Name << Last_Name
;return 0
}
Output
The Complete Name is : Habibullah Barakzai
25
مثال :3.3برنامۀذیل نام ،تخلص و عمر یک شخص را از صفحه کلید گرفته روی سکرین نشان میدهد.
>#include <iostream.h
#include <string> // used for string data type
) ( main
{
// Declaration
;string FName
;string LName
;int Age
;" cout <<" Enter your first and second name and your age please :
;cin >> FName >> LName >> Age
;"cout << "Your full name is :" << FName << " " << LName << "\n
;"cout << "You are " << Age << " years old
;return 0
}
Output
Enter your first and second name and your age please : Asma Gul 8
Your full name is : Asma Gul
You are 8 years old
شامل for ،int ،doو غیره میشود دستور های کلیدی ()Keywords
شامل نام های متحولها مانند ... number ،area ،sum شناسه ()identifiers
میشود ثابت ها ()Constants
شامل اعداد مانند -200 ،25.5 ،250و غیره میشود حروف ()String
شامل سلسله حروف مانند " ”3+2" ،"Collegeو غیره می عملگر ها ()Operators
شود سمبولهای خاص ( Special
شامل عالمات مانند ++ ،/ ،* ،- ،+و غیره می شود )Symbols
شامل سمبولها مانند ! } ،{ ،[ ،] ،# ،و غیره می شود
نشانه ها 2.3 جدول
28
)variable (names را
رولهر
رای متحر
رام هررث نر
ره حیر بر روانیم
نمیتر
استفاده کرد ).(Buard, 2005
دستوری های کلیدی معیاری C++قرار ذیل است:
Asm Double Not Switch
Auto else operator Termplate
break enum private this
case extern protected throw
catch float public try
char for register typedef
class friend return union
const goto short unsigned
continue if signed virtual
default inline sizeof void
delete int static volatile
do long struct while
شناسه ها ()Identifiers
شناسه به نام های اطرال مری شرود کره بررای متحرولهرا
( ،)variablesتوابع ( )functionsو صف ( )arrayدر برنامه استفاده
میشود .
شناسه :سلسله یا ممموعۀ کرکتر های است که از حرروف
( ،)z – a( ،)Z – Aارقررام ( )9 – 0و انرردرسررکرررور( _ )
تشکیل گردیده باشد.
C++یک لسران Case sensitiveاسرت کره در آن alfa ،Alfa ،ALFAاز
همدیگرمتفاوت اند.
سمبول اندرسکور(_) به طورکل در وسط نام Identifierاستفاده
میگردد .مثالF_Name :
طول نام شناسه یا idenftierبه صورت متوسط میتواند برین 8
الی 10کرکتر باشد .در قسمت طرول نرام identifierمحردودیتی
وجود ندارد و میتواند طوزنی تر باشد.
نررام Idnetifiersبرره حرررف آغرراز میگررردد و برره تعقیررب آن
میتواندحروف ،ارقام و یا ترکیب هردو وجود داشته باشد.
نام Identifiersنمیتواند به عدد آغاز گردد.
C++یررک لسررت دسررتورهای کلیرردی مشررخص دارد کرره آنرررا
نمیتوانیددر جای دیگرر بررای مقاصرد متفراوت اسرتفاده
کنید .به طوری مثال ،شما نمیتوانید intرا به حیرث نرام
متحول استفاده کرد.
29
مثال 5.3
شناسه های مجاز عبارت اند از:
Sum, avg _ marks, x1, y2, PINCODE, Total
شناسه های غیر مجاز عبارت اند از:
10th , S.I, total amount, Std – no
ثابتها ()Constants
هر قیمت که در اثنای اجرای برنامه قابل تغییر نباشد بره
نررام ثابررت یررادمیگردد .لسرران C++دارای چنرردین نرروع
ثابتهامیباشد.
30
()Hexa Decimal system 16 قاعده
16 تام به قاعده 8 تام به قاعده 10 تام به قاعده
حاوی ارقام ( 0الی ) 9و حروف
( Aالی )Fمیباشدکه حروف
حاوی ارقام ( 0الی ) 7 حاوی ارقام ( 0الی ) 9
اعداد 10الی 15را نمایش
میدهد.
با oxو یا OXآغاز گردد اولین رقم باید 0باشد حاوی حد اقل یک رقم باشد
عالمۀ اعشاری نداشته باشد عالمۀاعشاری نداشته باشد عالمۀ اعشاری نداشته باشد
میتواند حاوی اعداد مثبت و یا میتواند حاوی اعداد مثبت و یا میتواند حاوی اعداد مثبت و
منفی باشد یا منفی باشد منفی باشد
کامه و یا خالیگاه در بین ارقام کامه و یا خالیگاه باید بین ارقام کامه و یا خالیگاه باید بین
وجود داشته نباشد. ارقام وجود نداشته باشد. وجود نداشته باشد
مثال: مثال:
مثال:
oxA1 ،oxa38 ،Ox1اعداد مجاز 025 ،044+ ،051اعداد مجاز
5050 ،17+ ،426اعداد مجاز
است است
است
OxEGG ،OABC ،ox2.5اعداد 068،03.45 ،540اعداد مجاز
12.45 ،10.0اعداد مجاز نیست
مجاز نیست نیست
جدول 3.3خصوصیات ثابتهای تام
3
American Standard Code for Information Interchage
32
ثابتهای حرفی و کودهای اسکی آنرا میدهد جدول ذیل تعداد
.
کود اسکی ثابت ها
65 ‘‘A
66 ‘B,
90 ‘‘Z
97 ‘‘a
122 ‘‘z
49 ‘‘1
50 ‘‘2
35 ‘‘#
حروفی ()String Constants
ثابتهای
ثابت های حروفی عبارت از ممموعۀ حروف های است که تعداد
آن بیشتر از یک حرف باشد و در داخل قروس ناخنرک دوگانره
میکردد .این حروف یا کرکترها که داخرل ( )double quotesدر
قوس های ناخنک دوگانه قرار دارد شاید حروف ،اعداد و یرا
سمبولهای خاص و یا خالی باشد.
مثال 9.3
از جمله ثابت های مجاز حروفی می باشد “ “ “Read” , “Phone : 334 – 5670”, “AFN 20.25”, “” ,
در حالیکه
’ “Line1 \n \ Line2 \n Line3’, “The Errorاز جمله ثابت های غیر مجاز حروفی است.
نوت " " :به نام ثابت حروفی خالی ( )null stringیادمیشود.
متوجه باشید که ’ ‘Aبا ” “Aیکسان نیسرت .حرروف ثابتکره در
داخل دو قوس ناخنک (” )“Aوجود دارد در حقیقیت قیمرت ترام
عددی ( )ASCII codeندارد.
ثابتهای سمبولیک یا ماکرو )(Symbolic Constants
#defineاز جملۀ رهنمودهای pre-processorاسرت کره غررض معرفری
ثابتهااستفاده میشود(.)Soulié ,2007
#define name replacement–string
33
را مقید میسازدتا قیمت که در آغاز برنامه توسط( )userبرای
آن تعریف گردیده در خود ذخیره نموده و هیچ قیمت متفراوت
نگیرد.
چند مثال ثابتهای سمبولیک:
#define Max_Marks 100
#define PI 3.14159
#define University ”“Kabul Education University
مثال :10.3برنامۀ ذیل شعاع یک دایره را دریافت مینمایددرصورتیکه قیمت مساحت موجود باشد.
// Program to find redius of a circle given area
>#include <iostream.h
# define PI 3.14159
) ( main
{
; float r, area
; ” cout << “\n “ << “ Enter the area of circle :
; cin >> area
; ) r = sqrt ( area / PI
; cout << “\n“ << “The radius of the given circle is : “ << r
; return 0
}
Output
Enter the area of the circle : 12 . 57
The radius of the given circle is : 2. 0029
34
بین #defineو نام سمبولیک بهتر است به اندازه یک الی دو
سپیس فاصله در نظر گرفته شود .به عین شکل بهتر است که
بین نام سمبولیک و قیمت آن فاصله مدنظر گرفته شود.
تعریف نام سمبولیک عین قواعد که برای معرفری نرام یرک
متحول در نظر گرفته میشودمراعت مینمایرد .معمروز ،نرام
سمبولیک به حرروف برزرگ نوشرته میشرودتا از نرام هرای
متحولهای عادی تفکیک گردد.
شما نمیتوانیدقیمت متفاوت از آنچه در ابتدای برنامره
برای نام سمبولیک مدنظر گرفته شده در نظر گیرید.
وقتیکه برنامه اجرا میشودهر جای که نام سمبولیک وجرود
دارد ،قیمت خود را به طور اتومات از قسمتی کره تعریرف
شده میگیرد.
طور مثال:
#define PI 3.14159
; Curricum = 2 * PI * Radius
…………………….
; Cout <<”\n PI value = “ << PI
وقتیکه برنامه فو اجرا شود نام سمبولیک PIبه قیمرت آن
تعوی میشودو بیانیه شکل ذیل را به خودمیگیرد:
; Curricum = 2 * 3.14159 * Radius
فکر کنید که اگر ماکرو طوری ذیل معرفی شده باشد:
; #define PI 3.14159
یعنی در اخیر نام ماکرو سیمی کولن اضافه شده باشد در
آنصورت بیانیه شکل ذیل را خواهد داشت:
;Curricum = 2 * 3.14159 ; * Radius
این کار سبب میشودکه برنامه به شکل درست اجرا نگردد.
بعضی از مثال های نادرست ماکرو قرار ذیل است:
# define SUM = 0
# define ; TOTAL 100
# defineA 10 , B 20
# DEFINE COUNT 10
35
اگر یک جمله یا قیمرت حرروف طروزنی را در #defineتعریرف
نماییم که چندین سطر را دربر گیرد ،در آنصورت ززم است
که در اخیر هر جمله کرکتر \ ( )back slashرا اضافه نمراییم
و جملۀ متباقی را در سطر جدید نوشته کنیم .هدف نوشرتن
\ در اخیر جمله به این معنا است که به متررجم گروش زد
نماید که جمله جریان دارد.
مثال :11.3برنامۀ ذیل شعاع یک دایره را در صورتی دریافت میکندکه قیمت محیط دایره وجود دارد.
// Program to find radius of a circle given the circumference
># include <iostream.h
# define PI 3.14159
) ( main
{
; float r, circum
; ” cout << “\n “ << “ Enter the circumference of a circle :
; cin >> circum
; ) r = circum / ( 2 * PI
; cout << “\n“ << “The radius of the given circle is : “ << r
; return 0
}
Output
Enter the circumference of the circle : 8
The radius of the given circle is : 1 . 27
فواید ماکرو
استفاده از مراکرو ،برنامره هرا را سراده ترر و مرنظم
ترمیسازد.
نام ماکرو باید پر مفهوم باشد و استفاده کننده را کمک
کند که چه نوع قیمت را در خود ذخیره نموده است.
ررات
ررای آوردن تغییر
ره را بر
راکرو ،برنامر
رتفاده از مر
اسر
آسانترمیسازد .این کار آسان اسرت کره قیمرت مراکرو را
تغییر داد به جای اینکه در هر موقعیت ،قیمت متحرول را
تغییر دهد.
استفاده از ماکرو برنامه را خواناترمیسازد.
36
مفهوم Escape Sequences
بعد از کرکتر /که به نام( )backslashیاد میگردد یک حرف خراص
وارد میشود و یک عمل خاص را انمام میدهرد؛ ترکیرب ایرن
کرکترها به نام escape sequenceیاد میشود ).(Deitel, 2012
طور مثال:
; ”!! cout << “ \n this is easy
بیانیۀ را در نظر گیرید.
در این بیانیه \nنمونۀ از escape sequenceمیباشد و به خراطر
استفاده شده که کرزر به سطر جدیرد انتقرال یابرد و بعرد
جملۀ this is easyرا روی سکرین نشان دهد .اگر خواسته باشرید
که یک قیمت حروفی را در چند سطر چاپ کنید در آنصرورت از
\nاستفاده کنید تا قیمت که بعرد از کررزر وجرود دارد در
سطر جدید چاپ نماید .اگر قیمت حروف یا جمله در آخر خرود
\nرا نداشته باشد در آنصورت جملۀ بعدی نیرز بره ادامره
جملۀ قبلی در عین سطر ظاهر خواهد شد.
مثال :12.3برنامه ی ذیل استفاده /nرا نمایش میدهد.
) ( main
{
;“ cout << “This \n string \n will \n be \n printed \n in \n 8 \n Lines.
; return 0
}
Output
This
string
will
be
printed
in
8
Lines.
اگر خواسته باشید که بخشی از جملۀ طوزنی در سرطر بعردی
ظاهر گردد در آنصورت \nرا در آغاز همان بخش مطلوب جملره
escape بنویسید .به یاد داشته باشید کره تمرام سلسرله ی
sequenceبا \ آغازمیشود .دیگر escape sequenceهرای کره در C++
وجود دارد عبارت اند از:
37
وظیفه escape sequence
برنامه در اثنای اجرای به صدا در میآید \a
عالمه سوالیه ?\
\b
برگشت به اندازه یک spaceبه عقب
\r
برگشت به آغاز پیام خروجی \f
Form feed
\t
Tab جمپ به اندازه یک \v
Tabعمودی \0
کرکتر خالی اسکی \n
رفتن به سطر جدید ”\
عالمه double quotation \\
Backslash \0
خالی ’\
قوس ناخنک یگانه ()single quotation
جدول 4.3توضیح کرکترهای escape sequence
متحولها ()Variables
متحول یک نام است که به قسمتی از حافظه RAMداده میشرودو
همان قسمتی از حافظه را تصررف ( )Reserveمیکنرد .وقتیکره
قیمت به متحرول داده میشروددر همران قسرمتی ریرزرف شردا
حافظه به شکل موقت ذخیره میشود).(Klousen, 2017
متحول تنهرا یرک قیمرت را در عرین زمران در خرود ذخیرره
میتواند .به این معنا ،هر قیمت جدیدی کره در یرک متحرول
ذخیره میشوددر حقیقت جایگزین قیمت قبلی میشود .این قیمرت
ممکن عددی و یا حروفی باشد .متحرول میتوانرددر هرر برار
اجرای برنامه قیمتی مختلف را در خود ذخیره نماید.
13.3 مثال
38
;Z = 7 /* value of Z changes to 7 */
;’P = ‘a /* value of P changes to 97 */
از مثال فو معلوم میشودکه یک متحرول میتوانرد قیمتهرای
مخلتف را در عین برنامه ذخیره کند.
قواعد نامگذاری متحول در C++
نام متحول باید به حرف آغاز گردد و به تعقیب آن حروف،
اعداد و یا ترکیب هردو میآید.
در ترکیب نام متحول بردون اندرسرکور( _ ) هریچ سرمبولی
دیگر اجازه نیست که استفاده شود.
زبان C++در حقیقت case sensitiveاست .به همین خراطر ، counter
Counterو COUTNERسه متحول مخلتف اند.
رولرام متحر رث نر
ره حیر
ردی C++نمیتواندبر رای کلیر
رتور هر دسر
استفاده شود.
در بین حروف نام یک متحول اجازه گذاشتن فاصرله ()space
نیست.
بهتر است که نام متحول کوتاه و پرمفهوم باشد.
14.3 مثال
Sum_total, avg _ htاز جمله متحولهای مجاز بوده در حالیکه
#No, 50th, Lotus 123از جمله متحولهای غیرمجازمحسوب میشود.
انواع دیتا ( )Data Types in C++
زبان C++چهرار نروع دیترا دارد کره عبرارت انرد از (2012,
):Backman
تام یا .)int( Integer:
حرف یا .)char( character:
اعشاری با دقت ساده .)float( floating
اعشاری با دقت مضاعف (.)double
هر data typeدارای خصوصیات و ظرفیت خاص میباشردکه در جردول
ذیل توضیح شده است.
ساحۀ تعریف اندازه به توضیح نوعیت دیتا
بایت ()Data Type
-32768الی 32767 2 تنها اعداد تام را در خود ذخیره میکند. Int
-128الی 127 1 تنها یک حرف را در خود ذخیره میکند. Char
اعداد اعشاری با دقت ساده که الی 7رقم
3.4E-38الی 3.4E+38 4 بعد از اعشاریه را نشان میدهددر خود Float
ذخیره میکند.
39
اعداد اعشاری با دقت مضاعف که الی
15
1.7E-308الی 1.7E+308 8 رقم بعد از اعشاریه را نشان میدهد در Double
خود ذخیره میکند.
جدول 5.3توضیح نوعیت دیتا
نوعیت دیتاهای تام ()Integer Data Types
این نوعیت دیتا ( )intتنها شامل اعداد کامل و تام میباشدو
اعداد اعشاری را در خود ذخیره نمیکند.
انواع مختلف integerقرار ذیل اند:
.aعدد تام بدون عالمه ()unsigned int
معرفی گردد در حقیقت تمام بیت متحول که به شکل ()unsigned int
های خویش را غرض ذخیره نمرودن اعرداد ترام مثبرت آمراده
میسازد و کدام بیت را برای تشخیص نمودن عالمرۀ (مثبرت یرا
منفی) عدد ریزرف نمیکند.
.bعدد تام کوچک عالمه دار ()short int
)short (int این نوعیت دیتا غرض ذخیره نمودن اعداد تام کوچک
استفاده میشود.
.cعدد تام کوچک بدون عالمه ()unsigned short int
وقتیکه متحول از نوع ()unsigned short intمعرفری گرردد بره ایرن
معناست که میتوانداعداد تام کوچک مثبت را در خود ذخیره
نماید.
.dاعداد تام بزرگ ()long int
این نوعیت دیتا بررای اعرداد ترام برزرگ مرورد اسرتفاده
قرارمیگیرد.
.eاعداد تام بزرگ بدون عالمه ()unsigned long int
این حالت بیت عالمه را از بین بررده و حافظره را دو چنرد
میسازدو میتواندکه اعداد تام بزرگ مثبت را در خود ذخیره
نماید.
جدول ذیل انواع دیتا ( ،)data typesاندازا ظرفیرت ()size in bytes
( integer رام
ردادی تر رف ( )rangeاعرراحۀ تعریرو سر
)numbersرا نشان میدهد:
ساحۀ تعریف اندازه به بایت نوعیت دیتا
()Range ()Size in bytes ()Data Type
0الی 65535 2 عدد تام کوچک بدون عالمه )) unsigned short
- 32768الی + 32767 2 ()signed short عدد تام کوچک عالمه دار
عدد تام
0الی 4294967295 4
()unsigned int
+ 2147483647 4 عدد تام
40
- 2147483648 ()signed int
0الی 9.22337204E +18 8 ()long عدد تام بزرگ
حرفی بدون عالمه
الی 255 0 1
()unsigned char
جدول 6.3توضیح نوعیت دیتا
ساده )(Float Point Data Types
نوعیت دیتای اعشاری با دقت
ما میتوانیم نوعیت دیترا برا دقرت اعشراری سراده را برا
استفاده از دستور کلیدی floatتعریف نماییم float .چهار بایت
حافظه را ریزرف میکندو تا شش خانره بعرد از اعشراریه در
اجرای عملیات دقیق است.
نوعیت دیتای اعشاری با دقت مضاعف )(Double Precision Data Types
ِیشرتر
این نوعیت دیتا میتواندبزرگترین اعداد را با دقت ب
doubleهشت بایرت محاسبه نموده و نتیمه را محاسبه نماید.
از حافظه را ریزرف نموده و تا 14رقم بعد از اعشراریه را
بادقت عالی اجرا می نماید .برای تعریف این نوعیرت دیترا
از دستور کلیدی doubleاستفاده صورت میگیرد.
حرفی)(Character Data Type
نوعیت دیتای
این نوعیت دیتا میتواندیک حرف یا کرکتر ست ASCIIرا در خود
ذخیره نماید .ظرفیت این نوع دیتا یرک بایرت بروده و برا
استفاده از دستور کلیدی charمعرفی میشود .اگر بیرت عالمره
را در نظر نگیریم این نوعیت دیتا میتواندعدد برین 0الری
255را در خود ذخیره نماید.
معرفی متحولها)(Declaring Variables
معرفی متحولهرا دربرگیرنرده نوعیرت دیترا و نرام متحرول
میباشد که در خرتم آن سریمی کرولن (;) در میگرردد .ایرن
اعالمیه ( )declarationدر حقیقت مترجم یا کمپایلر را در براره
نام و نوعیت متحول آگاه میسازد.
ساختار معرفی متحول طور ذیل است:
;data – type a1, a2, a3 , ……. an
رت و در
را اسر
رولهررای متحررام هر
را a3 ،a2 ،a1و anنر
در اینمر
قسمت data–typeیکی از نوعیت دیتاهای که قربال معرفری گردیرد
(مانند float ،intو غیره) در میگردد .اگر نوعیت دیتای بیشتر
از یک متحول معرفی گردددر آنصورت a3 ،a2 ،a1برا اسرتفاده
از کامه از همدیگر جدامیشود.
41
15.3 مثال
; int x, y, z
; float avg, sum
; char ans
; double amount
در اینما y ،xو zاز نروع avg ، intو sumاز نروع ،float
ansاز
نوع charو amountاز نوع doubleمعرفی شده انرد .متحرولهرای
فو را میتوانیم به شکل ذیل نیز معرفی نماییم:
; int x
; int y
; int z
; float avg
; float sum
; char ans
معرفی نیز ذیل شکل میتوانیم به را نوعیت متحولهای
نماییم:
; short int count
; long int fact
نیز long intو long اینکه short intو shortیک مفهوم را دارا است و
عین مفهوم را دارد میتوانیم
بیانیه های فو را به طور ذیل معرفی نماییم:
; short count
; long fact
. برنامۀ ذیل مجموعه و اوسط نمرات چهار مضمون را دریافت میکند:19.3 مثال
// Program to find total and average of marks obtained in 4 subjects.
#include <iostream.h>
main ( ) {
int m1, m2, m3, m4 ;
float total , avg ;
// assignment in executable part
m1 = 50 , m2 = 70 , m3 = 75 , m4 = 67 ;
total = m1 + m2 + m3 + m4 ;
avg = total / 4 ;
cout << “\n “ << “ The average marks = “ << avg ;
return 0 ;
}
Output
The average marks = 65 . 500000
. برنامۀ ذیل مساحت دایره را محاسبه میکند:20.3 مثال
// program to compute area of a circle
#include <iostream.h>
main ( )
{
// Declarations
44
; float pi , r , area
// Assignment
; pi = 3.14159
;r=5
// Calculation and printing
; area = pi * r * r
; cout << “\n “ << “ Area of circle = “ << area
; return 0
}
Output
Area of circle = 78 . 539749
شیوا دیگر که با استفاده از آن میتوانیم قیمت هرا را در
متحولها ذخیره نماییم استفاده از دستور ورودی cinمیباشرد.
cinدستور ورودی C++است که به استفاده کننده ( )userاجرازه
میدهدتا قیمت ها را مستقیما از keyboardوارد متحول سرازد.
برعکس cout ،از جملۀ دستورهای خروجی C++است که نترایج را
روی سکرین نشان میدهد.
مثال :21.3برنامۀ ذیل حاصل جمع دو عدد تام ( )intکه قیمت های آنرا با استفاده از دستور cinاز صفحه کلید میگیرد ،
دریافت مینماید.
// program to find sum of two integer numbers inserted via keyboard
>#include <iostream.h
) ( main
{
// Declaration of variables
;int N1, N2, Sum
;“ cout << “Enter 2 Integer numbers to Sum :
;cin >> N1
;cin >> N2
;Sum = N1 + N2
;cout << “\n “ << “ The Sum is = “ << Sum
} ;return 0
Output
Enter 2 Integer numbers to Sum : 10 20
The Sum is = 30
مثال :22.3برنامۀ ذیل 3عدد را صفحه کلید گرفته ،حاصل جمع ،تفریق ،ضرب و تقسیم آنرا دریافت نموده روی سکرین نشان
45
.میدهد
/* program to find sum, Minus, Product and Division of three float numbers inserted from
keyboard */
# include <iostream.h>
main) (
{
// Declaration
float N1, N2, N3, Sum, Min, Prod, Div;
cout << "Enter 3 Integer numbers to Sum, Minus, Product and Divide : ";
cin >> N1 >> N2 >> N3;
Sum = N1 + N2 + N3;
Min = N1 - N2 - N3;
Prod = N1 * N2 * N3;
Div = N1 / N2 / N3;
cout << "\n " << Sum;
cout << "\n " << Min;
cout << "\n " << Prod;
cout << "\n " << Div;
return 0; }
Output
Enter 3 Integer numbers to Sum, Minus, Product and Divide 20 10 5
35
5
1000
0.4
46
. برنامۀ ذیل شعاع یک دایره را در صورتی دریافت میکندکه قیمت محیط دایره وجود دارد:24.3 مثال
Program to find radius of a circle given the circumference //
>include <iostream.h #
main) (
{
char x , y;
cout << "\n " << " Enter two characters separately : \t;"
cin >> x >> y;
cout << "\n" << "You entered " << x <<" and " << y << " characters ;"
return 0;
}
Output
Enter two characters separately : a b
You entered a and b characters
47
خـالصۀ فصل
در این فصل دستورهای کلیدی ( ،)keywordsشناسه ها (،)identifiers
ثابت ها ( ،)constantsمتحولهرا( )variablesو انرواع دیترا ( data
)typesمورد بحث قررار گرفرت و در نتیمره مفراهیم ذیرل را
آموختیم:
دستورهای کلیدی عبارت از کلمات است که برای اهرداف خراص
در یک زبان استفاده میشودو نمیتوانیم آنرا بره حیرث نرام
های متحولها استفاده نماییم .امرا شناسره بره نرام اطرال
میشودکه برای متحولها ،توابع و صرف در برنامره اسرتفاده
میگردد.
ثابت عبارت از قیمت است که در اثنای اجرای برنامه قابرل
تغییر نباشد .ثابتهادر C++به دو نوع می باشد کره عبرارت
از ثابتهای اولی و ثابتهای دومی میباشد.
متحول نام است که به یک قسمتی از حافظه RAMداده میشرودو
همان قسمتی حافظه را ریزرف میکند .هرر وقتیکره قیمرت بره
متحول داده میشود ،قیمت در قسمت ریزرف شردا حافظره بره
شکل موقت ذخیره میگردد .به یاد داشته باشید وقتری متحرول
معرفی میشود ،باید نوعیت دیتا آن نیز تعیین گرردد .شرما
میتوانیدکه نوعیت متحول را عددی (تام و یا اعشاری) و یا
حروفی (یک حرفی و یا چند حرفی) تعریف کنید.
پرسشهای فصل
49
فصل چهارم
عملگرها و عبارت ها
Operators and Expressions
50
عملگرهای یکتایی()Unary Operators
عملگر یکتایی عبارت از عملگرری اسرت کره برازی یرک عنصرر
( )operandsاجرا میگردد .ایرن عملگرر همیشره قبرل از operand
ظاهرمیشود .انواعی مختلف عملگرهای unaryکره در C++وجرود
دارد عبارت اند از ):(Stroustrup, 1997
یکتایی مثبت ))Unary plus( – (+ .i
یکتایی منفی))Unary minus( – (- .ii
افزایش))Increment( – (++ .iii
کاهش))Decrement( – (- - .iv
نفی منطقی)!( – ()Logical NOT .v
بیتی مکمل)~( – ()Bitwise complement .vi
آدرس)&( – ()Address .vii
عالمه یکتایی منفی ( ) -غرض تفریق استفاده میشود .استفاده
این عالمه ،عالمۀ مقدار سمت راست خود را تغییرمیدهد .طرور
مثال ،این عالمه مقدار موجود را ضررب -1میسرازد .همچنران
عالمه یکتایی مثبت ( )+مقدار موجود خود را ضرب +1میسازد.
Output
The Value of a is: 11
را از نوع اعداد تام یا intدر نظر گیرید b مثال :2.4متحولها aو
a = 16 , b = 3.
52
متحول C1و C2از نوع حروفی است و قیمت حروف Pو Tرا در خود ذخیره نموده در نظر
گیرید.
‘ C1 = ‘ A ‘ and C2 = ‘ a
- 20 % 5 = - 2
- 20 % - 6 = - 2
20 % - 6 = 2
اگر در یک عملیه هر دو عدد اعشاری باشد ،چنین عملیره را
به نام ) ( Real Arathmaticیادمیکند .در این نوع عملیره اعرداد
میتواندبه شکل اعشاری و یا توان دار باشد .نتیمۀ محصرول
نیز به شکل اعشاریه دار ظاهرمیشود.
عملیات مختلط حسابی ()Mixed – Mode Arathmatic Operations
در عملیات مختلط حسابی یک عردد از نروع ترام ( )intو عردد
دومی از نوع اعشاری ()realمیباشد .وقتیکه یکری از ایرن دو
عدد اعشاری باشد نتیمه نیز شکل اعشراری را میگیررد ( 2002,
.)Prinz
طور مثال:
می شود. 15 / 2.0 = 7.5 و 15 / 2 = 7
اولویت بندی عملگر های حسابی ()Precedence of Arathematic Operators
هر عبارت مطابق قواعد اوهویت مورد ارزیابی قرارمیگیرد.
طور مثال:
53
4*5/2
این عبارت از سمت چس به راست ارزیابی میشود .در قدم اول
( )20تقسریم 2میشرود. 4*5گردیده و بعرد حاصرل ضررب
ترتیب اجرای عبارت بیشتر متکی به اولویت عملگر هرا اسرت
که در جدول ذیل بیان گردیده است.
جهت فعالیت عملگر حق اولویت بندی
چپ به راست ( ) 1
راست به چپ Unary 2
*, / , % 3
چپ به راست
+,- 4
چپ به راست
جدول 2.4توضیح حق اولویت بندی عملگرهای مختلف
در یک عملیۀ حسابی عبارت که در بین قوس قرار دارد اول
اجرامیگردد.
در صورتی که در یک عملیه چندین جوره قوسهاوجود داشرته
روس وجرود دارد اول اجرراباشد ،عبرارتی کره در وسرط قر
میشودو به همین قسرم بره طررف بیررون یکری پری دیگرری
اجرامیشود.
اگر در یک عملیه دو یا بیشرتر عملگرهرا کره دارای حرق
اولویت مساوی باشد وجود داشته باشد در آنصرورت عملیره
از سمت چس به راست اجرامیشود .به این معنا ،آن عملگرر
که نزدیک مساوی قرار دارد اول اجرامیشود.
قوسها میتواند حق اولویت را تغییر دهند.
مثال :3.4معادلۀ ذیل را در نظر گیرید.
−b±√b2 −4ac
X1 =
2a
اگر b = 4 ،a = 1و
c= 4
معادل معادله فوق در زبان C++قرار ذیل است:
x ) = ( -b + sqrt ( b * b – 4 *a*c) / ( 2 * a
)= (( -4 ) + sqrt ( 4 * 4 – 4 *1 * 4 )) / ( 2 * 1
= ( -4 + sqrt (4 * 4 – 4 * 1 * 4 )) / ( 2 * 1 ) // Evaluation inner most prantheses
)= ( -4 + sqrt ( 16 – 4 * 4 )) / ( 2 * 1
)= ( -4 + sqrt (16 – 16 )) / ( 2 + 1
)= ( -4 + sqrt (0)) / ( 2 * 1
)= ( -4 + 0) / ( 2 * 1
= -4 / 2
x1 = -2
54
مثال :4.4عبارت ذیل را در نظر گیرید.
)) ( -5 * 2 / ( 6 + 4 - 2) + ( 2 / 3 + 5
ترتیب ارزیابی آن قرار ذیل میباشد:
)) = ( -5 * 2 / ( 6 + 4 - 2) + ( 2 / 3 + 5
)) = ( -5 * 2 / (10 – 2 ) + ( 2 / 3 + 5
))= ( -5 * 2 / 8 + (2 / 3+ 5
)) = ( - 5* 2 / 8 + ( 0 + 5
)= ( -5*2 / 8 + 5
) =(-10 / 8 + 5
= -1 + 5
=4
برنامۀ که عبارت ذیل را مورد ارزیابی قرارمیدهد:
// Program to Evaluate a given Expression
>#include <iostream.h
( main
{
; int result
; “ ))cout << “ \n “ << “The given expression is : (-5 *2/(6+4-2) + ( 2/3 + 5
;))result = (-5 * 2 / ( 6 + 4 -2 ) + ( 2/3+5
; cout << “\n” << “Result of evaluation is : “ << result
;return 0
}
Output
))The given expression is : (-5 *2/(6+4-2) + ( 2/3 + 5
Result of Evaluation : 4
اگر بیشتر از یک جوره قوس ها در کنار یکدیگر ظاهر گرردد
در آنصورت ارزیابی آن از سمت چس به راست در نظرر گرفتره
میشود .طور مثال ،چس ترین ست قوسهرااول اجررا گردیرده و
جرروره قرروس هررای کرره در سررمت راسررت موقعیررت دارد آخررر
اجرامیشررود .از قوسهرراوقتی اسررتفاده میشررودکه در قسررمت
اولویت عملگر ها شک و شربه وجرود داشرته باشرد .همچنران
استفاده از قوسهابرنامه را خواناترمیسازد.
مثال :5.4عبارت ذیل را در نظر گیرید.
++x - y ++ where x = 6 , y = 2
++x - 2 )unary operators ( from right to left
7 - 2 uniary operators
)First x = 6 , x = 7 (pre-increment
5 Substraction
55
ارتباطی)(Relational Operators
عملگرهای
این عملگر ها بیشتر در عملیات شرطی کره نتیمره آن درسرت
( )Trueو یا نادرسرت ( )Falseمیباشداسرتفاده میگرردد .ایرن
عملگر ها نتیمۀ هر عبارت را به شکل تام نشان میدهد .اگر
نتیمه عبارت نادرست باشد آنرا به 0نمایش میدهد ولی آگر
نتیمه درست باشد آنرا به قیمت تام که خالف 0باشد ،نشران
میدهد.
طور مثال:
50 < 200
X >Y
( relationعبارت های فرو را بره نرام عبرارت هرای ارتبراطی
)expressionsیاد میکنندکه نتیمۀ آن ممکن درست و یرا نادرسرت
باشد .اگرر قیمرت X = 10و Y = 5باشرد در آنصرورت X > Y = True
میشود.
به صورت عموم ،شش نوع عملگر های ارتباطی وجود دارد.
معنی عملگر
بزرگتر از >
کوچکتر از <
برزگتر و یا مساوی =>
کوچکتر و یا مسای =<
مساوی ==
نا مساوی =!
56
(مقایسه میشود .این عملگر های حسابی نسبت به عملگرر
های ارتباطی دارای اولویت بیشترمیباشد .عملگرر هرای
ارتباطی برای مقایسه دو مقدار در بیانیه های تصرمیم
گیری استفاده میگردد.
مثال :7.4برنامۀ ذیل طریقه استفاده عملگرهای ارتباطی ( )Relational operatorsرا نشان میدهد.
57
نتیمه ) (ANDمنطقی وقتی درست می برآید که هردو قیمرت
درست باشد اما اگر یکی از این دو قیمرت هرا نادرسرت
باشد نتیمه ) (ANDمنطقی نیز نادرست میشود.
نتیمه ()ORمنطقی در صورتی نادرست می برآید که هر دو
قیمت نادرست باشد اما اگر یکی از ایرن دو قیمرت هرا
درست باشد نتیمه ( )ORمنطقی نیز درست میشود.
C++ یک عملگر دیگری به نام عملگر یکانی (!) که معنای
NOTرا ارایه میکنددارد که نتیمه یک عبارت منطقی را
همیشه برعکس آن نشان میدهد.
مثال :8.4اگر c = ‘a’ ، x = 5.1 ، i = 8باشد درصورتکه iدارای دیتا
تایس تام یا ، intمتحول xاعشاری و cدارای دیتا تایس
حرفی یا characterباشد.
استفاده عملگرهای منطقی را ذیال مشاهده نمایید.
قیمت تام ()Integer value قیمت منطقی ()Logical value عبارت ()Expression
( 1خالف صفر) True )’) i > 6 ( && ( c = = ‘a
0 False )’i < = 6 || ( c = = ‘b
1 True )i >= 6 && ( c = = 97
1 True )(x < 10) || ( I > 10
1 True )! ( i < = 4
1 True )’( c ! = ‘p
جدول 4.4جدول حقیقت ( )truth tableبرای عملگرهای منطقی
نتیجه شرط اول نتیجه نتیجه شرط دوم شرط اول
!a a || b a && b B A
) (Falseنادرست ) (Trueدرست ) (Trueدرست ) (Trueدرست ) (Trueدرست
) (Falseنادرست ) (Trueدرست ) (Falseنادرست ) (Falseنادرست ) (Trueدرست
) (Trueدرست ) (Trueدرست ) (Falseنادرست ) (Trueدرست ) (Falseنادرست
) (Trueدرست ) (Falseنادرست ) (Falseنادرست ) (Falseنادرست ) (Falseنادرست
59
جدول 6.4توضیح عملگرهای اختصاریافته
فواید عملگرهای مختصر ()Advantages of shortened Assignment Operators
راسرت .1متحول سمت چس ززم نیست که برار دوم در سرمت
نوشته شود.
عبرررارت کوتررراه و مختصرررر میگررررددو خوانررردن آن .2
آسانترمیشود.
دارای موثریت ( )efficientعالی میباشد. .3
تفاوت بین عملگر == و =
مساوی و به نام عالم == .1از جملۀ عملگرهای مقایسوی است
برای مقایسه نمودن ( )equalityoperatorیادمیشود .این عملگر
دو قیمت استفاده میشود .طور مثال:
)If (x = = 10
در حالیکه = عملگر توظیف ( )assignmen operatorاست که یرک
قیمت را در متحول توظیف مینمایرد .عملگرر توظیأف (=)
قیمت که در سمت راست آن قرار دارد در متحول سمت چرس
= ذخیره میکند .طور مثال:
; Y = 20
عملگر (==) قیمت متحول را که در سمت چرس قررار دارد .2
تغییرنمیدهد .در حالیکه = قیمت سرمت چرس عالمره = را
تغییرمیدهد.
چندین عملگر = ()Multiple Assignment
بیانیه یک در را چندین C++به ما اجازه میدهدکه
استفاده نماییم مانند:
; Variable = Variable1 = Variable2 = ……= Experssion
. مضمون وارد شده را دریافت مینماید4 برنامۀ ذیل بلندترین نمره بین نمرات:12.4 مثال
//Program to find the highest marks of a student in 4 Exams
# include <iostream.h>
main) (
{
int m1, m2, m3, m4, highest;
cout << "\n " << "Enter the marks in 4 papers : " << "\n ";
cin >> m1 >> m2 >> m3 >> m4;
highest = m1 > m2 ? m1 : m2;
highest = highest > m3 ? highest : m3;
highest = highest > m4 ? highest : m4 ;
cout << "\n " << "Highest marks in 4 papers = " << highest;
}
Output
Enter the marks in 4 papers :
56 74 66 60
Highest marks in 4 papers = 74
61
عملگر بیتی ()Bitwise Operators
این عملگر هرا بخراطر کرار کردن روی بیرت هرا اسرتفاده
میشوند .در C++این عملگر ها قرار ذیل اند:
عملگر بیتی )&(AND .i
عملگر بیتی )|(OR .ii
عملگر بیتی )^(XOR .iii
.ivعملگر بیتی )~(NOT
عملگر بیتی تغیر مکان به سمت چس )<<(Shift left .v
.viعملگر بیتی تغیر مکان به سمت راست )>>(Shift right
#include <iostream.h>
main ( )
{
int And, Or, Not_a, Not_b, Xor;
int a = 8 , b=5;
And = a & b;
Or = a | b;
Not_a = ~a;
Not_b = ~b;
Xor = a ^ b;
cout <<"The Value of a&b is: "<< And << endl;
cout <<"The Value of a|b is: "<< Or << endl;
cout <<"The Value of a NOT is: "<< Not_a << endl;
cout <<"The Value of b NOT is: "<< Not_b << endl;
cout <<"The Value of a^b is: "<< Xor << endl; return 0;
}
Output
The Value of a&b is: 0
The Value of a|b is: 13
The Value of a NOT is: -9
The Value of b NOT is: -6
The Value of a^b is: 13
63
عملگر های سه تایی ()Ternary Operators
این عملگرها بازی سه عنصر دیترا اجرامیشرود .عملگرر سره
تایی ( ) ? :به نرام عملگرر شررطی نیرز یرادمیگردد(.این
عملگر ها در فصل پنمم به بحث گرفته شده است)
عملگر )(sizeof
را این عملگر اندازا قیمت وارد شده در سرمت راسرت .i
به شکل بایت نشان میدهد.
ساختار این عملگر قرار ذیل است: .ii
)sizeof (n
میتوانردمتحول ،ثابرت و یرا دیترا تایرس در اینما n
باشد.
این یک عملگر یکتایی است که از راست به چرس در نظرر .iii
گرفته میشود.
این عملگر جهت تعیین و یا تشخیص نمرودن انردازا صرف .iv
( )arrayو یا structureاسرتفاده میگرردد .ایرن عملگرر را
میتوانیم جهت جابما نمرودن متحرول در حافظره متحرر
( )dynamic memoryنیز استفاده کرد.
64
// Program to show usage of sizeof operator
#define STRING "Usage of sizeof Operator"
#include <iostream.h>
main ( )
{
char a = ' p ' ;
cout << "\n" << " The size of char is : " << sizeof (char) ;
cout << "\n" <<" Therefore the size of char a is :" << sizeof (a) ;
cout << "\n" <<" However the size of ' p ' is :"<< sizeof ( 'p');
cout << "\n\n" << "STRING Usage of sizeof Operator\n";
cout << " \n" << " The number of bytes in STRING IS :" << sizeof (STRING) ;
cout <<"\n" << "The size of short is :" << sizeof (short);
cout << "\n " << "The size of int is :" << sizeof (int) ;
cout << "\n " << "The size of long is :" << sizeof (long) ;
cout << " \n " <<"The size of float is :" << sizeof (float) ;
cout << " \n " << "The size of double is :" << sizeof (double) ;
}
Output
The size of char is : 1
Therefore the size of char a is : 1
However the size of ‘ p ‘ is : 1
STRING “ Usage of size Operator “
The number of bytes in STRING IS : 25
The size of short is : 2
The size of int is : 4
The size of long is : 4
The size of float is : 4
The size of double is : 8
وجرود دارد کره C++ به صورت عموم چهار نوع عبارت در لسان
:عبارت اند از
)Constant Expression ( عبارت ثابت
65
عبارت حسابی ()Arathematic Expression
عبارت ارتباطی ()Relational Expression
عبارت منطقی ()Logical Expression
67
حق اولویت عملگرها ()Precedence of Operators
حق اولویت عملگرها وقتری مطررح میشرودکه در یرک بیانیره
چندین عملگر وجود داشته باشد.
عملگررری کرره حررق اولویررت بیشررتر دارد اول اجرررا
میگردد(.)Oualline, 1995
اگرعملگررر هررا دارای حررق اولویررت مسرراوی باشررند در
آنصورت ،اول عملگرری اجررا مریگرددکره در سرمت چرس
بیانیه موقعیت دارد.
)(a<10 && a + b >15 طور مثال:
اگر قیمت a = 20و b =1باشد.
در آن صورت اولویت بندی قرار ذیل میباشد:
.iطوریکه +از بازترین اولویت در این عبارت برخروردار
است به همین خاطرعملیه جمع اول آنمام میشود.
a < 10 && 21 > 15
هر دو عملگر ارتباطی (< و >) در قدم دوم حق اولویرت .ii
بیشتر نظر به عملگرر منطقری (&&) دارد .پرس ،عملگرر
ارتباطی که در سمت چس وجود دارددوم و بره تعقیرب آن
عملگر سمت راست سوم اجرامیشود.
20 < 10 && 21 > 15
false && true
نادرست یا ( )falseیا 0میشود. نتیمه عملگر منطقی (&&) .iii
حق اولویت بندی جهت فعالیت کتگوری عملگر عملگر
صداکردن تابع ،قوسهای کوچک ) (
1 از چپ به راست عناصر صنف ] [
انتخاب عناصر →,.
68
جمع یکتایی +
منفی یک -
تایی ++
افزودن --
کاهش !
Notمنطقی ~
One’s complement *
2 از راست به چپ Pointer reference )Sizeof (type
آدرس یی
اندازه متحول
عملگر cast
69
مثال :15.4در مثال ذیل چرا اوسط نمرات به شکل درست محاسبه نگردیده است؟
>#include <iostream.h
) ( main
{
;int Computer = 90
;int English = 60
مثال :16.4در مثال ذیل اوسط نمرات به شکل درست محاسبه گردیده است؟
>#include <iostream.h
) ( main
{
;int Computer = 90
;int English = 60
. برنامۀ ذیل جذر مربع هر عدد وارد شده از صفحه کلید را دریافت مینماید:18.4 مثال
#include <iostream.h>
#include <math.h> // required for pow function
main ( )
{
// Declaration
double Base, Exponent, Result;
cout << "Enter value for Base and Power : ";
cin >> Base >> Exponent;
Result = pow(Base, Exponent);
cout << Base <<" ^ " << Exponent << " = " << Result;
return 0;
}
Output
Enter value for Base and Power : 2 3
2^3=8
72
#include <iostream.h>
#include <math.h> // required for pow function
main ( )
{
// Declaration
double Base, Root, Result;
cout << "Enter value for Base and Root : ";
cin >> Base >> Root;
Result = pow(Base, 1/Root);
cout << Base <<" Jazar " << Root << " = " << Result;
return 0;
}
Output
Enter value for Base and Root : 32 5
32 Jazar 5 = 2
#include <iostream.h>
#include <math.h> // required for log function
main ( )
{
// Declaration
double Number, Log1, Log2;
cout << "Enter a number to find its logarithm : ";
cin >> Number;
Log1 = log10(Number); //Finds log of any number on base 10
Log2 = log(Number); //Finds log of any number on base e
cout << " Log10 " << Number << " = " << Log1;
cout << " LogE " << Number << " = " << Log2;
return 0;
}
Output
Enter a number to find its logarithm : 100
Log10 100 = 2
LogE 100 = 4.605
. برنامۀ ذیل ساین هر زاویۀ که از نوع درجه باشد دریافت مینماید:22.4 مثال
#include <iostream.h>
#include <math.h> // required for sin function
main ( )
{
// Declaration
73
double Number, SN;
cout << "Enter an angle size to find its Sin : ";
cin >> Number;
SN = sin(Number * 3.14159 / 180);
cout << " Sin " << Number << " = " << SN;
return 0;
}
Output
Enter an angle size to find its Sin : 30
Sin 30 = 0.5
) هر زاویه را میتوانیدبه شیوه فوق دریافتtan( ) و تانجانتcos( قابل یاد آوری است که کوساین
.نمایید
. برنامۀ ذیل کوتانجانت هر زاویۀ که از نوع درجه باشد دریافت مینماید:23.4 مثال
#include <iostream.h>
#include <math.h> // required for Cotengent function
main ( )
{
// Declaration
double Number, cot;
cout << "Enter an angle size to find its Cotengent : ";
cin >> Number;
cot = 1/tan(Number * 3.14159 / 180);
cout << " Cotengent " << Number << " = " << cot;
return 0;
}
Output
Enter an angle size to find its Cotengent : 45
Cotengent 45 = 1
.) را به شیوۀ فوق دریافت نمایید1/sin( کوسکینت ) و1/cos( شما میتوانیدکه سکینت
. را به توان عدد وارد شده از کیبورد باالمیبردe = 2.7182 برنامۀ ذیل قیمت:24.4 مثال
#include <iostream.h>
#include <math.h>
main ( )
{
// Declaration
double Number, R;
cout << "Enter a number: ";
cin >>Number;
R = exp (Number);
cout << " Result = " << R;
74
;return 0
}
Output
Enter a number : 2
Result = 7.389
مثال :25.4برنامۀ ذیل قیمت مطلقه هر عدد واردشده از صفحه کلید را دریافت مینماید.
>#include <iostream.h
>#include <math.h
) ( main
{
// Declaration
;int N, R
;" cout << "Enter a number:
;cin >>N
;)R = abs (N
;cout << " Result = " << R
;return 0
}
Output
Enter a number : -200
Result = 200
خالصۀ فصل
در این فصرل عملگرهرا ( ،)Operatorsعبرارت هرا ( )Expressionsو
بیانیه های ( C++ )Statementsمورد بحث قرار گرفت و در نتیمه
مفاهیم ذیل را آموختیم:
عملگر عبارت از سمبول است که به خاطر اجرای عملیات خراص
حسابی و یا منطقی استفاده میشود .در لسان C++چندین نروع
عملگر وجود دارد که عبارت اند:
عملگر یکتایی عملگر است که بازی یک عنصر اجررا میشرود ؛
عملگر دوتایی عملگر است که بازی دوعنصر اجرا میشود.
عملگر حسابی عملگر است که غرض اجرای عملیات حسابی مانند
جمع ،منفی ،ضرب ،تقسیم و غیره عملیات استفاده میشود.
75
در حالیکه عملگرهای ارتباطی بیشتر در عملیرات شررطی کره
نتیمه آن درست و یا نادرست میباشرد ،اسرتفاده میگرردد.
این عملگر ها نتیمۀ هر عبارت را به شکل تام نشان میدهد.
اگر نتیمه نادرست باشد آنرا بره 0نمرایش میدهردولی اگرر
نتیمه درست باشد آنرا به قیمت تام که خرالف 0باشرد نشران
میدهد.
عملگر های منطقی غررض یکمرا نمرودن دو یرا بیشرتر از دو
عبارت منطقی استفاده میگردد .به طرور عمروم ،سره عملگرر
منطقی وجود دارد که عبارت اند از OR ،ANDو .NOT
همچنان باید گفت که عبارت شامل :عملگرها ،ثابتهاو متحول
ها میباشدکه به چند نوع تقسیم گردیده اسرت :عبرارت هرای
ثابت ،عبارت های حسابی ،عبارت های ارتباطی ،عبرارت هرای
منطقی ،عبارت های پاینترها و عبارت های بیتی.
عبارت ثابت آن است که در ترکیب خود تنها قیمت های ثابرت
را داشته باشد .عبارت حسابی آن اسرت کره در ترکیرب خرود
متحولها ،ثابت هرا و عملگرهرای حسرابی را داشرته باشرد.
عبارت ارتباطی آن است که در ترکیب خود متحولها ،ثابتهرا
،عملگرهای حسابی و مقایسوی را داشته باشد .عبارت منطقی
آن است که در آن دو یا بیشتر از دو عملگرر ارتبراطی بره
راینتر قیمرتکمک عملگرهای منطقی وصل شده باشد .عبرارت پر
آدرس حافظه را نشان میدهد .و باآلخره ،عبارت بیتی نتیمره
را برره شررکل بیررت هررا بررا اسررتفاده از ANDو ORمنطقرری
نشانمیدهد.
بیانیه بخش مهمی یک برنامه اسرت کره قابل یت اجررا شردن
( )Executionرا داشته باشد .در زبان C++چندین نوع بیانیه ها
وجود دارند که عبارت اند از :بیانیه های انتخابی ( Selection
،)Statementsبیانیه های تکراری ( ،)Iteration Statementsبیانیه های
پرررش ( ،)Jump Statementsبیانیرره هررای لیبررل (،)Label Statements
بیانیه های عبارت ( )Expression Statementsو بیانیره هرای برال
(.)Block Statements
حالیکره بیانیه هرای انتخرابی شرامل ifو switchمیباشرددر
بیانیره بیانیه های تکراری شامل for ،whileو do-whileمیباشد.
بیانیره های پرش شرامل( goto ،continue ،breakو ) returnمیباشرد.
رین
در بر ره
رت کر
ری اسررای ترکیبر ره هر رامل بیانیر رال شر
رای بر
هر
76
قوسهایموره یی ( )Bracesدر می گرردد .و براآلخره ،بیانیره
های بال شامل default ،caseو gotoمیباشد.
پرسشهای فصل
77
فصل پنچم
بیانیه های تصمیم گیری یا شرطی
Conditional Statements
79
)if( فلوچارت بیانیۀ شرطی1.5 شکل
.) را نشان میدهدif ( برنامۀ ذیل شیوه استفاده دستور شرطی:1.5 مثال
/* Program to show usage of simple if () */
#include <iostream.h>
main ( )
{
int x , y = 10 ;
cout << “ \n Enter value of x : “ ;
cin >> x ;
if ( x > 0 )
cout << “ \n Sum = “ << x + y;
return 0 ;
}
Output
Enter value of x : 5
Sum = 15
.میسازد10 برنامۀ ذیل یک عدد را از صفحه کلید میگیرد ؛ اگر عدد وارد شده مثبت باشد آنرا ضرب:2.5 مثال
/* Program multiply only positive number * 10 inserted from keyboard */
#include <iostream.h>
main ( )
{
int x ;
cout << “ \n Enter a number : “ ;
cin >> x ;
if ( x > 0 )
cout << “ \n Result = “ << x * 10;
return 0 ;
}
Output
Enter a number : 20
Result = 200
if یک تعداد مثالهای ساده دیگر دستور شرطی
a) if ( balance = = 0)
cout << “ \n No more shopping !” ;
80
b) if ( a > b && a > c )
cout << “ \n Largest number is ” << a ;
c) int rain = 1;
if ( rain = = 1)
{
cout << “ \n Wear a raincoat!” ;
cout << “ \n or hold an umbrella ” ;
}
e) if ( dues > 0 )
{
cout << “ \n Account number is overdue ” << accno ;
creadit = 0 ;
}
f) if ( a = = b || a = = c || b = = c )
{
cout << “ \n It is an isosceles triangle ” ;
}
. برنامۀ ذیل عدد بزرگتر بین دو عدد وارد شده را دریافت مینماید:3.5 مثال
/* Program to find largest of two numbers */
#include <iostream.h>
main ( )
{
int a , b, large ;
cout << “ \n Type 2 numbers : “ ;
cin >> a >> b ;
// Assuming largest number is a
large = a ;
if ( b > large )
large = b ;
cout << “ \n Largest of “<< a << “ and “<< b <<” is “ << large ;
return 0;
}
Output
Type 2 numbers : 15 48
Largest of 15 and 48 is 48
81
مثال :4.5برنامۀ ذیل تفاوت بین = و == را در صورتکه دستور شرطی استفاده گردیده باشد نشان میدهد.
**/Program to show what happens when = is given instead of == in if statement/
>#include <iostream.h
( )main
{
; int x = 0
if ( x = 0) // condition becomes false since x = 0
cout << " x is 0, x==0 is true, but this statement will not be output /n ";
(if (x!= 0
";cout << " x is 0, x!=0 is false, so this statement will not be output /n
if (x=15) // condition becomes true since value of x is not zero
;cout << " can you believe it, x is actually! " <<x
; return 0
}
Output
Can you believe it, x is actually! 15
83
The Number is Negative
You " باشد در آنصورت پیامA اگر حرف وارد شده، برنامۀ ذیل یک حرف را از صفحه کلید میگیرد:6.5 مثال
. " را نشان میدهدWrong Character" " و اگر خالف آن باشد کلمهEntered A
/* Program multiply only positive number * 10 inserted from keyboard */
#include <iostream.h>
main ( )
{
char chr ;
cout << " \n Enter an alphabit character : " ;
cin >> chr ;
if ( chr == 'A')
cout << " \n You Entered A ";
else
cout << " \n You Entered a Wrong Character ";
return 0 ;
}
Output
Enter an alphabit character : A
You Entered A
. برنامۀ ذیل سال وارد شده را ارزیابی نموده که سال کبیسه است یا خیر؟:9.5 مثال
/* Program to check whether a given year is a leap year */
#include <iostream.h>
main ( )
{
int yr, rem_4, rem_100, rem_400 ;
cout << " \n Enter the 4 digit year to be checked :" ;
cin >> yr ;
// to find the remainders of division by 4, 100 & 400
rem_4 = yr % 4 ;
rem_100 = yr % 100 ;
rem_400 = yr % 400 ;
if ((rem_4 == 0 && rem_100!=0) || rem_400 ==0)
cout << "\n is a leap year " << yr ;
else
cout << "\n is not a leap year ok !" << yr ;
return 0;
}
Output
Enter the 4 digit year to be checked : 2004
2004 is a leap year
85
Enter the 4 digit year to be checked : 1998
1998 is not a leap year ok !
Enter the 4 digit year to be checked : 3000
3000 is not a leap year ok !
. برنامۀ ذیل قیمت مطلقۀ عدد وارد شده را دریافت مینماید:10.5 مثال
// Program to calculate absolute value of an integer
#include <iostream.h>
main ( )
{
int num ;
cout << “ \n Type a number :“ ;
cin >> num;
if (num < 0)
{
num = - num ;
cout << “\n The absolute value is “ << num ;
}
else
cout << “\n The absolute value is “ << num ;
return 0 ; }
Output
Type a number : -456
The absolute value is 456
Type a number : 360
The absolute value is 360
Type a number : 0
The absolute value is 0 (how ? )
. برنامۀ ذیل دو قیمت وارد شده را به شکل نزولی ترتیب میکند:11.5 مثال
// Program to display 2 numbers in descending order
#include <iostream.h>
main ( )
{
int num1, num2 ;
cout << “ \n Enter 2 numbers :“ ;
cin >> num1 >> num2;
cout << “ Number in Descending order are : “ ;
if (num1 >= num2)
cout << “\n “ << num1 << num2 ;
else
cout << “\n “ << num2 << “ “ << num1 ;
return 0 ; }
Output
Enter 2 numbers : 25 31
31 25
86
Enter 2 numbers : -40 10
10 - 40
. عدد وارد شده را دریافت میکند4 برنامۀ ذیل بزرگترین و عدد بزرگتر بین:12.5 مثال
/* Program to find the largest & second largest of 4 numbers and their average */
#include <iostream.h>
main ( )
{
int m1, m2, m3, m4, first, second ;
float avg ;
cout << “ \n Enter the marks obtained in 4 papers :“ ;
cin >> m1 >> m2 >> m3 >> m4;
if (m1 > m2)
first = m1, second = m2 ;
else
first = m2, second = m1 ;
if (m3 > first)
second = first, first = m3 ;
else if ( m3 > second )
second = m3 ;
if (m4 > first)
second = first, first = m4 ;
else if ( m4 > second )
second = m4 ;
cout << “\n “ << “Largest marks “ << first ;
cout << “\n “ << “Second Largest marks “ << second ;
avg = ( first + second ) / 2.0 ;
cout << “\n “ << “ Average of best two marks = “ << avg ;
return 0;
}
Output
Enter the marks obtained in 4 papers : 56 78 40 48
Largest marks = 78
Second Largest marks = 56
Average of best two marks = 67.00
. برنامۀ ذیل نتایج هر مضمون را در چهار امتحان نشان میدهد:13.5 مثال
/* Program to declare result in each subject in 4 papers */
#include <iostream.h>
main ( )
{
int m1, m2, m3, m4;
cout << " \n Enter the marks in 4 papers \n " ;
cin >> m1 >> m2 >> m3 >> m4;
if (m1 > 59)
cout << " FIRST CLASS in paper 1 \n";
87
else if ( m1 > 39 )
cout << " SECOND CLASS in paper 1 \n";
else
cout << " Fail in paper 1 \n" ;
if (m4> 59)
cout << " FIRST CLASS in paper 4 \n";
else if ( m4 > 39 )
cout << " SECOND CLASS in paper 4 \n";
else
cout << " Fail in paper 4 \n" ;
return 0;
}
Output
Enter the marks in 4 papers :
38 40 24 60
Fail in paper 1
SECOND CLASS in Paper 2
FAIL in paper 3
FIRST CLASS in paper 4
. نشان میدهدif ( ) - else ) را در دستور شرطیchar( برنامۀ ذیل شیوه استفاده:14.5 مثال
// Program to show usage of char in if ( ) statement
#include <iostream.h>
#include <stdio.h>
main ( )
{
char wish;
cout << " \n Want to got to movie Y/ N ?:" ;
wish = getchar( );
88
if (wish == 'Y' || wish == 'N')
cout << "\n " << " Go and get ready quickly ! " ;
else
cout << "\n " << " Go and start studying ! " ;
return 0;
}
Output
Want to go to movie Y / N ? Y
Go and get ready quickly !
Want to go to movie Y / N ? n
Go and start studying !
Want to go to movie Y / N ? y
Go and start studying !
Want to go to movie Y / N ? A
Go and start studying !
89
بیانیره هرا S4 و S3 ،S2 ، S1 شرروط و
در اینمرا e2 و e1
هستند.
هرگاه شرط e1درست باشد مترجم به تعقیرب آن شررط e2را
چک میکند .اگر شرط e2هم درست باشد در آنصورت بیانیرۀ
s1اجرا میشودو کنترول به بیانیرۀ s4منتقرل میگرردد.
اگر شرط e2نادرسرت باشرد در آنصرورت بیانیرۀ s2و بره
تعقیب آن S4اجرامیگردد.
اگر شرط e1نادرست باشرد در آنصرورت بیانیرۀ S3و بره
تعقیب آن بیانیۀ S4اجرامیگردد.
امکان دارد که S3, S2, S1حراوی بیانیره هرای دیگرر if – else
باشند که این حالت را به نام Multi – Layer Nestingیادمیکند.
. دریافت مینمایدnested if ( ) عدد وارد شده با کمک3 برنامۀ ذیل بزرگترین عدد را بین:16.5 مثال
// Program to find the largest of three numbers using nested if ( ) – else
#include <iostream.h>
main ( )
{
int a, b, c, large ;
cout << “ \n Enter 3 numbers :“ ;
cin >> a >> b >> c ;
if ( a > b )
if (a > c)
large = a;
else
large = c;
else
if (b>c)
large = b;
else
large = c;
cout << “\n Largest Number is “ << large; }
Output
Enter 3 numbers : 22 6 11
Largest Number is 22
Enter 3 numbers : 10 50 42
Largest Number is 50
Enter 3 numbers : 13 6 80
Largest Number is 80
، برنامۀ ذیل کرکتر وارد شده به برنامه را میخواندو دریافت مینمایدکه کرکتر وارد شده حرف الفبا:17.5 مثال
.) استspecial characters( رقم و یا از جمله سمبولهای خاص
/* Program to read a character and determine whether it is an alphabet, digit or a special
character */
91
#include <iostream.h>
main ( )
{
char ch;
cout << " \n Enter a single character please :" ;
cin >>ch;
if ((ch>='a' && ch <='z') || (ch >= 'A' && ch <= 'Z'))
cout << "\n " << " It is an Alphabet" ;
else
if ( ch >='0' && ch <= '9' )
cout << "\n " << " It is a digit" ;
else
cout << "\n It is a special character ";
return 0; }
Output
Enter a single character please : u
It is an Alphabet
Enter a single character please : !
It is a special character
Enter a single character please : 7
It is a digit
برنامرۀ فرو بررای حرروف برزرگ و کوچرک مرورد اسرتفاده
قیمت را در خود ذخیره کنرد کره آنch وقتیکه.قرارمیگیرد
نه حرف و نه هم عدد باشد در آنصورت آنرا به حیرث سرمبول
.خاص قبول میکند
. را دریافت میکند2 برنامۀ ذیل جذرهای معادالت یک مجهوله درجه:18.5 مثال
/* Program to find the roots of a quadratic equaiton */
#include <iostream.h>
#include <math.h>
main ( )
{
float a, b, c,d;
float x, x1, x2;
float rpart, ipart;
cout << " \n Enter 3 numbers :" ;
cin >> a >> b>> c ;
// solution to equation of the form bx + c = 0
if (a==0)
{
x=-b/c;
cout << "\n Only root " << x ;
}
// Calculate discriminant d
92
d = b * b - 4 * a * c;
// Solution with real and distant roots
if (d > 0)
{
cout <<"\n Real and district roots are : " ;
x1 = (-b + sqrt (d)) / (2*a) ;
x2 = (-b - sqrt (d)) / (2*a) ;
cout <<"\n x1 = " <<x1 << ”\n” <<" x2 =" << x2;
}
else
if (d ==0)
{
// Solution with repeated roots
cout <<"\n Repeated Roots are : " ;
x1 = -b / (2*a) ;
x2 = x1 ;
cout <<"\n x1 & x2 = " <<x1 ;
}
else
{
// Solution with complex roots
d = sqrt(abs(d));
rpart = -b / (2 * a) ;
ipart = d / (2 * a );
cout <<"\n Complex roots are : " ;
cout << "\n x1 = " << rpart << " + i " << ipart; // Real part of a complex root
cout << "\n x2 = " << rpart << " + i " << ipart; // Imaginary part of a complex
root
}
x=-b/c;
cout << "\n Only root " << x ;
}
Output
Enter 3 numbers : 1 4 1
Real and district roots are :
x1 = -0.267
x2 = -3.732
Enter 3 numbers : 4 4 1
Repeated roots are :
x1 & x 2 = -0.5
Enter 3 numbers : 1 2 3
Complex roots are :
x1 = -1 + i 1.41421
93
x2 = -1 + i 1.41421
.) اجرأت میکند/ ،* ،- ،+( عدد را از کیبورد گرفته مطابق به عالمۀ وارد شده2 برنامۀ ذیل:19.5 مثال
// Program to simulate the 4 arthmetic operations +, -, *, /
// for 2 real number depending on the operators
#include <iostream.h>
main ( )
{
94
Output
Enter an operator : +
Enter 2 nummbers : 5 4
Sum = 9.00
Enter an operator : -
Enter 2 nummbers : 5 8
Difference = -3.00
Enter an operator : *
Enter 2 nummbers : 12.4 6
Product = 74.40
Enter an operator : /
Enter 2 nummbers : 12 4
Quotient = 3.00
Enter an operator : &
Enter 2 nummbers : 2 3
Error in Input
. عدد وارد شده دریافت مینماید3 برنامۀ ذیل بزرگترین ویا عدد بزگتر دوم را بین:20.5 مثال
/* Program to find the largest & second largest of 3 numbers */
#include <iostream.h>
main ( )
{
int a, b, c, first, second ;
char op;
cout << “ \n Enter 3 numbers :“ ;
cin >> a >> b >> c ;
if (a > b)
if (a>c)
{
first = a ;
if (b > c)
second = b ;
else
second = c;
95
}
else
{
first = c;
second = a;
}
else
if (b > c)
{
first = b;
if (a>c)
second = a;
else
second = c;
}
else
{
first = c;
second = b;
}
cout << “\n Largest is = “ << first << “\n Second largest is = “ <<second;
}
Output
Enter 3 numbers 15 2 10
Largest is 15
Second Largest is 10
Enter 3 numbers 28 65 5
Largest is 65
Second Largest is 28
Enter 3 numbers 79 12 6
Largest is 79
Second Largest is 12
96
بیانیه ) ( THE ELSE – IF
nestedشریروا دیرگر کره برا اسرترفاده از آن میرتروانریم
if () – elseرا توضیح دهریرم عرربرارت از )( else – ifمیباشدکه در
آن هر elseبیانیه ifرا نیز با خود دارد (.)Nawaz, 2006
شکل عمومی )( else – ifقرار ذیل است:
101
صد نکند در آنصرورت تمرام بیانیره هرایcase هیچ قیمت
. اجرامیگرددDefault مربوط به
اگر وجود نداشته باشد. اختیاری استdefault نوشتن بیانیه
. اجرا میگرددx در آنصورت بیانیه
ززمی است به خراطری کرهcase در اخیر بال هرbreak نوشتن
رردد
رته نگر
رر نوشر اگر.رد
ران میدهر رود را نشر موجرcase رتم
خر
. ها یکی پی دیگر اجرامیگرددcase درآنصورت تمام
. مماز نیستcase label نوشتن قیمت اعشاری در
. نیز استفاده کنیدnested را به شکلswitchشما میتوانید
Output
Enter an operator : +
Enter 2 numbers : 6 9
Sum = 15.00
103
بادرنظرداشت قاعده فوق برنامه را بنوسید که معاش و کتگوری کارمند را در نظر:26.5 مثال
گرفته مطابق آن اندازه کرایه آنرا معلوم نماید؟
/* Program to calculate rent allowance based on employee atagory */
#include <iostream.h>
main ( )
{
int cat ;
float sal, rent;
cout << “ \n Enter the category and salary of Employee :“ ;
cin >> cat >> sal;
switch ( cat )
{
case 1:
rent = sal * 0.3;
break;
case 2:
rent = sal * 0.2;
break;
case 3:
rent = sal * 0.15 ;
break;
case 4:
rent = sal * 0.1;
break;
default :
cout <<”\n Wrong Input “;
break;
}
cout <<” \n The rent allowance = “ << rent;
return 0;
}
Output
Enter the category and salary of Employee : 2 36000
The allowance = 7200.00
. را دریافت نموده روی سکرین نشان میدهد2 برنامۀ ذیل جذرهای معادله یک مجهوله درجه:27.5 مثال
/* Program to find the roots of a quadratic equation using switch statement */
#include <iostream.h>
main ( )
{
104
int flag;
float a, b, c, d;
float x, x1, x2;
float rpart, ipart;
cout << " \n Enter 3 numbers :" ;
cin >> a >> b >> c;
// solution to equation of the form bx + c = 0
if (a==0)
{
x = -b / c;
cout << "Only root = " << x;
}
d=b*b-4*a*c;
if ( d > 0 )
flag = 1;
else if ( d == 0)
flag = 2;
else
flag = 3;
// Solution using switch-case default statement
switch ( flag )
{
case 1:
cout << "\n Real and distinct roots are : " ;
x1 = (-b + sqrt (d)) / (2 * a) ;
x2 = (-b - sqrt (d)) / (2 * a) ;
cout <<"\n x1 = " << x1 << "\n x2 = " << x2 ;
break;
case 2:
cout << "\n Repeated roots are : " ;
x1 = -b / (2 * a) ;
x2 = x1 ;
cout <<"\n x1 & x2 = " << x1 ;
break;
case 3:
d = sqrt (abs (d)) ;
rpart = -b / (2 * a) ; // real part of a complex root
ipart = -b / (2 * a) ; // imaginary part of a complex root
cout <<"\n complex root are :" ;
cout << "\n x1 = " << rpart;
cout << "\n x2 = " << ipart;
}
}
Output
Enter 3 numbers : 2 6 4
105
Real and distinct roots are :
x1 = -1.000
x2 = -2.000
106
. را از کیبورد میگیردو معادالت ذیل را ارزیابی میکندx برنامۀ ذیل قیمت:28.5 مثال
/* Write a program to read the value of x and evaluate the following function
y = x + 15 for x > 0
y = 1.92x + 5 for x = 0
and y = 2x + 10 for x < 0 */
یک مغازا رخت فروشی برای مشتریان خویش به طور ذیل تخفیف
:را در نظر گرفته است
تخفیف مقدار خرید
Discount parchase amount
%5 100 – 0
%7.5 200 – 101
%10 300 – 201
%15 300 بیشتر از
برنامۀ را بنوسید که قیمت خالص را بعد از وضع تخفیف
نشان دهد؟
: مسأله فوق را طور ذیل برنامه ریزی مینماییم:29.5 مثال
// A cloth showroom offers discount on parchase of items as follow:
#include <iostream.h>
main ( )
{
float amount, net;
107
; "cout << " \n Enter the purchase amount please :
; cin >> amount
)if (amount <= 0
{
;" cout << "\n Invalid amount
}
// computation of net amount
net = (amount <= 100 ) ? amount - amount * 0.05 :
(amount <= 200) ? amount - amount * 0.075 :
(amount <= 300 ) ? amount - amount * 0.01 :
;amount - amount * 0.15
;cout << "\n The amount after discount = " << net
;return 0
}
Output
Enter the purchase amount please : 110
The amount after discount = 101. 75
Enter the purchase amount please : 542.9
The amount after discount = 461.47
بیانیه goto
با اسرتفاده از ایرن بیانیره میتوانیردهر قسرمت دلخرواه
برنامه را اجرا کنید .قابل ذکر است که gotoبیانیرۀ شررطی
نیست .شکل عمومی آن قرار ذیل است (عدلیارgoto label; :)1381 ,
108
شکل 7.5بیانیه goto
وقتیکه لیبل بعد از بیانیه gotoنوشته شود آن را به نام
جمپ ب پیش رو ( )Jump forwardو اگر لیبرل قبرل از بیانیره
gotoمعرفی شود آنرا به نام جمپ ب عقب ( )backward Jumpیاد
میکندطوریکه در شکل 7.5نمایش داده شده است.
هر لیبل در یک برنامه باید یگانه ( )uniqueباشد .به این
معنا که دو بیانیه مختلف در یرک برنامره نمیتوانردعین
نام را برای لیبل داشته باشد.
بیانیه gotoرا میتوانیدهمراه برا دسرتور شررطی )( ifغررض
تکرار برنامه ( )loopاستفاده کرد.
بعضی اوقات gotoسبب تکرار برنامه به شکل زیتنراهی نیرز
میگرددکه این حالت را به نام infinite loopingیادمیکند.
. عدد وارد شده را برعکس میسازدgoto وif () برنامۀ ذیل با استفاده از:32.5 مثال
// Program to reverse a number using if ( ) and goto
#include <iostream.h>
main) (
{
int n, rem, rev = 0;
cout << "\n Enter a number; " :
cin >> n;
start:
110
(if ( n == 0
// Terminate the loop when n = 0
;goto finish
;rem = n % 10
;rev = rev * 10 + rem
;n = n / 10
; goto start
finish:
} ;cout << "\n The reverse number is : " << rev
Output
Enter a number : 1234
The reverse number is 4321
Enter a number : -8329
The reverse number is –9238
خـالصۀ فصل
در این فصل بیانیه های تصمیم گیری و یا شرطی مرورد بحرث
قرار گرفت و در نتیمه مفاهیم ذیل را آموختیم:
لسان C++بیانیه های شرطی دارد که در صورت نیاز میتوانیم
از آن استفاده نماییم .این بیانیره هرا عبرارت انرد از:
بیانیۀ ،ifبیانیۀ ،switchبیانیۀ سه تایی و بیانیۀ . goto
بیانیۀ شرطی Ifیکی از قویترین بیانیره هرای C++میباشرد.
این بیانیه شرط طرح شده را به شکل منطقی مرورد ارزیرابی
قرار داده ،در صرورت صرحت برودن آن ،عمرل اول کره توسرط
برنامه نویس طرح گردیده اجرا و در صرورت نادرسرت برودن،
شرط عمل دوم اجرامیگردد .اگر در یک برنامه یک شرط داشته
باشیم در آنصورتاز) ( ifاستفاده مینماییم ولی اگرر دو شررط
داشته باشیم میتوانیم از if – elseاستفاده نماییم امرا اگرر
تعداد شرط ها بیشتر از دو باشد در آنصورت از بیانیرۀ if -
)( else if –elseاستفاده مینماییم.
اگر تعداد شرط ها بیشرتر با شد در آنصرورت میتروانیم از
بیانیه شرطی switchنیز اسرتفاده نمراییم .بره یراد داشرته
باشید تفاوت عمده بین ifو switchدر این است کره switchتنهرا
با نوعیت دیتای عددی تام ( )intو یک حرفی charکار میکنرددر
حالیکه ifمیتواندهر نوعیت دیتا را قبول کند.
عملگر سه تایی در اکثریت موارد برای تصمیم گیری دوطرفره
استفاده میگردد .این عملگر متشرکل از عالمره سروالیه ؟ و
کالن :میباشدو نیاز به سه قیمت ( )Operandsدارد.
111
و باآلخره ،با اسرتفاده از بیانیره gotoمیتوانیردهر قیمرت
دلخواهی برنامه را اجررا کنیرد .قابرل ذکرر اسرت کره goto
بیانیه شرطی نیست ولی با استفاده از آن میتوانیدیک قسمت
خاص برنامه را نظر به یک شرط اجرا نمایید.
پرسشهای فصل
هدف دستور ifچیست؟ .1
هدف عملگر سه گانه ( )ternary operatorچیست؟ .2
بیانیه nested ifرا توضیح دهید؟ .3
سلسله بیانیه if – elseرا بیان دارید؟ .4
فلوچارت else – ifرا بیان دارید؟ .5
تفاوت بین ifو gotoچیست؟ .6
تفاوت بین if – elseو switchچیست؟ .7
فعالیت گروپی
را بنوسید که یک رقم وارد شده از کیبورد را .8برنامۀ
بخواند و مترادف آنرا به شکل حروفی روی سکرین نشان
دهد (طور مثال 2 ،وارد گردد و آنرا به شیوا حروفی two
نشان دهد)؟
.9برنامه را بنویسد که دو عدد را وارد نموده و این را
مشخص سازید که:
.aعدد اول مثبت است ،منفی و یا 0
.bعدد دوم مثبت است ،منفی و یا 0
.cعدد اول جفت است یا تا
.dعدد دوم جفت است یا تا
.10برنامۀ را بنوسید که باقیمانده Mتقسیم Nرا دریافت
نماید (سمبول %را استفاده نکنید)؟
.11برنامۀ را بنوسید که قیمت فارنهایت را بگیرد و آنرا
به سانتی گرید تبدیل نماید .اگر عدد 999وارد شود
برنامه ختم گردد؟
112
فصل ششم
حلقه ها
Loop Statements
113
a) Entry-controlled loops
b) Exit-controlled loops
115
انواع حلقه ()Types of Looping Constructs
در لسان C++سه نوع ساختار حلقوی وجود دارد که عبارت اند
از ):(2004, Glassborow
a) The for ( ; ; ) Loop
b) The while ( ) Loop
c) The do – while ( ) Loop
117
) for ( i = 1; i <= 10; i ++ ;i = 1 ;i=1
) while ( i <= 10 do
{ { {
; Statements ; Statements
; Statements … …
… … …
… … …
… … …
… ;i++ ;i++
} } }
)(a ; )while ( i <10
)(b
)(c
118
.10بخش ارزیابی حلقه forیا ( )test conditionنیز میتوانرد دارای
چندین شرط به شکل ترکیبی باشد که یکی آن متحول داخلری
حلقه و دومی آن ممکن خارجی باشد .در بخش ذیل Iمتحرول
داخل حلقه forو Sumمتحول خارجی است.
; sum = 0
) for ( i = 1; i <= 10 && sum <= 100 ; i++
{
; sum = sum + i
; cout << i << sum
119
cout <<"\n The number is prime : " << n;
return 0;
} // end of main ( )
Output
Enter a positive number please : 11
The number is prime : 11
Enter a positive number please : 10
The number is not prime : 10
. برنامۀ ذیل مجموعۀ سلسله ذیل را دریافت نموده روی سکرین نشان میدهد:2.6 مثال
// Program to find the sum of the series 1 + x + x ^2 + …. + x ^ n
#include <iostream.h>
#include <math.h>
main ( )
{
float i, x , sum = 1 ;
int n ;
cout << “ \n Enter the number of terms : “ ;
cin >>n;
cout <<” Enter the value of x “ ;
cin >> x;
for ( i = 1; i <= n ; i++ )
sum = sum + pow (x, i) ;
cout <<”\n Summation of series = “ << sum ;
return 0;
}
Output
Enter the number of terms : 10
Enter the value of x : 2
Summation of series : 2047
. برنامۀ ذیل عدد وارد شده به برنامه را بررسی نموده که یک عدد کامل است یا خیر؟:4.6 مثال
// Program to find whether a given number is a perfect number or not
#include <iostream.h>
main ( )
{
int i , n, sum = 1;
cout << “ \n Enter a number : “ ;
cin >>n;
for ( i = 2; i <= n / 2 ; i++ )
{
if ( n % i ==0 )
sum = sum + i ;
}
if ( n == sum )
cout <<”\n This is a perfect number “ << n ;
else
cout <<”\n This is not a perfect number “ << n;
return 0;
}
Output
Enter a number : 6
This is a perfect number : 6
Enter a number : 5
This is not a perfect number : 5
: باید در نظر گرفته شودfor ( ; ; ) نکات که در اثنای استفاده بیانیه
) یرک حلقره نظرر بره قیمرتIinitial value) اگر قیمت آغازین .i
.آخرین آن بزرگتر باشد در آنصورت حلقه اجرانمیگردد
121
اگر در یک برنامه دو یا چند حلقه وجود داشرته باشرد .ii
متحولهای هر دو حلقه باید نرام هرای متفراوت داشرته
باشد.
تعداد اجرای یک حلقه نظر به فورمول ذیل محاسبه می .iv
گردد:
)while ( expression
{
; Statements
…
… Domain of loop
…
}
;next _ statement
مثال :5.6برنامۀ ذیل اعداد طبیعی 1الی nرا با استفاده از ) ( whileروی سکرین نشان میدهد.
// Program to generate first N natural number
>#include <iostream.h
{ ) ( main
; int i, n
// initialize i to 1
;i = 1
; “ cout << “ \n Enter the value of n :
;cin >> n
) while ( i <= n
{
; cout << “\n “ << i
;i++
}
;return 0
}
Output
Enter the value of n: 5
1
2
3
4
5
123
میباشد و به تعقیب آن حلقرهi = 1 اولین قیمت، در مثال فو
برهi هر بار که حلقه اجرا میشرودقیمت. بار اجرامیگردد5
6 مساوی برهi هر وقتیکه قیمت. واحد اضافه میشود1 اندازه
گردد شرط حالت نادرسرت را بره خرود گرفتره و حلقره خرتم
.میگردد
. را جمع و حاصل جمع آنرا روی سکرین نشان میدهدn الی1 برنامۀ ذیل اعداد طبیعی:6.6 مثال
// program to find the sum of first n natural numbers 1 + 2 + 3 + …… + n
#include <iostream.h>
main ( ) {
int sum = 0, i = 1, n;
cout << “ \n Enter the value of n : “ ;
cin >> n;
while ( i <= n )
{
sum = sum + i;
i ++ ;
}
cout << “\n Sum = “ << sum;
return 0;
}
Output
Enter the value of n: 5
Sum = 15
Enter the value of n : 0
Sum = 0
Euclid’s برنامۀ ذیل کوچکترین و بزرگترین قاسم مشترک دو عدد را با استفاده از الگوریتم:7.6 مثال
.دریافت مینماید
*/program to calculate the LCM and GCD of two positive integers using Euclid's
algorithm/*
#include <iostream.h>
main) (
{
int m, n, temp, remain, lcm, gcd;
cout << " \n Enter two integer m & n; " :
cin >> m >> n;
// Assign m * n to temp to retain the original value of m and n
temp = m * n;
remain = m % n;
while ( remain != 0(
{
m = n;
n = remain;
remain = m % n;
124
}
gcd = n;
lcm = temp/ gcd;
cout << "\n LCD = " <<lcm << " GCD = " << gcd;
return 0;
}
Output
Enter two integers m & n : 8 13
LCD = 104, GCD = 1
Enter two integers m & n : 12 8
LCD = 24, GCD = 4
. برنامۀ ذیل کوچکترین مضرب و بزرگترین قاسم مشترک بین دو عدد را نشان میدهد:8.6 مثال
/* program to calculate the LCM and GCD of two positive integers */
#include <iostream.h>
main ( )
{
int m, n, temp, lcm, gcd;
cout << “ \n Enter two integer m & n : “ ;
cin >> m >> n;
// Assign m * n to tem to retain the original value of m and n
temp = m * n ;
// Calculation of gcd
while ( m != n )
{
if ( m > n)
m=m–n;
else
n=n–m;
}
gcd = n ;
lcm = temp / gcd ;
cout << “\n LCM = “ <<lcm << “ GCD = “ << gcd ;
}
Output
Enter two integers m & n : 12 16
LCD = 48, GCD = 4
125
/* program to reserve an integer number */
#include <iostream.h>
main ( )
{
int num, rev, remain; Dry Run
cout << “ \n Enter a number : “ ;
rev = 0, num = 678
cin >> num;
// initialize rev to 0
rev = 0;
while ( num != 0 ) remain rev num
{ 8 8 67
remain = num % 10; 7 87 6
rev = rev * 10 + remain ; 6 876 0
num = num / 10 ;
}
cout << “\n Reserved number is : “ << rev ;
return 0;
}
Output
Enter a number : 590
Reversed number is : 95
Enter a number : 678
Reversed number is : 876
. را تهیه مینمایدFiabanocci برنامۀ ذیل سلسۀ اعداد:10.6 مثال
// program to generate the first n Fiabanocci Number
#include <iostream.h>
main (
{
int i = 3, fib1 = 1, fib2 =1, fib, n;
cout << " \n How many Terms ? " ;
cin >> n;
cout<< fib1 << "\n" << fib2 <<"\n" ;
while ( i < n) {
fib = fib1 + fib2 ;
cout << fib <<"\n";
fib1 = fib2 ;
fib2 = fib ;
i++; }
return 0; }
Output
How many Term ? 5
1
1
2
126
3
. برنامۀ ذیل تعداد ارقام جفت و تاق را در عدد وارد شده به برنامه حساب میکند:11.6 مثال
/* program to count the number of even and odd digits in a number */
#include <iostream.h>
main ( )
{
int num, r, odd, even ;
cout << “ \n Enter an integer number : “ ;
cin >> num;
odd = 0, even = 0 ;
while ( num != 0)
{
r = num % 10;
num = num / 10 ;
if (r % 2 == 0)
even ++;
else
odd++;
}
cout <<”\n Number od Odd digits : “ << odd ;
cout <<”\n Number of Even digits : “ << even;
return 0 ;
}
Output
Enter an integer number : 1213
Number of Odd digits : 3
Number of Even digits : 1
127
شکل 6.6حلقه do-while
در ساختار ، do – whileبدنۀ حلقه اول اجرامیگردد.
رد نمایردشرط در مرحله دوم ارزیابی میشود .اگر شرط صر
باز هم بدنه حلقه به شکل مکرر اجرامیشود.
اگر شرط صد نکند در آنصورت بدنه حلقه بره شرکل مکررر
اجرا نمریگرردد و بیانیره هرای بیررون از حلقره اجررا
میگردد.
مثال :12.6برنامۀ ذیل قیمت وارد شده را مورد ارزیابی قرارمیدهد.
// program to validate your input
>#include <iostream.h
) ( main
{
;int num
do
{
; “ cout << “ \n Input a positive number :
;cin >> num
}
;)while ( num <= 0
;return 0
}
Output
Input a positive number : -10
Input a positive number : 0
Input a positive number : 5
برنامۀ فو تا وقتی تکرار میشود که عدد وارد شده 0و یا
عدد منفی باشد .هر وقتیکه عدد مثبت وارد گرردد حلقره از
بین رفته برنامه دیگر قیمت نمیگیرد.
مثال :13.6برنامۀ ذیل جدول ضرب زبانی عدد وارد شده را روی سکرین نشان میدهد.
// program to print multiplication table of a given number
>#include <iostream.h
) ( main
{
;int i, n, prod
;" cout <<"\n Enter a number :
; cin >> n
;i = 1
;"cout <<"\n Multiplication Table \n\n
do
{
128
prod = i * n ;
cout <<"\n " <<i <<" * " << n << " = " << prod;
i = i++;
}
while ( i <= 10);
return 0;
}
Output
Enter a number : 4
Multiplication Table
1 * 4 =4
2 * 4 =8
3 * 4 = 12
4 * 4 = 16
5 * 4 = 20
6 * 4 = 24
7 * 4 = 28
8 * 4 = 32
9 * 4 = 36
10 * 4 = 40
130
}
Output
Enter value of n : 20
6
12
18
132
. برنامۀ ذیل ساعت دیجیتل را به میان میآورد:18.6 مثال
#include <iostream.h>
main()
{
int H, M, S;
for (H =1; H<=12; H++)
{
for (M =0; M<=59; M++)
{
for (S = 0; S<=59; S++)
{
for (int MS = 0; MS <2000 ; MS++) // used to slow down second speed
cout <<H <<" : " << M <<" : " << S <<"\n";
}}}
return 0;
}
Output
1 : 0 : 0
1 : 0 : 1
1 : 0 : 2
1 : 0 : 3
1 : 0 : 4
:
:
:
12 : 59 : 59
. برنامۀ ذیل شکل هندسی را با استفاده از اعداد ترسیم میکند: الف19.6 مثال
// Program to generate a given pattern with numbers
#include <iostream.h>
main ( )
{
int r, c ; // r is row and c is column
cout << " \n \n Number Pattern :\n \n \n " ;
for ( r = 1; r <= 4; r ++ ) //Outer loop for rows
{
for ( c = 1; c <= r; c++ ) // Inner loop for column
cout << c << " " ;
cout <<"\n " ;
}
return 0;
}
133
Output
Number Pattern
1
1 2
1 2 3
1 2 3 4
. برنامۀ ذیل شکل هندسی مورد نظر شما را با اعداد مختلف ترسیم میکند: ب19.6 مثال
// Program to generate a given pattern
#include <iostream.h>
main ( )
{
int r, c, num = 6 ; // r is row and c is column
cout << "\n \n \n Number Pattern : \n \n \n " ;
for ( r =num ; r >= 1; r -- ) //Outer loop for rows
{
for ( c = 1; c <= r; c++ ) // Inner loop for column
cout << r <<" ";
cout <<"\n " ;
}
return 0;
}
Output
Number Pattern
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
. برنامۀ ذیل شکل هندسی مورد نظر را با استفاده از اعداد ترسیم میکند: ج19.6 مثال
// Program to generate a given pattern with numbers
#include <iostream.h>
main ( )
{
int r, c1, c2, n, m, p ; // r is row and c1, c2 are columns
cout << " \n Enter the number of rows : " ;
cin >> n;
cout <<"\n \n Number Pattern \n \n ";
p = 1;
for ( r =1 ; r <= n ; r++ ) //Outer loop for rows
{
134
for ( c1 = 1; c1<2*n-r; c1++ ) // Inner loop for column
cout << " ";
for ( c2 = 1; c2 <=r; c2++, p++)
cout <<p << " ";
for ( c2 = r-1; c2 >= 1; c2--, p--)
{
m = p-2;
cout <<m << " ";
}
cout <<"\n" ;
}
// return 0; }
Output
Enter the number of rows : 5
Number Pattern
1
2 3 2
3 4 5 4 3
4 5 6 7 4 5 4
5 6 7 8 9 8 7 6 5
n کوچکترازm را دریافت نماید به شرطیکه قیمتn وm برنامۀ را بنوسید که اعداد اولیه بین: د20.6 مثال
. باشدint باشد و از نوع
// Program to find prime numbers in the range m to n where m and n are positive
integer and m < n */
#include <iostream.h>
main ( )
{
int m, n, i, j, isprime ;
cout << “ \n Enter Lower and Upper limit of the range m & n : “ ;
cin >> m >> n;
if ( m<= 1)
m=2; // starting value of the range is made 2
cout << “\n The prime numbers are : \n \n “ ;
for ( i =m ; i <= n ; i ++ )
{
isprime = 1;
// This loop checks I for a prime number
for ( j = 2; j<= i/2 ; j++ )
{
if ( i % j == 0 )
{
isprime =0 ;
break;
} // End of j loop
}
135
) if ( isprime
; cout <<”\n “ << i
} // End of i loop
;return 0
}
Output
Enter Lower and Upper limit of the range m & n : 5 25
The prime numbers are
5
7
11
13
17
19
23
136
{ {
)if (condition1 ; ( for ) ;
;goto finish {
……… ……….
…….... ……….
)if (condition2 )if ( condition2
;goto loop ;goto loop
……….. exit from ………..
Jump
……….. nested ………..
within ……….. ………..
loop loops
loop : Exit }
………… from }
………… loop loop:
………… ………..
} ………..
finish : ………..
…………
…………
…………
شکل 8.6استفاده gotoدر داخل حلقه ها
137
) while ( condition do ) ; ; ( for
{ { {
)if (condition ………. ) ; ; ( for
;break ………. { ……...
………….. ………. ……..
exit
………….. )if (condition )if (condition
from ………….. ;break ;break
loop exit ……….. }
from ……….. exit
from ………
} }loop ………
inner
;)while (condition1 loop }
در حلقه های مختلف طور ذیل بیان continue طرز استفاده
گردیده است.
138
) while ( condition1 do ) ; ; ( for
{ { {
………….. ………. ……..
………….. ………. ……..
)if (expr2 )if (expr1 )if (expr1
;continue ;continue ;continue
…………. ……….. ………
…………. ……….. ………
} } }
;)while (condition1
تابع ) ( exit
این تابع به شکل فوری سبب خاتمه برنامره مریگرردد .شرکل
عمومی تابع ) ( exitقرار ذیل است (.)2000 ،Eckel
; ) exit ( n
و این تابع سبب بسته شدن تمام فایل های براز گردیرده
قیمت nرا به تابع که آنرا callنموده برمیگرداند.
nاز حالررت خرررو برنامرره ( )Exit status of programنماینرردگی
میکند .پس اگر n = 0باشد .این معنا را دارد که برنامره
عراری از اشرتباهات )Errors freeاسرت و اگرر n != 0باشرد در
آنصورت این مفهوم را ارایه میکند که برنامه اشرتباهات
( )has errorsدارد.
قیمت nرا میتوانیم غررض شناسرایی اشرتباهات اسرتفاده
نماییم.
قیمت defaultیا پریش فررض nعبرارت از 0اسرت .بره همرین
خاطررر شرکل عررادی ترابررع exitعبرررارت از ;) ( exitمری
باشد.
139
مقایسه حلقه ) ( whileو ) ( do – while
) ( while ) ( do – while
شرررط در اول حلقرره مررورد )1 شرط در اخیر حلقره مرورد )1
ارزیابی قرارمیگررد .ایرن ارزیابی قرارمیگرد .ایرن
نوع حلقره بره نرام حلقره رام Exit-
ره نر ره بر
روع حلقر نر
Entry-controlled loopیرررا pre-test controlled loopیا post-testنیرز
نیز یادمیگردد. یاد میگردد.
حلقرره whileترراوقتی اجرررا )2 تا وقتیکه شرط درست باشد )2
میشودکه شرط درست باشد. حلقه do-whileاجرا میشود.
حلقررره whileهررریچ اجررررا )3 حلقه do –whileحد اقل یرک )3
نمیشرروددر صررورتیکه شرررط باراجرا میگردددرصورتیکه
نادرست باشد. شرط نادرست باشد.
do-while جدول 1.6مقایسه حلقه whileو
140
خـالصۀ فصل
در این فصل بیانیه های تصمیم گیری و حلقه ها مرورد بحرث
قرار گرفت و در نتیمه مفاهیم ذیل را آموختیم:
-ساختار حلقوی ( )Looping structureعبارت از ساختار است کره در
آن تعداد از بیانیه های یک برنامه تا وقتی مکرررا اجررا
میشودبه شرط شرط صحت داشته باشرد .در زبران C++سره نروع
ساختار حلقوی وجود دارد که عبارت انرد از do-while ،while :و
.for
بیانیۀ whileدر ابتدا شرط را مورد ارزیابی قرار مریدهرد و
اما بیانیرۀ do-while از جمله حلقه های pre-testمحسوب میگردد.
بعد از اینکه بدنه حلقره اجررا گردیرد شررط را ارزیرابی
میکند و از جمله حلقه های post-testیاد میشود.
نوع سوم بیانیه های حلقوی به نام forیراد میشرودکه در آن
باز هم شرط در ابتدا مورد ارزیابی ( )Pre-testقرار گرفتره و
در صورت درست بودن آن ،بدنره حلقره ( )Body of the loopاجرامری
گردد .به یاد داشته باشید وقتیکه یک حلقره در داخرل یرک
حلقه دیگر قرار داشته باشد این حالت را به نرام Nested Loop
یادمیکند.
بیانیه gotoرا مریتوانیرددر داخرل do-while ،whileو forبررای
اینکه اجرای یک بخش برنامه را متوقف و از یک جرای دیگرر
آغاز نمایید استفاده کنید .همچنان آمروختیم کره بیانیره
breakنه تنها در switchمورد استفاده قررار میگیردبلکره در
حلقه do-while ،whileو forنیز از آن استفاده میشرود break .بره
خاطر خرو از بیانیره switchو حلقره ( )loopمرورد اسرتفاده
قرارمرریگیرررد .بیانیررۀ دیگررری کرره برره نررام continueیرراد
میشودجهت ادامه اجرای حلقه استفاده میشود .و بآلخره تابع
exitبه شکل فوری سبب خاتمه برنامه میگردد.
141
پرسشهای فصل
فعالیت گروپی
بین )( do-while () ،whileو ) ( forرا توضیح دهید؟
)10تفاوت
)11طرز کار do-whileرا دریک مثال توضیح دهید؟
)12طرز کار whileرا دریک مثال توضیح دهید؟
142
فصل هفتم
Array صف یا
143
عناصر یا قیمت های صف همیشه به شرکل مسلسرل در حافظره .7
ذخیره میشود.
ُ
تعداد زیرنویس ( )subscriptsدر حقیقت بعد یک صرف را تعیرین .8
میکند.
انواع صف ()Types of Array
به صورت عموم ،سه نوع صف وجود دارد که عبارت اند از :صف
بعدی ( ،)One Dimensional Arrayصنف دو ُ
بعردی ( )Two Dimensional Arrayو یک ُ
بعدی ( )Multi Dimensional Arrayکره هرر یرک آن ذیرال توضریح صف چند ُ
میگردد (.)Aitken & Jones, 2014
صف یک بُعدی ()One Dimensional Array
باشد بره نرام ()subscript
صف که عناصر آن دارای یک زیرنویس
صف یک ُ
بعدی یادمیشود.
مثال :صف یک ُ
بعدی ذیل را در نظر گیرید:
]int marks [5
;
در مثال فو دیده می شود که یرک جروره قروس زیرنرویس ] [
بعدیوجود دارد و این نمایانگر این است که صف باز صف یک ُ
است.
صف تحت نام marksطور ذیل نمررات 5ترن محصرالن را در خرود
ذخیره مینماید:
]Marks [0
]Marks [1
]Marks [2
]Marks [3
]Marks [4
144
:data Typeنوعیت متحول را تعیین میکندکه ممکرن از نروع
char،float ،intو یا doubleباشد.
:array – nameنام صف است که از عین قواعد identifierپیروی
مینماید.
:sizeحد اعظمی عناصررا کره در یرک صرف ذخیرره میشرود
تعیین میکند.
مثال 1.7
; ] int x [ 100
; ] char text [ 80
; ] float sal [ 50
sal در مثال فو صف x ،تا 100قیمت ترام test ،الری 80حررف و
الی 50عدد اعشاری را میتوانددر خود ذخیره نمایند.
متوجه باشید که:
; int max_stud = 50
int marks [ max _ stud ] ; // not allowed
در مثال فو بیانیۀ دوم درست نیست زیرا اندازا صف بایرد
به عدد تام تعیین گردد .شما میتوانید max _ studرا به شرکل
ثابت ( )Constantطور ذیل معرفی نمایید:
#define MAX_STUD 50
;]int marks [MAX _ STUD
مثال :2.7برنامۀ ذیل 3قیمت تام ار از کیبور میگیردو مجموعۀ آنرا روی سکرین نشان میدهد.
/* Program to insert 3 int values from keyboard and displays sum of them */
>#include <iostream.h
)(main
{
;]int Array [3
;"?cout <<"Enter 3 Integer values..
;]cin >> Array[0
;]cin >> Array[1
;]cin >> Array[2
;]cout <<”Total = ”<< Array [0] + Array [1] + Array [2
;return 0
}
Output
?Enter 3 Integer values..
5
10
20
Total = 35
145
. برنامۀ ذیل تعداد حروف انگلیسی را روی سکرین نشان میدهد:3.7 مثال
#include <iostream.h>
main ( )
{
char Array [ ]= {'a','b','c','d','e'};
cout <<Array[0] <<"\n";
cout <<Array[1] <<"\n";
cout <<Array[2] <<"\n";
cout <<Array[3] <<"\n";
cout <<Array[4]<<"\n";
return 0;
}
Output
a
b
c
d
e
.) وارد نموده و بعد آنرا روی سکرین نشان میدهدarray( برنامۀ ذیل دیتا را به صف:4.7 مثال
/* Program to write the data into an array and print them */
#include <iostream.h>
main ( ) {
int a [ 10 ] , i ;
/* Write the elements into the array */
cout << “ Enter five elements “ ;
for ( i = 0; i <5 ; i++)
cin >> a [i];
/* Output the data items of array a */
cout << “ \n Elements of the array are : \n “ ;
for ( i = 0; i < 5 ; i++)
cout << “\n “ << a [ i ] ;
return 0; }
146
Output
Enter five elements
2
10
25
15
72
Elements of the array are :
2
10
25
15
72
. عدد وارد شده دریافت مینماید5 بزرگترین و کوچکترین عدد را بین، اوسط، برنامۀ ذیل مجموعه:5.7 مثال
/* Program to find the Sum, Average, Largest and Smallest of n number */
#include <iostream.h>
main ( )
{
int a [ 10 ] , i, large, small, n ;
float avg, sum ;
/* Input elements into the array */
cout << " \n How many elements (n < 10) ? " ;
cin >> n ;
cout << " Enter the elements: "<< n;
for ( i = 0; i < n ; i++)
cin >> a [i];
/* Finding sum, largest and smallest */
large = a [ 0 ] ; small = a [ 0 ] ; sum = 0 ;
for ( i = 0; i < n ; i++)
{
sum = sum + a [ i ] ;
if ( a [ i ] < small )
small = a [ i ] ;
}
/* Finding average value */
avg = sum / n ;
/* output result */
cout << "\n sum = " << sum <<" Average = " <<avg ;
cout << "\n largest = " << large <<" Smallest = " << small ;
return 0;
}
147
Output
How many elements ( n < 10 ) ? 5
مثال :8.7برنامۀ ذیل 3عدد را از صفحه کلید میگیرد و آنرا دوباره نشان میدهد.
>#include <iostream.h
) ( main
149
{
int Array [3];
cout <<"Enter 3 Integer values..?"; // Input from KEYBOARD Scanner
cin>> Array[0];
cin>> Array[1];
cin>> Array[2];
cout << Array [0] << "\n" << Array [1] << "\n" << Array [2];
return 0;
{
Output
Enter 3 Integer values..? 1 2 3
1
2
3
150
Output
Enter 10 elements of array A
1 2 3 4 5 6 7 8 9 10
Enter 10 elements of array B
2 3 5 7 11 13 19 23 29 31
Resultant array :
3 5 8 11 16 19 26 31 38 41
.) را به هر قاعده دلخواه تبدیل مینماید10( برنامۀ ذیل عدد قاعده اعشاری:11.7 مثال
else
{
cout << "\n Error ";
exit (0);
}
}
return 0;
}
Output
Enter a number : 105
Enter Base : 16
The Output : 69
)Two Dimensional Arrays( صف دو بُعدی
هر یرک از.)میباشدcolumn(و ستون )row(بعدی شامل سطر ُ صف دو
)subscripts( زیرنرویس2 را میتروانیم برا ُ عناصر دو
بعردی
حاصل کرد که زیرنویس اول از سطر و زیرنویس دوم از سرتون
. (Lippman, 2002)نمایند گی میکند
152
; ] type array – name [ row size ] [ col size
در اینما row sizeو col sizeنشاندهندا تعرداد اعظرم قیمرت
سطر و ستون میباشد که در خود ذخیره میکند.
type نشان دهنده نوعیت دیتا است.
array – name نام صف را در خود ذخیره میکند.
مثال :12.7تعریف یک صف دو بعدی که دارای 5سطر و 6ستون میباشد.
معرفی صف 2بعدی
;]float mat [5][6
به اندازه 120بایت حافظه را به شکل مسلسل ریزرف میکند .به تعداد 30 = 6 * 5عناصر صف
وجود دارد که هر عنصر به اندازه 4بایت حافظه به شکل اعشاری غرض ذخیره شدن نیاز دارد.
عناصر انفرادی عبارت اند از:
]mat[0][0 ]mat[0][1] mat[0][2 ]mat[0][3 ]mat[0][4 ]mat[0][5
]mat[1][0 ]mat[1][1] mat[1][2 ]mat[1][3 ]mat[1][4 ]mat[1] [5
:
:
]mat[4][0 ]mat[4][1] mat[4][2 ]mat[4][3 ]mat[4][4 ]mat[4] [5
}
قیمت صف از 0آغاز و الی ( )size - 1ادامه مییابد.
]int a [2] [3 مثال عناصر صف 2بعدی به شکل سطر ذخیره میگردد.
شیوۀ ذخیره آن قرار ذیل است :
]a [0] [0 ]a [0] [1 ]a [0] [2 ]a [1] [0 ]a [1] [1 ]a [1] [2
قیمت گزاری صف دو بعدی ()Initializing Two Dimensional Arrays
در صف 2بعدی قیمت گزاری اولیه با درمیان گذاشرتن قیمرت
در بین قوسهای بزرگ { } معرفی میگردد(.)Horton, 2012
مثال:
;} int mat [3][3] = { 19, 8, 11, 25, 4, 16, 0, 8, 5
mat [0] [0] = 19, mat [0] [1] = 8, mat [0] [2] = 11
mat [1] [0] = 25, mat [1] [1] = 4, mat [1] [2] = 16
mat [2] [0] = 0, mat [2] [1] = 8, mat [2] [2] = 5
153
به یاد داشته باشید که بعد از ختم هرر جروره قروس کامره
باید اضافه گردد .به صورت عموم ،برای اینکه هر عنصر در
یک صف دو بعردی پروسرس گرردد نیراز اسرت ترا از Nested loop
استفاده صورت گیرد.
; int a [ 5 ] [ 3 ], i
)for (i = 0; i <5; i++
)for (j = 0; j <5; j++
;a[i][j]=0
سرطر ( )Rowو حلقره حلقۀ ( )Loopاول به خاطر تغییر قیمت
دوم به خاطر تغییر قیمرت سرتون ( )Columnاسرتفاده میشرود.
شمامیتوانید عملیرات سراده ماننرد جمرع ،تفریرق ،ضررب و
باآلخره تبدیل سطر به سرتون و یرا سرتون بره سرطر را برا
استفاده از صف 2بعدی اجررا کنیرد .قابرل ذکرر اسرت کره
سازگاری مترکس باید در نظر گرفته شود .به این معنرا کره
تعداد سطر و ستون در بعضی موارد باید مساوی باشد در غیر
آن یک سلسله عملیات فو اجرانمیگردد.
مثال :13.7برنامۀ ذیل مترکس Aو Bرا میخواند و مجموعه آنرا بعد از محاسبه روی سکرین نشان میدهد.
154
// Programs to read two matrices A and B and display their sum
#include <iostream.h>
main ( )
{
int a [ 10 ] [ 10 ], b [ 10 ] [ 10 ], sum [ 10 ] [ 10 ], i, j, n ;
cout << " \n Enter the order of matrix : " ;
cin >>n;
/* Reading the elements of matrices a and b */
cout <<"\n Enter the elements of matix a : \n";
for (i =0; i <n; i++)
for ( j=0; j<n; j++)
cin >> a[ i ][ j ] ;
cout <<"\n Enter the elements of matix b : \n";
for (i =0; i <n; i++)
for ( j=0; j<n; j++)
cin >> b[ i ][ j ] ;
// Finding the sum of the two matrices
for (i =0; i <n; i++)
for ( j=0; j<n; j++)
sum [ i ] [ j ] = a [ i ] [ j ] + b [ i ] [ j ] ;
/* Printing the resultant matrix */
cout <<"\n The Summation matrix : \n " ;
for ( i=0 ; i <n ; i ++ )
{
for ( j = 0; j <n; j++ )
{
cout << sum [ i ][ j ] << " " ;
}
cout << "\n" ; // generate line after each row
}
return 0;
{
Output
Enter the order to matix : 3
Enter the elements of matrix A:
1 2 3 4 5 6 7 8 9
Enter the elements of matrix B:
2 4 6 8 10 12 14 16 18
The summation matrix :
155
3 6 9
12 15 18
21 24 27
. برنامۀ ذیل مترکس را میخواند و در نتیجه سطر را به ستون و ستون را به سطر تبدیل میکند:14.7 مثال
// Program to read a matrix and output its transpose
#include <iostream.h>
main ( )
{
int a [ 10 ] [ 10 ], trans [ 10 ] [ 10 ] ;
int i, j, r, c;
cout << " \n Enter no of rows and no of columns of a matrix : " ;
cin >> r >> c ;
cout <<"\n Enter the matix elements of a : \n";
// Rending and assigning to trans matrix
for (i =0; i <r; i++)
for ( j=0; j<c; j++)
{
cin >> a [ i ] [ j ] ;
trans [ j ] [ i ] = a [ i ][ j ]; // Exchange rows and column positions
}
cout << "\n The given matix a : \n" ;
for ( i = 0 ; i<r ; i++)
{
for ( j=0; j <c ; j++ )
{
cout << a[ i ][ j ] << " ";
}
cout << "\n" ;
}
cout << "\n The Transposed matrix : \n" ;
for ( i=0; i <c ; i++ )
{
for (j=0; j<r; j++)
{
cout << trans [ i ] [ j ]<< " ";
}
cout<<"\n";
} }
156
Output
Enter no of rows and no of columns of a matrix : 3 2
Enter the matrix elements of a :
1 3
5 7
9 11
The given matrix A:
1 3
5 7
9 11
The Transposed matrix :
1 5 9
3 7 11
. برنامۀ ذیل دو مترکس را میخواند و حاصل ضرب آنرا دریافت میکند:15.7 مثال
{
prod [ i ][ j ] = 0 ;
for (k=0; k <n; k++)
prod [ i ][ j ] = prod [ i ][ j ] + a [ i ][ k ] * b [ k ][ j ];
}
cout << "\n The product of a and b matrix : \n" ;
for ( i=0; i<n; i++)
157
{
for ( j=0; j<n; j++)
{
cout << prod [ i ] [ j ] <<" ";
}
cout <<"\n" ;
}
return 0;
}
Output
Enter the order of matrix : 3
Enter the elements of matrix a :
1 2 3
1 2 3
1 2 3
. برنامۀ ذیل مجموعۀ اعداد مایل را در مترکس مربعی دریافت مینماید:16.7 مثال
159
ُعدی ذیل را نیز در نظر گیرید:
صف 2ب
; ] int std [ 50 ] [ 5
در این مثال نمرات 50تن محصالن در 5مضمون نمایش داده شده
است std [0] [0] .نمرات محصرل اول کره در مضرمون اول بره دسرت
آورده نشان میدهد std [ 0 ] [ 1 ] .نمرات محصل اول در مضمون دوم
را نشان میدهد و به همینطور الی اخیر std [49] [4] .نمرات کره
توسط محصل 50م در مضمون پنمم کسب نموده نشان میدهد.
Marks
Sub 0 Sub 1 Sub 2 Sub 3 Sub 4
Students 0
Students 1
Students 2
:
:
Students 49
عناصر صف در حافظه کمپیوتر طور ذیل ذخیره میگردد.
همچنان صف 3بعدی
; ]int lamps [3] [3] [4
160
به طور ذیل نشان داده میشود:
خـالصه فصل
در این فصل صف یا Arrayو انواع آن مورد بحث قرار گرفرت و
در نتیمه مفاهیم ذیل را آموختیم:
صف یک دیتاتایس خاص است و ممموعۀ عناصری کره دارای عرین
نوعیت ( )Data typeباشد در خود ذخیرهمیکند.
به صورت عموم ،سه نوع صف وجود دارد که عبارت اند از صرف
بعردی ()Two Dimensional Array بعدی ( ،)One Dimensional Arrayصف دو ُ
یک ُ
بعدی ( )Multi Dimensional Arrayکه هر یک آن به طور خلص و صف چند ُ
ذیال بیان گردیده است:
صف که عناصر آن تنها به شکل سطر و یا ستون باشد به نرام
بعدی یادمیگردد .اما صف که شامل سطر ( )rowو سرتون صف یک ُ
بعدی یادمیگردد. ( )columnباشد به نام صف دو ُ
بعرد (سرطر و سرتون) و باآلخره وقتیکه یک صف بیشرتر از ُ 2
داشررته باشررد برره نررام صررف چنررد ُ
بعرردی ()Multidimention Array
یادمیگردد.
161
پرسشهای فصل
arrayرا تعریف نمایید؟ .1صف یا
بین صف و متحول عادی چیست؟ .2تفاوت
بعدی ( )one dimensional arrayرا تعریف نمایید؟ .3صف یک
را تعریف نمایید که 10عدد اعشاری در آن ذخیره .4یک صف
گردد؟
.5صف دو بعدی ( )two dimensional arrayرا تعریف نمایید و شکل
عمومی آنرا بیان دارید؟
.6صف چند بعدی ( )multi dimensiuonal arrayرا تعریف و شکل عمومی
آنرا بیان دارید؟
.7تفاوت بین صف یک بعدی و دو بعدی چیست ،بیان دارید؟
.8پروگرامی را بنوسید که 10عدد را از کیبورد بگیرد ،اول
اعداد تا و بعد اعداد جفت آنرا روی سکرین نشان دهد؟
.9پروگرام را بنوسید که بزرگترین و کوچکترین عنصر در یک
مترکس را دریافت نماید؟
.10پروگرام را بنوسید که ممموعۀ عناصر سطر و ممموعۀ
عناصر ستون را در صف 2بعدی دریافت و روی سکرین نشان
دهد؟
فعالیت گروپی
مترکس را دریافت 2 را بنوسید که حاصل ضرب .11پروگرام
نماید؟
.12پروگرام را بنوسید که مثلث پاسکال را ترسیم نماید؟
1
1 1
1 1 1
162
فصل هشتم
تابع )(Function
163
توابع کتاب خانه ای
تعدادی از توابع که در اغلب برنامه ها مورد استفاده
قرار میگیرند و کاربرد زیادی دارند ،از قبل نوشته شده،
به همراه کامپایلر cارائه میشود .مثل توابع )( sin(), cosکه
برای محاسبه زاویه به کار میروند و یا تابع )( clrscrکه
صفحه نمایش را پا میکند .این توابع را توابع کتابخانه
ای میگوییم .این توابع از قبل در هرفایلی موجود است که
ما همواره آنرا در ابتدای برنامه ضمیمه میکنیم .تنها
کافی است نام تابع را نوشته و با یک دستور زبان مناسب
بکار گیریم.
مثال :1.8برنامۀ ذیل با استفاده از تابع کتابخانه یی > <iostream.hپیام "! "hello worldرا نمایش میدهد.
Output
!Hello world
مثال :2.8برنامۀ ذیل جذر مربع هر عدد وارد شده از صفحه کلید را با استفاده از تابع کتابخانه یی > <math.hدریافت میکند.
// program to find Square Root of any number inserted from keyboard
>#include <iostream.h
#include <math.h> // required for sqrt function
) ( main
{
// Declaration
;double Number, SQR
;" cout << "Enter a number to find its Square Root :
;cin >> Number
;)SQR = sqrt (Number
;cout << " The square root of "<< Number << " = " << SQR
;return 0
164
}
Output
Enter a number to find its Square Root : 36
The square root of 36 = 6
مثال :3.8برنامۀ ذیل "! "Hello Worldرا با استفاده از تابع معرفی شده توسط کاربر نمایش میدهد.
165
) ( main
{
// calling the function
;)(greet
;return 0
}
Output
!Hello World
نوشتن توابع
هر تابع چهار بخش متفاوت دارد که عبارتند از:
.1اعالن تابع ()function declaration
.2تعریف تابع ()function definition
.3قیمت های برگشتی تابع ()return value
.4صدا کردن تابع () call function
166
-نوعیت قیمت های بازگشتی تابع :هر تابع باید با دریافت قیمت های
ورودی خود ،نتیمه حاصل از عملیات بر روی ورودی ها
را به فراخواننده خود بازگرداند .هر تابع متواند
هیچ قیمت ،یک قیمت و یا چند قیمت را بازگرداند .اما
توابع که هیچ قیمت را برنمی گردانند از نوع void
میباشند و توابعی که یک مقدار را توسط دستور return
باز می گردانند همنوع با نوع بازگشتی خود میباشند.
به عنوان مثال اگر تابعی یک عدد intرا باز گرداند،
از نوع intمیباشد.
-نوع پارامتر های تابع :هر تابع در ریاضیات ممکن است یک یا چند
ورودی داشته باشد .اما در c++تابع حتی میتواند بدون
هیچگونه قیمت ورودی باشد .چیزی که در اعالن تابع
بسیار مهم است ،تعیین تعداد و نوع قیمت های ورودی
( )argumentsتابع است .در c++استاندارد تأکید شده که
اگر تابعی هیچ قیمت ورودی ندارد ،کلمه voidرا به
عنوان ( )argumentهای آن تابع ذکر کنیم ،تا عدم وجود
( )argumentهای تابع به شکل واضح تر مشخص شود .شکل
کلی اعالن یک تابع به صورت ذیل است:
) return_type function_name( parameter list
167
ً در برنامه از توابعی استفادهتوابعی که هیچ مقداری را بر نمی گردانند :بعضا
میکنیم که آن توابع پس از صدا کردن عملیات مورد نظر را
انمام دهند و خروجیهای مورد انتظار را تولید و چاپ
نمایند و هیچ مقداری را به تابع فراخوان تحویل نمیدهند.
مثال :4.8برنامۀ ذیل تابع بدون ورودی و خروجی را نشان میدهد و فقط پیام را در تابع ساخته شده توسط کاربر پرنت میکند.
)(int main
{
;)(print
;return 0
}
) void print( void
{
;"!cout << " No value Function
}
Output
!No value Function
توابعی که یک مقدار را برمی گردانند :این توابع پس از صدا شدن یک قیمت را
به تابع صدا کننده بازگشت میدهند.
مثال :5.8برنامۀ ذیل قیمت متحول Xبه تابع )( Scopeارسال نموده و برگشت میدهد.
;)void scope(int
)(int main
{
;int x = 10
;"cout << "first value of A=" << x << "\n
;)scope(x
;cout << "third value of A=" << x
168
return 0;
}
void scope(int a)
{
a++;
cout << "second value of A=" << a << "\n";
}
Output
first value of A= 10
second value of A= 11
third value of A= 10
. فکتوریل آنرا دریافت نموده دوباره برگشت میدهدfactorial() برنامۀ ذیل یک عدد را دریافت نموده در تابع:6.8 مثال
169
Output
Enter a number to find factorial: 5
Factorial of 5 = 120
Output
first value of A= 10
second value of A= 11
third value of A= 10
)(int main
{
;int num = 10
;cout << "square = " << sqr(num) << "and number = " << num
;return 0
}
;)int sqr(int x
{
;x = x * x
171
return x;
}
Output
square = 100 and number = 10
// Call by value
#include <iostream.h>
int returnEight()
{
return 8; // return the specific value 8 back to the caller
}
int main()
{
cout <<"return value is: "<< returnEight() << '\n';
cout <<"return value +2 is: "<< returnEight() + 2 << '\n';
returnEight();
return 0;
}
Output
return value is: 8
return value +2 is:10
// Call by reference
#include<iostream.h>
void swap(int *x, int *y)
{
int swap;
swap=*x;
172
*x=*y;
*y=swap;
}
int main()
{
int x=500, y=100;
swap(&x, &y); // passing value to function
cout<<"Value of x is: "<<x<<endl;
cout<<"Value of y is: "<<y<<endl;
return 0;
}
Output
Value of x is: 100
Value of y is: 500
دقیقه و ثانیه تبدیل نموده در اسکرین نشان، برنامه ذیل زمان را بر حسب ثانیه میگیرد و توسط یک تابع آنرا به ساعت:11.8 مثال
.میدهد
// The program change the seconds from integer to Clock format
#include <iostream.h>
void convert(int s);
int main()
{
int seconds;
cin>> seconds;
convert(seconds);
return 0;
}
void convert(int s)
{
int second,h,m;
second = s % 60;
h= s/3600;
m=(s/60) % 60;
cout<< "Time is: " << h<< ":"<< m << ":" << second;
}
Output
2500
0:41:40
173
برنامه ذیل بزرگترین عدد بین دو عدد وارد شده از کیبورد را با استفاده از یک تابع معرفی شده توسط کاربر نشان:12.8 مثال
میدهد
// The program find the maximum number between two numbers
#include <iostream.h>
int max(int num1, int num2);
int main () {
int a;
int b;
int ret;
cout<<"Enter two values for a and b \n";
cin>>a>>b;
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Output
Enter two values for a and b
560 500
Max value is : 560
. ارسال میکند و بعدا ٌ جمع آنها را به تابع اصلی ارسال میکندsum برنامه ذیل دو عدد را از کیبورد گرفته به تابع:13.8 مثال
// The program take to numbers sum them in a function and return the sum
#include <iostream>
using namespace std;
float sum(float, float); // = float sum(float num1, float num2);
int main()
{
float num1, num2 ,numSum;
cout << "Enter first number :" ;
cin >> num1;
174
cout << "Enter second number :" ;
cin >> num2;
numSum = sum(num1, num2);
cout <<”The sum is: “ <<numSum;
return 0;
}
float sum(float f1, float f2) // float sum(float num1, float num2);
{
float fSum = f1 + f2;
return fSum;
}
Output
Enter first number: 20
Enter second number: 25
The sum is: 45
175
خالصه فصل
درین فصل درمورد مفهوم تابع معلومات حاصل نمودیم .در
ادامه با انواع تابع در C++و طریقه استفاده از آن
معلومات حاصل کردیم .هر تابع یک برنامه کوچک یا یک
زیربرنامه است .انواع توابع ،توابع کتابخانه ای و توابع
تعریف شده توسط کاربر هستند .یک تابع شامل اعالن ،بدنه
تابع و بخش صدا کردن تابع میباشد .اعالن تابع و بدنه
تابع بخش های ضروری تابع هستند و صدا کردن تابع در یک
برنامه اختیاری است .برنامه های c++حداقل یک تابع دارند
که این تابع ،تابع )( mainمیباشد .هر تابع باید در برنامه
c++تعریف و اعالن شود.
.
پرسش های فصل
.12تابع چیست؟ شرح دهید.
.13بخش های ضروری در ایماد یک تابع کدام ها اند؟
.14در مورد اعالن تابع معلومات ارایه کنید.
.15در مورد قیمت های برگشتی تابع معلومات ارایه کنید.
.16چگونه تابع را صدا مینمایم؟ معلومات دهید.
.17به چند نوع به تابع قیمت ارسال میتوانیم؟ شرح دهید.
فعالیت گروپی
.1پروگرامی را بنویسید که مکعب یک عدد را در یک تابع
جدا گانه دریافت و حاصل آنرا به تابع )( mainارسال
کند.
.2برنامه بنویسید که دو عدد را در یک تابع ضرب و در
تابع دگر تقسیم نموده و نتایج را به تابع )(main
انتقال دهد.
.3برنامه بنویسید که در یک تابع جذر دوم و در تابع
دیگر همان عدد را بتوان 4باز ببرد و نتیمه آنرا به
تابع اصلی انتقال دهد.
176
مآخذ
.پوهنتون کابل: افغانستان, کابل, کابل++C. لسان پروگرام نویسی پیشرفته. (1381). ح. س, عدلیار.1
2. Backman, K. (2012). Structured Programming with C++. Trollhattan, Trollhattan,
Sweden: Ventus Publishing Aps.
3. Bailey, T. (2005). An Introduction to the C Programming Language and Software
Design. United States: Prentice-Hall.
4. Balagtas, F. T. (2006). Introduction to Programming 1. Pepper Pike, Ohio, United
States: Ursuline .
5. Buard, B. (2005). Beginning Programming with Java (2nd Edition ed.). Indianapolis,
Indiana, United States: Wiley Publishing .
6. Deitel, H. M. (2007). JAVA How to Program (7th Edition ed.). Upper Saddle River,
New Jersey, United States: Pearson.
7. Deitel, P., & Deitel, H. (2012). JAVA How to Program (9th ed.). Boston,
Massachusetts, United States: Peason.
8. Eckel, B. (1999). Thinking in C++ (2nd Edition ed.). Upper Saddle River, New
Jersey, United States: Prentice Hall.
9. Gaddis, T. (2008). Starting out with JAVA From Control Structures through Object5
(5th ed.). Upper Saddle River, New Jersey, United States: Pearson.
10. Gemmell, M. (2002). Introduction to Programming. Scotland, Scotland, Scotland:
Sams.
11. Gilster, R. (2001). PC Hardware : A Beginner's Guide. NY, New York, United
States: McGraw-Hill.
12. Glassborow, F. (2004). A Beginner's Introduction to Computer Programming .
Chichester,, Chichester,, England: John Wiley.
13. Halterman, R. L. (2018). Fundamentals of C++ Programming. TN, Tennessee,
United States: Southern Adventist.
14. Horton, I. (2012). Beginning C (5th Edition ed.). Belgium: Apress.
15. Jones, B., & Aitken, P. (2014). Sams Teach Yourself C++ in One Hour a Day (7th
Edition ed.). Indianapolis, Indiana, United States: Sams Publishing.
16. Klousen, P. (2017). JAVA 1 Basic Syntax and Semantics. NA: BookBone.
17. Langtangen, H. P. (2006). Introduction to C++ Programming. Oslo, Oslo2, Narvey:
Simula.
18. Lippman, S. B. (1996). Inside the C++ Object Model. New York, New York, United
States: Addison Wesley.
19. Lippman, S. B. (2002). Essential C++. MA, Massachusetts, United States: Addison
Wesley.
20. Love, T. (2011). Advanced Programming with C++. London, UK: Murrell.
21. Meyers, A. (2002). Introduction to Computer & Programming. New York, New
York, United States: Deluxe.
177
22. Meyers, S. (2005). Effective C++ (3rd Edition ed.). Boston, Massachusetts, United
States: Addison Wesley.
23. Nakov, S., & Kolev, V. (2013). Fundamentals of Programming with C#. Sofia, Sofia,
Bulgarian: Teodor Bozhikov.
24. Nawaz, A. (2006). Programming in C++ (3rd ed.). Peshawar, Peshawar, Pakistan:
Discount Book Shop.
25. Oualline, S. (1995). Practical C++ Programming. MA, Massachusetts, United States:
O'Reilly & Associates, Inc.
26. Overland, B. (2013). C++ without Fear: A Beginner's Guide to Make you Feel Smart.
NA, NA: Overland.
27. Prinz, P. (2002). A Complete Guide to Programming in C++. Bjorkliden,,
Bjorkliden,, Sweden: JONES AND BARTLETT PUBLISHERS.
28. Rama, M. A. (2011). Programming Concepts Using C++. Malleswaram, Bangalore,
India: Subhas.
29. Soulié, J. (2007). C++ Language Tutorial. NA, NA: cplusplus.
30. Stroustrup, B. (1997). The C++ Programming Language (3rd Edition ed.). Murray
Hill, New Jersey, United States: AddisonWesley.
31. Stroustrup, B. (2013). A Tour of C++. College Station, Texas, United States:
Addison-Wesley.
178