البرمجة للمبتدئين – الجمل الشرطية

السلام عليكم

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

اليوم سنتكلم عن الجمل الشرطية condition statement
الجمل الشرطية هي عبارة عن أداة لاتخاذ القرار بناءاً على تحقق شرط ما
يمكننا القول أن الجمل الشرطية تعتمد على ثلاثة أمور
1- أداة الشرط
2- الشرط
3- الفعل الذي يترتب على تحقق الشرط
دعونا نبسط الموضوع ببعض الأمثلة
1- لو كان الغداء اليوم فاصولياء فلن آكل
الأداة الشرطية هنا هي لو
الشرط هو الغداء فاصولياء
الفعل الذي يترتب على تحقق الشرط هو عدم الأكل
2- إذا كان الغداء اليوم فاصولياء أو بازيلاء فلن آكل
الأداة الشرطية هنا هي لو
الشرط هو الغداء فاصولياء أو بازلاء
لاحظوا هنا أن الشرط مركب من شرطين مدموجين بأداة أو (سنتكلم عن الأدوات التي يمكن استعمالها لدمج الشروط)
الفعل الذي يترتب على تحقق الشرط هو عدم الأكل
3- إن كان الغداء اليوم أي شيء غير الفاصولياء فإني سآكل
الأداة الشرطية هنا هي إن
الشرط هو الغداء عير الفاصولياء
لاحظوا هنا أن الشرط منفي بأداة غير
الفعل الذي يترتب على تحقق الشرط هو عدم الأكل
4- إذا كان معاك أكثر من عشرة دراهم فإني سآخذ منك درهمين
أما إذا كان معاك ما بين خمسة وعشرة دراهم سآخذ منك درهم
عدا عن ذلك فلن آخذ منك شيء

نلاحظ هنا أن أمامنا مجموعة من الجمل الشرطية وليست جملة واحدة -للتوضيح وضعت كل جملة شرطية في سطر لوحدها-
لكن هذه الجمل الشرطية مرتبطة مع بعضها البعض بحيث يتم فحص الشروط الخاصة بها على التوالي الأول فالأول فإن تحقق أحد هذه الشروط لا ينظر للآخرين
وهذا ما أسميه بمتسلسلة الجمل الشرطية وسنتكلم عنه لاحقاً بإذن الله

الكلام السابق كان كلام عام من الحياة لتوضيح فكرة الجملة الشرطية في لغات البرمجة
الآن سنتكلم عن الشروط في البرمجة (وكالعادة أنا أستخدم لغة الجافا في كل الشيفرات التي أكتبها)

طريقة كتابة جملة الشرط البسيطة في البرمجة
الشيفرة التالية تمثل جملة شرطية والفعل المترتب على الشرط في سطر واحد

if(codition)
//do something in one line

لو أحببت أن يكون الغعل المترتب على تحقق الشرط أكثر من جملة استخدم الشيفرة التالية

if(codition)
{
//do something
//do something
//do something
//...
}

نلاحظ أن الأقواس المعقوفة {} تستخدم هنا للإشارة إلى أن فعل الشرط في أكثر من جملة
سيتم توضيح ماهية الشرط في العنوان القادم

الشرط في جملة الشرط البرمجية
الشرط هو عبارة عن جملة يتم فيها المقارنة ما بين قيمتين أو متغيرين أو قيمة ومتغير بأحد المعاملات التالية
أكبر من

if(1>10)
{
//do something
}

أكبر من ويساوي

if(x>=10)
{
//do something
}

أصغر من

