570 likes | 920 Views
C++ Programming. L2 . Constants , Operations. C onstants الثوابت :. الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا compiler error
E N D
C++ Programming L2 . Constants , Operations
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا compiler error هنالك طريقتين لتعريف ثابت في لغة الـ C++ هما : • عن طريق الكلمة المفتاحية #define • عن طريق الكلمة المفتاحية const
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية #define : نلاحظ هنا عدم وضع نمط الثابت يقوم المترجم compiler بمعرفة النمط المناسب للقيمة المدخلة .
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية #define
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . • عن طريق الكلمة المفتاحية const نلاحظ هنا وضع نمط الثابت ولكن ليس ضروري ! يقوم المترجمcompiler vs 6 بمعرفة النمط المناسب للقيمة المدخلة في حال عدم وجود النمط، أما compiler 2008 فلا يقبل هذا ويعتبره خطأ . !!!!!!!!
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت .
Constants الثوابت: الثابت هو أي تعبير له قيمة ثابتة ، فعلى سبيل المثال PI تملك دائماً قيمة ثابتة وهي 3.1415 أي أنها لا تتغير منطقياً إذاً يفضل تعريفها كثابت . الثابت لا يمكن تغييره وإلا يظهر لدينا compiler error
Operators: (Arithmatic Operations) ناتج عملية القسمة يعتمد على قيم وأنماط البسط والمقام . قسمة int على int يعطي int إذا كان أحد طرفي القسمة على الأقل float عندها يكون ناتج عملية القسمة float
Operators: (Arithmatic Operations) • % تستخدم لإيجاد باقي القسمة للأنماط المعدودة integral ؟ • النمط المعدود هو النمط الذي له عنصر سابق وعنصر تالي محدود ، مثلاً int . • عندما يكون المعاملان operands موجبان فالنتيجة موجبة . • إذا كان أحدهما سالب أو كلاهما فالنتيجة تختلف باختلاف عتاد الحاسب المطبق عليه البرنامج أي machine dependent .
Operators: (Types Conversion) يوجد نوعين للتحويل بين الأنماط : • Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast) • Demotion (down cast) • Explicit Type Conversion ويتم بشكل صريح .
Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast) • القاعدة تقول أنه دائماً يتم التحويل من النمط الصغير إلى الكبير كي لا يضيع أي معلومة . • يتم تحويل bool , char , short إلى نمط أعلى مثلاً int . • أثناء عملية الإسناد يتم التحويل من نمط الطرف الأيمن إلى نمط الطرف الأيسر.
Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Promotion (up cast)
Operators: (Types Conversion) • أولاً : Implicit Type Conversion ويتم بشكل ضمني وله نوعين : • Demotion (down cast)
Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الأول : casting القصر باستخدام الأقواس
Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الأول : casting القصر باستخدام الأقواس
Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الثاني: static_cast يزيل الـ warnings ويستعمل مع الأنماط المألوفة int , float static_cast <new type> ( expression )
Operators: (Types Conversion) • ثانياً: ExplicitType Conversion ويتم بشكل صريح وله أنواع منها : • النوع الثاني: static_cast
Operators: (precedence) • يوجد أولويات بين العمليات الحسابية مرتبة من الأعلى للأسفل : • الأقواس (…….) • الضرب والقسمة وباقي القسمة : ويتم تطبيقها وفق ورودها ضمن الكود من اليسار لليمين. • الجمع والطرح : ويتم تطبيقها وفق ورودها ضمن الكود من اليسار لليمين.
Operators: (Assignation Operators) • النوع الأول : • النوع الثاني :
Operators: (Increase and Decrease) • الزيادة ++ والنقصان -- تستخدمان للزيادة والنقصان على التتالي . • فإذا كان لدينا المتحول a فإن a++ تستخدم لزيادة قيمة المتحول a بمقدار واحد ، أما a-- فتستخدم لنقصانه بمقدار واحد . ومنه يمكننا أن نكتب : a++ ≡ a+=1 ≡ a = a + 1
Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix • Prefix (++a) • يتم زيادة المتحول a قبل تقييم التعبير !
Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix • Suffix (a++) • يتم زيادة المتحول a بعد تقييم التعبير !
Operators: (Increase and Decrease) • الزيادة ++ والنقصان - - يمكن أن تضافا كبادئة ـprefix أو كلاحقة suffix
Operators: (Relational operators) • القيمة صفر هي تمثل false ، والقيمة المغايرة للصفر تمثل true .
Operators: (Relational operators) • في المقارنة الأولى نجد العملية == والتي تعني المساواة ، وعندها كانت x مساوية لـ 3 إذاً خرج التعبير هو true إذا سيتم طباعة العبارة الأولى . • في الـ if الثانية لدينا عملية إسناد إذا يتم اسناد القيمة 4 إلى x ويكون ناتج التعبير القيمة 4 وذكرنا سابقاً أن أي قيمة مغايرة للصفر هي true إذا سيتم طباعة العبارة الثانية . • ماذا سيحصل إذا استبدلنا الرقم 4 بـ 0 ؟
Operators: (Relational operators) • عند إجراء عملية مقارنة طرفاها من الأنماط التي تندرج تحت الـ floating point أي تحوي أرقام عشرية عندها أحياناً تنتج لدينا أخطاء باختلاف الحاسب المطبق عليه البرنامج .
Operators: (Relational operators) • تتم عملية المقارنة بين two strings عن طريق الاعتماد على ترتيب المحارف في جدول الـ ASCII . • عند تطابق الـ two strings تنتج لدينا قيمة true . • وإلا فإن إحدى النصين يعتبر أكبر من الآخر ..... ولكن كيف ؟ • عن طريق ترتيب المحارف في جدول الـ ASCII مع الانتباه إلى حالة المحارف . • عند مقارنة الكلمة hi مع الكلمة hit فإن hi < hit • عند مقارنة hi مع shy فإن shy > hi لأنه عند مقارنة أول محرف من السلسلة الأولى مع أول محرف من الثانية ينتج أن s>h ، في حال التطابق يتم الانتقال للمحارف التالية .. وهكذا .
Operators: (Relational operators) • العملية ! تأخذ معامل واحد نضعه على اليمين لتعبر عن النفي not .
Operators: (Logical operators) • العملية المنطقية And يتم التعبير عنها && • العملية المنطقية Or يتم التعبير عنها || • العمليات المنطقية تطبق على قيم منطقية true / false .
Operators: (Logical operators) • فحص متحول ما إذا يقع ضمن مجال ما ... • الطريقة الأولى خاطئة لأنه في البداية سيفحص 50> temperature نتيجتها هي إما 0 أو 1 عندها سيتم مقارنة النتيجة مع 30 وهي حتماً أصغر من 30 إذاً لن يطبع أول عبارة.
Operators: Conditional operator (?) • يعمل دور if (……..) then (……..) else (……..) • إذا كان الشرط محقق فإنه يتم تنفيذ result1 وإلا يتم تنفيذ result2 .
Operators: Console Communication • لوحة المفاتيح هي واجهة الدخل الافتراضية . • الشاشة هي واجهة الخرج الافتراضية . • iostream هي مكتبة تمكننا من التعامل مع مجرى الدخل والخرج .
Operators: Console Communication • لوحة المفاتيح هي واجهة الدخل الافتراضية . • الشاشة هي واجهة الخرج الافتراضية . • iostream هي مكتبة تمكننا من التعامل مع مجرى الدخل والخرج . • نقوم باستخدام cin و cout للوصول إلى المجرى الحالي current stream .
Operators: Console Communication • ذكرنا أن true هي 1 . • تذكر الـ escape code حيث أن ‘\b’ تقوم بإعادة المشيرة خطوة للخلف ، فإذا تم كتابة محرف جديد فإنه سيكتب فوق المحرف القديم .
Operators: Console Communication • يمكننا تغيير الدخل والخرج الحالي . • هنا تم تحويل الدخل حيث يتم القراءة من ملف عوضاً عن القراءة من لوحة المفاتيح. • هنا تم تحويل الخرج إلى ملف آخر عوضاً عن الشاشة.