قائمة الدروس

Variables & Data Type

int

نوع البيانات الصحيح، يُستخدم لتخزين الأعداد الصحيحة.


int age = 25;
    

float

نوع البيانات عائم الفاصلة الواحدة، يُستخدم لتخزين أعداد عشرية بدقة منخفضة.

عند تعريف قيمة عشرية، يُضاف الحرف "f" للدلالة على أنها عشرية.


float price = 12.99f;
    

double

نوع البيانات عائم الفاصلة المزدوجة، يُستخدم لتخزين أعداد عشرية بدقة أعلى من الـ float.


double salary = 50000.75;
    

decimal

نوع البيانات العشري عالي الدقة، يُستخدم لتخزين أعداد عشرية بدقة عالية.

عند تعريف قيمة عشرية بنوع الـ `decimal`، يُضاف الحرف "M" في النهاية.


decimal totalAmount = 1234.5678M;
    

char

نوع البيانات الحرفي، يُستخدم لتخزين حرف واحد فقط.


char grade = 'A';
    

string

نوع البيانات النصي، يُستخدم لتخزين سلاسل النصوص مثل الأسماء.


string name = "أحمد";
    

bool

نوع البيانات الثنائي، يُستخدم لتخزين القيم المنطقية (صحيح أو خطأ).


bool isStudent = true;
    

byte

نوع البيانات الصحيح الصغير، يُستخدم لتخزين الأعداد الصحيحة الصغيرة.


byte age = 30;
    

short

نوع البيانات الصحيح القصير، يُستخدم لتخزين الأعداد الصحيحة المتوسطة.


short population = 15000;
    

long

نوع البيانات الصحيح الطويل، يُستخدم لتخزين الأعداد الصحيحة الكبيرة.


long worldPopulation = 7800000000;
    

uint

نوع البيانات الصحيح بدون علامة، يُستخدم لتخزين الأعداد الصحيحة الإيجابية.


uint distance = 500;
    

ushort

نوع البيانات الصحيح القصير بدون علامة، يُستخدم لتخزين الأعداد الصحيحة الإيجابية المتوسطة.


ushort itemCount = 100;
    

ulong

نوع البيانات الصحيح الطويل بدون علامة، يُستخدم لتخزين الأعداد الصحيحة الإيجابية الكبيرة.


ulong bigNumber = 12345678901234567890;
    

Characteristics of the integral types

نوع البيانات byte

يمثل قيم صحيحة من 0 إلى 255. يستخدم عادة لتمثيل البيانات بالبايتات.

التوقيع: Unsigned (يحتوي فقط على أعداد موجبة)


byte minValue = byte.MinValue; // أدنى قيمة ممكنة: 0
byte maxValue = byte.MaxValue; // أعلى قيمة ممكنة: 255
byte value = 150; // قيمة ممثلة بالبايت
Console.WriteLine(value); // النتيجة: 150
Console.WriteLine(minValue); // أدنى قيمة: 0
Console.WriteLine(maxValue); // أعلى قيمة: 255
    

الحجم: 1 بايت

.NET Type: System.Byte


نوع البيانات sbyte

يمثل قيم صحيحة من -128 إلى 127.

التوقيع: Signed (يمكن أن يحتوي على أعداد سالبة وموجبة)


sbyte minValue = sbyte.MinValue; // أدنى قيمة ممكنة: -128
sbyte maxValue = sbyte.MaxValue; // أعلى قيمة ممكنة: 127
sbyte value = -50; // قيمة صحيحة سالبة
Console.WriteLine(value); // النتيجة: -50
Console.WriteLine(minValue); // أدنى قيمة: -128
Console.WriteLine(maxValue); // أعلى قيمة: 127
    

الحجم: 1 بايت

.NET Type: System.SByte


نوع البيانات short

يمثل قيم صحيحة من -32,768 إلى 32,767.

التوقيع: Signed (يمكن أن يحتوي على أعداد سالبة وموجبة)


short minValue = short.MinValue; // أدنى قيمة ممكنة: -32,768
short maxValue = short.MaxValue; // أعلى قيمة ممكنة: 32,767
short value = 10000; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 10000
Console.WriteLine(minValue); // أدنى قيمة: -32,768
Console.WriteLine(maxValue); // أعلى قيمة: 32,767
    

الحجم: 2 بايت

.NET Type: System.Int16


نوع البيانات ushort

يمثل قيم صحيحة من 0 إلى 65,535.

التوقيع: Unsigned (يحتوي فقط على أعداد موجبة)


