لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/22/16 في كل الموقع
-
الإصدار 1.0.0
20396 تنزيل
رافقت زيادة استخدام شبكة الإنترنت زيادةً كبيرةً في عدد الحواسيب التي تعمل مخدماتٍ لمختلف الخدمات الشائعة، كمواقع الويب والبريد الإلكتروني والمراسلة الفورية وخواديم الملفات وخلافه؛ وقد أثبت لينُكس تفوقه في مجال الخواديم، وخصوصًا بعد الانتشار الواسع لتوزيعة أوبنتو الخاصة بالخواديم؛ الذي يُعنى هذا الدليل بشرح طرق تثبيت وضبط مختلف خدماتها. آمل أن يكون هذا الكتاب إضافةً مفيدةً للمكتبة العربية؛ وأن يفيد القارئ العربي في تعلم إدارة أشهر نظام لتشغيل الخواديم. والله وليُّ التوفيق.1 نقطة -
يُبنى أي سكربت PHP من سلسلةٍ من التعليمات البرمجية، التي تكون عمليات إسناد، أو استدعاء لدوال، أو حلقات، أو جملًا شرطية. تنتهي التعلميات عادةً بفاصلة منقوطة، ويمكن تجميع التعليمات ضمن مجموعة عبر وضعها ضمن أقواس معقوفة (أي {}). سنفصِّل في هذا الدرس الجمل الشرطية (التي هي عبارات if-else، وعبارة switch). حيث تُستعمَل هذه العبارات لاتخاذ القرارات وتنفيذ إجراءات اعتمادًا على تحقيق شرطٍ معيّن وهي من أهم التعابير البرمجية التي علينا تعلمها؛ لننظر إلى مثالٍ أولًا. ليكن لدينا متغيرٌ اسمه $a، ونريد أن نُظهِر الكلمة "hsoub" إن كانت قيمة المتغير $a مساويةً للسلسلة النصية "hsoub"؛ ستبدو الشيفرة كالآتي: <?php $a = 'hsoub'; //تهيئة المتغير // التحقق من قيمة المتغير if ($a == 'hsoub') { //إذا كانت قيمة المتغير مساويةً للكلمة 'hsoub' فستُطبَع الكلمة hsoub echo 'hsoub'; } ?> يمكنك ملاحظة أننا استعملنا عبارة if للتحقق إن كانت قيمة المتغير $a مساويةً للسلسلة النصية "hsoub" أم لا؛ ركِّز على البنية العامة: if( expr ) { statements } ستُنفَّذ العبارات داخل حلقة if إن كانت قيمة الشرط هي true أو قيمة غير صفرية (non-zero) أو قيمة غير فارغة (non-empty)؛ هذا شرحٌ للكلمات الثلاث السابقة: القيمة true: معنى هذا القيمة واضحٌ وجلي؛ ففي المثال السابق استعملنا معامل المقارنة "==" لنتحقق إن كانت قيمة المتغير $a مساويةً للسلسلة النصية "hsoub" أم لا. إن كانت مساويةً فسيعيد المعاملُ القيمةَ true وخلا ذلك سيعيد القيمة false. قيمة غير صفرية: يمكننا تجربتها بوضع 0 أو أعداد أخرى ليست مساوية للصفر في مكان الشرط... في الحقيقة، تعتبر الصفر مساويةً للقيمة false ويعتبر أي شيء عداها قيمته true. قيمة غير فارغة: جميع المتغيرات الفارغة أو غير الموجودة (null) تعتبر false، وبقية القيم أو المتغيرات تعتبر true. لاحظ أنَّ القيم الفارغة لا تعني أن تترك مكان الشرطِ فارغًا في عبارة if، وإنما تعني السلاسل النصية أو المتغيرات الفارغة أو غير الموجودة. حاول تجربة الأنواع الثلاثة آنفة الذكر لإيضاح ما سبق تمامًا. عبارة else تستعمل هذه العبارة عندما نحتاج إلى اختيار أحد احتمالين؛ فنريد مثلًا أن نُصنِّف طلاب الصف بناءً على درجاتهم، إذ يعتبر الطلاب الذين يحصلون على درجةٍ أقل من 33 راسبين، وسيعتبرون عدا ذلك ناجحين. سيبدو السكربت كما يلي: <?php $marks = 23; // علامة الطالب // عدِّل قيمة المتغير لتحصل على نتائج مختلفة if ($marks < 33) { echo 'you have failed'; } else { echo 'you have passed!'; } // الشيفرة السابقة تكافئ الشيفرة الآتية // لاحظ كيف عطلناها بوضعها في تعليق /* if ($marks < 33) { echo 'you have failed'; } if ($marks >= 33) { echo 'you have passed!'; } */ ?> من الواضح أنَّه سينفَّذ إما ما هو موجودٌ داخل عبارة if، أو ما هو موجودٌ داخل عبارة else؛ وذلك بعد التحقق من قيمة المتغير $marks، إذ ينفَّذ ما هو موجودٌ في else إن لم يتحقق شرط if. التشعب في العبارات الشرطية يمكنك إنشاء عبارة شرطية داخل عبارة شرطية أخرى، فمثلًا لو أردنا أن نتحقق إن أخذ الطالب الدرجة A+ أم لا، فسنعدِّل السكربت ليبدو كما يلي: <?php $marks = 23; // علامة الطالب // عدِّل قيمة المتغير لتحصل على نتائج مختلفة if ($marks < 33) { echo 'you have failed'; } else { // نكتب جملة شرطية داخل عبارة else if ($marks > 90) { echo 'you have passed and got A+ grade'; } else{ echo 'you have passed but not got A+ grade'; } } ?> عبارات elseif إن كان لدينا أكثر من خيارين فعلينا وقتها استعمال عبارة elseif، وهي شبيهةٌ بالعبارات المتشعبة؛ فيمكننا مثلًا إعادة كتابة السكربت السابق ليبدو كما يلي: <?php $marks = 23; // علامة الطالب // عدِّل قيمة المتغير لتحصل على نتائج مختلفة if ($marks < 33) { echo 'you have failed'; } elseif ($marks > 90) { echo 'you have passed and got A+ grade'; } else { echo 'you have passed but not got A+ grade'; } ?> إن لم يتحقق الشرط الأول (الدرجة >= 33)، فستتحقق العبارة elseif من الشرط المتعلق بها (الدرجة > 90) فإن لم يتحقق هذا الشرط أيضًا فستنفَّذ عبارة else. يمكنك كتابة عبارات elseif لأي عدد من المرات، فمثلًا، لو كان لديك أربعة خيارات (بدلًا من ثلاثة) فعليك وقتها استعمال عبارة elseif مرتين. تمرين: حاول أن تُعدِّل السكربت السابق لكي يعطي التقديرات الآتية للطلاب: عبارة switch إن جرَّبت إعادة كتابة المثال السابق لتضمين جميع التقديرات الممكنة للدرجات، فستجد أنَّ عليك كتابة الشروط مرارًا وتكرارًا؛ وما سبق مجرد مثالٍ بسيط، فما بالك بمثالٍ ضخمٍ بلائحةٍ ضخمة؟ لنتحدث الآن عن طريقةٍ جديدةٍ للجمل الشرطية تسمى "عبارة switch"؛ التي هي شبيهةٌ بسلسلةٍ من جمل if الشرطية. لنلقِ نظرةً على هذه الشيفرة أولًا: <?php $name = 'hsoub'; switch($name) { case 'variable': echo "it is a variable"; break; case 'hsoub': echo "best academy ever!"; break; default: echo 'this is necessary default case'; break; // هذه العبارة ليست ضرورية } ?> لنحاول فهم ما جرى في السكربت السابق: نبدأ السكربت بتعريف متغير اسمه "name". ثم نمرِّر ذاك المتغير إلى عبارة switch. ستأخذ العبارة swtich المتغير وتحاول مطابقة قيمته مع الحالات (cases) المُعرَّفة داخلها، فإن طابقت تلك القيمة أيّة حالةٍ فسينفَّذ ما يليها إلى أن نصل إلى عبارة break. سينتهي تنفيذ الحلقة (أي "سنخرج" منها) بعد تنفيذ أوّل عبارة break. يجب أن يكون في كل عبارة switch حالة افتراضية (default case) التي تنفَّذ إن لم تُطابِق المدخلات أيّة حالةٍ من الحالات. ليس من الضروري وجود عبارة break بعد الحالة الافتراضية، يمكنك ألّا تضيفها. أي بكلامٍ آخر، عبارة switch هي مجموعة من عبارات if-else. وتبدأ تنفيذها عند مطابقة حالة من الحالات المُعرَّفة (أو الحالة الافتراضية)، وتنتهي عند عبارة break أو قوس الإغلاق "}". ميزة استعمال switch هي أنها ستقلل من طول الشيفرة المكتوب. لنعد الآن إلى مثالنا السابق عن تقديرات الطلاب ونحاول حلّ المشكلة عبر عبارة switch: <?php $marks = 0; // علامة الطالب // عدِّل قيمة المتغير لتحصل على نتائج مختلفة // ندور العلامات إلى عدد بخانة واحدة $m = ($marks - 1)/10; // الدالة intval تعيد الجزء الصحيح من العدد // مثلًا 3.2 تصبح 3 و 3.8 تصبح 3 switch (intval($m)) { case 0: case 1: case 2: echo "F"; break; case 3: echo "D"; break; case 4: echo "C"; break; case 5: echo "C+"; break; case 6: echo "B"; break; case 7: echo "B+"; break; case 8: echo "A"; break; case 9: echo "A+"; break; default: // الحالة الافتراضية إن لم تُطابَق أيّة حالة echo "wrong input for marks"; break; } ?> من الواضح أننا لم نكتب شيفراتٍ كثيرة كما في السابق؛ لنشرح ما حدث في السكربت السابق: بدأنا السكربت بإنقاص الدرجات بمقدار 1 لكي يكون أول رقم (العشرات) من كل تقدير متساويًا (ما عدا التقدير F)، أي مثلًا 50 ستصبح 49 و100 ستصبح 99 ثم قسمنا الدرجات على 10 لجعلها تتراوح بين -0.1 و9.9؛ أي أنَّ 10 ستصبح 0.1 و67 ستصبح 6.7. الدالة intval هي دالة موجودة في لغة PHP مهمتها إعادة الجزء الصحيح من العدد؛ أي أنها -مثلًا- ستعيد الرقم 3 إن كان العدد المُمرَّر إليها هو 3.4 أو 3.5 أو 3.8. باختصار، سنمرِّر الجزء الصحيح من العدد إلى العبارة switch. ثم سنحاول مطابقة ذاك الرقم مع الحالات داخل عبارة switch؛ وكما ذكرنا سابقًا، سيستمر تنفيذ الشيفرات التي تلي سطر مطابقة الحالي إلى أن نصادف عبارة break، فلذا ستُشير الحالات 0 و 1 و 2 إلى نفس الأسطر البرمجية (تلك التي ستطبع F) لعدم وجود عبارة break بينها. المعامل الثلاثي "?:" يُمثِّل هذا المعامل صيغةً مختصرةً لجملة if-else الشرطية، شكل العام كالآتي: (expr1) ? (expr2) : (expr3) سيتم التحقق أولًا من القيمة المنطقية للتعبير expr1، فإن كانت TRUE فسيُنفَّذ expr2، أما لو كانت FALSE فسينفَّذ expr3. هذا مثالٌ عنه: <?php $marks = 23; echo $marks < 33? 'you have failed' : 'you have passed!'; // السطر السابق يكافئ ما يلي if ($marks < 33) { echo 'you have failed'; } else { echo 'you have passed!'; } ?> تمرين حاول أن تعدِّل الأمثلة السابقة. اكتب برنامجًا فيه متغيرين هما x و y، يمثلان الإحداثيات الديكارتية لنقطة، واستعمل الجمل الشرطية لمعرفة إن كانت تلك النقطة في الربع الأول أو الثاني أو الثالث أو الرابع. [مصدر الصورة: ويكيبيديا] فكِّر بمشاكل أخرى تتطلب "اتخاذًا للقرارات" وجربها باستخدام عبارة if أو switch، واسأل في التعليقات إن واجهتك أيّة صعوبات. المصادر المقال Conditional statements in php لصاحبه Harish Kumar. صفحات if و else و else-if في دليل PHP وغيرها. تعلم لغة PHP1 نقطة
-
لعبة سيف المعرفة صممت باستخدام Adobe Flash ولغة Action Script وتستخدم محرك OpenGL للإظهار. بالنسبة ل Unity3D يمكنك تصميم العاب أفضل من لعبة سيف المعرفة بكثير ان كان لديك الخبرة.1 نقطة
-
#include <iostream> using std::cout; using std::cin; using std::endl; int square(int number); int cube(int number); int main(void){ int number; cout << "Enter Number :\t"; cin >> number; cout << "The square is: " << square(number) << endl; for(int i = 0 ; i < number; i++){ cout << number; if(i + 1 < number ){ cout << " + "; } } cout << endl; cout << "The cube is: " << cube(number) << endl; for(int i = 0 ; i < number*number; i++){ cout << number; if(i + 1 < number*number ){ cout << " + "; } } cout << endl; } int square(int number){ return number*number; } int cube(int number){ return number*number*number; }1 نقطة
-
يمكنك إستعمال هذا الكود #include <stdio.h> #include <stdlib.h> int square(int number); int cube(int number); int main(void){ int number = 65; printf("The square is: %i\n", square(number)); for(int i = 0 ; i < number; i++){ printf("%d",number); if(i + 1 < number ){ printf(" + "); } } printf("\n"); printf("The cube is: %i\n", cube(number)); for(int i = 0 ; i < number*number; i++){ printf("%d",number); if(i + 1 < number*number ){ printf(" + "); } } printf("\n"); } int square(int number){ return number*number; } int cube(int number){ return number*number*number; } بما أن أكواد C تشتغل بشكل عادي في مترجم C++ فأفترض أن الكود سيشتغل بكل كفائة1 نقطة