أولاً أحب أن أشكر الأخ الفاضل طارق موسى على الملاحظات التي علق بها على الموضوع السابق وأعده وأعد الجميع إن شاء الله سوف أقوم بعمل سلسلة متنوعة من الدروس ومن ضمنها شرح لــ class
وإليكم هذه الهدية المتواضعة الثانية:
وهي عبارة عن شرح مبسط لمبادئ لغة ++C:
مقدمة عن لغة C++:
كانت أول بداية للغة السي في مختبرات شركة AT&T الأمريكية في عام 1972م وكانت البداية كمشروع تولى الإشراف عليه دينيس ريتشي ( Dennis Ritchie ). وهو يعتبر مخترع لغة السي باستخدام نظام التشغيل Unix. ولغة سي هي في الأصل لغة قديمة يطلق عليها اسم BCPL. و BCPL طورت بواسطة مارتن ريتشارد ( Martin Richards ) في كامبرج عام 1967م والتي بدورها كانت لغة B والتي اخترعت بواسطة كين تومسون. ولقد أدت لغة Bإلي تطوير لغة السي في السبعينات.
حيث قام دينيس ريتشي ( Dennis Ritchie ) وأخذ من لغة B أحسن تعليماتها ، وغير في كثير من قيودها ، وأضاف إليها تعليمات أخرى عديدة وجعل منها لغة برمجة وسماها لغة C.
وبالرغم من أن لغة C قد أنشأت لاستخدامها في برمجة النظم إلا أنه انتشر استخدامها كلغة ذات مستوى عالي في تنفيذ البرامج التطبيقية ، ومع ذلك فإن لغة C و C++ تستخدمان كلغة ذات مستوى متدنى وذلك نظراً على توفير المميزات التي توفرها اللغات في هذا المستوى كالقدرة على التعامل مع العناصر الثنائية bit مثلاً. وفي الوقت نفسه تستخدم لغة C و C++ كلغتين ذات مستوى عالي لقدرتهما على توفير الجمل التحكمية ( Control Statements ) والهياكل البنائية ( Data Structure ) والتي هي من مميزات اللغات ذات المستوى العالي.
ولقد تطورت لغة السي تطورات كبيرة واكتسبت شعبية و إقبالاً ولعل السبب الرئيسي هو شعبية وانتشار نظام التشغيل UINX ، وهو أهم نظام لتشغيل الحاسبات المتطورة. حيث أن هذا النظام كتب بلغة السي وهذا الأمر يعتبر مصدر قوة للغة السي بين سائر اللغات الأخرى.
وتعتبر لغة السي الآن من أشهر اللغات وأكثرها انتشاراً ولكن في الدول المتقدمة ، ولقد بدأ المبرمجون من كافة الاختصاصات يكتبون برامجهم بها ، وعلى سبيل المثال لا الحصر :
ظهر كتاب (برامج المايكرو كمبيوتر للمهندسين الكيميائين ) عام 1987م عن دار ماجرو هيل الأمريكية ،مكتوباً من ألفه إلي يائه بلغة السي ، ومعنى ذلك أنه يفترض أن على جميع المهندسين الكيميائين في أمريكيا يفهمون لغة السي ، ويتعاملون بها. أضف إلي ذلك أن معظم الشركات ، تطلب في إعلاناتها مبرمجين بلغة سي.
كانت معيارية لغة سي لعدة سنوات عبارة عن مصنف Compiler مزود على نظام التشغيل Unix . وبعد انتشار وشيوع الحاسب الشخصي تم إنشاء العديد من المصنفات للغة سي. ومما يجدر ذكره هنا أنه على الرغم من تعدد المصنفات كانت هناك توافقية عالية جداً بين أكثرها (INI) وهو برنامج كتب ليعمل على أحد المصنفات وإنه بلا شك سيعمل مع مصنفات أخرى. ومع ذلك لأنه لم يكن هناك أي معيار أو مقياس Standard معتمد. وكانت هناك بعض التناقضات بين المصنفات ، ولمعالجة هذه المشكلة أسست لجنة في صيف عام 1983م لإنشاء معيار ANSI:
و هي اختصار American National Standards Institute والتي تعني هيئة القياسات الأمريكية. وكان الدور الأساسي لهذه اللجنة هو تعريف لغة سي مرة واحدة وللأبد. وأخذت معالجة توحيد القياس للغة سي ما يقارب 6 سنوات وهذا أكثر مما كان متوقع. وفي نهاية عام 1989م ثبت أول معيار للغة سي وسمي ANSI C ، ولغة سي القياسية تسمح بأن يكون الاسم التعريفي مكوناً من إي عدد من الرموز حتى 31 رمز ، وكانت النسخ الأولى من هذا المقياس متوفرة في عام 1990م.
1-معنى لغة السي:
تعتبر لغة السي أحد اللغات ذات المستوى العالي ، وتعد أفضل لغة لكتابة برمجيات النظم التي تتحكم في المكونات المادية للحاسب مباشرة ، ومعظم نظم التشغيل مكتوبة بلغة السي مثل:
1-نظام Windows95/98.
2-نظام التشغيل UNIX.
2- مميزات لغة السي:
1-تعتبر لغة السي لغة سريعة :
وذلك لأنها تتحكم في المكونات المادية للحاسب مباشرة ، ولذلك تعد نسبياً أسرع تنفيذاً من اللغات الأخرى.
2-أنها لغة صالحة لأغراض متعددة ( تجارية - علمية - فنية - أدبية ).
3-للغة السي صورة قياسية معتمدة:
وذلك لأن تطوير لغة السي تم في شركة واحدة ( Bell ). ونلاحظ أن الفرق بين نمط و آخر من أنماط لغة السي هي فروق بسيطة جداً ، بينما نجد أن الفروق كبيرة وكثيرة بين أشكال وصور لغة مثل لغة البيسك ، لأن كل شركة صانعة لأجهزة الحاسبات تضع تعليمات خاصة ومختلفة للغة ، وتختلف عما تضعه الشركات الأخرى.
4-تعتبر لغة السي لغة غنية بالدوال:
وتوفر لغة السي للمبرمج عدداً كبيراً من دوال الإدخال والإخراج ، والدوال الرياضية والحسابية، وهو الأمر الذي يسهل عملية بناء البرامج بها.
3-عيوب لغة السي:
1-أنها تعتمد على أسلوب المترجم والذي يقوم بترجمة البرنامج بأكمله دفعة واحدة ثم يقوم بعرض قائمة من الأخطاء بعكس لغة البيسك التي تعتمد على أسلوب المفسر حيث يتم تفسير البرنامج سطر سطر مما يسهل على المستخدم تصحيح الأخطاء بكل سهولة ويسر.
2-هناك أخطاء لا يستطيع مترجم لغة السي أن يكتشفها.
-ملاحظة هامة: ان لغة C++ ليست هي لغة C مع التشابه الكبير لأوامر ودوال اللغتين
4-رموز لغة السي:
يبنى برنامج لغة السي من مجموعة من العناصر الآتية:
أ-حروف أبجدية إنجليزية مثل ( a ,b ,c ,…., z )
ب-الأرقام مثل ( 1 ,2 ,3 , …. , 9 )
ج-الرموز الخاصة مثل ( + ، - ، < ، > ، ! ، % ، $ ، <> ، / ، ، ( ) ، [ ] ، , ، # ، & ، * ، ^ )
5-كيفية تشغيل برنامج لغة C++:
-يوجد برنامج لغة السي على أحد الدليلين ( Borlandc أوTC )هناك أكثر من طريقة لتشغيل برنامج لغة C++ ومنها:
1- الطريقة الأولى ( إذا كان برنامج لغة السي موجود داخل الدليل Borlandc):
-من قائمة ابدأ نختار البرامج ومنها نختار موجه MS-DOS:
أ-أكتب السطر التالي:
C:>CDBORLANDC
و سوف يظهر لك الشكل التالي:
C:> BORLANDC>
ب- أكتب السطر التالي:
C:> BORLANDC>CD BIN
وسوف يظهر لك الشكل التالي:
C:> BORLANDC>BIN>
ج-أكتب السطر التالي:
C:> BORLANDC>BIN>BC
1- الطريقة الأولى ( إذا كان برنامج لغة السي موجود داخل الدليل TC):
-من قائمة ابدأ نختار البرامج ومنها نختار موجه MS-DOS:
أ-أكتب السطر التالي:
C:>CDTC
و سوف يظهر لك الشكل التالي:
C:> TC>
ب- أكتب السطر التالي:
C:> TC>CD BIN
وسوف يظهر لك الشكل التالي:
C:> TC>BIN>
ج-أكتب السطر التالي:
C:> TC>BIN>BC
2-الطريقة الثانية ( إذا كان برنامج لغة السي موجود داخل الدليل Borlandc):
1-من قائمة "أبدا" نختار أمر "تشغيل" فسيظهر لنا مربع حوار "تشغيل" ونقوم بكتابة السطر التالي في خانة "فتح":
C:> BORLANDC>BIN>BC
ثم نقوم بعد ذلك بالضغط على زر "موافق".
2-الطريقة الثانية ( إذا كان برنامج لغة السي موجود داخل الدليل TC):
1-من قائمة "أبدا" نختار أمر "تشغيل" فسيظهر لنا مربع حوار "تشغيل" ونقوم بكتابة السطر التالي في خانة "فتح":
C:> TC>BIN>BC
ثم نقوم بعد ذلك بالضغط على زر "موافق".
-الطريقة الثالثة:
1-من قائمة ابدأ نختار البرامج ومنها نختار مستكشف ويندوز .
2-نختار أما المجلد ( Borlandc أو Tc ) حسب الدليل الموجود عليه برنامج لغة السي بالجهاز.
3-ونختار منه المجلد الفرعي BIN ومنها نختار إما :
أ - رمز BC ( إذا كان الدليل الموجود عليه برنامج لغة السي هو Borlandc)
ب - رمز TC (إذا كان الدليل الموجود عليه برنامج لغة السي هو TC)
-ملاحظات هامة:
1-أسرع طريقة لمعرفة هل إذا كان الجهاز الذي تستخدمه عليه برنامج لغة السي أم لا:
هناك طرقتين أم عن طريق برنامج DOS أو عن طريق برنامج Windows:
1-عن طريق برنامج Dos:
نكتب الأمر التالي عند المحث C:
c:>dir Borlandc
أو
c:>dir TC
2-عن طريق برنامج Windows:
من قائمة ابدأ نختار بحث ومنها نختار ملفات أو مجلدات ونكتب في اسم الملف أما: Borlandc أو Tc.
ونختار بعد ذلك زر البحث الآن للبحث والتأكد من وجود برنامج لغة السي على الجهاز.
وبعد ذلك سوف تظهر لك شاشة زرقاء.وتحتوي هذه الشاشة على مجموعة من القوائم وعددها عشرة
قوائم وهي:
1-File-2-Edit-3-Search-4-Run-5-Compile-6-Debug
7-Project-8-Options-9-Window-10-Help.
وسوف تلاحظ في أسماء القوائم الموجودة في شاشة برنامج لغة C++، أن الحرف الأول من اسم أي قائمة يكون حرف كبير وملون بلون أحمر.(لماذا ؟)
لتعرف الإجابة بنفسك قم بعمل التطبيق التالي، وأنظر ماذا سيحدث عند القيام بكل من العمليات التالية:
1-أضغط على مفتاح ALT +F.
2-أضغط على مفتاح ALT +E.
3-أضغط على مفتاح ALT +H.
هل عرفت الآن لماذا يكون الحرف الأول من اسم أي قائمة حرف كبير وملون بلون أحمر؟
الجواب: لأنه عند الضغط على مفتاح ALT +F سوف تظهر لك قائمة ملف(File) وعند الضغط على مفتاح ALT +E سوف تظهر لك قائمة
تحرير(Edit) وهكذا ستجد أنه عند الضغط على مفتاح ALT +الحرف الأول من اسم القائمة سوف تفتح لك تلك القائمة.
ولنأخذ على سبيل المثال قائمة ملف(File) ستجد أنها تحتوي على ما يلي:
1- New 4-Save as 7-Print
2-Open 5-Save all 8-Dos shell
3-Save 6-Change dir. 9-Quit
ستلاحظ أن بعض الحروف الموجودة ضمن قائمة ملف ملونة بلون أحمر(لماذ1؟)
الجواب:لأنه عند فتح قائمة ملف(File) والضغط على أي حرف من الحروف الملونة باللون الأحمر سينفذ لك الأمر الذي اختارته،فمثلاً عند فتح قائمة ملف والضغط على زر حرف N على لوحة المفاتيح ستجد أنه سوف يظهر لك ملف جديد. وعند الضغط على زر الحرف Q على لوحة المفاتيح سوف تخرج من برنامج C++ فوراً. وقس على ذلك بالنسبة لباقي القوائم.
4-الصيغة العامة لبرنامج لغة C++:
دائماً عند كتابة برامج لغة C++ يجب كتابة الأسطر التالية:
#Include
#include
main( )
{
clrscr();
الأوامر و المصطلحات;
}
5- شرح مكونات الصيغة العامة لبرنامج لغة C++:
1-include#
include#: هو من أوامر لغة سي ++ ويسمى (المعالج المبدئي)
ملاحظة: يأتي برنامج لغة السي مزود بمجموعة من ملفات ( Header Files ) و هي تحتوي على مجموعة من مكتبات الأوامر التي نستخدمها في البرامج، مثل:
أ-iostream.h ب-stdio.h ج-conio.h
وستلاحظ في أسماء مكتبات الأوامر أنه عادة ما يأخذ القسم الثاني من أسماء الملفات ( Header Files ) الحرف h ( إشارة إلي header ).
2-
3-conio.h: وهي تعتبر مكتبة الأوامر الخاصة بالشاشة وتأتي معها الدالة Clrsdr والتي تعني مسح الشاشة.
3-main():وهي الدالة الرئيسية المكونة لجميع برامج لغة C++ وهي أهم دالة في البرنامج وأساس البرنامج. وتبدأ كل برامج لغة C++ التنفيذ بدءا من التابع main() ، ويجب أن يحتوي برنامج لغة C على تابع main() واحد فقط.
4- { : ويعني هذا الرمز بداية البرنامج.
5-clrscr : وهو أمر خاص لتنظيف الشاشة ويكون موجود داخل مكتبة conio.h والخاصة بأوامر الشاشة
6-الأوامر والمصطلحات: المقصود بها تعريف المتغيرات وإجراء جميع أنواع العمليات الحسابية والرياضية المختلفة.
-وتعتبر الفاصلة المنقوطة هي أصغر أمر أو تعليمة بلغي السي وتعني نهاية السطر أو الأمر.
7- } : ويعني هذا الرمز نهاية البرنامج.
6-أهم وحدات الإدخال والإخراج في برنامج لغة السي:
1-cin>>: وهي عبارة عن كلمة الإدخال في لغة C++ أو Input.
2-cout<<: وهي عبارة عن كلمة الإخراج في لغة C++ أو Output.
7-ملاحظات هامة يجب مراعاتها عند كتابة البرامج بلغة السي :
1-تأكد من كتابة الصيغة العامة للبرنامج بشكل صحيح.
2-في لغة C++ الأوامر بشكل عام تكتب بحروف صغيرة مثل:cin –cout وذلك لأن لغة C++ لغة حساسة بالنسبة للحروف، فمثلاً كلمة for من الكلمات المحجوزة في لغة C++ التي لا يمكن استخدامها في اسم المتغير ولكن كلمة FOR تختلف تماماً عن كلمة for في لغة C++، حيث يمكننا استخدام كلمة FOR في كتابة أسماء المتغيرات في لغة C++.
3-تذكر أنه لابد من وضع الفاصلة المنقوطة في نهاية أي دالة أو تعليمة أو أمر. ولكن تذكر أن جملة for وجملة if يجب أن لا تضع في نهاية إي منها فاصلة منقوطة.
4-لا تنس تعريف المتغيرات وخاصة في البرامج التي تطلب منك إدخال إي قيمة.
5-إي برنامج في لغة C++ لا يخلو من أمر إدخال وإخراج(طباعة).
8-وظائف مفاتيح الاختصارات في برنامج لغة C++:
1-F2: وتستخدم لحفظ ملف.
2-F3: وتستخدم لفتح ملف.
3-ALT +BKsp: وتستخدم للتراجع عن العمل الأخير.
4-Shift +ALT +BKsp: وتستخدم لإعادة كتابة العمل الأخير.
5-Shift +Del: وتستخدم لقص جزء معين من البرنامج.
6-Ctrl +Ins: وتستخدم لنسخ جزء معين من البرنامج.
7-Shift +Ins: وتستخدم للصق جزء معين من البرنامج.
8-Ctrl +Del: وتستخدم لحذف جزء معين من البرنامج.
9-Ctrl +F9: وتستخدم لتشغيل وترجمة البرنامج.
10-ALT +R: وتستخدم أيضاً لتشغيل البرنامج.
11-ALT +F5: وتستخدم لعرض النتيجة على الشاشة.
12-ALT +F3: وتستخدم لإغلاق الملفات المفتوحة.
13-F5: وتستخدم لإعطاء صفحة كاملة أو نصف صفحة.
14-ALT +X: وتستخدم للخروج من برنامج لغة C++.
مثال1: البرنامج التالي يقوم بطباعة الجملة This is my first C++ program.:
#include
main()
{
cout:(بشرط أن تكون كل جملة في سطر منفصل)
الحل:
في لغة C++ تستخدم الدّالة cout<< لطباعة الرسائل أو المخرجات على الشاشة، حيث أن هذه الدّالة شبيهة بالأمر Write في لغة باسكال والأمر Print في لغة بيسك. الأسطر التالية تمثّل عملية طباعة رسالتين على الشاشة:
Cout<<"Hello programmers";
cout<<"are you having a good day?";
الرسائل التي سيتم طباعتها على الشاشة هي تلك التي بين علامتي الاقتباس ضمن الأقواس الهلالية. لاحظ أن وظيفة cout<< لا تقوم بطباعة كل جملة في سطر جديد بشكل تلقائي: إذا قمت بكتابة الأسطر السابقة ثم تنفيذ البرنامج فإنك ستحصل على السطر التالي:
Hello programmersare you having a good day?
لاحظ أن الجملتين تداخلتا عند نهاية الأولى وبداية الثانية. إذا أردت أن تفصل بين الجمل بحيث تبدأ كل جملة في سطر فإنه يمكنك استخدام الحرفين (أو تسلسل الحروف الخاصة) n في نهاية كل جملة. فمثلاً الأسطر التالية تمثل طباعة نفس الجملة السابقة ولكن عملية طباعة الجملة ستخرجها في سطرين متتاليين:
cout<< "Hello programmersn";
cout<<"are you having a good day?";
وسنلاحظ أن عملية الطباعة على الشاشة ستتم بهذا الشكل:
Hello programmers
are you having a good day?
ملاحظة : يمكنك استخدام الأحرف الخاصة في أي مكان في الجملة ولكن بين علامتي الاقتباس. فمثلاً، السطر التالي صحيح ولكن قراءة الكلمة ستكون بشكل رأسي:
cout<<"Pnrnongnrnanmnmnenrnsn";
-نتيجة تنفيذ البرنامج:
هكذا ستظهر الكلمة على الشاشة:
P
r
o
g
r
a
m
m
e
r
s
ملاحظة:
-سؤال تطبيقي(1): أكتب برنامج يقوم بطباعة الجملة " Welcome To City" ؟
-سؤال تطبيقي(2): أكتب برنامج يقوم بطباعة الكلمتين التاليتين:
Hello
ALI
بشرط:
1-أن تطبع كل كلمة في سطر منفصل
2-أن تطبع الكلمتين على نفس السطر مع ترك مسافة خمسة أحرف بين كل من الكلمتين.
9-الملاحظات والتعليقات في لغة السي ( Comment ):
تستعمل سائر لغات البرمجة جملاً للتعليقات والملاحظات ، وكذلك لغة السي ، فمثلاً الجملة التالية:
10 REM This is a comment
هي جملة ملاحظة في لغة البيسك.
-طرق كتابة التعليقات في برنامج لغة السي:
توجد هناك طريقتين لكتابة التعليقات داخل برنامج لغة السي:
1- باستخدام الرمز التالي // . مثال على ذلك:
// this is a comment
ملاحظة: تذكر ان الرمز // هي عبارة عن ملاحظات لسطر واحد فقط وكلما وضعت سطر ملاحظات ضع هاتين العلامتين في بداية السطر.
2-باستخدام الصيغة التالية: /* التعليق يكتب هنا */ . مثال على ذلك:
/* this is a comment */
وتستعمل جمل التعليق في إي مكان من البرنامج ، وذلك لإبداء ملاحظة ما ، عند سطر ما في البرنامج
ولا تعتبر جملة تنفيذية ، بمعنى أنها لو حذفت من البرنامج لا يؤثر فيه ذلك شيئا.ويكمن استخدام أكثر من جملة تعليق في داخل البرنامج الواحد.
سؤال: ما هو المقصود بهذه العبارة ( تتمتع جملة التعليق بلغة السي بمواصفات فائقة لا تتوفر في غيرها من اللغات)
-ملاحظات هامة يجب مراعاتها عند كتابة التعليقات والملاحظات في برنامج لغة السي:
1-لا تترك إي فراغ بين الشرطة / والنجمة * من جهتي جملة التعليق.
2-يقوم مترجم لغة السي بإهمال النصوص المستعملة في جمل التعليق إي أنه لا يصححها حتى لو كتبت بطريقة خاطئة ولا ينفذها أيضاً.
3-يمكن وضع التعليق أو الملاحظة في إي مكان بالبرنامج وتعتبر الجملة التالية صحيحة:
y=a+b; /*add*/
4-لا ينصح بوضع تعليق داخل تعليق لأن ذلك يتسبب في وقوع أخطاء.
مثال3:هذا برنامج يقوم بإدخال عددين وحساب المتوسط الحسابي لهما وطباعة الناتج.
#include
main()
{
float a,b,c;
cout<<”enter 2 number”;
cin>>a>>b;
sum=a+b;
c=sum/2;
cout<<”sum=”<
مثال عام: أكتب برنامج يقوم بإدخال رقمين وجمع هذين الرقمين و إظهار الناتج باستخدام لغة C++؟
الرقم الأول F
الرقم الثاني S
الرقم الثالث TOT
1-الحل باستخدام لغة C++:
#Include
main( )
{
int F,S,TOT;
cin>> F;
cin>> S;
TOT =F+S;
cout<< TOT;
return 0;
}
سؤال: أكتب برنامج يقوم بإدخال ثلاثة أعداد ثم يقوم بحساب حاصل ضرب الأعداد ثم يقوم بطباعة النتيجة على الشاشة ؟
( أسئلة عامة على الفصل الأول )
س1: أشرح بالتفصيل ما تعرفه عن معنى لغة السي ؟
س2: حسب دراستك للغة السي قارن بين كل من: المميزات والعيوب في لغة السي ؟
س3:ما هي الرموز المستخدمة في لغة السي ؟
س4:أذكر ثلاث طرق مختلفة لتشغيل برنامج لغة C++ ؟
س5:أكتب الصيغة العامة لبرنامج لغة السي ؟ مع شرح كل جزء من أجزاء الصيغة ؟
س5:ما معنى كل من المصطلحات التالية:
1-include
2-main()
3-iostream.h
4-conin.h
س6:صحح الأخطاء في كل مما يأتي ( إن وجد خطأ ):
1- include (iostream.h )
2- float a
int b,c,d
3- cin<
4- cout>>ali
س7:أكتب برنامج يقوم بإدخال ثلاثة أعداد وحساب مجموع الأعداد والمتوسط الحسابي للأعداد ومربع كل رقم من هذه الأعداد الثلاثة ؟
س8:أكتب برنامج يقوم بإدخال أسمك وعمرك ورقمك ثم يقوم بطباعتهما على الشاشة ؟
س9:أكتب برنامج يقوم بحساب راتب موظف عدد ساعات عمله 120ساعة وقيمة أجر الساعة 45ريال؟
س10:أكتب برنامج لحساب راتب موظف بمعلومية عدد ساعات عمل الموظف وقيمة أجر الساعة ؟
10-أنواع البيانات في لغة C++:
تحتوي لغة C++ على خمسة أنماط من البيانات وهي:
1-الحروف (Character): ويرمز لها في لغة سي بالرمز char وهو مختصر من الكلمة (Character) ، وتتكون عادة من مجموعة ( أو واحد ) من الحروف الأبجدية أو الأرقام و الرموز الخاصة. ويمكن أن نخزن فيها 256 رمزاً ( لماذا؟ )
ويتم الإعلان عن المتغيرات الرمزية في بداية البرنامج على الصورة التالية ( مثلاً ):
char f,x;
حيث أن كل من f و x هنا رمزين ويمكن أن يحتويا على الحروف الأبجدية أو الأرقام و الرموز الخاصة .
وهذه صورة أخرى للإعلان:
char n='ali';
وهنا تعتبر هذه الجملة جملة إعلان وتعيين في آن واحد.
2-الأعداد الصحيحة (Integer):ويرمز لها بالرمز int مختصراً من كلمة (Integer) أي المعطيات الصحيحة ، التي قد تكون موجبة أو سالبة ، ويتم الإعلان عنها.كما في المثال التالي:
int a,m,y;
ويمكن أن يتم الإعلان بصورة أخرى على النحو التالي:
int x=100;
وهنا تعتبر هذه الجملة جملة إعلان عن x الصحيحة ، وجملة تعيين لقيمة x في وقت واحد
- ومما ينبغي علينا الانتباه إليه في جميع جمل الإعلان المختلفة ، أن نترك فراغاً واحداً على الأقل بعد int أو char ، فمثلاً تعتبر جملة الإعلان عن a على الصورة:
inta;
جملة خاطئة لأن المترجم لا يعرف كلمة inta ولا يميزها.
3-الأعداد الحقيقية (Floating-Point): ويرمز لها بالرمز float وهو مختصر لكلمة (Floating-Point) ويتم الإعلان عنها كما في المثال التالي:
float a,b,c;
4-الأعداد الحقيقية مضاعفة الدقة (double Floating-Point): ويرمز له بالرمز double ( إي عدد خاناته مضاعف )
سؤال:ما الفرق بين float - double ؟
ويتم الإعلان عنها على الصورة التالية:
double c;
5-عديمة القيمة (Void): وتعني القيمة الخالية ويتم الإعلان عنها على النحو التالي:
void tag;
ونستعمل void في لغة السي لعدة أغراض ومنها:
1-لتعيين نوع الدالة التي لا تعطي أي قيم عند استدعائها ، أو لجعل الدالة لا تعطي إي قيمة للبرنامج الرئيسي.
2-تستخدم في عملية رسم الأشكال.
3-لبيان أن قيمة تعبير من التعابير لن يستعمل في البرنامج.
4-تستخدم لإنشاء المؤشرات.
وسوف تلاحظ أن جميع الأنماط الأخرى مبنية أصلاً على واحدة من هذه الأنماط. والجدول التالي يوضح الحيز(حجم التخزين) لكل نوع من أنماط البيانات السابقة:
حيّز التخزين (بت) النوع / النمط
8 Char
8 Unsigned char
8 (signed) char
16 Int
16 Short
16 Short int
16 Signed
16 (signed) int
32 Long
32 Long int
32 Unsigned long
32 (signed) long
32 Float
64 Double
80 Long double
5-المتغيرات ( Variables ):
عند كتابة أي برنامج بلغة سي ، فإنك تحتاج إلي تخزين معلومات في مخازن ذاكرة الحاسب ، ويطلق على هذه المخازن اسم المتغيرات. وبما أن أنواع البيانات المراد تخزينها تكون عادة مختلفة مثل القيم الصحيحة أو الرمزية(الحروف) أو الحقيقية.
* شروط تسمية المتغيرات:
1-عدم بداية تسمية المتغير بأي رقم.
3-لا يمكن أن تستخدم علامات الترقيم أو علامات الاستفهام أو الكلمات المحجوزة مثل:for ضمن اسم المتغير، فمثلاً لاحظ الفرق بين أسماء المتغيرات في الأمثلة التالية:
1- int a,m,counter;
2- int a?,1999_age;
ستجد أن السطر الأول مسموح باستخدامه ولكن السطر الثاني غير مسموح باستخدامه لأنه يحتوي على علامة استفهام وعلامة ترقيم.
3-أن الاسم الذي نعطيه للمتغير يجب أن لا تختلف حالة حروفه في نفس البرنامج.
مثال: no لا تساوي كلمة NO .
* الكلمات المحجوزة ( Keyword ):
وهي كلمات قياسية معرفة مسبقاً لمترجم لغة سي ، ولها معان خاصة بها تؤديها في برنامج لغة C++ .
يعرض الجدول التالي الكلمات المحجوزة في لغة C++:
auto Double Int Struct
Break Else Long Switch
Case Enum Register Typedef
Char Extern Return Union
Const Float Short Unsigned
Continue For Signed Void
Default Goto Sizeof Volatile
Do If Static While
وكما تلاحظ من قائمة الكلمات المحجوزة في الجدول أعلاه ، أن الكلمات المحجوزة في لغة السي قليلة إذ تتكون من 30 كلمة محجوزة فقط ، وللعلم وللمقارنة مع اللغات الأخرى ، فإن لغة أدا (Ada) تحتوي على 62 كلمة محجوزة.
وإليك هذه الأمثلة الصحيحة على أسماء المتغيرات:
a b6 f15 sum grade door12 on_off
و سوف نستعرض الآن مجموعة من اسماء المتغيرات غير الصحيحة (غير مقبولة ) وسنوضح السبب لكل منها وهي:
7up
المتغير خاطئ والسبب: لأنه بدأ برقم وليس بحرف.
Win?
المتغير خاطئ والسبب: لأنه يحتوي على علامة استفهام.
Void
المتغير خاطئ والسبب: لأنه يحتوي على أحد الكلمات المحجوزة في لغة السي.
Tom,s
المتغير خاطئ والسبب: لأنه يحتوي على أحد الرموز الخاصة وهي الفاصلة (,).
Do it
المتغير خاطئ والسبب: لأنه يحتوي على مسافة بين اسم المتغير..
on-off
المتغير خاطئ والسبب: لأنه يحتوي على أحد الرموز الخاصة وهي (-).
( أسئلة على الفصل الثاني )
س1: وضح بالتفصيل ما هي أنواع البيانات في لغة C++ ؟
س2: ما المقصود بـ ( Void ) ؟ وما هي الأغراض التي يستخدم فيها ؟
س3: أمامك الجدول التالي والذي يوضح الحيز(حجم التخزين) لكل نوع من أنماط البيانات ، والمطلوب منك هو إكمال البيانات الناقصة في الجدول:
حيّز التخزين (بت) النوع / النمط
Int
Float
64
Void
س4:عرف المتغيرات ؟ وما هي شروط تسمية المتغيرات ؟
س5:عرف الكلمات المحجوزة ؟ مع ذكر عشرة أمثلة مختلفة على الكلمات المحجوزة في لغة C++ ؟
س6:بين هل أسماء المتغيرات التالية صحيحة أم لا مع ذكر السبب ( في حالة الخطأ ):
1- art
2-8bm
3-intb
4-char
5-for
6-if
7-void
8-FOR
9-the_on
10-the-on
11-th e
12- 7abc
س7:أكت برنامج يقوم بإدخال عددين ثم يقوم بإجراء جميع العمليات الحسابية الأساسية الأربعة من جمع وضرب وطرح وقسمة ؟
التعبير الحسابي ( Expressions):
تعريف: هو مجموعة من العمليات الحسابية بين الأعداد والثوابت والمتغيرات والدوال.
-أمثلة على التعبير الحسابي:
1-التعبير y * x يقابله في الجبر x y.
2-التعبير x / y يقابله في الجبر X
y
جملة التعيين ( Assignment Statement ):
-الشكل العام لجملة التعيين:
variable name = Expression;
حيث يوضع اسم المتغير وحده في الطرف الأيسر للجملة ، ولا يجوز أن يكون الطرف الأيسر عدد ثابت أو دالة أو عملية حسابية ، ويمكن للطرق الأيمن أن يكون عدد ثابت أو دالة أو عملية حسابية.
وتستخدم إشارة مساواة (=( واحدة بين الطرفين الأيسر و الأيمن للجملة ، ويجب ان تنتهي الجملة بالفاصلة المنقوطة ( ; ).
-أمثلة متنوعة على جمل التعيين:
1- a=5;
نلاحظ أن الطرف الأيمن ثابت عددي.
2- y=a+b;
نلاحظ أن الطرف الأيمن تعبير حسابي.
3- x=sin(36.8);
نلاحظ أن الطرف الأيمن دالة
4- I= I+1;
نلاحظ أن الطرف الأيمن تعبير حسابي.
ملاحظة: إذا لم تكن درست لغة البيسك أو فورتران من قبل ، فقد تسأل عن معنى ومفهوم الجملة الأخيرة
I = I+1;.
إن مفهوم هذه المعادلة في لغات البرمجة ، هو غيره في الجبر ، إذ أن المتغير هنا يمثل مخزناً أو صندوقاً واحداً في الذاكرة ، وقيمته ( أو قيمة ما في داخله ) في الطرف الأيمن هي القيمة القديمة التي يضاف إليها (يوضع بالصندوق) العدد 1 ، فتصبح القيمة الجديدة ( وهي الطرف الأيسر ) للمتغير I
هي لبقيمة القديمة مضافاً إليها 1 ، فمثلاً لو كانت قيمة I في الطرف الأيمن قبل تنفيذ الجملة يساوي 10 مثلاً فإن قيمة I في الطرف الأيسر ستكون 11 بعد إضافة 1 إلي مخزن I في الطرف الأيمن.
ولا تسمح لغة C++ بأكثر من جملة تعيين واحدة في سطر واحد ، فمثلاً الجملتان التاليتان لا تقبلان في لغة C++ ، ويعطيك المترجم رسالة الخطأ التالية: bad syntax.
Y= x+3 z= y/x;
ويمكنك إعادة كتابة الجملتين بشكل صحيح هكذا:
z= (y=x+5)/x
الأدوات المستعملة في لغة C++ ( Operators ):
ويوجد في لغة C++ ثلاثة أنواع من الأدوات وهي:
1-الأدوات الحسابية
2-الأدوات المنطقية والعلائقية
3-الأدوات الدقيقة
1- الأدوات الحسابية ( Arithmetic Operators ):
تسمح لغة السي باستعمال الأدوات الحسابية من جمع و طرح وضرب وقسمة ، كاللغات الأخرى ، إلا أن عملية الرفع إلي الأس ، ليس لها أدوات مباشرة مثل ما في لغة البيسك ، ولكنها تتم بطريقة أخرى.
وتختلف القسمة في لغة السي عنها في لغة البيسك ، إذ أنه أي جزء كسري ينتج عن القسمة يهمل مهما كان كبيراً ، كما في لغتي باسكال وكوبول ، فمثلاً ناتج القسمة 8/3 هو 2 فقط لأن الكسر 0.666 يهمل ، ويكون ناتج القسمة باستعمال الأداة / صحيح العدد.
ويمكننا أن نلخص الأدوات الحسابية المستعملة في لغة C++ فيما يلي:
الأداة الوظيفة
- للطرح أو كإشارة سالبة
+ للجمع
* للضرب
/ للقسمة
% لباقي القسمة الصحيحة
-- للنقصان
++ للزيادة
-ملاحظة هامة:يختلف اداء بعض العمليات الحسابية حسب نوع المعطيات الصحيحة أو الحقيقة أو الرمزية ، فعند معاملة المعطيات الحقيقية بالأدوات الحسابية ، يمكن القول إن العمليات الأساسية من جمع وطرح وضرب وقسمة ، تجري بالطريقة التي نعلمها، إلا أن هناك محظوراً واحداً يجب أن نذكر به هنا وهو أن تتعدى قيمة النتيجة من أية عملية حسابية الحدود المرسومة لنوع المتغير الناتج، لأن لكل نوع من أنواع المتغيرات حدوداً ، يعتبر تجاوزها خطأ ينتج عن خطأ في النتائج. وعند معاملة المعطيات الصحيحة بالأدوات الحسابية ، تعمل الأدوات بالطريقة التي نتوقعها ، وعند تعدي الحد المسموح بها للقيم الصحيحة فإن هذا يعني خطأ قد وقع ، وفي هذه الحالة لن تتلقى من المترجم أية رسالة خطأ
مثال: إذا كان لدينا البرنامج التالي:
#include
main()
{
int n= 33000;
n= n*3;
cout<
وعند تنفيذ البرنامج تتوقع أنت أن يكون الجواب 99000 أليس كذلك؟؟ إلا أن الجواب في هذه الحالة
لن يتعدى 30464 ، وهو الحد الأعلى المسموح به للقيمة الصحيحة.
وهناك أمر آخر يتعلق بالقسمة فعندما نقسم 8 على 3 قسمة صحيحة أي 8/3 فإن الناتج يكون صحيحاً وهو 2 فقط ، وإذا ما رغبت أن تحافظ على الجزء الكسري الذي أهمل وأسقط ، ويمكنك أن تحول القسمة إلي قسمة حقيقية 8.0/3.0 ، فإن الناتج سيكون 2.667 ، ولهذا السبب أدخلت لغة السي أداة باقي القسمة % والتي تعرف باسم ( Modulus Operator ) والتي تستعمل على النحو التالي:
7%3 ، وسيكون الناتج هو 1 وهو باقي القسمة الصحيحة 7/3 ، ومن الجدير بالذكر أن كلا من لغة الباسكال والكوبول تستعملان مثل هذه العملية ، ففي باسكال تكتب هذه العملية على النحو التالي:
7 MOD 3 ، وكلمة MOD هي اختصار Modulus.
2-الأدوات العلاقية والمنطقية ( Relational and Logical Operators ):
ويرجع اسم الأدوات العلاقية إلي العمليات المختصة بالقيم التي بينها علاقات ، ويرجع اسم الأدوات المنطقية إلي طرق التعامل مع هذه العلاقات ، ولهذا نجد أن هذين النوعين من الأدوات مع بعضهما البعض على الدوام ، ويعالجان ما يسمى بالتعبير المنطقي: وهو إحراء عمليات مقارنة بين كميات حسابية أو رمزية ، وتكون نتيجته منطقية وهي إما نعم (True) أو لا (False) ، ويكثر استخدام التعابير المنطقية في الجمل الشرطية ، والأمثلة التالية تبين لك ماهية التعبير المنطقي:
1-التعبير المنطقي: x=y جوابه إما نعم أو لا.
2-التعبير المنطقي: a>b جوابه إما نعم أو لا.
وفي لغة السي تعامل النتيجة لا (False) على أنها صفر (0) وتأخذ النتيجة نعم (True) أية قيمة غير الصفر ولكن المشهور أنها (1).
ويبين لنا الجدول التالي الأدوات العلاقية:
الأداة معناها
> أكبر من
>= أكبر من أو يساوي
< أقل من
<= أقل من أو يساوي
== يساوي*
=! لا يساوي
* تستعمل الأداة == هنا كأداة علاقية منطقية داخل تعبير منطقي ، وتستعمل الاداة الحسابية = لحساب في المعادلات.
ويبن الجدول التالي الأدوات المنطقية:
الأداة معناها
&& AND ( حرف العطف الواو )
|| OR ( حرف العطف أو )
! NOT ( للنفي )
مثال توضيحي:
إذا علمت أن:
int a= b= 3;
فأحسب نتيجة كل من التعابير التالية:
1- a<3
2- a<=3
3- a>b
4- a>=b
5- a= =b
6- a! = b
7- a= =b ||3
8- 3<5
3-الأدوات الدقيقة ( Bitwise Operators ):
تتميز لغة C++ عن سائر اللغات ذات المستوى العالي مثل البيسك والفورتران والباسكال ، أنها تستخدم أدوات دقيقة على مستوى وحدة التخزين الأولية ( البت bit ) واستعمل مثل هذه الأدوات هو أمر منطقي بالنسبة للغة C++ ، والتي صممت أصلاً لتحل محل لغة التجميع Assembly ، والتي تتعامل مع لغة الآلة.
وسميت هذه الأدوات بالدقيقة أو أدوات (البت) لأنها تتعامل مع (البت) ، وتستعمل هذه الأدوات مع المعطيات الصحيحة int والرمزية char فقط ، ولا تستعمل مع غيرها من أنواع المعطيات.
والجدول التالي يبين لنا الأدوات الدقيقة ومعنى كل منها:
الاداة معناها
~ (NOT) وهي أداة أحادية
& (AND) وهو حرف الواو (و)
| (OR) وهو حرف العطف (أو)
^ (XOR) وهي (أو) الاستثنائية
>> إزاحة إلي اليمين
<< إزاحة إلي اليسار
-ملاحظة هامة:
1- أن الأدوات الدقيقة لا تستعمل في الجمل الشرطية بطريقة الأدوات العلاقية والمنطقية ، ويجب التميز بينهما ، وللتوضيح قارن بين المثالين التاليين:
1- X = 7 && 8
النتيجة تساوي 1 وهي ( أداة علاقية ).
2- X = 7 & 8
النتيجة تساوي 0 وهي ( أداة منطقية ).
وذلك لأن الأعداد هنا تحول إلي نظام ثنائي ثم تجمع.
2-أن التعامل مع الأدوات الدقيقة ليس سهلاً للمبتدئين لأنه يتطلب منك معرفة أولاً الأنظمة العددية.
-استعمال الفراغات والأقواس:
من أجل أن تكون قراءة سطور برنامج لغة c++ واضحة ، يمكننا استعمال الفراغات بين الثوابت والمتغيرات أثناء كتابة البرنامج والمثاليين التاليين يوضحان لك المعنى الذي أقصده أكثر:
1-a=6/b-(100/c);
2-a = 6/b - (100/c) ;
لاحظ كيف باعدنا بين القيم في التعبير الثاني ليكون أوضح قراءة من التعبير الأول.
وأيضاً من المعلوم أن جعل كل عملية حسابية أو منطقية بين قوسين ، لا تسبب خطأ في العمليات الحسابية أو المنطقية ، أو أي بطئ في تلك العمليات ، بل تجعل التعبير أوضح قراءة كما في المثال التالي:
a= b/5 - 12*c - 8/d;
ولاحظ عند إعادة كتابة التعبير السابق وجعل كل عملية حسابية بين قوسين وسيصبح على الصورة:
a= (b/5) - (12*c) -(8/d);
ويعتبر التعبير الثاني أوضح من التعبير الأول ، أليس كذلك ؟؟
( أسئلة عامة على الفصل الثالث )
س1:عرف التعبير الحسابي ؟ مع ذكر مجموعة من الأمثلة على التعبير الحسابي ؟
س2:ما هي الأدوات المستعملة في لغة C++ ؟ مع شرح مفصل لكل نوع منها؟
س3:ما هو مفهوم المعادلة I= I+1 في لغة C++ ؟
س4:علل لما يأتي:
1-سبب تسمية الأدوات العلاقية بهذا الاسم.
2-سبب تسمية الأدوات المنطقية بهذا الاسم.
3-سبب تسمية الأدوات الدقيقة بهذا الإسم.
س5: إذا علمت أن:
int a=b=5;
1-a<7
2-a<=4
3-a>b
4-a>=b
5-a= =b
6-a! = b
7-a= =b ||5
8-5<4
-جمل التحكم والشرط والتكرار ( Program Control , Conditional & Loop Statements ):
يقصد بعبارات التحكم العبارات الخاصة بالبرنامج والتي يمكنها تغيير التسلسل الطبيعي لتنفيذ الجمل الخاصة بالبرنامج والذي يكون من أعلى إلي أسفل . وفي الأمثلة السابقة ، يتم تنفيذ
التعليمات بنفس ظهورها في البرنامج أي أن كل التعليمات قد تم تنفيذها الواحدة تلو الأخرى، وهذه النوعية من البرامج عادة ما تكون بسيطة وصممت لأجل أغراض قد لا تكون واقعية
وقد نحتاج إلي أن ننتقل من سطر إلي آخر في لغة C++ ،أو أن نقوم بتنفيذ بعض الجمل عند تحقق بعض الشروط ، أو أن نكرر عملية من عمليات الإدخال والإخراج أو الحساب عدداً من المرات ، لهذا يلزم استخدام عبارات التحكم حتى يتسنى الاستفادة من البرامج في تطبيقات أكثر فاعلية K وتعتبر أساليب الشرط والتحكم والتكرار بمثابة القلب في جسم لغات البرمجة ، وبدونها لا يمكن تنظيم إي برنامج.
-الجمل الشرطية:
تتعامل لغة C++ مع ثلاثة أنواع من جمل الشرط وهي:
1-جملة إذا الشرطية وأخواتها ( if statements ).
2-جملة التوزيع ( switch statement ).
جملة أداة الشرط ?.
1-جملة إذا الشرطية ( if statements ):
ولجملة إذا الشرطية ( if statements ) عدة صيغ وهي كالتالي:
-الصيغة الأولى لجملة إذا الشرطية ( if statements ):
وهي أبسط هذه الصيغ ويمكن أن نمثلها في المخطط الانسيابي التالي:
صح
خطأ
-ويمكن تمثيل هذه الصيغة في البرامج على النحو التالي:
if ( condition )
Statement;
-الشرح:
تقوم هذه العبارة بالتحقق من الجملة الشرطية ( condition or test ) فإذا تحقق الشرط تم تنفيذ العبارة التابعة لهذا الشرط وإذا لم يتحقق فلن يتم تنفيذها ومن ثم يواصل البرنامج تنفيذ بقية الخطوات التالية لجملة if.
-مثال توضيحي على هذه الصيغة (1):
#include
main()
{
int x = 5;
if ( x>0)
cout<<"x is positive";
}
سؤال: أكتب برنامج يقوم بإدخال إي رقم ثم يقوم البرنامج إذا كان الرقم موجب وأكبر من الصفر بإظهار الرسالة التالية ( The Number Is Positive ) وإذا كان الرقم سالب إي أصغر من الصفر يقوم بإظهار الرسالة (The Number is Negative) ؟
-إجابة السؤال:
#include
#include
main()
{
clrscr();
int x;
cout<< "n Enter any number";
cin>> x;
if ( x>=0)
cout<<"n The number"<
-الصيغة الثانية لجملة إذا الشرطية ( if statements ):
ولهذه الصيغة تأثير الصيغة السابقة ، فإنه إذا تحقق الشرط تم تنفيذ العبارة الأولى وإذا لم يتحقق الشرط تم تنفيذ العبارة الثانية المذكورة بعد كلمة else .
ويمكن أن نمثلها في المخطط الانسيابي التالي:
صح خطأ
-ويمكن تمثيل هذه الصيغة على النحو التالي:
if ( Condition )
statement1;
else
statement2;
-مثال توضيحي على هذه الصيغة:
هذا برنامج يطلب من المستخدم إدخال إي رقم ثم يقوم البرنامج بإظهار رسالة الرسالة التالية للمستخدم ( The Number Is Positive ) إذا كان الرقم موجباً وإلا إظهار الرسالة التالية ( The Number Is Negative)
إذا كان الرقم سالباً .
-حل المثال:
#include
#include
main()
{
clrscr();
int x;
cout<<"n Enter any number";
cin>> x;
if ( x>=0)
cout<<"n The number"<
cout<
-ملاحظة:
قارن بين المثال السابق والمثال الذي يليه ماذا تلاحظ ؟
بالتأكيد سوف تلاحظ أنهما تقريباً متشبهان إلي حد كبير ولكن الفرق بينهما هو أنه في المثال الأخير قد استخدمنا كلمة else ولاحظ أنه لم نستخدم كلمة else في المثال الأول ونفذ البرنامج بشكل صحيح
(ماذا تستنتج من ذلك؟) نستنتج أن استعمال كلمة else يعد اختيارياً في لغة C++ إي أنه يمكن حذفها بدون أن تأثر على الجملة الشرطية تركيباً وأداء.
-الصيغة الثالثة لجملة إذا الشرطية ( if statements ):
وتعرف هذه الصيغة بجملة if المتداخلة أو ( Nested if ) ، ففي هذه الحالة إذا تحقق الشرط الأول فإن البرنامج سينفذ العبارة الأولى ومن ثم ينهي جملة if ليكمل بقية جمل البرنامج . أما إذا لم يتحقق الشرط الاول فإنه سينفذ الجزء الخاص ب else if فإذا تحقق الشرط الثاني فسوف ينفذ العبارة الثانية ومن ثم ينهي جملة if لاستكمال بقية البرنامج ، أما إذا لم يتحقق الشرط الثاني فسوف ينفذ الجزء الخاص بـ else الأخيرة وسيقوم بتنفيذ العبارة الثالثة وهكذا….
ملاحظة هامة: من الممكن وجود أكثر من عبارة شرط بالبرنامج ولكن بشرط أن تكون تلك العبارات محصورة بين القوسين التاليين {}.
خطأ صح
خطأ صح
--ويمكن تمثيل هذه الصيغة على النحو التالي:
if ( Condition1 )
{
statement1;
}
else if ( Condition2 )
{
statement2;
}
else
statement3;
-ملاحظة هامة: لكي لا يقع مبرمج لغة C++ في لبس من صيغة الجملة الشرطية إذا المتدخلة فإن القاعدة المستعملة في لغة C++ مع هذه الصيغة هي:
إن كلمة else ترتبط بأقرب if لم ترتبط بـ else أخرى قبلها.
-مثال توضيحي على هذه الصيغة:
هذا برنامج يطلب من المستخدم إدخال إي رقم ثم يقوم البرنامج بإظهار رسالة الرسالة التالية للمستخدم ( The Number Is Positive ) إذا كان الرقم موجباً وإلا إظهار الرسالة التالية ( The Number Is Negative)
إذا كان الرقم سالباً وإلا إظهار الرسالة التالية "END OF PROGRAM" إذا كان الرقم يساوي الصفر.
#include
#include
main()
{
clrscr();
int x;
cout<< "n Enter any number";
cin>> x;
if ( x==0)
cout<<"n "<<"END OF PROGRAM";
else
if(x>0)
cout<
cout<
}
سؤال: أكتب برنامج يقوم بحساب درجة طالب في إحدى المواد حيث يتم حساب التقدير حسب الجدول التالي:
العلامة التقدير
أكبر من أو تساوي 90 E
أكبر من أو تساوي 80 VG
أكبر من أو تساوي 70 G
أكبر من أو تساوي 60 M
أقل من 60 R
-جملة التوزيع الشرطية Switch ( ):
تستخدم الجملة Switch عندما تكون هناك عدة خيارات بحيث إذا تحققت إحداها يتم تنفيذ الأوامر أو العبارات التي تخص هذه الحالة.
وتماثل جملة Switch في لغة C++ جملة التوزيع التالية في لغة البيسك:
10 ON counter GOTO n1,n2……,nm
حيث counter هو عداداً يأخذ الأعداد الصحيحة 1,2,3,……….. ، وفي لغة البيسك يتم الانتقال إلي السطر رقم n1,n2,…..nm لتنفيذه ، حسب قيمة العداد counter ، فإن كانت قيمته 1 ، فهذا يقابل الحالة الأولى ، ويتم الانتقال إلي السطر n1 لتنفيذه ، وهكذا بالنسبة للحالات الأخرى.
-الشكل العام لجملة Switch في لغة C++:
Switch ( expression )
{
case constaant1: statements1;
break;
case constaant2: statements2;
break;
……………………………..
……………………………..
case constant n; statements n;
break;
default: statement;
break;
}
-ملاحظات هامة على الجملة Switch:
1-تستخدم جملة Switch في حالة المساواة في الشرط ، بينما يمكن لجملة إذا الشرطية (if) استخدام جميع علاقات المساواة وغير المساواة.
2-عند استعمال جملة Switch
* تعريف المؤشرات:
وهو عبارة عن عنوان للمتغير في الذاكرة ، إي كأنه يمثل رقم شقة في إسكان ، بصرف النظر عن محتوى الشقة وقيمة ما فيها.
7-مؤشرات الزيادة والنقصان في لغة C++:
من مزايا لغة السي أنها تستعمل الأداتين الحسابيتين ++ و -- لزيادة قيمة 1 أو إنقاصه والمثال التالي يبين طريقة الاستعمال:
++a; أو a++ ومعناه إضافة 1 إلي a ويمكن كتابته بصورة مكافئة على النحو a=a+1 .
وبصورة مشابهة يمكن إنقاص قيمة 1 من a على النحو:
--a; أو a--; وهو يكافئ الصورة:
a=a-1;
ولكن هناك فرقاً في سرعة التنفيذ ، فالتعبير ++a; أسرع من a=a+1; وهذه هي الفائدة من وراء استخدام مثل هذه الأدوات في لغة السي.
1- i=i+1 (i++) تعني
2- i=i-1 (i--) تعني
3- N+ (N=N+2) تعني
4- X-=100 (X=X-100)تعني
المراجع
(1)
كتاب البرمجة بلغة سي (الجزء الأول)
اسم المؤلف: الدكتور/ عوض منصور
كلية الهندسة بجامعة العلوم والتكنولوجيا
وقسم الحاسب بجامعة اليرموك
(2)
كتاب الحاسوب وإيجاد الحلول باستخدام C++
اسم المؤلف: الدكتور / كمال بن منصور جمبي
رئيس قسم علوم الحاسبات
كلية العلوم بجامعة الملك عبد العزيز
(3)
كناب البرمجة بلغة السي
اسم المؤلف:
(4)
كتاب مقدمة للبرمجة
اسم المؤلف: عدنان ماجد بري
(5)
كتاب ( C++ from the Ground Up )
اسم المؤلف: Herbert Schildt
(6)
مجموعة متنوعة ومختلفة من المواقع التعليمية على شبكة الإنترنت
مع تحيات سمسم
أرجو المعذرة إذا كانت هناك إي أخطاء إملائية أو أخطاء في التنسيق
*ملاحظة: الاخوة الكرام أود أن أعرفكم بنفسي معكم أخوكم الأستاذ/ أسامة غازي يوسف واعمل مدرس كمبيوتر وأقوم بتدريس لغة ++C ومن لديه إي سؤال عن لغة ++C أو إي لغة أخرى فسوف أساعده في حدود مقدرتي ولن أبخل عليه وشكرا لكم ولا تنسوا أن تدعوا لي و لأهلي
___________________________
ما أجمل أن نبتسم حين يظن الأخرون اننا سوف نبكي