موسوعة البرمجة بلغة c

101
اﻟﻤﺆﻟﻒ: اﻟﺴﺒﻴﻌﻲ ﻣﺸﺎري ﻣﺠﻼد اﻹﻟﻜﺘﺮوﻧﻲ اﻟﺒﺮﻳﺪ: com . magedxl@hotmail ﻫﻨﺎ ﻛﺎن إذا ﻣﺮاﺳﻠﺘﻲ ﻳﻤﻜﻨﻜﻢ اﻟﻜﺘﺎب ﻫﺬا ﻓﻲ ﻳﻮﺟﺪ ﻣﻤﺎ ﻧﺤﻮه أو اﻟﺘﻮﺿﻴﺢ ﺑﻌﺪم ﻣﺘﻌﻠﻘﺔ ﻣﺸﺎﻛﻞ آي ك... اﻟﻤﺆﻟﻒ ﻣﻦ ﺧﻄﻲ أذن ﺑﺪون اﻟﻜﺘﺎب ﻫﺬا ﻣﻦ ﺟﺰء أي اﻗﺘﺒﺎس أو ﻃﺒﺎﻋﺔ ﺑﺎﺗﺎ ﻣﻨﻌﺎ ﻣﻤﻨﻮع PDF created with FinePrint pdfFactory trial version www.pdffactory.com

description

 

Transcript of موسوعة البرمجة بلغة c

مجالد مشاري السبيعي:المؤلف

com.magedxl@hotmail :البريد اإللكتروني

...ك آي مشاكل متعلقة بعدم التوضيح أو نحوه مما يوجد في هذا الكتاب يمكنكم مراسلتي إذا كان هنا

ممنوع منعا باتا طباعة أو اقتباس أي جزء من هذا الكتاب بدون أذن خطي من المؤلف

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

©حقوق الطبع محفوظة وغيره ا عالم ات تجاري ة أو عالم ات "++Windows" "visual c" الكت اب مث ل البرامج المذكورة ف ي ه ذا *

ول م ي ذكرها تص ريحا ف ي الكت اب طلب ا ، والمؤل ف يحت رم ه ذه العالم ات ويق ر به ا الص حابها ، مس جلة الص حابها .لالختصار

ت الت ي المؤل ف ال يع د مس ؤوال ب أي ش كل ص ريحا أو ض منيا ع ن أي نت ائج تترت ب ع ن اس تخدام المعلوم ا * .يحتويها الكتاب أو آي تعديالت يجريها القارئ عليها

.جميع اآلراء وما كتب في هذا الكتب تعبر عن رأي المؤلف شخصيا* .وال يحق الحد بيعه أو استغالله تجاريا% 100الكتاب مجاني *

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

فخ ر اإلس الم ، نع م الع راق لق د أض عنا الع راق ارض الف رات ودجل ة .. لحبيب ة هذا الكتاب إهداء إلى ارض الع راق ا ...والمسلمين بــغــداد

..أضعناها.. أضعناها ..لكنك لست ببعيد وستعودين أرضا للخالفه اإلسالمية

قريبا.. قريبا

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

..يأعزائ ..المفيد للجميع بإذن اهللا المبتدئين والمحترفين على حد السواء.. تم وبحمد اهللا االنتهاء من هذا الكتاب

..++Visual C الكتب التي تتحدث عن لغة نشاء هذا الكتاب بعد أن الحظت قلةوقد قمت بإ ..وهي اللغة التي تم منها بناء حزمة اوفيس المعروفة لتطبيقات الحاسب

أرجو أن يحوز هذا الكتاب على رضاكم وهو يحتوى على العديد من األمثلة التطبيقية مع شرح األساسيات لذلك .++Cوالعديد من األجوبة التي يحتاجها مبرمجي

..وباهللا التوفيق

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

أ............................................................................عنوان الكتاب ب.......................................................................................إهداء د.................................................................................... مقدمة

لباب األولا

وادواتها c++ مكونات األساسيات ٧ .........................................................................++cرموز لغة ١٣................................................................................المتغيرات

١٥.............................................. ......++cاألدوات المستعملة في لغة ١٥......................................................................األدوات الحسابية

١٧............................................................األدوات األحادية والثنائية ١٧.......................................................................الزيادة والنقصان

١٩..................................................أوليات العمليات لألدوات الحسابية ٢٠..........................................................األدوات العالقية والمنقطية

٢٢.........................................................................األدوات الدقيقة ٢٣.................................................................................أداة النفي ٢٤...............................................................................أداة الجمع

٢٤............................................................................أداة االختيار ٢٥...............................................................أداة االختيار االستثنائي

٢٦.............................................................................أداة اإلزاحة ٢٨.........................................................................األداة الشرطية

٢٩..............................................................................أداة العنوان ٣٠.......................................................................أداة تعيين الطول ٣١...........................................................................الفاصلة كأداة ٣٢..........................................................................جمل التعريف

٣٣...........................................الثوابت الرمزية ذات الشرط المعكوسة ٣٤...................................................++cالمالحظات والتعليقات في

الباب الثاني

6.0C Visual++ تشغيل ٣٥ ..........................................++Visual Cخطوات تشغيل برنامج

الباب الثالث واإلخراج الاإلدخ أساليب ٤٠..................................................................................مقدمة

٤١...................................................................اإلدخال واإلخراج

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