ushort minValue = ushort.MinValue; // أدنى قيمة ممكنة: 0
ushort maxValue = ushort.MaxValue; // أعلى قيمة ممكنة: 65,535
ushort value = 5000; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 5000
Console.WriteLine(minValue); // أدنى قيمة: 0
Console.WriteLine(maxValue); // أعلى قيمة: 65,535
    

الحجم: 2 بايت

.NET Type: System.UInt16


نوع البيانات int

يمثل قيم صحيحة من -2,147,483,648 إلى 2,147,483,647.

التوقيع: Signed (يمكن أن يحتوي على أعداد سالبة وموجبة)


int minValue = int.MinValue; // أدنى قيمة ممكنة: -2,147,483,648
int maxValue = int.MaxValue; // أعلى قيمة ممكنة: 2,147,483,647
int value = 1000000; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 1000000
Console.WriteLine(minValue); // أدنى قيمة: -2,147,483,648
Console.WriteLine(maxValue); // أعلى قيمة: 2,147,483,647
    

الحجم: 4 بايت

.NET Type: System.Int32


نوع البيانات uint

يمثل قيم صحيحة من 0 إلى 4,294,967,295.

التوقيع: Unsigned (يحتوي فقط على أعداد موجبة)


uint minValue = uint.MinValue; // أدنى قيمة ممكنة: 0
uint maxValue = uint.MaxValue; // أعلى قيمة ممكنة: 4,294,967,295
uint value = 2000000; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 2000000
Console.WriteLine(minValue); // أدنى قيمة: 0
Console.WriteLine(maxValue); // أعلى قيمة: 4,294,967,295
    

الحجم: 4 بايت

.NET Type: System.UInt32


نوع البيانات long

يمثل قيم صحيحة من -9,223,372,036,854,775,808 إلى 9,223,372,036,854,775,807.

التوقيع: Signed (يمكن أن يحتوي على أعداد سالبة وموجبة)


long minValue = long.MinValue; // أدنى قيمة ممكنة: -9,223,372,036,854,775,808
long maxValue = long.MaxValue; // أعلى قيمة ممكنة: 9,223,372,036,854,775,807
long value = 123456789012345; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 123456789012345
Console.WriteLine(minValue); // أدنى قيمة: -9,223,372,036,854,775,808
Console.WriteLine(maxValue); // أعلى قيمة: 9,223,372,036,854,775,807
    

الحجم: 8 بايت

.NET Type: System.Int64


نوع البيانات ulong

يمثل قيم صحيحة من 0 إلى 18,446,744,073,709,551,615.

التوقيع: Unsigned (يحتوي فقط على أعداد موجبة)


ulong minValue = ulong.MinValue; // أدنى قيمة ممكنة: 0
ulong maxValue = ulong.MaxValue; // أعلى قيمة ممكنة: 18,446,744,073,709,551,615
ulong value = 987654321012345; // قيمة صحيحة
Console.WriteLine(value); // النتيجة: 987654321012345
Console.WriteLine(minValue); // أدنى قيمة: 0
Console.WriteLine(maxValue); // أعلى قيمة: 18,446,744,073,709,551,615
    

الحجم: 8 بايت

.NET Type: System.UInt64


Arithmetic Operators

عملية الجمع (+)

تُستخدم لجمع قيمتين معًا.


int result = 5 + 3; // النتيجة هنا ستكون 8
    

عملية الطرح (-)

تُستخدم لطرح قيمة من قيمة أخرى.


int difference = 10 - 4; // النتيجة هنا ستكون 6
    

عملية الضرب (*)

تُستخدم لضرب قيمتين معًا.


int product = 3 * 7; // النتيجة هنا ستكون 21
    

عملية القسمة (/)

تُستخدم لقسمة قيمة على قيمة أخرى.


int quotient = 15 / 3; // النتيجة هنا ستكون 5
    

عملية الباقي (%)

تُستخدم للحصول على باقي القسمة بين قيمتين.


int remainder = 10 % 3; // النتيجة هنا ستكون 1
    

عملية الزيادة بمقدار واحد (++)

تُستخدم لزيادة قيمة متغير بمقدار واحد.


int counter = 0;
counter++; // الآن قيمة counter ستصبح 1
    

عملية النقص بمقدار واحد (--)

تُستخدم لنقص قيمة متغير بمقدار واحد.


int tries = 3;
tries--; // الآن قيمة tries ستصبح 2
    

عملية التحويل الجمعي (+=)

تُستخدم لجمع قيمة بمقدار محدد وتخزين النتيجة في المتغير نفسه.


int score = 100;
score += 20; // الآن قيمة score ستصبح 120
    

عملية التحويل الطرحي (-=)

