Lecture 3 C++
Lecture 3 C++
المقارنات
)(Comparison Operators
C++
العوامل ( ) operatorsعبارة عن رموز لها معنى محدد ,و يمكننا تقسيم العوامل إلى
للحصول على آخر رقم يبقى عندما نقسم قيمة aعلى a%b % Modulo
قيمة b
>#include <iostream
;using namespace std
)(int main
{
هنا aقيمة أكبر من صفر ,ثم وضعنا قيمة الـ Unary-Plusلها في المتغير // b
وضعنا في المتغير
;int a = 10
int b = +a; // b = +(10) = 10
;cout << "b = " << b << endl
هنا aقيمة أصغر من صفر ,ثم وضعنا قيمة الـ Unary-Plusلها في المتغير // b
وضعنا في المتغير
;a = -10
b = +a; // b = +(-10) = -10
;cout << "b = " << b
;return 0
}
b = 10
b = -10
>#include <iostream
)(int main
{
;int a = 8
;int b = 5
int c = a / b; // c = 8 / 5 = 1
;return 0
}
c=1
مالحظة :سبب عدم ظهور أي أرقام بعد الفاصلة هو أننا عرفنا المتغيرات كأعداد صحيحة .int
إذًا نستخدم الـ Moduloللحصول على آخر رقم يبقى من عملية القسمة.
و له فوائد كثيرة ,فمثًال يمكننا إستخدامه لمعرفة ما إذا كان الرقم مفرد أو مزدوج ( أي ) Even or Odd
في هذا المثال سنقوم بتخزين الرقم الذي يبقى من القسمة في المتغير . c
مثال
[Link]
>#include <iostream
{
;int a = 8
;int b = 5
int c = a % b; // c = 8 % 5 = 3
;return 0
}
c=3
>#include <iostream
)(int main
{
;int a = 5
a++; // a = 5 + 1 = 6
;return 0
}
a=6
>#include <iostream
)(int main
{
;int a = 5
a--; // a = 5 - 1 = 4
;return 0
}
سنحصل على النتيجة التالية عند التشغيل.
a=4
أنقص قيمة aمن قيمة bو خزن الناتج في a a -= b =- Susbtract AND Assignment
=* a
أضرب قيمة aبقيمة bو خزن الناتج في a *= Multiply AND Assignment
b
أقسم قيمة aعلى قيمة bو خزن الناتج في a a /= b =/ Divide AND Assignment
أقسم قيمة aعلى قيمة bو خزن آخر رقم يبقى من =a %
=% Modulo AND Assignment
عملية القسمة في a b
>#include <iostream
)(int main
{
;int a = 10
;return 0
}
>#include <iostream
)(int main
{
;int a = 10
;int b = 20
a += b; // a = a + b = 10 + 20 = 30
;return 0
}
a = 30
العوامل التي تستخدم في وضع شروط
) (Logical Operatorsمنطقية
شرح الكود مثال رمزه إسم العامل
>#include <iostream
)(int main
{
;int a = 10
;int b = 20
الشرط التالي aتساوي ,10و قيمة المتغير bتساوي 20سيتم تنفيذ أمر الطباعة //
يعني أنه إذا كانت قيمة المتغير
{
;"cout << "The first and the second conditions return true
}
;return 0
}
نالحظ أنه نفذ أمر الطباعة ألن جواب الشرطين الموضوعين في الجملة ifهو .true
>#include <iostream
;using namespace std
)(int main
{
;int a = 10
;int b = 20
الشرط aتساوي ,10أو قيمة المتغير bتساوي 50سيتم تنفيذ أمر الطباعة //
التالي يعني أنه إذا كانت قيمة المتغير
) if( a == 10 || b == 50
{
;"cout << "One of the conditions return true
}
;return 0
}
نفذ أمر الطباعة ألن جواب الشرط األول الموضوع في الجملة ifهو true
ادخال بيانات من المستخدم
مقدمة
مقدمة
في الدروس السابقة ,كنا نكتب الكود ثم نقوم بتجربته فيتنفذ كما هو ,بمعنى أننا كنا أصًال نعرف ما سيظهر عند
تشغيل الكود ألننا كنا نقوم بتحديد قيم المتغيرات قبل تشغيل البرنامج.
في هذا الدرس ستتعلم كيف تنشئ برنامح يتفاعل مع المستخدم ,حيث أنك عندما تقوم بتشغيله سيطلب من
المستخدم إدخال بيانات ,و بعد إدخالها سيقوم البرنامج بمعالجتها و فعل شيء معين بها.
األمر cinموجود في الحزمة stdو لهذا يجب ان تكتب std::cinإن لم تكن تريد تضمين الحزمة stdفي
برنامجك.
في كل مرة تقوم فيها باستدعاء هذا األمر يقوم المترجم بانتظارك إلدخال عدد أو كلمة واحدة من لوحة
بعد اإلنتهاء من اإلدخال و النقر على الزر Enterسيتم إرجاع الشيء الذي قمت بإدخاله في المكان الذي تم منه
مثال
[Link]
>#include <iostream
)(int main
{
قمنا بتجهيز nameو ageلتخزين المعلومات التي سيدخلها المستخدم الحقًا //
المتغيرين
;string name
;int age
هنا سيطلب من المستخدم إدخال إسمه و من ثم سيتم تخزين اإلسم الذي يدخله // name
في المتغير
هنا سيطلب من المستخدم إدخال عمره و من ثم سيتم تخزين الرقم الذي يدخله // age
في المتغير
في األخير قمنا بعرض المعلومات التي يدخلها المستخدم بشكل مرتب //
;"cout << "Your name is " << name << ", and your age is " << age << " years.
;return 0
}
سنحصل على النتيجة التالية عند التشغيل مع اإلشارة إلى أننا قمنا بتعليم البيانات التي إنتظرنا البرنامج إلدخالها
في البداية معرفة سبب تسمية األوامر بهذه الكلمات سيسهل عليك تذكر الفرق بينهما ,لذا تذكر دائمًا أصلهما:
.و التي بدورها تستخدم إلدخال قيمة في المتغير See Inيقصد بها كلمة cin
.و التي بدورها تستخدم للحصول على قيمة المتغير See Outيقصد بها كلمة cout
األمر cinنضع بعده إسم المتغير الذي سنخزن القيمة التي يدخلها المستخدم فيها و تكون األسهم باتجاه اليمين
كالتالي.
قم بتخزين ما سيدخله المستخدم في المتغير // x
األمر coutنضع بعده أي شيء نريد عرضه أو أي متغير نريد عرض قيمته و تكون األسهم باتجاه اليسار كالتالي.
قم بعرض القيمة المدخلة في المتغير // x
تذكر دائمًا أن األمر >> cinيستخدم إلدخال رقم أو كلمة واحدة فقط بمعنى أنه ال يجب أن يحتوي ما تدخله على
مسافات فارغة.
في حال كان ما أدخلته يحتوي على مسافات فارغة ,سيسبب ذلك مشاكل في الكود ألن المترجم سيعتبر أنك
عندما يجدك المترجم قمت بإدخال مجموعة قيم في ذات الوقت الذي تحاول فيه أن تخزن قيمة واحدة فقط في
متغير ,سيعتبر أنك تريد إدخال القيم األخرى في المرات القادمة التي تطلب فيها من المستخدم أن يدخل قيم.
في المثال التالي ,قمنا بإنشاء برنامج يطلب من المستخدم إدخال إسمه و بريده اإللكتروني ,بعدها يعرض له ما
قام بإدخاله.
عند تشغيل البرنامج سنتعمد إدخال إسم المستخدم الكامل (إسمه و إسم عائلته) مع وضع مسافة فارغة بينهما
>#include <iostream
)(int main
{
قمنا بتجهيز nameو emailلتخزين المعلومات التي سيدخلها المستخدم الحقًا //
المتغيرين
;string name
;string email
هنا سيطلب من المستخدم إدخال إسمه و من ثم سيتم تخزين اإلسم الذي يدخله // name
في المتغير
هنا سيطلب من المستخدم إدخال بريده اإللكتروني و من ثم سيتم تخزين // email
البريد الذي يدخله في المتغير
في األخير قمنا بعرض المعلومات التي يدخلها المستخدم بشكل مرتب //
;"cout << "\n\n---------------------
;return 0
}
سنحصل على النتيجة التالية عند التشغيل مع اإلشارة إلى أننا قمنا بتعليم البيانات التي إنتظرنا البرنامج إلدخالها
---------------------
Name = Mhamad الحظ أنه قام بوضع Mhamadفقط في المتغير <- name
Email = 111 في المتغير 111الحظ أنه قام بوضع emailبشكل تلقائي <-
و من هذا المنطلق نستنتج أن النص عبارة عن سلسلة من األحرف ليس لها حجم محدد.
طريقة تعريف متغير نصي
في لغة ++Cتم إنشاء النوع stringخصيصًا لتخزين القيم النصية و هو موجود في الحزمة .std
لذلك إن لم تقم بتضمين الحزمة stdفي برنامجك ,يجب أن تعّر ف النص بهذا الشكل .std::string
باإلضافة إلى ذلك ,القيمة النصية يجب وضعها بين عالمة التنصيص "" كما في المثال التالي.
مثال
[Link]
>#include <iostream
)(int main
{
هنا قمنا بتعريف متغير نصي إسمه sو قيمته النص "!// "Hello World
;return 0
}
!Hello world
معلومة تقنية
النوع stringفي األساس عبارة عن كالس ( ) Classو ليس كباقي أنواع البيانات األولية التي تعرفنا عليها
سابقًا.
أيضًا ,عندما تقوم بتعريف متغير نوعه stringفأنت في الواقع تقوم بإنشاء كائن ( ) Objectمنه.
ال تقلق بتاتًا إن لم تفهم معنى كالس و كائن اآلن ألنك ستتعلم ذلك بتفصيل ممل الحقًا في الدورة.
فمثًال ,في البرامج أو المواقع التي تستخدمها تالحظ أنه عند إنشاء حساب جديد يطلب منك أن تدخل إسمك على
مرحلتين كالتالي:
بعد أن تنشئ حسابك تالحظ أنه قام بعرض إسمك الكامل ( اإلسم +إسم العائلة ).
عند وضع اإلسمين بجانب بعضهما و كأنهما نص واحد يكون المبرمج فعليًا قد قام بدمجهما فقط و ليس إعادة
كتابتهما من جديد.
في المثال التالي سنقوم بتعريف المتغير firstNameلنضع فيه اإلسم ,و المتغير lastNameلنضع فيه إسم
)(int main
{
هنا قمنا بإنشاء المتغير firstNameو وضعنا فيه نص يمثل اإلسم //
هنا قمنا بإنشاء المتغير lastNameو وضعنا فيه نص يمثل إسم العائلة //
و إسم العائلة الموجود في المتغير lastNameو أضفنا بينهما مسافة فارغة //
هنا قمنا بإنشاء fullNameو وضعنا فيه اإلسم الموجود في المتغير firstName
المتغير
هنا fullNameو يالتالي سيتم عرض اإلسم الكامل الذي قمنا بدمجه و وضعه فيه //
عرضنا قيمة المتغير
;return 0
}
Mhamad ali