THE LOVER
22-Aug-2006, 12:57 PM
بسم الله الرحمن الرحيم
والصلاة والسلام على أشرف المرسلين محمد ابن عبدالله الصادق الأمين و على أله و من اتبعه الى يوم الدين
أما بعد . . .
فسوف أقدم لكم اليوم درس تعليم لغة c++ بالطريقة الإحترافية و لن أطيل عليكم الشرح بل سوف أترككم مع الشرح . . .
جميع الحقوق محفوظة 2006
THE DEATH GROUP
THE LOVER
Arabic Document For C++
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
######
## ##
##
### _|_ _|_
### | |
##
## ##
####### Written by THE LOVER [ 22/7/2006 ]
~~~~~~~~~~~~~~~~~~~~~~~~
YAHOO Messanger : ALSANJAK1@YAHOO.Com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://deathin2005.tripod.com
~~~~~~~~~~~~~~~~~~~~~~
• السي ++ هي ناتج تطوير لغه سي ، بعد قراءة هذا المستند تكون قادر على كتابه برامج كامله و
• نافعه في لغه سي ++ ، ولحسن حظك فإن أكثر نظم التشغيل يمكن كتابه فيها شفرات بهذه اللغه ، مثلا
• ستكون قادر على البرمجه على نظام Linux أو FreeBSD وحتى QNX ونوفل ونتوير وويندوز .. الخ
• هذا يعني أنك قادر على كتابه برنامج وتشغيله في ويندوز ثم نقل المصدر وتشغيله على ليون** مثلا
• وبهذا يكون لديك نسختين من البرنامج واحد في ويندوز وواحد في ليون** ، دون البحث عن برنامج تحويل
• أو دون البحث عن لغه تعمل على ليون** لتترجم بها شفرتك ....الخ
• وأيضا ستكون عارف 90 % من لغه جافا الشهيره إذا عرفت سي ++ ، وسوف تكون لك هيبه تقدر بـ 9
• درجات على مقياس رختر إذا أجدت الكتابه على هذه اللغه ، أنصح بالإبتعاد عن فيجوال بيسك والذي
• هو هدفي من كتابه هذا المستند :)
•
•
• ملاحظه:
• Sources Code - /*شفرة */ الموجود في نص هو يعبر عن كود ، يعني ما هو جزء من الكود ،
• الهدف منه توضيح لك بأن المكتوب بعده هو كود ، وكذلك /* MS-DOS */ فهو يرمز الى واجه
• دوس DOS
•
•
•
•
•
•
•
•
•
• إفتح النوتباد وأكتب التالي
•
•
• /* Sources Code - شفرة */
•
• # include <iostream.h>
•
• int main()
• {
• cout << "C++ is Cool \n " ;
• return 0 ;
• }
•
•
•
• وأحفظ الملف بالإسم cppiscool.cpp
• تأكد من الإسم أنه ينتهي بـ cpp وليس txt ، يجب ان لا يظهر رمز ملف txt ويمكن فعل
• ذلك عن طريق إختيار save as type في مربع Save As ومن الإشارة الى All File
•
• الخطوة الثانية :
• إقتح الملف cppiscool.cpp في برنامج السي ++ الذي تستخدمه مثلا سي ++ بولدر من
• شركة بورلاند أو فيجوال سي ++ من شركة مايكروسوفت ، مثلا قمت بفتح البرنامج على
• فيجوال سي ++ إضغط على Ctrl+ F7 وانتظر حتى ينتهي من الترجمه ثم إضغط Ctrl+F5 لكي
• يترجم لك البرنامج الى ملف تنفيذي ، قد يسالك عن مكان حفظ المشروع ، إختر المكان
• الذي يناسبك ، والآن يمكنك الذهاب الى الدليل الذي حفظة فيه المشروع وسوف تلاقي
• مجلد بإسم Debug ، أفتحه ، وسوف تجد البرنامج cppiscool.exe
•
•
• شرح الكود :
• السطر
•
• /* Sources Code - شفرة */
•
• # include <iostream.h>
•
•
• يطلب الأمر include بأن يتم إضافه الملف iostream.h الى الشفره ، ويتم البحث عن
• هذا الملف ومن نسخ كل مافيه ووضعه بدل سطر الأمر include ...... سترى أن البرنامج
• رايح يشتغل بدون أي أخطأ ومشاكل ، ولا حجمه بزيد والسبب هو أن الأمر include يظيف
• الملف اللي بعده ، ولو بدلت عنه بالي موجود بالملف اللي بعده رايح يمشي كل شئ
• تمام ...
• علامتي القوس "<" و ">" تدل على تواجد الملف الذي بينهم في الأماكن المعتاده ،
• مثلا داخل مجلد include الذي يحتوي على كافه ملفات *.h
• لو كان الملف iostream.h أو غيره يوجد في دليل غير دليل البرنامج وهذا شئ نادر
• طبعا وقد لا يواجهك لذلك لا تشغل بالك بما ساقوله الآن ;-) ، يمكن أن نستعيده
• بالطريقه التاليه
•
•
• /* Sources Code - شفرة */
•
• # include <C:\My Documents\iostream.h>
•
•
• يبدوا في المثال السابق أننا طلبنا الملف iostream.h من My Documents ، ولكن في
• الغالب الملف iostream.h يكون متواجد مع البرنامج الذي تستخدمه لكتابه شفرات السي
• ++ في المجلد include لذلك لن تحتاج الا لكتابه فقط ، والمعالج سيعرف مكانه ، ولا
• داعي لتشغل بالك بما قلت أنا في الأخير
•
•
•
•
• الى هنا ننتهي ، إضغط على الوصله التي في الاسفل لتذهب الى الدرس الثاني في سي ++
• ، وقبل لا ننتقل تذكر بأن السي ++ تفرق بين كلمة Condor و condor وايضا CONDOR
• يعني تفرق بين الكبتل والسمول ، ولكن ه8ناك مترجمات حديثه قد تصرف النظر عن هذا
• الشئ ، ولكن يجب أن تعتاد على الإهتمام بهذا الجانب عشان لا يصير أخطاء لمن يريد
• تطوير برامجك في المستقبل ويستخدم مترجم غير اللي عندك .
•
• ----------------------------------------------------------------------------
•
• نكمل الدرس السابق ، يوضح الشكل التالي شفرة البرنامج الذي قمنا بصنعه في الدرس
• السابق
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h >
•
• int main()
• {
• cout << "C++ is Cool \n " ;
• return 0 ;
• }
•
•
•
•
• السطر الثاني من البرنامج وهو الذي يحتوي على العبارة
•
•
• /* Sources Code - شفرة */
•
• int main()
•
•
•
• هذا السطر هو البدايه الحقيقه للبرنامج ، وهو عبارة عن إجراء function ، وهو
• عبارة عن مجموعة من الأوامر ، والإجراء لابد أن يحدد نوع القيمه التي سيعود بها
• وهي هنا int إختصار لـ integer تدل على أنه رقم ، أنظر الى السطر قبل الأخير في
• البرنامج وهو
•
•
• /* Sources Code - شفرة */
•
• return 0 ;
•
•
•
• لقد أعاد الرقم 0 وهذا يخبر النظام بأن البرنامج نفذ على الوجه السليم ، يميز
• الإجراء ()main عن بقيه الإجراءات الأخرى هو أنه يتم طلبه من النظام أثناء تشغيل
• البرنامج تلقائيا ( لا تشغل بالك بهذا الكلام ، أعرفه فقط كما هو مكتوب وقريبا
• ستفهم ما قلته لك تماما :-) )
• بعد () main ] انظر الى الكود في الأعلى ] نجد بعده علامة "}" ، السبب هو ان كافه
• الإجراءات يجب أن تبداء بعلامه } وتنتهي بـ { ، وهي تدل على بدايه ونهايه ، ويأتي
• في وسطها قلب البرنامج وهذه المنطقه تسمى بالكتله وهو في مثالنا
•
•
•
• /* Sources Code - شفرة */
•
• cout << "C++ is Cool \n " ;
•
•
•
• الكائن cout وينطق سي آوت ، هو لطباعه نص على الشاشه ، وكما في مثالنا قمنا
• بطباعه C++ is Cool ، طريقه إستخدام الكائن cout هو كتابه cout ثم علامه أقل من
• مرتين >> وبعدها علامه التنصيص " ثم العبارة ثم نقفل علامه التنصيص " ولاتنسى
• العلامه ; في الأخير ، ولا تنسى أيضا طلب المكتبه iostream.h في اول البرنامج عن
• طريق الأمر include الذي تعلمناه في الدرس السابق ، لأنها ضروريه للكائن cout
• فالكائن متواجد بها :)
•
• ملاحظه : العلامه n\ الموجوده في النهايه تطلب بدء سطر جديد ، وهي إختصار لـ New
• Line وتنطق New Line أيضا ولكن البعض ينطقها سلاش إن
•
•
• ----------------------------------------------------------------------------
•
• أكيد سالت نفسك ، هل توجد علامات غير n\ أم لا ؟ الجواب هو نعم يوجد ، وهذا
• الجدول يوضحها لك
•
• n\ ( سطر جديد ، إختصار لـ New Line)
• t\ ( جدولة ، تماما مثل ضغط Tab ، إختصار لـ Tab)
• b\ ( مسح الحرف الأخير ، إختصار لـ BackSpace )
•
• حاول كتابه شفره تطبع العلامه ( " ) على الشاشه ، أعتقد أنك سوف تفشل ، اسف على
• التحطيم ، شفرة البرنامج ستكون على النحو التالي
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• cout << " " " << "\n" ;
• return 0 ;
• }
•
•
•
•
• عند الترجمة يظهر الخطأ التالي :
•
•
•
•
•
• Cpp1.obj - 2 error(s), 0 warning(s)
•
•
•
•
• والسبب هو وجود العلامة " في الأول تدل على أن اللذي يليها هو الذي سوف تتم
• كتابته الى أن تتأتي العلامة " مره أخرى ، عند مرور المترجم على الكود السابق سوف
• يجد العلامة " بعد سي آوت ويعرف أن اللذي سوف يأتي بعدها هو الذي سوف يتم عرضه ،
• ولكن لا شئ بعدها الا العلامة مره أخرى " وهذا يدل على انه لا يعرض شئ ، ولكن تم
• فتح العلامة مره أخرى ( " ) ولم تقفل ، هل تريد التأكد من كلامي ، قم بإضافه
• العلامة " مره أخرى لتصبح أربع علامات وسوف ترى صحه كلامي ، يعني لازم يكون العدد
• موجب للعلامات وليس مفرد ، وأكيد أنك تتسأل وش هو الحل /
• إذا أردت عرض رساله وتحتوي على ( " ) كل ماعليك هو وضع أمامها علامة \ فقط
• نفس الشئ في العلامة ( \ ) نفسها ، فلو اردت عرضها في رسالتك وكتبت \ كما هي فلن
• تعرض ، ولكن يتوجب كتابه \\ لتعرض \ فقط ، حاول معرفه السبب بنفسك
•
•
• إستخدام الكائن cout للجمع والطرح والقسمه :=-
•
• سوف اعتبر انك سوف تتطلب المكتبه iostream.h وأن تعلن عن الإجراء ()main وتصع
• القوس } في البدايه والقوس { في النهايه وأن تعيد القيمه 0 عن طريق return وكل
• ذلك دون أن أطلب منك ، وكل ماعلي هنا هو شرح لك إستخدام الكائن cout فقط
• الجمع
•
•
• /* Sources Code - شفرة */
•
• cout << (1+1) "\n" ;
•
•
•
•
• هذه الشفره بعد ما تقوم بكل ما قلت لك عنه سابقا وهو أن تتطلب المكتبه iostream.h
• و وأن تعلن عن الإجراء ()main وتضع القوس } في البدايه والقوس { في النهايه وأن
• تعيد القيمه 0 عن طريق return
•
•
• /* Sources Code - شفرة */
•
•
• #include < iostream.h >
• int main ()
• {
• cout << (1+1) << "\n";
• return 0 ;
• }
•
•
•
• يقوم هذا الكود بجمع القيمتين 1+1 ويتضح لنا أننا قمنا بوضعها داخل قوسين ، وفي
• الحقيقه فإن هذا الإجراء غير مطالب به أحيانا ولكن بعض المترجمات تحدث خطأ إذا لم
• تقوم بوضعه فالأفضل أن تعتاد على وضعه فكثير من المترجمات لا يفرق بين وضعه أو
• غير وضعه بينما هناك من يفرق ، لذلك تعود علىوضعه لكي لا تحدث أخطأ لم يريد تطوير
• برامجك ويستخدم مترجم غير اللي عندك :)
•
•
• القسمه والضرب والطرح :
•
• القسمه يكون بدل علامة + علامة /
• الضرب يكون بدل علامة + علامة *
• الطرح يكون بدل علامة + علامة -
•
• مثال على الطرح
•
•
• /* Sources Code - شفرة */
•
• cout << (1-1) << "\n";
•
•
•
•
• القسمه
•
•
• /* Sources Code - شفرة */
•
• cout << (1/1) << "\n";
•
•
•
•
• الضرب
•
•
• /* Sources Code - شفرة */
•
• ضع الشفره هنا واربح
•
•
•
• لا تصدقني في الشفره السابقه ، فإذا قمت بالفعل بترجمتها فسوف يظهر لك
•
•
•
•
•
• Cpp1.exe - 87 error(s), 0 warning(s)
•
•
•
•
•
• ولكن لو أردت كاتبتها كل ما عليك هو إضافه // أمامها لكي يقوم المترجم بتجهلها
• كما هو مبين هنا
•
•
• /* Sources Code - شفرة */
•
• // condor@phreaker.net
•
•
•
• ولك الخيار المفضل ويسمى بنمط سي ، وهو أن تضع */ في البدايه و /* في النهايه كم
• هو مبين لك هنا مثلا
•
•
•
• /* Sources Code - شفرة */
•
• /* E-Mail : condor@phreaker.net
• Msn Messnger : kondor_900@hotmail.com */
•
•
•
• ونسمي ما يتم وضعه داخل العلامة / أو */ بالتعليقات ، وفائده التعليقات هو أن
• يسهل عليك تعديل برنامجك في المستقبل ، أو يسهل على غيرك قراءته ، فتكتب في
• التعليق ما هي وظيفه الكود القادم ولماذا وكيف وكل شئ عنه ..
•
•
• ----------------------------------------------------------------------------
•
• الإجراءات :
• الإجراء ما يبغا له واحد يتفلسف فيه ويقعد يعرفه أو يخترع له تعاريف ويدعي أنها
• تسهل مفهومه ، فهو شئ بسيط جدا وسهل جدا جدا جدا ، لناخذ مثال
•
• ماذا يقوم به البرنامج التالي
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• cout << "condor home page" << endl ;
• return 0;
• }
•
•
•
•
• ملاحظه : العبارة endl تقوم بمثل عمل n\ وتنطق إيند إل أو إيند لاين ولكن يفضل
• End-ell ) إيند إل)
•
• وماذا يقوم به البرنامج التالي
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• void condor()
• {
• cout << "condor home page" << endl ;
• }
• int main ()
• {
• condor();
• return 0;
• }
•
•
•
•
• كلها تقوم بعرض رساله
• condor home page ) لك الحريه في تغييرها )
• في البرنامج الأول تم طلب الكائن cout مباشرة لطباعة رساله على الشاشه ، ولكن في
• البرنامج الثاني ونحن نعلم بأن البدايه الحقيقيه تكون بعد () int main وهي
•
•
• /* Sources Code - شفرة */
•
• int main ()
• {
• condor();
• return 0;
• }
•
•
•
• نجد أنه تم وضع العبارة ;()condor بدل من cout << "condor home page" << endl ;
• في البرنامج الأول ، ومع هذا فلقد عمل بنفس عمل البرنامج الأول وهذا يدل على أن
• ;()condor هو الذي يقوم بعرض الرساله ، ولكن كيف !!
• لو نظرت في أول البرنامج لوجدت الكلمة void وهي تستخدم لتعريف الإجراءات ، فلقد
• تم فيها تعريف إجراء مسمى بـ ()condor وأعطي مهمه وهي عرض الرساله condor home
• page كما هو موضح
•
•
• /* Sources Code - شفرة */
•
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
• الآن قد تم تعريف هذا الإجراء ، وإن تم مقابله كلمة ()condor في برنامجك فسوف يتم
• تنفيذ الشيفره cout << "condor home page" << endl ; مباشره
•
• قواعد أساسيه لإستخدام الإجراءات دون أخطاء :
• 1- عند تعريفك لإجراء يجب أن لا تنسى إستخدام void (أو غيرها، سوف نوضح هذا في
• الدرس القادم) وثم بعدها إسم الإجراء ولا تنسى القوسين () بعد إسم الإجراء فذلك
• ضروري جدا إذا إستخدمت void ، في الدرس القادم سوف نتعلم إنشاء إجراءات من نوع
• integer وسوف يكون الأمر مختلف عن هذا تماما ، لا تشغل بالك الآن .
• 2- بعد الإعلان عن الإجراء وقبل البدء في كتابه الشيفره الخاصه به لا تنسى فتح
• القوس { وعند الإنتهاء من كتابه الشيفره لا تسنى إقفال القوس } كما هو مبين هنا
•
•
• /* Sources Code - شفرة */
•
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
• 3- خذ هذه قاعده أساسيه تخفف عليك وجع الراس ، دائما عند طلب تعريف إجراء لا لا
• لا نضع العلامة ; في النهايه ولا نضع له العلامة { في البداية ولا العلامة } في
• النهايه ، وعند طلب إجراء يتوجب عليك وضع إسمه كاملا مثلا الإجراء ()condor الذي
• تم تعريفه في المثال السابق وثم العلامة ;
• 4- عند رغبتك في تعريف إجراء وطلبه لا تضع طلبه قبل إنشاءه ، بمعنى آخر لا تقوم
• بطلبه وأنت لم تقم بإنشاءه وثم تتذكر ذلك وتقوم بإنشاءه في آخر البرنامج مثل هذا
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• condor();
• return 0;
• }
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
•
• إذا فعلت ذلك فأنت خارق للقانون .
• 4- ما يصلح يكون إسم الإجراء فيه مسافات .
• 5- لطلب إنشاء إجراء لازم يكون ذلك في أول البرنامج بعد include ، فما يصير مثلا
• يكون داخل بدايه البرنامج الفعليه ، أي بعد () int main
•
•
•
• خلاصه الكلام :
• الإجراء هو مجموعه من الأوامر يتم تعيين له إسم وتخزن في الذاكره طيله تشغيل
• البرنامج ، وتقوم بتنفيذ الشيفرات المكتوبه بداخلها عندما يتم طلبها ، والهدف
• منها هو تسهيل التعديل في البرنامج لاحقا ، فلو أفترضنا أنك تريد كاتبه برنامج
• بقوم بعرض رساله بشكل متكرر عند حالات معينه ، فسوف تقوم بكتابه هذه الرساله أكثر
• من مره ، وعند تعديلها سوف تتعب من البحث عن الرسائل هذه وتغييرها ، ولكن لو قمت
• بإعطائها إجراء فسوف يسهل ذلك عن طريق تعديل الإجراء فقط !!
•
•
• ----------------------------------------------------------------------------
•
• في الدرس السابق عرفنا إن الإجراء هو إسم محجوز في الذاكره وعند طلبنا له يقوم
• بتنفيذ الشيفره المناطه به ، ولكن هذا ليس كل شئ ، فالإجراءات لها فوائد أكثر من
• ذلك وليس كل شئ عنها ما ذكرناه وليس كل شئ أيضا هو الذي سأذكره الآن ...
•
• الإجراءات قد تعود بقيمه لنا وقد لا تعود بشئ ، مثلا ممكن أن تقوم بجمع قيمتين
• وطرح قيمتين أو ضرب ثلاث قيم أو قسمه أربع قيم وتعود لنا بالنتيجه.... الخ
•
• مثال :
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int mns (int a,int b)
• {
• return int (a-b);
• }
• int main()
• {
• int c,d,f;
• cout << "Plz Enter 2 Number: \n";
• cin >> c ;
• cin >> d ;
• f=mns (c,d);
• cout << f << endl;
• return 0 ;
• }
•
•
•
• عند تصريفك للكود التالي وتشغيله سوف يظهر لك كما هو مبين هنا
•
•
•
• /* MS-DOS */
•
• :Plz Enter 2 Number
•
•
•
•
•
• كل ما عليك هو إدخال رقمين ، أما أن تدخل الأول ثم مسافه وتدخل الثاني أو تدخل
• الأول وثم تضغط إنتر وتدخل الثاني ، مثلا ندخل رقم 2 ثم مسافه ورقم 2 ونضغط إنتر
• كما هو هنا
•
•
• /* MS-DOS */
•
• :Plz Enter 2 Number
• 2 1
• 1
• Press any key to continue
•
•
•
•
•
•
• بعد ضغط زر إنتر قام البرنامج بطباعه لنا الرقم 1 ، هذا يدل على عمل البرنامج وهو
• طرح القيمتين من بعض ، الآن سوف نقوم بشرح الكود كيف عمل ذلك ..
•
• شرح الكود :
• السطر الأول معروف ، في السطر الثاني هو كما ميبن لنا هنا
•
•
• /* Sources Code - شفرة */
•
• int mns (int a,int b)
•
•
•
• قمنا بالإعلان عن إجراء وأعطاناه الإسم mns ، صحيح أننا لم نستخدم void ، و void
• التي تعلمناها في الدرس السابق ماهي الا تعريف الإجراء ولكن يمكن تعريف الإجراءت
• بـ int ، ولكن متى نستخدم الأولى ومتى الثانيه ، نستخدم الأولى إذا لم يكن هناك
• قيمه يرجع بها ، مثلا يطبع رساله ، أما إذا كان يأخذ عددين ويعمل عليهما عمليه
• مثل طرح ويرجع لنا النتيجه فيجب أن تستخدم int وهي إختصار لـ integer أي أنه
• سيرجع لنا عدد صحيح وليس حرف أو رمز
• وقمنا بإعطاء الإجراء الذي قمنا بتعريفه بالإسم mns قيمتين هما a و b كما هو موضح
• ، ستعرف السبب قريبا :)
• السطر الثالث وفيه العلامة } معروفه ، والسطر الرابع وهو المهم
•
•
•
• /* Sources Code - شفرة */
•
• return int (a-b);
•
•
•
•
• هذا هو السطر الذي يقوم بطرح القيمتين a و b ويعود لنا بالنتيجه
• السطر الخامس وفيه العلامة {
•
• السادس وهو بدايه البرنامج الفعليه ، وهو اللي يبداء منه البرنامج ، وقبل قمنا
• بشرحه
• السطر السابع معروف
• السطر الثامن يعلن لنا عن ثلاث قيم c و d و f ومن نوع integer
•
•
• /* Sources Code - شفرة */
•
• int c,d,f;
•
•
•
•
• السطر التاسع :
•
•
• /* Sources Code - شفرة */
•
• cout << "Plz Enter 2 Number: \n";
•
•
•
• يظهر رساله للمستخدم تطالبه بإدخال رقمين Two Number
•
• السطر العاشر والحادي عشر :
•
•
• /* Sources Code - شفرة */
•
• cin >> c ;
• cin >> d ;
•
•
•
• فيه هنا جديد ...
• أولا لاحظ أن العلامة أكبر من مرتين ع** العلامة أصغر من مرتين لـ cout وهذه نقطه
• مهمه ، الآن وبعد أن عرفت هذا سنتكلم عن cin
• cin تقوم بأخذ القيمه الأولى التي أدخلتها وتجعلها بدل c الذي أعلنت عنه في السطر
• الثامن وعلى أنه integer ، و cin في السطر التالي تاخذ القيمه الثانيه التي
• أدخلها المستخدم وتجعلها بدل d الذي كذلك اعلنت عنه في السطر الثامن على أنه
• integer عدد صحيح
•
• السطر الثاني عشر والثالث عشر:
• f والذي أعلنت عنه أيضا في السطر الثامن لم يأخذ قيمته ، c أخذ العدد الأول الذي
• أدخله المستخدم و d أخذ العدد الثاني ، إذن f كما هو موضح = mns ، و mns هو
• المعلن عنه في السطر الثاني ويعيد لنا مطروح عددين ، والعددين هما القيمتان التي
• أدخلهما المستخدم لـ c و d ، يتم أخذ القيمتان الى a و b المعلن عنهما في أول
• البرنامج ويتم إجراء عمليه الطرح عليهما من خلال
•
•
• /* Sources Code - شفرة */
•
• return int (a-b);
•
•
•
• ويعود لنا بالقيمه وتسجل لـ f ، وفي السطر الثالث عشر
•
•
• /* Sources Code - شفرة */
•
• cout << f << endl;
•
•
•
• يتم تبديل f بقيمتها التي سجلت لها ، ولكن لماذا لا يتم طباعه f كماهي ، السبب هو
• أننا لم نضعها داخل علامات تنصيص ! عليك تجربه ما قلت لك وأن تقراء هذا الدرس
• أكثر من مره ولا تقراء فقط لتقراء ، إقراء لتفهم ..... ولا تستغرب فهذه هي طريقه
• سي ++ فمع الممارسه ستتعود ...
• ملاحظه :
• البرنامج الذي كتبناه في الأعلى إذا قمت بكتابه لاجل جمع عددين فأنت أحمق بالفعل
• ، اقصد ما انت عارف الطبخه :) هذا مجرد مثال للإجراءات وليس مثال لجميع عددين أو
• غيرهما ، إذا أردت جمع عددين او طرحمها أو ضربهما إستخدم البرنامج التالي
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a, b;
• cout << "Enter Two Number\n";
• cin >> a;
• cin >> b;
• cout << a <<"\tand\t" << b << "\t=" << a+b << "\n" ;
• return 0;
• }
•
•
•
•
•
•
•
• فهذا هو الصحيح ، ولاداعي لشرحه فأنت ستفهم إذا فهمت ما سبق من هذا الدرس والدروس
• السابقه وباقي عندي ملاحظه فهي لو جربت تقسم عدد 22 على 7 رايح يطلع الناتج 3 ،
• وين الباقي وهو 1 ، لا تشغل بالك فهذه احد قوة سي ++ ، لاتستغرب ستعرف في درس
• ثاني كيف جات قوه وكيف نحسب الباقي..
•
• حاول كتابة برنامج يقوم بعمليه ضرب لثلاث قيم بإستخدام الإجراءات، إذا إستطعت فعل
• ذلك فأعتبر نفسك فهمت كل شئ في الدرس هذا، ولكن تذكر ان كل ماقلت لك في الدرس هذا
• والدروس السابقه ما هي الا القشور واللب يأتي بعد مسافه كيلو من هنا ;) ، تقدر
• تروح للدرس السادس .
•
• ----------------------------------------------------------------------------
•
• كيف تقسم عددين مع حساب المتبقي من القسمه ؟ كيف تقسم عددين دون حساب متبقي
• القسمة ؟ كيف تحسب باقي القسمة فقط ؟!
•
• البرنامج التالي ماذا يفعل ، حاول أن تعرف دون ترجمته
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t/\t" << b <<"\t=\t"<< a/b << endl;
• return 0;
• }
•
•
•
•
•
• إذا ماعرفت وش يصلح لازم ترجع لدروس السابقه والا ترى تحوس نفسك !
•
• البرنامج يقوم بطلب رقمين من المستخدم إما أن يدخل الأولف ثم مسافه ويدخل الثاني
• او يدخل الأول وثم يضغط إنتر ويدخل الثاني ، وعند إدخال الرقمين يقوم البرنامج
• بطباعه نتيجه قسمه العددين على بعض فمثلا نأخذ هذا المثال من موجه الدوس إثناء
• تشغيل البرنامج
•
•
•
• /* MS-DOS */
•
• Microsoft(R) Windows 98
• C)Copyright Microsoft Corp 1981-1998.(
•
• C:\WINDOWS\Desktop\MyJunk\C++\Debug>cpp1.exe
• Enter Two Number
• 22
• 7
• 22 / 7 = 3
•
• >C:\WINDOWS\Desktop\MyJunk\C++\Debug
•
•
•
•
•
• ملاحظه : العلامة " / " تعني قسمة
•
• نرى نتيجه 22 / 7 هي 3 ، وين راح الباقي واللي هو 1 ، السبب هو أننا في البرنامج
• طلبنا القسمه دون الباقي ، ولكن إذا أردنا طلب الباقي يجب ان نضع 22 % 7 وهذا
• ينتج لنا الرقم 1 فقط واللي هو الباقي ، ولو وضعنا 22 / 7 و 22% 7 رايح يطلع لنا
• الناتج والباقي ....
• مثال على حساب الباقي فقط
• كل ما علينا هو تغيير السطر الثامن ، وبالتحدد تغيير العلامة "/" ليصبح هكذا
•
•
• /* Sources Code - شفرة */
•
• cout << a << "\t%\t" << b <<"\t=\t"<< a%b << endl;
•
•
•
• لاحظ أننا ما نسينا نغيرها حتى في الرساله التوضيحيه :)
• يعني الشفره كلها تصير مثل كذا
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t%\t" << b <<"\t=\t"<< a%b << endl;
• return 0;
• }
•
•
•
•
• نشوف البرنامج من الدوس ، طبعا البرنامج يحسب الباقي فقط ، ما يجيب النتيجه ،
• يعني 22 % 7 تطلع 1 وهو متبقي القسمه وهذا تشوفه الحين مو مفيد لكن رايج تحتاج
• تطلع باقي القسمه دون الناتج في برامج كثيره جدا
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 22
• 7
• 22 % 7 = 1
• Press any key to continue
•
•
•
•
•
• طيب بقي سؤال واحد ، كيف تصلح برنامج يحسب الناتج والباقي سواء ، والله إذا ما
• عرفت تحلها فأنت ... والا بلاشي ، أقولك إذا ماعرفت تحلها يعني انا ما أعرف اشرح
• :)
•
• هذا هو الحل :
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t/\t" << b <<"\t=\t"<< a/b << "\nwalbagi ho\t" << a%b <<
• endl;
• return 0;
• }
•
•
•
• كل اللي عليك تشوف التغييرات في السطر الثامن ....... شكل البرنامج في الدوس مثل
• كذا
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 22
• 7
• 22 / 7 = 3
• walbagi ho 1
• Press any key to continue
•
•
•
•
•
• وهذا شكل ثاني لقسمه 21 / 3
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 21
• 3
• 21 / 3 = 7
• walbagi ho 0
• Press any key to continue
•
•
•
• المعاملات الحسابيه :-
• هي خمسة
• + الحمع
• - الطرح
• * الضرب
• / القسمه
• % لحساب الباقي من عمليه القسمه
•
•
• ----------------------------------------------------------------------------
•
• مراجعة :-
•
• في الدرس الأول
• عرفنا أن الأمر include ......
• سأذكر لك صيغه أخرى للأمر include وهي على الشكل
•
•
• /* Sources Code - شفرة */
•
• #include "iostream.h"
•
•
•
• وضعنا العلامة (") بدل من (<) ، أنا لا أنصحك بهذه الطريقه لأنها قد تسبب أخطأ في
• بعض المترجمات وقد تعمل مع أخرى ، ولاتنسى # في بدايه أمر include
•
• في الدرس الثاني
• كان كل كلامنا حول الكائن سي آوت cout وصيغته العاديه على الشكل
•
•
•
• /* Sources Code - شفرة */
•
• cout << "C++ is Cool \n " ;
•
•
•
•
• عندي نصيجه تقلل من وجع الراس وهي ضع علامة (;) في نهايه كل سطر داخل تحت الإجراء
• ()int main من بدايه القوس { الى نهايته } وكذلك في كل سطر تجده يبن قوسين القوس
• { و } .... هذه خذها قاعده ، ولكن هناك حالات شاذه مثل إستخدام
• #define
• لتعريف الثوابت ، لاتشغل بالك بهذا الآن
•
• الدرس الثالث
• كان كل حديثنا حول علامات الهروب مثل
• n\
• t\
• و برامج بسيطه توضح عمليه الجمع والطرح والقسمه ، و في النهايه تكلمنا عن علامات
• التعليق
•
•
•
• /* Sources Code - شفرة */
•
• /* E-Mail : condor@phreaker.net
• Msn Messnger : kondor_900@hotmail.com */
•
•
•
•
•
• الدرس الرابع
• أشهر صوره تنشاء في إجراءات وتطلب ، ولكن أستعجلنا فيه شويه ، والا الإجراءات
• موضوعها طويل ورايحين نتكلم قيه بدقه في درس ثاني .
•
• الدرس الخامس
• تابع للإجراءات
•
• الرس السادس
• حلينا مشكله ، وهي إظهار باقي القسمه ، وصممنا برنامج يطلب إدخال رقمين لإجراء
• عمليه حساب عليهما ، وأخذنا الأشكال الخمسه للمعاملات الحسابيه ...
•
•
•
• ----------------------------------------------------------------------------
•
• المتغيرات (Variable):
• المتغير هو قيمه (حروف او أرقام) يتم الإعلان عنها في أول البرنامج ويعطى لها إسم
• وتخزن في ذاكرة جهازك (عندما أقول لك ذاكرة فأنا اقصد الـRAM ) وعند يتم مقابله
• إسم اللمتغير يتم يبديله بقيمته التي اعلنت له في البدايه ، والهدف منها ما أقدر
• أحصره لك لأن أهدافها كثيره وماراح تعرفها الا مع الممارسه راح تكتشف حاجتك
• الماسه للإعلان عن متغيرات ، كل ماعليك الآن هو فهمها فيوم تحتاجها ، أما إذا كنت
• قد عملت على لغه برمجه غير سي ++ فاكيد عارف فائداتها.
•
• كيفيه الإعلان عن متغير :
• كل ماعليك لتعريف متغير هو ذكر نوعه وثم مسافه وثم إسمه وأخيرا فاصله منقوطه (;)
• مثال
•
•
•
• /* Sources Code - شفرة */
•
• int c;
•
•
•
•
• النوع هو integer يعني رقم ، وإسم المتغير هو c ويوجد إنواع للمتغيرات غير النوع
• int وهو كما يلي
•
• أنواع المتغيرات
• long int (عدد طويل)
• وهو يقبل من سالب 2147483648 الى موجب 2147483647
•
• unsigned long int (عدد طويل ولكن بدون علامة ، أي بدون علامة سالب والا موجب)
• من صفر الى 4294967295
•
• short int (عدد قصير)
• يقبل من سالب 32768 الى موجب 32767
•
• unsigned short int (عدد قصير بدون علامة)
• من صفر الى 65535
•
• char (متغير حرفي)
• من صفر الى 256
•
• float (عدد بعلامة عشريه)
• 12e-38 الى سالب 34e38
•
• double
• من 22e-308 الى سالب 18e308
•
• bool
• true (or) false
•
• هذا على نظام 32 بت أما عن الأجهزة القديمه التي تعمل على 16 بت فما أدري عنها ،
• ما اعتقد بقي أحد على أنظمه قديمه ، أكثر المبرمجين يستخدمون ويندوز 98 أو أحدث
• او ليون** :)
•
• ملاحظه :
• عند كتابه المتغير int فهذا يعني انه long int أو signed long int
•
• كما ذكرنا سابقا ان المتغير يحجز له مكان في ذاركة جهازك ، ولمعرفه هذه المساحه
• فالامر يختلف من نظام الى نظام آخر ، لمعرفه كم تحجز المتغيرات على جهازك عليك
• إستخدام sizeof لمعرفه ذلك ، على النحو التالي
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• cout << sizeof(unsigned short int);
• return 0;
• }
•
•
•
•
•
• هذا البرنامج يقوم بعرض المساحه التي يحجزها المتغير unsigned short int مقاسه
• بالبايت byte
• وهذا يعرض الماسحه التي يحجزها المتغير ............. (أكمل الفراغ(
•
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• cout << sizeof(bool);
• return 0;
• }
•
•
•
•
•
• شروط ونصائح يجب إحترامها لكاتبه أسماء المتغيرات :
• 1- ما يصلح تحط في الإسم مسافه
• 2- ما تحط إسم متغير وهذا الإسم محجوز في سي ++ مثل تحط إسمه return
• 3- أعلنت عن إسمه مستخدم حروف كبيتل وسمول لازم تستدعيه بنفس الأحرف مع التقيد
• بالكبيتل والسمول
• 4- ممكن تستخدم السرطه اللي على تحت (_) لتعبير عن مسافه بدل من وضع مسافه
•
• تعيين قيمة للمتغيرات :-
• سبق وان قلت أن المتغيرات لها قيمه ، وحنا اللي عرفناه الحين كله كيف نعلن عن
• متغير ونعطيه إسم ونوع فقط ، طيب وين قيمته اللي يحملها ...
• في الحقيقه القيمه يمكن أن يقوم مستخدم البرنامج بإدخالها ، أو من الممكن أن
• تحددها أنت في البرنانج ، وذلك راجع لعمل البرنامج ، مثلا على الشكل التالي قمنا
• بتحديد قيمه
•
•
•
• /* Sources Code - شفرة */
•
• int x=16;
•
•
•
•
• الحين تم تعين متغير من نوع integer وله الإسم x وقيمته هي 16
• هذا مثال آخر ، ولكن عن إعلان لمتغيرين ثم ضربهما في بعض
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• long int a=10;
• long int b=10;
• cout << a*b < return 0;
• }
•
•
•
•
•
• لو اردنا المستخدم هو الذي يحدد القيمه للمتغير a و b نستخدم الكائن cin ، حاول
• فعل هذا ، أذكر أني حطيت مثال ممتاز في الدرس 6 راجعه إذا نسيت
•
• الكلمة الأساسية typedef :-
• مع الوقت وخصوصا إذا كنت بصدد كتابه برنامج كبير رايح تشوف أن كتابه unsigned
• short nint مثلا مملا وقد يحتمل حتى حدوث أخطأ وقد يصعب عليك تعديل المتغير هذا
• الى unsigned long int مثلا مستقبلا ....
• الحل هو إنك تنشئ إسم مرادف يعبر عن unsigned short int ولكن أقصر وسهل الحفظ ،
• إستخدم typedef لفعل هذا ، وكل ما عليك فعله هو كتابه typedef ثم نوع المتغير
• ومسافه وإسمه الجديد وأخيرا فاصله منقوطه ، مثال
•
•
•
• /* Sources Code - شفرة */
•
• typedef unsigned short int usi ;
•
•
•
•
• في هذا المثال نكون قد أنشأنا كلمة usi لتحل مكان unsigned short int
•
• يعني نقدر نكتب
•
•
•
• /* Sources Code - شفرة */
•
• usi x=16;
•
•
•
•
• بدلا من
•
•
•
• /* Sources Code - شفرة */
•
• unsigned short int x=16;
•
•
•
•
• وهذا مثال كامل
•
•
•
• /* Sources Code - شفرة */
•
• #include <iostram.h>
• typedef unsigned short int usi;
• int main()
• {
• usi x=16;
• cout << x << endl;
• return 0;
• }
•
•
•
•
•
-----------------------------------------------
| Copyright (C) 2001 THE DEATH GROUP Home Page |
| http://DEATHIN2005.TRIPOD.COM |
| ALSANJAK1@YAHOO.COM |
-----------------------------------------------
EOF
والصلاة والسلام على أشرف المرسلين محمد ابن عبدالله الصادق الأمين و على أله و من اتبعه الى يوم الدين
أما بعد . . .
فسوف أقدم لكم اليوم درس تعليم لغة c++ بالطريقة الإحترافية و لن أطيل عليكم الشرح بل سوف أترككم مع الشرح . . .
جميع الحقوق محفوظة 2006
THE DEATH GROUP
THE LOVER
Arabic Document For C++
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
######
## ##
##
### _|_ _|_
### | |
##
## ##
####### Written by THE LOVER [ 22/7/2006 ]
~~~~~~~~~~~~~~~~~~~~~~~~
YAHOO Messanger : ALSANJAK1@YAHOO.Com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://deathin2005.tripod.com
~~~~~~~~~~~~~~~~~~~~~~
• السي ++ هي ناتج تطوير لغه سي ، بعد قراءة هذا المستند تكون قادر على كتابه برامج كامله و
• نافعه في لغه سي ++ ، ولحسن حظك فإن أكثر نظم التشغيل يمكن كتابه فيها شفرات بهذه اللغه ، مثلا
• ستكون قادر على البرمجه على نظام Linux أو FreeBSD وحتى QNX ونوفل ونتوير وويندوز .. الخ
• هذا يعني أنك قادر على كتابه برنامج وتشغيله في ويندوز ثم نقل المصدر وتشغيله على ليون** مثلا
• وبهذا يكون لديك نسختين من البرنامج واحد في ويندوز وواحد في ليون** ، دون البحث عن برنامج تحويل
• أو دون البحث عن لغه تعمل على ليون** لتترجم بها شفرتك ....الخ
• وأيضا ستكون عارف 90 % من لغه جافا الشهيره إذا عرفت سي ++ ، وسوف تكون لك هيبه تقدر بـ 9
• درجات على مقياس رختر إذا أجدت الكتابه على هذه اللغه ، أنصح بالإبتعاد عن فيجوال بيسك والذي
• هو هدفي من كتابه هذا المستند :)
•
•
• ملاحظه:
• Sources Code - /*شفرة */ الموجود في نص هو يعبر عن كود ، يعني ما هو جزء من الكود ،
• الهدف منه توضيح لك بأن المكتوب بعده هو كود ، وكذلك /* MS-DOS */ فهو يرمز الى واجه
• دوس DOS
•
•
•
•
•
•
•
•
•
• إفتح النوتباد وأكتب التالي
•
•
• /* Sources Code - شفرة */
•
• # include <iostream.h>
•
• int main()
• {
• cout << "C++ is Cool \n " ;
• return 0 ;
• }
•
•
•
• وأحفظ الملف بالإسم cppiscool.cpp
• تأكد من الإسم أنه ينتهي بـ cpp وليس txt ، يجب ان لا يظهر رمز ملف txt ويمكن فعل
• ذلك عن طريق إختيار save as type في مربع Save As ومن الإشارة الى All File
•
• الخطوة الثانية :
• إقتح الملف cppiscool.cpp في برنامج السي ++ الذي تستخدمه مثلا سي ++ بولدر من
• شركة بورلاند أو فيجوال سي ++ من شركة مايكروسوفت ، مثلا قمت بفتح البرنامج على
• فيجوال سي ++ إضغط على Ctrl+ F7 وانتظر حتى ينتهي من الترجمه ثم إضغط Ctrl+F5 لكي
• يترجم لك البرنامج الى ملف تنفيذي ، قد يسالك عن مكان حفظ المشروع ، إختر المكان
• الذي يناسبك ، والآن يمكنك الذهاب الى الدليل الذي حفظة فيه المشروع وسوف تلاقي
• مجلد بإسم Debug ، أفتحه ، وسوف تجد البرنامج cppiscool.exe
•
•
• شرح الكود :
• السطر
•
• /* Sources Code - شفرة */
•
• # include <iostream.h>
•
•
• يطلب الأمر include بأن يتم إضافه الملف iostream.h الى الشفره ، ويتم البحث عن
• هذا الملف ومن نسخ كل مافيه ووضعه بدل سطر الأمر include ...... سترى أن البرنامج
• رايح يشتغل بدون أي أخطأ ومشاكل ، ولا حجمه بزيد والسبب هو أن الأمر include يظيف
• الملف اللي بعده ، ولو بدلت عنه بالي موجود بالملف اللي بعده رايح يمشي كل شئ
• تمام ...
• علامتي القوس "<" و ">" تدل على تواجد الملف الذي بينهم في الأماكن المعتاده ،
• مثلا داخل مجلد include الذي يحتوي على كافه ملفات *.h
• لو كان الملف iostream.h أو غيره يوجد في دليل غير دليل البرنامج وهذا شئ نادر
• طبعا وقد لا يواجهك لذلك لا تشغل بالك بما ساقوله الآن ;-) ، يمكن أن نستعيده
• بالطريقه التاليه
•
•
• /* Sources Code - شفرة */
•
• # include <C:\My Documents\iostream.h>
•
•
• يبدوا في المثال السابق أننا طلبنا الملف iostream.h من My Documents ، ولكن في
• الغالب الملف iostream.h يكون متواجد مع البرنامج الذي تستخدمه لكتابه شفرات السي
• ++ في المجلد include لذلك لن تحتاج الا لكتابه فقط ، والمعالج سيعرف مكانه ، ولا
• داعي لتشغل بالك بما قلت أنا في الأخير
•
•
•
•
• الى هنا ننتهي ، إضغط على الوصله التي في الاسفل لتذهب الى الدرس الثاني في سي ++
• ، وقبل لا ننتقل تذكر بأن السي ++ تفرق بين كلمة Condor و condor وايضا CONDOR
• يعني تفرق بين الكبتل والسمول ، ولكن ه8ناك مترجمات حديثه قد تصرف النظر عن هذا
• الشئ ، ولكن يجب أن تعتاد على الإهتمام بهذا الجانب عشان لا يصير أخطاء لمن يريد
• تطوير برامجك في المستقبل ويستخدم مترجم غير اللي عندك .
•
• ----------------------------------------------------------------------------
•
• نكمل الدرس السابق ، يوضح الشكل التالي شفرة البرنامج الذي قمنا بصنعه في الدرس
• السابق
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h >
•
• int main()
• {
• cout << "C++ is Cool \n " ;
• return 0 ;
• }
•
•
•
•
• السطر الثاني من البرنامج وهو الذي يحتوي على العبارة
•
•
• /* Sources Code - شفرة */
•
• int main()
•
•
•
• هذا السطر هو البدايه الحقيقه للبرنامج ، وهو عبارة عن إجراء function ، وهو
• عبارة عن مجموعة من الأوامر ، والإجراء لابد أن يحدد نوع القيمه التي سيعود بها
• وهي هنا int إختصار لـ integer تدل على أنه رقم ، أنظر الى السطر قبل الأخير في
• البرنامج وهو
•
•
• /* Sources Code - شفرة */
•
• return 0 ;
•
•
•
• لقد أعاد الرقم 0 وهذا يخبر النظام بأن البرنامج نفذ على الوجه السليم ، يميز
• الإجراء ()main عن بقيه الإجراءات الأخرى هو أنه يتم طلبه من النظام أثناء تشغيل
• البرنامج تلقائيا ( لا تشغل بالك بهذا الكلام ، أعرفه فقط كما هو مكتوب وقريبا
• ستفهم ما قلته لك تماما :-) )
• بعد () main ] انظر الى الكود في الأعلى ] نجد بعده علامة "}" ، السبب هو ان كافه
• الإجراءات يجب أن تبداء بعلامه } وتنتهي بـ { ، وهي تدل على بدايه ونهايه ، ويأتي
• في وسطها قلب البرنامج وهذه المنطقه تسمى بالكتله وهو في مثالنا
•
•
•
• /* Sources Code - شفرة */
•
• cout << "C++ is Cool \n " ;
•
•
•
• الكائن cout وينطق سي آوت ، هو لطباعه نص على الشاشه ، وكما في مثالنا قمنا
• بطباعه C++ is Cool ، طريقه إستخدام الكائن cout هو كتابه cout ثم علامه أقل من
• مرتين >> وبعدها علامه التنصيص " ثم العبارة ثم نقفل علامه التنصيص " ولاتنسى
• العلامه ; في الأخير ، ولا تنسى أيضا طلب المكتبه iostream.h في اول البرنامج عن
• طريق الأمر include الذي تعلمناه في الدرس السابق ، لأنها ضروريه للكائن cout
• فالكائن متواجد بها :)
•
• ملاحظه : العلامه n\ الموجوده في النهايه تطلب بدء سطر جديد ، وهي إختصار لـ New
• Line وتنطق New Line أيضا ولكن البعض ينطقها سلاش إن
•
•
• ----------------------------------------------------------------------------
•
• أكيد سالت نفسك ، هل توجد علامات غير n\ أم لا ؟ الجواب هو نعم يوجد ، وهذا
• الجدول يوضحها لك
•
• n\ ( سطر جديد ، إختصار لـ New Line)
• t\ ( جدولة ، تماما مثل ضغط Tab ، إختصار لـ Tab)
• b\ ( مسح الحرف الأخير ، إختصار لـ BackSpace )
•
• حاول كتابه شفره تطبع العلامه ( " ) على الشاشه ، أعتقد أنك سوف تفشل ، اسف على
• التحطيم ، شفرة البرنامج ستكون على النحو التالي
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• cout << " " " << "\n" ;
• return 0 ;
• }
•
•
•
•
• عند الترجمة يظهر الخطأ التالي :
•
•
•
•
•
• Cpp1.obj - 2 error(s), 0 warning(s)
•
•
•
•
• والسبب هو وجود العلامة " في الأول تدل على أن اللذي يليها هو الذي سوف تتم
• كتابته الى أن تتأتي العلامة " مره أخرى ، عند مرور المترجم على الكود السابق سوف
• يجد العلامة " بعد سي آوت ويعرف أن اللذي سوف يأتي بعدها هو الذي سوف يتم عرضه ،
• ولكن لا شئ بعدها الا العلامة مره أخرى " وهذا يدل على انه لا يعرض شئ ، ولكن تم
• فتح العلامة مره أخرى ( " ) ولم تقفل ، هل تريد التأكد من كلامي ، قم بإضافه
• العلامة " مره أخرى لتصبح أربع علامات وسوف ترى صحه كلامي ، يعني لازم يكون العدد
• موجب للعلامات وليس مفرد ، وأكيد أنك تتسأل وش هو الحل /
• إذا أردت عرض رساله وتحتوي على ( " ) كل ماعليك هو وضع أمامها علامة \ فقط
• نفس الشئ في العلامة ( \ ) نفسها ، فلو اردت عرضها في رسالتك وكتبت \ كما هي فلن
• تعرض ، ولكن يتوجب كتابه \\ لتعرض \ فقط ، حاول معرفه السبب بنفسك
•
•
• إستخدام الكائن cout للجمع والطرح والقسمه :=-
•
• سوف اعتبر انك سوف تتطلب المكتبه iostream.h وأن تعلن عن الإجراء ()main وتصع
• القوس } في البدايه والقوس { في النهايه وأن تعيد القيمه 0 عن طريق return وكل
• ذلك دون أن أطلب منك ، وكل ماعلي هنا هو شرح لك إستخدام الكائن cout فقط
• الجمع
•
•
• /* Sources Code - شفرة */
•
• cout << (1+1) "\n" ;
•
•
•
•
• هذه الشفره بعد ما تقوم بكل ما قلت لك عنه سابقا وهو أن تتطلب المكتبه iostream.h
• و وأن تعلن عن الإجراء ()main وتضع القوس } في البدايه والقوس { في النهايه وأن
• تعيد القيمه 0 عن طريق return
•
•
• /* Sources Code - شفرة */
•
•
• #include < iostream.h >
• int main ()
• {
• cout << (1+1) << "\n";
• return 0 ;
• }
•
•
•
• يقوم هذا الكود بجمع القيمتين 1+1 ويتضح لنا أننا قمنا بوضعها داخل قوسين ، وفي
• الحقيقه فإن هذا الإجراء غير مطالب به أحيانا ولكن بعض المترجمات تحدث خطأ إذا لم
• تقوم بوضعه فالأفضل أن تعتاد على وضعه فكثير من المترجمات لا يفرق بين وضعه أو
• غير وضعه بينما هناك من يفرق ، لذلك تعود علىوضعه لكي لا تحدث أخطأ لم يريد تطوير
• برامجك ويستخدم مترجم غير اللي عندك :)
•
•
• القسمه والضرب والطرح :
•
• القسمه يكون بدل علامة + علامة /
• الضرب يكون بدل علامة + علامة *
• الطرح يكون بدل علامة + علامة -
•
• مثال على الطرح
•
•
• /* Sources Code - شفرة */
•
• cout << (1-1) << "\n";
•
•
•
•
• القسمه
•
•
• /* Sources Code - شفرة */
•
• cout << (1/1) << "\n";
•
•
•
•
• الضرب
•
•
• /* Sources Code - شفرة */
•
• ضع الشفره هنا واربح
•
•
•
• لا تصدقني في الشفره السابقه ، فإذا قمت بالفعل بترجمتها فسوف يظهر لك
•
•
•
•
•
• Cpp1.exe - 87 error(s), 0 warning(s)
•
•
•
•
•
• ولكن لو أردت كاتبتها كل ما عليك هو إضافه // أمامها لكي يقوم المترجم بتجهلها
• كما هو مبين هنا
•
•
• /* Sources Code - شفرة */
•
• // condor@phreaker.net
•
•
•
• ولك الخيار المفضل ويسمى بنمط سي ، وهو أن تضع */ في البدايه و /* في النهايه كم
• هو مبين لك هنا مثلا
•
•
•
• /* Sources Code - شفرة */
•
• /* E-Mail : condor@phreaker.net
• Msn Messnger : kondor_900@hotmail.com */
•
•
•
• ونسمي ما يتم وضعه داخل العلامة / أو */ بالتعليقات ، وفائده التعليقات هو أن
• يسهل عليك تعديل برنامجك في المستقبل ، أو يسهل على غيرك قراءته ، فتكتب في
• التعليق ما هي وظيفه الكود القادم ولماذا وكيف وكل شئ عنه ..
•
•
• ----------------------------------------------------------------------------
•
• الإجراءات :
• الإجراء ما يبغا له واحد يتفلسف فيه ويقعد يعرفه أو يخترع له تعاريف ويدعي أنها
• تسهل مفهومه ، فهو شئ بسيط جدا وسهل جدا جدا جدا ، لناخذ مثال
•
• ماذا يقوم به البرنامج التالي
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• cout << "condor home page" << endl ;
• return 0;
• }
•
•
•
•
• ملاحظه : العبارة endl تقوم بمثل عمل n\ وتنطق إيند إل أو إيند لاين ولكن يفضل
• End-ell ) إيند إل)
•
• وماذا يقوم به البرنامج التالي
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• void condor()
• {
• cout << "condor home page" << endl ;
• }
• int main ()
• {
• condor();
• return 0;
• }
•
•
•
•
• كلها تقوم بعرض رساله
• condor home page ) لك الحريه في تغييرها )
• في البرنامج الأول تم طلب الكائن cout مباشرة لطباعة رساله على الشاشه ، ولكن في
• البرنامج الثاني ونحن نعلم بأن البدايه الحقيقيه تكون بعد () int main وهي
•
•
• /* Sources Code - شفرة */
•
• int main ()
• {
• condor();
• return 0;
• }
•
•
•
• نجد أنه تم وضع العبارة ;()condor بدل من cout << "condor home page" << endl ;
• في البرنامج الأول ، ومع هذا فلقد عمل بنفس عمل البرنامج الأول وهذا يدل على أن
• ;()condor هو الذي يقوم بعرض الرساله ، ولكن كيف !!
• لو نظرت في أول البرنامج لوجدت الكلمة void وهي تستخدم لتعريف الإجراءات ، فلقد
• تم فيها تعريف إجراء مسمى بـ ()condor وأعطي مهمه وهي عرض الرساله condor home
• page كما هو موضح
•
•
• /* Sources Code - شفرة */
•
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
• الآن قد تم تعريف هذا الإجراء ، وإن تم مقابله كلمة ()condor في برنامجك فسوف يتم
• تنفيذ الشيفره cout << "condor home page" << endl ; مباشره
•
• قواعد أساسيه لإستخدام الإجراءات دون أخطاء :
• 1- عند تعريفك لإجراء يجب أن لا تنسى إستخدام void (أو غيرها، سوف نوضح هذا في
• الدرس القادم) وثم بعدها إسم الإجراء ولا تنسى القوسين () بعد إسم الإجراء فذلك
• ضروري جدا إذا إستخدمت void ، في الدرس القادم سوف نتعلم إنشاء إجراءات من نوع
• integer وسوف يكون الأمر مختلف عن هذا تماما ، لا تشغل بالك الآن .
• 2- بعد الإعلان عن الإجراء وقبل البدء في كتابه الشيفره الخاصه به لا تنسى فتح
• القوس { وعند الإنتهاء من كتابه الشيفره لا تسنى إقفال القوس } كما هو مبين هنا
•
•
• /* Sources Code - شفرة */
•
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
• 3- خذ هذه قاعده أساسيه تخفف عليك وجع الراس ، دائما عند طلب تعريف إجراء لا لا
• لا نضع العلامة ; في النهايه ولا نضع له العلامة { في البداية ولا العلامة } في
• النهايه ، وعند طلب إجراء يتوجب عليك وضع إسمه كاملا مثلا الإجراء ()condor الذي
• تم تعريفه في المثال السابق وثم العلامة ;
• 4- عند رغبتك في تعريف إجراء وطلبه لا تضع طلبه قبل إنشاءه ، بمعنى آخر لا تقوم
• بطلبه وأنت لم تقم بإنشاءه وثم تتذكر ذلك وتقوم بإنشاءه في آخر البرنامج مثل هذا
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main ()
• {
• condor();
• return 0;
• }
• void condor()
• {
• cout << "condor home page" << endl ;
• }
•
•
•
•
• إذا فعلت ذلك فأنت خارق للقانون .
• 4- ما يصلح يكون إسم الإجراء فيه مسافات .
• 5- لطلب إنشاء إجراء لازم يكون ذلك في أول البرنامج بعد include ، فما يصير مثلا
• يكون داخل بدايه البرنامج الفعليه ، أي بعد () int main
•
•
•
• خلاصه الكلام :
• الإجراء هو مجموعه من الأوامر يتم تعيين له إسم وتخزن في الذاكره طيله تشغيل
• البرنامج ، وتقوم بتنفيذ الشيفرات المكتوبه بداخلها عندما يتم طلبها ، والهدف
• منها هو تسهيل التعديل في البرنامج لاحقا ، فلو أفترضنا أنك تريد كاتبه برنامج
• بقوم بعرض رساله بشكل متكرر عند حالات معينه ، فسوف تقوم بكتابه هذه الرساله أكثر
• من مره ، وعند تعديلها سوف تتعب من البحث عن الرسائل هذه وتغييرها ، ولكن لو قمت
• بإعطائها إجراء فسوف يسهل ذلك عن طريق تعديل الإجراء فقط !!
•
•
• ----------------------------------------------------------------------------
•
• في الدرس السابق عرفنا إن الإجراء هو إسم محجوز في الذاكره وعند طلبنا له يقوم
• بتنفيذ الشيفره المناطه به ، ولكن هذا ليس كل شئ ، فالإجراءات لها فوائد أكثر من
• ذلك وليس كل شئ عنها ما ذكرناه وليس كل شئ أيضا هو الذي سأذكره الآن ...
•
• الإجراءات قد تعود بقيمه لنا وقد لا تعود بشئ ، مثلا ممكن أن تقوم بجمع قيمتين
• وطرح قيمتين أو ضرب ثلاث قيم أو قسمه أربع قيم وتعود لنا بالنتيجه.... الخ
•
• مثال :
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int mns (int a,int b)
• {
• return int (a-b);
• }
• int main()
• {
• int c,d,f;
• cout << "Plz Enter 2 Number: \n";
• cin >> c ;
• cin >> d ;
• f=mns (c,d);
• cout << f << endl;
• return 0 ;
• }
•
•
•
• عند تصريفك للكود التالي وتشغيله سوف يظهر لك كما هو مبين هنا
•
•
•
• /* MS-DOS */
•
• :Plz Enter 2 Number
•
•
•
•
•
• كل ما عليك هو إدخال رقمين ، أما أن تدخل الأول ثم مسافه وتدخل الثاني أو تدخل
• الأول وثم تضغط إنتر وتدخل الثاني ، مثلا ندخل رقم 2 ثم مسافه ورقم 2 ونضغط إنتر
• كما هو هنا
•
•
• /* MS-DOS */
•
• :Plz Enter 2 Number
• 2 1
• 1
• Press any key to continue
•
•
•
•
•
•
• بعد ضغط زر إنتر قام البرنامج بطباعه لنا الرقم 1 ، هذا يدل على عمل البرنامج وهو
• طرح القيمتين من بعض ، الآن سوف نقوم بشرح الكود كيف عمل ذلك ..
•
• شرح الكود :
• السطر الأول معروف ، في السطر الثاني هو كما ميبن لنا هنا
•
•
• /* Sources Code - شفرة */
•
• int mns (int a,int b)
•
•
•
• قمنا بالإعلان عن إجراء وأعطاناه الإسم mns ، صحيح أننا لم نستخدم void ، و void
• التي تعلمناها في الدرس السابق ماهي الا تعريف الإجراء ولكن يمكن تعريف الإجراءت
• بـ int ، ولكن متى نستخدم الأولى ومتى الثانيه ، نستخدم الأولى إذا لم يكن هناك
• قيمه يرجع بها ، مثلا يطبع رساله ، أما إذا كان يأخذ عددين ويعمل عليهما عمليه
• مثل طرح ويرجع لنا النتيجه فيجب أن تستخدم int وهي إختصار لـ integer أي أنه
• سيرجع لنا عدد صحيح وليس حرف أو رمز
• وقمنا بإعطاء الإجراء الذي قمنا بتعريفه بالإسم mns قيمتين هما a و b كما هو موضح
• ، ستعرف السبب قريبا :)
• السطر الثالث وفيه العلامة } معروفه ، والسطر الرابع وهو المهم
•
•
•
• /* Sources Code - شفرة */
•
• return int (a-b);
•
•
•
•
• هذا هو السطر الذي يقوم بطرح القيمتين a و b ويعود لنا بالنتيجه
• السطر الخامس وفيه العلامة {
•
• السادس وهو بدايه البرنامج الفعليه ، وهو اللي يبداء منه البرنامج ، وقبل قمنا
• بشرحه
• السطر السابع معروف
• السطر الثامن يعلن لنا عن ثلاث قيم c و d و f ومن نوع integer
•
•
• /* Sources Code - شفرة */
•
• int c,d,f;
•
•
•
•
• السطر التاسع :
•
•
• /* Sources Code - شفرة */
•
• cout << "Plz Enter 2 Number: \n";
•
•
•
• يظهر رساله للمستخدم تطالبه بإدخال رقمين Two Number
•
• السطر العاشر والحادي عشر :
•
•
• /* Sources Code - شفرة */
•
• cin >> c ;
• cin >> d ;
•
•
•
• فيه هنا جديد ...
• أولا لاحظ أن العلامة أكبر من مرتين ع** العلامة أصغر من مرتين لـ cout وهذه نقطه
• مهمه ، الآن وبعد أن عرفت هذا سنتكلم عن cin
• cin تقوم بأخذ القيمه الأولى التي أدخلتها وتجعلها بدل c الذي أعلنت عنه في السطر
• الثامن وعلى أنه integer ، و cin في السطر التالي تاخذ القيمه الثانيه التي
• أدخلها المستخدم وتجعلها بدل d الذي كذلك اعلنت عنه في السطر الثامن على أنه
• integer عدد صحيح
•
• السطر الثاني عشر والثالث عشر:
• f والذي أعلنت عنه أيضا في السطر الثامن لم يأخذ قيمته ، c أخذ العدد الأول الذي
• أدخله المستخدم و d أخذ العدد الثاني ، إذن f كما هو موضح = mns ، و mns هو
• المعلن عنه في السطر الثاني ويعيد لنا مطروح عددين ، والعددين هما القيمتان التي
• أدخلهما المستخدم لـ c و d ، يتم أخذ القيمتان الى a و b المعلن عنهما في أول
• البرنامج ويتم إجراء عمليه الطرح عليهما من خلال
•
•
• /* Sources Code - شفرة */
•
• return int (a-b);
•
•
•
• ويعود لنا بالقيمه وتسجل لـ f ، وفي السطر الثالث عشر
•
•
• /* Sources Code - شفرة */
•
• cout << f << endl;
•
•
•
• يتم تبديل f بقيمتها التي سجلت لها ، ولكن لماذا لا يتم طباعه f كماهي ، السبب هو
• أننا لم نضعها داخل علامات تنصيص ! عليك تجربه ما قلت لك وأن تقراء هذا الدرس
• أكثر من مره ولا تقراء فقط لتقراء ، إقراء لتفهم ..... ولا تستغرب فهذه هي طريقه
• سي ++ فمع الممارسه ستتعود ...
• ملاحظه :
• البرنامج الذي كتبناه في الأعلى إذا قمت بكتابه لاجل جمع عددين فأنت أحمق بالفعل
• ، اقصد ما انت عارف الطبخه :) هذا مجرد مثال للإجراءات وليس مثال لجميع عددين أو
• غيرهما ، إذا أردت جمع عددين او طرحمها أو ضربهما إستخدم البرنامج التالي
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a, b;
• cout << "Enter Two Number\n";
• cin >> a;
• cin >> b;
• cout << a <<"\tand\t" << b << "\t=" << a+b << "\n" ;
• return 0;
• }
•
•
•
•
•
•
•
• فهذا هو الصحيح ، ولاداعي لشرحه فأنت ستفهم إذا فهمت ما سبق من هذا الدرس والدروس
• السابقه وباقي عندي ملاحظه فهي لو جربت تقسم عدد 22 على 7 رايح يطلع الناتج 3 ،
• وين الباقي وهو 1 ، لا تشغل بالك فهذه احد قوة سي ++ ، لاتستغرب ستعرف في درس
• ثاني كيف جات قوه وكيف نحسب الباقي..
•
• حاول كتابة برنامج يقوم بعمليه ضرب لثلاث قيم بإستخدام الإجراءات، إذا إستطعت فعل
• ذلك فأعتبر نفسك فهمت كل شئ في الدرس هذا، ولكن تذكر ان كل ماقلت لك في الدرس هذا
• والدروس السابقه ما هي الا القشور واللب يأتي بعد مسافه كيلو من هنا ;) ، تقدر
• تروح للدرس السادس .
•
• ----------------------------------------------------------------------------
•
• كيف تقسم عددين مع حساب المتبقي من القسمه ؟ كيف تقسم عددين دون حساب متبقي
• القسمة ؟ كيف تحسب باقي القسمة فقط ؟!
•
• البرنامج التالي ماذا يفعل ، حاول أن تعرف دون ترجمته
•
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t/\t" << b <<"\t=\t"<< a/b << endl;
• return 0;
• }
•
•
•
•
•
• إذا ماعرفت وش يصلح لازم ترجع لدروس السابقه والا ترى تحوس نفسك !
•
• البرنامج يقوم بطلب رقمين من المستخدم إما أن يدخل الأولف ثم مسافه ويدخل الثاني
• او يدخل الأول وثم يضغط إنتر ويدخل الثاني ، وعند إدخال الرقمين يقوم البرنامج
• بطباعه نتيجه قسمه العددين على بعض فمثلا نأخذ هذا المثال من موجه الدوس إثناء
• تشغيل البرنامج
•
•
•
• /* MS-DOS */
•
• Microsoft(R) Windows 98
• C)Copyright Microsoft Corp 1981-1998.(
•
• C:\WINDOWS\Desktop\MyJunk\C++\Debug>cpp1.exe
• Enter Two Number
• 22
• 7
• 22 / 7 = 3
•
• >C:\WINDOWS\Desktop\MyJunk\C++\Debug
•
•
•
•
•
• ملاحظه : العلامة " / " تعني قسمة
•
• نرى نتيجه 22 / 7 هي 3 ، وين راح الباقي واللي هو 1 ، السبب هو أننا في البرنامج
• طلبنا القسمه دون الباقي ، ولكن إذا أردنا طلب الباقي يجب ان نضع 22 % 7 وهذا
• ينتج لنا الرقم 1 فقط واللي هو الباقي ، ولو وضعنا 22 / 7 و 22% 7 رايح يطلع لنا
• الناتج والباقي ....
• مثال على حساب الباقي فقط
• كل ما علينا هو تغيير السطر الثامن ، وبالتحدد تغيير العلامة "/" ليصبح هكذا
•
•
• /* Sources Code - شفرة */
•
• cout << a << "\t%\t" << b <<"\t=\t"<< a%b << endl;
•
•
•
• لاحظ أننا ما نسينا نغيرها حتى في الرساله التوضيحيه :)
• يعني الشفره كلها تصير مثل كذا
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t%\t" << b <<"\t=\t"<< a%b << endl;
• return 0;
• }
•
•
•
•
• نشوف البرنامج من الدوس ، طبعا البرنامج يحسب الباقي فقط ، ما يجيب النتيجه ،
• يعني 22 % 7 تطلع 1 وهو متبقي القسمه وهذا تشوفه الحين مو مفيد لكن رايج تحتاج
• تطلع باقي القسمه دون الناتج في برامج كثيره جدا
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 22
• 7
• 22 % 7 = 1
• Press any key to continue
•
•
•
•
•
• طيب بقي سؤال واحد ، كيف تصلح برنامج يحسب الناتج والباقي سواء ، والله إذا ما
• عرفت تحلها فأنت ... والا بلاشي ، أقولك إذا ماعرفت تحلها يعني انا ما أعرف اشرح
• :)
•
• هذا هو الحل :
•
•
• /* Sources Code - شفرة */
•
• #include < iostream.h >
• int main()
• {
• int a,b;
• cout << "Enter Two Number" << endl;
• cin >> a;
• cin >> b;
• cout << a << "\t/\t" << b <<"\t=\t"<< a/b << "\nwalbagi ho\t" << a%b <<
• endl;
• return 0;
• }
•
•
•
• كل اللي عليك تشوف التغييرات في السطر الثامن ....... شكل البرنامج في الدوس مثل
• كذا
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 22
• 7
• 22 / 7 = 3
• walbagi ho 1
• Press any key to continue
•
•
•
•
•
• وهذا شكل ثاني لقسمه 21 / 3
•
•
•
• /* MS-DOS */
•
• Enter Two Number
• 21
• 3
• 21 / 3 = 7
• walbagi ho 0
• Press any key to continue
•
•
•
• المعاملات الحسابيه :-
• هي خمسة
• + الحمع
• - الطرح
• * الضرب
• / القسمه
• % لحساب الباقي من عمليه القسمه
•
•
• ----------------------------------------------------------------------------
•
• مراجعة :-
•
• في الدرس الأول
• عرفنا أن الأمر include ......
• سأذكر لك صيغه أخرى للأمر include وهي على الشكل
•
•
• /* Sources Code - شفرة */
•
• #include "iostream.h"
•
•
•
• وضعنا العلامة (") بدل من (<) ، أنا لا أنصحك بهذه الطريقه لأنها قد تسبب أخطأ في
• بعض المترجمات وقد تعمل مع أخرى ، ولاتنسى # في بدايه أمر include
•
• في الدرس الثاني
• كان كل كلامنا حول الكائن سي آوت cout وصيغته العاديه على الشكل
•
•
•
• /* Sources Code - شفرة */
•
• cout << "C++ is Cool \n " ;
•
•
•
•
• عندي نصيجه تقلل من وجع الراس وهي ضع علامة (;) في نهايه كل سطر داخل تحت الإجراء
• ()int main من بدايه القوس { الى نهايته } وكذلك في كل سطر تجده يبن قوسين القوس
• { و } .... هذه خذها قاعده ، ولكن هناك حالات شاذه مثل إستخدام
• #define
• لتعريف الثوابت ، لاتشغل بالك بهذا الآن
•
• الدرس الثالث
• كان كل حديثنا حول علامات الهروب مثل
• n\
• t\
• و برامج بسيطه توضح عمليه الجمع والطرح والقسمه ، و في النهايه تكلمنا عن علامات
• التعليق
•
•
•
• /* Sources Code - شفرة */
•
• /* E-Mail : condor@phreaker.net
• Msn Messnger : kondor_900@hotmail.com */
•
•
•
•
•
• الدرس الرابع
• أشهر صوره تنشاء في إجراءات وتطلب ، ولكن أستعجلنا فيه شويه ، والا الإجراءات
• موضوعها طويل ورايحين نتكلم قيه بدقه في درس ثاني .
•
• الدرس الخامس
• تابع للإجراءات
•
• الرس السادس
• حلينا مشكله ، وهي إظهار باقي القسمه ، وصممنا برنامج يطلب إدخال رقمين لإجراء
• عمليه حساب عليهما ، وأخذنا الأشكال الخمسه للمعاملات الحسابيه ...
•
•
•
• ----------------------------------------------------------------------------
•
• المتغيرات (Variable):
• المتغير هو قيمه (حروف او أرقام) يتم الإعلان عنها في أول البرنامج ويعطى لها إسم
• وتخزن في ذاكرة جهازك (عندما أقول لك ذاكرة فأنا اقصد الـRAM ) وعند يتم مقابله
• إسم اللمتغير يتم يبديله بقيمته التي اعلنت له في البدايه ، والهدف منها ما أقدر
• أحصره لك لأن أهدافها كثيره وماراح تعرفها الا مع الممارسه راح تكتشف حاجتك
• الماسه للإعلان عن متغيرات ، كل ماعليك الآن هو فهمها فيوم تحتاجها ، أما إذا كنت
• قد عملت على لغه برمجه غير سي ++ فاكيد عارف فائداتها.
•
• كيفيه الإعلان عن متغير :
• كل ماعليك لتعريف متغير هو ذكر نوعه وثم مسافه وثم إسمه وأخيرا فاصله منقوطه (;)
• مثال
•
•
•
• /* Sources Code - شفرة */
•
• int c;
•
•
•
•
• النوع هو integer يعني رقم ، وإسم المتغير هو c ويوجد إنواع للمتغيرات غير النوع
• int وهو كما يلي
•
• أنواع المتغيرات
• long int (عدد طويل)
• وهو يقبل من سالب 2147483648 الى موجب 2147483647
•
• unsigned long int (عدد طويل ولكن بدون علامة ، أي بدون علامة سالب والا موجب)
• من صفر الى 4294967295
•
• short int (عدد قصير)
• يقبل من سالب 32768 الى موجب 32767
•
• unsigned short int (عدد قصير بدون علامة)
• من صفر الى 65535
•
• char (متغير حرفي)
• من صفر الى 256
•
• float (عدد بعلامة عشريه)
• 12e-38 الى سالب 34e38
•
• double
• من 22e-308 الى سالب 18e308
•
• bool
• true (or) false
•
• هذا على نظام 32 بت أما عن الأجهزة القديمه التي تعمل على 16 بت فما أدري عنها ،
• ما اعتقد بقي أحد على أنظمه قديمه ، أكثر المبرمجين يستخدمون ويندوز 98 أو أحدث
• او ليون** :)
•
• ملاحظه :
• عند كتابه المتغير int فهذا يعني انه long int أو signed long int
•
• كما ذكرنا سابقا ان المتغير يحجز له مكان في ذاركة جهازك ، ولمعرفه هذه المساحه
• فالامر يختلف من نظام الى نظام آخر ، لمعرفه كم تحجز المتغيرات على جهازك عليك
• إستخدام sizeof لمعرفه ذلك ، على النحو التالي
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• cout << sizeof(unsigned short int);
• return 0;
• }
•
•
•
•
•
• هذا البرنامج يقوم بعرض المساحه التي يحجزها المتغير unsigned short int مقاسه
• بالبايت byte
• وهذا يعرض الماسحه التي يحجزها المتغير ............. (أكمل الفراغ(
•
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• cout << sizeof(bool);
• return 0;
• }
•
•
•
•
•
• شروط ونصائح يجب إحترامها لكاتبه أسماء المتغيرات :
• 1- ما يصلح تحط في الإسم مسافه
• 2- ما تحط إسم متغير وهذا الإسم محجوز في سي ++ مثل تحط إسمه return
• 3- أعلنت عن إسمه مستخدم حروف كبيتل وسمول لازم تستدعيه بنفس الأحرف مع التقيد
• بالكبيتل والسمول
• 4- ممكن تستخدم السرطه اللي على تحت (_) لتعبير عن مسافه بدل من وضع مسافه
•
• تعيين قيمة للمتغيرات :-
• سبق وان قلت أن المتغيرات لها قيمه ، وحنا اللي عرفناه الحين كله كيف نعلن عن
• متغير ونعطيه إسم ونوع فقط ، طيب وين قيمته اللي يحملها ...
• في الحقيقه القيمه يمكن أن يقوم مستخدم البرنامج بإدخالها ، أو من الممكن أن
• تحددها أنت في البرنانج ، وذلك راجع لعمل البرنامج ، مثلا على الشكل التالي قمنا
• بتحديد قيمه
•
•
•
• /* Sources Code - شفرة */
•
• int x=16;
•
•
•
•
• الحين تم تعين متغير من نوع integer وله الإسم x وقيمته هي 16
• هذا مثال آخر ، ولكن عن إعلان لمتغيرين ثم ضربهما في بعض
•
•
•
• /* Sources Code - شفرة */
•
• # include < iostream.h>
• int main()
• {
• long int a=10;
• long int b=10;
• cout << a*b < return 0;
• }
•
•
•
•
•
• لو اردنا المستخدم هو الذي يحدد القيمه للمتغير a و b نستخدم الكائن cin ، حاول
• فعل هذا ، أذكر أني حطيت مثال ممتاز في الدرس 6 راجعه إذا نسيت
•
• الكلمة الأساسية typedef :-
• مع الوقت وخصوصا إذا كنت بصدد كتابه برنامج كبير رايح تشوف أن كتابه unsigned
• short nint مثلا مملا وقد يحتمل حتى حدوث أخطأ وقد يصعب عليك تعديل المتغير هذا
• الى unsigned long int مثلا مستقبلا ....
• الحل هو إنك تنشئ إسم مرادف يعبر عن unsigned short int ولكن أقصر وسهل الحفظ ،
• إستخدم typedef لفعل هذا ، وكل ما عليك فعله هو كتابه typedef ثم نوع المتغير
• ومسافه وإسمه الجديد وأخيرا فاصله منقوطه ، مثال
•
•
•
• /* Sources Code - شفرة */
•
• typedef unsigned short int usi ;
•
•
•
•
• في هذا المثال نكون قد أنشأنا كلمة usi لتحل مكان unsigned short int
•
• يعني نقدر نكتب
•
•
•
• /* Sources Code - شفرة */
•
• usi x=16;
•
•
•
•
• بدلا من
•
•
•
• /* Sources Code - شفرة */
•
• unsigned short int x=16;
•
•
•
•
• وهذا مثال كامل
•
•
•
• /* Sources Code - شفرة */
•
• #include <iostram.h>
• typedef unsigned short int usi;
• int main()
• {
• usi x=16;
• cout << x << endl;
• return 0;
• }
•
•
•
•
•
-----------------------------------------------
| Copyright (C) 2001 THE DEATH GROUP Home Page |
| http://DEATHIN2005.TRIPOD.COM |
| ALSANJAK1@YAHOO.COM |
-----------------------------------------------
EOF