تُستخدم لطرح قيمة بمقدار محدد وتخزين النتيجة في المتغير نفسه.


int money = 50;
money -= 10; // الآن قيمة money ستصبح 40
    

عملية التحويل الضربي (*=)

تُستخدم لضرب قيمة بمقدار محدد وتخزين النتيجة في المتغير نفسه.


int total = 5;
total *= 4; // الآن قيمة total ستصبح 20
    

عملية التحويل القسمي (/=)

تُستخدم لقسمة قيمة على مقدار محدد وتخزين النتيجة في المتغير نفسه.


int quantity = 24;
quantity /= 3; // الآن قيمة quantity ستصبح 8
    

عملية السالب (-)

تُستخدم لجعل قيمة متغير سالبة.


int negativeNumber = -7; // قيمة negativeNumber ستكون -7
    

Comparison & Logical Operators

عملية المساواة (==)

تُستخدم لمقارنة قيمتين لمعرفة إذا كانت متساويتين أم لا.


int x = 5, y = 7;
bool result = x == y; // النتيجة هنا ستكون false
    

عملية عدم المساواة (!=)

تُستخدم لمقارنة قيمتين لمعرفة إذا كانت غير متساويتين.


int a = 10, b = 10;
bool result = a != b; // النتيجة هنا ستكون false
    

عملية الأكبر من (>)

تُستخدم للتحقق إذا كانت قيمة أولى أكبر من قيمة ثانية.


int age = 25, legalAge = 18;
bool result = age > legalAge; // النتيجة هنا ستكون true
    

عملية الأصغر من (<)

تُستخدم للتحقق إذا كانت قيمة أولى أصغر من قيمة ثانية.


int price = 50, budget = 100;
bool result = price < budget; // النتيجة هنا ستكون true
    

عملية الأكبر من أو يساوي (>=)

تُستخدم للتحقق إذا كانت قيمة أولى أكبر من أو تساوي قيمة ثانية.


int score = 90, passingScore = 70;
bool result = score >= passingScore; // النتيجة هنا ستكون true
    

عملية الأصغر من أو يساوي (<=)

تُستخدم للتحقق إذا كانت قيمة أولى أصغر من أو تساوي قيمة ثانية.


int temperature = 15, freezingPoint = 0;
bool result = temperature <= freezingPoint; // النتيجة هنا ستكون false
    

عملية التحقق المنطقي (&&)

تُستخدم للتحقق من صحة شرطين معًا.


bool isHot = true, isSummer = true;
bool result = isHot && isSummer; // النتيجة هنا ستكون true
    

عملية التحقق المنطقي (||)

تُستخدم للتحقق من صحة أحد الشروط على الأقل.


bool isRainy = false, isSnowy = true;
bool result = isRainy || isSnowy; // النتيجة هنا ستكون true
    

عملية عكس القيمة (!)

تُستخدم لعكس قيمة الشرط، مثلاً إذا كان الشرط صحيحًا، فسيصبح غير صحيح والعكس بالعكس.


bool isSunny = true;
bool result = !isSunny; // النتيجة هنا ستكون false
    

Bitwise Operators

عملية الـ AND (&)

تُستخدم لإجراء منطقي AND بين كل بت في القيمتين.


int value1 = 5; // قيمة بتوجهات 0101
int value2 = 3; // قيمة بتوجهات 0011
int result = value1 & value2; // النتيجة هنا ستكون 0001 (1)
    

عملية الـ OR (|)

تُستخدم لإجراء منطقي OR بين كل بت في القيمتين.


int value1 = 5; // قيمة بتوجهات 0101
int value2 = 3; // قيمة بتوجهات 0011
int result = value1 | value2; // النتيجة هنا ستكون 0111 (7)
    

عملية الـ XOR (^)

تُستخدم لإجراء منطقي XOR بين كل بت في القيمتين (تكرار أو تكرار خارجي).


int value1 = 5; // قيمة بتوجهات 0101
int value2 = 3; // قيمة بتوجهات 0011
int result = value1 ^ value2; // النتيجة هنا ستكون 0110 (6)
    

عملية الانزلاق لليمين (>>)

تُستخدم لنقل البتات في القيمة إلى اليمين بمقدار محدد.


int number = 8; // قيمة بتوجهات 1000
int result = number >> 2; // النتيجة هنا ستكون 0010 (2)
    

عملية الانزلاق لليسار (<<)

تُستخدم لنقل البتات في القيمة إلى اليسار بمقدار محدد.


int number = 4; // قيمة بتوجهات 0100
int result = number << 2; // النتيجة هنا ستكون 0001 (16)
    

