Professional Documents
Culture Documents
C - تعلم أن تبرمج ب PDF
C - تعلم أن تبرمج ب PDF
1
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
المقدمة
الحمد هللا رب العالمٌن والصالة والسالم على أشرف األنبٌاء والمرسلٌن نبٌنا محمد وعلى آله
وصحبه أجمعٌن وبعد :
فها قد تم وهلل الحمد جمع الدورة التً ّ
نظمت فً شهر رمضان المبارك عام ألف وأربع مائة
وتسع وعشرٌن.
وقد ألقٌت الدورة فً منتدى عشاق البرمجة التابعة لجامعة اإلمام محمد بن سعود اإلسالمٌة :
http://www.imam1.com/vb/forumdisplay.php?f=102
رابط الدورة:
http://www.imam1.com/vb/showthread.php?t=45042
وقد تم تقسٌم هذا الكتاب إلى أربعة فصول وملحق خاص بحلول الواجبات والمشروع .
وأحب فً الختام أن أشكر والديّ اللذٌّن ساندانً على إنجاز هذا المشروع وكذالك أحب أن
أشكر أخً عبدهللا الذي ساندنً فً إعداد هذه الدورة ,وكذالك أخً فً اإلسالم الذي أحبه فً هللا
برقاوي جزاه هللا عنً كل خٌر حٌث أشرف على الدورة وقد أضاف إضافات كثٌرة فً
الدروس بل إن الفصل األخٌر هو الذي كتبه وقد نبه على الكثٌر من األخطاء وتعب فً إعداد
الدروس .
وكذالك أحب أن أشكر ك ّل من ساند فً إعداد هذه الدورة وكل من دخل الدورة وساهم فً
إنجاحها .وأسأل هللا سبحانه أن ٌنفع بهذا الكتاب اإلسالم والمسلمٌن.
كتبه
ذو الحجة
1429\12\4
2
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
مقدمة فً البرمجة
قبل البدء فً البرمجة علٌك أن تعرف أن البرمجة تعتمد على المنطق والمنطق فقط أي أن
2= 1+1فلٌس هناك مجال اخر ربما لن تفهم ذالك االن ولكن ضعه فً بالك حتى تبداء فً
كتابة البرامج .وكذالك أرجوا منك التمرس على كتابة البرامج ألن هذه الدورة لن تنفعك مالم
تقوم بنفع نفسك ,أعنً أن هذه الدورة ستعطٌك األساسٌات فقط ثم أنت ٌجب علٌك أن تبحر فً
عالم البرمجة فلن نشرح إال بعض الدوال األساسٌة.أتوقع األن أن جمٌعكم ٌقول (دع عنك
الفلسفة) إذن لندخل فً العمٌق وهٌا لنشرح كود البداٌة:
كود:
>#include<iostream
;using namespace std
)( int main
{//first code
cout<<"lutes ;"began student of imam university
;return 0
}
طٌب لنبدأ األن بسطر األول وهو استدعاء لمكتبة ) (iostroameوفٌها بعض الدوال وحتى
تفهم ذالك اصبر حتى نشرح دالة (cout) .أما عن ) (using name space stdفتستعمل
لتضمٌن دوال ) (iostreamثم ٌأتً بعد ذالك ) (int mainوهذا هو جسم البرنامج أي أن
الشغل والبرنامج ٌأتً بعد ذالك .
أما ما بعد هذه العالمة //فهو خاص للمبرمج حٌث أنه ٌضع شروحات البرنامج وشرح فوائد
الدوال وتأتً فائدتها إذا بداءة بكتابة بعض البرامج التً تحتوي على دوال كثٌرة فسوف تضٌع
إذا لم تضع هذه الشروحات .المهم هذا الذي فوق سًتكرر فً كل برنامج فأرٌد منك التركٌز
على الذي بعد mainفً هذا البرنامج استعملنا دالة واحدة وهً ) (coutوتستخدم لإلخراج.
)<<(coutطبعا هذه األسهم مهمة فهٌه تأتً مالزمة ل )(coutربما تسأل األن مافائدة
(cout) ,أقول لك فائدتها هو اخراج ماٌأتً بعد األسهم ٌعنً أن هذا البرنامج سوف ٌخرج
عبارة ) (lutes began student of imam universityومعنى العبارة :لنبداء طالب
وطالبات جامعة اإلمام .طبعا عالمة التنصٌص فائدتها إخراج ما هو داخل العالمة وسنأخذ
تفصٌل عن ذالك فً المدخالت والمخرجات .أما األن فإن بودي أن أعود إلى دالة
) (iostreamجرب أن تحذفها وانضر هل سٌعمل البرنامج أم ال طبعا البرنامج لن ٌعمل
وسٌعطٌك تنبٌه بأن دالة ) (coutغٌر معروفة
3
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
الكود العملٌة
* الضرب
/ القسمة
+ الجمع
- الطرح
% باقً القسمة
طبعا األولوٌة تأتً لما بداخل األقواس ثم الضرب والقسمة ثم الجمع والطرح أعتقد أن هذا
واضح لذا لن أقوم بشرحه.
المتغٌرات:
وهً عناصر تحتوي على قٌم ٌحددها المستخدم مثل المتغٌرات فً الرٌاضٌات.
طبعا هذه القٌم ٌحددها المبرمج هل هو عدد صحٌح أم عشري أم أنه حرف ,فلو فرضنا أنك
كتبت برنامج ٌحتوي على متغٌرٌن ولنفرض أنهما xو yوقد عرّ فت أن xو yهما متغٌران
صحٌحان وأعنً بصحٌحان أنهما الٌقبالن األعداد العشرٌة فلو أسند قٌمة ما مثل 5,8890إلى
المتغٌر xفإنه سٌأخذ الرقم 5وسٌتجاهل الباقً.
طبعا طرٌقة اإلعالن عن المتغٌرات هً كالتالً:
كود:
;Int x,y
وقد وضعت كلمة intلٌعلم البرنامج أن xو yعددان صحٌحان أما لو أردت أن اعرّ فها على
أنها عدد عشري فسوف أقوم بإستبدال كلمة intب floatأو ب doubleوهذا جدول ٌبٌن لك
أهم اإلعالنات للمتغٌرات:
فائدته اإلعالن
عدد صحٌح Int
عدد عشري Float
عدد عشري ولكنه ٌقبل األعداد الطوٌلة أي أن Double
األعداد الكبٌرة التً ال ٌتحملها ال float
4
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
بل تستطٌع أن تسند متغٌرات لمتغٌر ,مثل هذا المتغٌر الذي ٌحوي متغٌران وهو المتغٌر
sumالذي ٌحوي قٌمتٌن x +yوٌكون اإلعالن عنه بهذه الطرٌقة:
كود:
;Sum=x+y
طبعا لن أشرح مافوق ) (mainإلنه وأضح وسٌتكرر معنا ولنبدأ بما بعد ) (mainفً البداٌة
كما ترون عرفت أن هناك ثالث متغٌرات وهً ) (x,y,sumطبعا نفصل بٌن المتغٌرات
بفاصلة ثم قمت بإسناد قٌمة 5ل )(xوقٌمة 2ل ))yوأسند جمع ) (xو ) (yل ) )sumثم
أخرجت قٌمة ضرب xو yوبعد ذالك أخرجت قٌمة ) (sumطبعا كٌفٌة اإلخراج سنأخذه بعد
قلٌل فً المدخالت والمخرجات.
5
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
المدخالت والمخرجات:
المدخالت:
وهً دالة تستعمل إلدخال البٌانات وتكتب هكذا )>> (cinفكما ترا القوس معاكس لقوس
)<< (coutوتستطٌع أن تسند القٌم عبر هذه الدالة فكما رأٌتم فً درس المتغٌرات الذي أسند
القٌم للمتغٌرات هو المبرمج نفسه ولكن كٌف أجعل المستخدم هو الذي ٌسند القٌم ؟ .أقول لك
بعد أن تعرّ ف المتغٌر تضع بعدها دالة ) (cinوهذه هً الطرٌقة:
كود:
;Int x
Cin>>x:
ولكن لو كان لدٌنا أكثر من متغٌر فكٌف أجعل المستخدم ٌسند هذه القٌم؟ أقول استعمل نفس
الطرٌقة وضع بٌن متغٌر وأخر هذا السهم >> وانضر إلى هذا:
كود:
;Int x,y,z
;Cin>>x>>y>>z
6
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
;cout<<x<<endl
وتستطٌع أن تخرج جملة ما عبر وضعها بٌن عالمة التنصٌص مثل مثال كود البداٌة ومثل هذا
المثال وهو نفس مثال المتغٌرات ولكنه معدل طبعا هذا المثال سٌكون مثال لدرس المدخالت
والمخرجات كامال:
كود:
>#include<iostream
7
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;int x,y,sum
كود:
;" cout<<"enter tow number :
هنا طلب من المستخدم ادخال الرقمٌن المراد اجرا العملٌة علٌمة ونفصل بٌن الرقمٌن بعملٌة
الفراغ ) ( (spaceما ادري السبلٌنق صحٌح واال ال .....
كود:
;sum=x+y
كود:
;cout<<"the number = "<<x*y<<endl
كود:
;cout<<"the sum is : "<<sum<<endl
كود:
;)( getchar
;)( getchar
8
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;using namespace std
كود:
)( int main
كود:
{
كود:
;int x,y,sum
كود:
;" cout<<"enter tow number :
كود:
;cin>>x>>y
كود:
;sum=x+y
9
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
هنا تم جمع المتغٌرٌن المدخلٌن من المستخدم وحفظهمما (اسنادهما) الى المتغٌرsum .
كود:
;cout<<"the number = "<<x*y<<endl
كود:
;cout<<"the sum is : "<<sum<<endl
كود:
;)( getchar
;)( getchar
كود:
;return 0
}
10
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
قبل أن ابداء بدرس دالة الشرط أحب أن اضع هذا الجدول الذي ٌحوي على ادوات المقارنة:
كود:
;)If (statement
11
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
طبعا هذا المثال سوف ٌقارن بٌن قٌمة xو yوإذا كان قٌمة xأكبر من yفسوف ٌخرج قٌمة x
أما لو كان العكس فسوف ٌخرج من البرنامج ولكن ٌخرج شٌئا.
ولكن نحن النرٌد أن ٌخرج من البرنامج نرٌده مثال أن ٌحسب أكبر قٌمة فما العمل؟
أقول هناك دالة أخرى وهً عكس دالة ifوهً دالة ) (elseوعملها عكس عمل ) (ifفكأنك
تقول للمترجم (إذا لم ٌتحقق الشرط فاعمل كذا) وٌكتب الكود بهذه الطرٌقة
كود:
else
وانضر إلى هذا المثال وهو مثل المثال السابق ولكن قمنا بإضافة دالة ) (elseفأصبح البرنامج
ٌطبع أكبر قٌمة
كود:
>#include<iostream
12
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
بالنسبة للمقارنة ANDاألصل نستعمل معها الرمز && ....وكذلك المقارنة ORاألصل
نستعمل معها الرمز|| ....
أما إذا استعملنا الرمز & فهذا ٌرمز للعملٌة المنطقٌة AND ....مثل 4&5 :
وكذلك الرمز | فهو برمز للعملٌة المنطقٌة OR .....مثل.4|5 :
طبعا وظٌفة && وهو أن ٌتحقق البرنامج من تحقق الشرطٌن جمٌعا فإذا تحققا عمل بمقتضى
الشرط.
أما وظٌفة || هو التحقق من عمل أحد الشرطٌن فإذا تحقق إحداها عمل بقتضى الشرط.
وإلٌك هذا المثال وهو برنامج ٌطلب من المستخدم إدخال ثالثة ارقام ثم ٌقوم بطباعة أوسطها .
كود:
>#include<iostream
فكما ترون فً الدالة األولى للشرط قارنت بٌن xو yو zوطلبت من البرنامج أن ٌتحقق من x
هل هو أكبر من yوأصغر من zأو أصغر من yوأكبر من z .فإذا تحقق هذا الشرطٌن طبع
قٌمةx .
أما إذا لم ٌتحقق الشرط فسوف ٌنتقل لشرط الثانً والشرط الثانً نفس األول ولكن الفرق أنه
سٌطبع قٌمةy .
أما إذا لم ٌتحقق أي من الشرطٌن فسوف ٌقوم بطباعة قٌمةz .
وهذا مثال اخر على ادات الربط orوهو برنامج ٌطلب من المستخدم إدخال درجته ثم ٌطبع له
عبارة " "passإذا كانت درجته أكبر من 60أما إذا كانت أصغر من 60فسوف ٌطبع عبارة
""failأي راسب ,وإذا أدخل المستخدم درجة أكبر من 100أو أصغر من الصفر فسوف ٌطبع
عبارة " "wrong in putوتعنً (مدخل خاطئ).
كود:
>#include<iostream
;using namespace std
)( int main
13
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
{//program of dgree
;int mark
;" cout<<"enter mark :
;cin>>mark
)if (mark<0||mark>100
;cout<<"wrong number"<<endl
else
)if (mark>60
;cout<<"pass"<<endl
else
;cout<<"fial"<<endl
;)"system("pause
;return 0
}
كود:
;int mark
كود:
;" cout<<"enter mark :
14
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;cin>>mark
كود:
)if (mark<0||mark>100
داله شرطٌه ) (ifبقوم فٌها البرنامج بمقارنة العالمه إذا كانت اصغر من الصفر أو أكبر من
100راح ٌطبع الجمله التالٌه
كود:
;cout<<"wrong number"<<endl
كود:
else
تنفً عمل ٌ ifعنً إذا كانت العالمه المدخله لٌست أصغر من الصفر وال بأكبر من .100
كود:
)if (mark>60
;cout<<"pass"<<endl
else
;cout<<"fial"<<endl
هنا جملة ifشرطٌه اخرى تقارن هل العالمه المدخله أكبر من 60إذا كان الكالم هذا صحٌح
راح تطبع passوإال أي إذا لم ٌتحقق الشرط فسٌطبعfial.
15
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
الفصل الثانً
الحلقات التكرارٌة:
تعرٌفها:
الحلقات التكرارٌة اسم على مسمى فأنت تجعل البرنامج ٌكرر فعل ما حتى ٌنتهً الشرط الذي
وضعته.
دالةfor :
وهذه الدالة التستخدم إال بع ّداد ولها وظائف عدٌدة منها إدخال القٌم والبحث عن القٌم طبعا
سوف نستخدمها كثٌرا فً المصفوفات .
وطرٌقة كتابة الكود تكون بهذه الطرٌقة:
16
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
{)for(int i=0;i<=n;i++
األوامر البرمجية
}
قبل الشرح ٌجب أن تعلم أن فً لغة c++إذا وضعنا أمام المتغٌر ) (++فسٌزداد المتغٌر واحد,
أعنً لو كان المتغٌر ٌساوي 3ثم وضعنا أمام المتغٌر ) (++فسٌكون 4وإذا أردنا أن نزٌد
المتغٌر أكثر من واحد فنضع إشارة ) ) +nطبعا ) (nمعناه أي عدد ٌدخله المبرمج.
طبعا سأشرح معنى األشٌئا التً بٌن القوسٌن بعد هذا المثال.
وهو برنامج ٌطبع األعداد من 0إلى .10
كود:
>#include <iostream
;using namespace std
)(int main
{
)for(int i=0;i<=10;i++
{
;cout<<i<<endl
}
;)( getchar
;)( getchar
;return 0
}
فً البداٌة عرفنا متغٌر وهو iعلى أنه عدد صحٌح وساوٌناه بالصفر.
ثم وضعنا شرط الحلقة وهو أن تنتهً الحلقة بعد أن تكون iأصغرمن أو ٌساوي10 .
وبعدها وضعنا العداد.
األن البرنامج سوف ٌعمل بأمر البرمجً الذي ٌأتً بعد القوس المنبعج) {(
وقد وضعنا أمر إخراج لقٌمةi .
البرنامج سوف ٌخرج فً البداٌة قٌمة iوهً الصفر ثم سٌتزداد iواحد .
بعد ذالك سٌتأكد البرنامج هل iأضغر من أو ٌساوي 10؟
إذا لم ٌكن ٌساوي أو أصغر من 10سٌستمر البرنامج فً إخراج قٌمة iوسٌزداد iواحدا بعد
كل دورة.
طبعا هناك دالة مشهورة تستخدم فً دالة forوفً غٌرها من الدوال
وهً دالةbreak
وتستخدم للخروج من حلقة forقبل إنهاء الشرط,
وانضر إلى هذا المثال وهو نفس المثال السابق وقد عدلنا علٌه حٌث سٌخرج األعداد من الصفر
إلى الخمسة.
حٌث أنه إذا وصل إلى خمسة خرج من الحلقة:
كود:
>#include <iostream
;using namespace std
)(int main
17
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
{
)for(int i=0;i<=10;i++
{
;cout<<i<<endl
)if(i==5
;break
}
;)"system("pause
;return 0
}
هناك كلمة مهمة فً دوال التكرار وخاصة for ....وهً كلمة continue ....فائدة هذه
الكلمة أنها تتجاهل الحالة المحددة وتتابع دورة التكرارمثل:
كود:
{)for(int i=0;i<=10;i++
)if(i==5
;continue
;cout<<i<<endl
}
هنا فً هذا المثال :البرنامج سوف ٌطبع من 0إلى 10باستثناء رقم ...5ألنه إذا وصل إلى
رقم ٌ 5نفذ أمر continueالذي ٌقوم بتجاهل ما أسفله من أوامر أو كود وٌتابع دروة التكرار
.....
.األوامر البرمجية
}
18
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
بحٌث أن تضغط رقمswitch وإلٌك هذا المثال وهو نفس المثال السابق ولكن أضفنا إلٌه دالة
. للخروج من البرنامج3 ورقمava لحساب2 ورقمsum لحساب1
:كود
#include<iostream>
using namespace std;
int main ()
{
int x,y,z,d,s,sum,ava;
int optin;
while (optin != 3)
{
cout<<"enter youer choice :" <<endl<<"1- for
sum"<<endl
<<"2- for ava"<<endl<<"3- forqout"<<endl;
cin>>optin;
switch (optin)
{
if (optin==1)
case 1://sum
20
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
;cin>>y
;cout<<"enter mumber3 :"<<endl
;cin>>z
;cout<<"enter mumber4 :"<<endl
;cin>>d
;cout<<"enter mumber5 :"<<endl
;cin>>s
"cout<<"the ava is :
;<<(x+y+z+d+s)/5<<endl
;break
}
}
;)"system("puase
;return 0
}
طبعا سأشرح هذا المثال ولكن قبل ذالك أظنكم أنكم قد الحظتم وجود دالة breakوهً مهمة
فً دالة التبدٌل إلنك بهذه دالة توقف عمل دالة التبدٌل.
كما ترا عرفنا متغٌر وهو ) (optinومعناه الخٌار (طبعا هناك خطاء فً اإلمالء).
ثم استخدمنا دالة whileلنقول للبرنامج مادام optinال ٌساوي 3فاستمر فً البرنامج ثم طلبنا
من المستخدم إدخال خٌاره.
بعد ذالك وضعنا دالة switchلنبدل المتغٌر optin .
وهنا بٌت القصٌد قلنا للبرنامج إذا كان optinتساوي 1فاحسب لنا sumبعد ذالك قمنا
بتبدٌل.
أي أننا قلنا للبرنامج فً حالة أن ال ٌoptinساوي 2فاحسب لنا الava .
طٌب هل أستطٌع أن أكتب البرنامج من دون استخدام switch؟
طبعا تستطٌع بإستخدام دوال الشرط ولكن تخٌل معً لو أن لدٌك عشر اختٌارات ماذا ستفعل؟!
هل تقوم بوضع عشر دوال شرطٌة أم تقوم بفعل ذالك عبر دالة التبدٌل؟
تنبٌه بسٌط إلى أهمٌة أمر breakفً جمٌع حاالت دالة switch ....فإذا لم تكتب هذا األمر
فإن البرنامج ٌنفذ الحالة المطلوبة وٌنفذ أٌضا الحاالت التً أسفلها حتى نهاٌة دالة switch .....
كود:
;int we
;cin >> we
)switch(we
{
case 1:
;"cout<<"first
;break
case 2:
;"cout << "second
21
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
break;
default:
cout << "wrong";
break;
}
وهذا مثال آخرdefault ... هنا تنفذ حالة... مثال3 فإذا أدخل المستخدم فً هذا المثال رقم
بسٌط لن أقوم بشرحه أعتقد أنه واضح
:كود
#include <iostream>
using namespace std;
int main(){
int mark;
cin>>mark;
if(mark < 0 || mark > 100)
cout << " bad input \n";
else {
int markdiv10 = mark / 10 ;
switch (markdiv10) {
case 10:
case 9 : cout << "A";
break;
case 8 : cout << "B";
break;
case 7 : cout << "C";
break;
case 6 : cout << "D";
break;
default : cout << "F";
}
}
getchar ();
getchar ();
return 0;
22
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
-4للخروج من البرنامج.
لن ٌكون فً هذا الدرس سؤال اختٌاري ولكن حل ماتستطٌع أن تحله وأرسله لً.
وأسأل هللا لً ولكم التوفٌق فً الدنٌا واآلخرة.
كود:
;int x,y,z,d,s,sum,ava
;int optin
كود:
{)while (optin != -1
23
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;sum=x+y+z+d+s
24
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;int x,y,z,d,s,sum,ava
int optin
;
كود:
{)while (optin != -1
25
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;ava=sum/5
كود:
;)"system("puase
};return 0
الفصل الثالث
الدوال function
فً الحقٌقة احترت كٌف اعرِّ ف الدوال .ولكن ماٌجب أن تعرفه أن هذا الفصل سٌكون نقطة
تحول لحٌاتك البرمجٌة.
أستطٌع أن أقول أن الدوال هً برامج وسط برنامج.
ال أتوقع منك أن تفهم التعرٌف اآلن ولكن احفظ ذلك فإنه سٌتضح لك قرٌبا .
26
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
ٌجب أن تعلم أن هناك نوعان من الدوال دوال ترجع بقٌمة ودوال ال ترجع بقٌمة .سنأخذ كل
واحدة منهما على حدة.
ولكن قبل ذالك من المهم أن تعلم أن الدوال نكتبها خارج ال(main) .
تعلم أن األوامر البرمجٌة تكتب عادة داخل mainولكن فً هذا الفصل سنتعلم كتابته خارج
mainثم سنستدعٌه من داخل الmain .
أوال:الدوال التً ترجع بقٌمة:
وٌتم التعرٌف عنها باإلعالنات المعروفة ) …(int, float,charوإلٌك الطرٌقة لكتابة
الدالة:
كود:
)( int Name
طبعا كما ترى أعل ّنا عن دالة تر ِجع عدداً صحٌحا ً و nameأقصد به اسم الدالة التً ٌسمٌها
المبرمج.
مابٌن القوسٌن هً قٌم (متغٌرات) ٌضعها المبرمج.
وهً القٌم التً أٌضا تستقبلها الدالة.
وإلٌك طرٌقة اإلستدعاء:
كود:
)(Name
;int s= x+y
;return s
}
27
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
سنركز األن على دالة الجمع ثم سنعرج على دالة mainلشرح طرٌقة اإلستدعاء.
كود:
)int sum(int x,int y
{
فكما ترا أعل ّنا عن دالة تر ِجع قٌمة صحٌحة ثم سمٌنا هذه الدالة ب(sum ).
وعرفنا بٌن القوسٌن متغٌرٌن من نوع صحٌح (طبعا ما بٌن القوسٌن هً القٌم التً ستستقبلها
الدالة.
بعد ذالك قمنا بتعرٌف متغٌر آخر صحٌح وأسندنا له جمع xوy .
ثم قمنا بإرجاع قٌمة sعبر األمر البرمجً(return) .
األن لنذهب إلى الدالة الرئٌسٌة ) (mainلندرس طرٌقة اإلستدعاء:
كود:
;)"system("PAUSE
};return 0
كما ترى فً البداٌة عرفنا متغٌرٌن من نوع صحٌح وأسمٌناه xو yوال ٌشترط أن نسمٌه بنفس
أسماء المتغٌرات التً فً دالة الجمع.
وأتوقع أنك تعرف الباقً لذا سأقوم بشرح طرٌقة اإلستدعاء
كود:
)sum(x,y
طبعا كما قلنا سابقا طرٌقة اإلستدعاء تكون بذكر اسم الدالة ووضع القٌم التً ترٌد أن ترسلها
بٌن القوسٌن.
هنا سٌتم إرسال قٌمة xالتً ٌضعها المستخدم إلى دالة sumوسٌتم إسنادها إلى المتغٌر xفً
تلك الدالة ونفس الشئ مع ال(y).
بعد ذالك ستقوم دالة ال sumبعملها وإرجاع قٌمةz .
طٌب ماذا لو قمت بتغٌر طفٌف فً اإلستدعاء فأصبح بهذا الشكل:
كود:
)sum(y,x
28
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
الذي سوف ٌحصل هو أن ال yفً دالة ال mainستسند إلى ال xفً دالة sumوال xفً دالة
ال mainستسند إلى ال yفً دالةsum .
هذا مثال اخر فٌه دالتان دالة sumودالةava :
كود:
>#include <iostream
;using namespace std
)int sum(int x,int y
{
( إذا كان فردي) طبعا البرنامج ال ٌرجع قٌمة لذالك سٌكونodd) (إذا كان زوجً وeven)
void :من نوع
:كود
#include<iostream>
using namespace std;
void math(int number)
{
if(number%2==0)
cout<<"even";
else
cout<<"odd";
}
int main()
{
int number;
cout<<"enter number:";
cin>>number;
math(number);
getchar ();
getchar ();
return 0;
}
إلىmain فكما ترى طرٌقة اإلستدعاء سهلة مجرد كتابة اسم الدالة ووضع القٌم المرسلة من ال
.بٌن قوسٌنmath ال
طبعا طرٌقة القوسٌن هذه أظن أنها معقدة قلٌال لذا سأعدل على البرنامج السابق (حتً ٌتضح لك
: وبذالك لن نضع قٌم بٌن قوسٌنmath فائدة القوسٌن أكثر )وسأضع إدخال القٌم داخل دالة
:كود
#include<iostream>
using namespace std;
void math()
{
int number;
cout<<"enter number:";
cin>>number;
if(number%2==0)
cout<<"even";
else
cout<<"odd";}
int main()
{
math();
getchar ();
getchar ();
return 0;
}
30
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
فكما ترى لم نضع قٌم بٌن القوسٌن وذالك ألننا لن نرسل قٌم من ال mainإلى الmath .
فً الدوال :األمر ٌ returnنهً عمل الدالة فمثال فً الكود التالً:
كود:
)int sum (int n1 , int n2
{
;int sum = n1+n2
;return sum
;"cout << "END
}
إذا استدعٌنا الدالة فً الـ mainفلن تطبع النص " "ENDألن الدالة تنتهً عند أمر return
....
كود:
)void sum (int n1 , int n2
{
;int sum = n1+n2
;cou << sum
;return
;"cout << "END
}
هنا الدالة ستطبع المجموع ثم تنتهً عند أمر return ....لكن الحظ هنا أمر returnكتبناه
بمفرده ألن الدالة voidفهً ال ترجع أي قٌمة...
أرجوا أن ٌكون الشرح واضح.
إخوانً وأخواتً هذا الفصل فً الحقٌقة كبٌر جدا فٌه تفاصٌل ومعلومات كثٌىرة لم أذكرها
(أعنً هناك طرٌقة أخرى لكتابة الدوال وشئ من هذا القبٌل(....
ولكن ماوضعته هنا هو مجرد األساس واألساس فقط.
)(int main
{
;return 0
}
}
32
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
;int x, number = 1
كود:
;" cout << "Enter integer:
كود:
)if (x > 0
{
)while (x > 0
{
;number *= x
;x--
}
اذا كانت القٌمة المدخلة عدد موجب سندخل فً الحلقة whileوسٌقوم البرنامج بالتحقق من
قٌمة xاذا كانت موجبة فً كل مرة تدور فٌها الحلقة
والمعادلة المكتوبة تعنً ان نضرب ال numberاللً هو فً االساس = 1نضربه فً xاللتً
ٌحصل لها تناقص فً كل مره بواحد)(x--
وراح ٌتوقف الدوران فً الحلقة اذا كانت قٌمه xسالبة تبعا للشرط)while (x > 0
كود:
;cout << "number: " << number
الفصل الرابع
المصفوفات
هً مجموعة متغٌرات مترابطة مع بعضها.
أعنً بهذا التعرٌف تذكرون الواجبات والتمارٌن التً أخذناها من قبل بعضها كانت تحوي على
أكثر من متغٌر ونعمل علٌها نفس الحسابات .اآلن ال حاجة لنا لنعرّ ف أكثر من متغٌر نستطٌع
أن نضع مصفوفة تحوي على هذه المتغٌرات ثم نتعامل معها كمتغٌر واحد.
أعنً تخٌل أنه قد طلب منك كتابة برنامج خاص لمدرسة ما وهذا البرنامج ٌطلب من المستخدم
إدخال درجة الطالب ورقمه واسمه ثم ٌقوم البرنامج بحفظ اسم الطالب ورقمه ودرجته ,وهناك
مائة طالب هل ستقوم بإعالن عن مائة متغٌر؟! أم ستكتفً بمصفوفة واحدة ٌحوي على مائة
متغٌر.
طبعا لن أكتب البرنامج اآلن سأكتبه بعد أن نأخذ طرٌقة كتابة األكواد.
اآلن سأشرح طرٌقة حفظ المتغٌرات:
ٌجب أن تعلم أن الطرٌقة المتبعة فً حفظ المتغٌرات تكون بحفظ المتغٌر فً خانة نعٌنه وتعطى
فً هذه الخانه عنوان للمتغٌر(انضر للجدول اآلتً):
34
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
كود:
Int ;]ar[n
كما ترى اإلعالن عن المصفوفة ٌكون مثل اإلعالن عن متغٌر ولكن اإلختالف ٌكون بهذه
األسهم( ] [nمعنى حرف ال nهو أي عدد ٌدخله المبرمج) فائدة هذه األقواس هً تحدٌد حجم
المصفوفة.
وٌقصد بالحجم هو عدد العناصر المدخلة من قبل المستخدم والمبرمج.
طٌب كٌف ٌتم إسناد القٌم للعناصر؟
تتم بهذه الطرٌقة:
كود:
;}Int ar[5]={1,2,3,4,5
فسوف ٌخرج قٌمة ( ,)1ولو وضغت مكان الصفر ( )3فسوف ٌخرج البرنامج قٌمة 4وهكذا.
طبعا هناك أكثر من طرٌقة إلسناد القٌم للعناصر.
أستطٌع مثال أن أسند القٌم للعنصر الذي أرٌده بهذا الكود:
كود:
;}ar[3]={4
35
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
;)"system("pause
;return 0
}
كما ترى فً هذا الكود عرّ فنا على مصفوفة تقبل الحروف ووضعنا كلمة ) (heloولكن قمنا
ٌتقسٌم األحرف كل حرف فً خانة.
وهذا امر متعب فتخٌل أنك تطلب من المستخدم إدخال اسمه الرباعً فهل سٌقوم ٌتقسٌم
األحرف؟
فً الحقٌقة هناك دالة ترٌحك من عنى التقسٌم وهذه الدالة
هً دالة الstring.
دالة ال stringلٌست ضمن دوال ال iostreamلذالك وجب استدعائها.
وانضر إلى هذا البرنامج وهو البرنامج الذي أخبرتكم عنه فً أول الفصل.
طبعا لن أجعله مائة طالب سأكتفً بعشر طالب.
وهذا البرنامج ٌحتوي على ثالث دوال.
دالة لكتابة اسم الطالب ورقمه وإعطاء درجته ,والدالة الثانٌة للبحث عن رقم الطالب وإظهار
درجته.
أما الدالة األخٌره فتطبع أرقام الطالب حٌث ٌطبع أرقام جمٌع الطالب واسمائهم ودرجاتهم .
أما إذا كان رقم الطالب صفر فهذا ٌعنً أن الطالب لم ٌسجل فً النضام.
كود:
>#include<iostream
>#include<string
;using namespace std
36
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
37
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
;)serch(id,name,mark
;break
case 3:
;)print(id,name,mark
;break
}
}
;)"system("pause
;return 0
}
من خصائص المصفوفة من نوع intأو doubleأو float :أنك إذا أسندت قٌمة إلى أول
عنصر تلقائٌا ٌسند 0إلى العناصر األخرى ....فبدال من أن تكتب:
;}int id[10]={0,0,0,0,0,0,0,0,0,0
تكتفً بكتابة:
;}int id[10] = {0
وستسند إلى باقً العناصر ....0
كما ترى لم نحتج إلى عشر متغٌرات بل مصفوفة واحدة ألرقام الطالب وهذا ماعنٌته فً أول
الفصل.وهذا مثال على المصفوفات والسالسل النصٌّة وسٌفٌدك كثٌرا فً المشروع .
أرجوا أن ٌكون الشرح واضح.
لن أضع واجب فً هذا الفصل بل سأضع مشروع بعد أن ٌضع أخوي برقاوي درس الكالس .
لذا ارجوا إن كان هناك سؤال ما أو اقتراح أرجوا أن تطرحه بال تردد.
وأخٌرا أحب أن أشكر أخوي برقاوي الذي ساندنً وساعدنً فً هذه الدورة والذي لو امتدحته
إلى غدا فلن أوفٌه حقه.
ولكنً أسأل هللا أن ٌجزٌه عنا كل خٌر .وكذالك أرجوا منكم أن تدعوا له ولً ولجمٌع
المشاركٌن بالخٌر والصالح والتوفٌق لنا ولوالدٌنا.
38
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
أوال تكتب كلمة classثم تكتب اسم الكالس ثم تفتح قوس منبعج لبداٌة الكالس (}) وفً نهاٌة
الكالس قوس منبعج مع فاصلة منقوطة){;(
مثال:
كود:
class person
{
;}
كود:
class person
{
public:
;int age
;int phone
;string name
)(void display
{
;cout<<"name : "<<name<<endl
;cout<<"age : "<<age<<endl
;cout<<"phone : "<<phone<<endl
}
;}
:كود
#include <iostream>
#include <string>
using namespace std;
class person
{
public:
int age;
int phone;
string name;
void display()
{
cout<<"name : "<<name<<endl;
cout<<"age : "<<age<<endl;
cout<<"phone : "<<phone<<endl;
}
};
int main()
{
person Barqawee;
Barqawee.name = "Barqawee";
Barqawee.age = 23;
Barqawee.phone = 0555555555;
Barqawee.display();
system("pause");
return 0;
}
Barqawee ... وسمٌتهperson أوال عرفت كائن لكالسmain فً دالة الـ
ثم أسندت قٌم لمتغٌرات الكالس مثل أي متغٌرات أخرى لكن ٌكون استدعائها عن طرٌق الكائن
Barqawee ....
display ...ثم استدعٌت دالة
==========================================
.... الخاص: ومعناهprivate اآلن سنرى النوع الثانً من التصارٌح لمحتوٌات الكالس وهو
private : مع تصرٌحperson نرى اآلن كالس
:كود
class person
{
private:
40
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
;int age
;int phone
;string name
public :
)(void display
{
;cout<<"name : "<<name<<endl
;cout<<"age : "<<age<<endl
;cout<<"phone : "<<phone<<endl
}
;}
أصبحت اآلن المتغٌرات الثالث خاصة بالكالس فقط وممنوع استدعائها خارج الكالس ...فمثال
لو كتبنا الـ mainمثل المثال السابق:
كود:
)(int main
{
;person Barqawee
;"Barqawee.name = "Barqawee
;Barqawee.age = 23
;Barqawee.phone = 0555555555
;)(Barqawee.display
;)"system("pause
;return 0
}
كود:
;"Barqawee.name = "Barqawee
;Barqawee.age = 23
;Barqawee.phone = 0555555555
كود:
class person
{
private:
41
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
int age;
int phone;
string name;
public :
void setName(string n)
{
name = n;
}
string getName()
{
return name;
}
void setAge(int g)
{
age = g;
}
int getAge()
{
return age;
}
void setPhone(int p)
{
phone = p;
}
int getPhone()
{
return phone;
}
void display()
{
cout<<"name : "<<name<<endl;
cout<<"age : "<<age<<endl;
cout<<"phone : "<<phone<<endl;
}
};
:هكذاmain فتصبح الـ..... اآلن نقدر نسند قٌم إلى متغٌرات الكالس وأٌضا نستدعٌها
:كود
42
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
int main()
{
person Barqawee;
Barqawee.setName("Barqawee");
Barqawee.setAge(23);
Barqawee.setPhone (0555555555);
Barqawee.display();
system("pause");
return 0;
}
: مثال... أٌضا ممكن نستدعً أحد قٌم الكالس عن طرٌق أحد الدوال التً أنشئناها
:كود
int MyAge = Barqawee.getAge();
===============================
:كود
class person
{
private:
int age;
int phone;
string name;
public :
person ()
{
age = 0;
phone = 0;
name = "";
cout << "person has been built";
}
void setName(string n)
{
name = n;
}
43
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
)(string getName
{
;return name
}
)(int getAge
{
;return age
}
)(int getPhone
{
;return phone
}
)(void display
{
;cout<<"name : "<<name<<endl
;cout<<"age : "<<age<<endl
;cout<<"phone : "<<phone<<endl
}
;}
اآلن أول ما تعرف كائن لهذا الكالس فً الـ mainوتطبق البرنامج تحصل إن دالة البناء تطبق
تلقائٌا مع تعرٌف الكائن....
===================
هذه أساسٌات الكالس ....أرجوا أن ٌنفع هللا بها وأن ٌكون الدرس واضح....
وهناك أشٌاء أخرى مثل staticو فصل الكالس فً ملفٌن و الدالة الهادمةdestructor
وغٌرها ....إذا ودكم أطرحها ما عندي مانع....
=================
=========================
ملحق
حل الواجبات:
الفصل األول
>#include <iostream
{
cout<<"Enter 5 numbers\n";
cin>>x>>y>>z>>s>>k ;
Sum=x+y+z+s+k ;
Average=Sum/5 ;
cout<<" The sum is = " << Sum <<endl;
cout<<" The average is = " << Average <<endl ;
getchar () ;
getchar () ;
return 0 ;}
:2ج
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main(){
int number;
cout<<"pleas enter 5 digits number: ";
cin>>number;
cout<<number/10000<<endl;
cout<<(number%10000)/1000<<endl;
cout <<(number%1000)/100<<endl;
cout<<(number%100)/10<<endl;
cout<<(number%10)<<endl;
system("pause");
system("pause");
return 0;}
#include<iostream>
using namespace std;
int main()
{
int mark;
46
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
cin>>mark;
if(mark<0||mark>100)
cout<<"wrong mark"<<endl;
if(mark>90)
cout<<"a"<<endl;
if(mark>80)
cout<<"b"<<endl;
if(mark>70)
cout<<"c"<<endl;
if(mark>60)
cout<<"d"<<endl;
else
cout<<"e"<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
int num1,num2,num3,largest,smallest;
cin>>num1>>num2>>num3;
largest=num1;
smallest=num1;
if(num1>largest)
largest=num1;
if(num2>largest)
largest=num2;
if(num3>largest)
largest=num3;
47
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
if(num1<smallest)
smallest=num1;
if(num2<smallest)
smallest=num2;
if(num3<smallest)
smallest=num3;
#include<iostream>
int main()
{
int number ;
cout << "please enter number:" << endl ;
cin >> number ;
if ( number%2==0 )
cout << "the number is even" << endl ;
else
cout <<"the number is odd" << endl ;
system ("pause");
return 0 ;
ًالفصل الثان
48
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
1ج
#include<iostream>
using namespace std;
int main()
{
int num;
int largest=0;
for(int i=0;i<=10;i++)
{
if(num>largest)
largest=num;}
cout<<"the largest is:"<<largest<<endl;
system("pause");
return 0;}
#include <iostream>
using namespace std;
int main()
{
int option,choois;
float salary,n,h,w;
while(option!=4)
{
cout<<"Enter your choois : 1-For calculating the
salaries of staff weekly. 2-For calculating the salaries
of staff piecework. 3-For calculating the salaries of
other type of staff. 4-Out of the program:- ";
cin>>choois;
switch(choois)
{
case 1:
cout<<"Enter salaries :- ";
49
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
cin>>salary;
cout<<"salaries =
"<<salary<<endl;
break;
case 2:
cout<<"How Bit Rate :- ";
cin>>n;
cout<<(n/100)*5.7<<endl;
break;
case 3:
cout<<"How many hours you are
working :- ";
cin>>h;
if(h<=10)
w=(h*20)+250;
else
w=(h*40)+250;
cout<<w<<endl;
break;
case 4:
cout<<"exit\n";
break;
default :
cout<<" wrong\n";
}
cin>>option;
system("PAUSE");
return 0;}
50
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
الفصل الثالث
#include<iostream>
using namespace std;
int main()
{
float x,y;
int option;
cout<<"enter 2 numbers:\n"<<endl;
cin>>x>>y;
switch(option){
case 1:{
cout<<sum(x,y)<<"\n";
break;}
case 2:{
cout<<subtract(x,y)<<"\n";
break;}
case 3:{
51
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
cout<<multiple(x,y)<<"\n";
break;}
case
4:{
cout<<divide(x,y)<<"\n";
break;}
default :
cout<<"error"<<endl;}
system ("pause");
return 0;
}cout<<"error"<<endl;}
system ("pause");
return 0;}
52
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
المشروع
include<iostream>
#include<string>
using namespace std;
void Reservation (int seat[10], string name[80] ,int
a)//Reservation
{
int clas;
cin>> a;
seat[a]=1;
cout<<"enter youer name:";
cin>>name[a];
}
53
ملتقى طالب و طالبات جامعة اإلمام محمد بن سعود اإلسالمٌة
int
seat[11]={0,0,0,0,0,0,0,0,0,0};
int a,option;
while (option != 4){
cout<<endl<<"1-Make Reservation"<<endl
<<"2-Cancel Reservation"<<endl
<<"3-Print Passengers list"<<endl
<<"4-qouet"<<endl;
cin>>option;
switch (option){
if (option==1)
case 1:
Reservation(seat,name,a);
break ;
case 3:
print(seat,name,a);
break;
case 2:
cancel(seat,name,a);
}}
system("pause");
return 0;}
54