if(x
{
//do something
}

أصغر من ويساوي

if(z<=10)
{
//do something
}

يساوي

if(z=='a')
{
//do something
}

نلاحظ هنا أن المعامل يساوي == غير المعامل إسناد قيمة =
لا يساوي

if(z!='a')
{
//do something
}

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

if(1.1==true)
{
//do something
}

لأن طرفي العلامة يساوي من نوعين مختلفين
يمكنك استخدام العمليات الحسابية الضرب الجمع والطرح والقسمة
مثل

if(x-1==5)
{
//do something
}

الشروط المركبة
الشرط المركب هو الشرط الذي تستخدم معه أحد أدوات التركيب وغالبية ما تقوم هذه الأدوات بدمج أكثر من شرط في شرط واحد (ما عدا أداة النفي !)
أدوات التركيب هي
1- نفي الشرط !
وهذه الإداة وظيفتها نفي الشرط الموجود
مثال عليها المثال الثالث في الأمثلة العامة
أما المثال البرمجي

if(!(z=='a'))
{
//do something
}

والتفسير هنا إذا لم يكن المتغير z يساوي الحرف a فقم بعمل ما بداخل الأقواس
2- أو ||

if(z=='a' || x<5)
{
//do something
}

والمعنى إذا تحقق الشرط الأول أو الشرط الثاني أو كليهما حتى يمكنك تنفيذ ما بين الأقواس
3- و &&

if(z=='a' && x<5)
{
//do something
}

والمعنى بجب تحقق الشرطين حتى يمكنك تنفيذ ما بين الأقواس

ملاحظة يمكن استخدام العلامات الشرطية || و && أكثر من مرة لتكوين جمل شرطية أعقد بكثير كما يمكن الدمج في نفس الجملة أكثر من مرة
مثال

if(z=='a' && x<5 || !x==2)
{
//do something
}

يمكنك أيضاً استخدام الأقواس لعمل تكتلات
مثال إذا كان الطعام فاصولياء والتحلاية كنافة أو الطعام ملوخية فإني سآكل
لاحظوا الشيفرة التالية وفكروا معي هل تفي بالغرض المطلوب

if(x='a' && y=='k' || x=='m')
{
//eat
}

حيث x يمثل الطعام و y يمثل التحلاية و a يمثل الأرز و k يمثل الكنافة و m يمثل الملوخية
واضح أن المعنى للجملة غير واضح تماماً للبشر فما بالك للحاسوب
الحاسوب فعلياً قادر على فهمها لكن هل صحيح أنه سيفهم ما تريد منه فهمه؟
هنا المشكلة
لذا للتوضيح للحاسوب نستخدم الأقواس لتحويل الشرط الأول والثاني إلى كتلة واحدة ثم ربطها مع الشرط الثالث بالرابط أو بالشكل التالي

if( (x='a' && y=='k') || x=='m')
{
//eat
}

الجملة الشرطية المتسلسلة
المثال الرابع في أول الموضوع يوضحها كلامياً
بالنسبة لمنظرها في البرمجة فستكون على النحو التالي

if(condition1)
{
// do something 1
}
else if (condition2)
{
// do something 2
}
else if (condition...){
// do something ...
} else
{
// do last somthing -defualt-
}

والمعنى افحص الشرط الأول إذا تحقق قوم بعمل ما بين الأقواس الأولى
وإلا افحص الشرط الذي يليه فإذا تحقق نفذ ما بين أقواسه
وهكذا إلى أن تصل إلى آخر شرط فإن لم يتحقق يبقى أمامنا الحالة الافتراضية وهي ما يمثله else
بالمناسبة يمكنك عدم وضع else

أطلت عليكم كثيراً
بقي أن نرى مثال برمجي بسيط يوضح فائدة الجملة الشرطية


import java.util.Scanner;

public class FirstProgram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int firstNum = scanner.nextInt();
int secondNum = scanner.nextInt();
int operation = scanner.nextInt();
if (operation == 0) {//جمع
System.out.print(firstNum + secondNum);
} else if (operation == 1) {//طرح
System.out.println(firstNum - secondNum);
} else if (operation == 2) {// |fistNum-secondNum|
// الدالة المطلة ترجع قيمة موجبة دائماً
if (firstNum >= secondNum) {
System.out.println(firstNum - secondNum);
} else {
System.out.println(secondNum - firstNum);
}
} else if (operation==3){//القيمة الكبرى
if(firstNum > secondNum)
System.out.println(firstNum);
else if (secondNum
System.out.println(secondNum);
else
System.out.println("equal numbers");
} else{
System.out.println("unsupport operation");
}
}
}

أتمنى أن تكون المقالة حازت على رضاكم
وأي أسئلة أنا جاهز بإذن الله
تحياتي

Tags: , , , , , , , , , , ,

6 Responses to “البرمجة للمبتدئين – الجمل الشرطية”

  1. علاء قال:

    اريد عمل برنامج للجوال في الـ 2jme هو عبارة عن كتاب الكتروني فيه فهرس وقوائم وكتابة بخط معين . وهل ان هنالك كود خاص بتغيير الخط وخلفية النص . اتمنا الرد اخي العزيز يحفضك الله لا تتأخر علي ارجوك اتوسل اليك ياحبيبي .

  2. admin قال:

    أعتذر منك أخي فليس لدي معرفة ببرمجة الجوال
    على كل أنصحك بالسؤال في منتديات الفريق العربي للبرمجة
    http://www.arabteam2000-forum.com

    تحياتي

  3. حسن قال:

    كل الشكر مبدعنا

  4. admin قال:

    العفو أخ حسن

  5. عبدالعزيز قال:

    يعطيك الف عافية على هذا الشرح الجميل..
    وابداعك في الطرح وهذا يدل على احترافيتك..
    كما حبيت ان اريكم موقع يشرح الجافا بطريقة جميلة ها هو http://programming.inbrief.ws/ar/java
    ارجو من الله ان ينال اعجابكم..
    في انتظار جديدكم .. ىولكم جزيل الشكر…

  6. admin قال:

    شكراً على الموقع
    بالمناسبة يبدو لي موقع محترف
    وأخيراً شكراً على الإطراء

    تحياتي

Leave a Reply