عملية العكس (NOT ~)

تُستخدم لتغيير الصفرات إلى واحد والعكس بالعكس في كل بت.


int value = 5; // قيمة بتوجهات 0101
int result = ~value; // النتيجة هنا ستكون 1010 (-6)
    

Assignment Operators

عملية الجمع والتعيين (+=)

تُستخدم لجمع قيمة مع متغير ثم تعيين النتيجة للمتغير.


int number = 5;
number += 3; // النتيجة هنا ستكون 8
    

عملية الطرح والتعيين (-=)

تُستخدم لطرح قيمة من متغير ثم تعيين النتيجة للمتغير.


int total = 15;
total -= 7; // النتيجة هنا ستكون 8
    

عملية الضرب والتعيين (*=)

تُستخدم لضرب قيمة مع متغير ثم تعيين النتيجة للمتغير.


int quantity = 4;
quantity *= 3; // النتيجة هنا ستكون 12
    

عملية القسمة والتعيين (/=)

تُستخدم لقسمة قيمة مع متغير ثم تعيين النتيجة للمتغير.


int totalAmount = 30;
totalAmount /= 2; // النتيجة هنا ستكون 15
    

عملية الباقي والتعيين (%=)

تُستخدم للحصول على الباقي من قسمة متغير مع قيمة ثم تعيين النتيجة للمتغير.


int count = 17;
count %= 5; // النتيجة هنا ستكون 2
    

عملية الانزلاق والتعيين (>>=)

تُستخدم لنقل البتات في القيمة إلى اليمين بمقدار محدد وتعيين النتيجة للمتغير.


int num = 16; // قيمة بتوجهات 00010000
num >>= 2; // النتيجة هنا ستكون 00000100 (4)
    

عملية الانزلاق والتعيين (<<=)

تُستخدم لنقل البتات في القيمة إلى اليسار بمقدار محدد وتعيين النتيجة للمتغير.


int num = 4; // قيمة بتوجهات 00000100
num <<= 2; // النتيجة هنا ستكون 00010000 (16)
    

عملية الجمع والتعيين (|=)

تُستخدم لإجراء منطقي OR بين قيمة مع متغير ثم تعيين النتيجة للمتغير.


int flags = 0b0101;
flags |= 0b1000; // النتيجة هنا ستكون 0b1101 (13)
    

عملية الـ XOR والتعيين (^=)

تُستخدم لإجراء منطقي XOR بين قيمة مع متغير ثم تعيين النتيجة للمتغير.


int data = 0b1100;
data ^= 0b1010; // النتيجة هنا ستكون 0b0110 (6)
    

عملية الـ AND والتعيين (&=)

تُستخدم لإجراء منطقي AND بين قيمة مع متغير ثم تعيين النتيجة للمتغير.


int mask = 0b1111;
data &= mask; // النتيجة هنا ستكون 0b0010 (2)
    

Conditions

عبارة if

تُستخدم لتنفيذ كود معين إذا كان شرط معين صحيحًا.


int age = 20;
if (age >= 18)
{
    Console.WriteLine("أنت بالغ.");
}
    

عبارة if-else

تُستخدم لتنفيذ كود معين إذا كان شرط معين صحيحًا، وإلا سيتم تنفيذ كود آخر.


int mark = 75;
if (mark >= 50)
{
    Console.WriteLine("نجاح!");
}
else
{
    Console.WriteLine("رسوب.");
}
    

عبارة if-else if-else

تُستخدم لتحقق من مجموعة من الشروط المتعددة وتنفيذ كود مختلف حسب كل شرط.


int score = 85;
if (score >= 90)
{
    Console.WriteLine("تقدير ممتاز!");
}
else if (score >= 80)
{
    Console.WriteLine("تقدير جيد جدًا.");
}
else if (score >= 70)
{
    Console.WriteLine("تقدير جيد.");
}
else
{
    Console.WriteLine("تقدير مقبول.");
}
    

عبارة switch

تُستخدم لاختبار قيمة معينة ضمن مجموعة من القيم وتنفيذ كود مختلف لكل حالة.


int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("الأحد");
        break;
    case 2:
        Console.WriteLine("الإثنين");
        break;
    case 3:
        Console.WriteLine("الثلاثاء");
        break;
    default:
        Console.WriteLine("يوم غير معروف");
        break;
}
    

عبارة ternary

تُستخدم لإجراء فحص سريع باستخدام تعبير ثلاثي وإرجاع قيمة بناءً على نتيجة الشرط.


int number = 10;
string result = (number % 2 == 0) ? "زوجي" : "فردي";
Console.WriteLine(result); // سيطبع "زوجي"
    

