1 / 48

C++ Programming

C++ Programming. L2 . Constants , Operations. C onstants الثوابت :. الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا compiler error

tamyra
Download Presentation

C++ Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Programming L2 . Constants , Operations

  2. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا compiler error هنالك طريقتين لتعريف ثابت في لغة الـ C++ هما : • عن طريق الكلمة المفتاحية #define • عن طريق الكلمة المفتاحية const

  3. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية #define : نلاحظ هنا عدم وضع نمط الثابت يقوم المترجم compiler بمعرفة النمط المناسب للقيمة المدخلة .

  4. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية #define

  5. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية const نلاحظ هنا وضع نمط الثابت ولكن ليس ضروري ! يقوم المترجمcompiler vs 6 بمعرفة النمط المناسب للقيمة المدخلة في حال عدم وجود النمط، أما compiler 2008 فلا يقبل هذا ويعتبره خطأ . !!!!!!!!

  6. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت .

  7. Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا يظهر لدينا compiler error

  8. Operators: (Assignment)

  9. Operators: (Assignment)

  10. Operators: (Arithmatic Operations)

  11. Operators: (Arithmatic Operations) ناتج عملية القسمة يعتمد على قيم وأنماط البسط والمقام . قسمة int على int يعطي int إذا كان أحد طرفي القسمة على الأقل float عندها يكون ناتج عملية القسمة float

  12. Operators: (Arithmatic Operations) • % تستخدم لإيجاد باقي القسمة للأنماط المعدودة integral ؟ • النمط المعدود هو النمط الذي له عنصر سابق وعنصر تالي محدود ، مثلاً int . • عندما يكون المعاملان operands موجبان فالنتيجة موجبة . • إذا كان أحدهما سالب أو كلاهما فالنتيجة تختلف باختلاف عتاد الحاسب المطبق عليه البرنامج أي machine dependent .

  13. Operators: (Types Conversion) يوجد نوعين للتحويل بين الأنماط : • Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast) • Demotion (down cast) • Explicit Type Conversion ويتم بشكل صريح .

  14. Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast) • القاعدة تقول أنه دائماً يتم التحويل من النمط الصغير إلى الكبير كي لا يضيع أي معلومة . • يتم تحويل bool , char , short إلى نمط أعلى مثلاً int . • أثناء عملية الإسناد يتم التحويل من نمط الطرف الأيمن إلى نمط الطرف الأيسر.

  15. Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast)

  16. Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Demotion (down cast)

  17. Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الأول : casting القصر باستخدام الأقواس

  18. Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الأول : casting القصر باستخدام الأقواس

  19. Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الثاني: static_cast يزيل الـ warnings ويستعمل مع الأنماط المألوفة int , float static_cast <new type> ( expression )

  20. Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الثاني: static_cast

  21. Operators: (precedence) • يوجد أولويات بين العمليات الحسابية مرتبة من الأعلى للأسفل : • الأقواس (…….) • الضرب والقسمة وباقي القسمة : ويتم تطبيقها وفق ورودها ضمن الكود من اليسار لليمين. • الجمع والطرح : ويتم تطبيقها وفق ورودها ضمن الكود من اليسار لليمين.

  22. Operators: (Assignation Operators) • النوع الأول : • النوع الثاني :

  23. Operators: (Assignation Operators)

  24. Operators: (Increase and Decrease) • الزيادة ++ والنقصان -- تستخدمان للزيادة والنقصان على التتالي . • فإذا كان لدينا المتحول a فإن a++ تستخدم لزيادة قيمة المتحول a بمقدار واحد ، أما a-- فتستخدم لنقصانه بمقدار واحد . ومنه يمكننا أن نكتب : a++ ≡ a+=1 ≡ a = a + 1

  25. Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix • Prefix (++a) • يتم زيادة المتحول a قبل تقييم التعبير !

  26. Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix • Suffix (a++) • يتم زيادة المتحول a بعد تقييم التعبير !

  27. Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix

  28. Operators: (Relational operators) • القيمة صفر هي تمثل false ، والقيمة المغايرة للصفر تمثل true .

  29. Operators: (Relational operators)

  30. Operators: (Relational operators)

  31. Operators: (Relational operators) • في المقارنة الأولى نجد العملية == والتي تعني المساواة ، وعندها كانت x مساوية لـ 3 إذاً خرج التعبير هو true إذا سيتم طباعة العبارة الأولى . • في الـ if الثانية لدينا عملية إسناد إذا يتم اسناد القيمة 4 إلى x ويكون ناتج التعبير القيمة 4 وذكرنا سابقاً أن أي قيمة مغايرة للصفر هي true إذا سيتم طباعة العبارة الثانية . • ماذا سيحصل إذا استبدلنا الرقم 4 بـ 0 ؟

  32. Operators: (Relational operators) • عند إجراء عملية مقارنة طرفاها من الأنماط التي تندرج تحت الـ floating point أي تحوي أرقام عشرية عندها أحياناً تنتج لدينا أخطاء باختلاف الحاسب المطبق عليه البرنامج .

  33. Operators: (Relational operators) • تتم عملية المقارنة بين two strings عن طريق الاعتماد على ترتيب المحارف في جدول الـ ASCII . • عند تطابق الـ two strings تنتج لدينا قيمة true . • وإلا فإن إحدى النصين يعتبر أكبر من الآخر ..... ولكن كيف ؟ • عن طريق ترتيب المحارف في جدول الـ ASCII مع الانتباه إلى حالة المحارف . • عند مقارنة الكلمة hi مع الكلمة hit فإن hi < hit • عند مقارنة hi مع shy فإن shy > hi لأنه عند مقارنة أول محرف من السلسلة الأولى مع أول محرف من الثانية ينتج أن s>h ، في حال التطابق يتم الانتقال للمحارف التالية .. وهكذا .

  34. Operators: (Relational operators)

  35. Operators: (Relational operators) • العملية ! تأخذ معامل واحد نضعه على اليمين لتعبر عن النفي not .

  36. Operators: (Logical operators) • العملية المنطقية And يتم التعبير عنها && • العملية المنطقية Or يتم التعبير عنها || • العمليات المنطقية تطبق على قيم منطقية true / false .

  37. Operators: (Logical operators) • فحص متحول ما إذا يقع ضمن مجال ما ... • الطريقة الأولى خاطئة لأنه في البداية سيفحص 50> temperature نتيجتها هي إما 0 أو 1 عندها سيتم مقارنة النتيجة مع 30 وهي حتماً أصغر من 30 إذاً لن يطبع أول عبارة.

  38. Operators: Conditional operator (?) • يعمل دور if (……..) then (……..) else (……..) • إذا كان الشرط محقق فإنه يتم تنفيذ result1 وإلا يتم تنفيذ result2 .

  39. Operators: Console Communication • لوحة المفاتيح هي واجهة الدخل الافتراضية . • الشاشة هي واجهة الخرج الافتراضية . • iostream هي مكتبة تمكننا من التعامل مع مجرى الدخل والخرج .

  40. Operators: Console Communication • لوحة المفاتيح هي واجهة الدخل الافتراضية . • الشاشة هي واجهة الخرج الافتراضية . • iostream هي مكتبة تمكننا من التعامل مع مجرى الدخل والخرج . • نقوم باستخدام cin و cout للوصول إلى المجرى الحالي current stream .

  41. Operators: Console Communication • ذكرنا أن true هي 1 . • تذكر الـ escape code حيث أن ‘\b’ تقوم بإعادة المشيرة خطوة للخلف ، فإذا تم كتابة محرف جديد فإنه سيكتب فوق المحرف القديم .

  42. Operators: Console Communication • يمكننا تغيير الدخل والخرج الحالي . • هنا تم تحويل الدخل حيث يتم القراءة من ملف عوضاً عن القراءة من لوحة المفاتيح. • هنا تم تحويل الخرج إلى ملف آخر عوضاً عن الشاشة.

  43. Example (1):

  44. Example (2):

  45. The End

More Related