عمرو
المدير العام
عدد المشاركات : 483 نقاط : 879 تاريخ التسجيل : 22/09/2009 العمــــــــــر : 34 الموقع : منتديات الشظمي العامه
| موضوع: اروع سلسلة لتعليم لغة الجافا السبت يناير 28, 2012 5:34 am | |
| الدرس الاول: مقدمة الجافا هى احدى لغات البرمجة التى اصبحت شائعة الاستخدام فى الآونة الاخيرة وذلك Java . Sun Microsystems لميزاتها العديدة وهى من تطوير شركة سن مايكروسيستم ولكن عزيزى القارئ قبل ان نبدأ فى التحدث عن الجافا تعالى اولا نقوم بتقسيم لغات البرمجة. تنقسم لغات البرمجة الى ثلاث مستويات: Simple Language : الاول وهى ابسط لغات البرمجة ولاتحتاج الى مترجم الذى سيقوم بتحويل البرنامج الى ما يسمى لغة الاله وهو ما يفهمة الكمبيوتر وهى تكون لغة بسيطة فى اوامرها فى تعلمها ومن .(HTML) امثلتها Base Programming Language : الثانى ASP) وهى اللغات التى تعتمد فى اوامرها على لغات اخرى اساسية ومن امثلتها وهى تعتمد على الجافا). JSP ) ( وهى تعتمد على فجول بيسك و فى بى سكريبت Full Programming Language : الثالث سى++ و فجول بيسك و (c++ ,VB,Java) وهذه هى اللغات الاساسية ومن امثلتها الجافا. Programming Langue اذن سنقوم هنا بشرح لغه اساسية وهى من اهم لغات البرمجة . الدرس الثانى : اهم مزايا الجافا لكن عزيزى القارئ تعالى نتعرف لماذا الجافا من اهم لغات البرمجة وما الذى ميزها عن غيرها من اللغات؟ (Object Oriented Programming) اولا : تنتمى الى لغات اوبجكت اورينتيد وهو عبارة عن ارتباط بين الطرق والخصائص لكائن وتقوم الوظائف باداء وظيفة معينة ويتم فيها تقسيم المشاكل الكبيرة الى عدة مشاكل صغيرة وحل اى مشكله ينقسم الى ثلاث مراحل ا- تحليل المشكلة وتحديد طريقة حل هذه المشكلة وماذا تحتاج لحلها. Simple Langue Base Programming Langue Full Programming Langue -2 تصميم عملية التحليل السابقة بصورة تستطيع معها فهم المشكلة وطريقة حلها فى خطوات متسلسلة وواضحة . -3 اخيرا كتابة كود البرنامج باللغة التى اخترتها . ثانيا : يمكن باستخدام الجافا تنفيذ عمليات مختلفة فى نفس الوقت ذاته من الطبيعى ان يتم تنفيذ خطوات اى برنامج بطريقة متسلسلة اى بعد تنفيذ خطوة ينتقل الى تنفيذ الخطوة التالية لكن فى الجافا يمكن تنفيذ خطوات مختلفة فى نفس الوقت . ثالثا : ادارة العمليات فى الذاكرة تلقائيا فى اللغات الاخرى مثل سى++ مثلا يتم التعامل مع المتغيرات والكائن يدويا اى من خلال البرنامج و المبرمج لكن فى الجاف التعامل مع الذاكرة يتم تلقائيا دون تدخل من المبرمج وبذلك تكون اكثر امانا من اللغات الاخرى رابعا : الامان التام عندما تقوم بتحميل اى برنامج من على شبكة فانه يمكن لاحد القراصنة ان يقوم بالتحكم فى جهازك من خلال كود البرنامج الذى تقوم بتحميلة لانه يمكنة التحكم فى المتغيرات والكائن الموجودين فى الذاكرة ولكن فى الجافا هذا مستحيل ان يحدث كما ذاكرنا فىالميزة السابقة ايضا فى حالة وجود فيروس فى جهازك فنه اثناء تشغيل اى برنامج فى الذاكرة يتم انتقال الفيروس اليه وكن فى الجافا لن ينتقل اليه لانه لايستطيع التحكم فى الذاكرة فىهذه وكما سنعرف فى الميزه class الحاله ايضا لان الملف الذى يتم تحميله فى الذاكرة من النوع التالية هذا الملف لايمكن التغير فيه. خامسا : لاتعتمد على نظام التشغيل تعالى عزيزى القارئ ناخذ اولا مثال على لغه اخرى مثل سى++ بعد كتابة البرنامج machine ) لتحويل البرنامج الى لغة الالة (compiler) (كود) يتم استخدام ما يسمى المترجم وهذا الملف الجديد الناتج عن الترجمة لايعمل الى على نظام التشغيل الذى ترجم فيه (code بمعنى اذا تم عمل الترجمة لبرنامج كتب بلغة سى++ تحت نظام تشغيل ويندوز فان الملف الناتج الذى بلغة الاله لايعمل الا تحت الويندوز واذا اردنا تشغيله تحت نظام تشغيل يونكس يلزم اعادة الترجمة تحت هذا النظام C++ Compiler Machine code ثم يتحول هذا class اما فى الجافا فيتحول البرنامج (كود) الى ملف لايمكن قراءته يسمى ملف هذا يمكن تشغيله تحت اى نظام تشغيل دون عمل class الملف الى ملف بلغة الاله والملف ترجمة للبرنامج مره اخرى Java file JDK Class file JVM Machine file class هو المترجم الذى يستخدم لتحويل البرنامج المكتوب بلغة الجافا الى ملف امتداده JDK وهذا الملف هو الذى يمكن تشغيله على اى نظام تشغيل الى ملف بلغة الاله class هو المترجم الذى يحول ملف JVM سادسا : يمكن استخدام الجافا فى الانترنت (java يمكن عمل التطبيق او البرنامج على الانترنت وفى هذه الحاله يسمى جافا ابليت applet) عزيزى القارئ اذا وجدت هذه الميزات مجتمعه فى لغة برمجة فاعلم انها الجافا الدرس الثالث: اعداد الكمبيوتر لتشغيل الجافا ويمكنك تحميله مجانا من (Java 2 Platform) عزيزى القارئ تحتاج الى تحميل مايسمى قم عزيزى القارئ بتحميل احدى الاصدارات التى تتناسب مع نظام التشغيل java.sun.com بعد Java 2 Platform, Standard Edition الذى تستخدمة وسنقوم هنا بشرح عمل اعداد 1.3 تحميله من الموقع الذى ذكرناه كمثال سيكون مثالنا خلال نظام التشغيل ويندوز -1 بعد تحميل الملف من الموقع ستظهر هذه الايقونة (Double Click) اضغط مرتين عليها -2 ستظهر هذه النافذة انتظر قليلا بعد ظهورها -3 ستظهر النافذه التاليه انتظر ايضا بعدها قليلا فيها Next -4 ستظهر هذه النافذة اضغط على -5 تظهر النافذه التالية وهى عبارة عن اتفاقية بينك وبين شركة سن ميكروسيستيم لكى تستطيع الاستمرار Yes اضغط -6 تظهر نافذة تخبرك باسم المجلد الذى سيتم تجميل الملفات به ومكان هذا المجلد ولكن يفضل ان تدعه كما هو واضغط Browse فاذا اردت تغير اسم المجلد او مكانه اضغط Next Next -7 تظهر نافذه تخبرك بالملفات والمجموعات التى سيتم انزالها على الجهاز اضغط للاستمرار -8 ستظهر النافذه التالية التى توضح عملية انزال الملفات انتظر حتى تصل العملية الى %100 -9 تظهر نافذه تخبرك ان تنتظر قليلا حتى يتم الانتهاء من عملية الاعداد لانهاء عملية الاعداد Finish -10 اخيرا اضغط الان اهنئك بانهاء الخطوة الاولى نحو احتراف الجافا بنجاح الدرس الرابع: البرنامج لاشك عزيزى القارئ ان اى برنامج يمر بعدد من المراحل منذ ان كان فكرة او مشكلة لدى احد مستخدمىالكمبيوتر الى ان يكتب ثم يوضع محل التنفيذ ويسمى البرنامج فى هذه الحالة والتطبيق هو عبارة عن برنامج كتب لحل مشكلة محددة. (application) تطبيق (notepad) ولكتابة البرنامج بلغة الجافا يكتب داخل اى محرر نصوص مثل المفكرة مثلا . (source file) ويسمى هذا الملف بملف المصدر .java ويحفظ الملف بامتداد ويمكن بدل كتابة البرنامج داخل معالج نصوص ان يكتب باستخدام محرر خاص بلغة الجافا وهو عبارة عن اداة مساعدة تيسر للمبرمج كتابة البرنامج وتخزين ما كتب (editor) ويسمى فى ملف وتسهيل استرجاعة وتعديله ونسخة ايضا ويوجد بعض المحررات يمكن ان تقوم بعملية الترجمة ايضا ويمكنك عزيزئ القارئ اثناء تعلمك معنا كتابة البرنامج داخل المفكرة او الاستعانه باحد محررات الجافا . والخطوة التالية لكتابة البرنامج (ملف المصدر) هى عملية الترجمة التى يتم تحويل ملف كما شرحنا فى الدرس السابق. .class المصدر فيها الى ملف بامتداد وهذه الحزم تتكون من مجموعة من (Packages) ولغة الجافا تتكون من مجموعة من الحزم وهذه الدوال هى (Methods) هذا الكائن يتكون من مجموعة من الدوال (Opjects) الكائن اوامر الجافا التى تستخدم فى كتابة البرنامج . اى ان البرنامج بلغة الجافا عبارة عن دالة رئيسية تنادى مجموعة من الدوال الاخرى وكل داله هى مجموعة من الاوامر. الدرس الخامس: الدالة الرئيسية وهى الدالة التنفيذية فى البرنامج ولا يمكن تشغيل اى main() وهناك دالة رئيسية هى الدالة برنامج دون وجود الدالة الرئيسية فيه اذن فاى برنامج يتكون من دالة واحدة على الاقل هى وهذه الدوال لتنفيذها يتم main() ويمكن ان يكون هناك دوال اخرى تعرف قبل او بعد main() كما سنرى فيما بعد . main() استدعائها داخل الدالة main() تتكون الدالة عامة بما فى ذلك الدالة الرئيسية -1 الاعلام عن الدالة وهو بمثابة عنوان الدالة ويحتوى على اسم الدالة وقائمة المتغيرات التى ستدخل الى الدالة او ستخرج منها . -2 تعريف الدالة وهو يشمل اساسا جسم الدالة ويوضع بين قوسي فئة { } ويحوى هذا الجسم العبارات التى تشمل الاوامر وسنفصلها فيما بعد . ويكون شكل الدالة الرئيسية هكذا public static void main(String []arg) { العبارات } .main وسنعرف فيما بعد ماهى الكلمات قبل الدرس السادس: حروف الجافا تتالف حروف الجاف مما يلى : وكذلك Z الى A من (Capital letters) وهى الحروف الكبيرة (letters) -1 الحروف الابجدية z الى a من (Small letters) الحروف الصغيرة وهى الارقام من 0 الى 9 (Digits) -2 الارقام العددية وهى تلك الحروف التى ليست باعداد او بحروف (Special Characters) -3 الحروف الخاصة ابجدية ولكن تكون علامات رمزية ومنها العلامةالرمزية المعنى + - / * = % ! \ " ' . , ; ) ( ] [ < > ? : الجمع الطرح القسمة الضرب اشارة المساواه علامة النسبة علامة التعجب شرطة مائلة للخلف علامة تنصيص علامة تنصيص مفردة النقطة فاصلة فاصلة منقوطة قوس دائرى يمينى قوس دائرى يسارى قوس مربع يمينى قوس مربع يسارى علامة اصغر من علامة اكبر من علامة استفهام الشارحة يعنى سطر جديد \n كما يمكن استخدام خليط من هذه الرموز فعلى سبيل المثال وسناقشها (escape sequences) ويعرف مثل هذا الخلط للرموز بتسلسلات او تتابعات الهروب ولكنه يعتبر رمز n لاحقا ولكن ببساطة بالرغم من ان الرمز السابق يتكون من رمزين \ و واحد. الدرس السابع: الكلمات المحجوزة وهى ذات معانى (main words) او الكلمات الرئيسية (reserved words) الكلمات المحجوزة نمطية او قياسية سابقة التعريف فى الجافا ويمكن استخدامها للغرض المحدد لها فقط ولايمكن استخدامها كمعرفات يعرفها المبرمج كما لا يمكن استخدامها كمتغيرات وذلك حتى لايحدث بسببها ارتباك اثناء عملية الترجمة وهى auto , extern , sizeof , break , if float , static , case , struct , for char , goto , switch , const , int typeof , continue , union , default , do long , register , void , double , else return , volatile , short , while , for while , enum , signed , near , asm entry , fortran , huge , pascal , ada الدرس الثامن : المعرفات : هى تلك الاسماء التى تعطى لعناصر البرنامج المختلفة مثل : (identifiers) المعرفات المتغيرات , الدوال , المنظومات اما شروط المعرف : باى (under score) (_) -1 ان يحتوى على حروف ابجدية وارقام وعلامة الشرطة التحتية ترتيب -2 من الضرورى ان يكون اول رمز فى المعرف حرفا ابجديا ويسمح باستخدام الحروف الصغيرة او الكبيرة (الاستخدام الشائع يفضل استخدام حروف صغيرة لمعظم انواع المعرفات) يمكن كذلك استخدام الشرطة التحتية (_) وتعتبر مثل الحرف فى بداية المعرف ولكن يندر حدوث هذا -3 يجب ان يكون المعرف خاليا من الرموز الخاصة ماعدا (_) -4 لا تستخدم الحروف الصغيرة والحروف الكبيرة بالتبادل (اى ان الحروف الكبيرة ليست VALUE ليست هى نفسها value مكافئة للحروف الصغيرة المناظره لها) اى -5 يفضل ان يكون للمعرف الطول المناسب وان يكون واضحا وذا معنى ومدلول -6 يفضل ان يكون اسم اى داله او متغير يبدأ بحرف صغير واذا كان مكون من كلمتين تبدأ الاولى بحرف صغير والثانية تبدأ بجرف كبير -7 اسم الكائن يبدأ بحرف كبير واذا كان مكون من كلمتين تكون بداية كلا منهما حرف كبير امثله صحيحة للمعرفات: X , area10 , Y15 , tax_rate Sum_4 , total_value , REAL , Name _temperature امثلة على اسماء معرفات غير صحيحة &address , 5th , last name , order-no , char , "a" الدرس التاسع: التعليقات هى عبارة عن بعض الاوامر الايضاحية ولا يكون لها اى تأثير لانها (comments) التعليقات لاتعتبر جزء من البرنامج . وتوضع التعليقات فى اى مكان داخل البرنامج وممكن ان يخلو البرنامج منها ويبدا التعليق ان وجد بالعلامة */ وينتهى بالعلامة الرمزية /* وهذا يعنى ان ما يقع من سطور بين العلامتين انما هو مخصص للملاحظات وهذا شأنه ان يفيد فى تعريف السمات الاساسية للبرنامج اوفى توضيح المنطق المشمول فى السمات المختلفة للبرنامج كما يفيد فى اعادة قراءة البرنامج وتعديله . وللمبرمج ان يكتب ما يشاء من ملاحظات بين العلامتين قد تذكره بمضمون البرنامج والغرض منه او بعض الخطوات كما تفيد ايضا فى الشرح . وقد يحتوى البرنامج على اى عدد من سطور الملاحظات فهى لا تهم المترجم . واذا كان التعليق سطر واحد فقط يمكن ان تكون علامة التعليق هى // . الدرس العاشر : تسلسلات الهروب هناك بعض رموز الحروف الخاصة عزيزئ القارئ ويطلق عليها احيانا حروف الهروف وحرف الهروب هو حرف يستخدم للدلالة على ان الحروف التالية له لها (escape character) معنى خاص باختصار حروف الهروب هى حروف لها هدف معين وتبدأ دائما \ شرطة مائلة الى الخلف وبعدها ياتى الحرف او الرمز والاثنين معا يمثلان رمز واحد فقط . نورد فيما يلى تسلسلات الهروب الشائعة الاستخدام الوظيفة الرمز \b العودة مسافة للخلف \n سطر جديد \r البدء من اول السطر \t التقدم 7 مسافات لكتابة علامة التنصيص "\ لكتابة علامة التنصيص الفردية '\ لكتابة علامة الاستفهام ?\ لكتابة شرطة مائلة للخلف \\ الدرس الحادى عشر: الثوابت يوجد فى لغة الجافا العديد من انواع الثوابت وسنتناول عزيزى القارئ هذه الانواع بشئ من التفصيل. integer constant -1 ثوابت صحيحة هى تللك الاعداد ذات القيم الصحيحة التى تحوى تسلسلا من الارقام سواء كانت اعداد سالبة او اعداد موجبة او صفر. ويجب الا يحتوى الثابت الصحيح على نقطة عشرية او اسية. يسبق العدد السالب باشارة – لبيان انه عدد سالب لايتكون العدد الصحيح من اى رمز خاص او حرف ابجدى لا يكون الرقم الاول صفر floating point -2 ثوابت متحركة النقطة الثابت المتحرك النقطة هو عدد للاساس 10 يحتوى على علامة عشرية او على اس او على كل منهما ولا يحتوى على اى رمز او حرف وقد يكون العدد موجبا او سالبا ويمكن ان يكون الاس سالب او موجب ولكن يجب الا E او e ويرمز للاساس 10 بحرف يحتوى على علامة عشرية 4e فمثلا الرقم 40000 يمكن ان يكتب 5 ( قد يخضع احيانا ثابت النقطة المتحركة الى عمليات تقريب فمثلا العدد ( 0.9999999999999 نجد انه يتم تقريبه الى 1 ولايمكن استخدام قيم متحركة النقطة فى اغراض العد او الفهرسة . character constants -3 ثوابت حرفية فيما يلى امثله لبعض الثوابت الحرفية 'a' , '5' , '\n' , 65 اى ان الثوابت الحرفية يمكن ان تكون رقم او حرف او رمز من متسلسلات الهروب . اى ان الثابت الحرفى يمكن ان يكون رقم وهذا 'A' اما الرقم الاخير 65 فهو عبارة عن الحرف اى الاسكى كود وهو ان الحرف يتم تمثيله ASCII الرقم سيتم تحويله الى الرقم المناظر له فى برقم مكون من 7 بت string constant -4 ثوابت السلسلة يحتوى ثابت السلسلة على اى عدد من الرموز او الفرغات وتكون محصورة بين علامتى تنصيص " " . الدرس الثانى عشر : المتغيرات عزيزى القارئ ان الجافا غنية بالمتغيرات من الانواع المختلفة . والمتغيرات هى معرفات او اسماء رمزية يخصص لها اماكن تخزين فى الذاكرة والتى تتحول قيمتها وتتغير من قيمة الى اخرى حيث يمكن الرجوع الى القيمة عن طريق الاسم المعطى لها وذلك اثناء تنفيذ البرنامج دون ان يتغير نوع البيانات (سيتم شرح فيما بعد نوع البيانات) ويلزم الاعلان عن نوع المتغير صراحة قبل استخدامه فى البرنامج . وفى الغالب ما يتم الاعلان عن المتغيرات وتوضيح نوعها فى مستهل البرنامج . نتناول الان بشئ من التفصيل المتغيرات -1 المتغيرات الصحيحة : وهى تلك التى يخزن فيها اللاعداد الصحيحة السالبة او الموجبة يوجد منها نوعان اعداد صحيحة صغيرة او عدد طويل صحيح والاخيرة مخصصة للارقام الكبيرة جدا -2 المتغيرات متحركة النقطة : وهى تلك التى تحتوى على علامة عشرية او العدد الذى به قيمة كسرية او بمعنى ادق الاعداد الحقيقية -3 المتغيرات مزدوجة الدقة : وهى نفس متحركة النقطة ولكن القيم الممثلة للمتغيرات مزدوجة الدقة مداها يكون اكبر من متحركة النقطة -4 المتغيرات من النوع الحرفى : وتتضمن الاعلان عن الحروف او الرموز كما شرحنا فى الدرس السابق الدرس الثالث عشر : نوع البيانات (المتغيرات) وهى الانواع التى ستستخدم فى تعريف المتغيرات. Data Type لتعريف المتغير : يكتب اولا نوع المتغير ثم اسم المتغير بعد ذلك ويمكن الاعلان عن اكثر من متغير بنفس النوع فى سطر واحد بكتابة النوع ثم اسماء المتغيرات . وسيتم توضيح ذللك فى امثله بعد ذلك. لكن تعالى الان عزيزى القارئ نتعرف على انواع المتغيرات 1 ويستخدم فى bit وهو يأخذ القيم صفر او واحد ويكون حجمة فى الذاكرة boolean -1 حالة المتغيرات تكون احدى قيمتين معلومتين مثلا (نعم و لا) وبمعنى ادق تكون قيم هذا النوع والقيمة الافتراضية فى حالة الاعلان عن متغير وعدم إعطاؤه قيمة اى ان (true or false) false القيمة الافتراضية تكون وهو التى تكون قيامها اعداد صحيحة سالبة او موجبة محصورة بين 128 - كحد byte -2 (100-,6-, 1 ) مثلا ( 10,20 byte) 8 اى bit ادنى و 127 كحد اقصى وحجمها فى الذاكرة وهى التى تكون قيمها عبارة عن حرف واحد او قيمة لاحدى متسلسلات الهروب او char -3 رقم وهذا الرقم يعبر عن حرف ولكن بنظام الاسكى كود حيث فى هذا النظام كل حرف يمثل (a , n , \t , 56 , 2 ) مثلا ( 126 byte) 16 اى bit برقم معين وحجمها فى الذاكرة وتكون قيمها اعداد صحيحة موجبة او سالبة محصورة بين 32768 - كحد ادنى و short -4 16 bit 32767 كحد اقصى وحجمها فى الذاكرة يكون وهى تمثل بقيم صحيحة موجبة او سالبة محصورة بين 2147483648 - كحد ادنى و int -5 4 مثلا byte 32 اى bit 2147483647 كحد اقصى وتستغل من الذاكرة حجم (218888-,20000,50000) وهى تمثل بقيم الاعداد حقيقية اى اعداد بها علامة عشرية او عداد كسرية او اعداد float -6 -1.40239846 /+ وحجمها فى E- -3.40282347 /+ و 45 E+ اسية وتنحصر هذه القيم بين 38 e 88.65 ) وكما ذكرنا من قبل ان الحرف , 222.357 , 32 مثلا ( 2.555 bit الذاكرة يكون ( 5 ) هى الرقم ( 500 e صغير او كبير يمثل الاساس 10 مثلا ( 2 القيم تكون اكبر بكثير وهى double ولكن الفرق ان float هى تمثل ايضا مثل double -7 8 byte 64 اى bit -4.9 /+ وحجم الذاكرة المستغل يكون e- -1.8 /+ و 324 e تنحصر بين 308 وهى تمثل الاعداد الصحيحة السالبة او الموجبة ولكن تكون اعداد كبيرة جدا جدا long -8 والجدول الاتى ملخص الشرح السابق Min and Max values Size (bits) Default value Contains Type Not Applicable \u0000 to \uFFFF -128 to 127 -32768 to 32767 -2147483648 to 2147483647 -9223372036854775808 to 9223372036854775807 +/-3.40282347E+38 to +/-1.40239846E-45 +/-1.79769313486231570E+308 to +/-4.94065645841246544E-324 1 16 8 16 32 64 32 64 false \u0000 0 0 0 - 0.0 0.0 true or false Unicode character signed integer signed integer signed integer signed integer IEEE754 flt. pt. IEEE754 flt. pt. boolean char byte short int long float double الدرس الرابع عشر : المؤثرات الحسابية الثنائية هى تلك الاشارات الخاصة بالعمليات الحسابية . operators المؤثرات والبيانات التى يتم اداء عمليات حسابية عليها بواسطة المؤثرات تسمى عوامل او عناصر . وتتطلب بعض المؤثرات عاملين لذلك سميت المؤثرات الحسابية الثنائية . وهى عبارة عن خمسة مؤثرات حسابية ثنائية وهى + : والغرض منها عملية الجمع بين العوامل - : والغرض منها عملية الطرح بين العوامل * : والغرض منها ضرب العوامل / : والغرض منها القسمة بين العوامل وعند استخدام هذا المؤثر نحترس حيث يمكن ان يكون العاملين المستخدمين اعداد صحيحة وينتج عن العملية عدد عشرى a=15 , b= مثال 4 اعداد a,b هذه هى الاجابة المتوقعة ولن الناتج سيكون غير ذلك حيث ان العاملان a/b=3.75 صحيحة فيكون الناتج عدد صحيح فيكون الناتج 3 فقط دون العدد الكسرى او العشرى ولكن ماذا لو ارادنا القسمة الصحيحة فى هذه الحالة يجب ان يكون احد العاملين عدد عشرى بمعنى وهى نفس القيم القديمة ولكن اختلف نوعها وفى هذه الحالة يكون b= او 4.0 a= ان تكون 15.0 الناتج 3.75 لذلك احترس عزيزى القارئ عند استخدامك هذا المؤثر. % : ويكون ناتج هذه العملية هو باقى القسمة ونلاحظ هنا انه يجب ان تكون العوامل اعداد صحيحة لضمان صحة الناتج وتكون اشارة الناتج هى نفس اشارة العامل الايسر a=11 , b= مثال 2 – a%b = - ولكن 1 a%-b= ايضا 1 a%b = 1 عزيزئ القارئ يجب الاخذ فى الاعتبار لكل هذه الملاحظات عند استخدامك المؤثرات الحسابية الثنائية . الدرس الخامس عشر : المؤثرات الاحادية هى تللك المؤثرات التى تعمل على عامل واحد ويكون الناتج قيمة جديده واكثر هذه المؤثرات شيوعا واستخداما اشارة السالب (-) التى تحدد اشارة المتغير او الرقم ويستخدم لزيادة قيمة المتغير increment operator ++ : ويسمى هذا المؤثر مؤثر الزيادة تجعل a++ اذن a= يعنى اذا كانت 5 a++ ناتج هذه العملية هو نفسه ناتج a=a+ بواحد مثلا 1 a=6 ويمكن وضع الموثر قبل العامل او بعده ولكن بالتاكيد هناك فرق بينهم a= لاحظ معى اذا كانت 5 فى a هنا لم تتم الزيادة ولكن اذا استخدمنا المتغير b= يكون ناتج العملية ان 15 b=(a++)*3 عملية حسابية بعد ذلك ستكون قيمته 6 a هنا لان الزيادة تمت على المتغير b= يكون ناتج هذه العملية 18 b=(++a)* اما 3 اذن اذا كان المؤثر قبل العامل فتتم الزيادة فى نفس السطر او فى نفس الخطوة فى البرنامج لكن اذا كان المؤثر بعد العامل فتتم الزيادة بعد الانتهاء من هذه الخطوة ويستخدام لانقاص قيمة المتغير decrement operator -- : يسمى هذا المؤثر مؤثر النقصان a= تجعل 4 a-- اذن a= يعنى اذا كانت 5 a-- ناتج هذه العملية هو نفسه ناتج a=a- بواحد 1 ويمكن وضع الموثر قبل العامل او بعده ولكن بالتاكيد هناك فرق بينهم وتم شرح الفرق من قبل فى المؤثر السابق الدرس السادس عشر : المؤثرات العلاقية او المنطقية هى عبارة عن اشارات المقارنة وتستخدم للمقانة بين عاملين ( متغيران ) وتوجد نتيجة هذه وهذه المؤثرات هى كما يلى : false او true العملية هى > : وهى تمثل اقل من >= : اقل من او يساوى < : اكبر من <= : اكبر من او يساوى a=5 , b= مثلا 6 z=true فان الناتج يكون z=a حيث ان ناتج 0 true يكون ناتج هذا التعبير ( a > 0 ) && ( a< b) صحيح . a , => , < , =< من اليسار الى اليمين مؤثرات التساوى = = , =! من اليسار الى اليمين من اليسار الى اليمين && And من اليسار الى اليمين || Or مؤثرات التحديد = , = % , = / , = * , = - , = + من اليمين الى اليسار الدرس العشرون : عمليات التحويل data type وهذه العمليه هى عبارة عن تحويل المتغير من نوع بيان الى نوع بيان اخر وتسمى لايمكن تحويله الى اى نوع اخر او تحويل نوع اخر اليه. boolean وبالنسبة للنوع casting وفى الغالب عملية التحويل تتم من النوع الاصغر الى النوع الاكبر الان اذا وضعنا int i , char c='A' مثلا int الى char فمثلا يمكن تحويل متغير من النوع فى الاسكى كود وهنا تم A تصبح 65 وهذا هو الرقم المناظر للحرف i فان قيمة المتغير i=c int الى char تحويل البيان من f=c الان اذا وضعنا float f , char c='A' مثلا float الى char ايضا يمكن تحويل من النوع تمثل الارقام float تصبح 65.0 وهنا نلاحظ الفرق بين المثالين حيث ان f فان قيمة المتغير العشرية او الكسرية . ايضا يمكن تحويل الاعداد الصحيحة بانوعها الى الاعداد العشرية بمعنى يمكن تحويل float , double الى byte,int,short,long الدرس الحادى والعشرون : التعبيرات والعبارات يمثل عنصر بيانات مفرد ( مثل الرقم او الحرف ) ويمكن ان يحتوى على expression التعبير محتوى مفرد مثل ( الثابت او المتغير ) كذلك يمكن بعض الخليط بين هذه المحتويات متصلة بعضها ببعض بمؤثر او اكثر ويمكن ايضا ان يمثل التعبير شروطا منطقية . فانها تتسبب فى اجراء الكمبيوتر الى نشاط معين لذا فهى statement اما العبارة او الجملة الامر الموجه الى الكمبيوتر لادى شئ معين المطلوب القيام به وتوجد ثلاث فئات من العبارات : -1 عبارات او جمل تعبيرات وتحتوى على تعبير ويتسبب تنفيذ عبارة التعبير فى تقويم التعبير -2 عبارات او جمل مركبة وهى تلك التى تتكون من اكثر من جملة او عبارة مفردة يمكن ان تكون عبارات تعبير او عبارات مركبة او عبارات تحكم وعلى هذا تقدم العبارة المركبة امكانية ادخال عبارات داخل عبارات اخرى وتكون جميع هذه العبارات محصورة بين زجين اقواس الفئة { } -3 عبارات التحكم وتستخدم فى انتاج سمات برنامج خاصة مثل : الاختبارات المنطقية والدورات والتفريعات ويتطلب من عبارات التحكم وجود عبارات داخل عبارات اخرى وسيتم عزيزى القارئ شرح هذه العبارات بالتفصيل فى دروسة لاحقة الدرس الثانى والعشرون : تشغيل مترجم الجافا عزيزىالقارئ ذكرنا فى دروس سابقة المسار الذى يسلكة البرنامج بداية من كتابته حتى وتشغيل هذا الملف. class تشغيله الان تعالى نتعرف على طريقة الحصول على ملف اولا بعد كتابة البرنامج يتم حفظ الملف ( ملف المصدر ) فى هذا المسار من الهارد بعد c: حيث ان هذا المجلد يتم إنشاؤه على الجزء سى c:\jdk1.3.0_02\bin .java الذى تم تحميله من الانترنت من موقع سن ويتم حفظ الملف بامتداد j2sdk تنصيب ( filename.java) وتختلف طريقة تشغيله على حسب نظام تشغيل الويندوز dos ثانيا نقوم بتشغيل محث الدوس فاذا كان الويندوز المستخدم 98 او ميلينيوم نتبع الاتى : start -1 اضغط programs -2 اختر Ms-Dos Prompt -3 اضغط على نجد نافذة الدوس ظهرت امامنا اما اذا كان نظام التشغيل ويندوز اكس بى او 2000 اتبع الخطوات الاتية start -1 اضغط Run -2 اضغط ok ثم اضغط cmd -3 اكتب تجد انه تم فتح نافذه الدوس ثالثا وفى جميع الحالات يكون محث الدوس عند مجلد نظام التشغيل للويندوز فاتبع الخطوات c:\jdk1.3.0_02\bin الاتية للوقف عند المحث ثم اضغط مفتاح ادخال فى لوحة المفاتيح cd.. -1 اكتب ثم اضغط مفتاح ادخال فى لوحة المفاتيح cd jdk1.3.0_ -2 اكتب 02 ثم اضغط مفتاح ادخال فى لوحة المفاتيح cd bin -3 اكتب .class رابعا الان سنقوم بترجمة ملف المصدر الى ملف وبعدها نكتب javac ثم اضغط مفتاح ادخال اى نقوم بكتابة javac filename.java اكتب الان اسم ملف المصدر بامتداده . الان اذا قمت بفتح المسار السابق ستجد انه تم انشاء ملف جديد وهذا هو الملف الذى يمكنك تشغيله تحت اى نظام تشغيل دون التقيد filename.class بامتداد بالنظام الذى تمت الترجمة تحته . java filename خامسا فى النهاية لتشغيل البرنامج الذى قمت بكتابته اى ملف المصدر اكتب دون كتابة الامتداد . class ثم اكتب اسم الملف الذى امتداده java اى اكتب الدرس الثالث والعشرون : اول برنامج جافا الان تعالى عزيزى القارئ نقوم بعمل اول برنامج لك بلغة الجافا وسيكون برنامج بسيط جدا Hello يقوم بطباعة كلمة وقم بكتابة هذا البرنامج notepad قم بفتح اى محرر نصوص وليكن مثلا الدفتر class Hello { public static void main(String []arg) { System.out.println("Hello"); } } اكتب الحروف كما هى اى لاتغير فى حالة الحروف كبيره او صغيره ولن اكتبها كما هى امامك وهذا المجلد jdk1.3.0_ الموجود داخل المجلد 02 bin قم الان بحفظ هذا الملف فى المجلد من الهارد ديسك الخاص بك. c: ستجد فى الجزء ولاتنسى الامتداد . Hello.java احفظ الملف باسم قم الان عزيزى القارئ باتباع الخطوات الموجوده فى الدرس السابق تجد انه تم طباعة كلمة Hello تعالى الان عزيزى القارئ نفسر البرنامج خطوه خطوه اى برنامج للجافا يجب ان يكتب داخل زمره او مجموعة او فصل تسمى class Hello اولا ويفضل دائما ان class وبعدها الاسم الذى سيعطى لهذا class فيلزم اولا كتابة كلمة class ويتم بعد ذلك كتابة باقى البرنامج داخل اقواس capital يكون اول حرف فى هذا الاسم كبير الفئة { } وقد تم شرح اهميتها فى درس سابق main ثانيا بعد ذلك الدالة الاساسية للتشغيل وهى ثالثا الجملة التى هى محور البرنامج الان كما اتفقنا من قبل ان الجافا تتكون من مجموعة من ويوجد حزمة تستدعى ذاتيا دون ان تقوم باستدعائها بخطوه فى البرنامج كما package الحزم ويوجد بداخلها مجموعة من الدوال او الطرق java.lang سنتعلم بعد ذلك هذه الحزمة هى بين القوسين كتبنا الجملة المراد System.out.println ومنها التى استخدمنها الان method لذلك class هذا اسم الفصل System طباعتها بين علامات تنصيص حتى تطبع كما هى . و وداخلها داله out داله اسمها method وبداخله capital نلاحظ ان اول حرف كتب كبير يمكن method و ال method يتكون من عدد class ومن هنا نفهم ان println اخرى اسمها class تتكون من عددة package وفى النهاية الحزمة او method ان تتكون هى الاخرى من والان نحن نستخدم الحزم التى تتكون منها الجافا. باختصار : System class ومن هذه ال class تتكون من عدة java.lang الحزمة out توجد دوال ومنها System وداخل التى هى خاصة بالطباعة. println توجد out وداخل الدالة ولاتنسى ان الجمل والعبارات تنتهى دائما ; فاصله منقوطه الدرس الرابع والعشرون : الاعلان عن المتغيرات تعالى الان عزيزى القارئ نضع انواع البيانات التى ذكرناها ونعلن بها عن متغيرات داخل برنامج بالجافا. وقيمة هذا المتغير 5 كيف يمكن ان نعلن عنه b اذا كان لدينا متغير اسمه نجدها رقم صحيح موجب صغير جدا اذن يكون نوع b اولا ننظر الى القيمة التى سيشير اليها فلماذا byte احدى انواع البيانات الخاصة بالاعداد الصحيحة ولن نفض ان يكون b المتغير فضلت هذا النوع عن باقى الانواع ؟ لان هذا المتغير يشير الى قيمة صغيرة فلا داعى لتعريف نوع يستغل مساحة كبيرة فى الذاكرة . ولللاعلان عن هذا المتغير يكون هكذا byte b = 5 ; سنكتب الان برنامج نعلن فيه عن هذا المتغير ونطبعه class DataType { public static void main(String []arg) { byte b=5; System.out.println("byte b ="+b); } } قم الان عزيزى القارئ بتشيغل هذا البرنامج ولاحظ النتيجة ! نستنتج ايضا انه لطباعة جمله بجوار رقم يتم الربط بينهم بعلامة زائد + وهو استخدام لهذه الاشارة لم نذكره من قبل . قم الان عزيزى القارئ بعمل برنامج تعلن فيه عن المتغيرات الاتية وتطبعها هذا كتدريب لك s=100 , i=10000 , L=1000000000 , d=105.55 , c='G' state=false الدرس الخامس والعشرون : مثال على استخدام متسلسلات الهروب فى نهاية الدرس السابق كان هناك تدريب لعمل برنامج لللاعلان عن متغيرات وطباعتها s=100 , i=10000 , L=1000000000 , d=105.55 , c='G' state=false تعالى عزيزئ القارئ نقوم معا بعمل هذا البرنامج بحيث يتم طباعة فى السطر الواحد متغيران بينهم مسافة . كما شرحنا سيكون شكل البرنامج هكذا class DataType { public static void main(String []arg) { short s=100 ; int i=10000 ; long L=1000000000; float d=105.55f ; char c='G'; boolean state=false; System.out.println("s ="+s+" "+"i="+i); System.out.println("L ="+L+" "+"d="+d); System.out.println("c ="+c+" "+"state="+state); } } لكن هناك تكرار لعبارة الطباعة ويمكن ان تكون المسافات غير متساوية فتعالى نستخدم متسلسلات الهروب فيكون شكل البرنامج. class DataType { public static void main(String []arg) { short s=100 ; int i=10000 ; long L=1000000000; float d=105.55f ; char c='G'; boolean state=false; System.out.println("s="+s+"\t"+"i="+i+"\n"+"L="+L+"\t"+"d="+d+"\n"+"c=" c+"\t"+"state="+state); } } راجع الدرس العاشر وستكون شكل المخرجات هكذا بعد قيمة المتغير اما فى f تم وضع حرف float لاحظ فى هذا البرنامج عند تعريف النوع لايتم وضع اى حروف بعد القيمة double حالة تعريف الان بالتأكيد تعرف اهمية استخدام متسلسلات الهروب اكتب برنامج واستخدم فية المتسلسلات الاخرى لمعرفة اهميتها . الدرس السادس والعشرون : مثال على استخدام المؤثرات الحسابية تعالى عزيزى القارئ نقوم بعمل برنامج يوضح استخدام المؤثرات الحسابية المختلفة . قم بطباعة التعبيرات الحسابية المختلفة ونتيجتها b=4 , a= وقيمهم هى 15 a,b لدينا متغيران class ArithOper { public static void main(String []arg) { int a=15; int b=4; int x,y,z,v,u; float f,c=4.0f; x=a+b; y=a-b; z=a*b; v=a/b; f=a/c; u=a%b; System.out.println("a+b="+x); System.out.println("a-b="+y); System.out.println("a*b="+z); System.out.println("a/b="+v+"\t"+"a/b="+f); System.out.println("a%b="+u); } } قمنا عزيزى القارئ بطباعة كل تعبير بعبارة جديدة لتوضيح المثال فقط . اولا تم الاعلان عن المتغيرات ونلاحظ انه يمكن الاعلان عن المتغيرات من نوع واحد فى نفس الخطوة . ثانيا تم كتابة التعبيرات ونلاحظ هنا انه يكتب على اليسار اسم المتغير وعلى اليمين العملية الحسابية وناتج العملية يكون هو قيمة هذا المتغير . اخيرا تم طباعة العملية وناتجها لتكزن النتيجة على الشكل التالى: لكن لاحظ عزيزى القارئ اننا قمنا بعملية القسمة مرتين وهذا لاننا اردنا توضيح الفرق بين قسمة عدد صحيح على عدد صحيح وعدد صحيح مع عدد عشرى كما ترى ان هناك فرق فى 15 كان / 15 كان الناتج 3 لان العددين صحيحين اما عندما قسمنا 4.0 / النتيجة فعندما قسمنا 4 الناتج 3.75 لان احى الرقمين عشرى . انتبه عند استخدامك مؤثر القسمة. , a= وقيمهم هى 12.5 a,b تعالى عزيزى القارئ ناخذ مثال اخر اذا كان لديك متغيران قم بطباعة التعبيرات الحسابية المختلفة ونتيجتها b=2.5 class ArithOper1 { public static void main(String []arg) { float a=12.5f , b=2.5f; float x,y,z,v,u; x=a+b; y=a-b; z=a*b; v=a/b; u=a%b; System.out.println("a+b="+x+"\n"+"ab="+ y+"\n"+"a*b="+z+"\n"+"a/b="+v+"\n"+"a%b="+u); } } فيكون الناتج على الصورة قمنا بوضع جملة واحدة للطباعة للمقارنها بينها وبين استخدام خمس جمل ومتروك لك عزيزى القارئ حرية الاختيار فى اى منهم تستخدم ولكن الهدف ان تستوعب الفكرة . نلاحظ فى النواتج ان جميعها فى صورة رقم عشرى وذلك حسب تعريفنا لنواع هذه المتغيرات ايضا نلاحظ ان ناتج باقى القسمة صفر وذلك لانه لايوجد باقى من قسمة الرقمين وانتبه حتى الصفر كتب فى صورة رقم عشرى. الدرس السابع والعشرون : مثال على استخدام المؤثرات الاحادية تعالى الان عزيزى القارئ نقوم بعمل برنامج يوضح عمل المؤثرات الاحادية . قيمته كل منهما تساوى 5 i,j اذا كان لدينا متغير class UnaryOper { public static void main(String []arg) { int a,b,i,j; i=j=5; a=i++ * 3; b=++j *3; System.out.println("a = "+a+"\n"+"b = "+b); } } فيكون شكل النتائج هكذا وبالتاكيد كانت النتائج متوقعة من الشرح السابق لعمل هذا المؤثر لكن تعالى معى نوضح اكثر عمل المؤثرات الاحادية فى هذا المثال class UnaryOper1 { public static void main(String []arg) { int x1,x2,z=10; x1=z--; System.out.println("x1 = "+x1); x2=--z; System.out.println("x2 = "+x2); } } قبل عرض النتائج ماذا تتوقع ان تكون ؟ فى z حسب المؤثر تم انقاص منها 1 اذن قيمتها اصبحت 9 هذه اجابه خطأ لان قيمة x اولا 1 هذه الخطوة لازالت تساوى 10 ولا يتم انقاص منها الواحد الا بعد الخروج من هذه الخطوة z= وتصبح القيمة الجديد 9 وهذه الاجابة صحيحة . x2= ثانيا لذلك 8 تعالى الان عزيزى القارئ نعرض النتائج ونرى الدرس الثامن والعشرون : مثال على استخدام المؤثرات العلاقية والمنطقية تعالى الان عزيزى القارئ نقوم بعمل برنامج يوضح عمل المؤثرات العلاقية والمنطقية . قم بعمل برنامج يوجد نتائج i=7,f=5.5,c='w' وقيمها i,f,c اذا كان لدينا هذه المتغيرات العلاقات الاتية : (i>=6)&&(c==119) (i>6)||(c='w') (f<11)&&(i>100) (c!='p')||((i+f)<=10) قبل ان نقوم بعمل البرنامج حاول ان تتوقع النتائج class LogOper { public static void main(String []arg) { boolean b1,b2,b3,b4; int i=7; float f=5.5f; char c='w'; b1=(i>=6)&&(c==119); b2= (i>6)||(c=='w'); b3=(f<11)&&(i>100); b4=(c!='p')||((i+f)<=10); System.out.println("(i>=6)&&(c==119) is "+b1); System.out.println("(i>6)||(c=='w') is "+b2); System.out.println("(f<11)&&(i>100) is "+b3); System.out.println("(c!='p')||((i+f)<=10) is "+b4); } } وتكون نتيجة البرنامج هكذا نعم c='w' بالرغم من ان true تلاحظ عزيزى القارئ انه فى العلاقة الاولى كانت النتيجة يمكن التعبير عنها بالرقم الذى يمثلها فى الاسكى كود تجد ان w لكن اذا تذكرت معى ان النتيجة هنا صحيحة لان العاملين كل منهما صحيح. وكان يكفى ان يكون احداهما true العلاقة الثانية كل من التعبيرين صحيح وعلية فان النتيجة .or صحيحا لكى تكون الاجابة صحيحة تذكر عمل لكى تكون النتيجة صحيحة يلزم ان and لان العامل الثانى خطا ومع false العلاقة الثالثة يكون العاملين صحيحا لان اول عامل صحيح true العلاقة الدرس التاسع والعشرون : مثال على استخدام مؤثرات التحديد تعالى الان عزيزى القارئ نقوم بعمل برنامج يوضح عمل مؤثرات التحديد. i=6,j=8,f=6.6,k=- وكانت قيمها 4.25 i,j,f,k اذا كان لدينا هذه المتغيرات بين ببرنامج نتائج العمليات الاتية: i=i+6 f=f-k j=j*(i-4) f=f/4 i=i%(j-2) class AssOper { public static void main(String []arg) { int i=6,j=8; float f=6.5f,k=-4.25f; System.out.println("i=i+6 -> i="+(i+=6)); System.out.println("f=f-k -> f= "+(f-=k)); System.out.println("j=j*(i-4) -> j="+(j*=(i-4))); System.out.println("f=f/4 -> f="+(f/=4)); System.out.println("i=i%(j-2) -> i="+(i%=(j-2))); } } وتكون نتيجة البرنامج هكذا: من اهم الملاحظات فى هذا البرنامج انه عند اجراء عملية على متغير تكون قيمته هى القيمة الجديد اذا كان قد تغيرت قيمته . الدرس الثلاثون: while statement عبارة بينما هى احدى عبارات التحكم التى تم ذكرها فى الفصل الحادى والعشرون وهى من عبارات التكرار وتستخدم فى تنفيذ عبارة او عدة عبارت عددا من المرات المتتابعة وذلك تحت شرط معين . الصيغة العامة : while ( عبارة (جملة شرطية وتكون بهذا الشكل فى حالة ان تكون الجملة الشرطية صحيحة تنفذ عبارة واحدة او امر واحد. while ( (جملة شرطية { عبارات } وتكون بهذا الشكل فى حالة ان تكون الجملة الشرطية صحيحة يتم تنفيذ اكثر من جملة حيث انه يتوقف تنفيذ العبارات الموجودة داخل القوسين { } على نتيجة الجملة الشرطية فاذا كانت true يتم تنفيذ العبارات ويتكرر تنفيذ العبارات مادامت نتيجة الجملة الشرطية true نتيجتها فسوف تهمل العبارات وينتقل التحكم لتنفيذ العبارة التى تلى flae فاذا تغيرت النتيجة الى القوس { . تعالى الان عزيزى القارئ نقوم بعمل برنامج بسيط لطباعة الاقام من 0 الى 7 class WhileSt { public static void main(String []arg) { int i=0; while (i<=7) { System.out.println(i); ++i; } } } شرح البرنامج : وتحديد قيمة ابتدائية له صفر i اولا تم الاعلان عن متغير اقل من او تساوى 7 فاستمر فى تنفيذ i تقول مادامت قيمة المتغير while ثانيا عبارة التكرار بمقدار i والعبارة الثانية زيادة المتغير i العبارات التالية : العبارة الاولى اطبع قيمة المتغير 1 ونلاحظ ان هذان العبارتان تم وضعمها بين { } لانهما اكثر من عبارة . وعلى هذا يكون شكل المخرجات : ويمكن كتابة البرنامج كما يلى class WhileSt1 { public static void main(String []arg) { int i=0; while (i<=7) System.out.println(i++); } } عبارة واحده فقط لذا لم نستخدم الاقواس وعند while ولاحظ هنا انه تلى عبارت التكرار تنفيذ هذا البرنامج ستكون نفس المخرجات . لا يوجد فى نهايتها الفصلة المنقوطة هذا ليس while ونلاحظ عزيزى القارئ فى عبارة خطأ فى البرنامج ولكن هذه هى صورتها . ولكن ماذا اذا وضعنا بعدها فصلة منقوطة ؟! تعالى نجرب هذا البرنامج سويا class WhileSt2 { public static void main(String []arg) { int i=0; while (++i<=7); System.out.println(i); } } هنا فى هذه الحالة مادام الشرط متحقق لايتم تنفيذ اى شئ لان العبارة منتهية وليس هناك بمقدار 1 i لتنفذ ولكن هناك فصلة منقوطة اى لاشئ وهنا يزداد المتغير while عبارت بعد التى اصبحت 8 وتكون شكل المخرجات هكذا : i حتى لايتحقق الشرط وفى النهاية يطبع قيمة الدرس الحادى والثلاثون: عبارة بينما المتداخلة واللانهائية تستخدم عبارة بينما المتداخلة فى حالة وجود اكثر من حلقة تكرار واحدة وعندما تكون متداخله يتم الانتهاء اولا من الحلقة الداخلية لمرة واحد من تكرار الحلقة الخارجية ثم تكرر الحلقة الداخلية مرة اخرى وهذا تكرر الحلقة الداخلية لحين انتهاء الحلقة الخارجية والبرنامج التالى يوضح الشرح class WhileSt3 { public static void main(String []arg) { int b,a=0; while (a<=10) { b=1; while(b<=a) { System.out.print ("*"); ++b; } System.out.print ("\n"); ++a; } } } وتكون شكل المخرجات عند تنفيذ البرنامج تساوى الصفر ويبدا بتنفيذ جملة a ولكن ماذا يحدث فى هذا البرنامج فى البداية تكون قيمة while 0 فبجد اول عبارة بعد جملة < الاولى الجملة الشرطية صحيحة لانة 10 while الثانية وهنا الجملة الشرطية غير while ثم ناتى الى جملة b= الاولى ان تكون قيمة 1 الثانية ثم بعد ذلك يجد عبارة تنفيذية while فلا يتم تنفيذ عبارت a=0 , b= صحيحة لان 1 الاولى فيجد while الى 1 ويعود الى جملة a لينزل سطر جديد ثم يزيد مقدار قيمة المتغير الثانية متحقق فيبدا بطباعة النجمة while فنجد ان شرط b= الشرط متحقق وتكون قيمة 1 a ولكن الجملة هنا ستتكرر مرة واحدة وهكذا يتم تكرار شكل النجمة حسب قيمة المتغير تكون دائما صحيحة while اما التكرار اللانهائى لعبارة بينما هو ان الجملة الشرطية الخاصة فيتم تنفيذ العبارت الى مالا نهايه . class WhileSt4 { public static void main(String []arg) { int a=1; int b; while (true) { b=1; while(b<=a) { System.out.print(a); ++b; } System.out.print("\n"); ++a; } } } وتكون شكل المخرجات ctrl+c وللخروج من هذه الحلقة اللانهائية اضغط مفتاحى الدرس الثانى والثلاثون : do while عبارة اعمل بينما يتم اختبار الجملة الشرطية اولا قبل الدخول فى تنفيذ عبارات الموجوده بعد while فى عبارة فان الاختبار يتم فى نهاية التكرار. do-while ويتم اختبارها كل دوره ولكن فى while وتكون الصيغة العامة هى Do { العبارات } while( ;(جملة شرطية while لاحظ هنا انه تم وضع فاصلة منقوطة بعد تعالى عزيزى القائ نقوم بتنفيذ هذا البرنامج لنعرف الفرق class DoWhileSt4 { public static void main(String []arg) { int i=0; do { System.out.println("HI"); ++i; } while(i>7); } } قبل عرض النتائج تعالى نستنتجها اولا غير متحققة اذا المفروض عدم تنفيذ الخطوات الموجودة while هنا الجملة الشرطية بعد داخل قوسى المجموعة تعالى نرى النتائج ولكن ماحدث غير المتوقع لقد نفذ العباره مره واحدة نعم هذا صحيح حسب الشرح فان عبارة اعمل بينما ينفذ العبارات اولا ثم يختبر الشرط . اذا كان الشرط غير متحقق لا while انه فى while,do-while يعنى باختصار الفرق بين يتم تنفيذ العبارت على الاقل مرة واحدة. do-while يتم تنفيذ العبارت نهائيا اما الدرس الثالث والثلاثون : for statement عبارة لاجل هى احدى عبارات التحكم وربما تكون اكثرها استخداما وهى تستخدم لاداء عملية ما عدة مرات متتابعة ويعتمد تنفيذ حلقة التكرار على عداد يضبط على قيمة ابتدائية معينة وتزداد قيمته بخطوة معلومة بعد كل تكرار حتى تصل الى القيمة النهائية . وتكون صيغتهىالعامة for(ex1;ex2;ex3) { العبارات } التعبير الذى يحدد القيمة الابتدائية لمتغير يكون بمثابة عداد يتحكم فى اجراء الدورة ex1 وعادة ما يكون هذا هو تعبير التحديد الذى يحدد بداية العداد يمثل الشرط الذى يحدد استمرار الدورة من عدمه وذلك تبعا لنتيجة اختبار الشرط بمعنى ex2 ان هذا التعبير هو الذى يحدد نهاية العداد وعادة ما يكون تعبيرا منطقيا هو التعبير الذى يحدد الزيادة او النقصان فى دليل الدورة وذلك فى نهاية كل تكرار ex3 وعادة ما يكون تعبيرا احاديا او تعبير تحديد . while فانظر الى عبارة while لاتختلف كثيرا عن for ونجد ان ex1 ; while(ex2) { العبارات ex3; } تعالى الان عزيزى القارئ نوضح شرحنا بمثال عملى يقوم بطباعة باستخدام رقم العداد فى لايجاد حاصل ضربه فى 10,100,1000 for class ForSt { public static void main(String []arg) { int i; for(i=0;i<=10;++i) { System.out.println(i+"\t"+(i*10)+"\t"+(i*100)+"\t"+(i*1000)); } } } والتى فيها ستكون القيمة for وبعد ذلك جاءت جملة i قمنا هنا اولا بالاعلان عن المتغير فاذا كانت اقل i وهى تختبر قيمة i<= صفر بعد ذلك الجملة الشرطية 10 i الابتدائية للمتغير وهو زيادة بمقدار واحد i واخيرا مقدار الزيادة الحاصل للمتغير for من 10 يتم تنفيذ عبارات فى 10 و 100 و 1000 i وهنا فى حالة ما اذا كان الشرط صحيح يتم ضرب قيمة المتغير وطباعة الناتج وتكون المخرجات على هذا الشكل | |
|