Loops

حلقة for

تُستخدم لتنفيذ كود معين بعدد محدد من المرات.


for (int i = 0; i < 5; i++)
{
    Console.WriteLine($"التكرار رقم {i + 1}");
}
    

حلقة while

تُستخدم لتنفيذ كود معين ما دام الشرط مستمرًا.


int count = 0;
while (count < 3)
{
    Console.WriteLine($"عدد: {count}");
    count++;
}
    

حلقة do-while

تُستخدم لتنفيذ كود معين على الأقل مرة واحدة، ثم تستمر ما دام الشرط مستمرًا.


int tries = 0;
do
{
    Console.WriteLine("محاولة!");
    tries++;
} while (tries < 5);
    

حلقة foreach

تُستخدم لتنفيذ كود على كل عنصر في مجموعة معينة.


int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers)
{
    Console.WriteLine($"العدد: {num}");
}
    

الفاصل

يمكنك استخدام حلقات لتنفيذ نفس الكود مرارًا وتكرارًا بطريقة فعالة. يمكن تخصيص الحلقات حسب الاحتياجات المحددة وتكرار العمليات بشكل أوتوماتيكي.

Type Conversions 2

تحويل الأنواع (Type Casting)

عملية تحويل قيمة من نوع بيانات إلى نوع آخر، سواء كان ضمنيًا أو واضحًا.

في هذا المثال، يتم تحويل قيمة من نوع دوبل إلى نوع إنتجر باستخدام تحويل واضح (Type Casting).


double doubleValue = 10.5;
int intValue = (int)doubleValue; // Explicit type casting from double to int
// Result: intValue = 10
    

تحويل الأعداد (Numeric Conversions)

عملية تحويل بين أنواع الأعداد مثل الصحيح والعشري والثنائي وغيرها.

في هذا المثال، يتم تحويل قيمة من نوع صحيح إلى نوع عشري باستخدام تحويل ضمني (Implicit Conversion).


int intValue = 42;
float floatValue = intValue; // Implicit numeric conversion from int to float
// Result: floatValue = 42.0
    

تحويل السلاسل (String Conversions)

عملية تحويل بين نصوص وأنواع البيانات الأخرى.

في هذا المثال، يتم تحويل نص إلى قيمة صحيحة من نوع إنتجر باستخدام تحويل بواسطة التحليل (Parse Conversion).


string numberText = "123";
int number = int.Parse(numberText); // String to int conversion
// Result: number = 123
    

تحويل التواريخ (Date Conversions)

عملية تحويل بين أنواع التواريخ والزمن مثل DateTime و DateTimeOffset.

في هذا المثال، يتم تحويل نص تاريخ إلى نوع DateTime باستخدام تحويل بواسطة التحليل (Parse Conversion).


string dateString = "2023-08-22";
DateTime date = DateTime.Parse(dateString); // String to DateTime conversion
// Result: date = 2023-08-22
    

تحويل بين أنواع البايت (Byte Conversions)

عملية تحويل بيانات بصيغة بايت من وإلى أنواع أخرى.

في هذا المثال، يتم تحويل مصفوفة بايت إلى نص باستخدام تحويل إلى ومن نص (String Formatting).


byte[] byteArray = { 0x41, 0x42, 0x43 };
string text = Encoding.ASCII.GetString(byteArray); // Bytes to string conversion
// Result: text = "ABC"
    

تحويل إلى ومن نص (String Formatting)

عملية تحويل قيم إلى نصوص مُهيَّأة بتنسيق محدد.

في هذا المثال، يتم تحويل قيمة من نوع إنتجر إلى نص مُهيَّأ باستخدام تحويل إلى ومن نص (String Formatting).


int intValue = 42;
string formattedText = string.Format("The value is {0}", intValue); // Value to formatted string
// Result: formattedText = "The value is 42"
    

تحويل بين أنواع البيانات المخصصة (Custom Data Type Conversions)

عملية تحويل بين أنواع البيانات المخصصة التي تم تعريفها بواسطة المبرمج.

في هذا المثال، يتم تحويل قيمة من نوع دوبل إلى نوع مخصص Temperature باستخدام تحويل مخصص.


public class Temperature
{
    public double Celsius { get; set; }
    
    public static implicit operator Temperature(double celsius)
    {
        return new Temperature { Celsius = celsius };
    }
}

double celsiusValue = 25.0;
Temperature temperature = celsiusValue; // Implicit custom conversion
// Result: temperature.Celsius = 25.0
    

تحويل العناصر في المصفوفات (Array Element Conversions)

