x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
الشرط IF :
تعتبر معالجة الشروط من أهم التقنيات البرمجية وهي حتما ستجدها في جميع اللغات البرمجية مهما كان نوعها .
تعتبر الشروط هي الطريقة البرمجية الوحيدة لاتخاذ القرارت السليمة داخل البرنامج نفسه .
فهي ببساطة تفحص قيمة أو قيم عدة متحولات وفي حال مطابقتها للشروط المحدد فإن البرنامج ينفذ أوامر برمجية معينة .
وفي حال عدم تحقق هذه الشروط فإنه ينفذ أوامر أخرى أو لا ينفذ أي أمر حسب البرنامج .
التركيبة العامة للشرط if هي :
يجب كتابة كتلة الأوامر البرمجية في حال تحققت الشروط .
لكنك غير مطالب بكتابة كتلة الأوامر البرمجية في حال لم تتحقق الشروط .
مثلا :
المثال على ما أعتقد واضح جدا وهو ببساطة يفحص قيمة المتحول x المعرف سابقا .
في حال كانت قيمة المتحول x أكبر من عشرة فهذا يعني تحقق الشرط .
وهذا يقتضي تنفيذ السطر البرمجي الموجود داخل القوسين المعقوفين { }
اللذان يضمان جميع الأوامر البرمجية التي ستنفذ في حال تحقق الشرط .
أما لو كانت قيمة المتحول x أصغر من 10 أو مساوية لها فهذا يعني عدم تحقق الشرط المحدد .
وسوف يتم تنفيذ الأمر البرمجي في الكتلة else .
كما قلت أنت مخير في وضع كتلة else أو عدم وضعها وذلك حسب متطلبات البرنامج نفسه .
طرق فحص الشرط كثيرة ومتنوعة وسوف نعرض الأهم فالأهم :
- المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين متساوية .
وتكتب هكذا :
- عدم المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين غير متساوية .
وتكتب هكذا :
- أكبر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني .
وتكتب هكذا :
- أكبر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
- أصغر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني .
وتكتب هكذا :
- أصغر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
يمكن فحص أكثر من شرط في نفس الوقت وفي حال تحققت كل الشروط فهذا يعني تنفيذ كتلة if البرمجية .
هناك طريقتان رئيسيتان لدمج الشروط مع بعضها البعض وهما :
- الطريقة الأولى بواسطة المعامل AND ويكتب هكذا && :
عند دمج شرطين معا بواسطة المعامل ( و ) فهذا يعني وجوب تحقق الشرط الأول ووجوب تحقق الشرط الثاني في نفس الوقت .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل AND فهذا يعني وجوب تحقق كلا الشرطين ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل AND وبنفس الطريقة .
الطريقة الثانية بواسطة المعامل OR ويكتب هكذا || :
عند دمج شرطين معا بواسطة المعامل ( أو ) فهذا يعني وجوب تحقق أحد الشرطين إما الشرط الأول أو الشرط الثاني أو كلاهما معا بطبيعة الحال .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل OR فهذا يعني وجوب تحقق أحد الشرطين أو كلاهما ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل OR وبنفس الطريقة .
في حال دمج أكثر من شرط بواسطة OR فهذا يعني تحقق الشرط الكلي في حال تحقق على الأقل شرط واحد فقط من الشروط المدموجة .
------------------------------------------------
هناك طريقة أخرى لاتخاذ قرارت وفحص شروط أسرع وأسهل في الاستخدام ولكنها تستخدم فقط في حال كان لدينا شرط واحد للفحص .
التعليمة البرمجية المستخدمة للفحص هي switch وتكتب على الشكل التالي :
في حال لم نضع التعليمة break فإن التنفيذ سيستمر ويتم فحص الحالات اللاحقة مما يسبب في تنفيذ تعليمات برمجية لا داعي لتنفيذها .
طبعا هناك حالات خاصة معقدة تتطلب منا عدم كتابة break ليستمر التنفيذ على كل الحالات ولكنها ليست موضوعنا الآن .
تستطيع بشكل اختياري تنفيذ تعليمات برمجية في حال لم تتوافق قيمة المتحول x مع أي من الحالات المذكورة وذلك بكتابة التعليمة default ثم كتابة ما تريد من تعليمات برمجية .
ففي المثال السابق مثلا في حال لم تتحقق قيمة x في كونها 1 أو 2 أو 3 فإن قيمة y ستصبح صفرا .
لا يهم ترتيب كتابة الحالات أو مقارنة الشرط وكلها ستعطي نفس النتيجة النهائية من حيث التنفيذ .
كما رأيتم هنا فإننا في حال لزمنا فحص قيمة متحول واحد ولعدة حالات فإنه من الأسهل استخدام switch بدلا من if .
الطريقة if تستطيع التحكم الكامل بها من حيث عدد الشروط وطريقة الفحص وهي أشمل وأعم من الطريقة switch .
لكن الطريقة switch في حال كان استخدامنا بسيطا فإنها أسهل في الكتابة ومختصرة أكثر .
والمبرمج هو الوحيد الذي يستطيع اتخاذ القرار المناسب حسب خبرته وسياق البرنامج نفسه .
-------------------------------------------------------
جميع التعليمات السابقة تنفذ على افتراض أن يستمر التنفيذ حتى انتهاء الحلقة بكاملها أو فحص الشروط بكاملها .
طبعا أنت كمبرمج تحتاج أحيانا إلى كسر هذه الحلقة في حال تحقق شرط داخل الحلقة نفسها .
وهذا الشرط ليس هو شرط الحلقة نفسه .
مثلا أنت عملت حلقة من 1 إلى 1000 وتريد أن تبحث داخل مصفوفة عن قيمة معينة .
في حال أنك وجدت القيمة المطلوبة فإنك تحتاج لكسر الحلقة والخروج منها مباشرة دون أن تستمر حتى نهاية الحلقة .
لأنك بالأساس حصلت على ما تريد ولا داعي لتنفيذ باقي الحلقة .
نفس الشيء يطبق على switch فإنها بمجرد أن تجد تطابقا مع أحد الاحتمالات فإنها تكسر التنفيذ ولا تفحص باقي الاحتمالات الأخرى .
لأنها بالأساس حصلت على تطابق ولا داعي لفحص باقي الاحتمالات الأخرى .
تتم عملية الكسر بواسطة التعليمة break وأنت تستطيع وضعها في أي مكان داخل الحلقة بحيث تنفذ عند تحقق شرط ما .
دعنا نرى المثال التالي :
المثال السابق يبحث في مصفوفة array عن قيمة 52 وبمجرد أن يجدها فإنه يكسر الحلقة بالتليمة break .
وهكذا في بقية التراكيب الأخرى .
هناك تعليمة معاكسة لتعليمة break وهي التعليمة continue .
وتستخدم فقط مع for و while و do-while ولا تستخدم مع switch .
لقد رأينا أن التعليمة break تكسر الحلقة وتنقل التنفيذ إلى ما بعد نهاية الحلقة مباشرة .
فعلى العكس منها تماما تعليمة continue فإنها تكسر الحلقة ولكن تعيد التنفيذ إلى بداية الحلقة مرة أخرى أي أنها تعيد تنفيذ الحلقة من البداية .
---------------------------------------
سيكون الدرس القادم بشكل مختلف وتطبيق اكثر فاعليه
تعتبر معالجة الشروط من أهم التقنيات البرمجية وهي حتما ستجدها في جميع اللغات البرمجية مهما كان نوعها .
تعتبر الشروط هي الطريقة البرمجية الوحيدة لاتخاذ القرارت السليمة داخل البرنامج نفسه .
فهي ببساطة تفحص قيمة أو قيم عدة متحولات وفي حال مطابقتها للشروط المحدد فإن البرنامج ينفذ أوامر برمجية معينة .
وفي حال عدم تحقق هذه الشروط فإنه ينفذ أوامر أخرى أو لا ينفذ أي أمر حسب البرنامج .
التركيبة العامة للشرط if هي :
Code:
if(شروط)
{
أوامر برمجية تنفذ في حال تحققت الشروط
}
else
{
أوامر برمجية في حال لم تحقق الشروط
}
لكنك غير مطالب بكتابة كتلة الأوامر البرمجية في حال لم تتحقق الشروط .
مثلا :
Code:
if(x>10)
{
Print("قيمة المتغير اكس أكبر من عشرة");
}
else
{
Print("قيمة المتغير اكس أصغر من أو تساوي عشرة");
}
المثال على ما أعتقد واضح جدا وهو ببساطة يفحص قيمة المتحول x المعرف سابقا .
في حال كانت قيمة المتحول x أكبر من عشرة فهذا يعني تحقق الشرط .
وهذا يقتضي تنفيذ السطر البرمجي الموجود داخل القوسين المعقوفين { }
اللذان يضمان جميع الأوامر البرمجية التي ستنفذ في حال تحقق الشرط .
أما لو كانت قيمة المتحول x أصغر من 10 أو مساوية لها فهذا يعني عدم تحقق الشرط المحدد .
وسوف يتم تنفيذ الأمر البرمجي في الكتلة else .
كما قلت أنت مخير في وضع كتلة else أو عدم وضعها وذلك حسب متطلبات البرنامج نفسه .
طرق فحص الشرط كثيرة ومتنوعة وسوف نعرض الأهم فالأهم :
- المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين متساوية .
وتكتب هكذا :
Code:
if(x==y)
- عدم المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين غير متساوية .
وتكتب هكذا :
Code:
if(x!=y)
- أكبر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني .
وتكتب هكذا :
Code:
if(x>y)
- أكبر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
Code:
if(x>=y)
- أصغر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني .
وتكتب هكذا :
Code:
if(x<y)
- أصغر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
Code:
if(x<=y)
يمكن فحص أكثر من شرط في نفس الوقت وفي حال تحققت كل الشروط فهذا يعني تنفيذ كتلة if البرمجية .
هناك طريقتان رئيسيتان لدمج الشروط مع بعضها البعض وهما :
- الطريقة الأولى بواسطة المعامل AND ويكتب هكذا && :
عند دمج شرطين معا بواسطة المعامل ( و ) فهذا يعني وجوب تحقق الشرط الأول ووجوب تحقق الشرط الثاني في نفس الوقت .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
Code:
if(x==10 && y>=5)
لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل AND فهذا يعني وجوب تحقق كلا الشرطين ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل AND وبنفس الطريقة .
الطريقة الثانية بواسطة المعامل OR ويكتب هكذا || :
عند دمج شرطين معا بواسطة المعامل ( أو ) فهذا يعني وجوب تحقق أحد الشرطين إما الشرط الأول أو الشرط الثاني أو كلاهما معا بطبيعة الحال .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
Code:
if(x==10 || y>=5)
لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل OR فهذا يعني وجوب تحقق أحد الشرطين أو كلاهما ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل OR وبنفس الطريقة .
في حال دمج أكثر من شرط بواسطة OR فهذا يعني تحقق الشرط الكلي في حال تحقق على الأقل شرط واحد فقط من الشروط المدموجة .
------------------------------------------------
هناك طريقة أخرى لاتخاذ قرارت وفحص شروط أسرع وأسهل في الاستخدام ولكنها تستخدم فقط في حال كان لدينا شرط واحد للفحص .
التعليمة البرمجية المستخدمة للفحص هي switch وتكتب على الشكل التالي :
Code:
switch(x)
{
case 1:
y=1;break;
case 2:
y=3;break;
case 3:
y=5;break;
default:
y=0;break;
}
في حال لم نضع التعليمة break فإن التنفيذ سيستمر ويتم فحص الحالات اللاحقة مما يسبب في تنفيذ تعليمات برمجية لا داعي لتنفيذها .
طبعا هناك حالات خاصة معقدة تتطلب منا عدم كتابة break ليستمر التنفيذ على كل الحالات ولكنها ليست موضوعنا الآن .
تستطيع بشكل اختياري تنفيذ تعليمات برمجية في حال لم تتوافق قيمة المتحول x مع أي من الحالات المذكورة وذلك بكتابة التعليمة default ثم كتابة ما تريد من تعليمات برمجية .
ففي المثال السابق مثلا في حال لم تتحقق قيمة x في كونها 1 أو 2 أو 3 فإن قيمة y ستصبح صفرا .
لا يهم ترتيب كتابة الحالات أو مقارنة الشرط وكلها ستعطي نفس النتيجة النهائية من حيث التنفيذ .
كما رأيتم هنا فإننا في حال لزمنا فحص قيمة متحول واحد ولعدة حالات فإنه من الأسهل استخدام switch بدلا من if .
الطريقة if تستطيع التحكم الكامل بها من حيث عدد الشروط وطريقة الفحص وهي أشمل وأعم من الطريقة switch .
لكن الطريقة switch في حال كان استخدامنا بسيطا فإنها أسهل في الكتابة ومختصرة أكثر .
والمبرمج هو الوحيد الذي يستطيع اتخاذ القرار المناسب حسب خبرته وسياق البرنامج نفسه .
-------------------------------------------------------
جميع التعليمات السابقة تنفذ على افتراض أن يستمر التنفيذ حتى انتهاء الحلقة بكاملها أو فحص الشروط بكاملها .
طبعا أنت كمبرمج تحتاج أحيانا إلى كسر هذه الحلقة في حال تحقق شرط داخل الحلقة نفسها .
وهذا الشرط ليس هو شرط الحلقة نفسه .
مثلا أنت عملت حلقة من 1 إلى 1000 وتريد أن تبحث داخل مصفوفة عن قيمة معينة .
في حال أنك وجدت القيمة المطلوبة فإنك تحتاج لكسر الحلقة والخروج منها مباشرة دون أن تستمر حتى نهاية الحلقة .
لأنك بالأساس حصلت على ما تريد ولا داعي لتنفيذ باقي الحلقة .
نفس الشيء يطبق على switch فإنها بمجرد أن تجد تطابقا مع أحد الاحتمالات فإنها تكسر التنفيذ ولا تفحص باقي الاحتمالات الأخرى .
لأنها بالأساس حصلت على تطابق ولا داعي لفحص باقي الاحتمالات الأخرى .
تتم عملية الكسر بواسطة التعليمة break وأنت تستطيع وضعها في أي مكان داخل الحلقة بحيث تنفذ عند تحقق شرط ما .
دعنا نرى المثال التالي :
Code:
for(i=0;i<1000;i++)
{
if(array[i]==52) break;
}
وهكذا في بقية التراكيب الأخرى .
هناك تعليمة معاكسة لتعليمة break وهي التعليمة continue .
وتستخدم فقط مع for و while و do-while ولا تستخدم مع switch .
لقد رأينا أن التعليمة break تكسر الحلقة وتنقل التنفيذ إلى ما بعد نهاية الحلقة مباشرة .
فعلى العكس منها تماما تعليمة continue فإنها تكسر الحلقة ولكن تعيد التنفيذ إلى بداية الحلقة مرة أخرى أي أنها تعيد تنفيذ الحلقة من البداية .
---------------------------------------
سيكون الدرس القادم بشكل مختلف وتطبيق اكثر فاعليه