You are on page 1of 80

‫ﺗﻢ ﺗﺤﻤﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﻣﻮﻗﻊ‬

‫اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ‬
‫‪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‬‬

‫شرح ألهم مميزات لغة الجافا كما لكرناها في النقاط السابقة ‪:‬‬

‫‪Java Is Platform‬‬ ‫‪- 1‬لغة الجافا غير مرتبطة ب نظمة التشغيل المختلفة‬
‫‪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 method‬‬ ‫‪main‬‬

‫‪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‬‬ ‫‪ -‬يمكن أن يحوى اإلشارة ( ‪ +‬أو ‪.) -‬‬
‫مثال (‪).. ،-67.99 ،10.55 ،421.5‬‬ ‫مثال (‪.)..........،-20 ،1000 ،12 ،0‬‬
‫تصنف األعداد الصحيحة في لغة الجافا حسب طولها والسعة التخزينية لها في الذاكرة كما يلي ‪-:‬‬
‫تسمى ثوابت صحيحة طويلة ‪.long int‬‬ ‫‪ -‬الثوابت الصحيحة ( ‪)40000 ،19679‬‬
‫تسمى ثوابت صحيحة قصيرة ‪.short int‬‬ ‫‪ -‬الثوابت (‪) 55 ، 90 ،-16‬‬
‫تسمى ثوابت صحيحة بدون إشارة ‪.unsigned int‬‬ ‫‪ -‬الثوابت (‪) 967 ، 20000‬‬

‫‪12‬‬
‫الرمزية ‪:Non-Numeric‬‬ ‫الثواب‬ ‫‪-2‬‬
‫وهى عبارة عن رموز اللغة وتتكون من الحروف واألرقام وتكون بين عالمتي تنصيص أو اقتباس‪.‬‬
‫ومن األمثلة على الثوابت الرمزية ما يلي‪-:‬‬
‫)" ‪)"name" - "Khaled" - "12345" - "30+40‬‬
‫وإلا أردنا أن نضع قيمة سوف تظل ثابتة داخل البرناما في مكان في الذاكرة ف ننا‬
‫نستخدم العبارة ‪ final‬لإلعالن أن هذه القيمة ستظل ثابتة طوال تنفيذ البرناما مثل‪:‬‬

‫;‪final int TABLE_SIZE = 41‬‬

‫;‪final float PI = 3.14159‬‬

‫ويجب مراعاة أن اسم الثوابت ‪ constants‬يكون باألحرف الكبيرة كامال و يفصل بين الكلمات كما يتم‬
‫في المتغيرات مع مالحظة أن الثوابت يتم تعريفها على أنها ‪. final‬‬
‫مثال ألسماء الثوابت ‪:‬‬
‫‪LEFT‬‬ ‫‪EXIT_ON_CLOSE‬‬
‫‪CENTER‬‬ ‫‪MY_NAME‬‬
‫‪BOTTOM‬‬ ‫‪CLASS_VERSION‬‬
‫‪TOP‬‬ ‫‪MATH_PI‬‬
‫ثانيا ‪ :‬المتغيرات ‪:Variables‬‬
‫هي عبارة عن أسماء تحجز مواقع في الذاكرة حتى يتمكن البرناما من تخزين‬
‫البيانات فيها‪.‬‬
‫هي عبارة عن وعاء يمكن تحميل بقيمة وهذا الوعاء يتغير حجم حسب القيمة التي سوف توضع في ‪.‬‬
‫قواعد تسمية المتغيرات‪:‬‬
‫‪ -‬يمكن أن يبدأ ادسم بالحرف أو الشرطة السفلية ( _ ) ‪ under score‬أو عالمة الدودر (‪ )$‬ولكن د يمكن بدء‬
‫التسمية برقم ولكن يمكن أن نضع رقم بعد الحرف‪.‬‬
‫‪ -‬د يمكن تسمية المتغير بإحدى الكلمات المحجوزة‬
‫للغة الجافا والجدول شكل (‪ ) 6-1‬يبين هذه الكلمات ‪.‬‬
‫‪ -‬اسم المتغيرات ‪ variables‬يكون باألحرف الصغيرة‬
‫لكل األحرف ويالحظ عدم وجود أقواس‪.‬‬