عملية تحويل القيم داخل المصفوفات من نوع إلى نوع آخر.

في هذا المثال، يتم تحويل قيم داخل مصفوفة نصوص إلى مصفوفة أعداد صحيحة باستخدام تحويل بواسطة التحليل (Parse Conversion).


string[] stringArray = { "1", "2", "3" };
int[] intArray = Array.ConvertAll(stringArray, int.Parse); // String array elements to int array
// Result: intArray = [1, 2, 3]
    

تحويل القيم الثنائية (Binary Value Conversions)

عملية تحويل بين تمثيلات القيم الثنائية والعشرية.

في هذا المثال، يتم تحويل قيمة من نوع إنتجر إلى تمثيل ثنائي، وتحويل تمثيل ثنائي من نوع نص إلى قيمة من نوع إنتجر باستخدام تحويل إلى ومن نص (String Formatting).


int binaryValue = 10;
string binaryText = Convert.ToString(binaryValue, 2); // Decimal to binary conversion

string binaryText = "1010";
int decimalValue = Convert.ToInt32(binaryText, 2); // Binary to decimal conversion
// Result: binaryText = "1010", decimalValue = 10
    

Value Types & Reference Types

أنواع القيم (Value Types)

هذه الأنواع هي تلك التي تُخزن مباشرة في مكان تخزينها، وتحمل القيمة بذاتها. _عندما يتم تعيين متغير من نوع قيمة إلى متغير آخر، يتم نسخ قيمته بالكامل_. هذا يعني أن كل متغير يحمل قيمة فريدة عن الآخر.

أمثلة على أنواع القيم

_الأنواع الرقمية_: مثل `int` و `double`. تستخدم لتخزين الأرقام الصحيحة والعشرية. _الأحرف_: مثل `char`. تُستخدم لتخزين الأحرف والرموز. _القيم البولية_: مثل `bool`. تُستخدم لتخزين القيم الصحيحة/الخطأ.

مثال استخدام أنواع القيم


int x = 5;
int y = x; // تم نسخ قيمة x إلى y
        

أنواع المراجع (Reference Types)

هذه الأنواع هي تلك التي تُخزن في مكان ذاكرة وتُشير إلى هذا المكان. _عندما يتم تعيين متغير من نوع مرجع إلى متغير آخر، يتم تعيين الإشارة (العنوان) للمكان في الذاكرة دون نسخ البيانات بالكامل_. هذا يعني أن هناك علاقة تشارك بيانات واحدة بين المتغيرين.

أمثلة على أنواع المراجع

_الصفوف_: مثل `class`. تُستخدم لتعريف هياكل تحتوي على خصائص ووظائف. _الهياكل_: مثل `struct`. تُستخدم لتعريف هياكل بيانات مخصصة. _المصفوفات_: مثل `arrays`. تُستخدم لتخزين مجموعة من القيم من نوع واحد. _الأنواع المخصصة_: تُنشئ بواسطة المطور وتستخدم لتحقيق أهداف معينة.

مثال استخدام أنواع المراجع


int[] array1 = { 1, 2, 3 };
int[] array2 = array1; // array2 يشير إلى نفس مكان الذاكرة الذي يشير إليه array1
        

Conditional Statements: if, nested if, switch & ternary

Conditional Statement: if

تُستخدم لتنفيذ كود معين إذا كان شرط معين صحيحًا.


int age = 20;
if (age >= 18)
{
    Console.WriteLine("You are an adult.");
}
    

النتيجة: You are an adult.


Conditional Statement: if-else

تُستخدم لتنفيذ كود معين إذا كان شرط معين صحيحًا، وإلا سيتم تنفيذ كود آخر.


int mark = 75;
if (mark >= 50)
{
    Console.WriteLine("Success!");
}
else
{
    Console.WriteLine("Fail.");
}
    

النتيجة: Success!


Conditional Statement: if-else if-else

تُستخدم لتحقق من مجموعة من الشروط المتعددة وتنفيذ كود مختلف حسب كل شرط.


int score = 85;
if (score >= 90)
{
    Console.WriteLine("Excellent!");
}
else if (score >= 80)
{
    Console.WriteLine("Very Good.");
}
else if (score >= 70)
{
    Console.WriteLine("Good.");
}
else
{
    Console.WriteLine("Passable.");
}
    

النتيجة: Very Good.


Conditional Statement: nested if

تُستخدم لتنفيذ شروط متداخلة داخل شرط آخر.


int age = 17;
bool isStudent = true;

if (age >= 18)
{
    if (isStudent)
    {
        Console.WriteLine("You are an adult and a student.");
    }
    else
    {
        Console.WriteLine("You are an adult, but not a student.");
    }
}
else
{
    Console.WriteLine("You are a minor.");
}
    

