قبل الولوج في درسنا عن الجافا انصحكم بالاطلاع على الدروس السابقة فكل درس هو عبارة عن تكملة ترابطية مع الدروس التي سبقته .
1 العنصر الأول: سلسلة تعلم لغة الجافا من الصفر " تعريف ".
2 العنصر الثاني : سلسلة تعلم الجافا من الصفر "أساسيات الجافا".
ستجد امثلة برمجية في اخر التدوينة
3 العنصر الثالث : سلسلة تعلم الجافا من الصفر "هياكل البينات"
1- دالة الشرطية في الجافا Java if-else
في لغة الجافا كباقي لغات البرمجة تحتاج الى تحديد مواقف للكي يتخذها البرنامج في حالة استوفاء الشرط او عدم استوفائه تقريبا اتقانك لدالة الشرطية هو اساس انفتاحك على عالم البرمجة وتحقيق تقدم ملحوظ في مشوارك البرمجي بحيث يمكنك تحقيق برامج بشروط قوية من خلال هذه الدالة التي توفر كل من الحماية للبرنامج والحماية لترجمة لغة الالة من الانسان
في الغالب يقوم المبرمجون بوضح حالات الاجابة في عدم استوفاء الشرط كرسالة منبثقة تخبر المستخدم بفشل الدخول او عدم استوفاء مستحقات الحقول الى اخره
مثال يومي يجربه كل مستخدم ويب او برامج مكتبية لسطح المكتب ، تقرر استخدام برنامج ما لكي تحقق غاية محدد والبرنامج يطلب منك ادخال اسم مستخدم وكلمة سرية بطبيعة الحال في حالة ادخالك كلمة خاطئة فان البرنامج سيخبرك برسالة محددة عن فشل في الولوج او على العكس ان ادخلت الكلمة الصحيحة ستجد البرنامج يعمل امامك بكل ارييحة
شرح منطقي لدالة if
المخرج سيكون كالتالي : لقد نجحت في الامتحان !!
في البرنامح الذي قمنا بكتابته حددنا شرط وهو 50 وقلنا اذا ما استوفى شرط 50 او فمافوق فانه ناجج في الامتحان وفي حالة عدم استوفائه فاننا لم نحددها بعد ويمك اضافة else لتحديد عدم استوفاء الشرط
في هذا المثال سنظع على سبيل التغيير نتيجة تبين عدم استوفاء شرط الدالة لكي يظهر لكم الفرق
المخرج سيكون كالتالي: لقد فشلت في الامتحان
اضن ان فكرة الدالة if قد اتضحت امامكم ومدا سهولة استخدامها وقوة استخدمها فهي دالة تستخدم في اغلب البرامج المكتبية والخاصة بالويب ان لم اجزم ف99% من البرامج حول العالم لا تخلو من هذه الدالة وعني استخدمها كثيرا من اجل حماية برامجي من افراط المستخدم حتى لا تتعطل اجهزتهم وهم يستخدمون برامجي ..
لنفترض انك تريد في الجافا ان تضع اكثر من شرط وفي حالة عدم استوفاء الشرط الاول تنظر للشرط التالي وهكذا دواليك ، لنضع مثال انك تريد توظيف موضف في محلك التجاري وانت تضع بعض الشروط منها ان يكون الموظف اكثر من 18 سنة ان لم يستوفي هذا الشرط ان يكون هذا الموظف يتقن اكثر من 3 لغات اجنبية ان لم يستوفي هذا الشرط ان يكون للموظف خبرة في ميدان التجارة والى اخره في حالة عدم استوفاء كل هذه الشرط تقوم برفض طلب توظيفه وهنا نتحدث عن هذه الدالة
مثال لهذه الدالة
كما قلت في مثال الموظف يتخد البرنامج الخاص بهذه الدالة اكثر من حالة استوفاء الشرط وبطبيعة الحال نضع حالة عدم استوفاء جميع الشروط لكي يكون لبرنامجنا نتيجة ما تعرفك علي نوع عدم استوفاء الشرط
في هذا المثال البرمجي لدينا عدة شروط لقبول التلاميذ في صفوف معينة وفي حالة استوفاء الشروط سيتم قبول الطالب في صف محدد حسب درجة امتحانه وفي حالة عدم استوفاء تلك الشروط ستظهر له رسالة فشل في النجاح
في هذا الشرط وضعنا نقطة محددة وهي 64 في المتغير ثم قمنا بمقارنتها مع الشرط الاول وهو 80 نقطة في حالة استوفاء الطالب ستظهر رسالة انت مع الطلاب الاوائل وفي حالة عدم استوفاء ذلك الشرط وكانت نتيجة الطالب اكثر من 60 واقل من 80 سيتم وضعه مع طلاب متوسطين من نفس المستوى انت مع الطلاب المتوسطين وفي حالة كانت نتيجته اقل من 60 واكثر من 40 فهو ناجح في الامتحان لكنه غير مقبول في الكلية وربما عليه اعادة الامتحان اوالالتحاق بصفوف للدعم وهناك الحالة الاخيرة وهي عدم استوفاء جميع الشروط وهو اخر شرط 40 نقطة فان الطالب مرفوض في الكلية وغير مقبول وتكون الرسالة كالتالي الفشل في الامتحان عدم القبول في الكلية
في ما يخص الدوال الشرطية فاتمنا اني اوفيت شرحي فيها ان كان اي تساؤلات تفضل اخي الكريم ..
2 - الحلقة المفرغة for loop
لنفترض انك تقوم بعمل معين في برنامج وتريد هذا الامر ان يتكرر لعدة مرات من غير المعقول اعادة هذا الامر فكل مرة وكتابة الكود كل مر تريد تنفيذ سطر برمجي على حالات محددة الحلقة المفرغة تساعدك على تكرار الكود على عدة عبارات برمجية محددة
في الحلقة المفرغة توجد ثلاث عناصر اساسية التهيئة والانتهاء والتصاعدية او التناقصية
التهيئة initialization :يتم تنفيذ الكود قبل بدآ الحلقة
الانتهاء termination : هنا يتم تنفيذ شرط الخاص بالحلقة المفرغة اما مقارنة او تحقق شرط محدد
التصاعدي او التناقصي increment :يتم تنفيذها في كل مرة بعد تنفيذ الحلقة
حتى لا يكون الامر مربك ساشرحه في كود مع نتيجة برمجية لكي يبين عمل الحلقة المفرغة
كما في الكود وضعت متغير conter وحدد 4 كقيمة لهذا المتغير ثم قمت بانشاء حلقة تبدا العد من واحد في التهيئة int cnt = 1 وقمت بوضع مقارنة في الانهاء او الشرط ان يكون المتغير cnt اصغر او يساوي conter واخبرته ان يقوم بالعد تصاعدي cnt++ بهذه الطريقة ستكون النتيجة
جرب ان تقوم بتغيير القيمة وتشغيل البرنامج وحاول ان تعطي قيمة اكبر وتغير التصاعدية بالتناقصي cnt-- ولاحظ التغيير في البرنامج كيف سيصبح بعض التغييرات في القيم سيوضح لك اخي الكريم فكرة عمل الحلقة المفرغة
لكي تبني حلقة مفرغة لا نهائية في الجافا فقط عليك كتابة الكود التالي :
الان سنتكلم عن الدور الاساسي في الحلقة المفرغة واكثر استخدام لها في البرمجيات ، في الحقيقة تتوافق الحلقة المفرغة مع المصفوفات وتادي دور فعال وسريع فكل مصفوفة لا تستغني عن حلقة مفرغة حتى يكون العمل متقن رايت عدة لغات تتعامل مع المصفوفات بشكل مختلف كالاستغناء عن الحلقة المفرغة لكن الجافا تاكد اخي الكريم انك ستحتاجها فيكل برنامج يستخدم مصفوفة
قواعد عليك التعامل معها عند المصفوفة الرقم واحد يساوي 0 فالالة تعتبر الرقم صفر تعداد فعند وضعك مصفوفة تاكد ان الرقم واحد هو 0 والرقم 2 هو 1 والرقم 3 هو 2 وهي دواليك
شكل المصفوفة
الحلقة المفرغة مع المصفوفة تسهل العملية
كما تلاحظ اخي الكريم انه عند وضع الكود في برنامجك سيكون الناتج كالاتي :
2
4
8
16
فلغة الالة تعتمد الرقم 0 كانطلاقة للعد وليس كالانسان يعتمد الرقم 1 للبدأ في العد
2 <===== 0
4<===== 1
8<===== 2
16<===== 3
ارجو ان تكون الفكرة قد وصلت حتى نقوم بتطوير الكود قليلا حاول ان تجرب الكود التالي :
ما الذي تغير ؟
تقريبا لا شيء فقط اختصرنا الكود لاننا نستهدم مصفوفة ولا يوجد شرط محدد لبداية التهئية او انهاء ولا تصاعديا فقط وضع البرنامج نفس المصفوفة مررناها من arr الى i فالحلقة المفرغة تضع لكل عنصر داخل المصفوفة قيمة تطبعها في نهاية البرنامج مثال لكل عضو عدد محدد ولكل منهم قيمة محدد تقوم الحلقة المفرغة بوضع تلك القيمة لكل عضو محدد مع انها تقوم بالعد من 0 للعضو رقم 1 و1 للعضو رقم 2 وهي دواليك ... التمرن والتعامل مع عدة مشاكل برمجية ستساعدك على فهم الحلقات المفرغة ..
3 الحلقة المفرغة while loop
في الحياة اليومية نقوم بحل مشكلة ما بعمل معين لمدة معينة او لعدد معين من المرات حتى يتم الغرض كذالك في عالم الالة يمكنك كتابة كود 10000 مرة او يمكنك فقط تخصيص حصة محددة لعمل ذلك على سبيل المثال قمت ببناء برنامج
وفي حالة ثانية يمكنني الاعتماد عن الالة
النتيجة هي نفسها وكل الطريقتين صحيحة في معالجة المشكلة عدا الطريقة الاولى مكلفة للوقت والجهد والطريقة الثانية مختصرة للوقت وجعلتني اقضي عدة ثواني بدل ساعات من العمل ، هو نفس عمل الحلقة المفرغة while loop
في هذه الدالة الخاصة بالحلقة المفرغة عليك تحديد الشرط وتحديد عدم استفاء الشرط للخروج من الدالة وعدم الوقوع في دالة لا نهائية
المخرج سكون كالتالي :
حتى الى هنا الدالة واضحة وهملها واضح جرب اخي الكريم تغيير القيمة واعد تشغيل البرنامج لفهم الدالة بشكل اوضح قبل الاستمرارفي الشرح
do....while loop
تشبه do....while loop كثيرا while loop في العمل عدا ان هذه الاخيرة تعمل بشكل معاكس فهي تقارن هيكلية الحلقة في حالة استوفائها الشرط
مثال:
كما ترى انها عالجة الشرط في اخر الحلقة وليس في بداية الحلقة المفرغة ، فان تنفيذ العبارات البرمجية داخلها يمر مرة واحدة على الاقل
4 - تغيير الحالة switch statement
يعتبر تغيير الحالة او المواقف خيار افضل كتخمين او برامج التخمينية او عمليات حوسبية انت تجهل نتيجتها وتريد ان تحصل على نتيجة مرضية او قريبة فان تغير الحالات هوافضل خيار حيث يعمل مع أنواع البيانات البدائية بايت ، والقصير ، و char ، و int. كما أنه يعمل مع الأنواع التي تم تعدادها ، وفئة String ، وعدد قليل من الفئات الخاصة التي تلتف أنواعًا بدائية معينة: Character ، Byte ، Short ، and Integer
مثال برمجي :
كما نرى ان المدخل عبارة عن ايام الاسبوع وتقوم باختيار الاجابة الاقرب او التي تعتبرها الافضل سيكون المخرج هو يوم الثلاثاء كما تم اختياره
switch case in string
هنا مثال اخر عن الدالة واستخدمها على string
قمنا باختيار المتغير string واخترنا A ثم حجزنا متغير message بدون قيمة وقمنا باعطاء البرنامج عدة خيارات في switch لكي يحدد افضل اجابة متواجدة في البرنامج مع العلم اننا حددناها في A البرنامج تلقائيا يقوم بالبحث عن النتيجة المرجوة ويضهرها داخل متغير message
5 - التوقف والاستمرار في الحالة break statements
الجافا ليست بها go to او تخطي او الرجوع مثل اللغات البرمجية الاخرى الاانه من المستحسن تخطي بعض البرمجيات في الكود وافضل طريقة هي break مثال
حتى يكون الامر واضح شرح
المرخج سيكون كالتالي :
ان عملية العد تصل الى العدد 5 لكننا اوقفنها واخترنا التوقف عند 3 احيانا يكون البرنامج يصل الى نتيجة في وقت او حالا ت محددة وقد يستغرق وقت اكبر لاعطاء النتيجة رغم انه قد حصل عليها في الحالة رقم 3 فلما سنحتاجه ليقارن حتى الحالة 5 ، عني انا افضل ان يستمر حتى الحالة 5 لكي اتاكد من تمام العمل فالخيار في المستقبل ان شاء الله متاح لك اخي الكريم
Continue
في حالة الاستمرار بعد التوقف يتيح لك البنامح تجاوز حالات محدد من البرنامج ربما انت لا تريد المستخدم الوصول لها او الحصول عليها او تريد هذه النتيجة التي تعرف قيمتها الحوسبية الا تكون داخل الحلقة المفرغة
مثال برمجي يوضح بشكل اكبر :
النتيجة :
كما تلاحظ اخي المتدرب انه قام بتجاوز مرحلة من الحلقة او مرحلة من البرنامح وهي المرحلة الثالثة بهذه الطريقة تستطيع ان تخفي او تظهر ما تريده للمستخدم مثال قمت ببرمجته في احد التطبيقات الخاصة بسطح المكتب ، ما قمت ببنائه هو شاشة استقبال مع progress bar تقوم هذه الاخيرة بالعد من 1 الى 100% ,وخلال ذلك العد يقوم البرنامج بتهيئة الملفات الضرورية والتاكد من وجود الملفات والتحديثات وغيرها من الاعمال التي تم حفظهاخلال العمل بالبرنامج الprogressbar التي بنيتها قمت ببنائها بخاصية break و Continue
واقوم باضهار رسائل مخصصة في حالة تواجد عذر ما او اقوم بتجاوز بعض الحالات الاستثنائية كعدم حفظ البينات التي عمل عليها وفي حالة تواجدها يتم الاستعانة بها ستجد هذا المشروع على موقع github وهو مبرمج بلغة برمجية اخرى وضعت مثال عن البرنامج حتى لا اشتت انتباهكم ومساركم في تعلم الجافا
6- الاستثناء في الجافا exeption
في الحقيقة برمجة باكثر من لغة برمجية وفي محاولتي للاتصال بقواعد بينات بعيدة او عمل عن بعد قد تكون له صلة بالداتا عبر الويب او محلي localhost لا اجد اي ide يقوم بتوقيف برنمجي وينصحني باستخدام exeption لحماية الداتا او حماية طريقة الترجمة من الانسان الى الالة واخبارها ان هذه البينات حساسة وقابلة للتلف بل اني اجزم اخي الكريم انك ستسخدمها اثناء التعديل والاضافة والحدف والاتصال بالبينات
هذه الصورة قد تجعلك تقفل ide وتبتعد عن البرمجة لانها مزعجة جدا للمبرمجين وتعتب ثورة الغضب واحساس بفشلك في ترجمة لغة البشر للالة هناتنبع حل يسما الاستثناء وتقوم باستثناء المشكلة لتكون اكثر تحديدا
في اغلب لغات البرمجية ستجد نفس الهيكلة التابعة للاستثناء وهي كالتالي
حتى تستوعب اخي الكريم دور الاستثناء حيث وجدت كود يعمل بدون اتصالات خارجية وهو اقرب كود في الغالب ستسخدم الاوامر الحساسية والقابلة للضياع
المخرج سيكون كالتالي :
هيا لنظف للكود استثناء
المخرج
رائع البرنامج اصبح يعمل ولا يعطي رسالة الخطأ المزعجة العمل على الاستثناء لا يزال قائما ان شاء الله سنتطرق اليه في الدروس القادمة مع قواعد البينات او الداتا الخارجية حتى تتخد فكرة اكبر فلا يمكن التعمق في كود الاستثناء اكثر بدون معرفة لقواعد البينات وتجاوز لعدة دروس تعتبر اساس او ركائز لتقوية الجافا لديك ما اصي به اخي الكريم وهو التعلم والتمرن على ماقراته من دروس اليوم
أمثلة وبرامج للجافا ستجدها في الرابط التالي حاول تقليدها وكتابتها بتغيير القيم حتى تتعود على البرمجة
https://www.facebook.com/notes/384952869591985
0 تعليقات