‫‪13‬‬
‫أنواع المتغيرات‬
‫‪Primitive Variables‬‬ ‫‪ – 1‬متغيرات أساسية‬
‫ب ‪ -‬متغيرات عددية‪.‬‬ ‫أ ‪-‬متغيرات رمزية (حرفية)‪.‬‬
‫‪Reference Variables‬‬ ‫‪ – 2‬متغيرات مرجعية‬

‫يجب اإلعالن عن المتغير قبل استخدام‬


‫كما يجوز تعريف المتغير وتخصيص قيمة ل فى نفس الوقت كالتالي‪:‬‬

‫أ‪ -‬المتغيرات الحرفية ‪:Char‬‬


‫وتتضمن الحروف بكافة أشكالها والرموز والفراغات (مسافة فارغة) مثل‪:‬‬
‫;‪char a,b‬‬
‫;‪a= 'a'; char var1‬‬
‫;' '=‪b‬‬ ‫; ' '=‪var1‬‬
‫أ ‪ -‬المتغيرات العددية ‪:Numeric Variables‬‬
‫أ) المتغيرات العددية الصحيحة ‪:Integer‬‬
‫تتضمن قيم عددية صحيحة يمكن أن ت خذ قيمة تصل إلى ‪ 32767‬وتكتب على الشكل التالي‪:‬‬
‫;‪int a‬‬ ‫;‪a=100‬‬
‫;‪int value ; value=2*3‬‬
‫ب) المتغيرات العددية الحقيقية ‪:Floating Point‬‬
‫تتضمن جميع األعداد الحقيقية وتكتب على الشكل التالي‪:‬‬
‫;‪float x‬‬ ‫;‪x=5.2‬‬
‫‪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 finally public
boolean float return
break for short
byte if static
case implements super
catch import switch
char instanceof synchronized
class int this
continue interface throw
default long throws
do native transient
double new true
else null try
extends package void
false private volatile
final protected while

17
‫الهدف من المحاضرة الرابعة ‪:‬‬
‫‪ – 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‬‬

‫‪Egypt‬‬ ‫وفي هذه الحالة يتم إلغاء السطر رقم (‪)4‬‬

‫‪22‬‬
‫‪ ‬أما الا أردنا طباعة عدة أسطر متتالية ب مر طباعة واحد فيتم للك بتكرار (‪)\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‬‬

‫وتكون المخرجات كالتالي‪:‬‬

‫‪One‬‬ ‫‪Two‬‬ ‫‪Three‬‬ ‫‪Four‬‬

‫مثال (‪ :)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‬‬

‫تشغيل البرنامج السابق‬

‫عند تشغيل البرناما السابق يظهر اآلتي ‪:‬‬


‫‪Enter first number‬‬ ‫‪- 1‬السطر األول يطلب منك إدخال الرقم األول‬
‫‪20‬‬ ‫وهنا تم إدخال العدد ‪.21‬‬
‫‪enter second number‬‬
‫‪30‬‬ ‫‪- 2‬السطر الثاني يطلب منك إدخال الرقم الثاني‬
‫‪The sum is = 50‬‬

‫‪32‬‬
‫وهنا يتم إدخال العدد ‪.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‬‬
‫ونالحظ أننا استبدلنا جملة الطباعة ‪ print‬بجملة اإلدخال في البرناما السابق‪ .‬ونالحظ‬ ‫‪ :]4AA[Comment‬فعل استبدل ي تي بعده المستبدَل‬
‫ب ثم بعد حرف الباء ي تي المستبدَل‬
‫أننا أضفنا عالمة (‪ )\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‬‬

You might also like