النتيجة: You are an adult and a student.


Conditional Statement: switch

تُستخدم لاختبار قيمة معينة ضمن مجموعة من القيم وتنفيذ كود مختلف لكل حالة.


int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("Sunday");
        break;
    case 2:
        Console.WriteLine("Monday");
        break;
    case 3:
        Console.WriteLine("Tuesday");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}
    

النتيجة: Tuesday


Conditional Statement: ternary

تُستخدم لإجراء فحص سريع باستخدام تعبير ثلاثي وإرجاع قيمة بناءً على نتيجة الشرط.


int number = 10;
string result = (number % 2 == 0) ? "Even" : "Odd";
Console.WriteLine(result); // سيطبع "Even"
    

النتيجة: Even

Additional Conditional Statement: ternary

تُستخدم لإجراء فحص سريع آخر باستخدام تعبير ثلاثي.


int x = 7;
string message = (x > 5) ? "Greater than 5" : "Less than or equal to 5";
Console.WriteLine(message);
    

النتيجة: Greater than 5

While and do-while Loops

حلقة while

تُستخدم لتنفيذ كود معين ما دام الشرط مستمرًا.


int count = 0;
while (count < 3)
{
    Console.WriteLine($"Number: {count}");
    count++;
}
    

النتيجة: Number: 0 Number: 1 Number: 2


حلقة do-while

تُستخدم لتنفيذ كود معين على الأقل مرة واحدة، ثم تستمر ما دام الشرط مستمرًا.


int tries = 0;
do
{
    Console.WriteLine("Attempt!");
    tries++;
} while (tries < 5);
    

النتيجة: Attempt! Attempt! Attempt! Attempt! Attempt!

For,Nested For & For (break,continue)

هيكل الحلقة for

for Loop Structure

هيكل الحلقة for

هيكل تحكم يستخدم لتنفيذ مجموعة من البيانات مرارًا وتكرارًا بشكل تحكمي.


for (initialization of loop variable; testing condition; increment / decrement of loop variable)
{
    // Statements to be executed
}

for (زيادة / تنقيص المتغير;شرط الاختبار;بداية تهيئة المتغير )
{
    // البيانات التي سيتم تنفيذها
}
    

- بداية تهيئة المتغير: يتم تهيئة المتغير الذي سيتم استخدامه في الحلقة.

- شرط الاختبار: يتم فحصه في كل تكرار. إذا كان صحيحًا، يتم تنفيذ البيانات داخل الحلقة. إذا كان غير صحيح، يتم الخروج من الحلقة.

- زيادة / تنقيص المتغير: يتم تحديث قيمة المتغير في نهاية كل تكرار.

مثال: طباعة الأعداد من 1 إلى 5 باستخدام الحلقة for


for (int i = 1; i <= 5; i++)
{
    Console.WriteLine($"العدد: {i}");
}
    

النتيجة: العدد: 1
العدد: 2
العدد: 3
العدد: 4
العدد: 5


حلقة for

تُستخدم لتنفيذ تسلسل من الأوامر بعدد معين من المرات.


for (int i = 1; i <= 5; i++)
{
    Console.WriteLine($"التكرار رقم: {i}");
}
    

النتيجة: التكرار رقم: 1
التكرار رقم: 2
التكرار رقم: 3
التكرار رقم: 4
التكرار رقم: 5

مثال آخر لحلقة for

لنقم بحساب مجموع الأعداد من 1 إلى 10:


int sum = 0;
for (int i = 1; i <= 10; i++)
{
    sum += i;
}
Console.WriteLine($"مجموع الأعداد من 1 إلى 10 هو: {sum}");
    

النتيجة: مجموع الأعداد من 1 إلى 10 هو: 55

مثال آخر: طباعة الأعداد الزوجية بين 1 و 20


for (int i = 2; i <= 20; i += 2)
{
    Console.Write($"{i} ");
}
    

النتيجة: 2 4 6 8 10 12 14 16 18 20


حلقة for متداخلة (Nested for)

تُستخدم لتنفيذ حلقات داخل حلقات، مما يسمح بتكرار العمليات بأكثر من طريقة.


for (int i = 1; i <= 3; i++)
{
    Console.WriteLine($"الحلقة الخارجية: {i}");
    for (int j = 1; j <= 2; j++)
    {
        Console.WriteLine($"الحلقة الداخلية: {j}");
    }
    Console.WriteLine("--------");
}
    

