R333T
04-05-2024, 03:45 PM
رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++
# الفصل 0 : تمهيد
2.4 العمليات Operations والمشغلات operators
بالإضافة إلى تحديد القيم values التي يمكن تخزينها في variable، فإن نوع المتغير type of a variable يحدد أيضًا العمليات التي يمكن تطبيقها عليه وما معانيها.
على سبيل المثال:
int age = -1;
c in في (أكبر من مرتن) age;
(أكبر من مرتن) يقرأ عددًا صحيحًا في age.
string name;
c في (أكبر من مرتن) name;
(أكبر من مرتن) يقرأ الstring في name
int a2 = age+2;
الجمع يضيف أعداد صحيحة int
string n2 = name + " Jr. ";
الconcatenates بين الstrings
int a3 = age-2;
الطرح يطرح أعداد صحيحة int
string n3 = name - " Jr. ";
خطأ: - ليس معرفًا defined لstrings
بواسطة "خطأ" نعني أن الcompiler سيُرفض برنامجًا يحاول طرح الstrings.
الcompiler يعرف بدقة أي الoperations يمكن تطبيقها على كل variable وبالتالي يمكنه منع العديد من الأخطاء.
ومع ذلك، لا يعرف الcompiler أي العمليات تعتبر منطقية بالنسبة لك لأي قيمة، لذا سيقبل بسرور العمليات التي تنتج نتائج قد تبدو سخيفة بالنسبة لك. على سبيل المثال:
age = −100؛
قد يكون من الواضح بالنسبة لك أنه لا يمكن أن يكون لديك عمر سالب (لماذا لا؟) ولكن لم يخبر أحد المترجم، لذا سينتج الكود لتلك التعريفة.
فيما يلي جدول للعوامل المفيدة لبعض الأنواع الشائعة والمفيدة:
ها هي أمثلة الشفرة لكل عملية مذكورة في الجدول:
التخصيص (=):
الجمع (+):
الدمج (للسلاسل) (+):
الطرح (-):
الضرب (*):
القسمة (/):
الباقي (المودولو) (%):
هذه الأمثلة توضح استخدام المشغلات المختلفة مع أنواع بيانات مختلفة في لغة البرمجة C++.
زيادة بواحد:
نقص بواحد:
زيادة بمقدار n:
إضافة إلى النهاية (للنصوص):
نقص بمقدار n:
ضرب وتعيين:
قسمة وتعيين:
الباقي وتعيين:
قراءة من التيار إلى متغير:
كتابة متغير إلى التيار:
يساوي:
غير متساوي:
أكبر من:
أكبر من أو يساوي:
أصغر من:
أصغر من أو يساوي:
جرّب هذا
قم بتشغيل هذا البرنامج الصغير. ثم، قم بتعديله ليقرأ قيمة صحيحة بدلاً من قيمة عشرية.
كما يمكنك "تمرين" بعض العمليات الأخرى، مثل عامل الباقي (%). لاحظ أنه للأعداد الصحيحة، القسمة العادية تقوم بالتقسيم الصحيح والباقي يعطي الباقي (المودولو)، لذا 5/2 يعطي 2 (وليس 2.5 أو 3) و 5%2 يعطي 1. تضمن تعريفات الضرب، القسمة والباقي للأعداد الصحيحة أنه لنا للأعداد الصحيحة الموجبة a و b، a/b * b + a%b == a.
السلاسل لديها عدد أقل من العمليات، لكن لديها الكثير من العمليات المسماة. ومع ذلك، العمليات التي تمتلكها يمكن استخدامها بشكل تقليدي. على سبيل المثال:
بالنسبة للسلاسل، + يعني الاتصال؛ أي أنه عندما تكون s1 وs2 سلاسل، s1+s2 هو سلسلة يتم فيها اتباع الأحرف من s1 بالأحرف من s2. على سبيل المثال، إذا كان لدى s1 القيمة "مرحبا" وكانت لدى s2 القيمة "العالم"، فسيكون لدى s1+s2 القيمة "مرحباالعالم". المقارنة بين السلاسل مفيدة بشكل خاص:
هنا، استخدمنا جملة شرطية if، التي سيتم شرحها بالتفصيل في الدروس القادمة، لتحديد الإجراءات استنادًا إلى الشروط.
https://www.youtube.com/playlist?list=PLmOrGO9IfJEcDyuBLOX5AzAqaKxmAKHrq
# الفصل 0 : تمهيد
- 0.1 تعلم البرمجة من خلال التطبيق: بناء أكواد جميلة وفعالة
- 0.2 صقل مهاراتك في البرمجة: التمارين والاختبارات والمشاريع المشتركة
- 0.3 بعد هذه السلسلة: رحلتك نحو إتقان البرمجة
- 0.4 رحلتك في البرمجة: نصائح وتشجيع
- 1.0 مقدمة الفصل 1 : مرحبا بالعالم !
- 1.1 البرامج - Programs
- 1.2 تشغيل و Compile برنامج C++ الأول الخاص بك على نظام التشغيل Windows
- G00d Premium F0nt 4 c0ding M0n0L1sa
- How to instalԼ EmꞴarcadero ЯAD StuĐio 12.1 AtԨens ArꞆhitect V€rsion 29.0.51961.7529 U
- TutoЯial Ԩow instalԼ and activaԷe CLioЍ
- 1.3 ما هو ال preprocess ؟ وما هو ال assemble ؟ وما هو ال compile ؟ وما هو ال linking؟
- 1.4 البرنامج C++ الأول الكلاسيكي - تفسير دقيق بناء ركيزه البرمجه
- 1.5 التجميع - Compilation - فهم التعامل مع Compiler
- 1.6 استكشاف الlinking من الداخل بشكل عميق مع النوعين static و dynamic
- 1.7 مراجعة وتمارين الفصل الأول
- 2.1 الإدخال- input
- 2.2 المتغيرات - variables
- 2.3 المدخلات والنوع - Input and type
- 2.4 العمليات Operations والمشغلات operators
https://www.youtube.com/watch?v=D07jMlhc-5Y
2.4 العمليات Operations والمشغلات operators
بالإضافة إلى تحديد القيم values التي يمكن تخزينها في variable، فإن نوع المتغير type of a variable يحدد أيضًا العمليات التي يمكن تطبيقها عليه وما معانيها.
على سبيل المثال:
int age = -1;
c in في (أكبر من مرتن) age;
(أكبر من مرتن) يقرأ عددًا صحيحًا في age.
string name;
c في (أكبر من مرتن) name;
(أكبر من مرتن) يقرأ الstring في name
int a2 = age+2;
الجمع يضيف أعداد صحيحة int
string n2 = name + " Jr. ";
الconcatenates بين الstrings
int a3 = age-2;
الطرح يطرح أعداد صحيحة int
string n3 = name - " Jr. ";
خطأ: - ليس معرفًا defined لstrings
بواسطة "خطأ" نعني أن الcompiler سيُرفض برنامجًا يحاول طرح الstrings.
الcompiler يعرف بدقة أي الoperations يمكن تطبيقها على كل variable وبالتالي يمكنه منع العديد من الأخطاء.
ومع ذلك، لا يعرف الcompiler أي العمليات تعتبر منطقية بالنسبة لك لأي قيمة، لذا سيقبل بسرور العمليات التي تنتج نتائج قد تبدو سخيفة بالنسبة لك. على سبيل المثال:
age = −100؛
قد يكون من الواضح بالنسبة لك أنه لا يمكن أن يكون لديك عمر سالب (لماذا لا؟) ولكن لم يخبر أحد المترجم، لذا سينتج الكود لتلك التعريفة.
فيما يلي جدول للعوامل المفيدة لبعض الأنواع الشائعة والمفيدة:
ها هي أمثلة الشفرة لكل عملية مذكورة في الجدول:
التخصيص (=):
int x = 5;
char ch = 'A';
bool flag = true;
double pi = 3.14;
std::string str = "مرحبًا";
الجمع (+):
int sum = 5 + 3;
double result = 3.5 + 2.7;
الدمج (للسلاسل) (+):
std::string str1 = "مرحبًا";
std::string str2 = "العالم";
std::string combined = str1 + str2;
الطرح (-):
int difference = 10 - 4;
double result = 5.6 - 2.3;
الضرب (*):
int product = 3 * 4;
double result = 2.5 * 1.5;
القسمة (/):
int quotient = 10 / 2;
double result = 5.0 / 2.0;
الباقي (المودولو) (%):
int remainder = 10 % 3;
هذه الأمثلة توضح استخدام المشغلات المختلفة مع أنواع بيانات مختلفة في لغة البرمجة C++.
زيادة بواحد:
int x = 5;
x++; // زيادة قيمة x بواحد
نقص بواحد:
int x = 5;
x--; // نقص قيمة x بواحد
زيادة بمقدار n:
int x = 5;
int n = 3;
x += n; // زيادة قيمة x بمقدار n
إضافة إلى النهاية (للنصوص):
std::string s = "مرحبا";
s += " العالم"; // إضافة " العالم" إلى نهاية s
نقص بمقدار n:
int x = 5;
int n = 3;
x -= n; // نقص قيمة x بمقدار n
ضرب وتعيين:
int x = 5;
x *= 2; // ضرب x في 2
قسمة وتعيين:
int x = 10;
x /= 2; // قسمة x على 2
الباقي وتعيين:
int x = 10;
x %= 3; // الباقي من قسمة x على 3
قراءة من التيار إلى متغير:
int x;
std::cin >> x; // قراءة عدد صحيح من مدخل البيانات القياسي إلى x
كتابة متغير إلى التيار:
int x = 5;
std::cout << x; // كتابة قيمة x إلى مخرج البيانات القياسي
يساوي:
int x = 5, y = 7;
if (x == y) {
// x يساوي y
}
غير متساوي:
int x = 5, y = 7;
if (x != y) {
// x لا يساوي y
}
أكبر من:
int x = 5, y = 7;
if (x > y) {
// x أكبر من y
}
أكبر من أو يساوي:
int x = 5, y = 7;
if (x >= y) {
// x أكبر من أو يساوي y
}
أصغر من:
int x = 5, y = 7;
if (x < y) {
// x أصغر من y
}
أصغر من أو يساوي:
int x = 5, y = 7;
if (x <= y) {
// x أصغر من أو يساوي y
}
جرّب هذا
قم بتشغيل هذا البرنامج الصغير. ثم، قم بتعديله ليقرأ قيمة صحيحة بدلاً من قيمة عشرية.
كما يمكنك "تمرين" بعض العمليات الأخرى، مثل عامل الباقي (%). لاحظ أنه للأعداد الصحيحة، القسمة العادية تقوم بالتقسيم الصحيح والباقي يعطي الباقي (المودولو)، لذا 5/2 يعطي 2 (وليس 2.5 أو 3) و 5%2 يعطي 1. تضمن تعريفات الضرب، القسمة والباقي للأعداد الصحيحة أنه لنا للأعداد الصحيحة الموجبة a و b، a/b * b + a%b == a.
#include <iostream>
int main() {
int num1, num2;
// Prompting the user to enter two integers
std::cout << "Enter the first integer: ";
std::cin >> num1;
std::cout << "Enter the second integer: ";
std::cin >> num2;
// Performing arithmetic operations
int sum = num1 + num2;
int difference = num1 - num2;
int product = num1 * num2;
int quotient = num1 / num2;
int remainder = num1 % num2; // Modulo operator %
// Displaying the results
std::cout << "Sum: " << sum << std::endl;
std::cout << "Difference: " << difference << std::endl;
std::cout << "Product: " << product << std::endl;
std::cout << "Quotient: " << quotient << std::endl;
std::cout << "Remainder: " << remainder << std::endl;
return 0;
}
السلاسل لديها عدد أقل من العمليات، لكن لديها الكثير من العمليات المسماة. ومع ذلك، العمليات التي تمتلكها يمكن استخدامها بشكل تقليدي. على سبيل المثال:
int main() // اقرأ الاسم الأول والثاني
{
cout << "الرجاء إدخال الاسم الأول والثاني\n";
string first;
string second;
cin >> first >> second; // اقرأ سلسلتين
string name = first + ' ' + second; // ارتبط السلاسل
cout << "مرحبًا، " << name << '\n';
}
بالنسبة للسلاسل، + يعني الاتصال؛ أي أنه عندما تكون s1 وs2 سلاسل، s1+s2 هو سلسلة يتم فيها اتباع الأحرف من s1 بالأحرف من s2. على سبيل المثال، إذا كان لدى s1 القيمة "مرحبا" وكانت لدى s2 القيمة "العالم"، فسيكون لدى s1+s2 القيمة "مرحباالعالم". المقارنة بين السلاسل مفيدة بشكل خاص:
int main() // اقرأ وقارن الأسماء
{
cout << "الرجاء إدخال اسمين\n";
string first;
string second;
cin >> first >> second; // اقرأ سلسلتين
if (first == second)
cout << "هذا هو نفس الاسم مرتين\n";
if (first < second)
cout << first << " قبل ألفبائيًا " << second <<'\n';
if (first > second)
cout << first << " بعد ألفبائيًا " << second <<'\n';
}
هنا، استخدمنا جملة شرطية if، التي سيتم شرحها بالتفصيل في الدروس القادمة، لتحديد الإجراءات استنادًا إلى الشروط.