ﺗﻢ ﺗﺤﻤﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﻣﻮﻗﻊ اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ www.boosla.com جامعة الملك سعود كلية المعلمين قسم الحاسب اآللي البرمجة باستخدام لغة الجافا د.عميد صالح غازي جامعة الملك سعود كلية المعلمين قسم الحاسب اآللي 1 جامعة الملك سعود كلية المعلمين قسم الحاسب اآللي البرمجة باستخدام لغة الجافا الهدف من المحاضرة األولى : – 1معرفة الطلبة أهمية واستخدامات لغة الجافا – 2معرفة الطلبة مراحل تنفيذ برنامج بلغة الجافا – 3معرفة الطلبة مميزات لغة الجافا. تعتبر لغة الجافا من اللغات القوية جدا في مجال إنشاء التطبيقات المختلفة سواء كانت هذه التطبيقات تعمل منفردة على أجهزة الكمبيوتر الشخصي أو تطبيقات اإلنترنت أو التطبيقات المختلفة لألجهزة المحمولة ,مثل الموبايل والمفكرات اإللكترونية وهكذا. ولقد قامت شركة صن ( )Sun Microsystemsباختراع وتطوير هذه اللغة .وأصبحت شركة صن مملوكة لشركة أوراكل وبالتالي انتقلت ملكية الجافا ألوراكل .وكان الهدف عند اختراع لغة الجافا هو عمل لغة قادرة على برمجة نظم التشغيل لجميع األجهزة من حاسبات عمالقة ( )mainframesإلى األجهزة الصغيرة مثل مشغالت MP3ولقد اختارت الشركة صورة فنجان القهوة لتمثيل هذه اللغة . 1- 1أسس البرمجة باستخدام لغة الجافا قبل البدء في عملية البرمجةة ( أي كتابةة البرنةاما المطلةون تنفيةذه ) بلغةة الجافةا دبةد مةن توافر العدة الالزمة ( . )Tool Kitوهةذه العةدة عبةارة عةن البةراما الالزمةة لعمليةة كتابةة البرناما نفسة ونقةول أننةا كتبنةا برنةاما بلغةة الجافةا .بعةد للةك تة تي عمليةة الترجمةة لهةذا البرناما وهي ما نطلق عليها عملية الترجمة (.)compiling والحقيقة ف ن يوجد أكثر من طريقة لكتابة براما الجافا وترجمتها نوجز منها : 2 استعمال المكتبة ( )JDKوهي اختصار JAVA DEVELOPMENTE -1 KITمن إنتاج شركة صن مع أي محرر نصوص وليكن برناما Notepadالموجود في الويندوز. استعمال براما وسيطة تسهل عملية الكتابة والترجمة وتصحيح األخطاء مثل -2 برناما (… .)Net Beans – Jcreator وسوف نتناول في الجزء الخاص بالمعمل كيفية تثبيت هذه البراما على جهاز الحاسب وكيفية التعامل معها .والشكل ( ) 1-1يبين كيفية عمل لغة الجافا . ويوجد عدة نسخ للغة الجافا هي -: :J2SE هي اختصار ل Java 2 Standard Editionيتم من خاللها دراسة اللغة وإنشاء التطبيقات المختلفة لتشغيلها على جهاز الحاسب ).)desktop Application وسوف تكون هي موضوع دراستنا في هذا الكتان. 3 :J2EE هي اختصار ل Java 2 Enterprise Editionوهي تزودنا بالتطبيقات الكبيرة على مستوى الشركات الكبيرة. :J2ME هي اختصار ل Java 2 Micro Editionفهي تخص األجهزة الالسلكية ( )wireless devicesبشكل عام يعني على أجهزة المحمول وغيرها. مميزات لغة الجافا - 1لغة الجافا غير مرتبطة ب نظمة التشغيل المختلفة Java Is Platform .Independent -2تعتمد على أسلون برمجة األهداف . Object Oriented Programming -3إنشاء براما لات واجهة مستخدم . -4تصميم برمجيات تستفيد من كل مميزات اإلنترنت . Java Applet شرح ألهم مميزات لغة الجافا كما لكرناها في النقاط السابقة : - 1لغة الجافا غير مرتبطة ب نظمة التشغيل المختلفة Java Is Platform Independent ومعنى للك إن يمكن نقل البراما (المكتوبة بلغة الجافا) بسهولة من نظام تشغيل إلى آخر. وفي المقابل يمكن القول إن ال يمكن تشغيل برناما WORDمثال والخاص بنظام تشغيل ويندوز( )WINDOWSعلى جهاز حاسب آخر يعمل بنظام تشغيل مختلف مثل يونيكس ( )UNIXأو نظام تشغيل لينكس ( )LINUXأو أي نظام تشغيل آخر غير نظام WINDOWSوالمستخدم مع أجهزة الحاسبات المختلفة .ويرجع للك ألن برناما WORDبشكل عام مكتون بلغة 4 ) )C++/Cوالتي تعطي ملف من نوع EXEخالل عملية تسمى عملية الترجمة COMPILATIONوبذلك يكون الملف الناتا مرتبطا ارتباطا كليا بنظام التشغيل. أما بالنسبة للغة الجافا فالوضع مختلف حيث يوجد وسيط بين البرناما وبين نظام التشغيل وهذا الوسيط يسمى ) (Byte Code Interpreterأي الترجمة على مستوى البايت. وكذلك يمكن تسميت باآللة التخيلية للجافا ( .)Java Virtual Machineويوضح الشكل ( )2-1خطوات تشغيل برناما مكتون بلغة ( cأو . )c++ 5 كما يوضح شكل (3-1أ) و شكل (3-1ن) و شكل (3-1ج)خطوات تشغيل برناما مكتون بلغة الجافا . شكل (3-1ن) 6 - 2تعتمد لغة الجافا على أسلوب برمجة األهداف Object Oriented Programming حيث وفرت كثيرا من الجهد الذي كان يبذل باستخدام البرمجة التقليدية .فقد كانت البرمجة التقليدية توفر للمبرما مكتبة من الدوال إضافة إلى تركيب تقليدي للبرناما وعلى المبرما أن يستعمل الدوال مع تركيب البرناما إلنشاء التطبيقات المختلفة مما يضطره لكتابة السطور الكثيرة أكثر من مرة؛ و لقد كانت وحدة بناء البرناما هي الدالة .functionفي حين أتت البرمجة بواسطة األهداف بفكرة جديدة هي إنشاء عناصر متكاملة تحتوي على بيانات ودوال هي أساس إنشاء البرناما .وبالتالي أصبحت وحدة بناء البرناما وحدة كبيرة هي الفصيلة أو الفئة Classأو العنصر Objectمما سهل واختصر الكثير من الوقت والجهد. وسوف نتحدث على هذه النقطة بالتفصيل في البان الثاني . -3إنشاء برامج ذات واجهة مستخدم رسومية . يعتبر بناء واجهة المستخدم الرسومية من األجزاء الهامة في البرناما .حيث أن هذه الواجهات تعطي البرناما شكال معينا ,كما أن استخدام مفاهيم وأجزاء موحدة في بناء الواجهات للعديد من البراما المختلفة يعطي المستخدم قدرا كبيرا من الراحة إثناء استخدام البراما ,كما أن يقلل كثيرا من الوقت المستخدم لتعلمها .وقد تعرفنا في السنوات السابقة وأثناء استخدامنا للحاسب على واجهات رسومية كثيرة .مثل واجهات الويندوز والمستكشف لإلنترنت وغيرها . إن األجزاء الرسومية الموجودة في لغة الجافا مرتبطة مباشرة مع اإلمكانيات الرسومية للجهاز الذي يعمل علي البرناما .وبذلك فإن الواجهات الرسومية الموجودة في الجافا سوف تظهر ب شكال متباينة على األجهزة المختلفة .أي أننا عندما نقوم بكتابة برناما يقوم بعمل زر عل ى نظام الويندوز ف ن هذا الزر ي خذ نفس شكل الزر المستخدم في نظام الويندوز .ولكن إلا تم كتابت في نظام تشغيل آخر فإن ي خذ شكل يتناسب مع نظام التشغيل المستخدم . 7 -4تصميم برمجيات تستفيد من كل مميزات اإلنترن . Java Applet وهي نوع من التطبيقات التي صممت خصيصا لإلنترنت .حيث يقوم المطور ( ) Developerبإعداد هذا البرناما Appletثم يتم استدعاءه من خالل ملف HTML بشرط تحميل برناما Appletعلى الخادم ( )Serverالموجود علي ملف .HTML فيتم عرض هذا التطبيق من خالل صفحة ادنترنت عندما يستعدي المستخدم هذه الصفحة. 8 الهدف من المحاضرة الثانية : – 1معرفة الطلبة الشكل العام لبرنامج الجافا الشكل العام لبرنامج الجافا : البرناما اآلتي يبين الشكل العام لبرناما الجافا ود يهمنا هنا فهم كل جزئية في البرناما فهذا سوف يتم في الدروس التالية : ويقوم هذا البرناما بطباعة جملة ( .)Welcome to my Worldوعند حفظ هذا البرناما كما سنعرف دحقا دبد وأن يتم تسمية الملف باسم .Welcome.javaوكذلك يجب ان نراعي جيدا أن لغة الجافا هي لغة حساسة بالنسبة لألحرف فمثال حرف ( )Aد يساوي حرف ()a .ويمكن تمثيل الهيكل الشكل العام لبرناما الجافا 9 مثال( ) 1المطلوب عمل برنامجا يقوم بطباعة العبارة .Hello Egypt public class HelloEgypt { )public static void main ( String [ ] s { بداية و نهاية الكالس ; )"System.out.print("Hello Egypt بداية ونهاية الوظيفة } } شرح البرناما السطر األول public وهذا هو السطر األول في البرناما وهو يتكون من: ( Publicالفصيلة عامة ) ائما تسبق تعريف الفئة أو الفصيلة Classوهي تعني أن هذه الفئة أو أي يمكن ألي فئة أخرى في البرناما استخدام عناصر هذه الفئة .ألن برناما الجافا قد يتكون من أكثر من فئة .class classوهنا يتم بداية الفصيلة HelloEgypt اسم الفصيلة ( البرناما ) ولقد تم تسميت هنا بادسم الذي نريده . ودبد هنا أن نشير إلى نقطة هامة جدا وهي أن عند حفظ ملف الجافا دبد أن يتم حفظ بنفس اسم الفصيلة وبنفس شكل الحروف والمسافات وفي مثالنا هذا سيكون ادسم .HelloEgypt.java قوس بداية تعريف الفصيلة . { السطر الثاني viod main أي أن الدالة بعد تنفيذ البرناما لن تعود ب ي قيم. نقطة البداية لوظيفة الفصيلة . main method 11 ( (String [ ] sالجملة الموجودة داخل قوسي البداية للدالة mainوهي ] [ String sتعني مصفوفة من النوع الحرفي وتسمى sلتخزين جملة الطباعة في البرناما . وكما قلنا من قبل أن لغة الجافا هي لغة حساسة لحالة األحرف لذلك يجب مالحظة أن حرف Sفي كلمة Stringيجب أن يكون حرفا كبيرا ( )capital letterوإد سيعطى البرناما خط عند الترجمة . السطر الثالث وهذا هو أمر الطباعة في لغة الجافا وسوف نتناول بالتفصيل في األمثلة القادمة . وهنا يجب أن نالحظ أن حرف Sيجب أن يكون كبير ( Capital )letter النص المراد طباعت ويجب أن يوضع بين عالمتي تنصيص (" ") وقوسين دبد وأن تنتهي كل جملة (سطر أو أمر) بعالمة (;) بعد للك يتم إنهاء البرناما بقوسي النهاية حيث يمثل القوس األول نهاية الوظيفة method للدالة mainوالقوس اآلخر يمثل نهاية الفصيلة . classوالشكل اآلتي يبين للك : 11 الهدف من المحاضرة الثالثة: – 1معرفة الطلبة بالحروف المستخدمة في لغة الجافا – 2معرفة الطلبة بالثواب والمتغيرات في لغة الجافا – 3معرفة الطلبة بقواعد تسمية المتغيرات – 4التعرف على العمليات الحسابية والمنطقية في لغة الجافا أوال :حروف لغة الجافا تت لف حروف لغة الجافا مما يلي : - 1الحروف األبجدية ( )Lettersوهي الحروف الكبيرة ( )Capital Lettersمن Aإلى Zوكذلك الحروف الصغيرة ( )Small Lettersمن aإلى .z - 2األرقام العددية ( )Digitsمن 1إلى .9 - 3الحروف الخاصة ( )Special Charactersوهي تلك الحروف التي ليست ب عداد أو بحروف أبجدية ولكنها تكون على هيئة رموز كاآلتي(+,-,/,//,<,>,$,#,%,(),||,!,[],!=,,;,”,…..) : ثانيا الثواب والمتغيرات :Constants & variables أوال :الثواب :Constants وهى عبارة عن قيم ثابتة يراد ادحتفاظ بها طوال البرناما ود تتغير قيمتها أبدا. وتنقسم الثوابت في لغة الجافا إلى-: -1ثوابت عددية Numeric Constants -2ثوابت رمزية Non-numeric Constants -1الثواب العددية: يمكن تمثيل الثوابت العددية في لغة الجافا كاآلتي-: الثاب العددي الحقيقي Floating Constant الثاب العددي الصحيح : integer -هو عبارة عن عدد مكون من األرقام من ( 0إلى .)9 o هو عدد مكون من األرقام من ( 0إلى )9 -ال يحتوي على فاصلة عشرية. o يجب أن يحتوي على فاصلة عشرية -يمكن أن يحوى اإلشارة ( +أو .) - o يمكن أن يحوي اإلشارة ( ) - ،+ مثال (.)..........،-20 ،1000 ،12 ،0 مثال ().. ،-67.99 ،10.55 ،421.5 تصنف األعداد الصحيحة في لغة الجافا حسب طولها والسعة التخزينية لها في الذاكرة كما يلي -: الثوابت الصحيحة ( )40000 ،19679 الثوابت () 55 ، 90 ،-16 -الثوابت () 967 ، 20000 تسمى ثوابت صحيحة طويلة .long int تسمى ثوابت صحيحة قصيرة .short int تسمى ثوابت صحيحة بدون إشارة .unsigned int 12 -2 الثواب الرمزية :Non-Numeric وهى عبارة عن رموز اللغة وتتكون من الحروف واألرقام وتكون بين عالمتي تنصيص أو اقتباس. ومن األمثلة على الثوابت الرمزية ما يلي-: )" )"name" - "Khaled" - "12345" - "30+40 وإلا أردنا أن نضع قيمة سوف تظل ثابتة داخل البرناما في مكان في الذاكرة ف ننا نستخدم العبارة finalلإلعالن أن هذه القيمة ستظل ثابتة طوال تنفيذ البرناما مثل: ;final int TABLE_SIZE = 41 ;final float PI = 3.14159 ويجب مراعاة أن اسم الثوابت constantsيكون باألحرف الكبيرة كامال و يفصل بين الكلمات كما يتم في المتغيرات مع مالحظة أن الثوابت يتم تعريفها على أنها . final مثال ألسماء الثوابت : LEFT EXIT_ON_CLOSE MY_NAME CENTER CLASS_VERSION BOTTOM TOP MATH_PI ثانيا :المتغيرات :Variables هي عبارة عن أسماء تحجز مواقع في الذاكرة حتى يتمكن البرناما من تخزين البيانات فيها. هي عبارة عن وعاء يمكن تحميل بقيمة وهذا الوعاء يتغير حجم حسب القيمة التي سوف توضع في . قواعد تسمية المتغيرات: يمكن أن يبدأ ادسم بالحرف أو الشرطة السفلية ( _ ) under scoreأو عالمة الدودر ( )$ولكن د يمكن بدءالتسمية برقم ولكن يمكن أن نضع رقم بعد الحرف. د يمكن تسمية المتغير بإحدى الكلمات المحجوزةللغة الجافا والجدول شكل ( ) 6-1يبين هذه الكلمات . اسم المتغيرات variablesيكون باألحرف الصغيرةلكل األحرف ويالحظ عدم وجود أقواس. 13 أنواع المتغيرات – 1متغيرات أساسية أ -متغيرات رمزية (حرفية). Primitive Variables – 2متغيرات مرجعية ب -متغيرات عددية. Reference Variables يجب اإلعالن عن المتغير قبل استخدام كما يجوز تعريف المتغير وتخصيص قيمة ل فى نفس الوقت كالتالي: أ -المتغيرات الحرفية :Char وتتضمن الحروف بكافة أشكالها والرموز والفراغات (مسافة فارغة) مثل: ;char a,b ;a= 'a'; char var1 ; ' '=var1 ;' '=b أ -المتغيرات العددية :Numeric Variables أ) المتغيرات العددية الصحيحة :Integer تتضمن قيم عددية صحيحة يمكن أن ت خذ قيمة تصل إلى 32767وتكتب على الشكل التالي: ;a=100 ;int a ;int value ; value=2*3 ب) المتغيرات العددية الحقيقية :Floating Point تتضمن جميع األعداد الحقيقية وتكتب على الشكل التالي: ;x=5.2 ;float x float x= 5.2 وهنا يجب علينا ادنتباه لجملة اإلعالن والتخصيص السابقة , float x= 5.2إد أن الحاسب يعتبره من النوع doubleأي يحجز ل مكان 64بت وللتغلب على المشكلة السابقة يتم اإلعالن والتخصيص كالتالي: float x= 5.2 f 14 أي يتم وضع حرف ( )fبعد الرقم لكي يتم حجز مكان ل في الذاكرة مقداره 32بت وبذلك نكون قد وفرنا في الذاكرة المستخدمة. ج) المتغيرات العددية الحقيقة الطويلة :Double هي نفس المتغيرات العددية الحقيقة ولكن يمكن تمثيلها في خمسة عشرة خانة وتكتب على الشكل التالي: ;double x تطبيقات على قواعد تسمية المتغيرات أنواع البيانات والمتغيرات في لغة الجافا أحجام البيانات في الذاكرة 15 العمليات الحسابية والمنطقية في لغة الجافا الجدول شكل( )9-1التالي يبين أهم العمليات الحسابية في لغة الجافا : وهذه المعامالت قد تمت دراستها باستفاضة في منها الصف الثاني .والجدول التالي يبين العمليات المنطقية: 16 الكلمات المحجوزة في لغة الجافا ود يجوز استخدامها في غير للك ك سماء لمتغيرات مثال ولذلك فهي محجوزة لمفردات اللغة أي أنها هي الكلمات واألوامر التي تعبر وتستخدم في لغة الجافا. فقط abstract boolean break byte case catch char class continue default do double else extends false final الكلمات المحجوزة في اللغة finally float for if implements import instanceof int interface long native new null package private protected 17 public return short static super switch synchronized this throw throws transient true try void volatile while الهدف من المحاضرة الرابعة : – 1معرفة الطلبة بدالة اإلخراج في لغة الجافا – 2تدريب الطلبة على استخدام دالة اإلخراج من خالل برامج وأمثلة السير في الدرس دالة اإلخراج في لغة الجافا : System.out.print وهي من الدوال الهامة في لغة الجافا وهي تقوم بطباعة المخرجات سواء كانت عددية أو حرفية . ولتوضيح عمل هذه الدالة سوف يتم دراسة بعض األمثلة : مثال( ) 1المطلوب عمل برنامجا يقوم بطباعة العبارة .Hello Egypt public class HelloEgypt { بداية و نهاية الكالس )public static void main ( String [ ] s { ; )"System.out.print("Hello Egypt بداية ونهاية الوظيفة } } شرح البرناما السطر األول public وهذا هو السطر األول في البرناما وهو يتكون من: ( Publicالفصيلة عامة ) ائما تسبق تعريف الفئة أو الفصيلة Classوهي تعني أن هذه الفئة أو أي يمكن ألي فئة أخرى في البرناما استخدام عناصر هذه الفئة .ألن برناما الجافا قد يتكون من أكثر من فئة .class classوهنا يتم بداية الفصيلة HelloEgypt اسم الفصيلة ( البرناما ) ولقد تم تسميت هنا بادسم الذي نريده . 18 ودبد هنا أن نشير إلى نقطة هامة جدا وهي أن عند حفظ ملف الجافا دبد أن يتم حفظ بنفس اسم الفصيلة وبنفس شكل الحروف والمسافات وفي مثالنا هذا سيكون ادسم .HelloEgypt.java قوس بداية تعريف الفصيلة . { السطر الثاني أي أن الدالة بعد تنفيذ البرناما لن تعود ب ي قيم. viod نقطة البداية لوظيفة الفصيلة . main method main ( (String [ ] sالجملة الموجودة داخل قوسي البداية للدالة mainوهي ] [ String sتعني مصفوفة من النوع الحرفي وتسمى sلتخزين جملة الطباعة في البرناما . وكما قلنا من قبل أن لغة الجافا هي لغة حساسة لحالة األحرف لذلك يجب مالحظة أن حرف Sفي كلمة Stringيجب أن يكون حرفا كبيرا ( )capital letterوإد سيعطى البرناما خط عند الترجمة . السطر الثالث وهذا هو أمر الطباعة في لغة الجافا وسوف نتناول بالتفصيل في األمثلة القادمة . وهنا يجب أن نالحظ أن حرف Sيجب أن يكون كبير ( Capital )letter النص المراد طباعت ويجب أن يوضع بين عالمتي تنصيص (" ") وقوسين دبد وأن تنتهي كل جملة (سطر أو أمر) بعالمة (;) 19 بعد للك يتم إنهاء البرناما بقوسي النهاية حيث يمثل القوس األول نهاية الوظيفة method للدالة mainوالقوس اآلخر يمثل نهاية الفصيلة . classوالشكل اآلتي يبين للك : خطوات تنفيذ البرنامج - 1نجري ل عملية ترجمة كاآلتي: Java c HelloEgypt.java إلا لم يكن هناك أخطاء د تظهر أي رسالة ومعنى للك أن البرناما صحيح لغويا وهنا يتم عمل (إنشاء ) ملف كالس أي . Hello Egypt. class - 2بعد للك نقوم بعملية تشغيل البرناما كاآلتي: Java Hello Egypt فتظهر على الشاشة عبارة Hello Egypt وبذلك يكون قد تم تنفيذ البرناما. وكما هو معروف ف ن خطوات كتابة وتنفيذ أي برناما يمكن أن تكون كما بالشكل (-1 )12 21 ويمكن إضافة متسلسالت الهرون مع جملة الطباعة للحصول على عدة أشكال من المخرجات أمثلة على جملة الطباعة مثال( :) 2ما هي مخرجات البرنامج التالي : { public class Welcome { ) ] [public static void main ( String s ; )"System.out.print("Welcome to 21 ; )"System.out.print("Egypt } } نالحظ أن عند تنفيذ هذا البرناما ستظهر العبارة ( )Welcome to Egyptعلى سطر واحد وللك تبعا لعبارتي الطباعة في السطر ()3،4 أما إلا أردنا أن تكون المخرجات على سطرين مختلفين فيتم إضافة حرفي ()ln على العبارة printومعناها ادنتقال إلى سطر جديد ( )new lineويتم للك في السطر الثالث كاآلتي : ; )"System.out.println ("Welcome to ; )"System.out.print("Egypt فتكون مخرجات البرناما كالتالي: Welcome to Egypt ويمكن تنفيذ نفس شكل المخرجات السابقة بسطر واحد وللك عن طريق إضافة ()\n وتعني ادنتقال إلى سطر جديد ويكون شكل البرناما كالتالي : ; )"System.out.print ("Welcome to\n Egypt فتكون شكل المخرجات كالشكل السابق: Welcome to وفي هذه الحالة يتم إلغاء السطر رقم ()4 22 Egypt أما الا أردنا طباعة عدة أسطر متتالية ب مر طباعة واحد فيتم للك بتكرار ()\n كالتالي: ; )"System.out.print ("One\n Two \n Three \n Four فتكون المخرجات كالتالي: One Two Three Four أما الا أردنا أن تكون المخرجات على مسافات أفقية متساوية ف ننا نستخدم ()\t كالتالي: ; )"System.out.print ("One\t Two \t Three \t Four وتكون المخرجات كالتالي: Four Three Two One مثال ( :)3أكتب برنامج يقوم بجمع العددين ()11+5 ويتم للك بكتابة األرقام المراد جمعها داخل أقواس جملة printولكن من دون عالمتي تنصيص ألن عالمتي التنصيص تكون دائما لطباعة الحروف وحتى الا تم كتابة ارقام داخل عالمتي التنصيص ف نها تعامل معاملة الحروف أي د يمكن اجراء أي عمليات حسابية عليها . ويكون شكل عبارة printكالتالي: ; )System.out.print (5+16 ويكون الناتا (. )21 23 5-2-1التعليقات Comment إن أي مبرما يحتاج في بعض األحيان إلى إضافة بعض التعليقات والمالحظات الخاصة ب و التي د يتم تنفيذها في البرناما ولكن فقط تذكره بالغرض من األوامر التي يقوم بكتابتها . ويمكن تعريف التعليقات كاآلتي : أنه ا األسطر التي يتجاهلها مترجم الجافا ،و لكنها تجعل البرناما أسهل قراءة للمبرما نفس .بعبارة أخرى ،أنها مجموعة المالحظات التي يضعها المبرما في برنامج لتسهيل قراءت . والتعليقات في الجافا هي نفسها التعليقات الموجودة في لغة C++كما سبق دراست . ومن أنواع التعليقات في الجافا : - 1التعليق بسطر واحد ويكون هذا السطر مسبوقا بعالمتي ( )//كاآلتي : أو يمكن كتابة التعليقات بجانب أسطر البرناما كما يلي : - 2التعليق بعدة أسطر وفي هذه الحالة يمكن كتابة تعليق مكون من عدة أسطر كما يلي: 24 ويكون التعليق بين عالمتي ( */التعليق *)/ مثال ( :) 4أكتب برنامج يقوم بجمع عددين أحدهما صحيح واآلخر حقيقي. :]1AA[Commentفي الصورة كلمة Publicالثانية يجب أن تعدل لتكون public ويالحظ في السطر األخير للبرناما أن تم كتابة ( . )+Cوللك لطباعة محتويات المخزن ( )Cأمام عالمة (=) وعند تنفيذ البرناما سوف تكون المخرجات كالتالي: The Result = 27 25 الهدف من المحاضرة الخامسة : .1أمثلة تطبيقية عن كل ما سبق. .2التعرف على دالة اإلدخال . Input مثال ( ) 5ما هو ناتج مخرجات البرنامج التالي: في هذا المثال تم استخدام عدة أشياء منها : الطرق المختلفة لإلعالن عن المتغيرات. العمليات الحسابية المختلفة. جملة الطباعة وتكون مخرجات البرناما على الشكل التالي: 26 a + b = 19 a - b =11 a * b = 06 a/b =3 a %b = 3 مثال ( ) 1ما هي مخرجات البرنامج التالي : هذا البرناما تطبيق على المؤثرات األحادية وتكون مخرجات البرناما على الشكل: A=15 B=18 27 مثال ( ) 7ما هي مخرجات البرنامج التالي : ونالحظ في هذا المثال أن قيمة x1دزالت تساوي 11ود يتم إنقاص الواحد منها إد بعد الخروج من هذه الخطوة وتصبح قيمة zالجديدة z=9 ويكون ناتا خرج البرناما كالتالي: X1=10 X2=8 1-2-1دالة اإلدخال :Input بطبيعة الحال د يخلو أي برناما لو فائدة من جملة اإلدخال ,فهي الجملة التي تربط البرناما بالعالم الخارجي وهي الوسيلة الوحيدة التي يستطيع فيها المستخدم إدخال القيم عن طريق لوحة المفاتيح للحاسب ,حتى يقوم بمعالجة هذه القيم سواء كان البرناما (برناما حسابات – قاعدة بيانات . )...... 28 والحقيقة أن لغة الجافا تحتوي على أكثر من طريقة إلدخال البيانات منها ما هو مناسب لتطبيقات الويندوز ومنها ما هو مناسب لبراما الدوس ()Console Application وهي البيئة التي سيتم تنفيذ برامجنا من خاللها في هذا المنها . وعبارة اإلدخال التي سوف نستخدمها هنا هي العبارة ( )Scannerوهي عبارة عن فصيلة من فصائل لغة الجافا وهي موجودة في مكتبة تسمى ( ) java.utilودبد دستخدام عبارة اإلدخال ( )Scannerأن نستدعيها من مكتبات لغة الجافا ويتم للك كالتالي : ; Import.java.util وبذلك يمكننا استخدام عبارة اإلدخال ( )Scannerفي البرناما المطلون . ويكون للك بحجز مخزن لمتغير في الذاكرة ليحتوي الرمز المدخل عن طريق لوحة المفاتيح كالتالي: ثم بعد للك يتم كتابة العبارة التالية : والمثال التالي يوضح طريقة عمل عبارة اإلدخال ))Scanner 29 مثال ()8 أكتب برناما لجمع رقمين على أن يتم إدخال الرقمين من لوحة المفاتيح ثم طباعة الناتا على الشاشة. شرح البرنامج - 1في السطر األول تم استدعاء المكتبة التي تحتوي على جملة اإلدخال Scanner -2أما في السطر الرابع فقد تم اإلعالن عن ثالث متغيرات من النوع integer وهي المتغير aلتخزين الرقم األول والمتغير bلتخزين الرقم الثاني والمتغير sum لتخزين ناتا عملية الجمع. 31 -3أما السطر الخامس فهو يعمل على تهيئة الحاسب دستقبال مدخالت من لوحة المفاتيح ولقد تم تسمية مخزن مؤقت تم تسميت Keyboardأو يمكن تسميت ب ي اسم ويتم في تخزين القيمة المدخلة مؤقتا تمهيدا لنقلها لمتغير أخر سيكون هنا aأو bودحظ كلمة ( )System.inأصبح بجوارها كلمة inددلة على عملية اإلدخال -4أما السطر السادس فوظيفت هي طبع رسالة على الشاشة تخبر المستخدم بإدخال الرقم األول. -5أما في السطر السابع فيتم إدخال الرقم األول ثم يخزن مؤقتا في المخزن Keyboard ثم ننقل أو نخصص القيمة الموجودة في المخزن Keyboardوهي هنا الرقم األول ونضعها في المخزن .a -6أما في السطر الثامن فهو يكرر العملية لطلب الرقم الثاني. -7وفي السطر التاسع يتم إدخال الرقم الثاني كما سبق ولكن يتم تخزين هذه المرة في المخزن .b -8أما السطر العاشر فيتم في عملية الجمع ووضع الناتا في المخزن .sum -9وفي السطر الحادي عشر يتم طباعة قيمة الجمع على الشاشة. مالحظات هامة عن البرنامج - 1يجب المالحظة جيدا أن هناك كلمات دبد وأن يكتب الحرف األول منها بحروف كبيرة Capital letterمثل الكلمات في هذا المثال ()System , Scanner , nextInt . - 2يجب أن تكون أسماء المتغيرات واضحة حتى يتم فهم البرناما جيدا. 31 - 3بالنسبة لألرقام المدخلة يجب أن تكون من النوع الصةحيح فقةط integerو هةذا يكةون في مثالنا فقط ألننا طلبنةا منة للةك فةي برنامجنةا وللةك فةي السةطر السةابع عةن طريةق عبارة ( )nextIntفةةالحروف الثالثةةة لات اللةةون األحمةةر ( ) Intوالتةةي جةةاءت بعةةد كلمةةةة nextهةةةي المسةةةئولة عةةةن المةةةدخالت يجةةةب أن تكةةةون مةةةن النةةةوع األرقةةةام الصحيحة وهي لها عدة حادت: حاالت العبارة ( : ) next والجدول شكل ( )13-1التالي يوضح الحادت المختلفة للعبارة ( ) next الجدول شكل ()13-1 تشغيل البرنامج السابق عند تشغيل البرناما السابق يظهر اآلتي : - 1السطر األول يطلب منك إدخال الرقم األول وهنا تم إدخال العدد .21 - 2السطر الثاني يطلب منك إدخال الرقم الثاني 32 Enter first number 20 enter second number 30 The sum is = 50 وهنا يتم إدخال العدد .31 -3أما السطر األخير فيظهر النتيجة وهي حاصل الجمع .51 ويجب مالحظة أن عند إدخال الرقم الثاني يجب الضغط على مفتاح Enterأو ترك مسافة واحدة. مثال ()9 أكتب برناما تقوم من خالل بإدخال اسمك فيطبع عبارة ترحيب بك Cairo ونالحظ هنا أن عبارة اإلدخال لم تتغير كثيرا عن البرناما السابق والذي تم في إدخال األرقام, إد اختالفا بسيطا في السطر السادس. وقد تم عمل متغير حرفي من نوع Stringهو المتغير aوالذي يتم في تخزين الحروف المدخلة من لوحة المفاتيح كما نالحظ تغير العبارة nextولقد كتبت منفردة بدون أي اضافات (أنظر الجدول السابق الذي يوضح وظائف . )next تشغيل البرنامج 33 عند تشغيل البرناما يطلب منك إدخال أسمك فنقوم بإدخال ادسم من لوحة المفاتيح فيقوم بعد للك بطباعة عبارة الترحيب كالتالي: Enter your name Cairo Welcome Cairo 34 الهدف من المحاضرة السادسة : التعرف على جمل االختيار الشرطية . 2- 1جمل االختيار Selection Statements ويطلق عليها أيضا جمل التحكم أو جمل اتخال القرار ولقد سبق دراسة هذه الجمل في الصف الثاني وهي د تختلف كثيرا عن الجمل الموجودة في لغة الجافا. 1- 3- 1جملة الشرط if statement الصيغة األولى لجملة if ت خذ الجملة ifالصيغة العامة التالية : ومعنى هذه العبارة أن الا كان الشرط الذي تقوم الجملة ( ) ifباختباره صحيحا فقم بتنفيذ الجملة التي بين القوسين .وفي حالة عدم صحة ادختبار فال تقم بتنفيذ جملة ( ) ifوإنما استمر في تنفيذ بقية جمل البرناما من بعد تخطي جملة ( . ) if وفي حالة تنفيذ جملة واحدة فقط بعد جملة ( ) ifفإن يمكن ادستغناء عن األقواس وفي هذه الحالة تنتهي جملة الشرط بالفاصلة المنقوطة ( ; ) كما يلي : ويمكن تمثيل عبارة ifبالشكل ( )14-1التالي : 35 شكل ()14-1 وكما نعرف دائما فإن الشرط يجب أن يكون شرطا منطقيا ولفهم طريقة عمل جملة if ندرس األمثلة التالية: 36 مثال ()11 المطلون كتابة برناما يقوم بفحص رقم يتم إدخال من لوحة المفاتيح وليكن ( )xبحيث إلا كان موجبا يقوم بطباعة العبارة (. )x is positive ونالحظ هنا أن جملة ifانتهت ب ول فاصلة منقوطة قابلتها أي بعد عبارة الطباعة ونالحظ هنا أننا لم نستخدم األقواس في جملة ifألننا لم نكتب غير سطر واحد فقط بعد عبارة ifوهي جملة الطباعة أما لو كتبنا أكثر من جملة يجب تنفيذها عند تحقق الشرط في هذه الحالة يجب إضافة األقواس ويتم تنفيذ البرناما كما يلي : Enter Number X 5 X is positive 37 مثال ()11 كرر نفس المثال السابق مع استخدام أكثر من سطر في جملة ifكاآلتي: وتكون مخرجات البرناما كالتالي: Enter Number X 10 X is positive X is not negative 38 الصيغة الثانية لجملة if مثال ()12 نفذ البرناما السابق بحيث يطبع عبارة ( )X is positiveفي حالة إلا كانت موجبةة وإد يطبع عبارة ( )X is negativeفي حالة إلا كانت Xسالبة. ويتم للك باستخدام عبارة IFالكاملة كاآلتي: :]2AA[Commentفي هذه الصورة ،جملة X is not negative يجب تعديلها لتصبح X is negative 39 و يمكننا في البرناما السابق حذف األقواس الموجودة بعد جملة , ifوكذلك حذف األقواس الموجودة بعد elseوللك لوجود جملة طباعة واحدة بعد كال منهما. 2- 3- 1جملة switch تستخدم عبارة ifإلا كان جوان الشرط عبارة عن احتمالين أو ثالثة احتمادت على األكثر ,أما إلا زاد عدد ادحتمادت على للك فمن األفضل استخدام عبارة switch وصيغتها العامة كاآلتي: ولكي نفهم كيفية عمل جملة switchنجري المثال التالي: 41 مثال ()13 لنفرض أننا نريد إن يطبع الحاسب جملة ترحيب معينة إلا تم الضغط على أحد األرقام في لوحة المفاتيح . خطوات البرناما : 41 وعند تنفيذ هذا البرناما ف ن تحدث إحدى الحادت اآلتية: - 1إلا تم إدخال الرقم ( ( 1فإن يطبع العبارة األولى Welcomeثم يجد عبارة break فيخرج خارج جملة switchوينتهي البرناما . - 2إلا تم إدخال الرقم ( ( 2فإن يطبع العبارة الثانية how are youثم يجد عبارة التوقف breakفيخرج خارج جملة switchوينتهي البرناما . - 3وهكذا في حالة إدخال الرقم ( )3فإن يطبع الجملة الثالثة ثم breakثم يخرج . - 4أما في حالة إدخال أي رقم غير موجود في البرناما وليكن ( )4مثال ,فإن البرناما يطبع العبارة الموجودة في جملة defaultثم ينتهي البرناما . - 5يجب مراعاة أن جملة switchلها قوسي بداية ونهاية. - 6يجب دائما أن تنتهي كل حالة caseمن حادت switchبالعبارة .break ☺ حاول أن تقوم بإلغاء هذه العبارة وتجربة البرناما ...مالا تجد ؟؟ ☺جرن إدخال حرف بدد من الرقم مالا تجد ؟؟ 42 الهدف من المحاضرة السابعة: التعرف على الحلقات التكرارية . 3- 1جمل الدوران كثيرا ما نحتاج في البرناما إلى تكرار أمر معين موج إلى الحاسب عددا من المرات ، وتوفر لغة الجافا عدة وسائل تمكن المبرما من أداء هذا التكرار .وعادة ما تسمى هذه الوسائل بالحلقات التكرارية ويوجد العديد من الحلقات التكرارية التي سوف نتناولها بالشرح وهي: - 1الحلقة ()for Loop - 2الحلقة ()while loop - 3الحلقة ()do-while Loop 1-4- 1الحلقة ()for loop تستخدم الحلقة forلتكرار أمر معين (أو مجموعة من األوامر) عددا من المرات. والصيغة العامة لهذه الحلقة كالتالي : نالحظ أن هذه الحلقة تتكون من ثالث أقسام هي: 43 - 1القيمة االبتدائية . initialization نضع في هذا الجزء متغير ونعطي القيمة ادبتدائية التي يبدأ منها التكرار. - 2الشرط Condition هنا نضع الشرط الذي يتوقف عنده العد. - 3مقدار الخطوة increment هنا نضع مقدار الزيادة في حالة العد التصاعدي أو النقصان في حالة العد التنازلي. ونالحظ هنا أن جملة forلها قوس بداية وقوس نهاية ويتم وضع األقواس في حالة تكرار أكثر من جملة كما يمكن ادستغناء عن هذه األقواس في حالة تكرار جملة واحدة. مثال ()14 نفذ برناما بلغة الجافا يقوم بالعد من ( 1إلى . )21 خطوات البرناما كالتالي : في هذا البرناما تم استخدام متغير aمن نوع integerفيتم زيادة قيمت كل مرة بمقدار واحد .والقيمة ادبتدائية ل داخل الحلقة a=1حتى يصل العد إلى . 21تنتهي الحلقة وينتهي البرناما 44 و في كل خطوة زيادة يتم طباعة قيمتها على الشاشة عن طريق أمر الطباعة. وتكون األرقام في شريط تحت بعضها على الشاشة .لمالا ؟؟ ثم فك ر كيف يمكن طباعة المخرجات متجاورة أو على سطر واحد بينها مسافات متساوية. مثال ()15 المطلون عمل عداد تصاعدي يبدأ العد من القيمة ( )1حتى القيمة ( )xعلى أن يتم إدخال قيمة نهاية العد من لوحة المفاتيح . وفي هذا البرناما استخدمنا عبارة اإلدخال كما استخدمناها في البراما السابقة ,وعن طريقها تم إدخال رقم نهاية العد وتم وضع في المتغير ( )xثم وضعناه في الجزء الخاص بالشرط في الحلقة . ونالحظ هنا أن المتغير ( )aقد تم تعريف وإعطاؤه قيمة ابتدائية داخل الحلقة int ).)a=1 خطوات البرناما : 45 46 مثال ()11 عمل برناما يوضح تكرار أكثر من جملة داخل الحلقة .for وفي هذا البرناما تم استخدام أكثر من جملة يراد تكرارها داخل الحلقة ولذلك تم استخدام قوسي بداية ونهاية للحلقة وهذا البرناما يقوم بطباعة المخرجات كالتالي : 47 -2-4-1الحلقة ()while loop في هذه الحلقة التكرارية نحتاج إلى الشرط فقط وطالما كان هذا الشرط متحققا استمرت الحلقة في التكرار والصيغة العامة لها كاآلتي: ونالحظ هنا أن الشرط ي تي أود قبل تنفيذ الحلقة. مثال ()17 أكتب برناما يقوم بعملية العد من ( 1إلى ) 11باستخدام الحلقة while loopمع طباعة النتائا على الشاشة. 48 ونالحظ في هذا البرناما أن دبد من إعطاء قيمة ابتدائية للعداد ) . ) int a=0ونالحظ كذلك أن في جملة whileدبد من وجود األقواس ,ألن الجملة بطبيعتها تتكون من أكثر من سطر. كذلك يتم زيادة قيمة ( )aبمقدار واحد عن طريق الصيغة ( )++aوبعد أن يتم زيادة قيمة aبمقدار واحد يتم التحقق من الشرط كل مرة وستكون نتيجة البرناما طباعة األعداد من ( 1إلى . )11 -3-4-1الحلقة ()do – while تختلف هذه الحلقة عن الحلقات السابقة في مكان وضع الشرط ،حيث يكتب الشرط بعد العبارات المطلون تكرارها وتكون صيغتها العامة كالتالي: بإمكاننا القول أن الحلقة ( )do-whileتعني قم بالدخول في الكتلة doوقم بتنفيذ األوامر. وفي حالة ادنتهاء قم باختبار التعبير الشرطي الموجود في آخر الكتلة ,وفي حالة صحة التعبير قم بالرجوع مرة أخرى إلى مكان الكلمة .do مثال ()18 يمكن تطبيق نفس المثال السابق في حلقة whileوهو البرناما الذي يقوم بالعد من (1 إلى ) 11ولكن هذه المرة باستخدام الحلقة ( )do-whileكاآلتي : 49 ونالحظ هنا أن في كل مرة يقوم البرناما بالتحقق من الشرط في نهاية الحلقة ,وهذا يعني أن إلا لم يتحقق الشرط فسوف يتم تكرار الحلقة مرة واحدة فقط. 51 الهدف من المحاضرة الثامنة: .1التعرف على الدوال. .2مزايا استخدام الدوال. .3التعرف على أنواعها . 5-1الدوال methods وهي عبارة عن طرق ودوال من تعريف (تصميم) المبرما أو تكون جاهزة في البرناما. والغرض منها هو تسهيل عملية البرمجة في األشياء التي تتكرر أكثر من مرة في البرناما. الهدف من الدوال في حالة تكرار مجموعة من سطور األوامر أكثر من مرة في مواضع مختلفة في البرناما فإن أوامر التكرار لن تكون لات منفعة .ولذلك يتم كتابة هذه الجمل منفصلة عن البرناما الرئيسي . مزايا استخدام الدوال - 1عدم الحاجة إلى تكرار التعليمات داخل البرناما حيث يتم إنشاء الدالة مرة واحدة ويمكن استدعائها أكثر من مرة عند الحاجة إليها . - 2باستخدام الدوال يصبح البرناما أكثر وضوحا. - 3باستخدام الدوال الجاهزة يمكن توفير الكثير من الوقت والجهد. هناك نوعان من الدوال يمكن استخدامهما: -1دوال جاهزة يمكن أن توفرها لغة الجافا . -2دوال يمكن تعريفها عن طريق المستخدم. 1-5- 1دوال جاهزة يمكن إن توفرها لغة الجافا . مثل الدوال الرياضية ب نواعها والجدول شكل ( )15-1اآلتي يبين الدوال الحسابية الجاهزة في لغة الجافا : 51 شكل ()15-1 الجدول شكل ( )16-1يبين المكتبات الخاصة بالجافا وما تقدم هذه المكتبات من خدمات . 52 المكتبة الخدمات /الفئات التطبيقات java.utilتحتوي هذه الباقة على فئات تمثل هياكل بيانات عامة االستعمال مثل الصفوف و المجموعات و غيرها. البرمجة الخوارزمية العادية. java.ioتحتوي هذه الباقة على فئات تتصرف في عمليات تصدير و توريد البيانات. البرامج التي تتطلب معاملة فورية مع المستخدم. java.langتحتوي هذه الباقة على الفئات المتعلقة بتنفيذ البرنامج و مراقبته ،بما فيها الفئات التي تعالج أخطاء التنفيذ و بعض الفئات العامة .نظرا ألهميتها ،فإن هذه الباقة يقع توريدها ضمنيا في كل برنامج. كل البرامج /كل التطبيقات. java.mathتحتوي هذه الباقة على فئات تقوم بعمليات حسابية ،بأي دقة يطلبها المستخدم. التطبيقات الهندسية و تطبيقات الرياضيات. java.sqlتحتوي هذه الباقة على فئات تختص في عمليات على قواعد البيانات. تطبيقات التصرف التي تتطلب قواعد بيانات. java.awtتحتوي هذه الباقة على فئات تختص في الرسم و في إنجاز واجهات رسومية. تطبيقات تتطلب واجهات رسومية مع المستخدم. java.swingتمدد هذه الباقة إمكانيات و قدرات الباقة السابقة. java.securityتحتوي هذه الباقة على فئات تختص في تنفيذ إجراءات أمنية في البرنامج ،مثل مراقبة المستخدمين و صيانة الوارد و غير ذلك. شكل ()16-1 53 تطبيقات تتطلب واجهات رسومية مع المستخدم. تطبيقات تتطلب إجراءات أمنية. ويمكن استدعاء الدوال بكتابة اسم الفصيلة(الفئة) متبوعا بنقطة بعدها اسم الطريقة ثم قائمة المعامالت داخل أقواس دائرية كما يلي: )Class_Name.method_Name(Argument List فمثال إلا أردنا الحصول على الجذر ألتربيعي للعدد( )25فيمكن كتابة الصيغة كالتالي: ))System.out.print(Math.sqrt (25.0 ; تقوم هذه الجملة باستدعاء الدالة ( )sqrtالموجودة في الفصيلة ( )Mathوالتي ت خذ معامل واحد من نوع ( )Doubleونتيجة تنفيذ هذه الجملة سيكون طباعة (. )5.0 مثال (: )19 المطلون عمل برناما يستقبل قيمة من لوحة المفاتيح ثم يقوم بإيجاد الجذر التربيعي ومربع هذا الرقم وللك باستخدام الدوال الجاهزة في لغة الجافا . خطوات البرناما كاآلتي : 54 في هذا البرناما تم اإلعالن عن متغير من نوع .)double number( double ثم يتم إدخال الرقم من لوحة المفاتيح وفي سطري الطباعة .السطر األول يقوم بطباعة الجذر التربيعي أما السطر الثاني فيقوم بطباعة مربع هذا الرقم . وعند تنفيذ البرناما تظهر المخرجات كالتالي : -2-5-1الدوال يمكن تعريفها عن طريق المستخدم : الشكل العام للدالة 55 وفيما يلي شرح الشكل العام للدالة: طريقة الوصول للدالة ويوجد ثالث طرق نذكرها كالتالي: : public - 1أي عامة أي تستطيع الوصول اليها من خارج الفصيلة ومن خارج البرناما أيضا. : private - 2أي خاصة فتسةتطيع الوصةول للدالةة مةن داخةل الفصةيلة فقةط ,ود يمكةن ان تصل اليها من خارج الفصيلة. : protected- 3أي محمةةي ,أي أنةةك تسةةتطيع الوصةةول للدالةةة مةةن داخةةل الفصةةيلة أو مةةن خارج الفصيلة (وهذا يدعم موضوع الوراثة). أمةةا عبةةارة staticالتةةي نجةةدها فةةي معظةةم البةةراما فهةةي مةةن أجةةل إخبةةار المتةةرجم أن هةةذه الدالة من نوع ثابت أي يتعرف عليها المترجم قبل الدخول للدالة الرئيسية. وهناك نوعان من الدوال كاآلتي : - 1نوع يعود بقيمة . وفي هذا النوع دبد من استخدام العبارة returnكالشكل العام الذي رأيناه سابقا. وكمثال على الدالة التي تعود بقيمة: ) (public int getDay { ;return day } وهنا نرى أن الدالة المعرفة تعود بالتاريخ وهو قيمة ولذلك تم وضع عبارة .return - 2نوع د يعود بقيم .void method ويكون تعريف هذا النوع كاآلتي : 56 )public void method_ name(parameter_list { ><list of statements } ونالحظ أن في هذا النوع لم يتم استخدام عبارة .return وكمثال لهذا النوع: ) (public void writeoutput { ;)System.out.println(month +" "+day + " " + year } وهنا نالحظ أن عبارة الطباعة د تعود ب ي قيم للبرناما الرئيسي ولذلك تم استخدام voidأي دالة د تعود بقيم وكذلك لم يتم استخدام العبارة . return 57 الهدف من المحاضرة التاسعة: كيفية استدعاء الدوال داخل البرنامج. حل بعض التمارين. العبارة return وتوجد في نهاية الدالة وهي تجعل البرناما يعود في مساره بعد انتهاء تنفيذ الدالة. والصيغة العامة لهذه الدالة كالتالي : ; return Expression وكمثال على هذه العبارة ) (public int getYear { ; return year } الحظ استخدام العبارة returnبدون أي أقواس في الدوال من نوع voidيمكن أن يتسبب في إنهاء البرناما في الحال . والشكل التالي ( )17-1يوضح أشكال الدوال التي يمكن تعريفها : 58 شكل()17-1 كيفية استدعاء الدوال داخل البرنامج يمكن استدعاء الدالة داخل أي مكان في البرناما عن طريق كتابة اسمها وارسال قيم المعامالت إن وجدت .والصيغة العامة دستدعاء الدالة كاآلتي : 59 مثال (: )21 كيفية كتابة دالة بسيطة تقوم بعملية الجمع وطريقة استدعائها. ونالحظ أن تم مناداة دالة الجمع sumفي الدالة الرئيسية مع اسناد معامالت لها . )Sum(10,20 ; ونالحظ في جسم الدالة الفرعية التي تقوم بعملية الجمع أنها من نوع .voidأي د تعود للدالة الرئيسية ب ي قيم ,بل ينتهي دورها بمجرد طباعة ناتا الجمع .ونالحظ كذلك أنها د تنتهي بعبارة . returnلمالا؟ ويالحظ أن معامالت الدالة المستدعاة عبارة عن متغيرين ( )a,bمن النوع intكما تم تعريف متغير آخر داخل جسم الدالة الفرعية وهو ( )cليتم تخزين ناتا الجمع ب . وعند تشغيل البرناما يتم طباعة ناتا الجمع وهو هنا (. )31 كما يمكن تغيير القيم الداخلة إلى الدالة الفرعية بمتغيرات ( )x,yكالتالي : ود يتم تغيير شيء في الدالة الفرعية . 61 مثال (:) 21 استخدام دالة تعود بقيم . ولذلك لم نستخدم voidوتم استخدام العبارة . return ومن المؤكد عند تنفيذ البرناما سوف يتم طباعة حاصل الجمع (. )31 61 الهدف من المحاضرة العاشرة : .1التعرف على المصفوفات وأنواعها . .2حل بعض التمارين. -1-1المصفوفات (المنظومات) . Array في الحقيقة وقبل أن نبدأ في شرح المصفوفات نس ل أنفسنا أود :لمالا استخدمت طريقة المصفوفات ؟ ولإلجابة على هذا السؤال نرجع إلى تعريف المتغيرات . فالمتغير كما هو معروف يستخدم في تخزين البيانات سواء كانت هذه البيانات حروفا أم أرقاما .فمثال لو افترضنا أن هناك متغيرا من النوع الصحيح يسمى ) )aوب قيمة معينة ف ننا كنا نعلن عن هكذا: ;int a=3 ولكن مالا لوكنا سنتحدث مثال عن درجات خمس طالن وكل طالب ل درجة معينة ففي هذه الحالة سوف نحتاج خمس متغيرات .ولو فرضنا أن الدرجات من النوع الصحيح ف ننا سنعلن عن هذه المتغيرات ونعطيها قيما كالتالي : ;int a1=80 ;int a2=90 ;int a3=60 ;int a4=50 ;int a5=45 فهنا يمكننا فعال اإلعالن عن خمس متغيرات وإعطائهم القيمة المطلوبة .ولكن مالا نفعل لو أن هناك مائة طالب أو ألف طالب مثال ؟ هل سنعلن عن كل هذه المتغيرات في 62 البرناما ؟ فيمكن إن نتخيل حجم البرناما وكيفية فهم وتصحيح الا تم اإلعالن بالطريقة العادية .ولذلك كل تم ادستعانة بالمصفوفات . والمصفوفات تعتبر من نوع المتغيرات المرجعية . Reference variables تعريف المصفوفة المصفوفة هي عبارة عن مخزن يحمل عدد محدد من القيم Valuesلمتغيرات Variablesمن نفس النوع .typeوهذا النوع يمكن ان يكون ( int , float , string ),….ويتحدد سعة هذا المخزن (المصفوفة) عند اإلعالن عنها وبعد اإلعالن عن المصفوفة وتحديد طولها (عدد المتغيرات التي ستخزنها) فإن هذا الطول يظل ثابتا ود يمكن تحميل المصفوفة بعناصر أكثر من سعتها . وكل عنصر في المصفوفة arrayيسمى elementويمكن الوصول لهذا العنصر في المصفوفة عن طريق فهرس رقمي . index أنواع المصفوفات : يوجد نوعان من المصفوفات : - 1المصفوفة األحادية :وهي مكونة من بعد واحد فقط. - 2المصفوفة متعددة األبعاد :وهي مكونة من عدد من الصفوف واألعمدة (ليس شرطا ان تكون بعدين ) . وسوف نتناول بالشرح ,المصفوفة لات البعد الواحد ,والمصفوفة لات البعدين . 1- 6- 1المصفوفة ذات البعد الواحد. والصيغة العامة لإلعالن عن المصفوفة لات البعد الواحد كالتالي: 63 أو يمكن اإلعالن عنها بنفس الصيغة السابقة مع وضع األقواس بعد اسم المصفوفة كالتالي: فمثال يمكن اإلعالن عن المصفوفة لات البعد الواحد كالتالي : وسوف نستخدم الصيغة الثانية )][int degree[ float degree[] ; String name ; ]) وبعد اإلعالن عن المصفوفة دبد من تحديد عدد عناصرها ويتم للك كالتالي: فمثال لعمل مصفوفة رقمية من النوع intخاصة بدرجات عشرة طالن مثال يتم للك كالتالي: 64 ; ][ int degree ;]degree[ ]= new int[10 أو يمكن اإلعالن عن المصفوفة وتحديد عدد عناصرها في سطر واحد كالتالي: ]int degree[ ]=new int[10 ; وهذا السطر يخبر الحاسب بحجز عشرة أماكن لمصفوفة لات بعد واحد من النوع int وتسمى . degree وكما قلنا سابقا يمكن كتابة الصيغة السابقة كالتالي: ]int[ ] degree=new int[10 ; والحقيقة أن بعد تحديد عدد عناصر المصفوفة يتم حجز 11مواضع في الذاكرة لتخزين األرقام الصحيحة التي سيتم إدخالها ويبدأ الترقيم في الذاكرة من الصفر كالتالي: 65 وكما قلنا إن عناصر المصفوفة عبارة عن متغيرات يتم تخزينها في الذاكرة ,وأن المتغير عبارة عن وعاء يتم تخزين القيم ب والمثال التالي يوضح هذا المفهوم : ]int nums[]=new int [7 ; وهذا معناه حجز عدد ( )7أماكن (أوعية) في الذاكرة تمهيدا لتخزين قيما بها كاآلتي: و يمكن تخزين قيما (أعداد صحيحة) في هذه األوعية كالتالي: فمثال العنصر رقم ( )1يمكن إعطاؤه الرقم ( , )6ورقم ( )5يمكن إعطاؤه القيمة (, )21 وهكذا .... ومن المؤكد أن المصفوفات د تتعامل فقط مع األرقام بل يمكنها تخزين الحروف والكلمات. والبرناما اآلتي يبين للك: 66 نفرض أننا نريد تخزين عدد ( )5أسماء ثم طباعتهم فيتم عمل للك كاآلتي : ونالحظ هنا أننا استخدمنا الحلقة التكرارية ( )forلطباعة عناصر المصفوفة وتكون المخرجات كالتالي: :]3AA[Commentكلمة عمرو بالصورة تعدل لتصبح بحروف صغيرة لتتطابق مع المكتون في الصورة السابقة ويمكن إعطاء المصفوفة قيما ابتدائية كالتالي : ; }int student[]={10,20,30,40,50 فهذه المصفوفة تم إعطاؤها 5قيم مسبقة ويتم تخزينها في الذاكرة كالتالي : 67 ولطبع الرقم 31الموجود في الخانة 2يتم كتابة األمر التالي: ;)]System.out.println(student[2 ونالحظ مما سبق أن إلا لم نحدد قيما ابتدائية للمصفوفة فيجب أن نستخدم كلمة ()new لحجز مواقع للمصفوفة كما أوضحنا سابقا. مثال () 22 المطلون عمل مصفوفة لات بعد واحد تحتوي على درجات خمس طالن وطباعة الناتا على الشاشة. نفترض أن درجات الطالن (. ) 10, 20, 30, 40, 50و البرناما كالتالي: ونالحظ هنا أن تم عمل حلقة بجملة forلقراءة محتويات المصفوفة وطباعتها على الشاشة. 68 ونالحظ كذلك أن نهاية العداد هو العدد 4على الرغم من كونهم 5عناصر .لمالا ؟ 11؟ وضح مالا يحدث لو جعلنا نهاية العد إلى الرقم 5 21 31 41 51 وتكون مخرجات البرناما كالتالي: مثال ()23 مطلون كتابة برناما يقوم بعمل مصفوفة حروف تقوم بطبع أيام األسبوع على الشاشة كاآلتي: ونالحظ في هذا البرناما أن تم اإلعالن عن مصفوفة من النوع الحرفي String type ألن عناصر المصفوفة عبارة عن حروف. ويجب أن نالحظ أن كلمة Stringيجب أن يكتب أول حرف فيها بحرف كبير .capitalثم يتم تنفيذ أمر الطباعة داخل الحلقة لطباعة أيام األسبوع .وهنا يتبادر إلى لهننا سؤاد: مالا لو قلت قيمة نهاية العد عن 6؟ مالا لو أصبحت 4مثال ؟ ومالا لو زادت هذه القيمة عن 6؟ مالا لو أصبحت 8مثال ؟ ونترك لك عزيزي الطالب التفكير واستخالص النتائا. 69 -2-1-1المصفوفة متعددة األبعاد (ذات البعدين) Multidimensional array ويمكن القول ب ن المصفوفة لات البعدين هي عبارة عن جدول يحتوي على صفوف وأعمدة . والصيغة العامة لهذه المصفوفة كالتالي : فمثال الا كان هناك مصفوفة تم تعريفها كاآلتي : ولفهم طريقة ترتيب العناصر في هذه المصفوفة نفرض أن لدينا مصفوفة( )aحروف كاآلتي: ; ]char a[][]=new char[5][6 71 فإلا أردنا مثال أن نعرف محتويات المصفوفة في الموقع ) ] ) a[1][2فنجد أن حرف ( .) tوكذلك الموقع (] )a[2][3فنجد أن الحرف ( ) rوهكذا. وبطبيعة الحال يمكن إعطاء هذا النوع من المصفوفات قيما ابتدائية كما سبق ورأينا في المصفوفة لات البعد الواحد ,ولكننا هنا في المصفوفة لات البعدين سوف نتعرف على كيفية إدخال القيم من لوحة المفاتيح . كيفية إدخال العناصر للمصفوفة لنفرض أن هناك مصفوفة لات بعدين يراد فيها إدخال درجات 6طالن عن طريق لوحةة المفاتيح يتم للك كالتالي: سنقوم بتسمية المصفوفة studentوسوف نسةتخدم دالةة اإلدخةال Scannerإلدخةال قيمةا صحيحة إلى هذه المصفوفة وهذا هو شكل البرناما: - 1في السطر األول يتم اإلعالن عن مصفوفة لات بعدين من النوع intوعدد عناصرها 6عناصر. 71 - 2السطر الثاني سبق وتم شرح في جملة اإلدخال. - 3السطر الثالث والرابع تم عمل حلقتين ,الحلقة األولى الخارجية لإلشارة إلى رقم الصف rowوالحلقة الثانية لإلشارة إلى رقم العمود .columnوطبعا دحظ ان الحلقة الخارجية قد تم إضافة أقواس لها .لمالا ؟ - 4أما السطر الخامس فيتم استخدام دالة اإلدخال كما شرحناها سابقا .ولكننا هنا استخدمنا المصفوفة studentكمتغير يتم تخزين عناصر المصفوفة المدخلة في . وعند تشغيل البرناما لن تظهر لك أي رسالة .ألننا لم نضف رسالة لإلدخال يمكنك أنت إضافتها ولكن ,سيظهر المؤشر في أقصى يسار الشاشة منتظرا إدخال قيم عناصر المصفوفة فيتم إدخال 6عناصر والضغط على مفتاح اإلدخال كل مرة. وبعد تمام اإلدخال للستة عناصر تظهر عالمة المحث للدرس ددلة على انتهاء اإلدخال. كيفية قراءة عناصر المصفوفة بعد أن يتم إدخال عناصر المصفوفة وإجراء أي عمليات عليها كالعمليات الحسابية مثال, يهمنا أن نرى المخرجات على الشاشة .وفي هذا البرناما سوف نتعرف على كيفية قراءة عناصر المصفوفة وطباعة هذه العناصر كما هي على الشاشة دون أي تغيير ,ويتم للك عن طريق البرناما التالي: 72 :]4AA[Commentفعل استبدل ي تي بعده المستبدَل ب ثم بعد حرف الباء ي تي المستبدَل ونالحظ أننا استبدلنا جملة الطباعة printبجملة اإلدخال في البرناما السابق .ونالحظ أننا أضفنا عالمة ( )\tوللك لتنسيق الطباعة على الشاشة .فتظهر عناصر المصفوفة على سطر واحد لمالا ؟ وبينها مسافات متساوية لمالا؟ مما سبق يتبين لنا أن دبد من جمع البرناما األول (إدخال عناصر المصفوفة ) والبرناما الثاني وهو طباعة عناصر المصفوفة مع بعضهما ليظهر برناما واحد متكامل لإلدخال واإلخراج كالتالي 73 الهدف من المحاضرة الحادية عشر: حل بعض التمارين. تطبيقات -1ما هي اإلصدارات المختلفة للغة الجافا ؟ -2ما هي مميزات لغة الجافا ؟ -3وضح مع الرسم كيف أن لغة الجافا د تعتمد على نظام التشغيل في األجهزة المختلفة . -4قم بتظليل اإلجابات الصحيحة فقط مما ي تي : – 1تكتب رأس الدالة الرئيسية للبرناما كاآلتي: -2أي العبارات اآلتية صحيحة : - 3أي العبارات اآلتية تقوم بطباعة العبارة (. )Welcome to Javaيمكن أن تختار أكثر من اختيار. 74 -4إلا أردنا ترجمة الملف المسمى ( )Test.javaف ننا نقوم بكتابة اآلتي في سطر األوامر: 5ـ -إلا افترضنا أن هناك فصيلة تمت تسميتها كما يلي : { public class Test } فإن بعد عملية الترجمة ينتا ملف باسم: -6أي السطور اآلتية د تعتبر سطور مالحظات commentيمكن اختيار أكثر من اجابة : -7أي من الكلمات اآلتية تعتبر من الكلمات المحجوزة في لغة الجافا (يمكنك اختيار أكثر من اجابة) ؟ 75 -8كل عبارات لغة الجافا يجب أن تكتب بحروف صغيرة : -9أي أسماء المتغيرات اآلتية صحيحا .يمكن أن تختار أكثر من إجابة : -11أي الطرق اآلتية تستخدم في اإلعالن عن المتغيرات (يمكن اختيار أكثر من إجابة ) ؟ -11بفرض إن x=1ما هي قيمة xبعد تنفيذ : x+=2 -12ما هي قيمة Xبعد تنفيذ العملية اآلتية ؟ إلا كانت : -13ما هي نتيجة تنفيذ البرناما التالي ؟ 76 -14ما هي النتيجة التي سوف يتم طبعها على الشاشة ؟ -15أي العبارات اآلتية تقوم بطباعة اآلتي (:)Ahmed\exam1\test.txt 77 -16بفرض أننا نريد إدخال قيمة عدد صحيح من لوحة المفاتيح عن طريق استخدام العبارة اآلتية ;)Scanner input = new Scanner(System. in ما هي الطريقة المستخدمة فيما يلي لقراءة العدد الصحيح : -17أكتب برناما يقوم بطباعة الشكل التالي : – 18ما هو ناتا تنفيذ البرناما التالي ؟ 78 -19أكتب برناما يقوم بطباعة األعداد الفردية على الشاشة في صف واحد بدءا من (1 إلى .)51 -21أكتب برناما يقوم بعمل مقارنة بين مصفوفتين من النوع ,charإلا كانت كال من المصفوفتين تحتوي على القيم اآلتية: }'.{'d','h','r','f –21قم بحسان قيمة المضرون لعدد صحيح يتم إدخال من لوحة المفاتيح. -22قم بحسان مجموع القيم التالية باستخدام مصفوفة من النوع : int ))55, 34, 57, 90, 10 مع تمنياتي للجميع بالتوفيق. د.عميد صالح غازي المراجع: البرمجة بلغة جافا /ترجمة ./ 2117 البرمجة غرضي التوج باستخدام حافا /ترجمة ./ 2116 محاضراتي وهي موجودة على الموقع. المواد االلكترونية و مواقع االنترنت ...الخ: موقعي الشخصي الفريق العربي للبرمجة موقع كتب http://faculty.ksu.edu.sa/dr-ameed http://www.arabteam2000-forum.com http://www.kutub.info/library/category/23# 79