النتيجة:
الحلقة الخارجية: 1
الحلقة الداخلية: 1
الحلقة الداخلية: 2
--------
الحلقة الخارجية: 2
الحلقة الداخلية: 1
الحلقة الداخلية: 2
--------
الحلقة الخارجية: 3
الحلقة الداخلية: 1
الحلقة الداخلية: 2
--------

مثال آخر لحلقة for متداخلة

فلنقم بطباعة جدول الضرب حتى 5:


for (int i = 1; i <= 5; i++)
{
    for (int j = 1; j <= 5; j++)
    {
        int result = i * j;
        Console.Write($"{result}\t");
    }
    Console.WriteLine();
}
    

النتيجة:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

مثال على طباعة نجمات

لنقم بطباعة نجمات بنمط مثلث:


for (int i = 1; i <= 5; i++)
{
    for (int j = 1; j <= i; j++)
    {
        Console.Write("* ");
    }
    Console.WriteLine();
}
    

النتيجة:
*
* *
* * *
* * * *
* * * * *


for Loop with break Statement

استخدام كلمة الكلمة المفتاحية break مع الحلقة for

كلمة المفتاحية "break" تستخدم للخروج من الحلقة عند تحقق شرط معين.


for (زيادة / تنقيص المتغير;شرط الاختبار;بداية تهيئة المتغير )
{
    // البيانات التي سيتم تنفيذها
    if (شرط معين)
    {
        break; // الخروج من الحلقة
    }
}
    

يمكن استخدام كلمة المفتاحية "break" للخروج من الحلقة بشكل فوري عندما يتحقق شرط معين.

مثال: استخدام break للخروج من الحلقة


for (int i = 1; i <= 5; i++)
{
    if (i == 3)
    {
        break; // الخروج من الحلقة عند i يساوي 3
    }
    Console.WriteLine($"العدد: {i}");
}
    

النتيجة: العدد: 1 العدد: 2


for Loop with continue Statement

استخدام كلمة الكلمة المفتاحية continue مع الحلقة for

كلمة المفتاحية "continue" تستخدم لتجاوز تنفيذ البيانات والانتقال إلى التكرار التالي داخل الحلقة.


for (زيادة / تنقيص المتغير;شرط الاختبار;بداية تهيئة المتغير )
{
    if (شرط معين)
    {
        continue; // تخطي باقي الكود والانتقال إلى التكرار التالي
    }
    // البيانات التي سيتم تنفيذها إذا لم يتحقق الشرط
}
    

يمكن استخدام كلمة المفتاحية "continue" لتجاوز تنفيذ البيانات والانتقال إلى التكرار التالي داخل الحلقة.

مثال: استخدام continue لتجاوز تنفيذ البيانات


for (int i = 1; i <= 5; i++)
{
    if (i == 3)
    {
        continue; // تخطي التكرار عند i يساوي 3
    }
    Console.WriteLine($"العدد: {i}");
}
    

النتيجة: العدد: 1
العدد: 2
العدد: 4
العدد: 5

Using the goto Statement

استخدام الكلمة المفتاحية goto في البرمجة

كلمة المفتاحية "goto" تُستخدم للقفز إلى تعليمة محددة في البرنامج. ومع ذلك، يُنصح عادةً بتجنب استخدام "goto" لأنه يمكن أن يجعل الكود أقل قابلية للفهم والصيانة. يُفضل استخدام هياكل تحكم أخرى مثل الشروط والحلقات لتنظيم تدفق البرنامج.


// التعليمة التي يتم الانتقال إليها
labelName:
    // البيانات التي ستُنفذ عند استخدام الكلمة المفتاحية goto
    // ...
    goto labelName; // الانتقال إلى التعليمة labelName
    // ...
    // البيانات التي ستُنفذ بعد العودة من التعليمة labelName
    // ...
    

استخدام الكلمة المفتاحية "goto" يمكن أن يؤدي إلى تعقيد تدفق البرنامج وصعوبة في فهمه وصيانته، ولذلك يُفضل استخدام هياكل التحكم الأخرى.

مثال: استخدام الكلمة المفتاحية goto


int x = 1;
startLoop:
    Console.WriteLine($"قيمة x: {x}");
    x++;
    if (x <= 5)
    {
        goto startLoop; // الانتقال إلى التعليمة startLoop
    }
    Console.WriteLine("انتهى البرنامج");
    

النتيجة: قيمة x: 1 قيمة x: 2 قيمة x: 3 قيمة x: 4 قيمة x: 5 انتهى البرنامج

Coming Soon

-

Coming Soon

-

Coming Soon

-

Coming Soon

-

Coming Soon

-

Coming Soon

-

Coming Soon

-