Professional Documents
Culture Documents
Basics of C++ Language PDF
Basics of C++ Language PDF
أ
الدم لنم ًذى الصفحات التُ تواولت فٌّا مبادئ للغي ال ـ C++بشنو مبسط وشرح مباشر
أ أ
وارجٍ ان تنٍن هذلم ،وتتٍافق مع مكرر بػض هلّات الحاسٍب بالسٍدان وًُ منملي للوسخي
أ أ أ أ
الولَ من ًذا الػمو واسال هللا الػظّم رب الػرش الػظّم ان ِوفػوُ واِاهم بٌا واسالنم الدغاء
أ أ أ أ أ
فاهُ احٍج مااهٍن لدغٍى الخٍان .واذا هان لدِم اي استفسار ،او مالحظي فّمنن ارسالٌا الُ
غبر البرِد ال لنـتروهُ mawia93@gmail.comووكك ًاإ.
أ
اخّنم فُ هللا
مػاوِي هٍرالدِن
السٍدان /الخرظٍم
2013-12-01
إهـداء
إلي أمي الحبيبه وأبي الحبيب أسأل هللا أن يطيل بقائهما ويجعل الجنه مسكنهم
ال ٌختلف هذا العامل عن التركٌب الشرطً لألداة if…elseبل هو إختصار لها بحٌث ٌمكن كتابه
الشرط وجوابً الشرط فً سطر برمجً واحد وصٌغته العامه :
مناقشه :
سنقوم بكتابه برنامج ٌستقبل رقم من المستخدم .
ونختبر هذا الرقم هل ٌساوي الصفر؟ ألننا ال نرٌد إختبار الصفر بواسطه العامل الشرطً.
وفً حاله الرقم المدخل ٌساوي صفر ٌ ،ظهر رساله .وإال ٌقوم بإختبار الرقم هل هو سالب أم موجب
بإستخدام العامل الشرطً وٌقوم بطباعه رساله توضح نوع الرقم.
ملحوظه :سنستخدم المترجم Borland c++لجمٌع البرامج.
كود البرنامج :
ُ
قصدت إستخدام التركٌبه if… elseفً نفس الوقت مع العامل الشرطً للتوضٌح والفهم .حٌث أن
جواب الشرط األول ( if )num==0فً حاله لم ٌتحقق .هو شرط أخر له جوابان إما سالب وإما
موجب.
ٌمكننا إستخدام العامل الشرطً وحده من دون إستخدام أداة الشرط . ifوٌمكن أن ُنسند قٌمه لمتغٌر
بإستخدام عامل الشرط ومثال لذلك :
وهذا ٌعنً أن قٌمه المتغٌر yستصبح 5فً حاله أن المتغٌر numقٌمته أكبر من صفر وإال
ستصبح .10
ٌ مكن أن ٌكون أحد جواب الشرط هو شرط أخر له جوابان وهكذا.و العامل الشرطً قابل للتكٌف
مع مثل هذه الحاله .
نكتب عامل الزٌاده فً لغه C++بالرمز ++وعامل النقصان بالرمز --ونستعملهما مع أسماء
المتغٌرات ،إما لزٌاده قٌمه المتغٌر بمقدار واحد ،أو إلنقاص قٌمته بمقدار واحد.
وكلها تعنً أن قٌمه المتغٌر varالجدٌده تساوي قٌمه المتغٌر القدٌمه مضاف إلٌها واحد.
وبنفس المعنى إذا استخدمنا عامل النقصان .إال أنه ٌعمل فً االتجاه السالب.
سوف أشرح علً عامل الزٌاده فقط لتسهٌل الدرس .
عندما نكتب عامل الزٌاده قبل إسم المتغٌر نعنً به أضف واحد لقٌمه المتغٌر أوالًال .وبعدها نفذ
المطلوب من باقً الجمله البرمجٌه.
وعنما نكتب عامل الزٌاده بعد إسم المتغٌر نعنً به نفذ المطلوب من الجمله البرمجٌه أوالًال وبعدها
أضف واحد للمتغٌر.
مثال" إذا كان لدٌنا المتغٌر aقٌمته تساوي . 10ونسبنا قٌمه ( )a++للمتغٌر yفان قٌمه y
; y= a++ ستصبح 10ألن عامل الزٌاده كتبناه بعد المتغٌر . a
و قٌمه aتصبح 11بعد تنفٌذ هذا السطرالبرمجً .
بإختصار :أسندنا قٌمه المتغٌر aللمتغٌر yأوالًال ثم بعد ذلك أضفنا الواحد للمتغٌر .a
وإذا أسندنا قٌمه ( )++aللمتغٌر yفإن قٌمه yتصبح 11ألن عامل الزٌاده كتبناه قبل المتغٌر a
; y= ++a و قٌمه aتساوي 11عند وبعد تنفٌذ السطر البرمجً.
بإختصار :أضفنا الواحد للمتغٌر aأوالًال .ثم بعد ذلك أسندنا قٌمه المتغٌر aللمتغٌر .y
والكود التالً ٌوضح الطرٌقتٌن السابقتٌن :
; ++a
فال فرق بٌنهما فً هذه الحاله ألنه عند اإلنتهاء من تنفٌذ أي من السطرٌن تكون قٌمه المتغٌر aالجدٌده
تساوي قٌمته القدٌمه مضاف إلٌها واحد .
ةستخذاو عبيم انزيبدِ ؟
ثرَبيج إلظٓبر االرقبو يٍ 1اني 4إ
أما عامل النقصان فهو ٌعمل بنفس طرٌقه عامل الزٌاده إال أنه ٌقوم بالطرح.
;int y =5 , z=10
; ) cout<< ( y++ + --z
بما أن قٌمه المتغٌر yاالبتدائٌه تساوي 5وعامل الزٌاده بعده .فإن قٌمته فً هذا السطرهً 5
والزٌاده تكون بعد الخروج من تنفٌذ هذا السطر.
وبما أن قٌمه المتغٌر zاالبتدائٌه 10وعامل النقصان قبله فإن قٌمته فً هذا السطر هً 9حتى بعد
الخروج من تنفٌذه .
إذن سٌطبع علً الشاشه 14وهو ناتج الجمع.
)2
; int a =10
; int b = 20
; ) cout<<( --b + ++a
عامل الزٌاده والنقصان قبل المتغٌرٌن إذن سٌطبع علً الشاشه . 30
)3
; int a=3 , b=2
;cout<<(a++ + --b)<<endl
;)cout<<(a + b
عندما ٌكون عامل الزٌاده أو النقصان بعد المتغٌر نقوم بتجاهله فً هذا السطر.علما ًال بأن الزٌاده أو
النقصان نتعامل معها بمجرد تنفٌذ هذا السطر.
إذن سٌطبع :
4
5
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
من كتاب " إٌماض البرق فً خلق سٌد الخلق صلى وسلم علٌه الحق لفضٌلة الشٌخ علً بن عبدالخالق القرنً"
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
** عوامل التعيين الحسابي **
وعندما تكتب بهذه الطرٌقه فإن لها معنى برمجً فً لغه c++وفً لغات أخرر أٌضا ًال .وهً عنصر
قوي فً البرمجه.
وتعمل هذه العوامل مع المتغٌرات وذلك إلجراء إضافه أو طرح أو قسمه أو باقً القسمه للمتغٌرات .
مثالًال اذا كتبنا ); ) a+=10فهذا ٌعنً إضافه 10للمتغٌر .a
أي بمعنً أن قٌمه المتغٌر aالجدٌده تساوي قٌمته القدٌمه مضاف الٌها الـ .10وبهذا ٌمكن أن نكتب
السطر البرمجً السابق بهذه الطرٌقه (; . ) a= a+10وكل السطرٌن ٌؤدي الً نفس المعنى .أي ال
فرق بٌنهما.
;int a=3
\1 قيمه aالجديده ستصبح . 1
;a -=2
;int x=100
\2 قيمه المتغير xستصبح . 50
;x/=2
; int num=12
\3 قيمه المتغير numتصبح صفر (.باقي القسمه)
;num%=3
; int num=12
\4 قيمه المتغير numتصبح .4
;num/=3
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
"ٌا أٌها الذٌن آمنوا اتقوا هللا حق تـُــقاته و ال تموتـُــنّ إال و أنتم مسلمون"
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال ًال
التركيبو switch
هً أداة شرطٌه تستخدم إلختبار متغٌر ما ،له مجموعه من الحاالت.أي بمعنى أخر عندما نرٌد أن نفعل
شئ بناء علً وقوع حدث معٌن وفضاء العٌنه (مجموعه األحداث الممكن وقوعها) لهذه األحداث لٌست
بالقلٌله.
مثالًال إذ أردنا أن نكتب برنامج ٌستقبل رقم من المستخدم وٌقوم البرنامج بتحوٌل الرقم الً صٌغه لفظٌه.
1إلً oneو 2إلً .. towوهكذا الً الرقم . 10فً هذه الحاله ٌمكن ان نستخدم التركٌبه ، switch
لسهولتها فً التعامل مع مثل هذه الحاالت.
الصٌغه العامع لها :
)المتغٌر المراد اختباره ( Switch
بداٌه التركٌبه { //
:الحادثه case 1
Statement..
;break
:الحادثه case 2
Statement..
;break
نكتب بعد الكلمه المحجوزه ) (caseأحد القٌم للمتغٌرالمتوقع حدوثها .ومكان Statement
نكتب مانرٌده.
الكلمه المحجوزه breakهً إلٌقاف التركٌبه switchحتً التختبر باقً الحاالت فً حاله وجود
الحدث المعٌن.
الكلمه المحجوزه defaultنكتب بعدها مانرٌده فً حاله لم تتحقق ( تتطابق) أي حاله من الحاالت.
مناقشه :
سنتعامل مع أربعه حروف ألن لغه الـ c++حساسه لحاله األحرف (هناك فرق بٌن الحرف الصغٌر
والكبٌر).
عندما نرٌد لوقوع أكثر من حدث نفس الفعل ،ما علٌنا إال أن نكتب كل الحاالت مع بعض ثم بعد ذلك
نكتب الفعل ...الحظ المستطٌلٌن فً الكود :
الكود :
حلقات التكرار
ونسخدم حلقات التكرار عندما نرٌد أن ننفذ سطر برمجً أو عدد من األسطر البرمجٌه عدد من المرات.
فمثالَ إذا أردنا أن نظهر كلمه " " Softwareثالثون مره علً شاشه اإلخراج البد لنا من كتابه الكلمه
ثالثون مره علً المحرر ...والكن بإستخدام إحدر حلقات التكرار ٌمكن ان نكتب الكلمه مره واحده فقط
علً المحرر .وهذا ساعد من تقلٌل الوقوع فً االخطاء.
ﻋﻨﺪﻣﺎ ﻧريﺪ أﻦ ﻧﻜﺘب حﻠقﻪ تﻜرﺍر لابﺪ أﻦ ﻧرﺍﻋي ﻟثلاثﻪ أشﻴﺎء :
أوالًال :تحدٌد قٌمه إبتدائٌه أبدا منها العد وغالبا ًال ماٌكون عدد صحٌح مثالًال أبدا من الرقم واحد )int i=1;(.
ثانٌا ًال :شرط لتشغٌل وإٌقاف حلقه التكرار .كأن أقول إبدا من واحد ونفذ المطلوب مراراًال وتكراراًال طالما أن
عداد الحلقه أقل من أو ٌساوي الثالثون .)i<=30(.
ثالثا ًال :تحدٌد مقدار الزٌاده فً الحلقه أي بمعنً أن الحلقه بدأت من الرقم واحد ومع كل دوره للحلقه
ستزٌد القٌمه االبتدائٌه بمقدار واحد مثالًال)i++ ( .
{
Statement..
}
نطجبعّ انكهًّ softwareثالثٌٕ يرِ ستكٌٕ حهقّ انتكرار كبنتبني:
وسٌتم تنفٌذها بالصوره التالٌه :إبدا من قٌمه الـ iاالبتدائٌه وهً واحد واذا تحقق الشرط ( )i<=30نفذ
العباره بٌن قوس البداٌه والنهاٌه ;" cout<<"software \nوإرجع للحلقه مره أخرر وسٌزٌد مقدار
الــ iبواحد ألن i++تعنً إضافه واحد كما أوضحنا فً ما سبق.وٌتحقق من الشرط مره أخري وبتحققه
سٌنفذ العباره وسٌزٌد قٌمه الــ iوٌتحقق من الشرط مره أخرر وهكذا ...إلً أن ٌصل قٌمه المتغٌر i
لثالثون وستنتهً الحلقه ألن الشرط لن ٌتححقق بعد هذه الدوره.
ملحوظه :عندما نرٌد تنفٌذ سطر برمجً واحد بإستخدام حلقه التكرار فلن نحتاج لقوس بداٌه
ونهاٌه للحلقه ألن أول سطر ٌكتب بعد الحلقه ٌعتبر تبع الحلقه فال حاجه لكتابه االقواس.
ٌ مكن تعرٌف متغٌر القٌمه االبتدائٌه خارج الحلقه هكذا :
; int i
ٌ مكن اٌقاف الحلقه والخروج منها بإستخدام أداة شرط .وٌمكن أن نجعل الحلقه تعمل دون توقف.
ٌمكننا طباعه هذه االعداد بطباعه قٌم عداد الحلقه وغالبا ُ مانسمٌه iكعُرف بٌن المبرمجٌن.
الكود :
إذا لم نقم بوضع مسافه بٌن االعداد فإن األعداد ستظهر بالشكل التالً :
وهناك الكثٌر الكثٌر بما ٌمكن أن نفعله بهذه الحلقه وٌمكن إضافه حلقه أخرر داخل الحلقه الرئٌسٌه وهذا
ما ٌسمى بتداخل حلقات الــ . for
حلقو التكرار do... while
وتعنً إفعل ...طالما (بٌنما) أي نفذ العبارات طالما أن الشرط متحقق.وأٌضا ًال لها قٌمه إبتدائٌه نبدأ منها
وشرط توقف ومقدار زٌاده أو نقصان.
لٌس هناك إختالف كبٌر بٌنهم ٌ.مكن أن نقول بأن اإلختالف حسب إستخدامنا لها .نستخدم الـ
do..whileغالبا ًال عندما ال نعرف عدد مرات التكرار الالزمه للوصول الً نتٌجه معٌنه .مثالًال أرٌد
برنامج ٌضرب اي عدد أقل من 50فً الرقم 2وٌكرر هذه العملٌه إلٌـــــن ما ٌصبح الرقم أكبر من أو
ٌساوي . 50فً هذه الحاله نحن ال نعرف كم عدد مرات التكرار (الضرب فً )2المطلوبه لذلك .وهذا
مثال للتقرٌب.ونستخدم األخرر غالباًالعندما نعلم مسبقا عدد مرات التكرار الالزمه.
فً حلقه التكرار هذه ٌُنفذ ما بداخل أقواس الـ doأوالًال ثم ٌتم التحقق من الشرط الموجود داخل
أقواس الكلمه المحجوزه whileوٌكرر ذلك إلً أن ال ٌتحقق شرط االستمرار.
ةستخذاو حهقّ انتكرار
ثرَبيج الستخراج األعذاد انفرديّ يٍ 10إني 30إ
: do..while
مناقشه :
سنبدا من الرقم 10مروراًال بكل األرقام الصحٌحه إلً أن نصل الً 30وفً كل مره نختبر إذا كان
العدد فردي أم ال .وٌُطبع علً الشاشه إذا كان فردي.
ٌ مكن كتابه هذا البرنامج بدون أداة الشرط ifوالكن على أن نستعمل عامل التعٌٌن الحسابً
إلضافه 2مع كل دوره للحلقه .أي بمعنً إبدال ; i++بـــ ; . i+=2والكن ٌجب أن تكون القٌمه
االبتدائٌه 11ألنها أول عدد صحٌح فردي بعد الـ 10وإذا بدأنا من الـ 10سٌتم طباعتها .وشرط
التوقف والتشغٌل ٌكون ( . )i<=29وهذه الطرٌقه أسرع من الطرٌقه األولً .ولكن إستخدمت
الطرٌقه األولً ألنها أكثر فائده للتعلم.
ٌصبح الكود بالشكل التالً :
سؤال :لماذا أوقفنا الحلقه عند العدد 29؟؟؟ جاوب أنت حبٌبً الغالً.
هذه الحلقه ال تختلف كثٌراًال عن حلقه التكرار ٌ do.. whileمكن أن نقول أن اإلختالف بٌنهما أن هذه
الحلقه ( )whileتختبر الشرط أوالًال وإذا تحقق تبدأ بتنفٌذ المطلوب .أما الثانٌه فتنفذ المطلوب مره واحده
علً األقل ثم ترجع للتختبر شرط التكرار.
لها تنفٌذ واحد علً االقل قد ال ٌكون لها أي تنفٌذ /2
مناقشه :
ستبدأ الحلقه من الرقم 100وصوالًال الً الرقم واحد وفً كل مره نقوم بإظهار عداد حلقه التكرار( .)i
والكن مقدار الزٌاده سٌكون بالسالب ،واألفضل أن نستخدم عامل النقصان ألن ترتٌب األرقام
المطلوب تنازلً.وٌكون شرط اإلستمرار أن ٌصل عداد الحلقه الً الواحد وال ٌتعداه ( .)i>=1
الكود :
الكيِّلس من دان نفسو وعمل لما ب د الموت ،وال اجز من أتبع نفسو ىواىا وتمنى على اهلل األماني
برامج متنوعو
إذن عداد الحلقه سٌبدأ من الرقم المدخل من قبل المستخدم ( )i=nوشرط اإلستمرار أن قٌمه عداد
الحلقه ال ٌصل الصفر وٌتوقف عند الواحد أو اإلثنٌن ال ٌفرق . )i>=1 ) .ومقدار الزٌاده ٌكون
بالسالب واألفضل أن نستخدم عامل النقصان ألننا نرٌد الوصول الً الواحد ()i--
بما أن الصفر حاله خاصه فإننا سنخرجه من الحلقه بأداة الشرط .if
الكود:
الحظ أننا تجاهلنا التعامل مع األرقام السالبه .ماذا سٌحدث إذا أدخلنا رقم سالب ؟؟؟ أترك
االجابه لك أخً/أختً فً هللا.
شرح سرٌع لها (تداخل الـ :)forمع كل دوره للحلقه الخارجٌه ٌتم تنفٌذ الحلقه التً بداخلها بكاملها
الً نهاٌتها وٌرجع مره أخري الً الخارجٌه وٌكرر ذلك الً أن تنتهً الحلقه الخارجٌه أو تلك التً
كتبت اوالًال أنظر الً الكود.
الكود :
ثرَبيج إلظٓبر األرقبو انزٔجيّ ٔانفرديّ دٌٔ إستخذاو أداح شرط .يٍ 1اني
: 100
مناقشه :
سنستعمل حلقتٌن تكرار منفصلتٌن عن بعضهما علً أن تكون الزٌاده بمقدار 2مع كل دروه
للحلقه ونبدأ بأول رقم زوجً من إتجاه الواحد إلظهار األرقام الزوجٌه و هذه الحلقه األولى.
وأول رقم فردي إلستخراج األرقام الفردٌه وتكون هذه حلقه التكرار الثانٌه.
الكود :
هل ٌمكن أن تعمل حلقات التكرار مع الحروف ؟؟؟ لماذا ال نجرب !
ثرَبيج نطجبعّ انحرٔف اإلَجهيزيّ انكجيرِ ٔ انصغيرِ ثإستخذاو حهقّ تكرار :
إذا رأٌت الناس ٌعجبون بك ،فأعلم أنهم ٌعجبون بجمٌل أظهره هللا منك ،وال
ٌعلمون عن قبٌح ستره هللا علٌك " ،فاشكر هللا والتغتر"
أكتت كٕد الستخراج انشكم انتبني :
الكود :
سؤال ؟:
_ أكتب برنامج يتضمن التركيبه switchلها ثالث حاالت مع كل حاله أكتب حلقه من حلقات التكرار
الثالثه ،وكل حلقه لها عمل مختلف من ألاخري ،أي أن املستخدم عليه أن يدخل واحد من ثالث
خيارات ومع كل اختيار يظهر ش ئ مختلف علي شاشه الاخراج.
ملحىظه :إستخدم قىس بدايه ونهايه لكل حاله إذا كان هناك أكثر من جمله برمجيه للحاله مثل :
case 1 :
{
;"cout<<"!!!!!!\n
)for(…;…;….
;"@@@"<<cout
;} break
عــذراَ إن قصرت و أخطأت فإنً إجتهدت وقصدت الخٌر ،وعـذراًال إن نسٌت فمن نفسً
والشٌطان وماتوفٌقً إال باهلل