٤٢.......)....................................الثوابت الرمزية ( طباعة النصوص ٤٤.................................................................طباعة القيم العددية

٤٧................................طباعة النصوص والقيم العددية في جملة واحده ٤٩. .................................................................++cاإلدخال بلغة

الباب الرابع

والتكرار والشرط التحكم جمل ٥٣..................................................................................مقدمة

٥٣.......................................................................الجمل الشرطية ٥٤......................................if statementsجملة الشرط إذا وأخواتها

٥٩ .............................................switch statementجملة التوزيع ٦٠...................................................................؟جملة أداة الشرط

٦١............................................................التكرار وحلقات التكرار ٦١ .............................................Forأسلوب التكرار باستعمال حلقة

٦٦ ..........................................for Loopsحلقات التكرار المتداخلة ٦٩................................While & Doأسلوب التكرار باستعمال حلقة

٧٢........................................................... المتداخلةWhileحلقات ٧٣...............................................................Breakجملة اإليقاف

٧٥.... ..................................................continueجملة االستمرار ٧٧ ..............................................................()exitجملة الخروج ٧٨ ................................................................gotoجملة االنتقال

الباب الخامس والمصفوفات المرقمة المتغيرات

٧٩..................................................................................مقدمة ٨٣..................................إعطاء قيمة أولية للمصفوفة ذات البعد الواحد

٨٥............................................عنوان عناصر المصفوفة في الذاكرة ٨٦.............................................................المصفوفة ذات البعدين

الباب السادس

الدوال ٨٨.................................................................................مقدمة

٩٠...............................................................تطبيقات على الدوال

الباب السابع االنتقالية الملفات دوال و قراصاأل تقنية ٩٤................................................................................مقدمة

٩٥ .......................................................fopen()دالة فتح الملف ٩٧...................... ......................()fprintfدالة الكتابة داخل الملف

٩٨ ....................................................()fcloseدالة إغالق الملف ٩٩.......................................................()putw() getwالدالتان ١٠١...............................................................................النهاية

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

C++رموز لغة ++Cالرموز المستخدمة في لغة *

A.B.Cالحروف اإلنجليزية الكبيرة -١ a.b.c الحروف اإلنجليزية الصغيرة -٢ 1.2.3األرقام العربية األصل -٣ :رموز خاصة مثل -٤

+ - < ! " [] _ ( ) > || ، * / \ => =< <> >>

<< # $ % & != ١-١الجدول

وإذا ، ++C ه ذه الرم وز بأنواعه ا الم ادة الخ ام الت ي تتك ون منه ا مف ردات لغ ة وتع دتس تعمل رم وزا ، ++Cفان ك تالح ظ أن لغ ة ، ++Cدرس ت لغ ة أخ رى قب ل لغ ة

. في بعض اللغاتدإضافية في لوحة مفاتيح الحاسب ال توج ++Cكلمات لغة *

-:الكلمات نوعين (Identifiers)أسماء تعريفية -١

.تعرف الحاسوب بما تريد" المبرمجون" سماء التي نسميها نحن وهي األ

-:وتطلق األسماء التعريفية على-Aالمتغيرات . -B الدوال( االختزانات.( -Cالمؤشرات .

األساسيات وادواتها++Cمكونات

Basic Elements of C++

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

- :++Cقواعد تسمية األسماء التعريفية في لغة *

أن يك ون االس م مكتوب ا م ن سلس لة متص لة م ن الح روف أو األرق ام بش رط أن -١ "_"يبدا بحرف أو بخط تحتي

"_"أن ال يحتوى االسم على رموز خاصة عدا الخط التحتي -٢ .أن ال يكون االسم إحدى الكلمات المحجوزة -٢

:بعض األمثلة الصحيحة على األسماء التعريفيةa. B6 b. X_ray c. Matrix d. Ok_ e. A f. Soft_fine g. Door12 h. _new

: المبينة إزاء كل منها لألسباب(invalid)وهذه أسماء تعريفية غير مقبول 7-up Ùالنه بدا برقم وليس بحرف . b6.1 Ù الستعماله الرمز الخاص (.)

salim! Ù الستعماله الرمز الخاص (!) Ђ2 Ùاستعمال حروف غير إنجليزيةز ال يجو .

No#1 Ù الستعماله الرمز الخاص )#(

، األبجدي ة الص غيرة والكبي رة تف رق ب ين الح روف ++Cأن لغ ة ، ومن الجدير بالذكر تعام ل كأس ماء مختلف ة ع ن SYSTEM , system, System: فم ثال األس ماء

.بعضها البعض بسبب اختالف معاملة المترجم للحروف الصغيرة والكبيرة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

الكلمات المحجوزة-٢

، وتكت ب ع ادة بح روف ص غيرة ، ++C وهي كلم ات قياس ية معروف ة مس بقا لمت رجم وه ذه الكلم ات المحج وزة حس ب ، ++Cمع ان خاص ة به ا تؤديه ا ف ي برن امج وله ا

:الترتيب األبجدي هي

Sizeof long Double asm Static near else auto new While int do if Goto Delete Void This For

Case Public Class char Entry const Private float inline struct Extern Continue Static near enum Frinde Volatile Virtual

Typedef Unsigned Overload inline Default cdecl Union Template Switch Operator Pascal Signed Const char Catch far Protected Register Return break

١-٢الجدول

يج وز إع ادة تعريفه ا أو اس تعمالها ال، وينبغ ى التنبي ه إل ى أن ه ذه الكلم ات المحج وزة .لغير ما خصصت له

تع د لغ ة ص غيرة إذ تتك ون ++Cأن لغ ة ، وكم ا تالح ظ م ن قائم ة الكلم ات المحج وزة . كلمة محجوزة فقط٥٢من عدد قليل من الكلمات المحجوزة تقريبا

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Numeric Constantsتمثيل الثوابت العددية •

-: بثالث صور هي++Cفي لغة ، ابت العددية يمكن تمثيل الثو

a. الثابت العددي الصحيحinteger

Ù 9 0هو عدد مكون من األرقام من - .ال يحتوى على فاصلة عشرية - "-"أو "+" يمكن أن يحوى اإلشارة -

-: أمثلة صحيحة على الثابت العددي الصحيح

0 15

1000 321 -61

:المبينة إزاء كل منها لألسبابواألعداد التالية غير صحيحة

.النه يحتوى على فاصلة عشرية : 3.31 .النه يحتوى على فارزة : 1,000

J72 : النه يحتوى على حرف أبجدي. .لوجود فراغ بين العديدين : 4 2

.لوجود فراغ وأيضا الن العدد كبير : 1992 1992 1999

والس عة ، حس ب طوله ا ، ++Cكم ا يمك ن تص نيف األع داد الص حيحة ف ي لغ ة -:التخزينية لها في الذاكرة مثال

.long int تسمى ثوابت صحيحة طويلة 19897 , 40000الثوابت الصحيحة .short int تسمى ثوابت صحيحة قصيرة 16- , 80 , 45الثوابت .unsigned int تسمى ثوابت صحيحة بدون إشارة 20000 , 967الثوابت

الطويلة والقص يرة ه و ف ي ع دد الوح دات التخزيني ة المطلوب ة لك ل والفرق بين الثوابت

والقص يرة ت وفر ع دد الوح دات التخزيني ة ، فالطويلة تأخذ حيزا اكبر ، نوع في الذاكرة ف ان اس تعمالها ي وفر ، unsigned intأما الثوابت الصحيحة ب دون إش ارة ، المستعملة

، intقب ل ، unsignedذكر كلم ة وح دة تخزيني ة واح دة تس تعمل لالش اره عن دما ت ولك ل ن وع م ن األن واع الس ابقة ، وذل ك بإزاح ة القيم ة إل ى قيم ة موجب ة ب دون إش ارة

.تطبيقاته المناسبة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

-b الثابت العددي الحقيقي Floating-point Constants

Ù 9 0هو عدد مكون من األرقام - يجب أن يحتوى على فاصلة عشرية - "-"أو "+" يمكن أن يحوى االشاره - "،"ال يجوز أن يحتوى على فارزة -

-:أمثلة على ثوابت عدد حقيقي تستعمل الفاصلة العشرية بشكل صحيح 421.5

10.6 0.0

0 01

-68.0

-:واألمثلة االتيه غير صحيحة لألسباب المبنية إزاء كل منها .النه ال يحتوى علي فاصلة عشرية : 1000

.ى فارزةالنه يحتوى عل : 4,000.21 .الن يحتوى على فراغ : 83.4 2

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Non-numericتمثيل الثوابت الرمزية •محصورة بين ) أحرف أرقام رموز خاصة( سلسلة من رموز اللغة -

) عالمات تنصيص أو اقتباس(حواصر علوية مزدوجة

-:ومن األمثلة على الثابت الرمزي ما يأتي "first" "my name is" "30+50=80" "my,no=123.04" "Islam"

وتالحظ أننا سمينا أي نص موضوع بين حاصرتين م زدوجتين ثابت ا رمزي ا والص حيح وام ا كلم ة رم زي ، أن تسميته ثابتا رمزيا هي من قبيل المجاز واالصطالح ال الحقيق ة

وتس مية بع ض الكت ب بالثاب ت غي ر الع دد ، ف الن ال نص مك ون م ن ع دد م ن الرم وز : Non-numeric.

/ مالحظة

أال أن ا ال ، وان اس تخدمت ارقام ا حس ابية داخله ا ، كل الثواب ت الرمزي ة ال واردة أع اله وتس تخدم مث ل ه ذه الثواب ت ع ادة ، ول يس له ا معن ى حس ابي ، تحم ل أي قيم ة حس ابية

.كمعلومات توضيحية مع نتائج البرنامج

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

المتغيرات .يخزن بها رموز أو أعداد، لمواقع في ذاكرة الحاسوب ) عناوين(هي أسماء

وبم ا أن أن واع المعلوم ات الم راد تخزينه ا تك ون ع ادة مختلف ة مث ل الق يم الص حيحة أو

الــخ فانك تحتاج أن تعلم المترجم في بداي ة البرن امج ع ن أن واع ... الحقيقية أو الرمزية فم ثال ف ي الس طور التالي ة تب ين أن ، المتغي رات الت ي تري د اس تعمالها ف ي البرن امج

. رمزيةc,b,aوالمتغير ، صحيح kوالمتغير ، حقيقيان y و xالمتغيرين

وي ان عل ى اكث ر م ن متغي ر حي ث يفص ل ب ين ك ل والثال ث يحت ، الحظ الس طرين األول ب ذكر التفص يل ال دقيق للن وع ، فاصلة وكذلك يمك ن تحدي د أن واع المتغي رات ، متغيرين

أي هل ه و ص حيح قص ير أم طوي ل حقيق ي قص ير ، من حيث طول السعة التخزينية ، الـخ ... أو مضاعف

Float x, y;

Integer k;

Char c,b,a;

X=2.0; Y=10.6*x; K=100; A=t; B=f; C=4;

Xو yعددان حقيقيان

Kعدد صحيح

C,b,aرموز

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

-:وتقسم المتغيرات لنوعين • متغيرات عددية -١

.وهي مواقع في الذاكرة تخزن بها أعداد

متغيرات رمزية -٢ .وهي مواقع في الذاكرة تخزن بها رموز

متغيرات منطقية -٣

TRUE=1 أو FALSE =0 وتخزن بها قيمة منطقية أما

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

C++األدوات المستعملة في لغة

: ثالثة أنواع من األدوات وهي++C يوجد في لغة األدوات الدقيق ة وفيم ا ي أتي تفص يل – األدوات المنطقي ة والعالق ة –ألدوات الحس ابية ا

-:باألنواع الثالثة

Arithmetic Operatorsاألدوات الحسابية ، وقس مة ألدوات الحس ابية م ن جم ع وط رح وض رب باس تعمال ا++Cتس مح لغ ة

أدوات مباش رة مث ل األداة ل يس له ا ، األس إل ى عإال أن عملي ة الرف ، كاللغات األخ رى h في Basic وانما تتم علمي ة الرف ع إل ى أس ف ي لغ ة ، في فورتران ** واألداةC++

..بطريقة أخرى زء كس ري ين تج ع ن إذا أن أي ج Basic عنه ا ف ي ++Cكم ا تختل ف القس مة ف ي لغ ة

8/3كم ا ف ي لغت ي باس كال وكوب ول فم ثال ن اتج القس مة ، ا ك ان كبي را القسمة يهمل مهم .صحيح العدد/ ويكون ناتج القسمة باستعمال األداة ، يهمل 0.666الكسر و 2هو

-: فيما يأتي++Cويمكننا اآلن أن نلخص األدوات الحسابية المستعملة في لغة

وظيفتها األداة للطرح أو كأشاره سالبة - للجمع + للضرب * للقسمة /

لباقي القسمة الصحيحة % للنقصان - -

للزيادة + + ١-٣الجدول

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

، أو الحقيق ة ، ويختلف أداء بع ض األدوات الحس ابية حس ب ن وع المعطي ات الص حيحة يمك ن الق ول أن ، أو الرمزي ة فعن د معامل ة المعطي ات الحقيقي ة ل ألدوات الحس ابية

إال أن ، تج ري بالطريق ة الت ي نعرفه ا ، العلمي ات األساس ية م ن جم ع وط رح وض رب قيم ة النتيج ة م ن أي ة عملي ة حس ابية وه و أن تتع دى ، أن ن ذكر ب ه اك محذورا يجب هن

، الن لك ل ن وع م ن أن واع المتغي رات ح دودا ، الح دود المرس ومة لن وع المتغي ر الن اتج وعن د معامل ة المعطي ات الص حيحة ، يع د تجاوزه ا خط أ ين تج عن ه خط أ ف ي النت ائج

وعن د تع دي الح دود ، ريق ة الت ي نتوقعه ا ب األدوات الحس ابية تعم ل األدوات بالط وف ي ، overflowف ان ه ذا يعن ي أن خط أ ق د وق ع ، المسموح بها ف ي الق يم الص حيحة

:فمثال إذا كان لدينا البرنامج التالي، هذه الحالة لن تتلقى من المترجم أية رسالة خطأ

أال أن الج واب ف ي ، 99000 النهائي ة نتوق ع أن يك ون الج واب nتيج ة عن د طباع ة الن ، وه و الح د االعل ى المس موح ب ه للقيم ة الص حيحة ، 30464ه ذه الحال ة ل ن يتع دى

ف ان الن اتج 8/3 قس مة ص حيحة 3 على 8وهناك أمر أخرى يتعلق بالقسمة فعندما نقسم عل ى الج زء الكس ري ال ذي وإذا م ا رغب ت أن تح افظ، فق ط 2يك ون ص حيحا وه و

حينئ ذ ف ان الن اتج 8.0/3.0يمكن ك أن تح ول القس مة إل ى قس مة حقيق ة ، أهم ل واس قط ويس مى % أداة ب اقي ا لقس مة ++C له ذا الس بب أدخل ت لغ ة 2.667س يكون

Modulus Operatorويستعمل على النحو التالي :

وم ن الج دير بال ذكر أن ك ال م ن ، 7/3و ب اقي القس مة الص حيحة وه 1تعطي الجواب فف ي باس كال تكت ب ه ذه العملي ة عل ى ، باس كال وكوب ول تس تعمالن مث ل ه ذه العملي ة

++Cأم ا ف ي لغ ة ، Modulus ه ي اختص ار MODوكلم ة ، mod 3 7النح و . لتقوم بهذا العمل%فتستعمل األداة

Main( ) { int n = 33000; n = n * 3; }

7 % 3

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Unary and Binaryئية األدوات األحادية والثناOperators

تع د جمي ع أدوات الجم ع والط رح والض رب والقس مة وب اقي القس مة أدوات ثنائي ة binary ه ي 3*2فم ثال نتيج ة ، قيمتين وتن تج قيم ة واح دة ) تتعامل مع ( أي أنها تأخذ تمث ل (1992-) عن دما تتعام ل م ع قيم ة واح د فم ثال – وهن اك األداة األحادي ة 6القيم ة

والعملي ة هن ا ليس ت عملي ة ط رح كم ا ، Unaryاإلشارة ا لس البه وه ي هن ا أداة أحادي ة .نعلم

Increment and Decrementالزيادة والنقصان 1 لزيادة القيم بمقدار - - و + + أنها تستعمل األداتين الحسابيتين ++Cمن مزايا لغة

:الستعمالوالمثال التالي يبين طريقة ا ، 1أو إنقاصها بمقدار

-: ويمكن كتابتها بصوره مكافئة على النحو التاليa إلى 1معناه إضافة قيمة

-: على النحوa من قيمة 1وبالطريقة نفسها يمكن إنقاص

أو

وهو يكافئ الصورة

وه ذه ;a=a+1أس رع م ن التعبي ر ;a++ف التعبير ، لك ن هن اك فرق ا ف ي س رعة التنفي ذ .هي الفائدة من جراء استخدام مثل هذه األدوات

ص حيح أن ك ال م ن ، a++ و ++a التنبي ه إلي ه هن ا أن هن اك فرق ا ب ين ومم ا ينبغ ي aف ان ، ف ي تعبي ر م ن التع ابير a++لك ن عن د اس تعمال ، a إل ى 1التعبي رين يجم ع

تس تخرج قيم ة التعبي ر ++aبينم ا ف ي حال ة ، ت زداد قب ل اس تخراج قيم ة التعبي ر آي 1 بمق دار aبع د ذل ك ت تم زي ادة و ، 1 الحالي ة قب ل زيادته ا بمق دار aباس تعمال قيم ة

++a;

A++;

A=a+1;

--a;

a--;

A=a-1;

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

–وينطب ق ه ذا الك الم أيض ا عل ى ، والثانية جم ع ت أخير ، أن العملية األولى جمع تقديم a و a--.

:مثال

: وبإمكانك كتابة الجملتينInt x,y,z

X=y=z=0

:في جملة واحد على النحوInt x=y=z=0

Int x,y,x; X=y=x=0; X=++y + ++z;

X=y++ + z++;

X=++y + z++;

X=y-- +--z;

تأتي z إلى 1أولية جمع متاخره إذ يتم جمعها

xأوال إلى

مؤجل بعد y إلى 1جمع إعطاء قيمتها األولى إلى

x

x=1 , z=1 , y=1في هذه الحالة تكون

x=2 , y=2 , z=2في هذه الحالة تكون قبل أن تزداد كل z,yتجمع قيمتي ، xالن

1 منهما بمقدار

x=3 , y=3 , z=3اآلن قبل أن z بعد زيادتها وتجمع آخر y تجمع xالن

1تزداد

x=5 , y=2 , z=1اآلن

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

ecedence of Prأولية العمليات لألدوات الحسابية Arithmetic Operations

بالنس بة ل ألدوات ++Cيمك ن الق ول أن أولي ة تنفي ذ العملي ات كم ا يجريه ا مت رجم :الحسابية هي على النحو التالي

رقم األولوية األداة 1 --أو ++ - 2

3 %أو / أو * 4 -أو +

= 5 6 )المتأخرة بعد العدد (--أو ++

١-٤الجدول :ملحوظة

فتق دم العملي ة األق رب إل ى يس ار ، إذا تس اوت أوليت ان مث ل الجم ع والط رح ف ي تعبي ر وعن د اس تعمال األق واس ألي تعبي ر ف ان األق واس تأخ ذ األولوي ة األول ى ف ي ، التعبي ر

واألمثل ة اآلتي ة ، كم ا ف ي لغ ات البرمج ة األخ رى ، ) ي ادة أو النقص ان الز( التنفيذ قبل -):األسبقية ( تبين مفهوم األولوية

-:يأخذ تسلسل أولويات عملياته الشكل والخطوات التالية y / zالقسمة : العملية األولى -١ a * (y/z): العملية الثانية -٢ : فتكون النتيجةx إلى 2جمع الناتج في الخطوة : ثالثةالعملية ال -٣

X + y / z * z

هوتعط ى أال ولوي ، الح ظ أنن ا ب دأنا ب إجراء العلمي ات الحس ابية م ن اليس ار إل ى اليم ين كم ا ج اء ، ف ي المث ال قب ل الجم ع ، فج اءت القس مة ، ألية عملية حسب قاع دة األولوي ة

.أخر عمليةالضرب بعد القسمة وتال ذلك الجمع ك

الزيادة أو النقصان

المساواة 1صان بمقدار زيادة أو نق

X + y / z * a

اإلشارة السالبة

الضرب أو القسمة أو الباقي

الجمع أو الطرح

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Relational and Logicalاألدوات العالقية والمنطقية Operations

يرج ع اس م األدوات العالقي ة إل ى العملي ات المختص ة ب القيم الت ي بينه ا عالق ات وه و وتك ون نتيجت ه منطقي ة ، أجراء عمليات مقارن ة منطقي ة ب ين كمي ات حس ابية أو رمزي ة

يكث ر اس تخدام التع ابير المنطقي ة ف ي الجم ل و ، (false) أو (true)وه ي أم ا نع م :واألمثلة اآلتية تبين لك ما هو التعبير المنطقي، الشرطية

. جواب أما نعم أو ال x= =y: التعبير المنطقي . جواب أما نعم أو ال matrix > 100.0: والتعبير المنطقي

النتيج ة نع م وتأخ ذ(0) عل ى أنه ا ص فر (false) تعام ل النتيج ة ال ++Cوف ي لغ ة

(true) (1) أية قيمة غير الصفر والمشهور أنها . :ويبين لنا الجدول التالي األدوات العالقية والمنطقية

األدوات العالقية

معناها األداة اكبر من < اصغر من > اكبر من أو يساوي <= اصغر من أو يساوي >=

يساوي = = ال يساوي =!

١-٥الجدول قيةاألدوات المنط

معناها األداة&& And) حرف العطف و(

|| Or ) حرف العطف أو( ! Not) أداة أحادية ) للنفيunary

١-٦الجدول

;int a=b=3افرض أن : إليك اآلن هذه األمثلة 0 أي false نتيجته a < 3فان التعبير 1 أي true نتيجته a<=3التعبير

0 أي false نتيجته a>b التعبير 0 أي false نتيجته a!=bالتعبير 1 أي true نتيجته a= = bالتعبير

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

-: سوف نسوق هذا الجدول كالتاليجدول الصدق جدول الجمع

X && y (x and y) جدول التخيير

X||y (x or y) جدول النفي!x (not x)

X&&y Y X X||y Y x !y x F F F F F F T F F T F T T F F T F F T T F T T T T T T T

١-٧الجدول -:المساعدة على فهم جداول الجمع والتخيير والنفي أعاله!!

:جدول الجمع تعن ي س ما F&&Tوبناء عل ى ذل ك ف ان ، تمثل العسل Tوان ، تمثل السم Fتخيل أن

تعن ي خل ط الس م م ع العس ل والنتيج ة س م F&&Tذلك ك ، Fم ع س م والنتيج ة س م أي فه ي عس ل عل ى عس ل أي أن T&&T أم ا F ين تج عنه ا T&&Fوك ذلك ، Fأي

.Tالنتيجة :جدول التخيير

أم ا ب ين الس م والعس ل F فالنتيج ة معروف ه F F||F والس م Fفل و خي رت ب ين الس م F||T فالنتيجة سوف تكون بالطبع للنجاة عسل T ، ونتيجة T||T هي عسل T...

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Bowties Operatorsاألدوات الدقيقة ع ن س ائر اللغ ات الراقي ة مث ل فيج وال بيس ك وباس كال أنه ا تس تخدم ++Cتتمي ز لغ ة

Binary والمختص رة م ن [Bit]أدوات دقيق ة عل ى مس توى وح دة التخ زين األولي ة Digit*

وح دة التخ زين ( [bit]ألنه ا تتعام ل م ع ) الب ت (سميت هذه األدوات بالدقيقة أو أدوات

وتس تعمل ه ذه األدوات م ع المعطي ات ، وإزاح ة ، وض بطا ، فحص ا ، مباشرة ) األولية ..وال تستعمل مع غيرها من أنواع المعطيات، فقط char والرمزية intالصحيحة

:والجدول التالي يبين األدوات الدقيقة ووظيفة كل منها

عملها األداة~ (not)آداه أحادية & (and) و( حرف الواو( | (or) وأ( حرف العطف(

إزاحة إلى اليسار << إزاحة إلى اليمين >>^ (xor)) االستثنائية) أو

١-٨الجدولفان األدوات الدقيقة تتبع قواعد األولية وحسب الترتيب ، وكغيرها من األدوات

:التالي أولويتها األداة

األولى ~ الثانية <<أو>>

الثالثة & الرابعة ^ الخامسة |

١-٩الجدول

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

)~(أداة النفي

ومعن ى ه ذا أنه ا تض ع ، أو العك س (1) بواح د (0)تعمل هذه األداة عل ى إب دال الص فر ممثل ة ف ي النظ ام الع ددي xفم ثال ل و ك ان ل دينا قيم ة ، 0 مك ان 1 وك ذلك 1 مك ان 0

- ): بت8من (الثنائي التالي

xقيمة

x~قيمة

ف ي النظ ام الع ددي الثن ائي 1 و 0 ومعنى النفي هنا التضاد ب ين (not) النفي ~ومعنى

وه ذا يوض حه ل ك المث ال الس ابق ، والعك س ص حيح 1 تثبت ب دال من ه 0فعندما تنفى ، . في جميع مكونات من البتx~ بالبت ليصبحxقيمة ) نفي(إذ تم

0 1 0 1 1 0 0 0

1 0 1 0 0 1 1 1

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

&أداة الجمع

: التالي يوضح كيفية جمع القيم عند تمثيلها بالنظام العددي الثنائيالمثال ;x&yالعملية

بالنظام الثنائيxقيمة

بالنظام الثنائيyقيمة

;X&Yالناتج

1 ويعطي 1+1 ويجمع 0 ليعطي 1+0ويجمع ، 0 ويعطي 0+0حيث يجمع FÙF&F F&T Ù F T&T Ù T) انظر جداول الصدق السابقة(

|أداة االختيار ;x|y على النحو y و Xإذا أردنا استعمال أداة االختيار مع المثال السابق لقيمتي

x y

;x|yالناتج

.0 هو 0 و0وبين ، 1 هو 1 و1واالختيار بين ، 1 هو 1 و0حيث االختيار بين F|T Ù T T|T Ù T T|F Ù T ) انظر جداول الصدق السابقة(

0 1 0 1 1 0 0 0

1 0 0 1 0 0 0 0

0 0 0 1 0 0 0 0

0 1 0 1 1 0 0 0

1 0 0 1 0 0 0 0

1 1 0 1 1 0 0 0

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

^أداة االختيار االستثنائي

داةخذ المثال السابق نفسة لترى كيف تؤثر هذه األ x y

;x^yالناتج

1 و1وب ين ، 1 نتيجت ه 0 و1واالختي ار ب ين ، 0 نتيجت ه 0 و 0الحظ أن االختيار بين (OR) | تختل ف ع ن أداة االختي ار (XOR)^ أن أداة االختي ار االس تثنائي ، 0نتيجت ه

عن دما يك ون أح د true (1) نتيجته ا ف ي أن األول ى حال ة خاص ة م ن الثاني ة إذ تك ون كم ا ، false (0)وم ا ع دا ذل ك فنتيجته ا دائم ا ، true نتيجت ه y أو xطرف ي االختي ار

.1 هي 1|1 فان نتيجة (OR)أما في حالة االختيار العام ، الحظت في هذا المثال

1 0 0 1 0 0 0 0

0 1 0 1 1 0 0 0

1 1 0 0 1 0 0 0

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

>> و <<أدوات اإلزاحة

و Basicعلى المبرمج الذي يس تخدم لغ ات أخ رى مث ل قد تبدو أدوات اإلزاحة غريبة Pascal .. حي ث ين تج ع ن اس تعمال إح داهما إزاح ة قيم ة المتغي ر الص حيح . ال ـخ

وتم ال ، يمين ا أو يس ارا ع ددا م ن الخان ات حس ب الطل ب ) بالب ت(بالنظ ام الثن ائي .حاداومن الجهة السالبة تمال آ، الخانات المفرغة من الجهة الموجبة أصفارا

.واألمثلة التالية توضح طريقة االستعمال

:مثالبالنظ ام الثن ائي ) بالنظ ام العش ري 23وه ي ( x عند تنفيذها على قيم ة ;x>>2الجملة

:فان العملية تتم على النحو التالي x

x>>2;

:تصبح قيمتها لليمين ) بت ٢(النتيجة من اإلزاحة بمقدار خانتين . بالنظام العشري5

.5 تعطي النتيجة ;2<<23وهذا يعني أن . القيمة المزاحة23حيث

. عدد خانات اإلزاحة المطلوبة لليمين2 .الحظ أن الخانتين المفرغتين بسبب اإلزاحة لليمين قد ملئتا بمصفرين

1 1 1 0 1 0 0 0

1 0 1 0 0 0 0 0

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:مثال على إزاحة قيمة سالبة

Z = - 50<<2; Z

Z<<3

.لليسار) بت٢(إزاحة 1الجدي د ف ي ه ذا المث ال أن اإلزاح ة لقيم ة س البة ين تج ع ن ك ل خان ة مفرغ ة القيم ة

. كما في المثال السابق0وليس

1 1 1 0 1 0 0 0

1 1 1 0 1 0 0 0

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Other Operationsأدوات أخرى لم تذكر

the conditional operatorاألداة الشرطية

إذ تح ل مح ل جمل ة ش رطية مش هورة ف ي ، عن غيره ا ++cوهذه األداة تتميز بها لغة وتعتب ر ه ذه األداة أداة ثالثي ة ألنه ا ، if-then-elseبيس ك وف ورتران وباس كال وه ي

:تتعامل مع ثالث كميات حسب صيغتها العامة التاليةExpression1 ? Expression2: Expression3

:ملة الشرطية التالية على سبيل المثالفلو كان لدينا الج

وباس تعمال a=cوإال ف ان ، a=b فينف ذ الس طر (b<c)ان ه إذا تحق ق الش رط : معناه ا

األداة الش رطية ؟ يمكنن ا أن نكت ب ب دال م ن الجمل ة الش رطية كله ا الجمل ة المختص رة :التالية

If (b<c) A=b; Else A=c

A=(b<c) ? b:c A=b A=c

إذا تحقق الشرط فان

إذا لم يتحقق الشرط فان

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Pointer * the & and (*) و )&(أداة العنونة Operator

وللمتغي ر المؤش ر فوائ د ، ه و عن وان المتغي ر المؤش ر ف ي ال ذاكرة Pointerالمؤش ر ، جم ة ف ي عملي ة البرمج ة ن ذكرها عن د التع رض له ا ف ي الفص ول القادم ة ب إذن اهللا

المؤش رة المحج وزة له ا ف ي أم اكن ويكث ر اس تعمال ه اتين ال دالتين م ع المتغي رات .خاصة في الذاكرة

حي ث تق وم بإعط اء عن وان ، تتعامل مع كمية واحدة فق ط ة هنا أداة أحادي &وتعد األداة :فمثال العملية، للطرف األيسر منها ، الطرف األيمن للمعادلة

ع ا ع ن وه ذه الجمل ة تختل ف طب ، xووضعه في مخ زن ، في الذاكرة yتعطي عنوان & أم ا عن د اس تعمال x ف ي مخ زن y الت ي معناه ا وض ع قيم ة x=yالجملة الحس ابية

yول يس قيم ة ، x ف ي ال ذاكرة فق ط للمتغي ر y فمعناه ا إعط اء عن وان مخ زن yقب ل تأخ ذ قيم ة xف ان ، 120موض عها ف ي ال ذاكرة ه و ) عنوان(ورقم ، y=10فلو كانت

، فه ي أداة أحادي ة أيض ا *النس بة ل ألداة الثاني ة وبy م ع & عن د اس تعمالنا 120 * .ولذلك لو كان لدينا الجملة التالية التي تستعمل األداة & ، ومكملة لألداة

وان ه ذه الجمل ة ، ف ي ال ذاكرة yالمتغي ر ) موق ع ( تح وى عن وان xفانه يفه م منه ا أن كم ا 10 وه ي yآي قيم ة ، ب المخ زن األص ل ص اح ، قيمة المتغير sتضع في مخزن

) العن وان( ف ي الموق ع s تخ زن ف ي مخ زن 10وبالت الي ف ان قيم ة ، ف ي المث ال الس ابق وه ذا يعن ي أن األدات ين x=y تكافئه ا الجمل ة x=*&y ل ذلك ن رى أن جمل ة 120

تعمالن وكأن الواحدة معكوسة لألخرى تخدم أيض ا لعملي ات الض رب الحس ابي كم ا تس * أن األداة ، ومم ا يج ب االنتب اه إلي ه

ول ذا ال يلت بس علي ك األم ر ب ين االس تعمالين ، دقيق ة ANDك أداة & تس تعمل األداة .المختلفين

X=&y;

S=*x;

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

sizeofأداة تعيين الطول ، ) بالباي ت( وتس تعمل لتعي ين ط ول المتغي رات ، (unary)تع د ه ذه األداة أداة أحادي ة

ول ذا طل ب تعي ين ط ول متغي ر باس تعمال ، اعه ا وتختل ف أط وال المتغي رات حس ب أنوsizeof ، ينبغي ذكر نوع هذا المتغير بين قوسيsizeof ،فمثال:

الن (int) الص حيح nه ي ط ول المتغي ر ، باي ت 2 هن ا تس اوي nحيث ستكون نتيج ة :كما في المثال التالي، بايت 4وطول الحقيقي ، بايت 2طول الصحيح عادة هو

. الحقيقيxوهي طول ، بايت 4 هي z ستكون نتيجة حيث

Int n; N=sizeof (n);

Float x; Z=sizeof (x);

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

The Comma Operator كأداة ),(الفاصلة وتحتل األولوي ة األخي رة ف ي س لم األداة المختلف ة وتأخ ذ (binary)وهي أداة استثنائية :الصيغة العامة التالية

Experssion1, Experssion2 :ة بين تعبيرين فان تسلسل العمليات يأخذ الترتيب التاليفعندما تفصل فاصل

.ثم تعطى للتعبير الثاني) علي يسار الفاصلة ( تستخرج قيمة التعبير األول -١كقيم ة نهائي ة للتعبي ر كل ه ) عل ي يم ين الفاص لة ( تس تخرج قيم ة التعبي ر الث اني -٢

:كما في المثال التالي

ث م وض ع ه ذه ، ) يس ار الفاص لة( لتعبي ر األول ف ي ا2 قيم ة bحي ث يعط ى المتغي ر فتص بح قيم ة التعبي ر عل ى ، ) يم ين الفاص لة ( األخرى ف ي التعبي ر الث اني bالقيمة في

. وتكون هذه القيمة نتيجة التعبيرين النهائية 3 تساوي (b+1)اليمين

:مثال آخر

bيعط ي ، نفي ذ الس طر الث اني ث م عن د ت، أوال 8 القيم ة bف ي ه ذا المث ال ي تم إعط اء وه ذه ، 4وتس اوي ، (4-8) آي (b-4)ف ي التعبي ر األول داخ ل القوس ين القيم ة

فتص بح نتيج ة التعبي ر (12/4) آي (b/12)حي ث ت تم القس مة ، تعط ى للتعبي ر األيم ن .aالتي تعطي بالتالي للمتغير ، 3كله

A=(b=2,b+1);

B=8; A=(b=b-4,12/b);

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

جمل التعريف .ي جمل تقوم بتعريف القيمجمل التعريف ه

:مثال

يقابل هذه الجملة في فيجوال بيسك

. لتخزين قيمة عددية صحيحةaباالسم ، وتقوم بحجز مكان في الذاكرة المشار إليه

++Cأنواع البيانات الممكن تخزينها في الذاكرة المستخدمة لـ ١. charلتخزين رمز واحد فقط . ٢. intلتخزين عدد صحيح . ٣. floatلتخزين عدد حقيقي . ٤. doubleلتخزين عدد حقيقي كبير . ٥. voidلتخزين بيانات خالية .

++cتع د ض رورية لفه م لغ ة ، وكيفي ة اس تعمالها ، أن معرف ة أن واع البيان ات

أو بداي ة ال دوال ، نحت اج أن نعل ن ف ي بداي ة ك ل برن امج ، م ثال ، فالستعمال المتغيرات ف ي ض وء أن واع ، خ الل البرن امج ، وي تم التعام ل معه ا ، ت ع ن أن واع ه ذه المتغي را

:معطياتها فمثال اإلعالن عن التالية

عل ى أنه ا متغي رات ص حيحة ، أن يتعام ل م ع ه ذه المتغي رات ++cتخب ر مت رجم :وكذلك جملة اإلعالن التالية

. أن هذه المتغيرات من النوع الحقيقيc++ (C++ compiler)تخبر مترجم

Int a;

Dim a as integer

Int a,b,x;

Float m,y;

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

الثوابت الرمزية ذات الشرطة المعكوسة

حي ث أنن ا ال نس تطيع اس تعمال بع ض الرم وز الموج ودة ف ي لوح ة مف اتيح الحاس ب ش فرات رمزي ة خاص ة تس تعمل ش رطة ++cفق د اس تحدث لغ ة ، كثواب ت رمزي ة

:وهذه الشفرات مدونة في الجدول التالي، معكوسة لها

لهاالقيمة الصحيحة معناها الشفرة"\b" 8 رجوع بمقدار خانة واحدة "\n" 13 سطر جديد "\t" 9 ترتيب أفقي 0 للقيمة الخالية "0\""\r" 13 عالمة رجوع "\v" 11 ترتيب عمودي 92 \الشرطة المعكوسة "\\""/f" 12 تقديم صفحة

١-١٠الجدول :خذ المثال التالي، ولبيان أهمية هذه الشفرات

"first line\n second line" فان ه س يظهر ف ي س طرين متت الين عل ى النح و ) الثاب ت الرم زي(ل و طب ع ه ذا ال نص

:التاليFirst line

Second line

ه و معالج ة ، اأن أه م تطبيق ات المعطي ات الرمزي ة واس تعماالته ، وم ن الج دير بال ذكر ان ه يمك ن إج راء عملي ات عل ى ، وم ا يس تحق التس جيل واالهتم ام ، النص وص

.المعطيات الرمزية

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

c Comments++المالحظات والتعليقات في

مثال ++Cوكذلك لغة ، تستعمل سائر لغات البرمجة جمال للتعليقات والمالحظات :الجملة التالية

:++Cتقابلها جملة تعليق التالية في لغة ، هي جملة مالحظ في لغة بيسك

)خطين مائلين(التي توضح بعد شرطتين عن د س طر م ا ، في أي مكان من البرن امج إلب داء مالحظ ة م ا ، وتستعمل جمل التعليق

ال ي ؤثر في ه ، بمعنى أنها لو ح ذفت م ن البرن امج ، وال تعد جملة تنفيذية ، في البرنامج .المبرمجون ما يتجاهلها وعادة، ذلك شيئا

:الحظ جمل التعليق التالية: مثال

:ما يأتي، الجدير بالذكر هنا ومن .من جهتي جملة التعليق* والنجمة / ال يترك أي فراغ بين الشرطة

أي أنها ال ، بإهمال النصوص المستعملة في جمل التعليق ++cيقوم مترجم -١ .بل هي جمل توضيحية تظهر مع قائمة البرنامج أو سطورا فقط ، تنفذ

ما عدا ، أي مكان من البرنامج يمكن وضع جملة المالحظة والتعليق في -٢ .keywordأو كلمة محجوزة ، identifierوسط اسم تعريفي

10 rem this is Islam

// this is Islam

//this is comment */an example on comment in c++ language/*

main()/* start your program*/ { int x,y,z; //this line declares type of x,y,z }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:نتبع التالي++ لتشغيل برنامج فيجوال سي Ù visualc++6.0 البرامجÙأبدا

:ثم بعد ذلك ستظهر لنا الشاشة التالية

ث م بع د ذل ك نخت ار م ن القائم ة Fileقائم ة نخت ار م ن ه ذه الشاش ة كم ا ه و واض ح ال Newلتظهر لنا الشاشة التالية ..

من هناfileنختار القائمة

visual c++6.0تشغيل Run visual c++6.0

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

..نطبق ما يوجد بالصورة باألسفل ثم نختار موافق

التسمية الخاصة بالمشروع نختار هنا

okثم ننقر

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

..نختار التطبيق الموجود باألسفل ثم نختار إنهاء كما هو موضح باألسفل

نختار هذا التطبيق

finishثم ننقر

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

..اآلن ستظهر لنا شاشة الكود ونالحظ باألسفل الشاشة

.. ليطب ق لن ا المش روع Execute .exe ث م نخت ار Buildبع د ذل ك نخت ار م ن القائم ة .F5أو بالنقر من لوحة المفاتيح على الزر

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:عد تنفيذ البرنامج ستظهر لنا النتائج كما في الشكل التاليطبعا ب

طبعا أعزائ ي ه ذا البرن امج الص غير ه و برن امج تالحظ ون أن الك ود تبع ه خ اص بلغ ة C االم ول يس c++ لك ن م ا نعم ل علي ه ه و مت رجم يقب ل اللغت ين مع ا والمت رجم ه و

Visual C++ ، عب ارة ونالح ظ ان ه ت م طباع ة Hello World! وه ي نتيج ة تنفي ذ . الموجودة في سطور البرنامج()printfالدالة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

introductionمقدمة وأساليب إخراج وطباعة ، يتناول هذا الجزء أساليب إدخال القيم الحسابية والرمزية

ختلفة حسب وطباعة المعطيات الم، نتائج البرامج والتعابير الحسابية والرمزية .الحاجة

أن نس تعمل دوال مبني ة وج اهزة عن د الطل ب للقي ام باإلدخ ال ، لقد تعودنا في لغة بيس ك ف ان لغ ة ، وف ي ه ذا الص دد ، ) print(أو ب اإلخراج مث ل ) read أو input(مث ل C++ ، ع ددا ، حي ث ت وفر اللغ ة ، بطريق ة مختلف ة ، تتعام ل م ع اإلدخ ال واإلخ راج

ويس تفيد منه ا ، حيث يمك ن للمب رمج أن يس تدعيها ، خراج واإلدخال كبيرا من دوال اإل وس وف ن ورد أن ش اء اهللا ف ي ه ذا ، كيفما يناسبه ، حسب نوع المعطيات والمتغيرات ،

.++Cالفصل أهم هذه الدوال واشهرها لـ

أساليب اإلدخال واإلخراجInput/output Techniques

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

output\inputاإلدخال واإلخراج مث ل Iostreamل والروتيني ات المعرف ة ض من مجموع ة م ن ال دوا ، ++Cت وفر لغ ة

cout لإلخراج و cin لإلدخال وسوف نعرف الملف iostream.h

: يعنيIostream.hالملف io : مختصر لـinput/outputآي اإلدخال واإلخراج .

Stream : مكتبة قياسية خاصة باإلخراج واإلدخال الــخ.. H : header fileآي الملف الدليل .

:١مثال : في لغة بيسك فالجملة100إذا أردت طباعة العدد

Print 100 : فان الدالة التالية تعمل ذلك++Cأما في لغة ، تؤدي عملية الطباعة

>> اس م وح دة اإلخ راج القياس ي واألداة cout حي ث 100ت ؤدي إل ى طباع ة الع دد أن ه ذا األس لوب الجدي د ف ي ، إل ى وح دة اإلخ راج 100الع دد ت ؤدي إل ى إرس ال

.cاإلخراج يختلف عما في لغة

#include “ stdafx.h” #include “ iostream.h” main () { cout<<100; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

) الثوابت الرمزية(طباعة النصوص :٢مثال

:تأمل قطعة البرنامج التالي

بدال endlوقد يمكن استخدام الدالة ، إيعاز لالنتقال إلى سطر جديد n\أخرى بعبارة

: وكما يليn\من

:وعند تنفيذ البرنامج يطبع الناتج التاليsmoking is dangerous

#include “ stdafx.h” #include “ iostream.h” main () { cout<<“smoking is dangerous \n”;; return0; }

لالنتقال لسطر جديد

#include “ stdafx.h” #include “ iostream.h” main () { cout<<“ smoking is dangerous”<<endl; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٣مثال :تأمل البرنامج التالي: في عمليات الطباعة n\ة من إمكانيات اإليعاز لالستفاد

:عند تنفيذ البرنامج ترى الطباعة التالية على الشاشة Ù matrixmatrixالسطر األول

Ù matrixطر الثانيالس سطر فارغÙالسطر الثالث Ù matrixالسطر الرابع

سطر فارغÙالسطر الخامس سطر فارغÙالسطر السادس

:نالحظ في هذا البرنامج

إل ى الس طر الث اني لع دم matrixان ه ي تم االنتق ال م ن الس طر األول بع د طباع ة -١ظه رت نتائجه ا ف ي ا ول ذا ف ان جمل ة الطابع ة التالي ة ، n\وج ود إيع از االنتق ال

وينتق ل المؤش ر الض وئي ، األول ى matrixمتص لة بطاع ة ، لس طر األول نفس ه .n\إلى سطر جديد لوجود إيعاز

وي تم االنتق ال إل ى ، ) الث اني(ي تم تنفي ذ جمل ة الطباع ة الثالث ة ف ي الس طر الجدي د -٢ق وم ك ل حي ث ي n\n\وذل ك لوج ود اإليع از ، السطر الرابع قفزا عن السطر الثال ث

وف ي الس طر الراب ع تطب ع جمل ة ، بنق ل المؤش ر الض وئي س طرا واح دا n\إيع از وي تم بع دها االنتق ال إل ى الس طر الس ابع ف ورا حس ب ، الطباع ة الرابع ة

.n\n\n\اإليعاز

#include “ stdafx.h” #include “ iostream.h” main () { cout<<“matrix”; cout<<“matrix \n”; cout<<“matrix \n\n”; cout<<“matrix \n\n\n”; cout<<“matrix”; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

طباعة القيم العددية :٤مثال

: كقيمة صحيحة على شاشة الحاسوب446يقوم البرنامج التالي بطاعة العدد

:عند الطباعة يظهر لنا التالي446

:٥مثال :10.5التالي يطبع القيمة الحقيقة ، ++Cبرنامج

:ند الطباعة يظهر التاليع10.5

#include “ stdafx.h” #include “ iostream.h” main () { cout<<446; return0; }

#include “ stdafx.h” #include “ iostream.h” main () { cout<<10.5; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٦مثال : التالي++Cانظر ماذا يفعل برنامج

:عند الطباعة يظهر لنا التالي100

:٧مثال :البرنامج التالي يقوم بطباعة قيمة متغير حقيقي

:عند الطباعة سيظهر لنا التالي4.25

#include “ stdafx.h” #include “ iostream.h” main () { int a=100; cout<<a; return0; }

#include “ stdafx.h” #include “ iostream.h” main () { float x; x=4.25 cout<<x; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٨مثال الحقيق ي ال واردين ف ي المث الين xو ، الص حيح aإذا تطل ب األم ر طباع ة المتغي رين

:فالبرنامج سيكون على النحو التالي، في برنامج واحد ، السابقين

:هكذا، ) الصحيح يسبق الحقيقي(وستظهر نتائج هذا البرنامج كما طلبنا 100 4.25

#include “ stdafx.h” #include “ iostream.h” main () { int a=100; float x=4.25 cout<<a<<x; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

فـي جملـة ) النصـوص (طباعة القيم العددية والرمزية واحدة

:٩مثال :ونصية مع البعض كالتاليسوف نقوم في هذا المثال بطباعة قيم عددية

:عند الطباعة يكون الناتج كالتاليA=100

:١٠مثال :ماذا إذا أردنا طباعة عدد صحيح وحقيقي مع نصوص بنفس الوقت

:وعند الطباعة سيظهر لنا التاليA=100 x=4.25

#include “ stdafx.h” #include “ iostream.h” main () { int a=100; cout<<“a=”<<a; return0; }

#include “ stdafx.h” #include “ iostream.h” main () { int=100; float x=4.25 cout<<“a=”<<a<<“x=”<<x; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١١مثالفجمل ة ، إذا أردن ا أن تظه ر نت ائج المث ال الس ابق ف ي س طرين ب دال م ن س طر واح د

:الطباعة ستكون كالتالي

:وتكون نتيجة الطباعة على الصورة التاليةA=100 X=4.25

#include “ stdafx.h” #include “ iostream.h” main () { int a=100; float x=4.25 cout<<“a=”<<a<<“\n”<<“x=”<<x; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

C Streams++اإلدخال بلغة افض ل م ن دوال streamsيتن اول ه ذا المب دأ معالج ة اإلدخ ال حي ث يع د اس تخدام

.Cاإلدخال للـغة :لتاليوصيغة الجملة كا

.<< أما اإلدخال >>ونشاهد أنها عكس عملية اإلخراج حيث اإلخراج وي تم ، وتس تخدم ه ذه الجمل ة إلدخ ال ق يم عب ر لوح ة المف اتيح للمتغي رات ف ي ال ذاكرة

.تعيين قيمة المتغير في الذاكرة باستخدام لوحة المفاتيح

/مالحظة . أن نستخدم المتغير قبل تعريفةزال يجو

:صحيحمثال

Int x; Cin>>x;

:مثال خاطئCin>>x;

:١٢مثال :سوف نقوم بإدخال عدد صحيح في هذا التطبيق ثم نقوم بطباعته كالتالي

بأن ه ع دد ص حيح بع د ذل ك عن د تنفي ذ aلمتغير نالحظ في هذا المثال أننا قمنا بتعريف ا م ثال عن د ذل ك س يكون الن اتج 10البرن امج س يطلب من ا إدخ ال ع دد س ندخل الع دد

:كالتالي10

#include “ stdafx.h” #include “ iostream.h” main () { int=a; cin>>a; cout<<a; return0; }

Cin>>a;

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٣مثال وضعفه؟هوطباعه نصف، اكتب برنامجا إلدخال عمرك ثم طباعته

:في المثال أعاله قمنا أوال بتعريف المتغير كالتاليInt a;

:ثم بعد ذلك طلب منا إدخال العمر 20عند الطلب سندخل مثال

Cin>>a :وبعدها قمنا بطباعة العمر

Cout<<a; :ثم قمنا حسب المطلوب بطباعة نصف العمر

Cout<<a/2; :منا حسب المطلوب األخير بطباعة ضعف العمرثم ق

Cout<<a*2;

:لتكون النتيجة النهائية كالتالي20 10 40

#include “ stdafx.h” #include “ iostream.h” main () { int a; cin>>a; cout<<a; cout<<a/2; cout<<a*2; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٤مثال ومن ثم طباعة جدول الضرب له؟7اكتب برنامجا إلدخال عدد ما وليكن العدد

:عند تنفيذ البرنامج ستكون النتيجة كالتالي7 14 21 28 35 42 49 56 63 70

:١٥مثال وطباعة معدل العالمات؟30 25 40اكتب برنامج إلدخال ثالث عالمات لطالب

نالحظ أن في جمل اإلخراج قمنا بكتابة قاعدة وه ي جم ع ال ثالث أع داد م ع بعض ها ث م

..قسمتها على عددها وهي قاعدة معروفة إلظهار المعدل :وسف يكون الناتج كالتالي

31

#include “ stdafx.h” #include “ iostream.h” main () { int a; cin>>a; cout<<a*1; cout<<a*2; cout<<a*3; cout<<a*4; cout<<a*5; cout<<a*6; cout<<a*7; cout<<a*8; cout<<a*9; cout<<a*10; return0; }

عند طلب إدخال قيمة ندخل .. حسب طلب السؤال7الرقم

#include “ stdafx.h” #include “ iostream.h” main () { int a,b,c; cin>>a>>b>>c; cout<<(a+b+c)/3; return0; }

25 40ندخل حسب المطلوب 30

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٦مثال :ومن ثم طباعتها، ث قيم عددية سنحاول اآلن إدخال ثال

قم ن نالحظ في السؤال أعاله أننا قمنا بإدخال ثالث قيم مختلفة م ن حي ث الن وع وأيض ا :باستخدام التعليقات وهي ال تؤثر في البرنامج فقط للتوضيح وهي التعليق

// input all data output all data//

..لنوضح للمستخدم أين اإلدخال واإلخراج

:وسوف يكون الناتج كالتاليprint the following items 10 6.3 2001.5 this is the end

#include “ stdafx.h” #include “ iostream.h” main () { int a; float x; double z; cin>>a>>x>>z; // input all data cout<<endl; cout<<“\n print the following items”; cout<<endl; cout<<a<<“\n”<<x<<“\n”<<z; // output all data cout<<“\n this is the end”<<endl; return0; }

10لتكن

6.3لتكن

2001.5لتكن

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

troductioninمقدمة وق د نحت اج أن نق وم بتنفي ذ ، ++Cقد نحتاج أن ننتقل م ن س طر إل ى آخ ر ف ي برن امج

وق د نحت اج أن نك رر عملي ة م ن عملي ات ، بع ض الجم ل عن د تحق ق بع ض الش روط وق د نحت اج أن نبن ي ش بكة م ن ، اإلدخ ال أو اإلخ راج أو الحس اب ع ددا م ن الم رات

، حس ب مقتض يات بع ض األح وال ، رن امج توزي ع األوام ر عل ى ع دد م ن س طور الب ، نحت اج أن ن تعلم أس اليب الش رط : ف ي ه ذه الح االت ، وحسبما تقتض يه طبيع ة المس ألة

وتع د أس اليب الش رط وال تحكم ، وكيفي ة ال تحكم ف ي مس ار البرن امج ، وأساليب التك رار .برنامجوبدونها ال يمكن تنظيم آي ، والتكرار بمثابة القلب في جسم لغات البرمجة

، المتعلق ة به ذا الش أن ، للمب رمج ع ددا م ن األس اليب وال دوال الفعال ة ++Cوتوفر لغة آي يمك ن تنظ يم structuredوتمت از ه ذه األس اليب بأنه ا أس اليب بنائي ة أو بنيوي ة

بأس لوب ذات ي م ن بداي ة العملي ات وحت ى نهايته ا دون ، عملي ات ال تحكم والتك رار فيه ا لألش راف عل ى التوجي ه والتخط يط لك ل ، ثن اء ه ذه ا لعملي ات ت دخل م ن المب رمج أ

: ويع رف بع ض الخب راء والمختص ين البرمج ة البنيوي ة ، خطوه من خطوات البرن امج لتوجي ه البرن امج ف ي ك ل خط وة ، GOTOأنها البرمجة التي ال تستعمل جملة االنتقال

ال تس تعمل إال لكنه ا، ت وفر جمل ة االنتق ال ه ذه ، ++Cوم ع ذل ك ف ان لغ ة ، .للضرورة

، ++C ف ان لغ ة false أو زائف ا trueوحي ث أن ج واب الش رط أم ا أن يك ون ص وابا وتعط ي قيم ة ص فر للحال ة ، تعط ي الحال ة الص ائبة قيم ة عددي ة تختل ف ع ن الص فر

ت وفر مرون ة كبي رة ++Cول ذا ف ان لغ ة ) عند عدم تحقق الشرط أو الش روط ( الزائفة .وفي توجيه البرنامج بطريقة فعالة وفائقة، بير من الدوال في استخدام عدد ك

جمل التحكم والشرط والتكرارProgramControl,Conditional&Loop Statements

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

الجمل الشرطية

: مع ثالثة أنواع من جمل الشرط وهي++Cتتعامل لغة if statementsجملة إذا الشرطية وأخواتها -١ switch statementجملة التوزيع -٢ ?جملة أداة الشرط -٣

if statementsجملة الشرط إذا وأخواتها if statementsجملة الشرط إذا وأخواتها -

:تأخذ هذه الجملة الشكل العام التاليIf (condition) statement1;

أو سلسلة (بنقل تسلسل تنفيذ البرنامج إلى الجملة ، تقوم جملة إذا الشرطية هنا وتكون condition) أو الشروط( عندما يتحقق الشرط statement1) الجملة

فان التنفيذ ينتقل ، falseأي تكون النتيجة ، وإذا لم يتحقق الشرط ، trueنتيجته ++C في else ويعد استعمال statment2) أو سلسلة الجمل( فورا إلى الجملة

أي يمكن حذفها دون أن تتأثر الجملة الشرطية تركيبا واداء ويكون شكلها ، اختياريا :العام على النحو التالي

If (condition) statement1; Else statment2;

وإال فان condition أن تحقق الشرط statement1وفي هذه الحالة ستنفذ الجملة

.if التالي لجملة ++Cالتنفيذ ينتقل إلى سطر

الصيغة األولى If (condition) statement1 وتأخذ البنية العاملة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١مثال

على شاشة العرض؟x is positiveبارة إلظهار الع++Cاكتب برنامجا بلغة

) (x>0على الشاشة الن الشرط x is positiveفي هذا المثال ستظهر الجملة :متحقق فالخمسة بالطبع اكبر من العدد صفر فالنتيجة كالتالي

x is positive :٢مثال

: المعرفة على النحو التاليY التالي ليحسب القيمة المطلقة لـ++Cاكتب برنامج x;x>=0

Y=|x|= -x;x<0

: لتكون النتيجة 10 في المثال أعاله سوف ندخل الرقم 10

#include “ stdafx.h” #include “ iostream.h” main () { int x=5; if (x>0) cout<<x<<“ x is positive”; return0; }

#include “ stdafx.h” #include “ iostream.h” main () { int x; cin>>x; if (x>=0) cout<<x; else cout<<-x; return0; }

10نقوم بإدخال العدد

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٣مثال فالتق دير 90قم بإنشاء برنامج إلدخال عالمة طالب فإذا كان ت العالم ة اكب ر أو تس اوي

A) ( فالتق دير 80أم ا إذا كان ت اكب ر أو تس اوي B) ( أم ا إذا كان ت اكب ر أو تس اويأم ا إذا كان ت اكب ر )(D فالتق دير 60 كان ت اكب ر أو تس اوي أم ا إذاC)( فالتق دير 70

؟(F)ما عدا ذلك فالتقدير ) (E فالتقدير 50أو تساوي

بأن ه ع دد ص حيح ث م قمن ا بع د ذل ك markف ي المث ال أع اله قمن ا بتعري ف المتغي ر . بأنه قيمة نصيه وهو التقديرgradeبتعريف المتغير

: سوف تكون العالمة كالتالي85طبعا قمنا بإدخال الدرجة وهي B

#include “ stdafx.h” #include “ iostream.h” main () { int mark; char grade; cin>>mark; if (mark>=90) grade='a'; else if (mark>=80) grade='b'; else if (mark>=70) grade='c'; else if (mark>=60) grade='d'; else if (mark>=50) grade='e'; else grade='f'; cout<<grade; return0; }

يف الدرجةتعر

تعريف التقدير

سندخل مثال 85الدرجة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

الصيغة الثانية : الشكل العام التالي(if..else)إالو.... وتأخذ البنية العاملة لجملة إذا

If (condition) { statmenet1; } else { statmenet1; }

:٤مثال

: أعاله كما يلي(if..else)لكن بالشكل ) 3(سوف نطبق المثال السابق 0 :٥مثال

#include “ stdafx.h” #include “ iostream.h” main () { int mark; char grade; cin>>mark; if ( mark>=90){ grade='A'; { else if (mark>=80){ grade='B'; { else if (mark>=70){ grade='C'; { else if (mark>=60){ grade='D'; { else if (mark>=50){ grade='E'; } cout<<grade; return0; }

إذا األولى وجوابها

إذا الثانية وجوابها

إذا الثالثة وجوابها

إذا الرابعة وجوابها

وإال فالنتيجة الباقية هي الخامسة

لطباعة التقدير

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

وإذا ك ان طول ك اكب ر م ن ط ول زميل ك ، اكتب برنامجا إلدخ ال طول ك وط ول زميل ك ثم اطبعه وأال، ل األطوال واحسب معد، اطبع طولك

واطبع ضعف الطول ونصف الطول؟، اطبع طول زميلك /الحـل

t2 وسنرمز لطول زميلك t1سنرمز لطولك

#include “ stdafx.h” #include “ iostream.h” main () { int t1,t2; cin>>t1>>t2; if (t1>t2) { cout<<t1; cout<<(t1+t2)/2; } else { cout<<t2; cout<<t2*2; cout<<t2/2; } return0; }

لطباعة نصف الطول

لطباعة ضعف الطول

طباعة معدل األطوال

أدخل األطوال

وإال

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

switch statementجملة التوزيع :++c الشكل العام التالي في لغة Switchتأخذ جملة

Switch (expression) { Case constant1: statments1; break; Case constant2: statments2; break; ...................................................... ...................................................... ...................................................... Case constantn: statmentsn; break; Default; last statements; }

:٦مثال

:والنتيجةy

تعبير قيمته صحيحة

فذ عندما جملة أو جمل تنساوي التعبير قيمة

constant1

جملة أو جمل تنفذ عندما ساوي التعبير قيمة

constant2

يتم تنفيذها عند عدم تنفيذ جميع الحاالت الواردة

Switchأعاله في بنية

#include “ stdafx.h” #include “ iostream.h” void main() { int s1; s1=2; switch (s1) { case 2 :cout<<"y"; break; case 3: cout<<"x"; break; case 4: cout<<"m"; break; default: cout<<"w"; } }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

?جملة أداة الشرط وقد مر معنا كيفية استعمالها في أول ، وإال ... وهي أداة سريعة مكافئة لبنية إذا

:الكتاب وسوف نورد هنا صورتها العامةVariable=(condition)? Result:result2;

عن دما يك ون ج واب الش رط result1ان ه ي تم تنفي ذ النتيج ة األول ى : ومعناه ا

condition متحقق ا (true) ، وإال في تم تنفي ذ النتيج ة الثاني ةresult2 عن دما يك ون .(false)جواب الشرط

:٧مثال

إذا ل م يتحق ق 20أخ ذ القيم ة وتa>1 إذا تحق ق الش رط 10 تأخ ذ القيم ة bومعناها أن .الشرط نفسه

:والنتيجة

10

#include “ stdafx.h” #include “ iostream.h” void main() { int a,b; a=5; if (a>1) b=10; else b=20; cout<<b; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Repetition and Loopsالتكرار وحلقات التكرار وغي ر ، عددا م ن أس اليب التك رار المش روط ، كسائر لغات البرمجة ، ++Cتوفر لغة

:المشروط ومن هذه األساليب

Forأسلوب التكرار باستعمال حلقة .ال تتوفران في غيرها من اللغات، قوة ومرونة forار باستعمال يمتلك أسلوب التكر

الصيغة العامة األولىFor ( initial-value; condition; increment ) statement;

أول م رة statement1 هنا مبتدئة بقيم ة الع داد االبتدائي ة بتنفي ذ الجمل ة Forتقوم جملة

وف ي الم رة التالي ة ت زداد القيم ة االبتدائي ة للع داد بمق دار الزي ادة ث م تنف ذ جمل ة ، statement1 وهكذا حتى يس تكمل الش رط .. مرة ثانيةcondition أم ر إنه اء عملي ات

توض ح كيفي ة اس تعمال حلق ات ةواألمثل ة التالي ، For والخ روج م ن حلق ة التك رار :Forالتكرار بجملة

:٨مثال

:والنتيجة كالتالي

القيمة االبتدائية لعداد

Forحلقة

شرط يقيد Forحركة

وغالبا ما يحوي قيمة

هائيةن

الزيادة المنتظمة في العداد

يتم جملة تكرار

تنفيذها عدد مرات تكرار

For

#include “ stdafx.h” #include “ iostream.h” main () { char x; for (x=1;x<=10;x=x+1) cout<<“Islam”; cout<<endl; return0; }

القيمة التنازلية للعداد

التكرار إلى 10

1قدار الزيادة بم

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Islam Islam Islam Islam Islam Islam Islam Islam Islam Islam

Ù 10 1 مرات بداية من القيمة Islam 10نالحظ هنا انه تم تكرار كلمة

:٩مثال ؟10 إلى 1اكتب برنامجا لطباعة قيمة العداد من

:وتكون نتائج الطباعة على الشاشة هكذا1 2 3 4 5 6 7 8 9 10

#include “ stdafx.h” #include “ iostream.h” main () { int a; for (a=1;a<=10;++a) cout<<a<<endl; return0; }

االبتدائيةaقيمة

النهائيةaقيمة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٠مثال ؟15 إلى 1اكتب برنامجا لطباعة األعداد الفردية من

فردي ة بداي ة بالقيم ة الن ه طل ب أع داد 1 ول يس 2ومن المالحظ أننا جعلنا قيم ة الزي ادة 15 وحتى 1

:والنتيجة كالتالي1 3 5 7 9 11 13 15

#include “ stdafx.h” #include “ iostream.h” main () { int a; for (a=1;a<=15;a=a+2) cout<<a<<endl; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

الصيغة العامة الثانيةFor ( initial-value; condition; increment ) { statement; }

:شاهد األمثلة التالية لنتعرف اكثر على الصيغة أعاله

:١١مثال

:والناتج سوف يكون التالي1 -1 -3

جملة أو اكثر

#include “ stdafx.h” #include “ iostream.h” main () { int x,y,z; y=-4; for(x=1;x>y;x=x-2) } z=x; cout<<x<<endl; { return0; }

اكثر من جملة بين Blockالقطعتين

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٢مثال

:والناتج كالتالي

14*

:١٣مثال

:والناتج

2 1 0

#include “ stdafx.h” #include “ iostream.h” main () { int a,b,c,x; a=6; b=1; c=3; for (x=11;(a*c)>(x*b);x--) { x=x+3; c=c-2; cout<<x<<”*”; } return0; }

القيمة االبتدائية

اكثر من جملة بين Blockالقطعتين

#include “ stdafx.h” #include “ iostream.h” main () { int a,c; a=1; c=3; for (a=c;c;) { c--; cout<<c<<endl; } return0; }

تنقص من قيمة C 1 قيمة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

for ) Multiple(Nestedحلقــات التكــرار المتداخلــة Loops

:تأخذ صيغة حلقات التكرار المتداخلة الشكل العام التاليFor (...)

For (...) For (...)

…………………………. ………………………….

Statements;

:فلو أخذنا حالة حلقتين متداخلتين فانهما تكتبان على الصورة التاليةFor(...)

For (...) Statements;

، جزءا مكررا مرتبطا بالحلقة الداخلية ) أو الجمل(وتكون في هذه الحالة الجملة ...والحلقة الخارجية تتكرر حسب أوامر الحلقة الخارجية وهكذا

تسمى الحلقة outerالخارجية

loop

تسمى الحلقة innerالداخلية

loop

ملة أو جمل تكرر جحسب أوامر الحلقتين

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:فإنها تكتب على الصورة التالية، وفي حالة الثالث حلقات المتداخلة

For (...) For (...)

For (...) Statement;

:١٤مثال

ع داد الحلق ة ، I م رات لك ل قيم ة م ن ق يم ٤الح ظ هن ا أن الحلق ة الداخلي ة تتك رر ق يم ف ان الحلق ة الداخلي ة 3تأخ ذ ، Iوبم ا أن ، >>coutوك ذلك جمل ة ، الخارجي ة

. مرة فقط12 فتتكر أما الحلقة الخارجية فتكرر نفسها بنفسها، مرة 12تتكرر

:والناتج1234246836912

الحلقة الخارجيةالحلقة الوسطي

جملة أو جمل تتكر حسب أوامر الحلقات الثالث

الحلقة الداخلية

#include “ stdafx.h” #include “ iostream.h” main () { int i,j; for (i=1;i<=3;++i) for (j=1;j<=4;++j) cout<<i*j; return0; }

ر رلحلقة الخارجية تتكا مرات3

4الحلقة الداخلية تتكرر أي Iمرات لكل قيمة من قيم

مرة12مجموع

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٥مثال

والناتج سيكون كبير لذلك سأعطيكم جواب الحل للسطر األول والسطر األخير وما .بينهما لكم

: 1612السطر األول : 203السطر األخير

#include “ stdafx.h” #include “ iostream.h” main () { int i,j; for (i=2;i<=20;i+=2) for (j=30;j>=3;j-=3) cout<<i<<j<<endl; return0; }

دها الحلقة الخارجية يتغير عدا بزيادة منظمة 20 و 2بين

2قدرها

الحلقة ا لداخلية يتغير عدادها بين -3 بزيادة منتظمة قدرها3 و 30

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

While & Doأسلوب التكرار باستعمال حلقة م ع ، for أس لوب آخ ر يماث ل أس لوب حلق ة whileتك رار باس تعمال حلق ة أس لوب ال

، ويزده ا ق وة ومرون ة ، ++Cوه و أس لوب يث رى لغ ة ، بع ض االختالف ات البس يطة :والشكل العام لهذا األسلوب

While (conditions) statements;

: هو األتيwhileومعنى حلقة التكرار في تم تك رار تنفي ذ الجمل ة أو ، ) trueوجواب ه (متحقق ا ) أو الش روط ( آي ما دام الشرط

وينتق ل تسلس ل تنفي ذ البرن امج إل ى الجمل ة الت ي تل ي حلق ة ، (statements)الجم ل while.

:واألمثلة التالية توضح ذلك

:١٦مثال

والناتج

: سوف يكون

1 2

شرط أو اكثر ينظم جملة يتم تنفيذها عملية التكرار

حسب الشرط conditions

#include “ stdafx.h” #include “ iostream.h” main () { int a; a=1; while (a<3) cout<<a++; return0; }

1الزيادة بمقدار بعد طباعة النتيجة

طالما الشرط

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٧مثال

والناتج

****

:١٨مثال

.. ثم تتوقف عملية التكرارy مع قيمة xطبعا سيتم التكرار حتى تتساوى قيمة 2--21--1

#include “ stdafx.h” #include “ iostream.h” main () { int a; a=1; do { cout<<”*”; a++; } while (a<=4) return0; }

افعل

الزيادة بمقدار 1القيمة

اقل أو aطالما 4يساوي القيمة ارجع التكرار

#include “ stdafx.h” #include “ iostream.h” main () { int x,y; x=2; y=-2; do { cout<<x<<”-“<<endl; x--; y++; } else cout<<”finish”; while(x!=y) return0; }

y ال تساوي xطالما تابع التكرار أو الدوران

قطعتين أو بلوك لوضع الجمل

بينهما

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١٩مثال+ وطالم ا أن القيم ة المدخل ة ، اكت ب برنامج ا يطل ب م ن المس تخدم إدخ ال قيم ة عددي ة

على سطر جديد؟*يطبع /الحـل

: والنتيجة ستكون10منا بإدخال الرقم طبعا ق

*

ع دد موج ب لك ن ح اول أن ت دخل ع دد س الب فل ن يطب ع ل ك ش ي لع دم 10الن الع دد وال ننسى أخ واني أنن ا وض عنا الجم ل أو الجمل ة الخاص ة بالطباع ة ب ين ، تحقق الشرط

الن ه وج د اكث ر م ن جمل ة ل ذلك يج ب وض ع القط ع لك ن عن د ع دم {} Blockالقط ع .فال يجوز وضعها) ١٢( اكثر من سطر أو جمله كمثال وجود

#include “ stdafx.h” #include “ iostream.h” main () { int a; cout<<”please enter a number”; cin>>a; while (a>=0) { cout<<”*”<<endl; cout<<” please enter a number”; cin>>a; } return0; }

ندخل الرقم 10وليكن

طالما أن الرقم المدخل اكبر أو

0يساوي

إذا تحقق الشرط اطبع

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Nested While Loops المتداخلة Whileحلقات فم ثال خ ذ حلقت ي التك رار ، المتداخل ة for المتداخل ة حلق ات Whileتش بة حلق ات

:المتداخلتين التاليتين :٢٠مثال

#include “ stdafx.h” #include “ iostream.h” main () { int i=j=1; while (i<=3) { while(j<=4) { cout<<”/n”<<i*j; ++j; } ++i; j=1; } return0; }

3ار حلقات تكر مرات

الحلقة الداخلية مرة12تتكرر

زيادة منتظمة في 1 بمقدار Iعداد

االبتدائية jإعادة تعريف قيمة jعند بداية حلقة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Breakجملة اإليقاف ه ي إيق اف بني ة أو حلق ة تك رار عن د Breakم ن االس م نس تطيع أن نالح ظ أن وظيف ة

وعن د تنفي ذها ي تم القف ز إل ى سلس لة الجم ل التالي ة للبني ة ، معين ة تحقق شرط أو ش روط أو ، أيض ا ف ي إيق اف حلق ة التك رار النه ائي Breakوتس تعمل ، أو حلق ة التك رار

:الخروج منها إلى الجمل التي تليها وكما في المثال التالي

:٢١مثال

10وطبعا سيقوم بتنفيذ البرنامج حتى العدد :لنتائجوا

12345678910

#include “ stdafx.h” #include “ iostream.h” main () { int i; for (i=1;i<100;++i) { cout<<i; if (i= =10) break; } return0; }

يوقف تنفيذ هذه الجملة حلقات التكرار عندما

i=10يصبح

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٢٢مثال

#include “ stdafx.h” #include “ iostream.h” main () { int number; for (number=1; number<=100;++ number) { if (number%2) // for odd values break; else if (number%4) break; else if (number%6) break; else cout<< number<<endl; } return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

continueجملة االستمرار

عل ى تج اوز تنفي ذ بقي ة الجم ل ف ي التك رار خ الل continueتعم ل جمل ة االس تمرار :الدورة الحالية واالنتقال إلى الدورة الثانية

:٢٣مثال

#include “ stdafx.h” #include “ iostream.h” main () { int x,n; do { cin>>x>>n; if (n<1) continue; cout<<x; --n; } while (n<1); return0; }

تعمل على تجاوز تنفيذ الجملتين التاليتين

وتبداء دورة جديدة إذا تحقق الشرط

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٢٤مثال

بدون 6 و4 و 2 ما عدا األرقام التي تقسم على 100 إلى 1تطبع جميع األرقام من :باق

:الناتج12 24 36 48 60 72 84 96

#include “ stdafx.h” #include “ iostream.h” main () { int number; for (number=1;number<=100;++number) { if (number%2) continue; else if (number%4) continue ; else if (number%6) continue; else cout<<number<<endl; } return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

exit()جملة الخروج

endوتش بة ، البرن امج ف ي مك ان من ه ) م ن جأو الخ رو ( تعمل هذه الدالة عل ى إيق اف عن دما ي تم الخ روج م ن البرن امج exit(0)وتك ون قيم ة الدال ة ص فرا ، غ ة بيس ك في ل

وتوق ف البرن امج عن د وج ود خط أ أو نح و exit(1)بنج اح وأال ف ان قيم ة الدال ة تك ون operating البرن امج تنفي ذه إل ى نظ ام التش غيل ويعي د، وف ي ه ذه الحال ة ، ذل ك

system. :٢٥مثال

:٢٣مثال

#include “ stdafx.h” #include “ iostream.h” main () { char ma; cin>>ma; if ( ma != ‘A’) exit(1); cout<<”\n”<<ma; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

gotoجملة االنتقال

ف ي غال ب األحي ان أال ، تح رص ، م ن المع روف أن معظ م لغ ات البنيوي ة الحديث ة أن ي تعلم برامج ه بطريق ة بنيوي ة ، م ن اج ل التأكي د عل ى المب رمج gotoتستعمل جملة structured دون ت دخل م ن المب رمج بقول ه ، والعملي ات ، ذاتية الم داخل والمخ ارج :

أو اذه ب م ن هن اك آي أن البرن امج ف ي ه ذه الحال ة يعتم د عل ى ، من هن ا gotoاذهب .نفسه

:٢٦مثال

حس ب 10في هذا الس ؤال يطل ب م ن المس تخدم إدخ ال قيم ة ف إذا كان ت القيم ة اق ل م ن .value is under 10الشرط فانه يعرض لك الرسالة ه يطب ع الع دد مباش رة م ن دون ال ذهاب للس طر فان 10أم ا إذا كان ت اكب ر م ن الع دد

.األخير لتحقق الشرط

#include “ stdafx.h” #include “ iostream.h” main () { int x; cin>>x; if (x<10) goto negative; negative: cout<<”value is under 10”<<endl; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

introductionمقدمة الت ي وردت ف ي ، أن ط رق التعام ل م ع أس ماء المتغي رات والثواب ت العددي ة والرمزي ة

، تعد صالحة للتعام ل م ع ع دد مح دود م ن ه ذه الثواب ت والمتغي رات ، الفصول السابقة وعن دما ، ف ي عملي ات اإلدخ ال واإلخ راج أو ف ي العملي ات الحس ابية والمنطقي ة س واء

فم ثال ل و أردن ا ، تص بح تل ك الط رق غي ر عملي ة ، يص بح ع دد المتغي رات كبي را ج دا فك م الحي ز المطل وب م ن ، x100إل ي .... -x2,x1 قيم ة للمتغي رات ةإدخ ال مائ

ت الحس ابية والمنطقي ة له ذه المتغي رات ؟ البرنامج لعملي ات اإلدخ ال واإلخ راج والعملي ا ، فأنن ا ن وفر مخزن ا خاص ا لك ل متغي ر نتعام ل مع ه : وم ن جه ة أخ رى ، هذا من جهة وم ن ث م الس تعمال قيمت ه ف ي ، ن ول ذلك لحف ظ قيمت ه ف ي مخ ز ، برن امج أثن اء تنفي ذ ال

س تحيل ب ل م ن الم ، ف ان م ن الص عوبة بمك ان ، ومن ناحية ثالث ة ، عمليات أخرى تالية الـخ...وثالثة أبعاد ، استعمال اسم المتغير العددي أو الرمزي كمصفوفة ذات بعدين

جاءت فكرة اس تعمال متغي ر جم اعي يض م تح ت اس مه ، لألسباب الثالثة الواردة أعاله

وي تم ترقمي ه ، subscripted variableع ددا م ن العناص ر يس مى ب المتغير الرقم ي وق د نس مية ، subscriptع بينهم ا قيم ة الع داد الم رقم يوض [ ]ب ين قوس ين م ربعين

فه و ، ويمكنن ا تش بيه المتغي ر الم رقم بقس م اله اتف لمؤسس ة م ا ، أحيان ا indexال دليل تنظم تحته عدد من األرقام الفرعي ة للم وظفين وك ل رق م م ن ه ذه األرق ام ، مقسم واحد

اآلن ، خ اص ف ي ال ذاكرة ول ه مخ زن ، مس تقل ومتمي ز ع ن األرق ام الفرعي ة األخ رى كم ا يمك ن تش بيه ، ان ه كغي ره م ن األرق ام الفرعي ة ت ابع لل رقم الع ام لمقس م المؤسس ة

لك ن يض م ع ددا كبي را م ن ، المتغي ر الم رقم ب الجيش ال ذي يعام ل كاس م متغي ر واح د ):من اليمين إلى اليسار:(فمثال العناصر التالية ، العناصر

A[n] ...a[2], a[1], a[0] [ ]aتابع للمتغير الجماعي

ف العنوان األول يك ون ، addressوكل عنصر من هذه العناص ر ل ه عن وان ف ي ال ذاكر .وهكذا... للعنصر األول والثاني للثاني والثالث للثالث

حج ز ، وغيره ا ++cف ي لغ ة ، أو المص فوفة ]الم رقم[ ويس تعمل المتغي ر الجم اعيفان ه ، فل و ك ان يتبع ه خمس ون عنص را ، اص ره جم اعي مس بق ف ي ال ذاكرة لجمي ع عن

.على األقل في الذاكرة ، مخزنا 50يحجز له

ه و اس تعمالها ف ي الترتي ب : م ن الفوائ د المهم ة للمتغي رات المرقم ة والمص فوفات وعملي ات ترتي ب األس ماء األبج دي ، التص اعدي والتن ازلي للعناص ر والق يم المختلف ة

المتغيرات المرقمة والمصفوفات Arrays and Matrices

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

وإيج اد معك وس المص فوفة ، ات ض رب المص فوفات وف ي عملي ، النص وص الرمزي ة .الـخ... وفي التحليل العددي ، وعملياتها األخرى

one-dimensional Arrayذو البعد الواحد ) المصفوفة ( المتغير المرقم ويمث ل (vector)المتغير المرقم ذو البعد الواحد ه و مص فوفة ذات بع د واح د أو متج ه

[a1 a2 ...a3]ي في الجبر على النحو األفق أو العمودي

A1 A2

: : :

a3

: الشكل العام التالي++cويأخذ المرقم المتغير في Type-specifier array-name[size];

ه و []aآي أن العنص ر األول م ن المص فوفة ، ويب دأ الع داد الم رقم ع ادة م ن الص فر a[0] والثاني a[1] ... ة التاليةوهكذا فمثال المصفوف:

Int a[20]; . موقعا لعشرين عنصرا من النوع الصحيح 20وقد حجز لها ، aاسمها

:والمصفوفة التالية

Char name[15]; يحجز لها خمسة عشر عنصرا من النوع الرمزي nameاسمها ، مصفوفة رمزية

.لها ...وهكـذا

- int –doubleمثل char

العدد من االسم الجماعي العناصر

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:١مثال ذي بعد واحد) مصفوفة ( رقم مثال على عملية إدخال ذاتي لقيم عناصر متغير م

aفي هذه الحالة يتم إدخال عشرين عنصرا من عناصر المصفوفة A[0]=1 عندما يكون I=0 A[1]=2 عندما يكون I=1

… … …

a[19]=20 عندما يكون I=19

#include “ stdafx.h” #include “ iostream.h” main () { int a[20]; int I; for (I=0;I<20;++I) a[I]=I+1; return0; }

عداد مرقم المصفوفة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٢مثال :وعمليات طباعة عناصر مصفوفة، وحساب ، مثال على عمليات إدخال

:وستكون قيم النتائج على النحو التالي0 0 1 1 2 4 3 9 4 16

#include “ stdafx.h” #include “ iostream.h” main () { int x[5], y[5]; int I; for (I=0;I<5;++I) { x[I]=I; y[I]=I*I; cout<<endl<<x[I]<<y[I]; } return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Arrayإعطاء قيمة أولية للمصفوفة ذات البعد الواحـد

ializationInit []gradeمثال على إدخال عدة عناصر من مصفوفة الدرجات

Int grade[5]={80,90,54,50,95}

[]nameومثال على إدخال قيم عناصر المصفوفة الرمزية Char name[4]=“nor”

مك ون م ن أربع ة عناص ر بينم ا ت م إعط اؤه ثالث ة []nameالح ظ أن المتغي ر الم رقم .عنصر الرابع بالنسبة إلى المعطيات الرمزية يكون خالياعناصر فقط والسبب أن ال

:٣مثال

:والناتج طبعا سيكون كالتالي40 60 50 70 80 90

#include “ stdafx.h” #include “ iostream.h” main () { int a[6]={40,60,50,70,80,90} int I; for(I=0;I<6;I++) cout<<a[I]<<endl; return0; }

تم إعطاء القيم من قبل المستخدم مسبقا هنا

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٤مثال م واد وه ذه 5ومع دل عالم ات الطال ب ف ي ، م بإيج اد مجم وع ق م بكتاب ة برن امج يق و

:العالمات كالتالي87,67,81,90,55

:والناتج سيكون كالتالي87 735

87ل المعد

735والمجموع

#include “ stdafx.h” #include “ iostream.h” int m,i; main () { int a[5]={87,67,81,90,55} int s=0; for(i=0;i<5;i++) s=s+m[a]; float avg=s/5; cout<<avg<<endl;<<s<<endl; return0; }

قيمة المعدل لجميع العالمات

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Addressingعنــوان عناصــر المصــفوفة فــي الــذاكرة

Array Elements in Memory يحت ل موقع ا م ن ال ذاكرة ، ذكرنا من قبل أن آي متغير أو عنصر من متغير ذاتي مرقم

ليك ون دل يال عل ى اس تعمال ه ذه ، يس تعمل ع ادة مؤش را لك ل متغي ر أو عنص ر والمث ال الت الي يوض ح ه ذه العملي ة بالنس بة ، عناص ر بس هولة ويس ر المتغي رات وال

.للمصفوفة ذات بعد واحدInt x[5];

م ع عناوينه ا بالش كل التوض يحي ، المعل ن عنه ا xيمك ن تمثي ل عناص ر المص فوفة )من اليسار إلى اليمين( التالي

األول الثاني الثالث الخامس الرابعX[4] X[3] X[2] X[1] X[0] 104 103 102 101 100

ف ان عن اوين ، 100 ف ي ال ذاكرة ه و x[0]إذا فرضنا أن عنوان موق ع العنص ر األول 104 103 102 101العناصر األخرى تكون على التوالي ورقم ه ، بالعالق ة ب ين عالم ة طال ب ، وعنوانه ، يمكن تشبيه العالقة بين قيمة العنصر

.ليس لها عالقة برقم مقعده الجامعي، إذ عالمته هي قيمة نشطه كعنصر ، الجامعي

عنوانه في الذاكرة

العنصر

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Dimensional Arrays-Twoالمصفوفة ذات البعدين

المص فوفة ذات البع د الواح د إال أن ، تش بة المص فوفة ذات البع دين ف ي طريق ة تعامله ا واألخ ر ع داد ، دليل ين أو م رقمين إح داهما ع داد للص فوف index2)( له ا ع دادين

:لألعمدة ويأخذ اإلعالن عن المصفوفة الشكل العام التاليType-specifier arraey_name [index 1][index 2];

:فمثال المصفوفة Int x[2][3];

وع دد األعم دة ، 2= أبعاده ا ه ي ع دد الص فوف intوهي مصفوفة ص حيحة العناص ر 3=

.د األعمدة وكذلك عد، يوضع بين قوسين وحده الحظ أن عدد الصفوف

اسم المصفوفة الدليل األول الدليل الثاني

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٥مثال

: عالمات3 طالب و 5شاهد هذا المثال الذي يستخدم

ال يختل ف عم ا ، وبالنس بة لعن اوين العناص ر المص فوفة متع ددة األبع اد ف ي ال ذاكرة ف ي المث ال الس ابق أن ، ولذلك ل و فرض نا ، ذكرنا بالنسبة للمصفوفات ذات البعد الواحد

حس ب ترتيبه ا : م ثال ف ان عن اوين العناص ر التالي ة 100 كان عنوان ه x[0,0]نصر الع 103-104-105 لعناص ر الص ف األول 100-101-102الم ذكور أع اله ه ي .لعناصر الصف الثاني

#include “ stdafx.h” #include “ iostream.h” main () { int m[5][3]; int I,j; for(I=0;I<5;I++) for(j=0;j>3;j++) cin>>m[I][j]; return0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Introductionمقدمة ذات كي ان ، م ات جمل ة أو مجموع ة جم ل أو تعلي : عل ى أنه ا ) االقت ران ( تعرف الدالة

س واء عملي ات إدخ ال أو إخ راج أو ، تق وم بعملي ة أو مجموع ة عملي ات ، خ اص أو ، آي أنه ا ج زء من ه ، وتحتل الدالة موقعا م ن البرن امج ، عمليات حسابية أو منطقية

.يتكون من مجموعة من الدوال ، ++cيمكن القول أن برنامج

:ومن فوائد الدوال التاليلمخزن ة ف ي ذاك رة الحاس ب عل ى اختص ار البرن امج إذ يكتف ى تس اعد ال دوال ا -١

.باستعادتها باسمها فقط لتقوم بالعمل المطلوبأو الت ي يكتبه ا المب رمج عل ى تالف ي ، تساعد الدوال المخزنة في مكتبة الحاسب -٢

.عمليات التكرار في خطوات البرنامج التي تتطلب عمال طويال وشاقا .سهيل عملية البرمجة نفسهاتساعد الدوال الجاهزة على ت -٣ .توفر مساحة من الذاكرة المطلوبة -٤ .اختصار عمليات زمن البرمجة وتنفيذ البرنامج بأسرع وقت ممكن -٥

: خذ المثال التالي++cوللتدليل على أهمية الدوال في برمجة

:لو أردنا كتابة خوارزمية لخطوات صنع كأس من الشاي فأننا نكتب ما يأتي .ية الشايضع الماء في غال -١ .سخن الماء حتى يغلى -٢ .أضف شايا إلى الماء -٣ .أضف سكرا إليه -٤ .أطفئ النار -٥ .صب شايا في كأس -٦

أن خط وات : اف رض اآلن أنن ا ن ود طل ب ك أس م ن الش اي م ن مقه ى مج اور

:الخوارزمية التي نحتاجها اآلن هي خطوه واحده فقط وهي .استدع كأس من الشاي -١

أو الت ي يجهزه ا ( ت ل و اس تعملنا ال دوال الج اهزة تخي ل اآلن ك م وفرن ا م ن الخط وا ب دال م ن خطواته ا التفص يلية وبخاص ة ف ي برن امج يتطل ب حس ابات ) المبرمج من قبل

.وعمليات كثيرة وكم يكون البرنامج سهال وواضحا وقتذاك

:وتأخذ الدالة الشكل العام التالي

الدوال Functions

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Type-specified function-name (formal parameters; { function body }

وق د ال تعتم د عل ى آي ، وق د ذكرن ا م ن قب ل أن الدال ة ق د تعتم د عل ى متغي ر أو اكث ر

س واء ك ان بينهم ا () يس تعمل بع د اس م الدال ة قوس ين ، وف ي ك ال الح التين ، متغي ر .متغيرات أم ال

:١مثال

:والناتجhello hello hello hello

زائي أننا في هذا الفصل ال دوال نالح ظ أن بداي ة ق راءة المت رجم للبرن امج طبعا للعلم أع

mainال تبدأ من أول البرنامج كالمعت اد ف القراءة تب دأ م ن األس فل آي أنه ا تب دا بالم اين ث م تبح ث م ا داخل ه وتب دا mainس واء ك ان ف ي الوس ط أو األس فل فأنه ا تق راء أوال ال ـ

ف ي األعل ى لتج د أن هن اك ()max1ف ي الدال ة ()max1بالبح ث ع ن معن ى الكلم ة .mainجملة طباعة وهكذا تتكرر حتى يتم تعريف ما بداخل الـ

#include “ stdafx.h” #include “ iostream.h” max1() { cout<<”hello”; } void main() { max1 (); max1(); max1(); max1(); }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

تطبيقات على الدوال :٢مثال

: وانظر للنتائجmainشاهد هذا البرنامج وتتبعه أوال بالـ

:لة القادمةأعزائي سأشرح النتائج قبل إظهارها للتسهيل عليكم في األمث :لنتعبر أن هناك ثالث كواكب

الرئيسيmainكواكب faxكوكب maxكوكب

لنش اهد م ا ب داخل نش اهد أن هن اك قيمت ين mainمن المعروف أننا س وف نب دا بكوك ب لكنه ال يعرفه هل ه ي أع داد حقيقي ة أم ص حيحه ل ذلك ي ذهب ف ي األعل ى y x نعدديتي

ث م بع د ذل ك يرج ع ، intنه ا أع داد ص حيحة ليبح ث عنه ا ف ي أول البرن امج ليج د أ في ذهب للبح ث عنه ا ف ي الكوك ب ()max ليش اهد عب ارة mainللكوك ب الرئيس ي

max طبع ا ليج د ب داخلها أن قيم ة x تس اوي x+y أي أن x=0+10 لتص بح قيم ة x=10 بع د ذل ك يخ رج م ن الكوك ب max ويرج ع للكوك ب الرئيس ي ليش اهد العب ارة fax() ف عليه ا بالكوك ب في ذهب للتع رfax() ويش اهد ب داخلها عب ارة max لي ذهب

: ويجمع من مرة أخرى فتصبح كالتاليmaxبذلك للكوكب X=10+10 وب ذلك تص بح قيم ة x=20 بع د ذل ك يرج ع للكوك ب fax ليش اهد عب ارة

max() فيذهب للكوكب maxويجمع مرة أخرى كالتالي : X=20+10 وبذلك تصبح قيمة x=30 : ليشاهد جملة الطباعة والناتج كالتاليmainجع للكوكب الرئيسي ثم بعدها ير

30 10

#include “ stdafx.h” #include “ iostream.h” int x,y; void max() { x=x+y; } void fax() { max(); max(); { void main() { y=10; x=0; max(); fax(); cout<<x<<y; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٣مثال

:والناتج سيكون كالتالي * * * * * * * *

#include “ stdafx.h” #include “ iostream.h” void x1() { cout<<”*”; } void x2() { cout<<”\t”; } void yaya() { x1(); x2(); x1(); } void kiki() { cout<<”\n”: } void main() { int I; for(I=0;I<=3;I++) { yaya(); kiki(); } }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٤مثالال رقم زوج ي أم قم بكتابة برنامج يقوم بقراءة ع دد ص حيح وم ن ث م طباع ة م ا إذا ك ان

فردي من خالل دالة أو اقتران؟

:والناتج سيكون.. 9طبعا والناتج سيكون حسبما أدخلت لندخل مثال القيمة ood

. عدد فردي وليس زوجي 9الن القيمة المدخلة

#include “ stdafx.h” #include “ iostream.h” int x; check() { if ((x%2)==0) cout<<”even”<<endl; else cout<<”odd”<<endl; } main() { cin>>x; check (); return0; }

اطبع إذا كان زوجي

اطبع إذا كان فردي

مثال9ادخل القيمة

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٥مثال

قم بكتابة برنامج يق وم باس تخراج اكب ر رق م م ا ب ين رقم ين م دخلين م ن قب ل المس تخدم ؟maxوذلك من خالل دالة اسمها

:والناتج طبعا سيكون20

. فقام بطباعته حسب الشرط 10 اكبر من العدد الذي أدخلنا 20الن العدد الذي أدخلنا

#include “ stdafx.h” #include “ iostream.h” int x,y; max() { if (x>y) cout<<x<<endl; else cout<<y<<endl; } main() { cin>>x>>y; max (); { return0; }

ادخل القيمتين ولتكن 20 و10القيمة

للمقارنة من األكبر بين القيمتين

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

Introductionمقدمة Buffered filwلف ات االنتقالي ة لألق راص ص ممت ه ذه ال دوال للتعام ل م ع الم

system كم ا ك ان مت وفرا ف ي لغ ة ، لمعالج ة النص وصC++ النظ ام األخ ر غي ر UNIX-like لنظ ام ي ونيكس لإلدخ ال واإلخ راج ة المش ابهunbufferedاالنتق الي

I/O ، وك ان النظ ام األخي ر يس تعمل للتعام ل م ع المعطي ات بنس ق النظ ام الثن ائيbinary system ، أال أن لجن ةC ف ي معه د المق اييس األمريك ي ال وطني للغ ات

ق ررت م ؤخرا االس تغناء ع ن النظ ام غي ر ANISI-C Committeeالبرمج ة بحي ث يص بح ، فأوج دت الب ديل ، االنتق الي م ن أنظم ة التعام ل م ع المعطي ات الثنائي ة

المعطي ات الثنائي ة وtextبمقدور دوال النظ ام االنتق الي التعام ل م ع ك ل م ن النص وص binary system أي أن آخ ر ص ورة . ف ي وق ت واح د(version) م ن C ، يتعام ل

.بنظام واحد فقط هو نظام الملفات االنتقالية أن نس تعمل مل ف ال دليل لإلدخ ال واإلخ راج ، ونحتاج عند التعامل مع دوال هذا النظ ام

stdio.hويلخص لنا الجدول التالي اشهر هذه الدوال :

وظيفتها اسم الدالةfopen() تفتح لك ملفا fclose() تغلق لك ملفا putc() وهي مثل ) رمزا ( لبنة ) تطبع ( تخرجchar getc() وهي مثل ، إلى الملف ) رمزا ( تدخل لبنةchar fseek() في الملف) نص( تبحث لك عن بعض الرموز fprintf() مثل وظيفةprintfلكن للملفات fscanf() مثل وظيفةscanfلكن للملفات feof() تعطي النتيجةtrueعند وصول نهاية الملف

ferror() تعطي النتيجةtrueعند حدوث خطأ rewind() ترجع الملف إلى بدايته

٥ -١الجدول

تقنية األقراص و دوال الملفات االنتقاليةdisk Files

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

fopen()دالة فتح الملف

:١مثال

نالحظ أننا قمنا في السطر األول أع اله بإنش اء موق ع للمل ف ف ي ذاك رة الحاس وب طبع ا f وبعدها نطلق المسمى مثال * باألحرف األبجدية الكبرى ثم بعد ذلك FILEنكتب

) تعط ي قيم ة ( وتع ود disk ف ي ق رص بعد ذلك نقوم بعم ل الدال ة الخ اص بف تح مل ف

. طبعاfبمؤشر الملف المعرف له وهو ثم نقوم بتحديد موقع الملف المراد إنشاءه ويجب التح ذير هن ا ان ه يج ب ع دم كتاب ة اس م

لتجنب ع دم ح دوث خل ل ومش اكل بالجه از م ثال نكت ب systemملف من ملفات النظام بع د كتاب ة الق رص \\ض ع العالمت ين وهو ملف نص ي ويج ب و matrix.txtكما أعاله

C بع د ذل ك نكت ب الرم ز ، فق ط \ وال يصح وضع عالمة واحدهw الس تحداث المل ف ويج ب كتاب ة fclose (f)الجدي د ث م بع د ذل ك ف ي الس طر األخي ر نق وم بإغالق ه بالدال ة

.هذه الدالة كي يصبح البرنامج صحيح

ل ك ش ي ق د تس تغرب م ا الفائ دة اآلن اذه ب اآلن قم بتنفي ذ البرن امج بع د ذل ك ل ن يظه ر )المسار أعاله( قمت بإنشاء الملف فيه ي وهو الذCعزيزي إلى القرص وشاهد الملف الجديد

#include “stdio.h” main() { FILE *f; F=fopen(“C:\\matrix.txt”,”w”); Fclose (f); return0; }

نكتب آي اسم للتخزين fبموقع الذاكرة مثال

) مساره( اسم الملف ونحدد موقعه Cفي القرص

الستحداث wالرمز نص جديد للكتابة

هذا هو الملف الجديد

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

: مؤخراANSIحسب ما قررته ، جدول األنماط

وظيفته رمز النمط

"r" لفتح ملف النص للقراءة "w" الستحدث ملف نص للكتابة "a" لإللحاق بملف نص "rb" لفتح ملف ثنائي القراءة "wb" الستحداث ملف ثنائي الكتابة "ab" لإللحاق بملف ثنائي "r+" لفتح ملف نص للقراءة أو الكتابة "w+" الستحداث نص للقراءة أو الكتابة "a+" لفتح ملف نص للقراءة أو الكتابة "r+b" تابةلفتح ملف ثنائي للقراءة أو الك "w+b" الستحداث ملف ثنائي للقراءة أو الكتابة "a+b" لفتح ملف ثنائي للقراءة أو الكتابة

٥ -٢الجدول

.نالحظ أن هذا الجدول يمكن استعماله لكل من ملفات النص والملفات الثنائية

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

fprintf()دالة الكتابة داخل الملف

:٢مثال

داخ ل المل ف ال ذي قمن ا بإنش ائه ف ي المث ال " ++welcome to c"ق م بكتاب ة ال نص ؟matrix وهو ملف (1)السابق

ل ة الخاص ة بالكتاب ة وه ي الدا ) fprintf(الح ظ عزي زي الق ارئ أنن ا قمن ا بوض ع الدال ة

اآلن نف ذ البرن امج وبع د تنفي ذ ارج ع ٥-١داخ ل الملف ات بإمكان ك الرج وع للج دول . قد كتبة بداخله++welcome to c وافتحه لتشاهد العبارة cللملف في القرص

#include “stdio.h” main() { FILE *f; f=fopen(“C:\\matrix.txt”,”w”); fprintf (f,”welcome to c++”); return 0; }

اظفنا هذا السطر الجديد للطباعة بداخل الملف

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

fclose()دالة إغالق الملف

وك ل ، ()fopenحن اه بالدال ة فتغل ق المل ف ال ذي فت ، ()fopenوتعم ل عك س الدال ة وف ي حال ة ع دم قيامن ا ب إغالق ، الملف ات المطلوب ة من ك إغالقه ا قب ل نهاي ة البرن امج

وات الف ، ومنه ا ض ياع بع ض المعطي ات ، المل ف ف ان ع ددا م ن المش كالت ق د تق ع .ووقوع أخطاء في البرنامج ، الملف

:٣مثال

#include “stdio.h” main() { FILE *f; f=fopen(“C:\\matrix.txt”,”w”); fprintf (f,”welcome to c++”); fclose (f) return 0; }

قمنا بإغالق الملف في هذا السطر كما تالحظ

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

getw() putw()الدالتان

باس تعمال ه اتين ال دالتين اإلض افيتين لتقوم ا بعمليت ي ++cتق وم معظ م مترجم ات وهات ان ال دالتان غي ر ، ق راءة وكتاب ة األع داد الص حيحة م ن وال ي ملف ات األق راص

وتعم ل هات ان ال دالتان ، ANSIم ن قب ل معه د المق اييس ال وطني األمريك ي معتم دين والف رق الوحي د انهم ا تتع امالن م ع ع دد ص حيح ()putc و ()getcتمام ا كال دالتين .بدال من رمزي

:٤مثال

في ملف القرص المشار إليه 1000العدد الصحيح ) طباعة( الدالة التالية تقوم بكتابة : fبمؤشر الملف

Putw (1000,f);

:٥مثال ف ي مل ف الق رص المش ار إلي ه بمؤش ر xالدالة التالية تقوم بكتابة قيمة المتغير الص حيح

:fالملف Putw (x,f);

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

:٦مثال

:fمن ملف مشار إليه بمؤشر الملف ، الدالة التالية تقوم بقراءة عدد صحيح

#include “stdio.h” main() { FILE *f; int x; x=getw (f); printf (“%d”,x); return 0; }

PDF created with FinePrint pdfFactory trial version www.pdffactory.com

النهاية

PDF created with FinePrint pdfFactory trial version www.pdffactory.com