You are on page 1of 240

‫جافا‬

Fundamentals of
Programming in Java
‫ح حقوق اإلعداد حمفوظة‪2006 ،‬م‪.‬‬

‫أُعد هذا الكتاب يف األصل كمقرر دراسي يف مادة‬


‫الربجمة كائنية التوجه (‪.)1‬‬

‫الطبعة األوىل‪2006 ،‬م‬

‫بطاقة فهرسة الكتاب أثناء اإلعداد للنشر‬


‫جحيش‪ ،‬أمحد جرب عبدربه‬
‫أس ا اااس ا ااياغ الربجمة ب غة جا ا‪ / .‬أمحد جرب عبدربه جحيش ‪ -‬ص ا اان ا ‪2006 ،‬م‬
‫‪ 238‬ص ؛ ‪ 17‬سم × ‪ 24‬سم (س س ة أساسياغ الربجمة؛ ‪)4‬‬
‫‪X-XXX-XXX-978‬‬ ‫ردمك‪:‬‬
‫‪ -1‬لغا ا ا ااة جا ا ا ا ااا ‪ -2‬لغا ا ا اااغ الربجما ا ا ااة ‪ -3‬الربجم ا ا ا ااة ‪ -4‬ع ا ا ا ااوم ا اسا ا ا ااوب‬
‫ب‪ .‬الس س ة‬ ‫أ‪ .‬ال نوان‬
‫‪2006/XXX‬‬ ‫‪005.133J‬‬ ‫ديوي‬

‫رقم اإليداع بدار الكتب‪2006/XXX :‬‬


‫‪XXX-XXX-X-978‬‬ ‫ردمك‪:‬‬

‫حقوق الطبع غري حمفوظة ويسمح بإعادة نشر الكتاب وتداوله‬


‫بشرط عدم التغيري يف احملتوى أو بيانات املُعد‬
‫ودعوة صادقة له ولوالديه بظهر الغيب‬
‫للتواصل وإبداء املالحظات واآلراء‬
‫‪ahmad.jbr@gmail.com‬‬
‫‪00967-73549637‬‬
‫أساسيات الربجمة بلغة‬

‫جافا‬
‫‪Fundamentals of Programming in‬‬
‫‪Java‬‬

‫مدرس الربجمة كائنية التوجه ‪ ،OOP‬كلية العلوم واهلندسة ‪ -‬جامعة العلوم والتكنولوجيا ‪ -‬صنعاء‬
‫مدرس أسس لغات الربجمة ‪ - Essentials of Programming Languages‬اجلامعة الوطنية ‪ -‬صنعاء‬
‫مؤسس ونائب مدير شركة ‪ Skytech‬للحلول الذكية وتكنولوجيا املعلومات‬
             

           

     


77 :‫القصص‬

 ‫قال رسول اهلل‬


 ِ‫طرِيقًا ِإلَى ا ْلج ََّنة‬
 َ ‫اللهُ َل ُه‬
َّ ‫طرِيقًا َي ْلتَمِسُ فِي ِه ِعلْمًا سَهَّ َل‬ َ ْ‫ َمن‬
َ ‫سلَ َك‬

‫رواه الترمذي‬
‫اإلهداء‬
‫إىل والديت حفظها اهلل‬
‫إىل والدي رمحه اهلل‬
‫إىل زوجيت وابنيت ملك‬
‫إىل إخويت وأخوايت ‪،،،‬‬

‫الشكر والتقدير‬
‫أ‪ .‬فيصل مسعود‬
‫أ‪ .‬أمحد عبد العظيم‬
‫أ‪ .‬عبد اهلل املصباحي‬

‫م‪ .‬أمحد جرب‬


‫الفصل األول‪ :‬مقدمة إىل لغة جافا‬
‫متهيد‪3 ........................................................................... :‬‬
‫اإلصدارات املختلفة للجافا‪7 ...................................................... :‬‬
‫مقدمة عن بيئة ‪9 ............................................................:Java‬‬
‫لغة ‪9 ............................................................................ :Java‬‬
‫مكتبات الفئات (األصناف) اخلاصة بالـ‪10 ........................................ :Java‬‬
‫بيئة تشغيل ‪11 .................................................................. :Java‬‬
‫آلة ‪ Java‬االفتراضية ‪12 ....................................... :Java Virtual Machine‬‬
‫أدوات ‪13 ........................................................................ :Java‬‬
‫البُرميجيات ‪14 ..........................................................:Java applets‬‬
‫تطبيقات ‪15 ..................................................................... :Java‬‬
‫برامج ‪ Java‬األخرى‪16 ................................................................:‬‬
‫توصيف ‪18 .................................................................. :Java‬‬
‫لغة بسيطة‪19 ........................................................................:‬‬
‫لغة برجمة كائنية التوجه ‪22 ...................................... :Object-Oriented‬‬
‫لغة موزعة‪26 ........................................................................ :‬‬
‫لغة مفسّرة (حموّلة)‪28 ............................................................... :‬‬
‫لغة قوية‪29 ..........................................................................:‬‬
‫لغة آمنة‪30 .......................................................................... :‬‬
‫لغة تستطيع العمل على أي نظام تشغيل‪34 ............................................ :‬‬
‫مستوى مرتفع من األداء‪38 ........................................................... :‬‬
‫لغة تستطيع تنفيذ عمليات متعددة يف نفس الوقت‪39 ................................. :‬‬
‫لغة ديناميكية‪42 ..................................................................... :‬‬
‫الكلمات األساسية (املفتاحية) ‪44 ..................................:Java Keywords‬‬
‫الفصل الثاين‪ :‬مقدمة إىل تطبيقات اجلافا‬
‫برناجمك األول يف لغة ‪45 .................................................... :Java‬‬
‫حتليل الربنامج‪46 .....................................................................:‬‬
‫ترمجة الربنامج‪50 ................................................................... :‬‬
‫استخدام املحرر ‪52 .......................................................... :Kawa‬‬
‫أمثلة وحاالت للتعامل مع اخلرج‪53 .................................................... :‬‬
‫عرض النصوص يف صناديق احلوار ‪55 ...............................:Dialog Boxes‬‬
‫ختصيص مربع احلوار ‪58 ............................................. :MessageDialog‬‬
‫حجز املواقع يف الذاكرة وختصيص قيم هلا‪60 ......................................:‬‬
‫أمساء املتغريات‪63 ................................................................. :‬‬
‫أمناط البيانات يف ‪65 ......................................................... :Java‬‬
‫التصريح عن املتغري‪67 ............................................................. :‬‬
‫تعيني القيم للمتغريات‪67 .......................................................... :‬‬
‫العمليات احلسابية ‪68 ................................................. :Arithmetic‬‬
‫عمليات املساواة واملقارنة ‪69 .................... :Equality & Relational Operators‬‬
‫عمليات اإلسناد املختصرة ‪72 ............................. :Assignment Operators‬‬
‫عمليات الزيادة واإلنقاص بواحد ‪74 .......... :Increase & Decrement Operators‬‬
‫متارين الفصل الثاين‪76 ............................................................:‬‬

‫الفصل الثالث‪ :‬مقدمة إىل بُرميجيات جافا‬


‫مقدمة‪79 ......................................................................... :‬‬
‫أمثلة على الربميجيات وإمكانياهتا‪81 ...............................................:‬‬
‫الربميج ‪ Applet‬األول يف لغة ‪82 .............................................. :Java‬‬
‫تنفيذ الربميجيات‪86 .............................................................. :‬‬
‫دورة حياة الربميج‪90 ..............................................................:‬‬
‫رسم اخلطوط واستخدام سالسل اهلروب‪91 ........................................ :‬‬
‫استخدام الربميجيات يف التعامل مع أعداد النقطة العائمة‪93 ...................... :‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫تنفيذ الربميج بطريقة أبسط‪97 ...................................................:‬‬
‫متارين الفصل الثالث‪99 ........................................................... :‬‬

‫الفصل الرابع‪ :‬بُىن التحكم‬


‫مقدمة‪101 ....................................................................... :‬‬
‫اخلوارزميات ‪101 ..................................................... :Algorithms‬‬
‫لغة اخلوارزميات (الشفرة الزائفة) ‪102 ............................. :Pseudocode‬‬
‫بىن التحكم ‪102 ............................................. :Control Structures‬‬
‫البنية التسلسلية ‪103 .......................................:Sequence Structure‬‬
‫لغة النمذجة املوحدة ‪104 ...................... :UML Universal Modeling Language‬‬
‫بنية االختيار ‪106 .......................................... :Selection Structure‬‬
‫بنية التكرار ‪107 .......................................... :Repetition Structure‬‬
‫أسلوب الربجمة املُهيكلة ‪109 .......................... :Structured Programming‬‬
‫قواعد تشكيل برامج مُهيكلة‪109 .......................................................:‬‬
‫بنية االختيار ‪( if‬البنية وحيدة االختيار ‪111 ........ :)Single-selection structure‬‬
‫بنية االختيار ‪( if/else‬البنية مضاعفة االختيار ‪114 :)Double-selection structure‬‬
‫املعامل الشرطي ‪117 .......................................:Conditional Operator‬‬
‫التعليمات الشرطية املتداخلة ‪118 ....................:Nested if/else Statements‬‬
‫بنية االختيار ‪( switch‬البنية متعددة االختيار ‪118 :)Multiple-selection structure‬‬
‫بنية التكرار ‪( for‬حلقة التكرار ذات العداد)‪121 .................................. :‬‬
‫بنية التكرار ‪132 ........................................................... :while‬‬
‫بنية ‪ while‬ذات العداد‪133 ........................................................... :‬‬
‫بنية ‪ while‬بدون عداد‪136 ........................................................... :‬‬
‫بنية التكرار ‪138 ....................................................... :do/while‬‬
‫التعليمتان ‪ break‬و‪140 ................................................. :continue‬‬
‫العمليات املنطقية (العبارات املنطقية املركبة)‪143 ................................. :‬‬
‫جدول احلقيقة اخلاص بالعملية املنطقية && «و ‪ »And‬املنطقية‪144 ..................:‬‬
‫جدول احلقيقة اخلاص بالعملية املنطقية || «أو ‪ »Or‬املنطقية‪144 ................... :‬‬
‫جدول احلقيقة اخلاص بالعملية املنطقية ! «ليس ‪ »not‬املنطقية‪144 .................. :‬‬
‫متارين الفصل الرابع‪145 ..........................................................:‬‬

‫الفصل اخلامس‪ :‬الطُرق (التوابع)‬


‫مقدمة‪147 ....................................................................... :‬‬
‫أجزاء برنامج بلغة جافا )‪147 ........................ :(Program Modules in Java‬‬
‫فئة (مكتبة) الطرق الرياضية ‪149 .........................:Math-Class Methods‬‬
‫الطرق اجلاهزة‪150 .................................................................. :‬‬
‫املتغريات النهائية ‪151 ...................................... :Final Instance Variables‬‬
‫التصريح عن الطرق ‪156 .................................. :Method Declarations‬‬
‫الشكل العام للتصريح عن طريقة ‪159 :General Format of a Method Declaration‬‬
‫مناذج الطرق املعرفة‪ :‬الطريقة ‪162 ....................................... :Maximum‬‬
‫قسر الوسطاء ‪164 ........................... :Argument Promotion or Coercion‬‬
‫توليد األعداد العشوائية ‪165 .................... :Random-Number Generation‬‬
‫قواعد جمال الرؤية ‪171 ............................................ :Scope Rules‬‬
‫التحميل الزائد للطرق ‪174 ................................ :Method Overloading‬‬
‫االستدعاء الذايت (العودية) ‪178 ...................................... :Recursion‬‬
‫متارين الفصل اخلامس‪185 ........................................................:‬‬

‫املالحق‬
‫امتحان هنائي منوذج (‪187 ....................................................... )1‬‬
‫امتحان هنائي منوذج (‪191 ....................................................... )2‬‬

‫أهم املصادر واملراجع‬


‫أوالً‪ :‬أهم املصادر واملراجع العربية‪195 ............................................:‬‬
‫ثانيًا‪ :‬أهم املصادر واملراجع األجنبية‪198 ......................................... :‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪‬‬
‫ددد عربددد للمددد‬ ‫إن اهلددددد مددددك اددد ا الكتدددداب اددددو تددددو ري مر ددددع تعليمددد م‬
‫دددة بلغدددة‬ ‫ال‬ ‫دددة كائ يدددة التو ددده‪ ،‬وادددو يسدددعع إىل تعلددديم م أادد‬ ‫وخاصدددة دارادد ال‬
‫ا دددا‪ ،‬وعلدددع الدددرغم مدددك أن اخلد د ة يف اادددتمدام لغدددة ‪ C‬أو ‪ C++‬ليسدددر ردددرورية؛ إال أن دددا‬
‫ددددة ألو‬ ‫ددددا ال‬ ‫ادددتكون مفيدددددة‪ ،‬إذ يتعامددددل الكتددداب مددددع القددددارجم علددددع أنددده يبدددددأ‬
‫اإل دددارات ا دددا وا دددا لد دبع‬ ‫دددل الكتددداب مدددك بعد د‬ ‫مدددرة مدددع لغدددة ا دددا‪ ،‬كمدددا‬
‫املقارنات ب لغة ا ا وغرياا مك اللغات امل تشرة‪.‬‬
‫موعدددة مدددك املوارددديع األااادددية؛‬ ‫وحندددك نسدددعع مدددك خدددال ادد ا الكتددداب إىل تغطيدددة‬
‫اليت ميكك إيراداا يف اآلت ‪:‬‬
‫• املفا اااهيم األساسا ااية يف لغا ااة جا ا ااا؛ وأها اام صهائها ااها وويكانها ااا ومكو انها ااا‪ ،‬م ا ا‬
‫مدصل مفاهيمي ل ربجمة كائنية التوجه‪.‬‬
‫بُرميجيا اااغ جا ا ااا؛ و مكا يانها ااا ودورة‬ ‫• بنا ااا ون ا ااوير ن بيقا اااغ جا ا ااا ومقدما ااة‬
‫حيانها وطرق ننفيذها‪ ،‬م بذة خمتهرة عن استخدام احملرر ‪.Kawa‬‬
‫• الت اما ا اال م ا ا ا صا ا اارإ الا ا ااربام وننسا ا اايقه و دارنا ا ااه‪ ،‬وحجا ا ااك املواق ا ا ا يف الا ا ااذاكرة‬
‫واملتغرياغ وأمناطها وصهائهها‪.‬‬
‫• طا اارق ادسا ااناد و جا اارا ال م يا اااغ ا سا ااابية وعم يا اااغ املقار ا ااة وعم يا اااغ الكيا ااادة‬
‫واد قاص‪ ،‬وال م ياغ املن قية‪.‬‬
‫• أساسياغ الرسم يف لغة جا ا‪.‬‬
‫• الت رف ع ى اخلوارزمياغ ولغتها (الشفرة الكائفة) ‪.Pseudocode‬‬
‫ظا ا ا اارة لا ا ا ااام ة حا ا ا ااو ُبنا ا ا ااى الا ا ا ااتحكم األساسا ا ا ااية ( ُبنا ا ا ااى ااصتيا ا ا ااار والتكا ا ا اارار)‪،‬‬ ‫•‬

‫والت يمتان ‪ break‬و‪ continue‬و مكا يانهما‪.‬‬


‫• أس وب الربجمة املهيك ة ‪.Structured Programming‬‬
‫بذة خمتهرة عن لغة النمذجة املوحدة ‪.UML‬‬ ‫•‬

‫• اسا ااتخدام ال ا اارق والتواب ا ا ا ا اااهكة وال ا اارق الريا ا ااية امل ا اامنة وبنا ااا ون ا ااوير‬
‫ال رق والتواب اخلاصة‪.‬‬
‫ا ا ا اارق ‪Method-‬‬ ‫• قواعا ا ا ااد جما ا ا ااا الر يا ا ا ااة ‪ ،Scope-Rules‬والتحميا ا ا اال الكائا ا ا ااد ل‬
‫‪ ،Overloading‬وااستدعا الذاني (ال ودية) ‪.Recursion‬‬
‫يدددة املقدمد دة مدددك‬ ‫ولتحقيد د اد دد اد د ا الكتددداب قدددد اعتمددددنا علدددع األادددلوب وامل‬
‫قبددددل كتدددداب «‪ »Java How to Program 5th ed.‬كمر ددددع أاااددد يف املواردددديع‬
‫الددده ‪ -‬حسدددب علم ددددا‬ ‫واألمثلدددة املقدمدددة نظدددرا ألنددده ميثدددل أقددددوى امل ددداا التعليميدددة يف‬
‫‪ -‬باإلرددددا ة إىل االاددددتعانة بالعديددددد مددددك املرا ددددع العربيددددة واأل بيددددة إل ددددراء اددد املددددادة‬
‫العلمية‪.‬‬
‫ددددة كائ يددددة‬ ‫وقددددد أُعددددد ادد د ا الكتدددداب يف األاددددام كمقددددرر دراادد د يف مددددادة ال‬
‫التو ددده ‪ ) 1‬لطلبدددة مسدددتوى دددان يف قسدددم علدددوم اياادددوب واملعلوماتيدددة‪ ،‬و لبدددة مسدددتوى‬
‫رابع يف قسم اهل داة اإللكرتونية‪.‬‬
‫ددددة كائ يددددة التو دددده‪ ،‬خاصددددة وأن لغددددة‬ ‫والكتدددداب يقدددددم مدددددخالً أااادددديا إىل ال‬
‫ا ددددا قددددد ب يددددر أاااددددا كلغددددة كائ يددددة‪ ،‬ونظددددرا للحا ددددة للتواددددع يف ادددد ا املورددددوع‬
‫واقتصددددار ادددد ا الكتدددداب علددددع «أساسا ااياغ الربجما ااة ب غا ااة جا ا ااا»؛ قددددد قم ددددا بإعددددداد‬
‫كتددددداب كخدددددر ميكددددددك اعتبدددددار اذدددددداء الثدددددان أو املكمدددددل هلددددد ا الكتددددداب بع ددددددوان‪:‬‬
‫«أساسياغ الربجمة كائنية التوجه باستخدام لغة جا ا»‪.‬‬
‫مدددددك اددد د املدددددادة‬ ‫وأخدددددريا‪ ،‬إن دددددا ن مدددددل أن يسدددددتفيد األخدددددوة الدارادددد واملدددد‬
‫العلمية‪ ،‬وأن يتقبله اهلل خالصا لو ه الكريم وأن ي فع به كل الب علم ومعر ة‪.‬‬
‫واهلل مك وراء القصد ‪،،،‬‬
‫م‪ .‬أمحد جرب‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪Introduction to Java‬‬
‫متهيد‪:‬‬

‫لغددددة ‪ Java‬اددد مددددك اللغددددات ايديثددددة إذ أنت ت ددددا ددددركة ‪ Sun Microsystems‬عددددام‬
‫‪ .1995‬قامدددددددر دددددددركة صدددددددك باادددددددتمدام ‪ Java‬يف العديدددددددد مدددددددك‬
‫تصددددبح ‪Java‬‬ ‫املشددددروعات إلظ ددددار إمكانيات ددددا الكددددبرية‪ ،‬ولكددددك‬
‫حمددددددا األنظددددددار أو مورددددددع االاتمددددددام إال بعددددددد ظ ددددددور املسددددددتعر‬
‫‪ HotJava‬قددددددد قامددددددر ددددددركة صددددددك بكتابددددددة ‪ HotJava‬بسددددددرعة‬
‫إلظ دددددار دددددودة وقددددددرة ‪ Java‬علدددددع التعامدددددل مدددددع اإلنرتندددددر ولتورددددديح‬
‫در ددددة تعقيددددد التطبيقددددات الدددديت ميكددددك تطويراددددا‪ .‬كددددان اإلصدددددار‬
‫‪ Netscape‬بال سدددددبة لل ظدددددام ‪ )Windows‬ادددددو أو متصدددددفح‬ ‫الثدددددان مدددددك ‪Navigator‬‬

‫جتددددارع يدددددعم ‪ ،Java 1.0‬وتددددال بعددددد ذلددددك ‪ .Internet Explorer‬ع دددددما ت ااددددتمدام‬
‫احدد دا كددددبريا‪ .‬صددددممر لغددددة ا ددددا أااادد دا كدد د‬ ‫‪ Java‬علددددع ددددبكة الويددددب حققددددر‬
‫تكددون مسددتقلة عددك حمدديا التشددغيل‪ ،‬وقددد ع د ت عددك ذلددك ددركة ‪ Sun‬مببدددأ « ‪write‬‬

‫‪»once,‬‬ ‫‪run‬‬ ‫‪everywhere‬‬

‫أع «اكتدددب ملدددرة واحددددة و دددغل‬


‫أي ما ك ر»‪.‬‬

‫ويتطلددددددددب جتسدددددددديد ادددددد د ا‬


‫املبدددددددأ تعريدددد د و قيدددد د مددددددا‬
‫نسددددميه بجلددددة ا ددددا اال رتارددددية‬
‫لدددده تعليماتدددده‬ ‫دددداك عمددددل معددددا‬ ‫)‪ ،Java Virtual Machine (JVM‬وادد د اآللددددة‬
‫قيددد اددد اآللدددة علدددع م صدددات عمدددل مت وعدددة ب قدددل بدددرام‬ ‫اخلاصدددة‪ ،‬و يددد يسدددمح‬
‫ا ا الت في ية مك حميا تشغيل إىل كخر وتشغيل ا دون ايا ة لتعديل ا‪.‬‬

‫ملفات مصدرية‬ ‫ملفات فرة‬


‫بايتية ‪:ByteCode‬‬ ‫كلة ا ا اال رتارية ‪ ،JVM‬برنام‬
‫بلغة ا ا‪:‬‬
‫‪.class‬‬ ‫داعم لل ا ا‪.‬‬ ‫ااتعرا‬
‫‪.java‬‬

‫ملفات مصدرية‬ ‫برنام ت في ع‬


‫بلغة بر ة مثل‬ ‫‪Binary‬‬ ‫بلغة اآللة‬
‫‪:C++‬‬ ‫‪:Code‬‬ ‫‪PC‬‬ ‫از كمبيوتر مص‬ ‫عتاد‬
‫‪.cpp‬‬ ‫‪.EXE‬‬

‫تدددددوع علدددددع‬ ‫ذات االمتدددددداد ‪class‬‬ ‫ترمدددددة ملفدددددات املصددددددر ذات االمتدددددداد ‪ java‬يدددددىلدع إىل ملفدددددات خدددددر‬
‫الدددداعم لل ا دددا بتحميدددل تلدددك‬ ‫تعليمدددات دددفرة ا دددا البايتيدددة ‪ .ByteCode‬ومدددك دددم يقدددوم برندددام االادددتعرا‬
‫التعليمات وت في اا‪.‬‬

‫أع أندددده ع ددددد ترمددددة ال نددددام ي ددددت ملفددددات ددددفرة اذا ددددا البايتيددددة ‪ .ByteCode‬إن املددددرور‬
‫دم ال ة أادا ‪:‬‬ ‫علع كلة ا ا اال رتارية‬

‫ااس ااتقةلية ع اان ا ل ااة‪ :‬ت تصدددميم ‪ JVM‬خاصدددة بكدددل ندددوع كمبيدددوترات علدددع حددددة‬ ‫•‬

‫ويددددل الشددددفرة البايتيددددة إىل‬ ‫ولكددددك اهلددددد األاااددد مددددك كددددل اددد ال سددد اددددو‬
‫فرة بلغة تلك اآللة اليت يعمل ال نام علي ا‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ال ندددددددددام‬ ‫كتابدددددددددة نددددددد د‬
‫املرحلة األوىل‬ ‫حمرر نصوص‬ ‫القرص‬ ‫باادددددتمدام حمدددددرر نصدددددو‬
‫ددددددددددددددايك امللددددددددددددد‬ ‫ددددددددددددددم‬
‫باالمتداد‪java.‬‬

‫املرحلة الثانية‬ ‫املرتجم‬ ‫املرت دددم يقدددوم بإنشددداء ملدد‬


‫القرص‬
‫دددفرة بايتيدددة و دددان امللدد‬
‫الذاكرة الرئيسية‬ ‫باالمتداد‪class.‬‬

‫املرحلة الثالثة‬ ‫حتميل الصنف‬ ‫أع قددددراءة‬ ‫ميددددل الصدد د‬


‫االمتددددددددداد‪class.‬‬ ‫امللدددددد د ذو‬
‫الدد ع وتدددوع علددع الشدددفرة‬
‫القرص‬ ‫‪.‬‬
‫البايتيددددددددددددددة وورددددددددددددددعه يف‬
‫الداكرة‬
‫‪.‬‬

‫الذاكرة الرئيسية‬
‫التحقق من الشفرة البايتية املرحلة الرابعة‬
‫التحق مك صحة‬
‫الشفرة الث ائية وال‬
‫روط األم ية‬ ‫ق‬
‫‪.‬‬ ‫املطلوبة أم ال‬

‫‪.‬‬

‫الذاكرة الرئيسية‬ ‫يقدددددوم املفسحدددددر بتحويدددددل‬


‫املرحلة اخلامسة‬ ‫املفسّر‬ ‫الشددددددددفرة البايتيددددددددة إىل‬
‫ددددفرة ميكددددك م ددددا‬
‫مددك قبددل اآللددة الدديت يددتم‬

‫‪.‬‬
‫تشدددغيل ال ندددام علي دددا‬
‫يددد ميكدددك معاملدددة‬
‫‪.‬‬
‫ال نددام علددع أندده مل د‬
‫ت في ع‬
‫بيئة عمل ا ا مثالية‬
‫قيددد أع مسددددتوى معقددددو مددددك‬ ‫ا مايا ااة‪ :‬لقددددد أظ ددددرت اخلددد ة كددددم مددددك الصددددعب‬ ‫•‬

‫ايمايددددة للدد د ام ‪ .‬املددددا كددددان ت فيدد د ال نددددام يددددتم يف وحدددددة املعاذددددة املركايددددة‬
‫ميكددددك‬ ‫‪ CPU‬يف الدد د ما احمللدد د ‪ ،‬ددددإن أع خطدد د يف ال ظددددام أو برنددددام االاددددتعرا‬
‫يبحددد عددددك ريقددددة للدددددخو إىل كلددددة املسددددتمدم‪ .‬إن بددددرام‬ ‫أن يكشددددفه أع ددددم‬
‫ندددددام اذا دددددا يدددددتم ت فيددد د ردددددمك كلدددددة ا دددددا‬ ‫اذا دددددا ال ذلدددددك اددد د املروندددددة‪.‬‬
‫اال رتاردددددية الددددديت أنشددد د اا برندددددام االادددددتعرا ‪ .‬و يلدددددة دددددرتة ت فيددد د ال ندددددام ‪،‬‬
‫حاردددرا دائمدددا ليشدددر علدددع عمليدددة الت فيددد للت كدددد‬ ‫يكدددون برندددام االادددتعرا‬
‫ال نام ألع أذى‪.‬‬ ‫مك عدم تعر‬

‫حج اام ب اارام خمفا ا ‪ :‬إن بدددرام كلدددة ا دددا اال رتاردددية أصدددغر بكدددثري مدددك الد د ام‬ ‫•‬

‫التقليديدددددة‪ .‬والسدددددبب ادددددو أن توابدددددع مكتبدددددات اذا دددددا الددددديت يسدددددتدعي ا برنا دددددك‬
‫وليسددددددر مرتبطددددددة بال نددددددام ‪ .‬يددددددىلدع اددددد ا إىل‬ ‫متوا دددددددة يف برنددددددام االاددددددتعرا‬
‫الوقدددددر املطلدددددوب‬ ‫فددد د‬ ‫دددددا‬ ‫ح دددددم بدددددرمي اذا دددددا إىل حدددددد كدددددبري‬ ‫فدددددي‬
‫ميددددل‬ ‫اذا ددددا وقددددر التحميددددل مددددك خددددال‬ ‫فدد د‬ ‫للتحميددددل‪ .‬باإلرددددا ة إىل ذلددددك‪،‬‬
‫ميدددل الشدددفرات البايتيدددة الددديت تولدددداا ئدددة‬ ‫تدددا إلي دددا قدددا ال يدددتم‬ ‫األمدددور الددديت‬
‫ما إال ع دما وتا إلي ا ال نام )‪.‬‬

‫ي دددا لغدددة‬ ‫دددة حمدددررات وبدددرام تطبد د‬ ‫إن هلد د اللغدددة مثدددل بددداق لغدددات ال‬ ‫تلمي ي ي ي ي يي‬
‫‪ Java‬واددد م ت دددة مدددك قبدددل دددركة‬ ‫دددا )‪Developer Kit (JDK‬‬ ‫ا دددا وم‬
‫‪ Visual‬مدددددك دددددركة‬ ‫ر‪Cofee ،‬‬ ‫‪ Visual‬مدددددك مايكروادددددو‬ ‫صدددددك‪J++ ،‬‬

‫اددددديمانتك‪ Jbuilder ،‬مدددددك بورالندددددد‪ Kawa ،‬مدددددك تدددددك ‪ -‬تدددددولا‪ ...،‬وبالتدددددال‬


‫ميك دددددك اختيدددددار البيئدددددة الددددديت ترغدددددب يف اادددددتمدام ا كمحدددددرر أااادددد‬
‫لديك‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫اإلصدارات املختلفة للجافا‪:‬‬

‫ددد ن ا ددد ن التق يددددات املتميدددداة األخددددرى‪ ،‬وددددد تطددددور دائددددم يف اذا ددددا‪ .‬ت إصدددددار‬
‫‪Software Development‬‬ ‫‪ Java‬والدديت تيددر يمددا بعددد‬ ‫)‪Development Toolkits (JDKs‬‬

‫‪ Toolkit‬األوىل يف م تصدددددد التسددددددعي ات‪ .‬عدددددد الوقددددددر تطددددددورت ‪ Java‬بصددددددورة‬ ‫)‪(SDK‬‬

‫ملحوظدددة مدددك بددددايات ا املتواردددعة كبيئدددة تعمدددل علدددع العديدددد مدددك نظدددم التشدددغيل وميكدددك‬
‫اادددددتمدام ا يف إنشددددداء الدددددد‪ Applets‬ال مي يدددددات بدددددرام ‪ Java‬الصدددددغرية الددددديت ميكدددددك‬
‫إدرا ددددا مبا ددددرة يف صددددفحات الويددددب) البسدددديطة والتطبيقددددات املسددددتقلة األوليددددة‪ ،‬إىل أن‬
‫أصبحر اليوم نظام تشغيل متكامل نادت به ركة صك‪.‬‬

‫وبد د لك أصدددبحر لغدددة ‪ Java‬املقيدددام الفعلد د لتطدددوير بدددرام اإلنرتندددر الددديت يسدددتمدم ا‬
‫حاليددا أكثدددر مدددك ادددتة مليدددون مدد م يف أحنددداء العدددا ‪ .‬ظ دددرت ال سدددمة ‪ 1.1‬مدددك ‪ Java‬بعدددد‬
‫األوىل بسددد وات قليلدددة وتلت دددا ال سدددمة ‪ 1.2‬والددديت ظ دددر مع دددا نظدددام التشدددغيل ‪ Java‬والددد ع‬
‫‪ Java‬اإلصدددددار الثددددان مددددك ‪ »Java‬يف أواخددددر عددددام‬ ‫‪2‬‬ ‫ددددارع «‪Platform‬‬ ‫محددددل االاددددم الت‬
‫‪ Java‬وادد أحدددد وأ ةدددل نسدددمة‬ ‫سدددمة ‪SE 6‬‬ ‫‪ .1998‬دددم تلت دددا ال سدددمة ‪ 1.3‬وصدددوالً إىل ال‬
‫ت في ية لد‪ Java 2 Platform‬وذتلك ا اإلصدارة ال وعيات التالية‪:‬‬

‫‪ :Java‬تقدددم ل ددا ا د ال سددمة كددل مددا حنتا دده إلنشدداء‬ ‫)‪2 Standard Edition (J2SE‬‬ ‫•‬

‫برمي يدددددددات وتطبيقدددددددات قويدددددددة باادددددددتمدام اإلصددددددددار الثدددددددان مدددددددك ‪ Java‬أل ددددددداة‬
‫الكمبيوتر الشمصية‪.‬‬

‫‪ :Java‬تسدددتمدم ادد ال سدددمة للتطبيقدددات امل مدددة علدددع‬ ‫)‪2 Enterprise Edition (J2EE‬‬ ‫•‬

‫مستوى الشركات‪.‬‬

‫‪ :Java‬صدددممر اد د ال سدددمة خصيصد دا الادددتمدام ا مدددع‬ ‫)‪2 Micro Edition (J2ME‬‬ ‫•‬

‫أ اة مثل التلفونات اخللوية وغرياا‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مقدمة عن بيئة ‪:Java‬‬

‫تددددوع علددددع الكددددثري مددددك‬ ‫تعتدددد ‪ Java‬تق يددددة ديدددددة معقدددددة وقويددددة‪ ،‬حيدددد أن ددددا‬
‫املفدددداايم‬ ‫الوا ددددات الدددديت تعمددددل معدددا مددددك أ ددددل إ دددداز امل ددددام‪ .‬واددد ورد يمددددا يلددد بعددد‬
‫األاااية‪:‬‬

‫لغة ‪:Java‬‬

‫ددددة الدددديت تعتمددددد علددددع الكائ ددددات وقددددد ورت ددددا‬ ‫إن لغددددة ‪ Java‬اددد إحدددددى لغددددات ال‬
‫دددركة صدددك‪ .‬وعلدددع الدددرغم مدددك أن هلد د اللغدددة د د ورا يف لغدددة ‪ ،C++‬إال أن دددا تعتد د إحددددى‬
‫لغددددة ‪ ،C++‬إن لغددددة ‪ Java‬تعتمددددد اعتمددددادا‬ ‫لغدددات تطددددوير الدد د ام اذديدددددة‪ .‬وعلددددع عكددد‬
‫يدددد تعمددددل علددددع أع بيئددددة تشددددغيل‬ ‫كليددددا علددددع ااددددتمدام الكائ ددددات وقددددد صددددممر‬
‫وت شئ برمي يات ‪ applets‬وتطبيقات ومعاذات‪.‬‬
‫مكتبات الفئات (األصناف) اخلاصة بالـ‪:Java‬‬

‫موعدددة قياادددية مدددك‬ ‫تد د ت كدددل األنظمدددة الددديت تسدددتطيع التعامد دل مدددع لغدددة ‪ Java‬مدددع‬
‫تددددوع علددددع قوالددددب الكائ ددددات امل شدد د ة مسددددبقًا‪ ،‬أو الفئددددات‪ ،‬والدددديت‬ ‫املكتبددددات الدددديت‬
‫مددددك ‪Java‬‬ ‫ااددددتمدام ا يف إنشدددداء الدددد ام ‪ .‬ويقدددددم اإلصدددددار الثددددان‬ ‫ميكددددك للمدددد‬
‫موعددددة مددددك قوالددددب الكددددود امل شدد د ة مسددددبقًا والدددديت ميك ددددك‬ ‫كال الفئددددات وكدد د لك‬
‫اخلاصددددة‬ ‫صيصددد ا توادددديع ا) خلدمددددة األغددددرا‬ ‫ااددددتمدام ا كمددددا اددد أو ميك ددددك‬
‫بددددك‪ .‬وتتددددا مكتبددددات الفئددددات القيااددددية اخلاصددددة بددددد‪ Java‬ألع م مددددة‪ ،‬مبددددا يف ذلددددك عمددددل‬
‫ال وا ددددد د وإنشددددددداء وا دددددددة االادددددددتمدام الرادددددددومية واملددددددددخالت‪/‬املمر ات واالتصدددددددا‬
‫الشددددبك ومددددا إىل ذلددددك‪ .‬إن مكتبددددات الفئددددات املواددددعة اخلاصددددة بددددد‪ Java‬تسددددمع أحياندد دا‬
‫ددددددات ‪Java‬‬ ‫دددددددد وا‬ ‫‪ ،Java‬ألن ددددددا‬ ‫‪Application‬‬ ‫‪Programming‬‬ ‫‪Interface‬‬ ‫)‪(API‬‬

‫ع د قيام م بإنشاء ال ام اخلاصة ب م‪.‬‬ ‫القيااية اليت تكون لدى امل‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫بيئة تشغيل ‪:Java‬‬

‫بعددددد أن تقددددوم بكتابددددة برنددددام بلغددددة ‪ ،Java‬ددددإن ت فيدد د الكددددود يتوقدد د علددددع بيئددددة‬
‫التشدددغيل‪ .‬تتد د ل بيئد دة التشدددغيل اخلاصدددة بدددد‪ ،Java‬والددديت تسدددمع أيةد دا ايكدددل ‪ ،Java‬مدددك‬
‫‪ Java‬وامددددا ميددددثالن معدد دا الوادددديلة لت فيدد د كددددود‬ ‫لغددددة ‪ Java‬و)‪Virtual Machine (JVM‬‬

‫‪ .Java‬ميكددددددك أن تعمددددددل بيئددددددة تشددددددغيل ‪ Java‬علددددددع أع نظددددددام تشددددددغيل‪ ،‬وادددد د أاددددددام‬


‫إمكانيدددات املعاذدددة املوزعدددة اخلاصدددة بدددد‪ ،Java‬كمدددا أن دددا متاحدددة أل د د ر نظد دم التشدددغيل‬
‫وأكثرادددددا دددددديوعا‪ .‬واآلن‪ ،‬تتددددددا بيئددددددة تشددددددغيل ‪ Java‬للمسددددددتمدم ال ددددددائ مددددددك خددددددال‬
‫متصدددددددفحات الويدددددددب مثدددددددل متصدددددددفح ‪ HotJava‬الدددددد ع قدمتددددددده دددددددركة ‪ Sun‬ومتصدددددددفح‬
‫‪.Netscape‬‬ ‫‪Communications‬‬ ‫ددددددركة ‪Corp‬‬ ‫‪ Netscape‬الدددد د ع قدمتدددددده‬ ‫‪Navigator‬‬

‫‪ Internet‬الددد د ع قدمتددددده دددددركة ‪ .Microsoft‬وتسدددددمح مثدددددل اددددد‬ ‫ومتصدددددفح ‪Explorer‬‬

‫ددددا مدددك ‪ ،Java‬وادددو‬ ‫بت ربدددة ادددوذ خدددا‬ ‫املتصدددفحات املتوا قدددة مدددع ‪ Java‬لأل دددما‬
‫‪.Java applet‬‬

‫علدددع الدددرغم مدددك أن اادددتمدام متصدددفحات الويدددب املتوا قدددة مدددع ‪ Java‬ادددو أ د د ر دددرق‬
‫اكتسدددداب اخلددد ة يف تق يددددة ‪ ،Java‬ددددإن اددد الطريقددددة ال تعددددد الطريقددددة الوحيدددددة‪ .‬حيددد‬
‫تتدددددا بيئددد دات تشدددددغيل مسدددددتقلة تسدددددمح للمسدددددتمدم ال دددددائ بتشدددددغيل تطبيقدددددات ادددددطح‬
‫املكتب غري املةم ة يف صفحات الويب‪.‬‬

‫يددد ت أحددددد اددددوذ مددددك ‪ ،Java‬واددددو اإلصدددددار الثددددان ‪ ،‬مددددع إحدددددى بيئددددات التشددددغيل‬
‫القويددددددة دددددددا واددددددو تسددددددتمدم ا لتطددددددوير واختبددددددار تطبيقددددددات ‪ Java‬اخلاصددددددة بددددددك‪.‬‬
‫‪ Java‬اجملانيددددة املقدمددددة مددددك‬ ‫وبااددددتمدام )‪2 Software Development Toolkit (SDK‬‬

‫تا ددددا لكتابددددة‬ ‫ددددركة ‪ ،Sun‬اددددو يكددددون مبت دددداو يددددديك كددددل أدوات ‪ Java‬الدددديت‬
‫وتصحيح أخطاء ونشر كل برام ‪.Java‬‬
‫آلة ‪ Java‬االفتراضية ‪:Java Virtual Machine‬‬

‫ديددددداا بشددددكل صددددحيح و ددددب‬ ‫‪ Java‬ادد د مواصددددفات ت‬ ‫‪Virtual‬‬ ‫إن ‪Machine‬‬

‫عليددددك إتباع ددددا ع ددددد كتابددددة كددددود ‪ .Java‬ويددددتم جتميددددع كددددل كددددود ‪ Java‬علي ددددا‪ ،‬واددد‬
‫املواصددددفات خاصددددة بكيفيددددة إنتدددددا الكددددود أ دددداء عمليدددددة جتميددددع ال نددددام ‪ ،‬وتسددددداعد‬
‫‪ Java‬علدددع ردددمان العمدددل علدددع أع‬ ‫ع يعمدددل يف بيئدددة ‪Virtual Machine‬‬ ‫كتابدددة الكدددود الدد‬
‫نظدددام تشدددغيل‪ ،‬علدددع الدددرغم مدددك ذلدددك ميك دددك أن تةدددمك عمدددل الكدددود علدددع أع نظدددام‬
‫ددددب أال‬ ‫تسددددتمدم أع كددددود داخلددد مددددرتبا ب ظددددام تشددددغيل بعي دددده كمددددا‬ ‫تشددددغيل إذا‬
‫يتةمك الكود عمليات داخلية خاصة ب ع نظام‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أدوات ‪:Java‬‬

‫موعدددة مدددك األدوات الددديت ذد د ح املد د‬ ‫تد د ت ‪ SDK‬املقدمدددة مدددك دددركة ‪ Sun‬مد دع‬
‫‪ Java‬علدددع‬ ‫‪ .Java‬وتشدددتمل األدوات املقدمدددة مدددع ‪2 SDK‬‬ ‫كدددل مدددا وتا ونددده لتطدددوير بدددرام‬
‫أداة جتميددددددع وحمددددددو وأداة إنشدددددداء للتعليمددددددات وأداة لتصددددددحيح األخطدددددداء‪ ،‬عددددددالوة علددددددع‬
‫موعدددة كدددبرية مدددك مكتبدددات الد د ام امل شد د ة مسدددبقًا والددديت تسدددتمدم إلنشددداء بدددرام‬
‫‪ Applet‬املالئمددددة الدددديت تسددددمح لددددك‬ ‫داة ‪Viewer‬‬ ‫‪ .Java‬عددددالوة علددددع ذلددددك‪ ،‬تدددداود ‪ SDK‬بدد د‬
‫املتصدددفحات مثدددل‬ ‫‪ Java‬خدددار متصدددفح الويدددب املتوا د د مدددع ‪ .Java‬بعد د‬ ‫بتشدددغيل ‪applets‬‬

‫‪ )Internet‬تسدددددددت لك املصدددددددادر بشدددددددكل‬ ‫‪ Netscape‬و‪Explorer‬‬ ‫‪ HotJava‬و‪Navigator‬‬

‫‪Applet‬‬ ‫تتسددددم ‪Viewer‬‬ ‫كددددبري وبالتددددال جتعددددل عمليددددة التطددددوير بطيئددددة للغايددددة‪ .‬يف حدد د‬
‫عددددل مددددك السددد ل اختبددددار ال مي يددددات ‪ Applet‬يف‬ ‫ددددا‬ ‫بصددددغراا واددددرعت ا وكفاءت ددددا‪،‬‬
‫مراحل مبكرة‪.‬‬
‫البُرميجيات ‪:Java applets‬‬

‫‪ Java‬اددد عبددددارة عددددك بددددرام صددددغرية ميكددددك إدخاهلددددا إىل صددددفحات الويددددب‬ ‫‪applets‬‬

‫أع متصددددفح‬ ‫مددددع لغددددة ‪Java‬‬ ‫تددددا اددد الددد ام إىل متصددددفح يتوا ددد‬ ‫مبا ددددرة‪ ،‬وبالتددددال‬
‫يشددددتمل بداخلدددده علددددع بيئددددة تشددددغيل ‪ Java‬حتددددع ميكددددك تشددددغيل ا) وتعتدد د ادد د الدد د ام‬
‫أ ددددااء مدد دك كددددود ‪ Java‬الت فيدد د ع والدددديت يددددتم تةددددمي ا يف مسددددت دات ‪ HTML‬بااددددتمدام‬
‫‪ Java‬يف صدددفحات الويدددب باادددتمدام‬ ‫‪2 applets‬‬ ‫دددب إدخدددا‬ ‫عالمدددة الرتميدددا >‪.<APPLET‬‬
‫عالمددددديت الرتميدددددا >‪ <OBJECT‬و>‪ ،<EMBED‬وع ددددددما يصدددددل أحدددددد املتصدددددفحات املعتمددددددة‬
‫علدددع ‪ Java‬إىل مثدددل اد د الصدددفحة‪ ،‬إنددده يقدددوم تلقائيد دا بت ايدددل الكدددود الت فيد د ع املشدددار‬
‫إليددده بعالمدددة الرتميدددا اخلاصدددة‪ .‬وع ددددما يصدددل الكدددود‪ ،‬تقدددوم بيئدددة تشدددغيل ‪ Java‬بت فيد د‬
‫داخل املتصفح‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫تلدد د ال مي يددددات ‪ Applets‬عددددك التطبيقددددات ألندددده ال ميكددددك تشددددغيل ا بدد د ات ا‪ ،‬بددددل‬
‫دددب تشدددغيل ا داخدددل أحدددد املتصدددفحات املتوا قدددة مدددع ‪ Java‬أو باادددتمدام أداة خاصدددة مثدددل‬
‫‪.Applet Viewer‬‬

‫تطبيقات ‪:Java‬‬

‫تعددددر تطبيقددددات الدد د ام املسددددتقلة املكتوبددددة بااددددتمدام لغددددة ‪ Java‬بااددددم تطبيقددددات‬


‫‪ .Java‬ميكدددك تشدددغيل مثدددل اد د التطبيقدددات علدددع ادددطح املكتدددب‪ ،‬خدددار البيئدددة املتوا قدددة‬
‫‪ .)Applet‬علددددع اددددبيل‬ ‫مددددع ‪ Java‬مثددددل متصددددفح الويددددب املعتمددددد علددددع ‪ Java‬أو أداة ‪Viewer‬‬

‫املثد دا ‪ ،‬يعتد د متصدددفح ‪ HotJava‬الد د ع قدمتددده دددركة ‪ Sun‬أحدددد تطبيقدددات ‪ Java‬املسدددتقلة‬


‫بالفعدددل والددد ع ميك دددك تشدددغيله علدددع ادددطح مكتدددب الكمبيدددوتر مثلمدددا تقدددوم بتشدددغيل‬
‫‪ Java‬قدددد القدددر يف البدايدددة كدددل االنتبدددا‬ ‫كخدددر‪ .‬وعلدددع الدددرغم مدددك أن ‪applets‬‬ ‫أع برندددام‬
‫‪ ،‬إال أن تطبيقددددات ‪Java‬‬ ‫ألن بإمكان ددددا مددد ح صددددفحات الويددددب اذامدددددة احملتددددوى التفدددداعل‬
‫قد حازت نصيب ا مك الش رة مبرور الوقر‪.‬‬
‫برامج ‪ Java‬األخرى‪:‬‬

‫علددددع الددددرغم مددددك أن ال مي يددددات ‪ applets‬والتطبيقددددات ادد د أ دد د ر األ ددددكا الدددديت‬


‫‪Java‬‬ ‫تو دددددد علي دددددا بدددددرام ‪ ،Java‬إال أنددددده ميكدددددك إنشددددداء األندددددواع األخدددددرى مدددددك بدددددرام‬
‫أيةا‪ ،‬مبا يف ذلك ‪ JavaBeans‬والد‪ Servlets‬واملعاذات‪.‬‬

‫إن ‪ JavaBeans‬ادددد د عبددددددارة عددددددك مكونددددددات بددددددرام ‪ Java‬الدددددديت ميكددددددك جتميع ددددددا‬
‫بشدددكل مرئد د دون ايا دددة ملد د م حمدددرت باادددتمدام أداة إنشددداء مرئيدددة‪ .‬وعلدددع عكد د‬
‫مع ددددا مددد م حمددددرت يف الددد ام الوظيفيددددة‪ ،‬يددددتم تصددددميم‬ ‫ددددب أن‬ ‫ئددددات ‪ Java‬الدددديت‬
‫‪ JavaBeans‬خصيصد دا لكد د يدددتم التعامدددل مع دددا بشدددكل مرئد د مدددك خدددال وا دددة مرئيدددة‬
‫‪ Visual‬وأدوات جتميددددع الددد ام املرئيددددة األخددددرى‪ .‬مثددددل‬ ‫ة لتلددددك اخلاصددددة بددددد‪Basic‬‬ ‫مشدددداب‬
‫«بددددربا» مكونددددات بددددرام ‪ JavaBeans‬معددددا علددددع‬ ‫ادددد األدوات تسددددمح لغددددري املدددد‬
‫مبسدددتوى الكدددود الد د ع اعتددددنا عليددده‬ ‫مسدددتوى مرئد د ‪ ،‬و ريرادددا مدددك التكامدددل اخلدددا‬
‫‪.‬‬ ‫باعتبارنا م‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫انددددب وحدددددة اخلدمددددة‪ ،‬أو‬ ‫ميك ددددا اعتبددددار الددددد‪ Servlets‬علددددع أن ددددا ‪ applets‬خاصددددة‬
‫تعمددل علددع وحدددة خدمددة الويددب بدددالً مددك متصددفح‬ ‫خددا‬ ‫علددع أن ددا بددرام ص دممر لغددر‬
‫‪Common‬‬ ‫‪Gateway‬‬ ‫‪ Java‬بددددددديالً ل صددددددو‬ ‫‪Servlets‬‬ ‫املسددددددتمدم ال ددددددائ ‪ .‬تعتددددد‬
‫رية الدددديت تكتددددب بلغددددة ‪ .PERL‬وميكددددك الددددتحكم يف الددددد‪Servlets‬‬ ‫‪ Interface‬الشدد د‬ ‫)‪(CGI‬‬

‫اندددب الوحددددة التابعدددة‬ ‫دددة املةدددم ة يف صدددفحات الويدددب اخلاصدددة‬ ‫مدددك خدددال أوامدددر ال‬
‫‪ Active‬الددديت قددددمت ا دددركة‬ ‫ة لتلدددك اخلاصدددة بدددد)‪Server Pages (ASP‬‬ ‫بطريقدددة مشددداب‬
‫‪.Microsoft‬‬

‫املعلومدددات الدددواردة و وهلدددا إىل‬ ‫املعاذدددات اد د أ دددااء خاصدددة مدددك كدددود ‪ Java‬تعدددا‬
‫كددددائك ميكددددك لبيئددددة ‪ Java‬ااددددتمدامه‪ .‬وعلددددع الددددرغم مددددك ااددددتمدام املعاذددددات بصددددفة‬
‫أاااددددية قددددا يف متصددددفح ‪ HotJava‬الدد د ع تقدمدددده ددددركة ‪ ،Sun‬ددددإن ادد د املعاذددددات‬
‫تورددددح كيدد د ميكددددك ااددددتمدام ‪ Java‬للتطددددوير الدددددي اميك إلمكانيددددات متصددددفحات‬
‫ولددددة بشددددكل متكددددرر‪ .‬ويف‬ ‫الويددددب والددد ام األخددددرى الدددديت توا دددده معلومددددات ديدددددة‬
‫األاددددام‪ ،‬تددددو ر املعاذددددات ملتصددددفح ‪ HotJava‬كليددددة تعلددددم كيفيددددة التعامددددل مددددع البيانددددات‬
‫الواردة‪.‬‬

‫تقددددددوم ‪ Java‬بدددددددعم نددددددوع مددددددك املعاذددددددات‪ :‬معاذددددددات ال وتوكددددددو ومعاذددددددات‬


‫احملتدددددوى‪ .‬تعمدددددل معاذدددددات ال وتوكدددددو علدددددع زيدددددادة معر دددددة ‪ HotJava‬بدددددال وتوكوالت‪.‬‬
‫لددددو وا دددده املتصددددفح بروتوكددددو ال يف مدددده‪ ،‬إندددده يسددددتطيع معر ددددة ادددد ا ال وتوكددددو‬
‫املدددرتبا ب ددد ا ال وتوكدددو ‪ ،‬إذا‬ ‫دي اميكيدددا ببسدددا ة عدددك ريددد ت ايدددل وت فيددد املعدددا‬
‫و ددددد‪ .‬يف حدد د تعمددددل معاذددددات احملتددددوى علددددع زيددددادة معر ددددة ‪ HotJava‬بدددداحملتوى‪ ،‬مثددددل‬
‫الصور واألصوات وال ماذ األخرى مك املعلومات املعتمدة علع الويب‪.‬‬
‫توصيف ‪:Java‬‬

‫واآلن وبعددددد أن عر ددددر املايددددد مددددك املعلومددددات عددددك ‪ ،Java‬نددددرى أندددده قددددد حددددان الوقددددر‬
‫ملعر دددة مدددا ادددو أكثدددر مدددك اد د املفددداايم أع التعدددر علدددع بيئدددة ‪ Java‬ب كملد د ا ‪ -‬لغدددة‬
‫‪ Java‬وبيئددددة التشددددغيل واألدوات ‪ -‬بصددددورة أكثددددر تعمقًدد دا‪ .‬وأ ةددددل الطددددرق لتحقيددد ذلددددك‬
‫الرتكيا علع التق ية نفس ا‪.‬‬

‫تت ل ‪ Java‬مك ال ة كيانات‪:‬‬

‫اللغة ذات ا‪.‬‬ ‫•‬

‫بيئة التشغيل‪.‬‬ ‫•‬

‫موعة مك األدوات‪.‬‬ ‫•‬

‫دددة اد د أادددام كدددل د د ء‪ ،‬وقدددد كاندددر تعدددر ادددابقًا باادددم ‪،Oak‬‬ ‫تعتد د لغدددة ال‬
‫ددددم ت تغدددديري ادد د ا االاددددم إىل ‪ Java‬نظددددرا ألاددددباب قانونيددددة قددددد كانددددر ا ددددا تق يددددة‬
‫ددددركة ‪ .)Sun‬وبدددددون لغددددة ‪Java‬‬ ‫خمتلفددددة تسددددمع ‪ Oak‬أيةدددا قبددددل لغددددة ‪ Oak‬الدددديت قدددددمت ا‬
‫لدددك يكدددون لبيئدددة التشدددغيل واألدوات أيدددة ائددددة‪ .‬ع دددد ايددددي عدددك ‪ ،Java‬عدددادة مدددا تشدددري‬
‫ة‪.‬‬ ‫الكلمة إىل لغة ال‬

‫عدددل اد د اللغدددة ت دددا اد د ا القددددر مدددك األاميدددة أ ندددر عددددد مدددك‬ ‫ولكدددك مدددا الد د ع‬
‫قيد د اد د ا القددددر الكدددبري‬ ‫دددة عد د السد د وات شدددلر بطريقدددة أو بد د خرى يف‬ ‫لغدددات ال‬
‫دددا تطدددوير الدد ام علدددع ظ دددور لغدددات ديددددة تعدددد بتغددديري‬ ‫مدددك الشدد رة لقدددد اعتددددنا يف‬
‫دددورة يف تطدددوير الد د ام وتسد د ل مدددك وظائف دددا وتعمدددل‬ ‫الطريقدددة الددديت ند د م ب دددا و دددد‬
‫دددا التطدددوير ب كملددده‪ .‬لمددداذا ندددىلمك ب اميدددة اد د اللغدددة إذا وحنددداو‬ ‫علدددع تقددددم حالدددة‬
‫ة‬ ‫ديد مك ال‬ ‫تعلم اوذ‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫يددددب علددددع معظم ددددا ‪ -‬بددددإذن اهلل‬ ‫كددددل ادد د األاددددئلة و ي ددددة وم طقيددددة‪ ،‬واددددو‬
‫‪ -‬خدددددال دراادددددت ا‪ ،‬يف حددد د ادددددي اب علدددددع بقيت دددددا يف السددد د وات القادمدددددة‪ ،‬بال سدددددبة‬
‫للوقدددر ايدددال ال تددداا ‪ Java‬لغدددة ديددددة نسدددبيا‪ .‬علدددع الدددرغم مدددك كون دددا متاحدددة م ددد‬
‫يتاايددددد اددددوى اآلن لتثبددددر أن ددددا تسددددتح الشددد رة الدددديت‬ ‫عددددام ‪ ،1995‬إال أن ااددددتمدام ا‬
‫الد د يك‬ ‫نالت دددا يف بدايدددة ظ ورادددا علدددع السددداحة م د د تسدددع اد د وات مةدددر‪ .‬ظدددل األ دددما‬
‫يعملددددون مب ددددا الكمبيددددوتر لسدد د وات يتحددددد ون عددددك إمكانيددددات ‪ ،Java‬ومددددع اإلصدددددار‬
‫الثددددان مددددك ‪ ،Java‬أصددددبحر التق يددددة دددداااة لتحقيددد مددددا وعدددددت بدددده يف البدايددددة‪ .‬ولكددددك‬
‫عددددل ‪ Java‬لغددددة خاصددددة الكتشددددا اإل ابددددة عددددك ادد د ا السددددىلا ‪ .‬ميك ددددا البدددددء‬ ‫مدد داذا‬
‫‪ Java‬للمدددرة األوىل‬ ‫دددور ‪1.0‬‬ ‫بالرادددالة التسدددويقية املدددثرية الددديت قددددمت ا دددركة ‪ Sun‬ع دددد ظ‬
‫يف صي عام ‪.1995‬‬

‫‪ :Java‬لغدددددة بسددددديطة ولغدددددة بر دددددة كائ يدددددة التو ددددده ‪ Object-Oriented‬موزعدددددة ومفسحدددددرة‬
‫ال ظدددر عدددك التطبيد د ‪ ،‬كمدددا‬ ‫حمولدددة) وقويدددة وكم دددة وتعمدددل علدددع أع نظدددام تشدددغيل بغد د‬
‫ميك ا ت في عمليات متعددة وا لغة دي اميكية ذات مستوى مرتفع مك األداء‪.‬‬

‫دددا تطدددوير الد د ام‬ ‫تعتد د كدددل صدددفة مدددك اد د الصدددفات ادددد ًا يف حدددد ذات دددا يف‬
‫ايديثددددة‪ .‬ولدد د لك إن ددددا لددددك نسددددلم ب دد د ا التعريدد د دون م اقشددددة‪ ،‬بددددل ا اقشدددده أوالً ل ددددر‬
‫كي جتسم لغة ‪ Java‬ا السمات واإلمكانيات بالفعل‪.‬‬

‫لغة بسيطة‪:‬‬

‫اخلدد د اء تبدددددو لغددددة ‪ Java‬بسدددديطة ع ددددد مقارنت ددددا بددددالكثري مددددك‬ ‫بال سددددبة للمدد د‬
‫ددددة األخددددرى املعقدددددة‪ .‬ولك ددددا ليسددددر بسدددديطة للغايددددة‪ ،‬أن ددددا بسدددديطة بدر ددددة‬ ‫لغددددات ال‬
‫كا يدددة ملواصدددلة العمدددل بددددون االردددطرار إىل قةددداء وقدددر يف تعلدددم لغدددة ديددددة ذامددا‪ .‬أمدددا‬
‫بال سدددبة للمبتددددئ ‪ ،‬قدددد ت تصدددميم ‪ Java‬لكد د تكدددون قريبدددة مدددك لغددديت ‪ C‬و‪ C++‬بقددددر‬
‫يك يسددددتمدمون ‪C‬‬ ‫الدد د‬ ‫اإلمكددددان‪ ،‬وذلددددك لةددددمان أن القاعدددددة العريةددددة مددددك املدد د‬
‫و‪ C++‬ادد د األيددددام ميكدد د م االنتقددددا إىل ااددددتمدام اللغددددة اذديدددددة بسدد د ولة‪ .‬ونظددددرا ألن‬
‫معتددددداد علدددددع التعامدددددل مدددددع ادددددات‬ ‫‪ Java‬هلدددددا ددد د وراا يف ‪ C‬و‪ ،C++‬ميكدددددك ألع دددددم‬
‫اللغت أن يعتاد اريعا علع ااتمدام ‪ Java‬يف وقر ال ي كر‪.‬‬

‫دددو ‪ C‬لقليدددل مدددك الوقدددر يف االعتيددداد علدددع‬ ‫علدددع الدددرغم مدددك ذلدددك‪ ،‬ادددو وتدددا م‬
‫ددد د ‪ .C++‬حيددد د أن ‪ Java‬عبدددددارة عدددددك لغدددددة تددددددعم‬ ‫اادددددتمدام ‪ Java‬وذلدددددك مقارندددددة مب‬
‫أن لغددددة ‪C‬‬ ‫اادددتمدام الكائ ددددات واددد تشددددبه لغددددة ‪ C++‬يف ذلددددك بدر ددددة كددددبرية‪ ،‬يف حددد‬
‫دددب‬ ‫تعتمدددد علدددع اإل دددراءات وتشدددبه ‪ Java‬بصدددورة رئيسدددية يف تركيب دددا‪ .‬نتي دددة لددد لك‪،‬‬
‫دددد‬ ‫دددد ‪ C‬أوالً أن يتعلمددددوا الددددتفكري يف إ ددددار الكائ ددددات‪ ،‬يف حدددد أن م‬ ‫علددددع م‬
‫‪ C++‬معتادون علع العمل بااتمدام الكائ ات‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫يسدددك ايدددرب‪ ،‬تعتددد ‪ Java‬أاددد ل يف تعلم دددا مدددك ‪ C++‬ألن مصدددمم لغدددة ‪ Java‬قدددداموا‬
‫ددددون مددددع لغددددة ‪ .C++‬وبالفعددددل‪ ،‬ت‬ ‫ددددا امل‬ ‫متعمددددديك بإزالددددة غالبيددددة الصددددعوبات الدددديت وا‬
‫يدددد تكددددون أادددد ل يف تعلم ددددا وااددددتمدام ا مددددك ‪ ،C++‬ونتي ددددة لدددد لك‪،‬‬ ‫إنشدددداء ‪Java‬‬

‫إمكانيددددات ‪ C++‬القويددددة‪ .‬إال أن اددد اإلمكانيددددات ال تسددددتمدم بصددددورة‬ ‫لددددر عددددك بعددد‬
‫متكدددررة كمدددا قدددد تتصدددور‪ ،‬بدددل أن دددا غالبدددا مدددا تدددىلدع إىل إنشددداء بدددرام معقدددد صدددعبة‬
‫التعديل‪.‬‬

‫املىل دددرات الددديت تشدددري ملوردددع يف الددد اكرة وتعدددي‬ ‫وعلدددع و ددده التحديدددد‪ ،‬ت حددد‬
‫أكثدددر مدددك وظيفدددة ملعامدددل واحدددد وا دددتقاق ئدددة ديددددة مدددك العديدددد مدددك الفئدددات املو دددودة‬
‫إال أن التحميدددل الاائدددد للعمليدددة مدددازا‬ ‫مدددك لغدددة ‪Java‬‬ ‫بالفعدددل و ويدددل البياندددات التلقدددائ‬
‫مدعما)‪.‬‬

‫ددد لغددددة ‪ C++‬ولك ددددا كانددددر تعقددددد اللغددددة‪،‬‬ ‫رمبددددا كانددددر اددد األ ددددياء تفيددددد م‬
‫ولددد ا قدددد أزالدددر لغدددة ‪ Java‬اددد اإلمكانيدددات لكددد تظدددل بسددديطة واددد لة االادددتمدام‪.‬‬
‫ا البسا ة‪.‬‬ ‫رزاا يف‬ ‫وتلك ا أو ال قاط اليت‬
‫ويف خدددددال عمليدددددة التبسددددديا قدددددام ريددد د ‪ Java‬بتقدددددديم ريقدددددة للت ميدددددع التلقدددددائ‬
‫للمحد د و ات‪ .‬وعلدددع الدددرغم مدددك أن ذلدددك قدددد زاد مدددك در دددة تعقيدددد نظدددام ‪ Java‬الدددداخل ‪،‬‬
‫قددددد عمددددل علددددع إزالددددة عددددبء إدارة الددد اكرة عددددك املددد م ‪ ،‬واكددد ا‪ ،‬ال يتسددددم برنددددام‬
‫‪ Java‬بسدد د ولة كتابتدددده حسددددب‪ ،‬بددددل إن املشددددكالت املرتبطددددة بالدد د اكرة قددددد قلددددر إىل‬
‫ا البسا ة‪.‬‬ ‫رزاا ‪ Java‬يف‬ ‫ان ال قاط اليت‬ ‫حد كبري‪ .‬وتلك ا‬

‫لغة برجمة كائنية التوجه ‪:Object-Oriented‬‬

‫لددددددو كانددددددر لغددددددة ‪ Java‬تتسددددددم بالتعقيددددددد‪ ،‬ددددددإن ذلددددددك ألن اللغددددددة تدددددددعم ااددددددتمدام‬
‫غددددري احملرت دددد ‪ ،‬ميكددددك أن ميثددددل‬ ‫الكائ ددددات بشددددكل كامددددل‪ .‬بال سددددبة للمدددد‬
‫دددة املعتمددددة علدددع الكائ دددات ‪ )OOP‬مف ومد دا مروعد دا‪ ،‬أمدددا بال سدددبة هلدددىلالء‬ ‫مصدددطلح ال‬
‫املعتاديك علع التعامل مع الكائ ات‪ ،‬إن ذلك األمر ا ل للغاية‪.‬‬

‫ددددة الدددديت تدددددعم ااددددتمدام الكائ ددددات بالبسددددا ة‪ :‬كددددل م مددددة‬ ‫يتسددددم م طدد د ال‬
‫بر دددة ي ظدددر إلي دددا يف إ دددار الكائ دددات وعالقات دددا ببعةد د ا الدددبع ‪ .‬ومدددك ناحيدددة عامدددة‪،‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫تدددددوع‬ ‫إن الكدددددائك ادددددو عبدددددارة عدددددك وحددددددة مسدددددتقلة مدددددك الكدددددود القابدددددل للت فيددد د ‪،‬‬
‫مددددك‬ ‫الكائ ددددات علددددع بيانددددات و ددددرق أو وظددددائ تتعامددددل مددددع البيانددددات‪ ،‬وعلددددع العكددد‬
‫ذلددددك‪ ،‬تتعامددددل اللغددددات الدددديت تعتمددددد علددددع اإل ددددراءات‪ ،‬مثددددل ‪ ،C‬مددددع البيانددددات والوظددددائ‬
‫التوابدددع) علدددع حنددو م فصدددل‪ ،‬حيدد يدددتم نقدددل البياندددات إىل تدددابع‪ ،‬يتعامدددل مع دددا وير ع دددا‬
‫إىل املستدع ‪.‬‬
‫ومدددك ناحيدددة أخدددرى‪ ،‬تتشدددابه الكائ دددات يف بيعت دددا مدددع اخلاليدددا اييويدددة الددديت تتدد ل‬
‫تدددوع الكائ دددات علدددع معلومدددات بداخلد د ا واد د تدددىلدع‬ ‫م دددا أ سدددام ا‪ .‬مثدددل اخلاليدددا‪،‬‬
‫م مت دددا مدددك خدددال اد د املعلومدددات‪ .‬إن الكائ دددات اد د وحددددات مسدددتقلة ميك دددا العمدددل‬
‫بشددددكل مسددددتقل أو الت مددددع إلنشدددداء ايكددددل أكثددددر تعقيدددددا‪ .‬وباملثددددل‪ ،‬كددددل خليددددة يف‬
‫سدددم ا عبدددارة عدددك كيدددان مسدددتقل م فدددرد‪ ،‬وتقدددوم اد د اخلليدددة بوظيفدددة خاصدددة ولك دددا‬
‫قددددد تت مددددع إلنشدددداء تركيبددددات أكثددددر تعقيدددددا كاألنسدد د ة‪ .‬وال سددددي ‪ ،‬بدددددور ‪ ،‬ميكددددك‬
‫معددده مدددع األنسددد ة ا ألخدددرى لتكدددويك أعةددداء كاملدددة‪ ،‬كمدددا ميكدددك مدددع األعةددداء‬
‫لتكويك أ اة ب كمل ا مثل اذ از الت فس واذ از اهلةم ‪.‬‬
‫يف األصدددل‪ ،‬تتبدددع الكائ دددات القاعددددة ذات دددا الددديت تتبع دددا اخلاليدددا‪ ،‬الكائ دددات اد د‬
‫وحددددات مسدددتقلة ميكدددك مع دددا مدددع كائ دددات أخدددرى إلنشددداء تركيبدددات أكثدددر تعقيددددا‬
‫وادددد الدددد ام ‪ .‬وأحدددددد الصدددددفات الددددديت تددددددعم ا الكائ دددددات ادددد اال دددددتقاق‪ .‬الع اصدددددر‬
‫اذديدددددة ميكددددك إنشدددداااا‪ ،‬أو ا ددددتقاق ا‪ ،‬مددددك الع اصددددر املو ددددودة‪ .‬ويكتسددددب الع صددددر‬
‫اذديدددد إمكانيدددات الع صدددر الرئيسد د ‪ ،‬ولكدددك مدددك املمكدددك إكسدددابه صدددفات ديددددة‬
‫ددددات مثددددل ‪Java‬‬ ‫حسددددب ايا ددددة‪ .‬وميدد د ح اال ددددتقاق اللغددددات الدددديت تدددددعم ااددددتمدام الكائ‬
‫ددا يعددم أنددك تسددتطيع عمددل الكددثري مددك األ ددياء‬ ‫كليددة رائعددة إلعددادة ااددتمدام الكددود‪،‬‬
‫يف وقر قليل‪.‬‬

‫الفئ ا ااة‪ :‬اددد د كدددددود أاااددد د متكامدددددل يعمدددددل مبثابدددددة قالدددددب ت شددد د م ددددده‬ ‫تلمي ي ي ي ي ي ي‬
‫ًد دا‪ ،‬ادددو تقدددوم بكتابدددة كدددود ‪ Java‬إلنشددداء‬ ‫الكائ دددات‪ .‬وباعتبدددار م‬
‫الفئددددات الدددديت يبدددددأ عملدد د ا ع ددددد تشددددغيل ال نددددام بوصددددف ا كائ ددددات‪ .‬ويف‬
‫إ ددددار الصددددورة السددددابقة‪ ،‬ميكددددك مقارنددددة الفئددددات برتكيددددب ‪ DNA‬للمليددددة‪،‬‬
‫يف حددد ادددو ذثدددل الكائ دددات خليدددة حيدددة عليدددة‪ .‬كمدددا ميكدددك مقارندددة‬
‫ئدددددات ‪ Java‬بالتصدددددميم اهل دادددد مل دددددا ‪ ،‬يف حدددد ميثدددددل الكدددددائك امل دددددا‬
‫امل شددد مددددك اددد التصددددميمات‪ .‬وعلددددع الددددرغم مددددك أن اددد ال ظددددرة مبسددددطة‬
‫للغايددددة حددددو العالقددددة بدد د الفئددددات والكائ ددددات‪ ،‬إن ددددا اددددو تكفدد د يف‬
‫الوقر ايال ‪.‬‬

‫دددة الددديت تددددعم اادددتمدام الكائ دددات بشدددكل‬ ‫ولكد د نوردددح القيمدددة العظيمدددة لل‬
‫ملمدددوم ل تصدددور أنددده م مدددة كتابدددة ال ندددام تتما دددل مدددع إنشددداء ذثدددا باادددتمدام كتدددل‬
‫دددة الددديت تددددعم اإل دددراءات عمدددل كدددل كتلدددة ب ددداء‬ ‫عليدددك لغدددات ال‬ ‫الب ددداء‪ .‬سدددتفر‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫يددددويا مدددك البدايدددة‪ ،‬األمدددر الد د ع وتدددا إىل قددددر كدددبري مدددك الوقدددر واذ دددد مدددك اندددب‬
‫امل م ‪ ،‬و ب االنتبا إىل كل كل كتلة ب اء وت ااب ا داخل العمل‪.‬‬

‫ددددة الدددديت تدددددعم ااددددتمدام الكائ ددددات دد د تركددددا علددددع العمددددل األكدد د‬ ‫أمددددا ال‬
‫ذاتددده‪ ،‬علدددع الشدددكل ال دددائ الددد ع ي بغددد أن يكدددون عليددده التمثدددا ‪ .‬وبددددالً مدددك إنشددداء‬
‫كتلددة ب دداء يدددويا لكددل دداء مددك الكددل‪ ،‬د تعتمددد علددع اددوذ عددام مددك كتددل الب دداء‬
‫يدددتم م ددده ا دددتقاق كدددل كتدددل الب ددداء األخدددرى‪ .‬وادددو تدددو ر الوقدددر واذ دددد امل ددددريك يف‬
‫إنشددداء كتدددل الب ددداء كدددل علدددع حددددة‪ ،‬كدددل مدددا عليدددك أن تفعلددده ادددو أن تسدددتمدم كتلدددة‬
‫الب دددداء العامددددة كقالددددب وت شددددئ ب دددداء علي ددددا‪ .‬يعطيددددك القالددددب كددددل السددددمات األاااددددية‪،‬‬
‫يددد د يت اادددددب مدددددع احتيا اتدددددك‪ .‬وادددددتكون ال تي دددددة اددد د زيدددددادة‬ ‫وعليدددددك أن تعدلددددده‬
‫اإلنتا ية وإعادة االاتمدام بشكل رائع‪.‬‬

‫ددددددة كائ يددددددة التو دددددده ‪ Object-Oriented‬يكددددددون الرتكيددددددا بصددددددورة‬ ‫ددددددا ال‬ ‫يف‬
‫رئيسددددية علددددع تصددددميم كتددددل الب دددداء الكائ ددددات) وعلددددع العمليددددات الدددديت تددددتم علددددع اددد ا‬
‫التصددددميم‪ .‬ولددددو أنددددك قمددددر علددددع حنددددو يددددد بتوصددددي كتلددددة الب دددداء الرئيسددددية متعددددددة‬
‫موعدددددة كدددددبرية مدددددك كتدددددل الب ددددداء ذات‬ ‫األغدددددرا ‪ ،‬ميك دددددك بعدددددد ذلدددددك ا دددددتقاق‬
‫اخلاصة م ا‪.‬‬ ‫األغرا‬

‫إن الوظددددائ الدددديت تعتمددددد علددددع الكائ ددددات يف لغددددة ‪ Java‬ادد د نفسدد د ا تلددددك اخلاصددددة‬
‫دد د ‪ C++‬ايددددالي لددددك يوا ددددوا أع متاعددددب ع ددددد‬ ‫بلغددددة ‪ .C++‬وعلددددع الددددرغم مددددك أن م‬
‫الدد د يك ليسددددر لدددددي م خدد د ة بالتعامددددل مددددع الكائ ددددات‬ ‫ااددددتمدام ‪ ، Java‬ددددإن املدد د‬
‫الوقر لالعتياد علع ا التق ية واملفاايم املرتبطة ب ا‪.‬‬ ‫او يلام م بع‬

‫بيانات الشكل‪ :‬كتلة الب اء‬


‫العامة متعددة األغرا‬

‫كتل الب اء املمصصة املشتقة‬


‫مك الكتلة األصلية‬

‫كتل الب اء املمصصة داَ واملشتقة مك الكتل املمصصة‬

‫لغة موزعة‪:‬‬

‫ت إنشددداء لغدددة ‪ Java‬مدددع وردددع اتصددداالت الشدددبكة يف الد د اك‪ ،‬اإلمكانيدددات املعقددددة‬
‫ددددداء دددددوارع يف تق يدددددة ‪ ،Java‬تشدددددتمل ‪ Java‬علدددددع مكتبدددددة‬ ‫لشدددددبكة االتصددددداالت ادددد‬
‫‪Transmission‬‬ ‫دددداملة مددددك كائ ددددات الشددددبكة الدددديت تتعامددددل مددددك ال وتوكددددوالت مثددددل‪:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪Hypertext‬‬ ‫‪Transfer‬‬ ‫‪Protocol‬‬ ‫‪ Control‬و‬ ‫‪Protocol/Internet‬‬ ‫‪Protocol‬‬ ‫)‪(TCP/IP‬‬

‫دددددتح‬ ‫‪Java‬‬ ‫‪ .File‬نتي دددددة لددد د لك‪ ،‬ميكدددددك لددد د ام‬ ‫‪Transfer‬‬ ‫‪Protocol‬‬ ‫)‪ (HTTP‬و)‪(FTP‬‬

‫ادددد ولة الوصدددددو إىل نظدددددام‬ ‫املصدددددادر املو دددددودة علدددددع اإلنرتندددددر والوصدددددو إلي دددددا بدددد ف‬
‫ملفات حمل ‪.‬‬

‫عليدددددك أن ت فددد د تفاصددددديل‬ ‫لدددددي‬ ‫دددددا ‪Java‬‬ ‫و يمدددددا يلدددد ميددددداة أخدددددرى قويدددددة تتميدددددا ب‬
‫االتصدددا الشدددبك ب فسدددك‪ ،‬لغدددة ‪ Java‬تدددو ر كدددل مدددا يلدددام لعمليدددات املعاذدددة املوزعدددة‪.‬‬
‫يددددد علددددع ذلددددك اددددو متصددددفح ‪ HotJava‬الدد د ع بفةددددل لغددددة ‪ ،Java‬يف ددددم كيفيددددة‬ ‫ومثددددا‬
‫ددددة‬ ‫الوصددددو إىل والتعامددددل مددددع الكائ ددددات عددد الويددددب‪ .‬تتطلددددب م ددددك غالبيددددة لغددددات ال‬
‫تقدددددددم ادددددد‬ ‫فسددددددك‪ ،‬أمددددددا ‪Java‬‬ ‫األخددددددرى أن تكتددددددب مسددددددتويات الشددددددبكة ادددددد ب‬
‫اإلمكانيات مك البداية‪.‬‬
‫لغة مفسّرة (حموّلة)‪:‬‬

‫‪ .)interpreted‬بعبددددارة أخددددرى‪،‬‬ ‫‪Language‬‬ ‫إن لغددددة ‪ Java‬ادد د لغددددة مفسحددددرة حمولددددة)‬


‫دددداز ونظددددام تشددددغيل ترغددددب يف تشددددغيل تطبيقددددات ‪Java‬‬ ‫ددددب إتاحددددة مفسددددر لكددددل ب يددددة‬
‫ددددو إىل كددددود اذ دددداز‪ ،‬كمددددا وددددد يف‬ ‫عليدددده‪ .‬قدددددميا‪ ،‬كانددددر الدد د ام املفسددددرة ال‬
‫الدد د ام اجملمعددددة املرتمددددة)‪ .‬وبدددددالً مددددك ذلددددك‪ ،‬كانددددر ادد د الدد د ام تبقددددع بشددددكل‬
‫ميكك لإلنسان قراءته وك لك ي ف املفسر اطرا بعد اطر‪.‬‬

‫غالبد دا مدددا ي تددداب مطدددورو الد د ام اخلدددو ع دددد تفكريادددم يف اادددتمدام لغدددة مفسدددرة‬
‫دددة «الكدددبرية»‪ .‬ومدددك املعدددرو أن اللغدددات املفسدددرة بطيئدددة وذلدددك مقارندددة‬ ‫ملشدددروعات ال‬
‫بشبي ات ا اجملمعة املرتمة) وغالبا ما يو ه إليه ال قد هل ا السبب‪.‬‬

‫‪Java virtual machine‬‬ ‫علدددع الدددرغم مدددك ذلدددك‪ ،‬ومدددك خدددال االادددتمدام املبتكدددر لدددد‬
‫)‪ ،(JVM‬تغلبدددر ‪ Java‬علدددع الكدددثري مدددك مشدددكالت السدددرعة الددديت كاندددر ادددببا يف شدددل‬
‫اللغدددات املفسدددرة األخدددرى‪ .‬وميدددر كدددود ‪ Java‬خدددال عمليدددة جتميدددع ت دددت مدددا يعدددر باادددم‬
‫‪،Java‬‬ ‫ملواصدددفات ‪Virtual Machine‬‬ ‫بايدددر كدددود ‪ .Bytecode‬والبايدددر كدددود وادددو مطددداب‬
‫وميك ددددك تشددددغيله علدددددع أع نظددددام يددددددعم بيئددددة ‪ .Java‬يكددددون ادددد ا الكددددود يف مرحلدددددة‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫معد دا بصدددورة كاملدددة‪ ،‬ولك ددده قريدددب بدر دددة كا يدددة لكدددود‬ ‫متوادددطة‪ ،‬أع أنددده لدددي‬
‫دددا ودددد مدددع األكدددواد‬ ‫اذ ددداز الفعلد د الد د ع تسدددتغرق يددده عمليدددة التحويدددل وقتد دا أقدددل‬
‫األخرى‪.‬‬

‫لتقليددددل عددددبء التحويددددل بدر ددددة أكدد د ‪ ،‬تطبدد د ‪ Java‬تعدددددد العمليددددات الدد د ع يسددددمح‬
‫للد د ام بالتعامدددل مدددع العديدددد مدددك امل دددام يف وقدددر واحدددد) وتتعامدددل مدددع التحويدددل بفاعليدددة‬
‫ويددددىلدع جتميددددع كددددود ‪ Java‬يف مرحلددددة متواددددطة ‪ -‬ددددم ترمتدددده يف اخللفيددددة مددددك خددددال‬
‫العمليدددددات ‪ -‬إىل تفسدددددري أادددددرع كمدددددا أنددددده يعطدددد ‪ Java‬ادددددرعة كدددددبرية ذياادددددا عدددددك‬
‫اللغات املفسحرة التقليدية‪.‬‬

‫موعدددددة مدددددك‬ ‫دددددازا‪ ،‬دددددو‬ ‫‪ Java‬لدددددي‬ ‫‪Virtual‬‬ ‫‪Machine‬‬ ‫إن )‪(JVM‬‬ ‫ملحوظي ي ي‬
‫دددب التعامدددل مدددع البايدددر كدددود ‪Bytecode‬‬ ‫ددددد كيد د‬ ‫املواصدددفات الددديت‬
‫بددددد‪ Java‬علددددع نظددددام كمبيددددوتر حمدددددد‪ .‬وميكددددك لدد د ام ‪ Java‬أن‬ ‫اخلددددا‬
‫تعمل علع أع كمبيوتر به ‪.Java Virtual Machine‬‬

‫لغة قوية‪:‬‬

‫‪ ،‬وخاصدددة احملرت د د الد د يك تعتمدددد‬ ‫تعتد د الثقدددة ددديئا م مد دا للغايدددة بال سدددبة للمد د‬
‫ددددر ب دددا إنشددداء بدددرام قويدددة‬ ‫تعدددت م ووظدددائف م علدددع امل ت دددات الددديت ي شدددئون ا‪ .‬لد د لك‪،‬‬
‫حمتمدددل هلدددا ال دددا يف ظدددل ظدددرو غدددري معرو دددة أو ظدددرو مغدددايرة‪ .‬وعلدددع الدددرغم مدددك أن‬
‫ا د ا اهلددد رمبددا يبدددو وارددحا‪ ،‬ددإن الكددثري مددك اللغددات ا د أبعددد مددا تكددون عددك تددو ري‬
‫لتطوير برام قوية‪.‬‬ ‫األدوات الالزمة للم‬

‫تددددا لغددددة ‪ Java‬إىل توصدددديفات تةددددمك أن أنددددواع البيانددددات الدددديت يددددتم ذريراددددا إىل‬
‫تا دددا ادد الطريقدددة‪ .‬عدددالوة علدددع‬ ‫ريقدددة تدددابع) مدددا تكدددون ادد بالفعدددل البياندددات الددديت‬
‫ددددوع البيانددددات‪ ،‬كمددددا تسددددمح بدددده كددددل مددددك ‪C‬‬ ‫ذلددددك‪ ،‬ال تسددددمح ‪ Java‬بالتحويددددل التلقددددائ ل‬
‫ددددب علددددع املدد د م كتابددددة التحددددويالت بورددددو ‪ .‬ونتي ددددة لدد د لك يقددددل احتمددددا‬ ‫و‪ ،C++‬إذ‬
‫ظ ور األخطاء يف الكود‪.‬‬

‫يتمثدددددل أكثدددددر االختال دددددات وردددددوحا بدددد ‪ Java‬و‪ C/C++‬يف اادددددتمدام مدددددتغري وتدددددوع‬
‫الددد اكرة وإتددددال البيانددددات‪ .‬وبدددددالً مددددك‬ ‫علددددع موقددددع البيانددددات يف الددد اكرة مي ددددع حددد‬
‫ديدددد املدددتغريات‬ ‫حسددداب اد د ا املدددتغري‪ ،‬تقدددوم ‪ Java‬بددددعم املصدددفو ات الفعليدددة الددديت تددددعم‬
‫ددددد موقدددع ع صدددر يف املصدددفو ة ايددددود)‪ .‬ونظدددرا لعددددم قددددرة املدد م علدددع حدد‬ ‫الددديت‬
‫البياندددات أو الوصدددو إىل ع صدددر مصدددفو ة خدددار ايددددود علدددع ادددبيل اخلطد د ‪ ،‬دددإن اد د‬
‫دددددد يف لغدددددة ‪ .Java‬وتتمثدددددل ال تي دددددة يف نظدددددام تطدددددوير قدددددوع ددددددا ودددددرر‬ ‫األخطددددداء ال‬
‫امل م مك مثل ا األعباء‪.‬‬

‫لغة آمنة‪:‬‬

‫يددددده اتصدددددا بالشدددددبكة‪ ،‬تصدددددبح االعتبدددددارات األم يدددددة مسددد د لة‬ ‫يف أع وقدددددر ودددددد‬
‫خطددددرية وم مددددة‪ .‬لقددددد كانددددر مسدد د لة التدد د م مبعدد د قلدد د دائددددم‪ ،‬حتددددع علددددع املسددددتوى‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ددددبكات االتصدددداالت اددد ا القدددددر مددددك االنتشددددار والشددد رة‪ .‬واآلن‬ ‫قددد‬ ‫احمللددد وقبددددل أن‬
‫وبعددددد و ددددود احملتددددوى الت فيدد د ع‪ ،‬زادت الفريواددددات واملتطفلددددون الدد د يك يدد د تون يف صددددورة‬
‫متمفيدددة ليقتحمدددوا ادددرية املسدددتمدم ‪ .‬حيد د ال تو دددد واددديلة خدددري مدددك التمفد د للددددخو‬
‫ايددددل الددددد‪applets‬‬ ‫ب حددددد املسددددتمدم ‪ .‬ونظددددرا ألندددده يددددتم ت‬ ‫إىل نظددددام الكمبيددددوتر اخلددددا‬
‫وتشغيل ا تلقائيا‪ ،‬لك ميكك معر ة ابب املشكلة أو املكان ال ع أتر م ه‪.‬‬

‫مدددك البدايدددة‪ ،‬قدددام ريد د ‪ Java‬بتصدددميم لغدددة ‪ Java‬مدددك أ دددل البيئدددات املوزعدددة واملرتبطدددة‬
‫يمددددا بي ددددا بوااددددطة ددددبكات اتصدددداالت‪ ،‬وقددددد تعامددددل مددددع مشددددكلة التددد م مبكددددرا‪.‬‬
‫ددداءا م مد دا مدددك بيئدددة ‪ .Java‬لد د لك‪ ،‬د د ذك دددك مدددك إنشددداء نظدددم‬ ‫يعتد د نظدددام التد د م‬
‫خاليدددة مدددك الفريوادددات واألخطددداء‪ ،‬وذلدددك بفةدددل عددددد عمليدددات التحقد د الددديت تقدددوم ب دددا‬
‫ا اللغة قبل ت في أع اء مك الكود‪.‬‬
‫الد د اكرة أ ددداء وقدددر الت ميدددع‪ .‬وعدددك‬ ‫أواً‪ ،‬يدددتم إزالدددة كدددل مدددك املىل دددرات و صدددي‬
‫الدد د اكرة والوصددددو إىل الدد د اكرة أ دددداء وقددددر التشددددغيل‪ ،‬ذ ددددع‬ ‫صددددي‬ ‫ريدد د م ددددع‬
‫موارع ال اكرة مسبقًا والوصو إىل ال اكرة‪.‬‬ ‫مك ا رتا‬ ‫‪ Java‬امل‬

‫يكددددك‬ ‫ثا ي ا اا‪ ،‬يتحقدددد املفسحددددر مددددك كددددل األكددددواد قبددددل أن يددددتم ت فيدد د اا‪ .‬لددددو‬
‫لدددك يدددتم ت فيد د ‪ ،‬ويدددتم م دددع الكدددود‬ ‫الكدددود أحدددد األكدددواد الصدددحيحة اخلاصدددة بدددد‪Java‬‬

‫غدددري القيااد د قبدددل أن ميثدددل مشدددكلة‪ .‬عدددالوة علدددع ذلدددك‪ ،‬ال يسدددمح باألنشدددطة اخلطدددرية‬
‫مثدددل الوصدددو غدددري املشدددروع ملسددداحة الد د اكرة وخدددرق امتيدددازات الوصدددو والوصدددو غدددري‬
‫ويدددل البياندددات غدددري املشدددروعة‪ .‬نتي دددة هلددد ا‪ ،‬ال ميكدددك ألع‬ ‫املشدددروع للفئدددات وعمليدددات‬
‫ريوم الوصو إىل اياكل البيانات أو الكائ ات أو موارع ال اكرة‪.‬‬

‫ال مي يات املو ودة علع‬

‫ي ا إىل كمبيوتر املستمدم عك ري املتصفح‬

‫التحق‬ ‫الت في‬

‫‪ Java‬داخدددل ادددوذ أمدددم‪ :‬إذ يدددتم التعامدددل مع دددا‬ ‫ايدددة‪ ،‬تعمدددل كدددل الدددد‪applets‬‬ ‫ويف ال‬
‫ا أن كدددل الدددد‪applets‬‬ ‫علدددع أن دددا كدددود غدددري مو دددوق بددده ي فدد يف بيئدددة مو دددوق ب دددا‪ .‬يعدددم ادد‬
‫دددداز ‪ .‬وحتددددع بعددددد‬ ‫ديددددد صددددالحيات ا ع دددددما تصددددل إىل‬ ‫الدددديت ت ددددا مددددك الويددددب يددددتم‬
‫جتددداوز عمليدددة التحقد د مدددك الكدددود‪ ،‬يدددتم م دددع الدددد‪ applets‬مدددك الوصدددو للملفدددات املو دددودة‬
‫بدددك إال إذا قمدددر بصدددفة حمدددددة مبد د ح الدددد‪ applet‬تصدددريح‬ ‫ددداز الكمبيدددوتر اخلدددا‬ ‫علدددع‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫لعمدددل ذلدددك‪ .‬يعمدددل اد د ا علدددع م دددع الدددد‪ applets‬مدددك الوصدددو ملصدددادر الويدددب باادددتث اء تلدددك‬
‫ح الدددد‪applet‬‬ ‫املصدددادر املتاحدددة علدددع املوقدددع الد د ع ت ت ايلد د ا م ددده‪ ،‬إال إذا قدددام املسدددتمدم مبدد‬
‫دددع الدددد‪applets‬‬ ‫مثدددل اددد اإلمكانيدددات‪ .‬وك حدددد اإل دددراءات الت مي يدددة اإلردددا ية‪ ،‬يدددتم م‬
‫مدددددك تشدددددغيل أع كدددددود مثدددددل التطبيقدددددات ومكتبدددددات الكدددددود اخلار يدددددة) ال ميكدددددك‬
‫التحق م ه بالطريقة ذات ا اليت ت ااتمدام ا يف التحق مك الد‪ applet‬ذاته‪.‬‬

‫ال مي يددددات الدددديت ت ت ايلددد ا مددددك اإلنرتنددددر‬


‫وت في اا علع كمبيوتر املستمدم‬

‫غري مسمو بالوصو‬


‫أع موقع ويب‬
‫‪1011010‬‬ ‫كخر‬
‫‪1010010‬‬
‫‪0001001‬‬
‫امللفات‬ ‫‪0110010‬‬
‫‪1000110‬‬
‫‪1101010‬‬
‫كود غري مو وق‬

‫وعلدددع الدددرغم مدددك اادددتحالة اخدددرتاق ال ظدددام التد د ميم الد د ع وردددعته ‪ Java‬مدددك ال احيدددة‬
‫ال ظريدددة‪ ،‬إال إنددده يف ايقيقدددة‪ ،‬ميكدددك اخدددرتاق أع نظدددام تد د م ألع نظدددام بر د د ‪ ،‬مبدددا‬
‫غدددددرات أم يدددددة يف نظدددددام‬ ‫يف ذلدددددك ‪ .Java‬ويف ايددددداالت ال دددددادرة الدددديت ت ي دددددا اكتشدددددا‬
‫بشددددركة ‪ Sun‬بسددددد ادددد الثغددددرات علددددع‬ ‫تدددد م ‪ ،Java‬قددددام ريدددد عمددددل ‪ Java‬اخلددددا‬
‫ددددد أن ددددا أكثددددر أمانددددا‬ ‫ددددة األخددددرى‪،‬‬ ‫الفددددور‪ .‬ولكددددك ع ددددد مقارنددددة ‪ Java‬بلغددددات ال‬
‫بكات االتصاالت‪.‬‬ ‫ول لك قد أصبحر اللغة الفعلية املستمدمة إلنشاء برام‬
‫مستويات الصالحيات‪:‬‬
‫ددا يعددم‬ ‫‪ Java‬لك د تعمددل دائم دا داخددل اددوذ الت د م ‪،‬‬ ‫ت تصددميم ‪1.0 x applets‬‬

‫دددر أبددددا عدددك ال طددداق الةدددي للصدددالحيات الددديت تفررد د ا اد د ال سدددمة‪ .‬بعدددد‬ ‫أن دددا ال‬
‫‪ Java‬ادددوذ تد د م خمتلد د ‪ ،‬ميكدددك للمسدددتمدم مدددك خاللددده مد د ح‬ ‫ذلدددك‪ ،‬قددددمر ‪1.1‬‬

‫الدددد‪ applets‬وصدددو كامدددل ملصدددادر الشدددبكة وال ظدددام أو حرمان دددا مدددك اد د الصدددالحيات‬
‫‪ Java‬بوصددددو‬ ‫ع قدمتدددده ‪1.1‬‬ ‫ذامدد دا‪ .‬ولسددددوء ايددددرب‪ ،‬تددددح ادد د ا ال مددددوذ التدد د ميم الدد د‬
‫ا ددددة إىل نددددوع واحددددد قددددا مددددك‬ ‫الددددد‪ applets‬الكامددددل لكددددل املصددددادر حتددددع لددددو كددددان‬
‫ديدددد أن يقدددرأ الدددد‪ applets‬امللفدددات علدددع‬ ‫‪ Java‬ال يسدددتطيع املسدددتمدم‬ ‫‪ .‬ومدددع ‪1.1‬‬ ‫الوصدددو‬
‫‪ Java‬أع ددددكل مدددددك‬ ‫ح الددددد‪ applets‬يف ‪1.1‬‬ ‫قددددا مددددثالً‪ ،‬حيدددد أن مدددد‬ ‫ال ظددددام احمللدددد‬
‫امتيددددازات الوصددددو مي حدددده وصددددوالً كددددامالً للمصددددادر احملليددددة ومصددددادر الشددددبكة بغددد‬
‫عالً‪.‬‬ ‫ا الد‪applets‬‬ ‫ال ظر عك اإلمكانيات اليت وتا إلي ا ا‬

‫قددددم اإلصددددار الثدددان مدددك ‪ Java‬أخدددريا مف دددوم «مسدددتويات الصدددالحيات» وادددو ادددوذ‬
‫تدد د م ميكددددك مدد د ح الددددد‪ applets‬مددددك خاللدددده إمكانيددددات حمددددددة ب دددداء علددددع احتيا اتدددده‬
‫وم امدددده‪ .‬وعلددددع اددددبيل املثددددا ‪ ،‬ددددإن الددددد‪ applets‬الدد د ع وتددددا قددددراءة ملدد د مو ددددود علددددع‬
‫ء غري ‪.‬‬ ‫كمبيوتر املستمدم ميكك م حه ا ا االمتياز قا وال‬

‫لغة تستطيع العمل على أي نظام تشغيل‪:‬‬

‫نظددددددرا ألن ددددددركة ‪ Sun‬قامددددددر بتصددددددميم ‪ Java‬لدددددددعم التطبيقددددددات املوزعددددددة عدددد د‬


‫موعدددة مت وعدددة مدددك‬ ‫دددبكات اتصدددا الكمبيدددوتر‪ ،‬ميك دددك اادددتمدام اد د اللغدددة مدددع‬
‫نظددددم التشددددغيل ووحدددددات املعاذددددة املركايددددة‪ ،‬ولتحقيدددد ادددد ا اهلددددد ‪ ،‬يقددددوم برندددددام‬
‫جتميدددع ‪ Java‬بإنتدددا ملفدددات الكائ دددات الددديت تعمدددل علدددع أع نظدددام تشدددغيل أو البايدددر كدددود‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أن بيئدددة‬ ‫بلغدددة ‪ ،Java‬مدددك كدددود ‪ Java‬األصدددل الدد ع تقدددوم بكتابتددده‪ .‬مدددع ا دددرتا‬ ‫اخلدددا‬
‫تو دددد علدددع اندددب نظدددام الوحددددة التابعدددة‪ ،‬دددإن الكدددود ال دددات يدددتم ت فيد د‬ ‫تشدددغيل ‪Java‬‬

‫ال ظر عك ال ظام‪.‬‬ ‫بغ‬

‫مددددع ‪ Java‬ميك ددددك إنشدددداء ملددد ت فيددد ع واحددددد ميكددددك تشددددغيله علددددع أع كمبيددددوتر‬
‫يشتمل علع بيئة تشغيل ‪.Java‬‬

‫بيئة تشغيل ‪:Java‬‬


‫إن بيئددددة تشددددغيل ‪ Java‬ادد د عبددددارة عددددك حمددددو يقددددوم بتحويددددل ملفددددات البايددددر كددددود‬
‫باذ دددداز‪،‬‬ ‫بددددد‪ Java‬الدددديت تعمددددل علددددع أع نظددددام تشددددغيل إىل كددددود حملدد د خددددا‬ ‫اخلددددا‬
‫وبالتددددال ميكددددك ت فيدد د ‪ .‬يددددتم تثبيددددر بيئددددة تشددددغيل ‪ Java‬علددددع نظددددم املسددددتمدم ال ددددائ‬
‫‪Netscape‬‬ ‫ع ددددددما يقدددددوم املسدددددتمدم بتثبيدددددر متصدددددفح ويدددددب متوا ددد د مدددددع ‪ Java‬مثدددددل‬
‫‪ .Internet‬وعلددددددع الددددددرغم مددددددك أن ادددد د ادددد د أ دددد د ر الطددددددرق‬ ‫‪ Navigator‬أو ‪Explorer‬‬

‫‪Java‬‬ ‫للحصددددو علددددع بيئددددة تشددددغيل ‪ Java‬والعمددددل ب ددددا‪ ،‬دد د ال تفيددددد اددددوى يف تشددددغيل‬
‫ددددب أن تثبددددر‬ ‫‪ applets‬املصددددممة يف صددددفحات الويددددب‪ .‬ولتشددددغيل تطبيقددددات ‪ Java‬كلدد د ا‪،‬‬
‫بيئددددة التشددددغيل اخلاصددددة بددددد‪ Java‬الدددديت تعمددددل بصددددورة مسددددتقلة عددددك متصددددفحات الويددددب‪.‬‬
‫ددددركة ‪ Sun‬وغالبيددددة أدوات تطددددوير ‪Java‬‬ ‫‪ Java‬الدددد ع تقدمدددده‬ ‫ذلددددك‪ ،‬ألن ‪SDK‬‬ ‫يكفدددد‬
‫ويدددل‬ ‫تد د ت مدددع بيئدددة تشدددغيل ‪ Java‬املسدددتقلة‪ .‬نظدددرا ألن بيئدددة تشدددغيل ‪ Java‬مدددا اد د إىل أداة‬
‫املسدددئولون عدددك إنشددداء‬ ‫بدددد‪ Java‬تتوا ددد مدددع ‪ ،JVM‬دددإن األ دددما‬ ‫للبايدددر كدددود اخلدددا‬
‫بيئدددات التشدددغيل لددددي م مطلد د ايريدددة يف إنتدددا مثلد د ا‪ .‬غالبد دا مدددا يقدددوم ال دددام باادددتمدام‬
‫‪ Java‬ليعد د وا عدددك الشد د ء ذاتددده ألن بيئدددة‬ ‫بيئدددة تشدددغيل ‪ Java‬و‪Virtual Machine‬‬ ‫مصدددطلح‬
‫تشدددغيل ‪ Java‬تطبد د ب ددداء علدددع مواصدددفات ‪ JVM‬يف واقدددع األمدددر‪ ،‬إن دددا مسد د لة وقدددر قبدددل أن‬
‫يقدددوم كد دل املسدددئول عدددك إنشددداء نظدددم التشدددغيل بت يدددا بيئدددة تشدددغيل ‪ Java‬داخدددل نظدددام‬
‫التشددددغيل مبا ددددرة‪ .‬تقددددوم كددددل مددددك ‪ Microsoft‬و‪ apple‬بإر دددداق اإلصدددددارات السددددابقة مددددك‬
‫ير ددد‬ ‫مددددك ‪Java‬‬ ‫‪ Java‬داخددددل نظددددام التشددددغيل اخلاصددددة ب مددددا‪ ،‬ولكددددك اإلصدددددار الثددددان‬
‫بعدددد) وع ددددما تفعدددل الشدددركتان ذلدددك‪ ،‬لدددك يةدددطر املسدددتمدمون لتثبيدددر بيئدددة التشدددغيل‬
‫ب نفس م سو يتم دعم ‪ Java‬علع مستوى نظام التشغيل‪.‬‬

‫تتدددا ادد السدددمة اخلاصدددة بالعمدددل علدددع أع نظدددام تشدددغيل بفةدددل برندددام جتميدددع يقدددوم‬
‫بإنشدددداء تعليمددددات الكددددود الدددديت تعمددددل مسددددتقلة عددددك أع نظددددام تشددددغيل‪ .‬نتي ددددة لدددد لك‪،‬‬
‫ميكددددك تشددددغيل بددددرام ‪ Java‬علددددع أع كمبيددددوتر ألن األكددددواد الدددديت تتدد د ل م ددددا ادد د‬
‫باذ از‪.‬‬ ‫وهلا بيئة تشغيل ‪ Java‬إىل كود حمل خا‬ ‫ال ام ميكك أن‬

‫أن بيئددددة التشددددغيل اخلاصددددة بددددد‪ Java‬مو ددددودة علددددع كمبيددددوتر حمدددددد‪ ،‬ددددإن‬ ‫بددددا رتا‬
‫بددددد‪ Java‬اددددي ف بصددددورة صددددحيحة‪ .‬وبفةددددل اإلمكانيددددات السددددابقة‬ ‫البايددددر كددددود اخلددددا‬
‫ال ظدددر‬ ‫الددديت ذكرناادددا‪ ،‬دددإن نظدددام ‪ Java‬ميكدددك أن يعمدددل علدددع أع نظدددام تشدددغيل بغد د‬
‫عك التطبي ‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫يددداات إمكانيدددة العمدددل علدددع أكثدددر مدددك نظدددام بال سدددبة لدددد‪ Java‬ذثيلد د ا‬ ‫إن مدددك أادددم‬
‫ألنددواع البيانددات‪ .‬علددع الددرغم مددك اتسددام كددل مددك لغدديت ‪ C‬و‪ C++‬ب ن ددا ميكددك العمددل ب مددا‬
‫علدددع أع نظدددام‪ ،‬إال ن مدددا يتد د ران بدددالتطبي ‪ .‬يعدددم اد د ا أن ح دددم أندددواع البياندددات األوليدددة‬
‫دددد أن ‪int‬‬ ‫والعمليدددات الددديت جتدددرى علي دددا يدددتغري مدددك نظدددام إىل كخدددر‪ .‬علدددع ادددبيل املثدددا ‪،‬‬
‫ندددوع بياندددات األعدددداد الصدددحيحة) علدددع أحدددد األنظمدددة ال يكدددون بالةدددرورة يف مثدددل ح دددم‬
‫‪ int‬علع نظام كخر‪ .‬وقد يتسبب ذلك يف مشاكل ع د العمل علع أنظمة خمتلفة‪.‬‬

‫ديدددد ح دددم ندددوع البياندددات األوليدددة وأداء العمليدددات الددديت‬ ‫يدددتم دائمد دا‬ ‫أمدددا يف لغدددة ‪Java‬‬

‫جتدددرى علي دددا‪ .‬علدددع ادددبيل املثدددا ‪ ،‬دائمد دا مدددا يكدددون ‪ int‬عبدددارة عدددك قيمدددة عددددد صدددحيح‬
‫‪Institute of‬‬ ‫‪ IEEE‬اخلاصدددة بدددد‬ ‫ددديا مدددع مواصدددفات ‪754‬‬ ‫تتكدددون مدددك ‪ 32‬بدددر وذلدددك ذا‬
‫‪ .Electrical‬وع دددددما تسددددتمدم أنددددواع البيانددددات األوليددددة يف‬ ‫‪and‬‬ ‫‪Electronics‬‬ ‫‪Engineers‬‬

‫‪ ، Java‬دددإن ذثيدددل اد د األندددواع والعمليدددات الددديت جتدددرى علي دددا تكدددون ابتدددة علدددع الدددرغم‬
‫مك اختال األنظمة‪.‬‬

‫تشدددتمل مكتبدددات الفئدددات اخلاصدددة بدددد‪ Java‬علدددع وا دددات لكدددل نظدددام تشدددغيل تتدددا‬
‫ددددد أن ئددددة ‪ Window‬التميليددددة وعمليددددات‬ ‫عليدددده بيئددددة تشددددغيل ‪ .Java‬علددددع اددددبيل املثددددا ‪،‬‬
‫‪ Sun‬و‪ Windows‬و‪ .MacOS‬وع دددد‬ ‫دددا تكدددون متاحدددة لكدددل مدددك ‪Solaris‬‬ ‫الت فيد د اخلاصدددة ب‬
‫ااددددتمدام مثددددل ادد د الوا ددددات الراددددومية‪ ،‬تقددددوم ‪ Java‬تلقائيدد دا بتحميددددل ع صددددر وا ددددة‬
‫ب ظدددام التشدددغيل‪ ،‬ذلدددك الع صدددر الدد ع يقابدددل نا دد ة‬ ‫االادددتمدام الرادددومية املالئدددم اخلدددا‬
‫لل از ايال ‪.‬‬

‫يف ال ايددددة يتةددددح أن نظددددام ‪ Java‬ب كملدددده ميكددددك العمددددل بدددده علددددع أع نظددددام بغدد د‬
‫ال ظر عك التطبي ‪.‬‬
‫مستوى مرتفع من األداء‪:‬‬

‫تددددازا بال سددددبة للغددددة حمولددددة‪ ،‬وذلددددك بسددددبب تطددددوير بددددرام جتميددددع‬ ‫أداء ‪Java‬‬ ‫يعتدد د‬
‫بدددددرام الت ميدددددع الفوريدددددة) الددددديت تقدددددوم بتطدددددوير البايدددددر كدددددود دون‬ ‫‪just-in-time‬‬ ‫)‪(JIT‬‬

‫التددد ري علددددع العمليددددات األخددددرى‪ .‬و بقًدد دا لشددددركة ‪ ،Sun‬يددددتم تشددددغيل بددددرام ‪ Java‬بددد ف‬
‫ارعة برام ‪ C/C++‬تقريبا‪.‬‬

‫دددة األصدددلية‪،‬‬ ‫ويدددل لغدددات ال‬ ‫ويدددل البايدددر كدددود أادددرع مدددك‬ ‫وعلددع الدددرغم مدددك أن‬
‫البياندددات‬ ‫نظدددرا ألنددده يف مرحلدددة وادددطع‪ ،‬إال أن تصدددميم ب يدددة ‪ Java‬يدددىلدع إىل تقليدددل تدددد‬
‫الوقدددر‪،‬‬ ‫أ ددداء وقدددر التشدددغيل‪ .‬عدددالوة ع لدددع ذلدددك‪ ،‬يدددتم ت فيددد عمليدددات متعدددددة يف نفددد‬
‫س السرعة الكلية مللفات ‪ Java‬الت في ية ملفات‪.exe.‬‬ ‫ا يىلدع إىل‬

‫تدددازا ع دددد مقارنت دددا باللغدددات‬ ‫علدددع الدددرغم مدددك كدددون مسدددتوى أداء ‪Java‬‬ ‫ملحوظي ي ي‬
‫يف املاردددد قددددد أقددددروا ب ن ددددا بطيئددددة‬ ‫املفسحددددرة األخددددرى‪ ،‬إال أن املدددد‬
‫دددددا لدر دددددة ذ دددددع اادددددتمدام ا يف ايدددداالت الددددديت ذثدددددل ي دددددا السدددددرعة‬
‫اإلحصددددائيات أن بددددرام ‪ Java‬تعمددددل بصددددورة‬ ‫عددددامالً م مدد دا‪ .‬وقددددررت بعدد د‬
‫ددددوال ‪ 10‬إىل ‪ 30‬مددددرة‪ .‬ويف حددد كددددان ا ددددا‬ ‫‪C/C++‬‬ ‫أبطددد مددددك بددددرام‬
‫دددك يف مدددا إذا كاندددر ال سدددمة األصدددلية مدددك ‪ Java‬ادددريعة بدر دددة كا يدددة‬
‫ددددركة ‪ Sun‬بتطددددوير السددددرعة الكليددددة لددددد‪Java‬‬ ‫للتطبيقددددات امل مددددة‪ ،‬قامددددر‬
‫مدددددك ‪ .Java‬عدددددالوة علدددددع ذلدددددك‪ ،‬قامدددددر ‪Sun‬‬ ‫مدددددك خدددددال اإلصددددددار الثدددددان‬
‫‪ Java‬الت في يدددة‪،‬‬ ‫ددداء مدددك نسدددمة ‪1.3‬‬ ‫مدددىلخرا بإصددددار تق يدددة ‪ HotSpot‬ك‬
‫وة األداء ب ‪ Java‬والكود الداخل ‪.‬‬ ‫األمر ال ع أدى إىل تصغري‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫باإلرددددا ة إىل ذلددددك‪ ،‬قامددددر العديددددد مددددك ددددركات إنشدددداء أدوات الدد د ام الشدد د رية‪،‬‬
‫مثدددددددل ‪ IBM‬و‪ Symantec‬و‪ Microsoft‬و‪ ،Metrowerks‬بتطدددددددوير بدددددددرام جتميدددددددع ‪ JIT‬الددددددديت‬
‫‪ Java‬إىل كددددود داخلدد د مطددددور لل دددداز ددددورا‪،‬‬ ‫بددددد‪applet‬‬ ‫ددددو البايددددر كددددود اخلددددا‬
‫حيد د يدددتم ت ايدددل اد د ا الكدددود عد د الويدددب قبدددل ت فيد د مبا دددرة‪ .‬ونتي دددة لظ دددور بدددرام‬
‫‪ Java‬يف‬ ‫دددركات إنشددداء املتصدددفحات بايدددادة ادددرعة تشدددغيل ‪applet‬‬ ‫جتميدددع ‪ ،JIT‬قامدددر‬
‫‪Netscape‬‬ ‫م ت دددددات م‪ .‬وقدددددد اادددددتفادت اإلصددددددارات القليلدددددة السدددددابقة مدددددك كدددددل مدددددك‬
‫ددددددا عددددددل املتصددددددفحات‬ ‫‪ Internet‬مددددددك برنددددددام جتميددددددع ‪،JIT‬‬ ‫‪ Navigator‬و‪Explorer‬‬

‫املتوا قدددة مدددع ‪ Java‬والددديت ال تسدددتفيد مدددك تك ولو يدددا ‪ JIT‬تبددددو أبطد د ع دددد مقارنت دددا ب د د‬
‫املتصفحات‪.‬‬

‫لغة تستطيع تنفيذ عمليات متعددة يف نفس الوقت‪:‬‬

‫الوقدددر إحددددى اإلمكانيدددات امل مددددة يف ‪،Java‬‬ ‫يعتددد ت فيددد عمليدددات متعدددددة يف نفددد‬
‫حيددد أن ددددا تتدددديح مللفددددات ‪ .exe‬القدددددرة علددددع دعددددم ت فيددد العديددددد مددددك العمليددددات يف وقددددر‬
‫لدددا بدد ادد اإلمكانيدددة وبدد تعددددد امل دددام‪ ،‬تعددددد امل دددام ادددو قددددرة‬ ‫واحدددد‪ .‬و دددب أال‬
‫نظددددام التشددددغيل علددددع تشددددغيل أكثددددر مددددك برنددددام يف الوقددددر ذاتدددده‪ ،‬يف حدددد أن تعدددددد‬
‫العمليات يسمح لل نام بت في العديد مك امل ام يف وقر واحد‪.‬‬

‫علددددع اددددبيل املثددددا يف البيئددددة الدددديت ال تتمتددددع بإمكانيددددة تعدددددد العمليددددات‪ ،‬ال ميكددددك‬
‫لل ندددام ت فيددد أكثدددر مدددك عمليدددة واحددددة‪ .‬حيددد تسدددتمدم اذملدددة التكراريدددة للحدددد‬
‫ددددب ت فيددد اا مثددددل‬ ‫لتتبددددع امل مددددة احملددددددة اياليددددة‪ .‬و دددددد اددد اذملددددة امل مددددة الدددديت‬
‫ت شددديا حمتويدددات نا د د ة أو تتبدددع مددددخالت املسدددتمدم أو باعدددة مسدددت د) دددم ت قدددل اد د‬
‫امل مددددة إىل اإل ددددراء اإل ددددراءات) امل ااددددبة‪ .‬ومب ددددرد أن ت فدد د امل مددددة‪ ،‬ميكددددك أن تبدددددأ‬
‫دددب أن‬ ‫م مدددة أخدددرى‪ .‬ونظدددرا ألنددده ال ميكدددك التعامدددل ادددوى مدددع م مدددة واحددددة قدددا‪،‬‬
‫امل مة ايالية قبل التعامل مع م مة ديدة‪.‬‬ ‫ي تظر ال ظام حتع ت ت‬

‫دددددة مثدددددل ‪ C‬و‪ C++‬تسدددددمح للمددد د م بتطبيدددد تعددددددد‬ ‫علدددددع الدددددرغم مدددددك أن لغدددددات ال‬
‫العمليات‪ ،‬إن ذلك األمر يستغرق الكثري مك اذ د مقارنة بد‪.Java‬‬

‫الوقددددر‪ .‬وميكددددك‬ ‫واكددد ا ميك ددددك تعددددي العديددددد مددددك العمليددددات للت فيددد يف نفددد‬
‫يد د يدددتم التعامدددل مدددع‬ ‫سد د التفاعدددل مدددع املسدددتمدم ‪،‬‬ ‫أن تدددىلدع اد د العمليدددات إىل‬
‫العديدددد مدددك الطلبدددات يف وقدددر واحدددد‪ .‬وكددد لك تدددتم إتاحدددة األوقدددات اخلاصدددة باادددت ابة‬
‫الوقر الفعل ‪.‬‬

‫ومدددك األمثلدددة اذيددددة علدددع العمليدددات الددديت يدددتم ت فيد د اا إمكانيدددة اادددتعادة الد د اكرة‬
‫غددددري املسددددتمدمة‪ .‬وادد د اإلمكانيددددة ادد د عمليددددة ذات أولويددددة م مفةددددة ت فدد د يف نفدد د‬
‫الوقدددر مدددع م دددام أخدددرى‪ .‬واد د تراقدددب الكائ دددات وكدددل اإل دددارات إلي دددا‪ ،‬مدددع الدددتمل‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫الوقدددر دون‬ ‫مدددك الكائ دددات غدددري املسدددتمدمة‪ .‬واكد د ا ت فددد العمليدددات األخدددرى يف نفد د‬
‫حدو أع مشكالت أو أعطا ‪.‬‬

‫وا دددددا مثدددددا كخدددددر علدددددع تعددددددد العمليدددددات وادددددو ال ندددددام الددد د ع يددددددعم اإلدخدددددا‬
‫واإلخددددرا والتفاعددددل مددددع املسددددتمدم‪ ،‬مثددددل أخدد د مدددددخالت صددددوت الوقددددر الفعلدد د مددددك‬
‫وقدددر ردددبط ا مدددع صدددورة يدددديو يدددتم تشدددغيل ا علدددع الشا دددة‪ .‬فد د‬ ‫ميكر دددون يف نفد د‬
‫ركدددددات دددددفا‬ ‫اددد د ايالدددددة‪ ،‬ادددددو يقدددددوم اددد د ا ال ظدددددام مبطابقدددددة الصدددددوت مدددددع‬
‫ال يك يظ رون علع ا ة الكمبيوتر يف الوقر الفعل ‪.‬‬ ‫األ ما‬

‫اد د ا ال ندددام السدددمع املرئد د مدددك صدددعوبة تطددداب الصدددورة مدددع‬ ‫واكد د ا اددديتمل‬
‫الصوت‪ ،‬وا غالبا أصعب مشكالت ال ام السمعية املرئية‪.‬‬

‫علدددع الدددرغم مدددك أند ده مدددك الصدددعب تطدددوير مثدددل اد د ا ال ندددام باادددتمدام ‪ Java‬حاليد دا‪،‬‬
‫دددإن اإلصددددارات املسدددتقبلية قدددد تتسدددم بسدددرعة كا يدددة لتقدددوم بدد لك‪ .‬مدددع ذلدددك‪ ،‬يعدددد ادد ا‬
‫مثاالً يدا علع العمليات اليت تتعامل مع أ ااء خمتلفة مك ال نام ‪.‬‬

‫علددددع الددددرغم مددددك ذلددددك‪ ،‬وحتددددع يددددتم االاددددتفادة مددددك قددددوة تعدددددد العمليددددات بصددددورة‬
‫دددب علدددع األنظمدددة الددديت يدددتم تشدددغيل كدددود ‪ Java‬علي دددا أن تقدددوم كدد لك بددددعم‬ ‫كاملدددة‪،‬‬
‫العمليدددات‪ .‬ونظدددرا ألن كدددل مدددك تعددددد امل دددام املدددوزع وتعددددد العمليدددات امدددا األادددام لكدددل‬
‫عمليدددات تطدددوير نظدددم التشدددغيل ايديثدددة‪ ،‬دددإن غالبيدددة نظدددم التشدددغيل ادددو تكدددون‪ ،‬يف‬
‫املسددددتقبل القريددددب‪ ،‬أعلددددع مددددك املتواددددا‪ .‬أمددددا بال سددددبة للوقددددر ايددددال ‪ ،‬ت ايددددد مددددك‬
‫إمكانيدددات تعددددد العمليدددات اخلاصدددة بدددد‪ Java‬عدددك ريد د اياكدددل الد د ظم الددديت يدددتم علي دددا‬
‫تشغيل ‪.Java‬‬
‫لغة ديناميكية‪:‬‬

‫دددددب أن تتسدددددم كدددددل بيئدددددات عمليدددددات املعاذدددددة املوزعدددددة بالدي اميكيدددددة‪ .‬وقدددددد ت‬
‫تصدددميم ‪ Java‬لتت اادددب مدددع البيئدددات املتطدددورة‪ .‬واد د اللغدددة قدددادرة علدددع دمد د اإلمكانيدددات‬
‫ال ظددددر عددددك املكددددان الدددد ع أتددددر م دددده ادددد اإلمكانيددددات ‪ -‬نظددددام‬ ‫اذ ديدددددة‪ ،‬بغدددد‬
‫الكمبيوتر احملل أو الشبكات احمللية أو الشبكات وااعة ال طاق أو اإلنرتنر‪.‬‬

‫دددة‪،‬‬ ‫الددديت تددددعم اادددتمدام الكائ دددات‪ ،‬كمدددا يف غالبيدددة بيئدددات ال‬ ‫يف بيئدددات ‪C++‬‬

‫ددددون كددددل اددددطور الكددددود ب نفسددد م‪ .‬وبدددددالً مددددك ذلددددك‪ ،‬يعتمدددددون علددددع‬ ‫ال يكتددددب امل‬
‫موعدددة كدددبرية مدددك مكتبدددات الفئدددات لايدددادة إمكانيدددات الددد ام اخلاصدددة ب دددم‪ .‬لدددو‬
‫كددددان املدد د م يريددددد أن يةددددي دعددددم إلمكانيددددة مددددا‪ ،‬مثددددل القدددددرة علددددع تشددددغيل صددددور‬
‫الفيديو‪ ،‬إنه ببسا ة يدم مكتبة ئات ديدة ميك ا معاذة ا امل مة‪.‬‬

‫األحيدددان‪ ،‬يدددتم توزيدددع اد د املكتبدددات بطدددرق ال ميكدددك للمد د م الدددتحكم‬ ‫يف بعد د‬
‫ب دددا‪ ،‬مثلمدددا ودددد مدددع نظدددام التشدددغيل أو بيئدددة ال وا ددد ‪ .‬يف اددد ايددداالت‪ ،‬رمبدددا تصدددل‬
‫رصدددة إعدددادة جتميدددع ال ندددام‬ ‫ددددي املكتبدددات للعميدددل قبدددل أن يتدددا للمد د م‬ ‫عمليدددات‬
‫باادددتمدام ا‪ .‬وع ددددما يشدددغل العميدددل نسدددمة قدميدددة مدددك م دددت املد د م ‪ ،‬ووددداو أن يددددم‬
‫مكتبددددة حمد ددددة مثددددل ادددد ‪ ،‬يكددددون ا ددددا احتمددددا حدددددو املشددددكالت‪ .‬ونظددددرا ألن‬
‫مدددع انيدددة للتعامدددل مدددع مكتبدددة الفئدددات احملد دددة‪ ،‬مدددك احملتمدددل أن يتوقد د‬ ‫ال ندددام‬
‫عك العمل‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫لددددو كانددددر الفرصددددة قددددد أتيحددددر للمددد م يف بددددادجم األمددددر ليعيددددد جتميددددع ال نددددام‬
‫باادددددتمدام مكتبدددددة الفئدددددات احملد دددددة‪ ،‬دددددم يتددددديح اددددد ا ال ندددددام للعمدددددالء يف الوقدددددر‬
‫شدددلر‬ ‫دددإن لغدددة ‪C++‬‬ ‫دددد مشدددكالت إ القًددا‪ .‬ولدد ا‬ ‫امل اادددب‪ ،‬لكدددان مدددك املمكدددك أال‬
‫يف تول ا املشكالت‪.‬‬

‫دددد أن‬ ‫دددإذا قارندددا بددد إمكانيدددات ‪ C++‬احملددددودة يف اددد ا اجملدددا وبددد لغدددة ‪،Java‬‬
‫لغدددة ‪ Java‬قدددادرة علدددع دمد د مكتبدددات الفئدددات اذديددددة والعمليدددات ومدددتغريات الكائ دددات‬
‫ديدددد‬ ‫ظدددام‪ .‬كمدددا ميكدددك للغدددة ‪Java‬‬ ‫أ ددداء وقدددر التشدددغيل‪ ،‬بددددون اخلدددو مدددك توقد د ال‬
‫عددددل مددددك‬ ‫ددددا‬ ‫نددددوع الفئددددة وإمكانيات ددددا أ دددداء وقددددر التشددددغيل مددددك خددددال االاددددتعالم‪،‬‬
‫ئدددددات ديددددددة أو إيقدددددا العمليدددددة ب كملددد د ا ب ددددداء علدددددع نتدددددائ اددد د‬ ‫املمكدددددك دمددد د‬
‫االاددددتعالمات‪ .‬وادد د اإلمكانيددددات تةدد دف علددددع بددددرام ‪ Java‬مسددددتوى مددددك املرونددددة أ دددداء‬
‫ة األخرى‪.‬‬ ‫قيقه مع غالبية لغات ال‬ ‫التشغيل‪ ،‬األمر ال ع ال ميكك‬
‫الكلمات األساسية (املفتاحية) ‪:Java Keywords‬‬

‫إن الكلمدددات األااادددية هلدددا مع دددع حمددددد بال سدددبة للمرت دددم‪ .‬يوردددح اذددددو التدددال‬
‫‪ true,‬كلمدددددات‬ ‫‪false,‬‬ ‫الكلمدددددات ‪null‬‬ ‫الكلمدددددات األااادددددية يف لغدددددة ‪ ،Java‬ال تعتددد د‬
‫أااادددية‪ .‬ال ميك دددك اادددتمدام أع مدددك الكلمدددات السدددابقة يف تسدددمية الفئدددات أو الطدددرق‬
‫تددددوع علددددع مع ددددع حمدددددد لكددددل‬ ‫دددددر اإل ددددارة أن لغددددة ‪ Java‬ال‬ ‫أو املددددتغريات‪ .‬كمددددا‬
‫‪ const,‬كلمدددات أااادددية‪ ،‬علدددع الدددرغم مدددك أن دددا‬ ‫كلمددديت ‪goto‬‬ ‫الكلمدددات األااادددية؛‬
‫تستمدم حتع اآلن‪.‬‬

‫الكلمات املفتاحية للغة جافا ‪Java keywords‬‬


‫‪abstract‬‬ ‫‪assert‬‬ ‫‪boolean‬‬ ‫‪break‬‬ ‫‪Byte‬‬
‫‪case‬‬ ‫‪catch‬‬ ‫‪char‬‬ ‫‪class‬‬ ‫‪continue‬‬
‫‪default‬‬ ‫‪do‬‬ ‫‪double‬‬ ‫‪else‬‬ ‫‪extends‬‬
‫‪final‬‬ ‫‪finally‬‬ ‫‪float‬‬ ‫‪for‬‬ ‫‪If‬‬
‫‪implements‬‬ ‫‪import‬‬ ‫‪instanceof‬‬ ‫‪int‬‬ ‫‪interface‬‬
‫‪long‬‬ ‫‪native‬‬ ‫‪new‬‬ ‫‪package‬‬ ‫‪private‬‬
‫‪protected‬‬ ‫‪public‬‬ ‫‪return‬‬ ‫‪short‬‬ ‫‪static‬‬
‫‪strictfp‬‬ ‫‪super‬‬ ‫‪switch‬‬ ‫‪synchronized‬‬ ‫‪This‬‬
‫‪throw‬‬ ‫‪throws‬‬ ‫‪transient‬‬ ‫‪try‬‬ ‫‪Void‬‬
‫‪volatile‬‬ ‫‪while‬‬ ‫‪const‬‬ ‫‪goto‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪Introduction to Java Applications‬‬
‫برناجمك األول يف لغة ‪:Java‬‬

‫ادد د بدأ يف ادد د ا الفصددددل بكتابددددة أو برنددددام ل ددددا بلغددددة ‪ ،Java‬وادد د عمد إىل كتابددددة‬
‫عدددددة نسدد د مددددك ادد د ا ال نددددام ب ددددد التدد د قلم مددددع أاددددلوب كتابددددة بددددرام ‪ ،Java‬ومددددك‬
‫الطبيعدد د أال نسددددتطيع مددددك البدايددددة اإلحا ددددة بكددددل دقددددائ ع اصددددر اللغددددة‪ ،‬لدد د ا ادد د عود‬
‫لدرااة تلك الع اصر بالتفاصيل يف الفصو التالية ‪ -‬بإذن اهلل‪.‬‬

‫ددددددب االنتبددددددا إىل أن لغددددددة ‪ Java‬ذيحددددددا بشدددددددة بددددد ايددددددرو الصددددددغرية‬ ‫ملحوظي ي ي‬
‫وايددددرو الكددددبرية‪ ،‬لدد د ا ن صددددح بددددالتحق دائمدد دا مددددك حالددددة األحددددر يف‬
‫ال ام املكتوبة‪.‬‬

‫للغة ‪:Java‬‬ ‫ال نام التال بااتمدام أع حمرر نصو‬ ‫ميك ك البدء بكتابة ن‬

‫‪class Welcome1‬‬
‫‪{ // main method begins execution of Java application‬‬
‫) ‪public static void main( String [] args‬‬
‫{‬
‫;) "!‪System.out.println( "Welcome to Java Programming‬‬
‫‪} // end method main‬‬
‫‪} // end class Welcome1‬‬

‫فددددرب ادد د ا ال نددددام يف ملدد د ومددددل االمتددددداد‪ java.‬مددددثالً‪ .Welcome1.java :‬إذ لددددك‬ ‫قددددم‬
‫ي ته باالمتداد‪ java.‬كاملة غري م قوصة‪.‬‬ ‫يتم ترمة ا ا املل إذا‬
‫حتليل الربنامج‪:‬‬

‫ئدد د ًة ديدددددةً لتةددددا إىل‬ ‫يبدددددأ ال نددددام بالكلمددددة ‪ class‬الدددديت تعددددم أن ددددا ادد د عر‬
‫ئدددات ‪ ،Java‬ويلد د اد د الكلمدددة اادددم الفئدددة والد د ع ادددو اادددم ال ندددام ‪ ،‬و دددب أن ن خد د‬
‫بع االعتبار املالحظات التالية‪:‬‬

‫ئ ًة واحدةً علع األقل‪.‬‬ ‫يتةمك كل برنام‬ ‫•‬

‫مدددل اد د الفئدددة اادددم امللد د ولكدددك بغدددري االمتدددداد‪ java.‬املو دددود يف اادددم‬ ‫دددب أن‬ ‫•‬

‫املل اياوع‪.‬‬
‫الكلمتدددددددان ‪Welcome‬‬ ‫ذيدددددددا لغدددددددة ‪ Java‬بددددد د األحدددددددر الصدددددددغرية والكدددددددبرية‪،‬‬ ‫•‬

‫و‪ welcome‬اما كلمتان غري متطابقت ‪.‬‬


‫ددددرد‬ ‫ال ومددددل حمددددر االنتقددددا إىل اددددطر ديددددد أع مع ددددع يف لغددددة ‪ ،Java‬واددددو‬ ‫•‬

‫اصدددل بد د كلمدددت ‪ ،‬مثلددده مثدددل الفدددراو أو عالمدددة اذدولدددة‪ .‬وميكدددك الفصدددل بد د‬


‫دددددرد‬ ‫أع كلمدددددت باادددددتمدام أع عددددددد مدددددك الفراغدددددات أو حمدددددر اذدولدددددة أو‬
‫االنتقدددا إىل ادددطر ديدددد‪ .‬وميكدددك االادددتفادة مدددك اد د امليددداة يف ت سدددي ال ندددام‬
‫يدددد د يظ ددددددر بطريقددددددة وارددددددحة ومرتبددددددة تسدددددداعد يف ددددددم الكددددددود‪ ،‬وايالددددددة‬
‫االادددتث ائية الوحيددددة اد د ادددطر التعليد د حيد د ميثدددل حمدددر االنتقدددا لسدددطر ديدددد‬
‫ن اية التعلي ‪.‬‬
‫ددددب أن يدد د ت بعددددد ااددددم الفئددددة احملددددر «{» الدد د ع ودددددد بدايددددة كتلددددة ديدددددة‪،‬‬ ‫•‬

‫ا الكتلة باحملر «}»‪.‬‬ ‫و ب أن ت ت‬

‫وتدددوع السدددطر الثدددان علدددع تعليددد ‪ ،‬وادددو الددد ع يبددددأ بددداحملر «‪ »//‬وميتدددد التعليددد‬
‫حتدددع ن ايدددة السدددطر‪ .‬والتعليد د ادددو عبدددارة عدددك تورددديح للمد د م يت االددده املرت دددم‪ .‬ميكدددك‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫«*‪ »/‬يف بدايدددددة‬ ‫اادددددتمدام ريقدددددة التعليددد د متعددددددد األادددددطر وذلدددددك بكتابدددددة احملدددددر‬
‫«‪ »*/‬ع د ن اية التعلي ‪.‬‬ ‫التعلي واحملر‬

‫السدددطر الثالد د مدددك ال ندددام ادددو السدددطر األو يف تعريد د الفئدددة‪ ،‬واذددداء األاااد د‬
‫يه او‪:‬‬

‫)( ‪void main‬‬

‫واددددو عبددددارة عددددك تعريدد د ملددددا يسددددمع ريقددددة ‪ ،method‬والطريقددددة ادد د ببسددددا ة وظيفددددة‬
‫ت تمدد د إىل ئددددة مددددا‪ ،‬وت خدد د ادد د الوظيفددددة ع ددددد ت فيدد د اا واددددطاء مددددك أادددداط حمددددددة‬
‫وتعيددددد قيمددددة مددددك اددددا حمدددددد أيةدد دا‪ ،‬الكلمددددة ‪ main‬ذثددددل ااددددم ادد د الطريقددددة أو‬
‫الوظيفددددة الدددديت ادد د عر ا الحقًدد دا‪ ،‬والكلمددددة ‪ void‬تعدد د عددددك اددددا القيمددددة الدددديت تعيددددداا‬
‫الطريقدددة‪ ،‬واد د ا دددا «ال د د ء»‪ .‬الطريقدددة ‪ main‬ا دددا لدددك تعيدددد ع دددد ت فيد د اا أيدددة قيمدددة‪،‬‬
‫د د لدددك تسدددتمدم ب دددد ايصدددو علدددع قيمدددة مدددا وإادددا ملدددا ادددتىلديه مدددك ك دددار‬ ‫وبالتدددال‬
‫انبية ذات صلة مبحيا العمل‪.‬‬

‫توردددع وادددطاء الطريقدددة عدددادة بددد القواددد )( ولكدددل واددديا اادددم يسدددبقه ادددا اددد ا‬
‫ددددا السدددداب ت خدد د الطريقددددة ‪ main‬وادددديطًا أتدددده ‪ args‬مددددك الدد د ما‬ ‫الوادددديا‪ ،‬ويف برنا‬
‫][ ‪.String‬‬

‫رى‪ ،‬التصددددريح عددددك وادددديا الطريقددددة ‪main‬‬ ‫‪ -‬ددددرع غالبددددا‪ ،‬كمددددا ادددد‬ ‫تلمي ي ي ي ي ي ي‬
‫بالصيغة‪:‬‬
‫][ ‪String args‬‬
‫أو‬
‫‪String [] args‬‬
‫وكالامدددا مقبدددولت ‪ ،‬إال أنددده مدددك ال احيدددة العمليدددة يبددددو اادددتمدام الصددديغة‬
‫األوىل أكثر يوعا‪ ،‬علما ب ن الطريقة الثانية تبدو أكثر م طقية‪.‬‬
‫ردددددروريا أن نطلدددد االادددددم ‪ args‬علدددددع ادددد ا الواددددديا‬ ‫‪-‬وباملقابدددددل‪ ،‬لدددددي‬
‫وميكدددددك اادددددتمدام أع اادددددم دددددريطة أن ال يبددددددأ بدددددرقم‪ ،‬كمدددددا أن دددددو‬
‫االام غري حمدود‪.‬‬

‫ذثدددل كدددل مدددك الكلمدددت ‪ public‬و‪ static‬صدددفةً مدددك الصدددفات املميددداة للطريد د ‪ ،‬الصدددفة‬
‫‪ public‬تعدددم أنددده بإمكدددان مفسحدددر ‪ Java‬كمدددا بإمكدددان كدددل الفئدددات األخدددرى اادددتدعاء‬
‫اد د الصدددفة ال يعدددم و دددود أخطددداء قواعديدددة يف ال ندددام إال أنددده‬ ‫اد د الطريقدددة‪ ،‬وحد د‬
‫وددددددو دون ت فيددددد املفسحددددددر هلددددد الطريقددددددة‪ ،‬ويف الواقددددددع ميكددددددك القددددددو أن الوظيفددددددة‬
‫األاااددددية للمفسحددددر اددد ت فيددد الطريقددددة ‪ .main‬فددد حالددددة غيدددداب الطريقددددة ‪ main‬وددددو‬
‫ذلدددك دون ت فيد د ال ندددام ‪ .‬ولكدددك غياب دددا ال ميثدددل خطًد دا وإادددا اخلطد د يف حماولدددة ت فيد د‬
‫دددد ذات دددا برنا ًد دا ت فيد د يا بد دل‬ ‫برندددام ك د د ا‪ ،‬إذ قدددد حنتدددا لرتمدددة ئدددة ال تشدددكل‬
‫ع صرا تستمدمه تطبيقات وبر يات أخرى‪.‬‬

‫لدددد ا مع دددددع أكثدددددر تعقيددددددا ادددد رت تورددددديحه إىل صدددددو الحقدددددة‪.‬‬ ‫أمدددددا الصدددددفة ‪static‬‬

‫ويكف اآلن أن ن كر أن ا الصفة ال تطل علع كل الطرق‪.‬‬

‫ئددد ًة‬ ‫‪Java‬‬ ‫دددب أن يتةدددمك أع تطبيددد‬ ‫يددد‬ ‫مدددا ادددب‬ ‫وبشدددكل عدددام ميكدددك تلمدددي‬
‫واحد ًة علع األقل‪:‬‬

‫مل اام املل ال ع خنان يه ال نام‬ ‫•‬

‫تتةمك علع األقل) ريقة‪:‬‬ ‫•‬

‫‪ public‬و‪static‬‬ ‫تتميا بالصفت‬ ‫•‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫تسمع ‪main‬‬ ‫•‬

‫ما ][ ‪String‬‬ ‫هلا وايا مك ال‬ ‫•‬

‫ذتلدددك كدددل ريقدددة سدددما يبدددد بددداحملر «{» الددد ع وددددد بدايدددة كتلدددة الطريقدددة‪،‬‬
‫ا الكتلة باحملر «}»‪.‬‬ ‫و ب أن ت ت‬

‫يشددددكل سددددم الطريقددددة ‪ ،main‬واددددو يتدد د ل ا ددددا مددددك ااددددتدعاء‬ ‫السددددطر اخلددددام‬
‫لطريقددددة مددددع وادددديط ا‪ ،‬واددد الطريقددددة ‪ println‬الدددديت ت خددد وادددديطًا مددددك الددد ما السددددلة‬
‫ددددرى اخلددددر القياادد د مسددددبوقًا مبحددددر االنتقددددا إىل‬ ‫حمر يددددة لتظ ددددر قيمتدددده علددددع‬
‫اطر ديد‪ ،‬ويكتب وايا ا الطريقة ب القوا )(‪.‬‬

‫دددب وردددع السالادددل احملر يدددة أو العبدددارات ال صدددية بد د عالمددديت اقتبدددام‬ ‫ملحوظي ي ي‬
‫مادو ت "" للداللة علع أن ا القيمة ا السلة حمر ية ابتة‪.‬‬

‫ددددب أن نر ددددد إلي ددددا‪ ،‬إذ‬ ‫يسددددتطيع مفسددددر ‪ Java‬ااددددتمدام الطريقددددة ‪println‬‬ ‫ولكددد‬
‫ال ميكددددك أن تتوا ددددد ددددرق ‪ Java‬إال رددددمك كائ ددددات ‪ ،Objects‬الدددديت ميكددددك أن تكددددون‬
‫ئددددةً أو أمثدددداالً ‪ instances‬مددددك ئددددات‪ ،‬والطريقددددة ‪ println‬ت تمدددد للفئددددة ‪ out‬الدددديت ت تمدددد‬
‫بدوراا إىل الفئة ‪.System‬‬

‫ميكددددك ايصددددو علددددع معلومددددات كاملددددة عددددك ئددددات ‪ Java‬القيااددددية بددددالر وع إىل‬
‫باللغددددددة‪ ،‬وذلددددددك بفددددددتح امللددددد ‪ index.html‬املو ددددددود يف اجمللددددددد‬ ‫دددددداء التو يددددد اخلددددددا‬
‫‪ ،docs/api‬ويب الشكل التال عررا لتو ي معلومات) الفئة ‪:System‬‬
‫انت ددددع بدددداحملر «;» اصددددلة م قو ددددة‪ ،‬والدددديت‬ ‫ددددب مالحظددددة أن السددددطر اخلددددام‬
‫تشدددري إىل انت ددداء التعليمدددة‪ ،‬وتعتد د الفاصدددلة امل قو دددة ردددرورية ددددا بعدددد كدددل تعليمدددة يف‬
‫برام ‪ .Java‬ويىلدع غياب ا إىل إظ ار خط قواعدع أ اء الرتمة‪.‬‬

‫ترمجة الربنامج‪:‬‬

‫قبددددل ت فيددد ال نددددام السدددداب ‪ ،‬البددددد مددددك ترمتدددده أوالً‪ ،‬ويددددتم ذلددددك بتشددددغيل املرت ددددم‬
‫‪ java‬بكتابة األمر‪:‬‬

‫‪javac Welcome1.java‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫دددإن املرت دددم يقدددوم بتورددديح ذلدددك‪ ،‬بإعطددداء رقدددم‬ ‫يف حالدددة و دددود أخطددداء يف ال ندددام‬
‫السددددطر الدد د ع وتددددوع علددددع اخلطدد د مددددع توقعدددده لسددددبب اخلطدد د ‪ .‬وحاملددددا تصددددحح أخطدددداء‬
‫ال نام ميك ك القيام بت في بكتابة األمر‪:‬‬

‫‪java Welcome1‬‬

‫ليظ ر ع دئ السطر املطلوب كالتال ‪:‬‬


‫استخدام املحرر ‪:Kawa‬‬

‫باللغدددة ‪ Java‬لكتابدددة الد د ام ‪ ،‬ادددتظ ر بعد د‬ ‫خدددا‬ ‫ع دددد اادددتمدام حمدددرر نصدددو‬
‫يدددداة‪ ،‬كدددداللون األزرق للكلمددددات املفتاحيددددة للغددددة ‪ ،Java‬واألخةددددر‬ ‫الكلمددددات بدد د لوان‬
‫للتعليقدددددات وغريادددددا‪ ،‬ويسددددداعد حمدددددرر اللغدددددة علدددددع إكتشدددددا األخطددددداء اإلمالئيدددددة دددددور‬
‫حدو ا‪.‬‬

‫لرتمدددة ال ندددام بعدددد حفظددده باالمتدددداد‪ java.‬قدددم بدددال قر علدددع األمدددر «‪ »compile‬مدددك‬
‫القائمددددة «‪ »Build‬أو الةددددغا علددددع املفتددددا «‪ »F7‬يددددتم الرتمددددة لتظ ددددر الراددددالة التاليددددة يف‬
‫حالة خلو ال نام مك األخطاء‪:‬‬

‫الفاصددددلة‬ ‫أمددددا يف حالددددة و ددددود أخطدددداء تظ ددددر راددددالة كالتاليددددة والدددديت تعددد عددددك حددد‬
‫امل قو ة مك السطر اخلام ‪:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫لددددو مددددك األخطدددداء ددددم قددددم بتشددددغيله‬ ‫قددددم بتصددددحيح ال نددددام واعددددد ترمتدددده إىل أن‬
‫بددددال قر علددددع األمددددر «‪ »Run‬مددددك القائمددددة «‪ »Build‬أو بالةددددغا علددددع املفتددددا «‪ »F4‬يظ ددددر‬
‫الت في كالتال ‪:‬‬

‫أمثلة وحاالت للتعامل مع اخلرج‪:‬‬

‫ميكددددك باعددددة العبددددارة السددددابقة بعدددددة ددددرق‪ ،‬علددددع اددددبيل املثددددا ال نددددام التددددال‬
‫ال ع يستمدم التعليمت ‪:print, println‬‬

‫‪// Printing one line of text with multiple statements.‬‬


‫{ ‪public class Welcome2‬‬
‫) ][ ‪public static void main( String args‬‬
‫{‬
‫;) " ‪System.out.print( "Welcome to‬‬
‫;) "!‪System.out.println( "Java Programming‬‬
‫}‬
‫}‬

‫!‪Welcome to Java Programming‬‬


‫التعليمدددات السدددابقة‬ ‫مىللدد مدددك عددددة أادددطر باادددتمدام نفدد‬ ‫كمدددا ميك دددا باعدددة ندد‬
‫كالتال ‪:‬‬

‫‪// Printing one line of text with multiple statements.‬‬


‫{ ‪public class Welcome3‬‬
‫) ][ ‪public static void main( String args‬‬
‫{‬
‫(‪System.out.println‬‬
‫;) "!‪"Welcome\nto\nJava\nProgramming\t‬‬
‫}‬
‫}‬

‫‪Welcome‬‬
‫‪to‬‬
‫‪Java‬‬
‫‪Programming‬‬ ‫!‬

‫يعددد د ايدددددر «‪ »\n‬عدددددك «السدددددطر اذديدددددد» وتسدددددمع اددد د ال وعيدددددة مدددددك احملدددددار‬
‫السلسددددلة‬ ‫بددددد«االاددددل اهلددددروب»‪ ،‬فدددد كددددل مددددرة تظ ددددر ي ددددا السلسددددلة «‪ »\n‬يف ندد د‬
‫املطلددددوب باعت ددددا‪ ،‬يددددتم ورددددع املىل ددددر يف بدايددددة السددددطر التددددال ‪ .‬للحصددددو علددددع اددددطر‬
‫ددددارو‪ ،‬نقددددوم بكددددل بسددددا ة بااددددتمدام حددددريف «اددددطر ديددددد» خلدد د بعةدد د ما الددددبع ‪.‬‬
‫ا ورد ا ا بعةا مك االال اهلروب الشائعة يف اللغة‪:‬‬

‫وظيفتها‬ ‫س س ة اهلروب‬
‫اطر ديد‪ ،‬ورع املىل ر يف بداية السطر التال‬ ‫‪\n‬‬
‫ريددددك املىل ددددر مسددددا ة ‪ 5‬مسددددا ات ارغددددة‬ ‫مسددددا ة اذدولددددة األ قيددددة‪،‬‬
‫‪\t‬‬
‫لألمام‬
‫االنتقا إىل صفحة ديدة‬ ‫‪\f‬‬
‫إعددددادة املىل ددددر ‪ ،carriage return‬ورددددع املىل ددددر علددددع بدايددددة السددددطر‬
‫‪\r‬‬
‫ايال دون التقدم للسطر التال‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫وظيفتها‬ ‫س س ة اهلروب‬
‫اخللف ‪backspace‬‬ ‫اي‬ ‫‪\b‬‬
‫الش املعكوم ‪ ،backslash‬تستمدم لطباعة احملر «\»‬ ‫\\‬
‫عالمة اقتبام مادو ة‪ ،‬تستمدم لطباعة احملر «"»‬ ‫"\‬

‫عرض النصوص يف صناديق احلوار ‪:Dialog Boxes‬‬

‫كاندددر الد د ام السددداب تتعامدددل مدددع دددرق اخلدددر األااادددية اخلاصدددة بال ظدددام واد د‬
‫‪ »Character‬وادددو نظدددام‬ ‫صدددية ‪User Interface CUI‬‬ ‫مدددا تسدددمع بدددد«وا دددة املسدددتمدم ال‬
‫يسددددتمدم ا ددددة اددددوداء نصددددية إلدخددددا األوامددددر إىل الكمبيددددوتر واددددو نظددددام غددددري مددددريح‬
‫ألنه ال يو ر أع اذبية للتطبي ‪.‬‬

‫‪Graphical‬‬ ‫‪User‬‬ ‫ذتلددددك لغددددة ‪ Java‬نظامدد دا كخددددرا واددددو «وا ددددة املسددددتمدم الراددددومية‬
‫موعدددة مدددك األدوات تتددديح للمسدددتمدم التفاعدددل مدددع ال ندددام‬ ‫‪ »Interface‬يسدددتمدم‬ ‫‪GUI‬‬

‫موعدددة‬ ‫مثدددل ال وا د د والقدددوائم واألزرار‪ .‬ولب ددداء وا دددة املسدددتمدم الرادددومية ‪ GUI‬حنتدددا‬
‫خمتلفددددة مددددك األدوات‪ ،‬وادد د تطرق ا ددددا إلنشدددداء وا ددددات ‪ GUI‬بااددددتمدام مكتبددددة أدوات‬
‫الددددددد‪ ،Swing‬إذ ا سددددددتمدم أداة صددددد ادي الراددددددائل ‪ ،JOptionPane‬الدددددديت تقددددددوم بإظ ددددددار‬
‫توع نصا حندد مسبقًا‪ .‬واملثا التال لتوريح ذلك‪:‬‬ ‫مربع حوار تظ ر يه راالة‬

‫‪// Java packages‬‬


‫‪Import javax.swing.JOptionPane; //program uses JOptionPane‬‬

‫{ ‪public class Welcome4‬‬


‫) ][ ‪public static void main( String args‬‬
‫{‬
‫‪JOptionPane.showMessageDialog( null,‬‬
‫;) "!‪"Welcome to Java Programming‬‬

‫‪JOptionPane.showMessageDialog( null,‬‬
‫;) "!‪"Welcome\nto\nJava\nProgramming‬‬

‫‪System.exit( 0 ); //terminate application with window‬‬


‫}‬
‫}‬

‫دددا قم دددا‬ ‫التوضي ي تسدددتمدم تعليمدددة ‪ import‬الادددترياد مكتبدددة ئدددات معي دددة‪ ،‬فددد برنا‬
‫باادددددددترياد الفئدددددددة ‪ JOptionPane‬مدددددددك ايامدددددددة ‪ Package‬املسدددددددماة ‪ javax.swing‬وبددددد د لك‬
‫ميك ددددددددا الوصددددددددو إىل كددددددددل ددددددددرق الفئددددددددة ‪ javax.swing.JOptionPane‬دون ايا ددددددددة‬
‫السدددداب ولكددددك دون‬ ‫لتحديددددد مسددددار الوصددددو كددددامالً‪ .‬ال نددددام التددددال وقدد د نفدد د‬
‫ايا ة الاتمدام التعليمة ‪:import‬‬

‫{ ‪public class Welcome5‬‬


‫) ][ ‪public static void main( String args‬‬
‫{‬
‫‪javax.swing.JOptionPane.showMessageDialog( null,‬‬
‫;) "!‪"Welcome to Java Programming‬‬

‫‪javax.swing.JOptionPane.showMessageDialog( null,‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫;) "!‪"Welcome\nto\nJava\nProgramming‬‬

‫;) ‪System.exit( 0‬‬


‫}‬
‫}‬

‫‪-‬ميك ا ااترياد كا ة ئات ايامة كالتال ‪:‬‬ ‫ملحوظي ي ي‬


‫;*‪import javax.swing.‬‬
‫دددازع‪ ،‬إذ ال تسدددتورد اد د‬ ‫‪-‬إن كلمدددة «اادددترياد» تسدددتمدم ا دددا مبع دددع‬
‫التعليمدددددة ددددديئا يف الواقدددددع وميك دددددك اادددددتمدام أع عددددددد مدددددك تعليمدددددات‬
‫‪ import‬دون أن يىل ر ذلك علع مستوى أداء ال نام أو علع ح مه‪.‬‬
‫‪-‬ال ميكك ااترياد أكثر مك حامة يف التعليمة ذات ا‪ ،‬التعليمة‪:‬‬
‫;*‪import java.awt.‬‬
‫إىل كدددل ايدددام‬ ‫تسددد ل الوصدددو إىل كدددل ئدددات ايامدددة ‪ java.awt‬ولدددي‬
‫الددديت تبددددأ أتااادددا بدددد‪ ،java.awt‬حيددد أنددده تو دددد ‪ 11‬حامدددة تبددددأ ب ددد ا‬
‫االام‪.‬‬

‫الطريقددددددة ‪ showMessageDialog‬اددددد إحدددددددى ددددددرق الفئددددددة ‪ JOptionPane‬وتسددددددتمدم‬


‫تدددا إىل‬ ‫رادددالة نصدددية علدددع الشا دددة ردددمك مربدددع حدددوار بسددديا‪ ،‬اد د الطريقدددة‬ ‫لعدددر‬
‫وادددديط األو يسددددتمدم لددددربا مربددددع ايددددوار ادددد ا بال ا دددد ة املسددددتدعية وا ددددا اددددو‬
‫أع أن اد د ا املربدددع غدددري مدددرتبا بد د ع نا د د ة‪ ،‬والواددديا الثدددان عبدددارة‬ ‫ا دائمد دا ‪null‬‬ ‫نةدددع‬
‫املطلوب باعته‪.‬‬ ‫عك ال‬
‫الصددددديغة العامدددددة لت فيددددد أو اادددددتدعاء ريقدددددة مدددددك ئدددددة معي دددددة تكدددددون‬ ‫تلم ي ي ي ي ي ي‬
‫كالتال ‪:‬‬
‫) ‪ClssName. methodName ( arguments‬‬

‫العبارة ;)‪ System.exit(0‬إلن اء التطبي وإغالق ال وا ‪.‬‬


‫ختصيص مربع احلوار ‪:MessageDialog‬‬

‫إن الصيغة األاااية هل الطريقة ا كالتال ‪:‬‬

‫‪void showMessageDialog(Component parentComponent, Object‬‬


‫;)‪message, String title, int messageType‬‬

‫الواددديا الثالدد ادددو ع دددوان مربدددع ايدددوار والواددديا الرابدددع عبدددارة عدددك رقدددم يعدد عدددك ندددوع‬
‫مربع ايوار واذدو التال يورح بعةا مك اياالت‪:‬‬

‫األيقونة الوصف‬ ‫نوع مربع احلوار‬


‫رادددددالة‬ ‫يسدددددتمدم لعدددددر‬
‫حر ددددددة أع راددددددالة تفيددددددد‬ ‫‪JOptionPane.ERROR_MESSAGE‬‬
‫ب نه قد وقع خط ما‪.‬‬
‫تسددددددددددددددددتمدم لعددددددددددددددددر‬
‫ددد ء مددددا‬ ‫معلومددددات حددددو‬ ‫‪JOptionPane.INFORMATION_MESSAGE‬‬
‫وا ايالة اال رتارية‪.‬‬
‫رادددددالة‬ ‫تسدددددتمدم لعدددددر‬
‫يريددددة أو ت بي يددددة مثددددل‬
‫‪JOptionPane.WARNING_MESSAGE‬‬
‫راددددددائل ت كيددددددد ت فيدددددد‬
‫عملية معي ة‪.‬‬
‫تسددددددددتمدم ع ددددددددد لددددددددب‬
‫ت كيددددددد أو قيمددددددة معي ددددددة‬ ‫‪JOptionPane.QUESTION_MESSAGE‬‬
‫مك املستمدم‪.‬‬
‫تسددددددددتمدم ع ددددددددد عدددددددددم‬
‫بدون‬
‫ايا دددة إلظ دددار أيقوندددة يف‬ ‫‪JOptionPane.PLAIN_MESSAGE‬‬
‫أيقونة‬
‫مربع الراالة‪.‬‬

‫ملربع الراالة‪:‬‬ ‫التمصي‬ ‫وا ورد ا ا مثاالً يقوم بعمل بع‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


import javax.swing.JOptionPane;
public class Welcome6 {
public static void main( String args [] )
{
JOptionPane.showMessageDialog(null, "1",
" titel", JOptionPane.ERROR_MESSAGE );

JOptionPane.showMessageDialog(null, "2",
"titel",JOptionPane.INFORMATION_MESSAGE );

JOptionPane.showMessageDialog(null, "3",
" titel",JOptionPane.WARNING_MESSAGE );

JOptionPane.showMessageDialog(null, "4",
" titel",JOptionPane.QUESTION_MESSAGE );

JOptionPane.showMessageDialog(null, "5",
" titel",JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
}
}
:‫حجز املواقع يف الذاكرة وختصيص قيم هلا‬

‫كدددرة ح دددا مواقدددع يف الد د اكرة لتمدددايك قددديم معي دددة عدددك‬ ‫يسدددتمدم ال ندددام التدددال‬
‫ كمددددا وتددددوع ال نددددام علددددع‬،»Variables )‫ريددد مددددا يسددددمع بالددددد«املددددتغريات املتحددددوالت‬
:‫رق إدخا بيانات مك املستمدم لتماي ا‬

import javax.swing.JOptionPane;
public class Addition {
public static void main( String args [] )
{
int number1; // first number to add
int number2; // second number to add

String firstNumber; // first string entered by user


String secondNumber; // second string entered by user

int sum; // sum of number1 and number2

// read in first number from user as a string


firstNumber = JOptionPane.showInputDialog(
"Enter first integer" );

// read in second number from user as a string


secondNumber = JOptionPane.showInputDialog(
"Enter second integer" );

// convert numbers from type String to type int


number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );

// add numbers
sum = number1 + number2;

// display result
JOptionPane.showMessageDialog( null, "The sum is " +
sum, "Results", JOptionPane.PLAIN_MESSAGE );

Fundamentals of Programming in Java - Ahmad Jabr


‫;) ‪System.exit( 0‬‬
‫}‬
‫}‬

‫‪int‬؛ عدددددك ريقدددددة التصدددددريح عدددددك املدددددتغري ‪ number1‬الدددد ع‬ ‫السدددددطر ‪number1‬‬ ‫يعدددد‬
‫ادددديحمل بيانددددات مددددك الدد د ما ‪ int‬أع عدددددد صددددحيح‪ .‬واملددددتغري ‪ Variable‬عبددددارة عددددك ااددددم‬
‫مكان لتمايك البيانات يف ذاكرة الكمبيوتر‪.‬‬
‫يدد د‬ ‫ديددددد مورددددع يف الدد د اكرة‬ ‫نقصددددد بعبددددارة «التصددددريح عددددك املددددتغري» عمليددددة‬
‫التصددددريح‬ ‫صدد د‬ ‫ميكددددك أن خنددددان يدددده قيمددددة ليددددتم ااددددتمدام ا مددددك قبددددل ال نددددام ‪.‬‬
‫التال ‪:‬‬

‫;‪int number1‬‬
‫;‪int number2‬‬

‫املدددددتغريات ‪ number1‬و‪ number2‬علدددددع أن دددددا ادددددتمان بياندددددات مدددددك الدددد ما ‪ int‬واددد د ا‬


‫تددددوع علددددع قدددديم صددددحيحة ‪ Integer‬مثددددل األعددددداد‪،4 :‬‬ ‫يعددددم أن تلددددك املددددتغريات اددددو‬
‫دددب التصدددريح عدددك كدددل املدددتغريات بتحديدددد أتائ دددا وادددا البياندددات الددديت ادددو‬ ‫‪.8547‬‬
‫ددددان ي ددددا وذلددددك قبددددل أن يددددتم ااددددتمدام ا يف ال نددددام ‪ .‬بااددددتمدام ااددددم املدددددتغري يف‬
‫ال نددددددام ‪ ،‬نددددددر بدددد د لك تقددددددوم باإل ددددددارة إىل املعلومددددددات املمانددددددة يف ادددد د ا املوقددددددع يف‬
‫الدد ما بوااددطة عمليدددة تصدددريح‬ ‫الدد اكرة‪ .‬ميكدددك التصددريح عدددك عدددة مدددتغريات مدددك نفدد‬
‫واحددددة أو عددددة عمليدددات تصدددريح‪ ،‬إذ ميكدددك إعدددادة كتابدددة األادددطر اخلمسدددة األوىل مدددك‬
‫ال نام كالتال ‪:‬‬

‫;‪int number1, number2, sum‬‬


‫;‪String firstNumber, secondNumber‬‬

‫دددان بياندددات نصدددية أع االادددل حمر يدددة مثدددل‬ ‫يعد د عدددك مدددتغريات ادددو‬ ‫ما ‪String‬‬ ‫الد د‬
‫العبارة «‪.»welcome‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أمساء املتغريات‪:‬‬

‫ب أن تتم تسمية املتغريات ب اء علع القواعد التالية‪:‬‬ ‫يف لغة ‪Java‬‬

‫ميكدددددك الادددددم املدددددتغري أن يتكددد دوحن مدددددك أع عددددددد مدددددك األحدددددر واألرقدددددام‬ ‫•‬

‫ر السطر _)‪.‬‬ ‫وإ ارة‬

‫دددر السدددطر‬ ‫دددر ‪ .‬كمدددا ميكدددك أن يبددددأ بالعالمدددة‬ ‫البدددد أن يبددددأ االادددم‬ ‫•‬

‫_)‪ ،‬ولكك ال ي صح بااتمدام ا يف أو االام‪.‬‬

‫الدددة األحدددر ‪،‬‬ ‫حالدددة األحدددر ‪ ،‬كمدددا علم دددا ادددابقًا دددإن لغدددة ‪ Java‬تتد د ر‬ ‫•‬

‫إن االت ‪ count‬و‪ Count‬يشريان إىل متغرييك خمتلف ‪.‬‬ ‫وبالتال‬

‫ال ميكك ااتمدام كلمات ‪ Java‬األاااية ك تاء متغريات‪.‬‬ ‫•‬

‫كمدددا ميكدددك أن تتوا دددد التصدددروات يف أع مكدددان مدددك سدددم الطريقدددة بشدددرط أن‬
‫يدددتم التصدددريح عدددك املدددتغري قبدددل اادددتمدامه‪ .‬تو دددد أاددداط كدددثرية للبياندددات ادددو نتطدددرق‬
‫هلا بعد توريح املثا ايال ‪.‬‬

‫العبارة التالية‪:‬‬

‫(‪firstNumber = JOptionPane.showInputDialog‬‬
‫;) "‪"Enter first integer‬‬

‫اي ددددا يف‬ ‫مربددددع حددددوار يطلددددب مددددك املسددددتمدم إدخددددا قيمددددة مددددا ليددددتم‬ ‫تسددددتمدم لعددددر‬
‫املتغري‪.‬‬
‫دددايك القيمدددة املدخلدددة علدددع أن دددا السدددلة نصدددية ‪ String‬ولدد لك نالحدددرب أن ندددوع املدددتغري‬ ‫يدددتم‬
‫الد د ع يسدددب إ دددارة اإلاد د اد =) ادددو مدددك الد د ما ‪ .String‬يف حالدددة إاد د اد قيمدددة مدددك ادددا‬
‫معددد إىل مددددتغري مددددك اددددا كخددددر ددددإن املرت ددددم يعتددد ذلددددك خطًدددا ويقددددوم بإصدددددار راددددالة‬
‫دددايك القيمدددة املدخلدددة يف املدددتغري املسد د د إليددده‪.‬‬ ‫اخلطًد دا‪ .‬بعدددد ال قدددر علدددع الدددار «‪ »Ok‬يدددتم‬
‫علمد دا بد د ن البياندددات اد د بياندددات نصدددية أع ال ميكدددك إ دددراء العمليدددات ايسدددابية علي دددا‪.‬‬
‫ددددايك ادد د البيانددددات علددددع مددددتغريات صددددحيحة ليددددتم إ ددددراء‬ ‫ولدد د لك إن ددددا حنتددددا إألى‬
‫العمليدددات ايسدددابية علي دددا‪ ،‬ولكد د خندددان ادد القددديم يف مدددتغري صدددحيح إن دددا حنتدددا إىل‬
‫«‪ »7‬يددددتم‬ ‫ويددددل البيانددددات ال صددددية إىل مقابلدد د ا الصددددحيح‪ ،‬مددددثالً الدد د‬ ‫إ ددددراء عمليددددة‬
‫ويله إىل الرقم ‪ .7‬وإل راء عملية التحويل نستمدم العبارة التالية‪:‬‬

‫;) ‪number1 = Integer.parseInt( firstNumber‬‬

‫تقددددددوم اددددد الطريقددددددة ‪ parseInt‬واملو ددددددودة رددددددمك الفئددددددة ‪ Integer‬ب خددددد قيمددددددة نصددددددية‬
‫اي ددددا يف املددددتغري‬ ‫و ويلدد د ا إىل املقابددددل الصددددحيح هلددددا وتعيددددد القيمددددة الصددددحيحة ليددددتم‬
‫ي ميك ا إ راء العمليات ايسابية علي ا‪.‬‬ ‫الصحيح ‪،number1‬‬

‫تقوم التعليمة‪:‬‬

‫;‪sum = number1 + number2‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مددددوع قدددديميت املددددتغرييك ‪ number1‬و‪ number2‬وبإاددد اد نتي ددددة العمليددددة للمددددتغري‬ ‫سدددداب‬
‫‪ sum‬بااتمدام عملية اإلا اد =)‪.‬‬

‫وأخريا يتم باعة نات العملية بالشكل التال ‪:‬‬

‫‪JOptionPane.showMessageDialog( null, "The sum is " + sum,‬‬


‫;) ‪"Results", JOptionPane.PLAIN_MESSAGE‬‬

‫و ددددر اإل دددارة ا دددا إىل اادددتمدام الرمدددا ‪ )+‬للدددربا بدددك السالادددل ال صدددية أو مدددا يسدددمع‬
‫عملية الوصل‪.‬‬

‫أمناط البيانات يف ‪:Java‬‬

‫موعددددة مددددك أنددددواع البيانددددات األاااددددية ا ورددددح ا يف اذدددددو‬ ‫ذتلددددك لغددددة ‪Java‬‬

‫التال ‪:‬‬

‫ا جم يف‬ ‫القيمة‬
‫الن اق املسموح به‬ ‫النوع‬
‫الذاكرة‬ ‫اا رتا ية‬
‫‪8 bit's‬‬ ‫مك ‪ 128-‬إىل ‪127‬‬ ‫‪0‬‬ ‫‪byte‬‬
‫‪16 bit's‬‬ ‫مك ‪ 32768-‬إىل ‪32767‬‬ ‫‪0‬‬ ‫‪short‬‬
‫‪32 bit's‬‬ ‫مك ‪ 2147483647-‬إىل ‪2147483648‬‬ ‫‪0‬‬ ‫‪int‬‬
‫مددددددددددددددك ‪ 9.223.372.036.854.775.808-‬إىل‬
‫‪64 bit's‬‬ ‫‪0l‬‬ ‫‪long‬‬
‫‪9.223.372.036.854.775.807‬‬
‫‪ NaN‬وقددددديم ن ائيدددددة‬ ‫)‪(Not-a-Number‬‬
‫اددددددددددددددددددددددالبة وال ن ددددددددددددددددددددددائ اددددددددددددددددددددددالب‬
‫‪32 bit's‬‬ ‫‪ )NEGATIVE_INFINITY‬وصدددددددددفر ادددددددددالب‬ ‫‪0.0f‬‬ ‫‪float‬‬
‫وصددفر مو ددب وقدديم ن ائيددة مو بددة وال ن ددائ‬
‫مو ب ‪)POSITIVE_INFINITY‬‬
‫ا جم يف‬ ‫القيمة‬
‫الن اق املسموح به‬ ‫النوع‬
‫الذاكرة‬ ‫اا رتا ية‬
‫مك ‪ ±1.4E-45‬إىل ‪±3.40282347E38‬‬
‫‪ NaN‬وال ن ددددائ اددددالب وقدددديم ن ائيددددة اددددالبة‬
‫وصددددفر اددددالب وصددددفر مو ددددب وقدددديم ن ائيددددة‬
‫‪64 bit's‬‬ ‫مو بة وال ن ائ مو ب‬ ‫‪0.0d‬‬ ‫‪double‬‬

‫مددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددك ‪ ±4.9E-324‬إىل‬
‫‪±1.797931348623157E308‬‬
‫مددددددددددك ‪ 0‬إىل ‪ 65535‬أو مددددددددددك '‪ '\u0000‬إىل‬
‫‪16 bit's‬‬ ‫'‪'\u0000‬‬ ‫‪char‬‬
‫'‪'\uffff‬‬
‫‪1 bit‬‬ ‫‪ false‬و‪true‬‬ ‫‪false‬‬ ‫‪boolean‬‬
‫‪0 bit‬‬ ‫‪void‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫التصريح عن املتغري‪:‬‬

‫كمدددددا أ دددددرنا ادددددابقًا دددددإن الطريقدددددة القياادددددية للتصدددددريح عدددددك املدددددتغريات تكدددددون‬
‫بالشكل التال ‪:‬‬

‫;]]…‪typename varname1[,varname2[,‬‬

‫تعيني القيم للمتغريات‪:‬‬

‫الصيغة العامة لتمايك املعلومات يف املتغري كالتال ‪:‬‬

‫;‪varname1 = value‬‬
‫;‪iCounter = 1‬‬
‫;‪fSalary = 3.121‬‬
‫;‪bTest = false‬‬
‫;'‪cTime = 'a‬‬

‫الصيغة العامة لت يئة املتغريات بقيمة أ اء التصريح‪:‬‬

‫;‪typeName varname1 = value‬‬


‫;‪int iCounter = 1‬‬
‫;‪float fSalary = 3.121‬‬
‫;‪boolean bTest = false‬‬
‫;'‪char cTime = 'a‬‬

‫كمدددا تو دددد حالدددة خاصدددة لتمدددايك املعلومدددات يف املدددتغري واددد وقدددر التشدددغيل واددد‬
‫ايالددة تعتمددد علددع وظددائ التمددايك مثددل الدديت تعرردد ا هلددا يمددا اددب والكددثري الكددثري‬
‫غرياا‪:‬‬

‫(‪firstNumber = JOptionPane.showInputDialog‬‬
‫;) "‪"Enter first integer‬‬
‫العمليات احلسابية ‪:Arithmetic‬‬

‫يورح اذدو التال العمليات ايسابية األاااية يف لغة ‪:Java‬‬

‫طريقة الت بري حسب‬ ‫طريقة الت بري ا ربي‬ ‫الرمك‬ ‫اسم ال م ية‬
‫‪Java‬‬ ‫ا سابي‬
‫‪x + y‬‬ ‫‪x+y‬‬ ‫‪+‬‬ ‫اذمع‬
‫‪m - 6‬‬ ‫‪m-6‬‬ ‫‪-‬‬ ‫الطر‬
‫‪2 * x‬‬ ‫‪2x‬‬ ‫*‬ ‫الةرب‬
‫‪x‬‬
‫‪x / 3‬‬ ‫‪x÷3 or‬‬ ‫‪or x/3‬‬ ‫‪/‬‬ ‫القسمة‬
‫‪3‬‬
‫‪6 % 2‬‬ ‫‪6 mod 2‬‬ ‫‪%‬‬ ‫باق القسمة‬

‫يتم ت في العمليات ايسابية حسب أولويات ا حسب اذدو التال ‪:‬‬

‫نرنيب عم ية التقييم (األولوية)‬ ‫اسم ال م ية‬ ‫ال م ية‬


‫تقدددديم أوالً‪ .‬إذا و ددددد يف العبددددارات ايسددددابية أقددددوام متداخلددددة‬
‫ايسددددداب يبددددددأ انطالقًدددددا مدددددك أو‬ ‫ردددددمك بعةددددد ا الدددددبع‬
‫موعددددددة مددددددك‬ ‫موعددددددة يف الددددددداخل‪ .‬أمددددددا إذا كددددددان لدددددددي ا‬ ‫األقوام‬ ‫)(‬
‫املسدددتوى ع دددداا‬ ‫وعلدددع نفددد‬ ‫األقدددوام اندددب بعةددد ا الدددبع‬
‫يبدأ ايساب مك اليسار إىل اليم ‪.‬‬
‫الةرب‪،‬‬
‫املسدددتوى إن دددا تقددديم مدددك‬ ‫تقددديم انيدددا‪ .‬وإذا و ددددت علدددع نفددد‬ ‫القسمة أو باق‬ ‫‪*,/‬‬
‫اليسار إىل اليم ‪.‬‬ ‫القسمة‬ ‫‪or %‬‬

‫الصحيحة‬
‫تقدد ديم يف ال ايددددة‪ ،‬إذا و دددددت عدددددة عمليددددات م ددددا علددددع نفدد د‬ ‫‪+ or‬‬
‫اذمع أو الطر‬ ‫‪-‬‬
‫املستوى إن ا تقيم مك اليسار إىل اليم ‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


:Equality & Relational Operators ‫عمليات املساواة واملقارنة‬

‫وصف املثا‬ ‫مثا ع ى ااستخدام‬ Java ‫الشكل يف‬ ‫الشكل ا ربي‬


y ‫ تساوع‬x x == y == =
y ‫ ال تساوع‬x x != y != ≠
y ‫ أك مك‬x x > y > ›
y ‫ أصغر مك‬x x < y < ‹
y ‫ أك أو تساوع‬x x >= y >= ≥
y ‫ أصغر أو تساوع‬x x <= y <= ≤

‫ اادددتع ا‬،‫قدددم بت فيدد ادد ا ال ندددام الدد ع يوردددح اادددتمدام عمليدددات املسددداواة واملقارندددة‬
:‫ واو نتطرق إلي ا بالتفصيل يف الفصو التالية‬if ‫يف ا ا ال نام بالعبارة‬

import javax.swing.JOptionPane;
public class Comparison {
public static void main( String args [] )
{
String firstNumber; // first string entered by user
String secondNumber; // second string entered by user
String result=""; // a string containing the output
int number1; // first number to compare
int number2; // second number to compare

// read first number from user as a string


firstNumber = JOptionPane.showInputDialog(
"Enter first integer:" );

//read second number from user as a string


secondNumber = JOptionPane.showInputDialog(
"Enter second integer:");

// convert numbers from type String to type int


number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );

if ( number1 == number2 )
result = result + number1 + " == " + number2;

if ( number1 != number2 )
result = result + number1 + " != " + number2;

if ( number1 < number2 )


result = result + "\n" + number1 + " < " +
number2;

if ( number1 > number2 )


result = result + "\n" + number1 + " > " +
number2;

if ( number1 <= number2 )


result = result + "\n" + number1 + " <= " +
number2;

if ( number1 >= number2 )


result = result + "\n" + number1 + " >= " +
number2;

// Display results
JOptionPane.showMessageDialog( null, result,
"Comparison Results",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );
}
}

،‫دددرع علي مدددا عمليدددات املقارندددة‬ ‫دددم‬ ‫يطلدددب م دددك ال ندددام السددداب إدخدددا قيمدددت‬
: ‫ مثالً التال‬،‫ليطبع يف ال اية توريح ياالت املقارنة ال اجتة‬

Fundamentals of Programming in Java - Ahmad Jabr


‫در اإل ارة للعبارة التالية و بي ات ا‪:‬‬

‫;‪result = result + number1 + " == " + number2‬‬

‫اذاء ال ع نريد توريحه او اذاء الشبيه بالعبارة‪:‬‬

‫;"‪s = s + "abc‬‬
‫;‪x = x + 5‬‬

‫املددددتغري‪ ،‬مددددثالً إذا‬ ‫وادد د عبددددارة عددددك عمليددددة إادد د اد قيمددددة إىل القيمددددة اياليددددة يف نفدد د‬
‫اعت نا املثا التال ‪:‬‬

‫;‪int x = 1‬‬
‫;‪x = x + 5‬‬
‫دددإن املدددتغري ‪ x‬اددديحمل القيمدددة ‪ ،6‬ألن دددا زدندددا علدددع قيمتددده املقددددار ‪ 5‬دددم خاندددا ال دددات يف‬
‫يع عك عملية الوصل‪.‬‬ ‫املتغري ‪ ،x‬الرما ‪ +‬ع د التعامل مع ال صو‬

‫عمليات اإلسناد املختصرة ‪:Assignment Operators‬‬

‫وادددد اختصدددددار لعمليدددددات إادددد اد قيمدددددة لقيمدددددة املدددددتغري نفسددددده واملوردددددحة يف الفقدددددرة‬
‫السابقة‪:‬‬

‫;"‪s = s + "abc‬‬
‫;‪x = x + 5‬‬

‫مددددثالً ادد د ايددددالت ميكددددك التعددددبري ع مددددا يف حالددددة عمليددددات اإلادد د اد املمتصددددرة‬
‫كالتال ‪:‬‬

‫;"‪s += "abc‬‬
‫;‪x += 5‬‬

‫تقدددوم العمليدددة =‪ +‬بإردددا ة قيمدددة التعدددبري املو دددود علدددع ميي دددا إىل قيمدددة املدددتغري املو دددود‬
‫دددان ال تي دددة يف املدددتغري املو دددود علدددع اليسدددار‪ .‬بشدددكل عدددام ميكدددك‬ ‫علدددع يسددداراا دددم‬
‫كتابة أع تعليمة مك الشكل التال إىل تعليمة إا اد خمتصر‪:‬‬

‫;‪variable = variable operator expression‬‬


‫;‪variable operator = expression‬‬

‫ويوردددددح اذددددددو التدددددال عمليدددددة اإلادددد اد ايسدددددابية مدددددع أمثلدددددة علي دددددا و دددددروح ا‪.‬‬
‫أن لدي ا‪:‬‬ ‫بفر‬

‫;‪int x = 0, y = 18, z = 3, t = 27, m = 23‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫النتيجة‬ ‫الشكل القياسي‬ ‫مثا‬ ‫عم ية ادسناد‬
‫إا اد القيمة ‪ 1‬إىل املتغري ‪x‬‬ ‫‪x = x + 1‬‬ ‫‪x += 1‬‬ ‫=‪+‬‬
‫إا اد القيمة ‪ 13‬إىل املتغري ‪y‬‬ ‫‪y = y - 5‬‬ ‫‪y -= 5‬‬ ‫=‪-‬‬
‫إا اد القيمة ‪ 6‬إىل املتغري ‪z‬‬ ‫‪z = z * 2‬‬ ‫‪z *= 2‬‬ ‫=*‬
‫إا اد القيمة ‪ 9‬إىل املتغري ‪t‬‬ ‫‪t = t / 3‬‬ ‫‪t /= 3‬‬ ‫=‪/‬‬
‫إا اد القيمة ‪ 2‬إىل املتغري ‪m‬‬ ‫‪m = m % 7‬‬ ‫‪m %= 7‬‬ ‫=‪%‬‬

‫وال نام التال يورح ااتمدام عمليات اإلا اد املمتصرة‪:‬‬


‫{ ‪public class Assignment‬‬
‫) ][ ‪public static void main( String args‬‬
‫{‬
‫;‪int c = 3‬‬

‫;‪c += 5‬‬
‫;) ‪System.out.println( c‬‬

‫;‪c -= 2‬‬
‫;) ‪System.out.println( c‬‬

‫;‪c *= 4‬‬
‫;) ‪System.out.println( c‬‬

‫;‪c /= 8‬‬
‫;) ‪System.out.println( c‬‬

‫;‪c %= 3‬‬
‫;) ‪System.out.println( c‬‬
‫}‬
‫}‬

‫‪8‬‬

‫‪6‬‬
‫‪24‬‬
‫‪3‬‬
‫‪0‬‬
‫عمليات الزيادة واإلنقاص بواحد ‪:Increase & Decrement Operators‬‬

‫املتو رة يف لغة ‪:Java‬‬ ‫يورح اذدو التال عمليات الايادة واإلنقا‬

‫الوصف‬ ‫مثا‬ ‫التسمية‬ ‫ال م ية‬


‫زيددددددادة قيمددددددة ‪ x‬بواحددددددد ددددددم ااددددددتمدام القيمددددددة‬ ‫عملية الايادة األمامية‬
‫‪++x‬‬ ‫‪++‬‬
‫اذديدة يف العبارة‬ ‫بواحد‬
‫زيدددددادة قيمدددددة ‪ x‬بواحدددددد بعدددددد اادددددتمدام القيمدددددة‬ ‫عملية الايادة اخللفية‬
‫‪x++‬‬ ‫‪++‬‬
‫القدمية يف العبارة‬ ‫بواحد‬
‫قيمدددددة ‪ x‬بواحدددددد دددددم اادددددتمدام القيمدددددة‬ ‫إنقدددددا‬ ‫عملية اإلنقا‬
‫‪--x‬‬ ‫‪--‬‬
‫اذديدة يف العبارة‬ ‫األمامية بواحد‬
‫قيمددددة ‪ x‬بواحددددد بعددددد ااددددتمدام القيمددددة‬ ‫إنقددددا‬ ‫عملية اإلنقا‬
‫‪x--‬‬ ‫‪--‬‬
‫القدمية يف العبارة‬ ‫اخللفية بواحد‬

‫وال نام التال يورح ااتمدام عمليات الايادة واإلنقا ‪:‬‬

‫‪public class Increment‬‬


‫{‬
‫) ][ ‪public static void main( String args‬‬
‫{‬
‫;‪int c = 5‬‬
‫;) " " ‪System.out.print( c +‬‬
‫;) " " ‪System.out.print( c++ +‬‬
‫;) " " ‪System.out.print( c +‬‬
‫;)(‪System.out.println‬‬ ‫‪// skip a line‬‬

‫;‪c = 5‬‬
‫;) " " ‪System.out.print( c +‬‬
‫;) " " ‪System.out.print( ++c +‬‬
‫;) " " ‪System.out.print( c +‬‬
‫;)(‪System.out.println‬‬ ‫‪// skip a line‬‬

‫;‪c = 5‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


System.out.print( c + " " );
System.out.print( c-- + " " );
System.out.print( c + " " );
System.out.println(); // skip a line

c = 5;
System.out.print( c + " " );
System.out.print( --c + " " );
System.out.print( c + " " );
}
}

5 5 6
5 6 6
5 5 4
5 4 4
‫متارين الفصل الثاين‪:‬‬

‫‪ . 1‬امأل الفراغات التالية‪:‬‬


‫ال ندددددام مدددددك أ دددددل تو يددد د عملددددده‬ ‫يدددددتم اادددددتمدام ‪ ....................‬ردددددمك نددد د‬ ‫•‬

‫و س القدرة علع قراءته‪.‬‬


‫تستمدم الطريقة ‪ ....................‬مك أ ل باعة البيانات علع الشا ة‪.‬‬ ‫•‬

‫تستمدم التعليمة ‪ ....................‬الاترياد مكتبة ئات إىل برنا ك‪.‬‬ ‫•‬

‫تستمدم الطريقة ‪ ....................‬لقراءة قيمة مك املستمدم‪.‬‬ ‫•‬

‫‪ . 2‬أكتب تعليمة ‪ Java‬واحدة أو اطرا واحدا) للقيام بالتال ‪:‬‬


‫‪ ،»University‬كدددل‬ ‫باعدددة الرادددالة التاليدددة «‪of Sciences And Technology‬‬ ‫•‬

‫كلمة يف اطر‪.‬‬
‫د قيمة حاصل ررب املتغرييك ‪ x‬و‪ y‬إىل املتغري ‪z‬‬ ‫اا‬ ‫•‬

‫و أن ا ا ال نام او برنا ك األو‬ ‫•‬

‫التصريح عك متغرييك حقيقي ‪ x‬و‪ y‬يس د للمتغري األو القيمة ‪3.5‬‬ ‫•‬

‫أن ‪ .y=7, x=2‬ما ال ع ايتم باعته بااتمدام التعليمات التالية‪:‬‬ ‫‪ . 3‬بفر‬


‫•‬ ‫;) ‪System.out.println( x + 1‬‬
‫•‬ ‫;) "‪System.out.println( "x + 1‬‬
‫•‬ ‫;) ‪System.out.println( x++‬‬
‫•‬ ‫;) ‪System.out.println( x++ + --y‬‬
‫•‬ ‫;) ‪System.out.println( x-- + 1‬‬
‫•‬ ‫;) ‪System.out.println( x += 5‬‬
‫•‬ ‫;) ‪System.out.println( ( x -= 3 ) + y‬‬
‫•‬ ‫;) ‪System.out.println( (y *= 2) -= x‬‬
‫•‬ ‫;) )‪System.out.println( x -= (y *= 2‬‬
‫•‬ ‫;) )‪System.out.println( "abc" + (y += 5‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫•‬ ‫;) ‪System.out.println( "abc" + y += 5‬‬

‫‪ . 4‬قم بتمثيل املعادالت التالية بلغة ‪:Java‬‬


‫‪• y = 3x 2 + 2 x + 1‬‬
‫‪2x + 2‬‬
‫=‪•y‬‬
‫‪x −1‬‬
‫‪• y  10‬‬
‫‪• y  x + x3‬‬
‫‪2‬‬
‫‪‬‬ ‫‪a‬‬
‫‪• y = x z + ‬‬
‫‪‬‬ ‫‪b‬‬

‫‪ . 5‬ب ترتيب تقييم العمليات ايسابية التالية واذكر ما او ال ات ‪:‬‬


‫•‬ ‫;‪x=7+3*6/2-7‬‬
‫•‬ ‫;)‪x=(7+3)*((6/2)-7‬‬
‫•‬ ‫;)‪x=((7+3)*6)/(2-7‬‬
‫•‬ ‫;))‪x=(7+3)*(6/(2-7‬‬

‫‪ . 6‬أكتدددب برندددام ي خددد مدددك املسددددتمدم عددددديك‪ ،‬ددددم يطبدددع األكددد بي مدددا علددددع‬
‫يطبع العبارة «‪.»there numbers are equal‬‬ ‫الشا ة‪ .‬أما إذا كانا متساوي‬

‫أكتدددب برندددام ي خد د مدددك املسدددتمدم ال دددة أعدددداد صدددحيحة‪ ،‬دددم يقدددوم بطباعدددة‬ ‫‪. 7‬‬
‫داءاا وقيمة أصغر عدد وقيمة أك عدد بي ا‪.‬‬ ‫موع ا ومتواط ا ونات‬

‫‪ . 8‬أكتدددب برنا ًد دا يقدددرأ مدددك املسدددتمدم نصد د قطدددر الددددائرة دددم يطبدددع قيمدددة قطدددر‬
‫الدائرة‪ ،‬حميط ا ومساحت ا‪.‬‬

‫‪ . 9‬أكتب برنا ًا يقوم بطباعة العبارة التالية علع الشا ة‪:‬‬


‫""‪mm\\n p‬‬
‫‪a'\**\%d‬‬
‫ أكتدددب برنا ًددا يقدددرأ مدددك املسدددتمدم عدددددا صدددحيحا دددم يطبدددع علدددع الشا دددة ادددل‬. 10
.‫أم ردع‬ ‫او عدد زو‬

‫ أكتددددب برنا ًدددا يقددددرأ مددددك املسددددتمدم عدددددديك ددددم يطبددددع يمددددا إذا كددددان العدددددد‬. 11
.‫الثان مك مةاعفات األو أم ال‬

: ‫ ما ال ع يقوم به ال نام التال‬. 12


import javax.swing.JOptionPane;
public class Product {
public static void main( String [] args )
{
int x, y, z, result;
String xVal, yVal, zVal;

xVal = JOptionPane.showInputDialog(
"Enter first integer:" );

yVal = JOptionPane.showInputDialog(
"Enter second integer:" );

zVal = JOptionPane.showInputDialog(
"Enter third integer:" );

x = Integer.parseInt( xVal );
y = Integer.parseInt( yVal );
z = Integer.parseInt( zVal );

result = x * y * z;

JOptionPane.showMessageDialog( null,
"The product is " + result );
System.exit( 0 );
}
}

Fundamentals of Programming in Java - Ahmad Jabr


‫‪Introduction to Java Applets‬‬
‫مقدمة‪:‬‬

‫الويددددب‬ ‫البدددرمي ‪ Applet‬اددددو برنددددام ‪ Java‬مصددددمم ليقددددوم بت فيددد برنددددام مسددددتعر‬


‫‪ .Web‬يعتدددد كددددلي مددددك تطبيقددددات ‪ Java‬وبرمي يددددات ‪ Java‬مبثابددددة الدددددعامت‬ ‫‪Browser‬‬

‫األااادددديت يف بددددرام ‪ .Java‬كمددددا الحظ ددددا يمدد دا اددددب ‪ ،‬تعتدد د تطبيقددددات ‪ Java‬أ ددددبه‬
‫بتطبيقدددات ادددطح املكتدددب العاديدددة املعرو دددة‪ ،‬علدددع الدددرغم مدددك أن دددا تتطلدددب و دددود بيئدددة‬
‫وقدددر التشدددغيل اخلاصدددة بلغدددة ‪ Java‬ليدددتم اادددتمدام ا كمدددا ادددو ايدددا يف ال مي يدددات‪،‬‬
‫يدددتم تصدددميم ا للعمدددل‬ ‫مدددك ال مي يدددات ‪ ،applets‬دددإن تطبيقدددات ‪Java‬‬ ‫وعلدددع ال قدددي‬
‫يددددات ‪applets‬‬ ‫علددددع اإلنرتنددددر أو ليددددتم تشددددغيل ا علددددع ددددبكة الويددددب‪ .‬ت تصددددميم ال مي‬
‫يد د يدددتم تشدددغيل ا ك ددداء مدددك صدددفحة الويدددب‪ .‬وهلد د ا‪ ،‬يدددتم‬ ‫للتعامدددل علدددع الشدددبكات‬
‫ددداءا ال‬ ‫اإل دددارة إلي دددا علدددع أن دددا حمتويدددات قابلدددة للت فيد د ‪ .‬وعلدددع الدددرغم مدددك أن دددا تعتد د‬
‫يت ددداأ مدددك صدددفحات الويدددب مثدددل أع حمتويدددات أخدددرى مو دددودة يددده‪ ،‬إال أن دددا تعتدد مبثابدددة‬
‫برام صغرية ميكك تشغيل ا مثل غرياا‪.‬‬

‫‪Netscape‬‬ ‫تتطلدددددب ال مي يدددددات متصدددددفحا ميك ددددده التعامدددددل مدددددع لغدددددة ‪ Java‬مثدددددل‬
‫بدايدددة‬ ‫‪ Navigator‬بدايدددة مدددك اإلصددددار رقدددم ‪ 2‬ومدددا يليددده) أو املتصدددفح ‪Internet Explorer‬‬

‫دددب أن يدددتم ت ايلددده مدددك علدددع اإلنرتندددر إلراددداله إىل‬ ‫مدددك اإلصددددار رقدددم ‪ 3‬ومدددا يليددده) ألنددده‬
‫بيئة وقر التشغيل اخلاصة بد ‪ Java‬اخلاصة باملتصفح ليتم تشغيل ا‪.‬‬
‫تتطلددددب ال مي يددددات الدددديت تسددددتفيد مددددك السددددمات اذديدددددة اخلاصددددة بددددد‬ ‫ملحوظي ي ي ي‬
‫‪ Java‬مثدددددل وا دددددات االادددددتمدام الرادددددومية ‪ )Swing‬بدددددرام ملحقدددددة‬ ‫‪2‬‬

‫خاصددددة بددددد ‪ Java‬ليددددتم تشددددغيل ا ألن بيئددددة التشددددغيل اخلاصددددة مبتصددددفحات‬


‫دددديث ا بعدددد للتعدددر علدددع تلدددك اإلمكانيدددات اذديددددة‪.‬‬ ‫يدددتم‬ ‫الويدددب‬
‫وتسددددمح الدد د ام امللحقددددة اخلاصددددة بلغددددة ‪ Java‬والتابعددددة لشددددركة ‪ Sun‬لددددد‬
‫‪Java Run-time Environment‬‬ ‫‪ applets‬بد د ن يدددتم تشدددغيل ا مدددك قبدددل‬
‫)‪ (JRE‬مددددددع جتااددددددل البيئددددددة اال رتارددددددية اخلاصددددددة بوقددددددر التشددددددغيل يف‬
‫املتصفح‪.‬‬

‫ب ا ميك ا تص ي الفوارق ب التطبيقات وال مي يات رمك ئت ‪:‬‬

‫ددددوارق ناجتددددة عددددك بيعددددة ال مي يددددات‪ ،‬مددددك حيددد أن ددددا ت فددد انطالقًدددا مددددك‬ ‫•‬

‫صفحات الويب‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫حددددو مبدددددأ‬ ‫‪ ،‬وتدددددور بشددددكل خددددا‬ ‫ددددوارق ناجتددددة عددددك رغبددددات املدد د‬ ‫•‬

‫محايددددة الدد د ام ‪ ،‬حيدد د أن ال مي يددددات ذ ددددع مددددك القددددراءة والكتابددددة علددددع‬


‫القر ‪.‬‬

‫أمثلة على الربميجيات وإمكانياهتا‪:‬‬

‫موعددددة مددددك األعمددددا‬ ‫اددد ورد ا ددددا بعةدددا مددددك ال مي يددددات الدددديت ت تصددددميم ا ألداء‬
‫ددددا نورددددح لعبددددة ‪Tic-Tac-Toe‬‬ ‫املت وعددددة لتتةددددح مدددددى أاميددددة وإمكانيددددات ال مي يددددات‪ ،‬ا‬
‫ت تصميم ا ك مي ‪:Java‬‬

‫وا ا مثا كخر‪ :‬عبارة عك برمي رام بسيا‪:‬‬


:‫وا ا برمي للراوم ائية األبعاد‬

:Java ‫ األول يف لغة‬Applet ‫الربميج‬

:‫ا بدأ بكتابة أو برمي ل ا لتوريح ريقة عمله وكيفية تشغيله‬

// A first applet in Java.


// Java packages
import java.awt.Graphics; // import class Graphics
import javax.swing.JApplet; // import class JApplet

public class WelcomeApplet extends JApplet {


// draw text on applet’s background
public void paint( Graphics g )
{

Fundamentals of Programming in Java - Ahmad Jabr


‫‪// draw a String at x-coordinate 25‬‬
‫‪// and y-coordinate 25‬‬
‫‪g.drawString( "Welcome to Java Programming!",‬‬
‫;) ‪25, 25‬‬

‫‪} // end method paint‬‬


‫‪} // end class WelcomeApplet‬‬

‫التوض ي اهلدددد األااادد مدددك ادد ا الدد مي ادددو باعدددة عبدددارة الرتحيدددب‪ .‬يف البدايدددة قم دددا‬
‫بااددددترياد الفئددددة ‪ Graphics‬مددددك ايامددددة ‪ java.awt‬حيدد د تسددددتمدم ادد د الفئددددة يف عمليددددة‬
‫الرام والتلويك علع الشا ة‪.‬‬
‫وااددددددترياد الفئددددددة ‪ JApplet‬مددددددك ايامددددددة ‪ javax.swing‬وذلددددددك ألن ددددددا ادددد د عل برمي ددددددا‬
‫أع مشتقًا م ا)‪.‬‬ ‫كامتداد للفئة ‪JApplet‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫وذلك كما او مورح يف السطر‪:‬‬

‫}…{ ‪public class WelcomeApplet extends JApplet‬‬

‫موعددددة مددددك البيانددددات والعمليددددات املو ددددودة يف الفئددددة‬ ‫أع أن ادد د الفئددددة اتشددددتمل علددددع‬
‫موعدددات الفئدددات الددديت تسدددمح بتشدددغيل كدددل ‪ applet‬داخد دل‬ ‫تدددوع علدددع‬ ‫‪ JApplet‬والددديت‬
‫صفحة الويب‪.‬‬

‫ريقدددددة تدددددابع) واحددددددة ادددد ‪ paint‬والددددديت ذتلدددددك واددددديطًا‬ ‫ميتلدددددك الدددد مي السددددداب‬
‫واحدددددا واددددو كددددائك مددددك الفئددددة ‪ .Graphics‬تعتدد د ادد د الطريقددددة ادد د األداة الرئيسددددية يف‬
‫إرددددا ة احملتددددوى علددددع السددددطح‪ .‬إن كددددائك ئددددة الراددددومات ‪ Graphics‬املُمددددرر إىل الطريقددددة‬
‫إىل إ ددددار الدد د مي ‪ .‬تعدد درح الفئددددة ‪ Graphics‬أوامددددر ملعاذددددة‬ ‫‪ paint‬واملسددددمع ‪ g‬اددددو مقددددب‬
‫الصدددور‪ ،‬كددداألمر ‪ ،drawstring‬يدددتم إرادددا نتائ دددا إىل اإل دددار مبا دددرة‪ .‬كمدددا يتةدددمك‬
‫كائك الراومات معلومات عك اإل ار أيةا‪ ،‬كح مه ومورعه ونوع خطه‪...‬‬

‫ا لدددددددة‬ ‫الحدددددددرب أن الطريقدددددددة ‪ paint‬ال تكتدددددددب علدددددددع الشا دددددددة باادددددددتعما دالدددددددة‬
‫لددددد‪ ،println‬بددددل تراددددم بااددددتعما الطريقددددة ‪ drawstring‬مددددك الفئددددة ‪ ،Graphics‬كمددددا قم ددددا‬
‫بتوريحه يف ال مي الساب ‪:‬‬

‫;) ‪g.drawString( "Welcome to Java Programming!", 25, 25‬‬

‫الواددددديا األو هلددد د الطريقدددددة ادددددو السدددددلة نصدددددية‪ ،‬بي مدددددا الثدددددان والثالددد د امدددددا‬
‫اإلحددددددا يات األ قدددد ‪ x‬والعمدددددودع ‪ y‬الددددديت يدددددتم رادددددم السلسدددددلة ع دددددداا‪ .‬اإلزاحدددددة ‪ x‬ادددد‬
‫مقيدددام البعدددد عدددك ايا دددة اليسدددرى لإل دددار‪ .‬واإلزاحدددة ‪ y‬اددد مقيدددام البعدددد عدددك حا دددة‬
‫أعلع اإل ار‪.‬‬
‫)‪(0, 0‬‬ ‫احملور ‪X‬‬

‫)‪(x, y‬‬

‫احملور ‪Y‬‬

‫‪Java‬‬ ‫يف‬ ‫ال ظام اإلحدا‬

‫تنفيذ الربميجيات‪:‬‬

‫بعدددد حفدددرب الكدددود السددداب يف ملد د قدددم برتمتددده كمدددا عمل دددا ادددابقًا) ليدددتم إنشددداء‬
‫تددددا إىل إنشدددداء صددددفحة‬ ‫ملدددد ‪ class.‬بلغددددة ‪ .bytecode‬لت فيدددد الدددد مي مددددك املتصددددفح‪،‬‬
‫)‪.HTML (HyperText Markup Language‬‬

‫أنشئ املل التال يف أع حمرر نصو ‪:‬‬

‫>‪<html‬‬
‫"‪<applet code = "WelcomeApplet.class" width = "300‬‬
‫>"‪height = "45‬‬
‫>‪</applet‬‬
‫>‪</html‬‬

‫يف الواقدددددع‪ ،‬ميك دددددك اددد د املدددددرة‬ ‫باالادددددم ‪WelcomeApplet.html‬‬ ‫احفدددددرب اددد د ا امللددد د‬
‫املددددا كددددان ي ت دد د باالمتددددداد‪html.‬؛ مددددك غددددري الةددددرورع أن‬ ‫ااددددتعما أع ااددددم تريددددد‬
‫يتطاب اام صفحة ‪ html‬مع اام الفئة)‪.‬‬

‫الويدددب لدددديك والدددداعم للدددد‪ Java‬واددديكون‬ ‫قدددم بتشدددغيل اد د ا امللد د يف برندددام مسدددتعر‬
‫املظ ر كالتال ‪:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪Internet Explorer‬‬ ‫يف املتصفح‬

‫‪Netscape Navigator‬‬ ‫يف املتصفح‬

‫تو دددد ريقددددة أخدددرى لتشددددغيل الددد مي بددددون ايا ددددة ملتصددددفح الويدددب وذلددددك باالاددددتعانة‬
‫باألداة ‪ ،AppletViewer‬بعد كتابة مل ‪ html‬أكتب السطر التال ‪:‬‬

‫‪appletviewer WelcomApplet.html‬‬

‫ليتم تشغيل ال مي اتبع اخلطوات التالية يف مو ه ال ظام‪:‬‬


‫تظ ر نا ة ال مي التالية‪:‬‬

‫ذتلدددددك اددد د ال ا ددد د ة قائمدددددة تسدددددمع ‪ Applet‬وتسدددددتمدم ألداء األعمدددددا اخلاصدددددة ب ددد د ا‬
‫ال مي ميك ا ااتمدام األمر ‪ Quit‬إلغالق ال ا ة مثالً‪.‬‬

‫توضي ي بال سدددبة مللد د ‪ HTML‬السددداب ال يتطلدددب م دددك خد د ة يف لغدددة ‪ HTML‬ولد د ا ا وردددح‬
‫األ دددياء اهلامدددة الددديت تع ي دددا ا دددا‪ :‬يشدددري الوادددم العالمدددة) >‪ <html‬إىل بدايدددة دددفرة‬ ‫بعد د‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫وادددو مييدددا بدايدددة صدددفحات الويدددب‪ ،‬أمدددا وادددم ن ايدددة اد د الشدددفرة دددو >‪،</html‬‬ ‫‪HTML‬‬

‫إلرددددا ة تعليمددددات لت فيدد د بددددرمي ‪ Java‬رددددمك مسددددت د ‪ html‬علي ددددا كتابددددة اددددطر ددددبيه‬
‫بالتال ‪:‬‬

‫= ‪<applet code = "applet.class" width = "300" height‬‬


‫>‪"45"></applet‬‬

‫اددددو ااددددم امللدددد ايدددداوع علددددع الشددددفرة البايتيددددة للدددد مي املطلددددوب‬ ‫‪applet.class‬‬ ‫حيدددد‬
‫ددددددب االنتبددددددا لواددددددم ال ايددددددة >‪ .</applet‬إن الواددددددائا األاااددددددية الثال ددددددة‬ ‫تشددددددغيله‪،‬‬
‫امل كورة يف السطر الساب هلا وظائ حمددة ا ‪:‬‬

‫‪ :code‬يتم ا ا كتابة اام ال مي املستدعع‪.‬‬


‫امل طقة اليت ايتم رم ا إظ ار نتائ ال مي علع الشا ة‪.‬‬ ‫‪ :width‬عر‬
‫‪ :height‬ارتفاع امل طقة اليت ايتم رم ا إظ ار نتائ ال مي علع الشا ة‪.‬‬

‫ال مي ولكك بااتمدام كائك الع وان ‪:Label‬‬ ‫وا ا مثا كخر علع نف‬

‫;‪import java.awt.Label‬‬
‫;‪import java.applet.Applet‬‬

‫{ ‪public class WelcomeApplet extends Applet‬‬


‫) (‪public void init‬‬
‫{‬
‫(‪Label strlbl = new Label‬‬
‫;) "!‪"Welcome to Java Programming‬‬
‫;) ‪add( strlbl‬‬
‫}‬
‫}‬
‫دورة حياة الربميج‪:‬‬

‫وتددددوع الددد مي علددددع ددددرق ‪ methods‬يددددتم ااددددتدعاااا تلقائيدددا مددددك قبددددل املتصددددفح‪،‬‬
‫الع اصددددر الدد ديت ادد د مددددك ئددددة مكونددددات وا ددددات‬ ‫مددددثالً إذا أراد املدد د م إرددددا ة بعدد د‬
‫دددددداا مدددددك كتابدددددة الطريقدددددة )(‪init‬‬ ‫البدددددد ع‬ ‫‪User‬‬ ‫‪Interface‬‬ ‫املسدددددتمدم ‪Components‬‬

‫ددددة حيدد د اددددتحتوع علددددع القدددديم البدائيددددة هلدد د الع اصددددر‪ .‬ويددددتم ت فيدد د ادد د‬ ‫أ دددداء ال‬
‫الطريقدددددة يف بدايدددددة عمدددددل الددد د مي ‪ ،‬كمدددددا تو دددددد الطريقدددددة )(‪ start‬والددددديت ت فددد د بعدددددد‬
‫الطريقدددة )(‪ init‬مبا دددرة‪ ،‬ويف كدددل مدددرة ي تقدددل ي دددا الد د مي مدددك ايالدددة غدددري الفعالدددة إىل‬
‫ايالة الفعالة يتم ت في الطريقة )(‪.start‬‬

‫ع دددددد اادددددتمدام ال ندددددام ‪ appletviewer‬لت فيددد د الددد د مي ‪ ،‬ع دددددد القيدددددام‬ ‫توض ي ي ي‬
‫يدددددخل الدد د مي يف حالددددة عدددددم الفاعليددددة ولكددددك‬ ‫بتصددددغري نا دد د ة العددددر‬
‫ع دددد اادددتعادة ال ا د د ة تكبريادددا) اددديعود الد د مي إىل ايالدددة الفعالدددة‪ .‬أمدددا‬
‫يف حالدددة اإلنرتندددر قدددد يدددرت املسدددتمدم إحددددى الصدددفحات الفعالدددة حاليد دا‬
‫ويد د اب إىل أخدددرى ويف اد د ايالدددة يكدددون الد د مي املو دددود يف الصدددفحة‬
‫السدددابقة قدددد دخدددل يف حالدددة الال عاليدددة ولكدددك ع دددد العدددودة إلي دددا ايت شدددا‬
‫ال مي مرة أخرى‪.‬‬

‫ومدددك الطدددرق أيةد دا الطريقدددة )(‪ stop‬الددديت ميكدددك وردددع ا ردددمك الشدددفرة يف حدددا‬
‫ويلددددة‪ .‬كمددددا يددددتم ت فيدد د ادد د الطريقددددة‬ ‫يرغددددب املدد د م أن تكددددون دورة حيدددداة الدد د مي‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ريقدددة رابعدددة تددددعع )(‪destroy‬‬ ‫تلقائيد دا ع ددددما يددددخل الد د مي يف حالدددة الال عاليدددة‪ .‬ا دددا‬
‫واد د الطريقدددة تسدددتدعع أيةد دا تلقائيد دا يف حدددا ت اخلدددرو ن ائيد دا مدددك الصدددفحة إغدددالق‬
‫الصددددددفحة)‪ ،‬أو ع ددددددد إغددددددالق نا دددد د ة ‪ .appletviewer‬وال ن سددددددع الطريقددددددة )(‪ paint‬الدددددديت‬
‫تستدعع ع د رام اإل ار وع د إعادة التحميل‪.‬‬

‫)(‪init‬‬

‫)(‪start‬‬ ‫)(‪start‬‬

‫)(‪paint‬‬

‫)(‪stop‬‬

‫)(‪destroy‬‬

‫دورة حياة ال مي‬

‫رسم اخلطوط واستخدام سالسل اهلروب‪:‬‬

‫يورح املثا التال ااتمدام االال اهلروب رمك ال مي ‪:‬‬

‫‪// Displaying multiple strings in an applet.‬‬


‫‪import java.awt.Graphics; // import class Graphics‬‬
‫‪import javax.swing.JApplet; // import class JApplet‬‬

‫{ ‪public class WelcomeApplet2 extends JApplet‬‬


‫‪// draw text on applet’s background‬‬
‫) ‪public void paint( Graphics g‬‬
‫{‬
‫‪// draw two Strings at different locations‬‬
‫;) ‪g.drawString( "Welcome to", 25, 25‬‬
‫;) ‪g.drawString( "Java Programming!", 25, 40‬‬
} // end method paint
} // end class WelcomeApplet2

:‫يورح املثا التال ااتمدام وظائ رام اخلطوط‬

// Displaying text and lines.


import java.awt.Graphics; // import class Graphics
import javax.swing.JApplet; // import class JApplet

public class WelcomeLines extends JApplet


{
// draw lines and a string on applet’s background
public void paint( Graphics g )
{
// draw horizontal line from (15, 10) to (210, 10)
g.drawLine( 15, 10, 210, 10 );

// draw horizontal line from (15, 30) to (210, 30)


g.drawLine( 15, 30, 210, 30 );

// draw String between lines at location (25, 25)


g.drawString( "Welcome to Java Programming!",
25, 25 );
} // end method paint
} // end class WelcomeLines

Fundamentals of Programming in Java - Ahmad Jabr


‫‪ (x1,‬ميثددددل اال دد د‬ ‫‪y1,‬‬ ‫‪x2,‬‬ ‫ذتلددددك الطريقددددة ‪ drawLine‬أربعددددة واددددائا )‪y2‬‬ ‫توض ي ي‬
‫يمدددثالن إحددددا يات‬ ‫‪ ،)x1,‬أمدددا الواددديط التدددالي‬ ‫‪y1‬‬ ‫األولد د إحددددا يات نقطدددة البدايدددة‬
‫نقطة ال اية ‪.)x2, y2‬‬

‫)‪(0, 0‬‬ ‫احملور ‪X‬‬

‫)‪(x1, y1‬‬

‫)‪(x2, y2‬‬
‫احملور ‪Y‬‬

‫بتمثيل اخلا املستقيم‬ ‫اخلا‬ ‫نظام اإلحدا‬

‫استخدام الربميجيات يف التعامل مع أعداد النقطة العائمة‪:‬‬

‫مدددع عددددديك صدددحيح ادددو‬ ‫ك دددا يف الفصدددل السددداب قدددد تعررد د ا لتطبيد د يقدددوم‬
‫الوظيفة ولكك علع عدديك حقيقي ‪:‬‬ ‫نقوم ا ا بعمل برمي ألداء نف‬

‫‪// Adding two floating-point numbers.‬‬


‫‪// Java packages‬‬
‫‪import java.awt.Graphics; // import class Graphics‬‬
‫‪import javax.swing.*; // import package javax.swing‬‬

‫‪public class AdditionApplet extends JApplet‬‬


‫{‬
‫‪double sum; // sum of values entered by user‬‬
// initialize applet by obtaining values from user
public void init()
{
String firstNumber;
// first string entered by user

String secondNumber;
// second string entered by user

double number1; // first number to add


double number2; // second number to add

// obtain first number from user


firstNumber = JOptionPane.showInputDialog(
"Enter first floating-point value" );

// obtain second number from user


secondNumber = JOptionPane.showInputDialog(
"Enter second floating-point value" );

// convert numbers from type String


// to type double
number1 = Double.parseDouble( firstNumber );
number2 = Double.parseDouble( secondNumber );

// add numbers
sum = number1 + number2;
} // end method init

// draw results in a rectangle on applet’s background


public void paint( Graphics g )
{
// draw rectangle starting from (15, 10) that is 270
// pixels wide and 20 pixels tall
g.drawRect( 15, 10, 270, 20 );

// draw results as a String at (25, 25)

Fundamentals of Programming in Java - Ahmad Jabr


g.drawString( "The sum is " + sum, 25, 25 );

} // end method paint


} // end class AdditionApplet

: ‫وع د ت في ال مي يظ ر التال‬
‫التوردددددديح‪ :‬يف ادددد د ا الدددد د مي ت ااددددددترياد ايامددددددة ‪ javax.swing‬ألن ددددددا ا سددددددتمدم‬
‫الوظيفددددددة ‪ showInputDialog‬املو ددددددودة رددددددمك الفئددددددة ‪ JOptionPane‬لقددددددراءة بيانددددددات مددددددك‬
‫املستمدم‪.‬‬

‫تسدددددتمدم الوظيفدددددة )(‪ Double.parseDouble‬لتحويدددددل قيمدددددة نصدددددية إىل قيمدددددة حقيقيدددددة‬


‫أعداد ذات نقطة عائمة ‪.)floating-point‬‬

‫ميدددل الددد مي ويليددده يدددتم اادددتدعاء‬ ‫يدددتم اادددتدعاء الوظيفدددة )(‪ init‬تلقائيدددا ع دددد بددددأ‬
‫الطريقدددددة )(‪ paint‬لرادددددم اإل دددددار مدددددع حمتوياتددددده‪ .‬وقدددددد اادددددتمدم ا ا دددددا وظيفدددددة رادددددم‬
‫‪ (x,‬ميثدددل األولد د إحددددا يات‬ ‫أربعدددة وادددائا )‪y, w, h‬‬ ‫املسدددتطيل ‪ drawRect‬والددديت ت خد د‬
‫و و املستطيل بالبكسل‪.‬‬ ‫نقطة بداية الرام‪ ،‬والتالي ميثالن قيمة عر‬

‫)‪(0, 0‬‬ ‫احملور ‪X‬‬

‫)‪(x, y‬‬

‫‪(width,‬‬
‫احملور ‪Y‬‬
‫)‪height‬‬

‫بتمثيل املستطيل‬ ‫اخلا‬ ‫نظام اإلحدا‬

‫الطرق اخلاصة برام األ كا اهل داية‪:‬‬ ‫والشكل التال يورح كرة بع‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫تنفيذ الربميج بطريقة أبسط‪:‬‬

‫تتطلدددب الطريقدددة الددديت اادددتمدم ااا إنشددداء ملد د ‪ HTML‬مدددك أ دددل كدددل بدددرمي نريدددد‬
‫دددل نوعد دا مدددا دددإذا ك دددر تسدددتمدم برندددام ‪ appletviewer‬ميك دددك‬ ‫ت فيد د ‪ ،‬وادددو أمدددر‬
‫‪HTML‬‬ ‫االعتمددداد علدددع إحددددى خواصددده لتسدد يل عملدددك‪ ،‬مدددا ي دددم ادد ا ال ندددام مدددك امللدد‬
‫ادددو الوادددم >‪ <applet‬ويت اادددل كدددل د د ء مدددا عددددااا‪ ،‬والادددتمدام اد د امليددداة ميك دددك‬
‫أن تةددددع يف بدايددددة برمي ددددك اددددطر تعليقددددات يتةددددمك كددددل واددددومات ‪ HTML‬الةددددرورية‬
‫كما يف املثا التال ‪:‬‬
// <applet code = "myApp" width = "200" height = "150">
// </applet>
public class myApp extends java.applet.Applet {
public void init() {
add( new java.awt.Label("Hi Jabr") );
}
}

: ‫ولت في قم برتمته م اكتب السطر التال أمام احمل‬

appletviewer myApp.java

: ‫يظ ر اخلر كالتال‬

‫ع ددددد إراددددا‬ ‫ددددة قددددا ولددددي‬ ‫ددددب االنتبددددا إىل أن اددد الطريقددددة تسددددتمدم أ دددداء ال‬
.‫ال مي للمستمدم‬

Fundamentals of Programming in Java - Ahmad Jabr


‫متارين الفصل الثالث‪:‬‬

‫يات ‪Applets‬‬ ‫‪ . 1‬ما او اهلد األااا مك تصميم ال مي‬

‫‪ . 2‬ما او الفرق ب ال مي يات والتطبيقات‬

‫‪ . 3‬امأل الفراغاغ التالية‪:‬‬

‫تاودنا الفئة‪ ...................‬مب موعة مك رق الرام‪.‬‬ ‫•‬

‫إنددددده يدددددتم اادددددتدعاء الطدددددرق التاليدددددة‪...................:‬‬ ‫ع دددددد بدايدددددة تشدددددغيل الددد د مي‬ ‫•‬

‫و‪ ...................‬و‪....................‬‬
‫تسددددددتمدم الكلمددددددة‪ ...................‬لتعريدددد د مددددددتغري حقيقدددد د مفددددددرد الدقددددددة‪ ،‬أمددددددا‬ ‫•‬

‫الكلمة‪ ...................‬تستمدم لتعري متغري حقيق مادو الدقة‪.‬‬


‫الويب حنتا إلنشاء‪....................‬‬ ‫لت في ال مي رمك مستعر‬ ‫•‬

‫يسدددددتمدم الوادددددم‪ ...................‬لتحديدددددد لتعريددد د بدددددرمي ردددددمك صدددددفحة الويدددددب‬ ‫•‬

‫ملفات ‪.)HTML‬‬

‫قددددم بكتابددددة بددددرمي يطلددددب مددددك املسددددتمدم إدخددددا أربعددددة أرقددددام ذثددددل‬ ‫‪. 4‬‬
‫‪ ،)x2,‬ددددم يقددددوم الدد د مي براددددم خدد دا مسددددتقيم‬ ‫‪y2‬‬ ‫‪ )x1,‬و‬ ‫‪y1‬‬ ‫إحدددددا يات نقطددددت‬
‫و كل مستطيل ب اء علع ا اإلحدا يات‪.‬‬

‫قدددم بكتابدددة بدددرمي يطلدددب مدددك املسدددتمدم إدخدددا رقمد د حقيقدددي ‪ ،‬دددم‬ ‫‪. 5‬‬
‫موع مددددا وحاصددددل دددددائ ما ومتواددددط ما‪ ،‬وأي مددددا أكددد وأي مددددا‬ ‫سدددداب‬ ‫يقددددوم‬
‫أصغر‪.‬‬
‫‪x,‬‬ ‫قدددم بكتابدددة بدددرمي يطلدددب مدددك املسدددتمدم إدخدددا إحددددا يات نقطدددة‬ ‫‪. 6‬‬
‫‪ )y‬كمركددا لدددائرة ددم يدددخل ق يمددة نصدد قطددر الدددائرة‪ .‬يقددوم ادد ا الدد مي براددم‬
‫‪ ،)drawOval(x,‬دددم يقدددوم‬ ‫‪y,‬‬ ‫‪w,‬‬ ‫)‪h‬‬ ‫ادد الددددائرة اادددتمدم الوظيفدددة‬
‫ساب اآلت ‪:‬‬

‫‪diameter =2r‬‬ ‫القطر)‬


‫‪circumference = 2πr‬‬ ‫احمليا)‬
‫‪area =πr2‬‬ ‫املساحة)‬

‫ملحوظدددددة‪ :‬ميثدددددل العددددددد ‪ π‬القيمدددددة ‪ 3.14159‬بالتقريدددددب‪ ،‬كمدددددا ميك دددددا ايصدددددو‬


‫عليددده مدددك الفئدددة ‪ Math‬بالشدددكل التدددال ‪ ،Math.PI‬تو دددد اددد الفئدددة يف ايامدددة‬
‫‪.java.lang‬‬

‫قم بكتابة برمي لرسم كلٍ من ما ي ي ع ى حده‪:‬‬ ‫‪. 7‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪Control Structures‬‬
‫مقدمة‪:‬‬

‫دددددب أن يتدددددو ر لددددددي ا مددددا دددددامالً‬ ‫قبدددددل كتابدددددة أع برندددددام يدددددل مسدددد لة مدددددا‪،‬‬
‫ددددب علي ددددا ددددم‬ ‫يدددا للحددددل‪ .‬وع ددددد كتابددددة ال نددددام ‪،‬‬ ‫للمسددد لة املطروحددددة وأاددددلوبا م‬
‫ددددب علي ددددا ااددددتمدام مبددددادجم و ددددرق مددد اك‬ ‫بيعددددة وأنددددواع األقسددددام املىللفددددة لدددده كمددددا‬
‫علي دددا مسدددبقًا‪ .‬ادددو نتطدددرق يف اد د ا الفصدددل ‪ -‬بدددإذن اهلل ‪ -‬مل اقشدددة ميدددع القةدددايا‬
‫ددددة امل يكلددددة‪ .‬والددددديت تفيددددد يف عمليددددة دددددم‬ ‫املتعلقددددة باملبددددادجم والطددددرق اخلاصدددددة بال‬
‫ة كائ ية التو ه‪.‬‬ ‫رق ال‬ ‫وت في‬

‫اخلوارزميات ‪:Algorithms‬‬

‫دددرع حدددل أع مسددد لة بر يدددة مددددك خدددال ت فيددد السددددلة مدددك األ عددددا و ددد ترتيددددب‬
‫معدد د ‪ .‬نطلدد د تسددددمية اخلوارزميددددة ‪ Algorithm‬علددددع أيددددة إ رائيددددة يددددل مسدد د لة مددددا تقددددوم‬
‫بتحديد‪:‬‬

‫‪ . 1‬األ عا الوا ب ت في اا‪.‬‬


‫‪ . 2‬الرتتيب الوا ب إتباعه مك أ ل ت في األ عا السابقة‪.‬‬

‫وهذا مثال لتو يح صوارزمية ااستيقاظ‪:‬‬

‫مك السرير‬ ‫‪ . 1‬ال و‬


‫‪ . 2‬خلع لبام ال وم‬
‫أخرى‬ ‫‪ . 3‬ارتداء مالب‬
‫‪ . 4‬أخ ايمام الصباح‬
‫‪ . 5‬ت او الفطور‬
‫‪ . 6‬ال ااب للعمل‬

‫ديدددد الرتيدددب الوا دددب إتباعددده مدددك أ دددل ت فيددد األ عدددا‬ ‫ويتةدددح يف اد د ا املثدددا أاميدددة‬
‫املرتبطة مبس لة ما‪.‬‬

‫لغة اخلوارزميات (الشفرة الزائفة) ‪:Pseudocode‬‬

‫لغددددة اخلوارزميددددات ادددد عبددددارة عددددك لغددددة مصددددط عة وغددددري متعددددار علي ددددا تسدددداعد‬
‫علددددع تطددددوير اخلوارزميددددات‪ .‬تشددددبه لغددددة اخلوارزميددددات لغددددة التما ددددب العاديددددة‬ ‫املدد د‬
‫لغة مبسطة ومف ومة ولك ا ليسر لغة بر ة علية‪.‬‬ ‫مثل اللغة العربية‬

‫ال ميكدددددك ت فيدددد الدددد ام املكتوبدددددة بلغدددددة اخلوارزميدددددات علدددددع اياادددددب‪ ،‬لك دددددا‬
‫تساعد امل م علع التفكري ب نا ه قبل حماولة كتابته ب ية لغة بر ة‪.‬‬

‫موعددددة مددددك األحددددر والكلمددددات‪ ،‬ميكددددك‬ ‫تتدد د ل لغددددة اخلوارزميددددات عددددادةً مددددك‬
‫املوا د د لددده بلغدددة‬ ‫مكتدددوب بع ايدددة بلغدددة اخلوارزميدددات بسد د ولة إىل الد د‬ ‫ويدددل أع نددد‬
‫‪ Java‬حيددددد ميكدددددك أن نسدددددتبد يف كدددددثري مدددددك ايددددداالت التعليمدددددات اخلاصدددددة بلغدددددة‬
‫اخلوارزميات مبكا ئت ا يف لغة ‪.Java‬‬

‫بىن التحكم ‪:Control Structures‬‬

‫يدددتم عددداد ًة ت فيد د تعليمدددات برندددام مدددا واحدددد ًة تلدددو األخدددرى حسدددب ترتيدددب ورودادددا يف‬
‫‪Sequential‬‬ ‫ال ندددددام ‪ .‬نسدددددم أاددد دلوب الت فيددد د اددد د ا بدددددد«الت فيددددد التسلسدددددل‬ ‫نددد د‬
‫‪.»Execution‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫برا ددر األ دددا ب نددده مدددك املمكدددك كتابدددة الدد ام باادددتمدام ال دددة ب دددع للدددتحكم قدددا‬
‫وا ‪:‬‬

‫ية ‪Sequence Structure‬‬ ‫البنية التس س‬ ‫•‬

‫بنية ااصتيار ‪Selection Structure‬‬ ‫•‬

‫بنية التكرار ‪Repetition Structure‬‬ ‫•‬

‫البنية التسلسلية ‪:Sequence Structure‬‬

‫ددددة مثددددل ‪ Java‬الب يددددة التسلسددددلية حيدد د أن ايااددددب يقددددوم‬ ‫تتبددددع كا ددددة لغددددات ال‬
‫ال ندددام ‪.‬‬ ‫بت فيدد تعليمدددات اللغدددة واحدددد ًة تلدددو األخدددرى‪ ،‬حسدددب ترتيدددب كتابت دددا ردددمك ندد‬
‫يوردددددح خمطدددددا ‪ UML‬التدددددال ب يدددددة تسلسدددددلية لت فيددد د عمليدددددت حسدددددابيت متعددددداقبت ‪.‬‬
‫تسددددمح ل ددددا لغددددة ‪ Java‬بااددددتمدام أع عدددددد نريددددد مددددك األ عددددا رددددمك الب ددددع التسلسددددلية‪.‬‬
‫كمدددا أنددده ميك دددا أن نسدددتبد أع عدددل مب موعدددة مدددك األ عدددا ردددمك أع ب يدددة تسلسدددلية‬
‫كما ا ورح ذلك الحقًا‪.‬‬

‫قيمة ‪ grade‬إىل ‪total‬‬ ‫أر‬ ‫تعليمة لغة ‪ Java‬املوا قة‪:‬‬

‫القيمة ‪ 1‬إىل ‪counter‬‬ ‫أر‬ ‫تعليمة لغة ‪ Java‬املوا قة‪:‬‬

‫;‪counter = counter + 1‬‬

‫خمطا ال شاط لب ية تسلسلية خاصة بلغة ‪Java‬‬


‫لغة النمذجة املوحدة ‪:UML Universal Modeling Language‬‬
‫ددددة مرئيددددة عامددددة األادددددا تسددددتمدم لتعريدد د ومعاي ددددة وب دددداء وتو يدد د‬ ‫ادد د لغددددة ا‬
‫املفدددداايم‬ ‫دددد امل شدددد ة‪ .‬ت ددددتم ادددداذ ادددد اللغددددة بتبيددددان بعدددد‬ ‫مكونددددات ال ظددددام ال‬
‫املتعلقدددة بال ظدددام وتت اادددل مفددداايم أخدددرى لت دددتم ب دددا ال مددداذ األخدددرى‪ ،‬و يددد تعطددد‬
‫تمعة وصفًا كامالً لل ظام‪.‬‬ ‫ا ال ماذ‬

‫ئات‪:‬‬ ‫ميكك تص ي ااذ لغة ‪ UML‬يف ال‬

‫وا تص ب ع املعطيات)‬ ‫ايالة ‪State models‬‬ ‫* ااذ‬


‫وا تص عالقات األ عا ب الكائ ات)‬ ‫‪Behavior models‬‬ ‫* ااذ السلو‬
‫واددد تصددد حدددداالت ال ظددددام املمك ددددة‬ ‫تغددددري ايالددددة ‪State Change models‬‬ ‫* ادددداذ‬
‫ع الامك)‬

‫تتةددددمك لغددددة ‪ UML‬عددددددا قلدددديالً مددددك املفددددردات الب يويددددة الدددديت تسددددمح بت ائددددة ال ظددددام‬
‫ي ميكك تطوير بطريقة تكرارية تاايدية‪.‬‬

‫ددددداءا مدددددك لغدددددة ‪.UML‬‬ ‫‪Activity‬‬ ‫شددددداط ‪Diagrams‬‬ ‫تشدددددكل خمططدددددات العمدددددل أو ال‬
‫الددديت تسددددمع أيةدددا بال شدددداط ‪)Activity‬‬ ‫‪Workflow‬‬ ‫األعمددددا‬ ‫ميثدددل خمطدددا العمددددل تدددد‬
‫املدروم‪.‬‬ ‫رمك اء مك أ ااء ال ظام ال‬

‫تتكددددون خمططددددات ال شدددداط مددددك رمددددوز خاصددددة ذات مع ددددع مثددددل رمددددا حالددددة الفعددددل‬
‫وادددو عبدددارة عدددك مسدددتطيل ذو دددانب مقواد د ميددديم ويسدددارع)‬ ‫‪action-state symbols‬‬

‫ورما املع ‪ diamond‬والدوائر الصغرية ‪.smallcircles‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ذثددددل الدددددائرة الصددددغرية املمتلئددددة املو ددددودة عدددداد ًة يف بدايددددة خمطددددا ال شدددداط‪ ،‬ايالددددة‬
‫‪ initial‬الددديت ميدددر ب دددا قبدددل البددددء بت فيد د ال شددداط يف حد د ذثدددل‬ ‫شددداط ‪state‬‬ ‫االبتدائيدددة لل‬
‫لقدددة إردددا ية املو دددودة يف ن ايدددة خمطدددا ال شددداط‪،‬‬ ‫الددددائرة الصدددغرية املمتلئدددة واحملا دددة‬
‫ايالة ال ائية اليت يصل إلي ا ال شاط يف ن اية ت في ‪.‬‬

‫‪ Transition‬الدددديت‬ ‫‪assows‬‬ ‫ددددرع الددددربا بددد اددد الرمددددوز بوااددددطة أاددد م االنتقددددا‬
‫رمك ال شاط‪.‬‬ ‫ذثل ايركة والتد‬

‫كمدددا ادددو ايدددا مدددع لغدددة اخلوارزميدددات‪ ،‬تسددداعد خمططدددات ال شددداط علدددع تطددددوير‬
‫وذثيددددل اخلوارزميددددات‪ .‬ومددددك الوارددددح أن ادد د املمططددددات تظ ددددر ريددددان الددددتحكم بدد د‬
‫األ ااء املمتلفة املكونة لل ظام املدروم‪.‬‬

‫أمدددددددا بال سدددددددبة للمسدددددددتطيالت ذات الااويدددددددة العلويدددددددة اليم دددددددع املث يدددددددة‪ ،‬تسدددددددمع‬
‫باملالحظددددات ‪ note‬يف لغددددة ‪ UML‬وادددد تفيددددد يف إيددددراد ددددرو إرددددا ية حددددو اهلددددد يف‬
‫و دددود الرمدددا يف املمطدددا‪ .‬ميكدددك اادددتمدام املالحظدددات يف أع خمطدددا مدددك خمططدددات‬
‫خمططدددددات ال شددددداط قدددددا‪ .‬اادددددتمدم ا املالحظدددددات يف املمطدددددا السددددداب‬ ‫‪ UML‬ولدددددي‬
‫لتورددديح تعليمدددات لغدددة ‪ Java‬املقابلدددة الددديت تعد د عدددك ال شددداط‪ .‬نالحدددرب أيةد دا و دددود خدددا‬
‫متقطع للربا ب املالحظة والرما ال ع تع ع ه‪.‬‬
‫نس سل‬

‫املمطا الص دوق للب ية التسلسلية‬

‫بنية االختيار ‪:Selection Structure‬‬

‫دددرط‬ ‫قد د‬ ‫ددداء معد د مدددك ال ندددام إذا‬ ‫ميثدددل اد د ا ال دددوع مدددك الب دددع عمليدددة ت فيد د‬
‫ما‪.‬‬

‫بال سددددبة لب ددددع االختيددددار إندددده يتددددو ر م ددددا يف لغددددة ‪ Java‬ال ددددة أنددددواع اددددو نقددددوم‬
‫بعرر ا يف ا ا الفصل وا ‪:‬‬

‫‪ )Single-selection‬الددددديت تسدددددمح‬ ‫يدددددة وحيددددددة االختيدددددار ‪structure‬‬ ‫الب‬ ‫يدددددة االختيدددددار ‪if‬‬ ‫ب‬
‫بت فيددد أو اختيددددار) عددددل مددددا إذا كددددان الشددددرط املرا ددد هلددددا صددددحيحا‪ ،‬وإال إن ددددا تقددددوم‬
‫بت اوز ذلك الفعل‪ ،‬أع أن ا تسمح باختيار أو جتاال عل ما‪.‬‬

‫‪ )Double-selection‬الدددديت‬ ‫يددددة مةدددداعفة االختيددددار ‪structure‬‬ ‫الب‬ ‫يددددة االختيددددار ‪if/else‬‬ ‫وب‬
‫عدددل كخدددر خمتلد د يف‬ ‫عدددل إذا كدددان الشدددرط املرا د د صدددحيحا أو بت فيد د‬ ‫تسدددمح بت فيد د‬
‫عل خمتلف ‪.‬‬ ‫ايالة املعاكسة ل لك‪ ،‬أع أن ا تسمح باالختيار ما ب‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪)Multiple-selection‬‬ ‫يدددددة متعدددددددة االختيدددددار ‪structure‬‬ ‫الب‬ ‫يدددددة االختيدددددار ‪switch‬‬ ‫أمدددددا ب‬
‫د د تسدددمح بت فيد د أحدددد األ عدددا املمتلفدددة املمك دددة وذلدددك حسدددب قيمدددة عبدددارة مدددا‪ ،‬أع‬
‫ك ة مك األ عا املمتلفة‪.‬‬ ‫موعة‬ ‫أن ا تسمح باختيار عل حمدد مك ب‬

‫‪Selection‬‬
‫‪switch statement‬‬
‫‪statement if‬‬ ‫‪(multiple‬‬
‫)‪(single selection‬‬ ‫)‪selection‬‬
‫‪t‬‬
‫‪break‬‬
‫‪t‬‬ ‫‪f‬‬
‫‪f‬‬
‫‪t‬‬ ‫‪break‬‬

‫‪if/else statement‬‬ ‫‪.‬‬


‫)‪(double selection‬‬ ‫‪.‬‬
‫‪f‬‬ ‫‪t‬‬ ‫‪t‬‬ ‫‪break‬‬
‫‪f‬‬
‫‪default‬‬

‫املمططات الص دوقية لب ع االختيار‬

‫بنية التكرار ‪:Repetition Structure‬‬

‫ميثدددل اد د ا ال دددوع مدددك الب دددع عمليدددة إعدددادة ت فيد د أ دددااء مدددك ال ندددام عددددد معد د مدددك‬
‫ددددرط معدد د ‪ .‬وذتلددددك لغددددة ‪ Java‬ددددال ب ددددع تكراريددددة اددددو‬ ‫املددددرات أو حتددددع يتحقدد د‬
‫نتطرق إلي ا بالتفصيل الحقًا ا ‪:‬‬

‫عدددل مدددا لعددددد حمددددد مدددك‬ ‫تسدددتمدم اددد الب يدددة لتكدددرار ت فيددد‬ ‫يدددة التكدددرار ‪for‬‬ ‫ب‬
‫املرات‪.‬‬
‫عددددل مددددا عدددددد غددددري حمدد ددود مددددك املددددرات‬ ‫وب يددددة التكددددرار ‪ while‬وتسددددتمدم لت فيدد د‬
‫ق الشرط املرا ‪.‬‬ ‫بشرط‬

‫عدددل مدددا عددددد غدددري حمددددود مدددك املدددرات إىل‬ ‫والب يدددة التكراريدددة ‪ do/while‬والددديت ت فد د‬
‫أن ال يتحق الشرط املرا ‪.‬‬

‫‪Repetition‬‬
‫‪for statement‬‬ ‫‪while statement‬‬ ‫‪do while statement‬‬

‫‪t‬‬
‫‪t‬‬ ‫‪f‬‬
‫‪t‬‬ ‫‪f‬‬
‫‪f‬‬

‫املمططات الص دوقية للب ع التكرارية‬

‫كدددم ادد ‪ :‬الب يدددة التسلسدددلية‪ ،‬دددال‬ ‫تدددوع علدددع ادددبعة ب دددع‬ ‫وب د د ا دددإن لغدددة ‪Java‬‬

‫أنواع مك ب ع االختيار و ال ة أنواع مك الب ع التكرارية‪.‬‬

‫يددددتم ب دددداء الدد د ام املكتوبددددة بلغددددة ‪ Java‬مددددك خددددال مددددع عدددددد مددددك ب ددددع الددددتحكم‬
‫امل اادددبة خلوارزميدددة اد د ا ال ندددام ‪ .‬كمدددا الحظ دددا يف املمططدددات السدددابقة ت التعدددبري عدددك‬
‫ب ا‪.‬‬ ‫الب ع مبا يسمع املمططات الص دوقية وتبدأ بدائرة صغرية وت ت‬

‫تسدد ل ادد املمططدددات عمليدددة ب ددداء ال ندددام حيدد نقدددوم بوصدددل الب دددع بعةدد ا بدددبع‬
‫ع ددددما نصدددل نقطدددة ال ايدددة لب يدددة مدددا بقطدددة البدايدددة لب يدددة أخدددرى تاليدددة هلدددا‪ .‬وتسدددمع اد د‬
‫ب ع التحكم ‪.control-structure stacking‬‬ ‫العملية بعملية تكدي‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ريقدددة تدددداخل‬ ‫يو دددد أيةد دا ريقدددة أخدددرى إردددا ية للوصدددل بد د ب دددع الدددتحكم‪ ،‬اد د‬
‫ب ع التحكم ‪.control-structure nesting‬‬

‫أسلوب الربجمة املُهيكلة ‪:Structured Programming‬‬

‫م بطريقدددة م يكلدددة إذ تسددداعد اد د الطريقدددة‬ ‫تصدددميم بدددرا‬ ‫دددب علدددع املد د‬


‫ولكشدددد العيدددددوب والتعددددديل أكثدددددر مدددددك‬ ‫علددددع إنتدددددا بددددرام أادددد ل للف دددددم وللفحدددد‬
‫ب مراعات ا مك أ ل ب اء برام م يكلة‪.‬‬ ‫مثيالت ا غري امل يكلة‪ .‬تو د قواعد‬

‫قواعد تشكيل برامج مُهيكلة‪:‬‬


‫اغ الهندوقية‪.‬‬ ‫ابدأ م ابسط املخ‬ ‫‪. 1‬‬

‫حالة ل‬

‫ميكن ااست ا ة عن أي ل بف ني مو وعني ع ى التس سل‪.‬‬ ‫‪. 2‬‬


‫تطبي‬ ‫تطبي‬ ‫تطبي‬
‫القاعدة ‪)2‬‬ ‫القاعدة ‪)2‬‬ ‫القاعدة ‪)2‬‬

‫حالة ل‬ ‫حالة ل‬ ‫حالة ل‬ ‫حالة ل‬

‫‪.‬‬
‫حالة ل‬ ‫حالة ل‬
‫‪.‬‬

‫حالة ل‬
‫حالة ل‬
‫ميكن ااست ا ة عن أي ل ببنية ل تحكم (نس س ية‪،for ،switch ،if/else ،if ،‬‬ ‫‪. 3‬‬
‫‪:)do/while ،while‬‬
‫تطبي القاعدة‬
‫‪)3‬‬

‫حالة ل‬

‫ص أ‬ ‫صواب‬

‫تطبي القاعدة‬ ‫تطبي القاعدة‬


‫حالة ل‬ ‫حالة ل‬
‫‪)3‬‬ ‫‪)3‬‬

‫ص أ‬ ‫صواب‬

‫ص أ‬ ‫صواب‬ ‫ص أ‬ ‫صواب‬

‫حالة ل‬ ‫حالة ل‬ ‫حالة ل‬ ‫حالة ل‬

‫ميكن ن بيق القاعدنني (‪ )2‬و(‪ )3‬قدر ما نشا ويف أي نرنيب نريد‪.‬‬ ‫‪. 4‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫بنية االختيار ‪( if‬البنية وحيدة االختيار ‪:)Single-selection structure‬‬

‫موعددة مددك‬ ‫ديددد مسددار عددل مددا مددك ب د‬ ‫ددرع ااددتمدام ب يددة االختيددار مددك أ ددل‬
‫املسدددارات املتاحدددة‪ .‬دددإذا كاندددر علدددع ادددبيل املثدددا ‪ ،‬در دددة ال دددا يف مدددادة مدددا تسددداوع ‪50‬‬
‫در ة‪ ،‬ع داا إن تعليمة لغة اخلوارزميات التالية‪:‬‬

‫‪if student's grad is greater than or equal‬‬ ‫إذا كانر در ة الطالب أك مك أو تساوع‬
‫‪to 50‬‬ ‫‪50‬‬
‫»‪print «Passed‬‬ ‫ا بع «نا ح»‬

‫يمدددا إذا كاندددر‬ ‫تقدددوم أوالً مدددك التحقد د مدددك صدددحة أو عددددم صدددحة الشدددرط الد د ع يفحد د‬
‫در ددددة الطالددددب أكددد مددددك أو تسدددداوع القيمددددة ‪ .50‬ددددم إذا كددددان الشددددرط حمققًدددا ع ددددداا‬
‫يددددتم باعددددة العبددددارة املطلوبددددة «نددددا ح ‪ »Passed‬وإال يددددتم ت فيدد د تعليمددددة لغددددة اخلوارزميددددة‬
‫يتحقدد د الشددددرط يددددتم جتااددددل‬ ‫التاليددددة حسددددب تسلسددددل ترتيددددب التعليمددددات‪ ،‬أع أندددده إذا‬
‫تعليمة الطباعة ليتم ت في التعليمات التالية هلا‪.‬‬

‫ميكك ااتبدا تعليمة لغة اخلوارزميات السابقة بالتعليمة التالية بلغة ‪:Java‬‬

‫) ‪if ( grad >= 50‬‬


‫;) "‪System.out.println( "Passed‬‬

‫واليت ميكك ذثيل ا باملمطا الص دوق التال ‪:‬‬

‫[‪]grade >= 50‬‬


‫"‪print "Passed‬‬

‫[‪]grade < 50‬‬


‫ت خدد د عبددددارة ‪ if‬كوادددديا هلددددا ددددر ًا مددددك الدد د ما ‪ boolean‬يكتددددب بدد د قوادد د ‪،‬‬
‫يدد د ميكددددك أن ي ددددت عددددك ادد د ا التعددددبري إحدددددى قيمددددت ‪ true‬أو ‪ ،false‬ددددإذا كانددددر‬
‫قيمدددة التعدددبري اد د ‪ false‬تت اادددل لغدددة ‪ Java‬التعليمدددة التاليدددة أو كتلدددة التعليمدددات التاليدددة‪،‬‬
‫الصيغة التالية‪:‬‬ ‫وتستمدم تعليمة ‪ if‬و‬

‫) ‪if ( condition‬‬
‫;‪statement‬‬

‫أو‪:‬‬

‫) ‪if ( condition‬‬
‫{‬
‫;‪statement_1‬‬
‫;‪statement_2‬‬
‫‪...‬‬
‫;‪statement_n‬‬
‫}‬

‫ذعددددل عبددددارة ‪ if‬ذتلددددك أكثددددر مددددك عبددددارة بر يددددة البددددد مددددك حصددددر تلددددك العبددددارات بددد‬
‫القوا }{‪.‬‬

‫ادد ورد ا ددا برنا ًددا يطلددب مدددك املسددتمدم إدخددا در تدده ومدددك ددم يقددوم بطباعددة ندددا ح يف‬
‫ق الشرط‪:‬‬ ‫حا‬

‫;‪import javax.swing.JOptionPane‬‬
‫‪public class IfTest‬‬
‫{‬
‫) ][‪public static void main( String args‬‬
‫{‬
‫;‪float grade‬‬
‫(‪grade = Float.parseFloat‬‬
‫(‪JOptionPane.showInputDialog‬‬
‫;)) "‪"Enter grade Number:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


if ( grade >= 50 )
JOptionPane.showMessageDialog( null,
" Passed \ngarde is " + grade ,
"Results", JOptionPane.PLAIN_MESSAGE );

System.exit( 0 );
}
}

:ً‫مثال‬ ‫ او تعبري م طق‬if ‫* ميكك أن يكون الشرط يف عبارة‬ ‫ملحوظي ي ي ي‬

if ( i % 2 == 0 ) {…}

:boolean ‫* كما ميكك أن يكون متغريا مك ال ما‬

boolean b = true;
if ( b ) {…}
‫* ي صدددح عددداد ًة بكتابدددة األقدددوام }{ حتدددع وإن اادددتمدمر عبدددارة واحددددة‬
‫يددد يكدددون ال ندددام أكثدددر اددد ولة يف القدددراءة والف دددم‬ ‫للتعليمدددة ‪if‬‬

‫والتعديل‪.‬‬

‫* يفةدددل وردددع مسدددا ة قبدددل العبدددارة الددديت ت تمددد للتعليمدددة السدددابقة هلدددا‬
‫لتس يل عملية الف م والتعديل مثالُ التعليمة‪:‬‬

‫) ‪if ( i % 2 == 0‬‬
‫;) "‪print( "bnvv‬‬

‫أ ةل مك التعليمة‪:‬‬

‫) ‪if (i % 2 == 0‬‬
‫;) "‪print( "bnvv‬‬

‫‪Double-selection‬‬ ‫بنية االختيار ‪( if/else‬البنية مضاعفة االختيار‬


‫‪:)structure‬‬

‫تسدددمح اد د الب يدددة بتحديدددد ملدددة مدددك األ عدددا املمكدددك ت فيد د اا إذا كدددان الشدددرط‬
‫يكدددددك كددد د لك‪ .‬علدددددع ادددددبيل املثدددددا ‪ ،‬تقدددددوم تعليمدددددة لغدددددة‬ ‫املرا ددد د صدددددحيحا أو إذا‬
‫اخلوارزميات التالية‪:‬‬

‫‪if student's grad is greater than or equal‬‬ ‫إذا كانر در ة الطالب أك مك أو تساوع‬
‫‪to 50‬‬ ‫‪50‬‬
‫»‪print «Passed‬‬ ‫ا بع «نا ح»‬
‫‪Else‬‬ ‫وإال‬
‫»‪print «Failed‬‬ ‫ا بع «رااب»‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫بطباعددددة كلمددددة نددددا ح ‪ Passed‬إذا كانددددر در ددددة الطالددددب أكددد مددددك أو تسدددداوع القيمددددة‬
‫‪ 50‬در ددددة وإال دد د تطبددددع الكلمددددة رااددددب ‪ .Failed‬ويف كددددال ايددددالت ‪ ،‬ي تقددددل الت فيدد د‬
‫بعد القيام بعملية الطباعة إىل تعليمة لغة اخلوارزميات التالية للتعليمة السابقة‪.‬‬

‫ميكك كتابة تعليمة لغة اخلوارزميات السابقة بلغة ‪ Java‬علع الشكل التال ‪:‬‬

‫) ‪if ( grad >= 50‬‬


‫;) "‪System.out.println( "Passed‬‬
‫‪else‬‬
‫;) "‪System.out.println( "Failed‬‬

‫وذثل تعليمة ‪ if/else‬السابقة مبمطا ال شاط التال ‪:‬‬

‫[‪]grade < 60‬‬ ‫[‪]grade >= 60‬‬


‫"‪Print "Failed‬‬ ‫"‪Print "Passed‬‬

‫الصيغة التالية‪:‬‬ ‫تستمدم تعليمة ‪ if/else‬و‬

‫) ‪if ( condition‬‬
‫;‪statement‬‬
‫‪else‬‬
‫;‪statement‬‬

‫أو‪:‬‬

‫) ‪if ( condition‬‬
‫} ‪{...‬‬
‫‪else‬‬
‫{‬
statement_1;
statement_2;
...
statement_n;
}

‫يددة البددد مددك حصددر تلددك العبددارات بدد‬ ‫ ذتلددك أكثددر مددك عبددارة بر‬if/else ‫ذعددل عبددارة‬
.if ‫ كما او ايا مع التعليمة‬،{} ‫القوا‬

‫اددد ورد ا ددددا برنا ًدددا يطلددددب مددددك املسددددتمدم إدخددددا در تدددده ومددددك ددددم يقددددوم بطباعددددة‬
:‫نا ح أو رااب حسب القيمة‬

import javax.swing.JOptionPane;
public class IfTest {
public static void main( String args[] )
{
float grade;
grade = Float.parseFloat(
JOptionPane.showInputDialog(
"Enter grade Number:" ));

if ( grade >= 50 )
JOptionPane.showMessageDialog( null,
" Passed \ngarde is " + grade ,
"Results", JOptionPane.PLAIN_MESSAGE
);
else
JOptionPane.showMessageDialog( null,
" Failed \ngarde is " + grade ,
"Results", JOptionPane.PLAIN_MESSAGE
);

System.exit( 0 );
}
}

Fundamentals of Programming in Java - Ahmad Jabr


:Conditional Operator ‫املعامل الشرطي‬

‫ واد د عمليدددة ال يدددة ت خد د‬.if/else ‫?) واد د تشدددبه الب يدددة‬: ‫يرمدددا هلد د ا العمليدددة بدددالرما‬
: ‫ال ة واائا كالتال‬

(conditional-expression) ? expression-if-true: expression-


if-false

:‫ التالية‬if/else ‫مثالً ميك ا كتابة تعليمة‬

if ( grad >= 50 )
System.out.println( "Passed" );
else
System.out.println( "Failed" );

: ‫بالشكل التال‬

System.out.println( ( grad >= 50 ) ? "Passed": "Failed" );

:‫والتعليمة‬

if ( y < 5 )
x = 4 * y;
else
x = 2 * y;

:‫بالشكل‬

x = ( y < 5 ) ? 4 * y: 2 * y;

:Nested if/else Statements ‫التعليمات الشرطية املتداخلة‬

‫يف حالدددة تعدددددت االحتمددداالت وزادت ايددداالت يفةدددل اادددتمدام عمليدددة تدددداخل التعليمدددات‬
:ً‫ مثال‬.‫الشر ية‬

if ( grad >= 90 )
System.out.println( "Excellent" );
else if ( grad >= 80 )
System.out.println( "Very Good" );
else if ( grad >= 65 )
System.out.println( "Good" );
else if ( grad >= 50 )
System.out.println( "Pass" );
else
System.out.println( "Fail" );

Multiple-selection ‫ (البنية متعددة االختيار‬switch ‫بنية االختيار‬


:)structure

‫ ومددددك دددداء‬case ‫تتدد د ل ادد د الب يددددة مددددك السددددلة مددددك األ ددددااء الدددديت تبدددددأ بكلمددددة‬
:switch ‫ املثا التال لتوريح عملية ااتمدام التعليمة‬.default ‫اختيارع او اذاء‬

import java.awt.Graphics;
import javax.swing.*;

Fundamentals of Programming in Java - Ahmad Jabr


public class SwitchTest extends JApplet {
int choice; // user's choice of which shape to draw
// initialize applet by obtaining user's choice

public void init()


{
choice = Integer.parseInt(
JOptionPane.showInputDialog(
"Enter 1 to draw lines\n" +
"Enter 2 to draw rectangles\n" +
"Enter 3 to draw ovals\n" ));
} // end method init
// draw shapes on applet's background

public void paint( Graphics g )


{
switch ( choice ) { // determine shape to draw
case 1: // draw a line
g.drawLine( 10, 10, 100, 100 );
break; // done processing case
case 2: // draw a rectangle
g.drawRect( 10, 10, 100, 100 );
break; // done processing case
case 3: // draw an oval
g.drawOval( 10, 10, 100, 100 );
break; // done processing case
default: // draw string indicating
//invalid value entered
g.drawString(
"Invalid value entered",
10, 40 );
} // end switch
} // end method paint
} // end class SwitchTest
: ‫ ذات اخليارات املتعددة بالشكل التال‬switch ‫ميكك ذثيل الب ية‬

Fundamentals of Programming in Java - Ahmad Jabr


a case ]true[
a action(s) case break
]false[

]true[
b case b action(s) case break
]false[

]true[
z case z action(s) case break
]false[
action(s) default

:)‫ (حلقة التكرار ذات العداد‬for ‫بنية التكرار‬

‫ ميكددددك‬.‫موعددددة مددددك التعليمددددات عدددددد مددددك املددددرات‬ ‫ لتكددددرار‬for ‫تسددددتمدم الب يددددة‬
: ‫ علع الشكل التال‬for ‫صياغة الشكل العام للب ية‬

for(initialization; loopContinuationCondition; increment)


statement;

:‫أو‬

for(initialization; loopContinuationCondition; increment)


{
‫;‪statement_1‬‬
‫;‪statement_2‬‬
‫‪...‬‬
‫;‪statement_n‬‬
‫}‬

‫حيدددد تقددددوم ‪ initialization‬بإعطدددداء قيمددددة ابتدائيددددة ملددددتغري الددددتحكم بددددالتكرار‬


‫واددددد عبددددددارة ت فدددد د مددددددرة واحدددددددة قددددددا قبددددددل إ ددددددراء عمليددددددة التكددددددرار‪ ،‬ويشددددددكل‬
‫ددددددددددددرط االاددددددددددددتمرار يف التكددددددددددددرار‪ ،‬أمددددددددددددا‬ ‫‪loopContinuationCondition‬‬

‫يقوم بايادة قيمة متغري التحكم بالتكرار‪.‬‬ ‫‪increment‬‬

‫متغري‬
‫الكلمة األاااية‬ ‫التحكم‬ ‫القيمة ال ائية ملتغري التحكم‬
‫‪for‬‬

‫)‪for ( int counter = 1; counter<=10; counter++‬‬

‫القيمة االبتدائية ملتغري التحكم‬ ‫رط االاتمرار‬ ‫زيادة قيمة متغري التكرار بواحد‬

‫وميثل املمطا التال خمطا ال شاط لب ية ‪ for‬اوذ ية‪:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


Establish initial value of
int counter = 1
control variable

]counter <= 10[ Draw a line on the Increment the


applet control variable
]counter > 10[

Determine whether g.drawLine(10, counter++


the final value of 10, 250, counter
control variable has * 10);
been reached

:‫موعة مك األمثلة تورح عملية التكرار‬ ‫وا‬

import java.awt.Graphics;
import javax.swing.JApplet;

public class ForCounter extends JApplet {


public void paint( Graphics g )
{
String output="";

for(int counter = 1; counter <= 10; counter++ )


{
output += counter;

g.drawString( output, 10,


20 + counter * 10 );

output="";
}
}
}
import java.awt.Graphics;
import javax.swing.JApplet;

public class ForCounter extends JApplet {


public void paint( Graphics g )
{
for(int counter = 1; counter <= 10; counter++ )
g.drawLine( 10, 10, 250, counter * 10 );
}
}

:‫وا ا برنام يستمدم يساب املةروب لعدد يعطيه املستمدم‬

import javax.swing.JOptionPane;

public class Factorial {


public static void main( String[] args )

Fundamentals of Programming in Java - Ahmad Jabr


{
int fact=1, n;
n=Integer.parseInt(JOptionPane.showInputDialog(
"Enter number Integer:"));

for ( int i = 1; i <= n; i++ )


fact *= i;

JOptionPane.showMessageDialog( null,
n + "! = " + fact );

System.exit( 0 );
}
}

: ‫وا ا ال نام يقوم برام كل مثل‬

import javax.swing.JOptionPane;

public class Triangle1 {


public static void main( String[] args ){
int n = 5, i, j;
String output = "";
for ( i = 1; i <= n; i++ )
{
for ( j = 1; j <= i; j++ )
output += "* ";

output += "\n";
}

JOptionPane.showMessageDialog( null, output );

System.exit( 0 );
}
}

public class Triangle2 {


public static void main( String[] args )
{
int n = 5, i, j;
String output = "";

for ( i = 1; i <= n; i++ )


{
for ( j = 1; j <= n - i; j++ )
output += " ";

for ( j = 1; j <= i; j++ )


output += "*";

output += "\n";
}

Fundamentals of Programming in Java - Ahmad Jabr


System.out.println( output );
}
}

: ‫يكون اخلر كالتال‬ ‫أما يف ا ا ال نام‬

*
**
***
****
*****

‫ والدددديت ال تقبددددل‬100‫ و‬0 ‫ال ندددام التددددال يقددددوم بطباعددددة األعددددداد الاو يددددة احملصددددورة بددد‬
: ‫ بدون باق‬3 ‫القسمة علع‬

import javax.swing.JOptionPane;

public class math1 {


public static void main( String[] args )
{
String output = "";

for ( int i = 0; i <= 20; i++ )


if ( i % 2 ==0 && i % 3 != 0 )
output += i + "\n";

JOptionPane.showMessageDialog( null, output );

System.exit( 0 );
}
}
:100‫ و‬2 ‫موع األعداد الاو ية احملصورة ب‬ ‫برنام يساب‬

// Summing integers with the for statement.


import javax.swing.JOptionPane;

public class Sum {


public static void main( String args[] )
{
int total = 0;
for(int number = 2; number <= 100; number += 2)
total += number;

JOptionPane.showMessageDialog( null,
"The sum is " + total,
"Total Even Integers from 2 to 100",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );
}
}

Fundamentals of Programming in Java - Ahmad Jabr


: ‫ساب قيمة اجملموع التال‬ ‫برنام يقوم‬

10
2i − 5
sum = 
i =1 i
import javax.swing.JOptionPane;

public class mySum {


public static void main( String[] args )
{
double sum = 0, pow2i;
int i, j;

for (i = 1; i <= 10; i++ ) {


pow2i = 1;

for (j = 1; j <= i; j++ )


pow2i *= 2;

sum += (pow2i - 5)/i;


}

JOptionPane.showMessageDialog( null,
"sum = " + sum );

System.exit( 0 );
}
}

:‫ الساب ال كر‬switch ‫تعديل علع برنام اختبار العبارة‬

import java.awt.Graphics;
import javax.swing.*;

public class SwitchTest extends JApplet {


int choice;
public void init()
{
String input;
input = JOptionPane.showInputDialog(
"Enter 1 to draw lines\n" +
"Enter 2 to draw rectangles\n" +
"Enter 3 to draw ovals\n" );
choice = Integer.parseInt( input );
}
public void paint( Graphics g )
{
for ( int i = 0; i < 10; i++ ) {
switch ( choice ) {
case 1:
g.drawLine( 10, 10, 250,
10 + i * 10 );
break;
case 2:
g.drawRect( 10 + i * 10,
10 + i * 10, 50 + i * 10,
50 + i * 10 );
break;
case 3:
g.drawOval( 10 + i * 10,
10 + i * 10, 50 + i * 10,
50 + i * 10 );
break;
default:
g.drawString(
"Invalid value entered",
10, 20 + i * 15 );
}
}
}
}

Fundamentals of Programming in Java - Ahmad Jabr


‫بنية التكرار ‪:while‬‬

‫ددددرع تكراراددددا‬ ‫موعددددة مددددك األ عددددا‬ ‫تسددددمح ادد د الب يددددة التكراريددددة بتحديددددد‬
‫للب ية حمققًا‪ .‬ويكون خمطا ا الب ية كالتال ‪:‬‬ ‫املا ظلَّ الشرط املرا‬

‫ل خد د كمثدددا يوردددح اادددتمدام ‪ ،while‬ددداءا مدددك برندددام يقدددوم بتحديدددد أو قيمدددة‬


‫أن ‪ p‬ادددو مدددتغري صدددحيح وتدددوع علدددع‬ ‫‪ )n‬أكد د مدددك ‪ ،1000‬بفدددر‬ ‫مدددك الشدددكل ‪(n>=12‬‬

‫القيمددددة ‪ 2‬كقيمددددة ابتدائيددددة‪ .‬ع ددددد ن ايددددة الب يددددة التكراريددددة ‪ while‬التاليددددة اددددو حنصددددل‬
‫علع القيمة اليت نبح ع ا‪:‬‬

‫;‪int p = 2‬‬
‫)‪while ( p <= 1000‬‬
‫;‪p = 2 * p‬‬

‫‪ p‬غدددري‬ ‫دددداا يكدددون الشدددرط ‪<= 1000‬‬ ‫تتاايدددد قيمدددة املدددتغري ‪ p‬إىل أن تكدددون ‪ 1024‬وع‬
‫متحققًا وع داا يتوق التكرار‪.‬‬

‫‪merge‬‬

‫‪decision‬‬
‫[‪]product <= 1000‬‬
‫‪double product value‬‬

‫[‪]product > 1000‬‬


‫‪:Corresponding Java statement‬‬
‫;‪product = 2 * product‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


:‫ ذات العداد‬while ‫بنية‬

‫دددإن التكدددرار ذع العدددداد يسدددتمدم للتكدددرار بعددددد معد د‬ ‫كمدددا علم دددا مدددك السددداب‬
‫ ذات عددددداد‬while ‫ وميك ددددا كتابددددة عبددددارة‬for ‫مددددك املددددرات كمددددا اددددو ايددددا يف العبددددارة‬
:‫ التالية‬for ‫ مثالً عبارة‬.for ‫كيفية عبارة‬ ‫بف‬

for(initialization; loopContinuationCondition; increment )


statement;

:while ‫ميكك كتابت ا بالشكل التال يف عبارة‬

initialization;
while ( loopContinuationCondition ) {
statement;
increment;
}

‫ برنددددام يسددداب معددددد‬.‫ ذات العدددداد‬while ‫وال ندددام التدددال لتوردددديح اادددتمدام العبددددارة‬
: ‫ الب يف ص‬10 ‫در ات‬

// Class-average program with


// counter-controlled repetition.

import javax.swing.JOptionPane;

public class Average1 {


public static void main( String args[] )
{
int total; // sum of grades input by user
int gradeCounter; // number of grade to
// be entered next
int grade; // grade value
int average; // average of grades
String gradeString; // grade typed by user
// initialization phase
total = 0; // initialize total
gradeCounter = 1; // initialize loop counter
// processing phase
while ( gradeCounter <= 10 ) { // loop 10 times
// prompt for input and read grade from user
gradeString = JOptionPane.showInputDialog(
"Enter integer grade: " );

// convert gradeString to int


grade = Integer.parseInt( gradeString );

// add grade to total


total = total + grade;

// increment counter
gradeCounter = gradeCounter + 1;

} // end while

// termination phase
average = total / 10; // integer division

// display average of exam grades


JOptionPane.showMessageDialog( null,
"Class average is " + average,
"Class Average",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 ); // terminate the program


} // end main
} // end class Average1

Fundamentals of Programming in Java - Ahmad Jabr


:‫ بدون عداد‬while ‫بنية‬

‫ برندددام يسددداب‬.‫ ذات قيمدددة دددر ية‬while ‫وال ندددام التدددال لتورددديح اادددتمدام العبدددارة‬
: ‫معد در ات الب ص‬

// Class-average program with


// sentinel-controlled repetition.

import java.text.DecimalFormat; // class to format numbers


import javax.swing.JOptionPane;

public class Average2 {


public static void main( String args[] )
{
int total;
int gradeCounter;
int grade;
double average;
String gradeString;

total = 0;
gradeCounter = 0;

gradeString = JOptionPane.showInputDialog(
"Enter Integer Grade or -1 to Quit:" );
grade = Integer.parseInt( gradeString );

while ( grade != -1 ) {
total = total + grade;

gradeCounter = gradeCounter + 1;

gradeString = JOptionPane.showInputDialog(
"Enter Integer Grade or -1 to Quit:"
);

grade = Integer.parseInt( gradeString );

Fundamentals of Programming in Java - Ahmad Jabr


}

DecimalFormat twoDigits = new DecimalFormat(


"0.00" );

if ( gradeCounter != 0 ) {

average = (double) total / gradeCounter;

JOptionPane.showMessageDialog( null,
"Class average is " +
twoDigits.format( average ),
"Class Average",
JOptionPane.INFORMATION_MESSAGE );
}
else
JOptionPane.showMessageDialog( null,
"No grades were entered",
"Class Average",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );
}
}
‫بنية التكرار ‪:do/while‬‬

‫تشددددبه ب يددددة ‪ do/while‬الب يددددة ‪ while‬حيدد د نقددددوم بالب يددددة ‪ while‬بددددالتحق مددددك صددددحة‬
‫دددددرط االادددددتمرار بدددددالتكرار يف بدايدددددة ايلقدددددة قبدددددل ت فيددد د اا‪ .‬أمدددددا يف حالدددددة الب يدددددة‬
‫سدددددم الب يدددددة‬ ‫سدددددم ايلقدددددة أوالً‪ .‬أع يدددددتم ت فيددددد‬ ‫يدددددتم ذلدددددك بعدددددد ت فيددددد‬ ‫‪do/while‬‬

‫‪ do/while‬مدددددددرة واحددددددددة علدددددددع األقدددددددل‪ .‬وتكدددددددون الصددددددديغة العامدددددددة للعبدددددددارة ‪do/while‬‬

‫بالشكل‪:‬‬

‫‪do‬‬
‫;‪statement‬‬
‫;) ‪while ( condition‬‬

‫أو‪:‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


do {
statement_1;
statement_2;
...
statement_n;
} while ( condition );

: ‫ كالتال‬do/while ‫وخمطا ال شاط للب ية‬

action state

]true[
condition

]false[

:do/while ‫ال مي التال يورح ااتمدام العبارة‬

// Using the do...while statement.

import java.awt.Graphics;
import javax.swing.JApplet;

public class DoWhileTest extends JApplet {


// draw lines on applet
public void paint( Graphics g )
{
int counter = 1; // initialize counter
do {
g.drawOval( 110 - counter * 10,
110 - counter * 10,
counter * 20, counter * 20 );
++counter;
} while ( counter <= 10 ); // end do...while

} // end method paint


} // end class DoWhileTest

:continue‫ و‬break ‫التعليمتان‬

‫الدددددتحكم‬ ‫دددددرى تدددددد‬ ‫ مدددددك أ دددددل تغددددديري‬continue‫ و‬break ‫تسدددددتمدم التعليمتدددددان‬


. ‫رمك ال نام‬

switch, for, while, do/while ‫دددع‬ ‫ ع دددد ت فيد د اا مدددع أحدددد الب‬break ‫تسدددبب التعليمدددة‬
‫اخلددرو املبا ددر مددك ادد الب يددة ويتددابع ال نددام بعددداا ت فيدد مددع أو تعليمددة تلدد الب يددة‬
:break ‫ ال نام التال يب ااتمدام التعليمة‬.‫مبا رة‬

// Terminating a loop with break.

import javax.swing.JOptionPane;

public class BreakTest {


public static void main( String args[] )
{

Fundamentals of Programming in Java - Ahmad Jabr


‫;"" = ‪String output‬‬
‫;‪int count‬‬

‫‪// loop 10 times‬‬


‫{ ) ‪for ( count = 1; count <= 10; count++‬‬
‫‪if ( count == 5 ) // if count is 5,‬‬
‫‪break; // terminate loop‬‬

‫;"‪output += count + "\n‬‬


‫‪} // end for‬‬

‫‪output += "\nBroke out of loop at count = " +‬‬


‫;‪count‬‬

‫;) ‪JOptionPane.showMessageDialog( null, output‬‬

‫‪System.exit( 0 ); // terminate application‬‬


‫‪} // end main‬‬
‫‪} // end class BreakTest‬‬

‫‪for,‬‬ ‫‪while,‬‬ ‫دددددع‪do/while‬‬ ‫تسدددددبب التعليمدددددة ‪ continue‬ع دددددد ت فيدددد اا مدددددع أحدددددد الب‬
‫جتددداوز مدددا تبقدددع مدددك التعليمدددات يف سدددم التكدددرار واملتابعدددة مدددع املدددرور التدددال يف ايلقدددة‪.‬‬
‫‪ while,‬القيدددام بدددالتحق مدددك صدددحة دددرط اادددتمرار التكدددرار‬ ‫‪do/while‬‬ ‫يدددتم يف الب يدددت‬
‫مبا دددر ًة بعدددد ت فيد د التعليمدددة ‪ .continue‬أمدددا مدددع الب يدددة ‪ ،for‬يدددتم القيدددام بعمليدددة الايدددادة‬
‫ ال نددددام التددددال يددددب ااددددتمدام‬.‫أوالً ددددم يبدددددأ بعددددداا تقيدددديم ددددرط ااددددتمرار التكددددرار‬
:continue ‫التعليمة‬

// Continuing with the next iteration of a loop.

import javax.swing.JOptionPane;

public class ContinueTest {


public static void main( String args[] )
{
String output = "";

for ( int count = 1; count <= 10; count++ ) {


// loop 10 times
if ( count == 5 ) // if count is 5,
continue;
// skip remaining code in loop

output += count + "\n";


} // end for

output += "\nUsed continue to skip printing 5";

JOptionPane.showMessageDialog( null, output );

System.exit( 0 ); // terminate application


} // end main
} // end class ContinueTest

Fundamentals of Programming in Java - Ahmad Jabr


‫العمليات املنطقية (العبارات املنطقية املركبة)‪:‬‬

‫دددددب اادددددتمدام العمليدددددات‬ ‫لرتكيدددددب عبدددددارت أو أكثدددددر مدددددك العبدددددارات امل طقيدددددة‬
‫‪ logical‬الدددديت ذك ددددا مددددك تشددددكيل ددددروط معقدددددة مددددك خددددال‬ ‫طقيددددة ‪operators‬‬ ‫امل‬
‫اذمدددع بددد عددددة دددروط بسددديطة‪ .‬اددد العمليدددات اددد ‪ && :‬عمليدددة «و ‪ »And‬امل طقيدددة)‬
‫‪ »not‬امل طقيدددددة أو مدددددا يسدددددمع عمليدددددة‬ ‫و|| عمليدددددة «أو ‪ »Or‬امل طقيدددددة) و! عمليدددددة «لدددددي‬
‫ال ف )‪ .‬ميكك دم أع عبارت م طقيت بالشكل التال ‪:‬‬

‫‪expression && expression‬‬


‫‪expression || expression‬‬
‫‪! expression‬‬

‫أو‬

‫) ‪( expression ) && ( expression‬‬


‫) ‪( expression ) || ( expression‬‬
‫) ‪! ( expression‬‬
‫جدول احلقيقة اخلاص بالعملية املنطقية && «و ‪ »And‬املنطقية‪:‬‬

‫‪expression1‬‬ ‫‪expression2‬‬ ‫‪expression1 && expression2‬‬


‫‪true‬‬ ‫‪true‬‬ ‫‪true‬‬
‫‪false‬‬ ‫‪true‬‬ ‫‪false‬‬
‫‪true‬‬ ‫‪false‬‬ ‫‪false‬‬
‫‪false‬‬ ‫‪false‬‬ ‫‪false‬‬

‫اد د ا اذددددو بالعبدددارة التاليدددة‪« :‬تكدددون العبدددارة املركبدددة بالعمليدددة &&‬ ‫ميكدددك تلمدددي‬
‫صددددحيحة قددددا يف حالددددة كانددددر كا ددددة العبددددارات صددددحيحة وتكددددون خا ئددددة يف حالددددة‬
‫كانر إحدى العبارات خا ئة»‪.‬‬

‫جدول احلقيقة اخلاص بالعملية املنطقية || «أو ‪ »Or‬املنطقية‪:‬‬

‫‪expression1‬‬ ‫‪expression2‬‬ ‫‪expression1 || expression2‬‬


‫‪true‬‬ ‫‪true‬‬ ‫‪true‬‬
‫‪false‬‬ ‫‪true‬‬ ‫‪true‬‬
‫‪true‬‬ ‫‪false‬‬ ‫‪true‬‬
‫‪false‬‬ ‫‪false‬‬ ‫‪false‬‬

‫اددد ا اذدددددو بالعبددددارة التاليددددة‪« :‬تكددددون العبددددارة املركبددددة بالعمليددددة ||‬ ‫ميكدددك تلمددددي‬
‫صددددحيحة يف حالددددة كانددددر إحدددددى العبددددارات صددددحيحة وتكددددون خا ئددددة يف حالددددة كانددددر‬
‫كا ة العبارات خا ئة»‪.‬‬

‫جدول احلقيقة اخلاص بالعملية املنطقية ! «ليس ‪ »not‬املنطقية‪:‬‬

‫‪expression‬‬ ‫‪! expression‬‬


‫‪true‬‬ ‫‪false‬‬
‫‪false‬‬ ‫‪true‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫متارين الفصل الرابع‪:‬‬

‫ما نعم باخلوارزميات‪ ،‬وما ا أام وائداا‬ ‫‪. 1‬‬

‫ما املقصود بب ية التكرار‪ ،‬ملاذا تستمدم‬ ‫‪. 2‬‬

‫‪ .3‬امأل الفراغات التالية‪:‬‬


‫ميكددددددددك كتابددددددددة ميددددددددع الدددددد د ام بااددددددددتمدام ال ددددددددة أنددددددددواع مددددددددك ب ددددددددع‬ ‫•‬

‫التحكم‪ ...................:‬و‪ ...................‬و‪....................‬‬

‫عددددل مددددا ع دددددما يكددددون ددددر ا‬ ‫تسددددتمدم الب يددددة‪ ...................‬مددددك أ ددددل ت فيدد د‬ ‫•‬

‫عل كخر ع دما يكون ذلك الشرط غري حمققًا‪.‬‬ ‫حمققًا وتقوم بت في‬

‫موعدددددة مدددددك التعليمدددددات عدددددددا مدددددك املدددددرات بعمليدددددة‬ ‫تسدددددمع عمليدددددة تكدددددرار‬ ‫•‬

‫التكرار ذات‪....................‬‬

‫‪ . 4‬ما ا نتي ة ت في ال نام التال ‪:‬‬

‫{‪public class Printing‬‬


‫{ ) ‪public static void main( String [] args‬‬
‫{ )‪for ( int i = 1; i <= 10; i++‬‬
‫)‪for ( int j = 1; j <= 5; j++‬‬
‫;) '@' (‪System.out.print‬‬
‫;)(‪System.out.println‬‬
‫}‬
‫}‬
‫}‬

‫قدددددم بكتابدددددة برندددددام يقدددددوم بإ ددددداد ددد د رع املعادلدددددة‪ax2+bx+c=0 :‬‬ ‫‪. 5‬‬
‫‪− b  b 2 − 4ac‬‬
‫=‪.x‬‬ ‫حسب القانون‪:‬‬
‫‪2a‬‬
‫قددددم بكتابددددة برنددددام يقددددوم بطباعددددة كا ددددة األعددددداد األوليددددة احملصددددورة‬ ‫‪. 6‬‬
‫بد د العددددديك ‪ 0‬و‪ .100‬العددددد األولد د ادددو العددددد الد د ع ال يقبدددل القسدددمة بددددون بددداق‬
‫إال علع نفسه وعلع الرقم ‪.)1‬‬

‫مددددوع األعددددداد الصددددحيحة مددددك ‪1‬‬ ‫سدددداب‬ ‫قددددم بكتابددددة برنددددام يقددددوم‬ ‫‪. 7‬‬
‫حتع ‪ .10‬ااتمدم الب ية ‪.while‬‬

‫‪ x‬مر وعددددة للقددددوة ‪ .)y‬ااددددتمدم‬ ‫سدددداب ‪xy‬‬ ‫قددددم بكتابددددة برنددددام يقددددوم‬ ‫‪. 8‬‬
‫علمدددد دا بدددد د ن ‪ xy‬تعددددددم أن العدددددددد ‪ x‬ت رددددددربه يف نفسدددددده ‪ y‬مددددددك‬ ‫العبددددددارة ‪do/while‬‬

‫املرات)‪.‬‬

‫ساب القيمة ‪ ex‬بااتمدام الصيغة‪:‬‬ ‫اكتب برنا ًا يقوم‬ ‫‪. 9‬‬


‫‪x x 2 x3‬‬
‫‪ex = 1+‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪+ ...‬‬
‫!‪1! 2! 3‬‬

‫سدددددداب قيمددددددة العدددددددد ‪ π‬وذلددددددك بااددددددتمدام‬ ‫اكتددددددب برنا ًدددد دا يقددددددوم‬ ‫‪. 10‬‬
‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬
‫السلسلة التالية‪ = 4 − + − + ... :‬‬
‫‪3‬‬ ‫‪5‬‬ ‫‪7‬‬

‫اكتب برنا ا يقوم بطباعة ال ماذ التالية واحدا تلو اآلخر‪:‬‬ ‫‪. 11‬‬

‫‪)A‬‬ ‫‪)B‬‬ ‫‪)C‬‬


‫*********‬ ‫*********‬ ‫*‬
‫********‬ ‫********‬ ‫***‬
‫*******‬ ‫*******‬ ‫*****‬
‫******‬ ‫******‬ ‫*******‬
‫*****‬ ‫*****‬ ‫*********‬
‫****‬ ‫****‬ ‫*******‬
‫***‬ ‫***‬ ‫*****‬
‫**‬ ‫**‬ ‫***‬
‫*‬ ‫*‬ ‫*‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫)‪Methods (Functions‬‬

‫مقدمة‪:‬‬

‫إن معظددددم الددد ام الدددديت تت دددداو مسددددائل هلددددا عالقددددة بالعددددا ايقيقددد احملدددديا ب ددددا‪،‬‬
‫اد د بدددرام أكد د مدددك تلدددك الددديت ادددو نقدددوم بعررد د ا‪ .‬ولقدددد برا دددر الت ربدددة علدددع أن‬
‫أ ةدددددل ريقدددددة لتطدددددوير وصددددديانة برندددددام كدددددبري‪ ،‬تتمثدددددل يف عمليدددددة جتائتددددده إىل قطدددددع‬
‫وأ ددددااء أصددددغر ‪ modules‬ميكددددك الددددتحكم ب ددددا بسدد د ولة أكدد د مددددك ال نددددام األصددددل ‪.‬‬
‫اد د ا الفصدددل‬ ‫‪ .»divide‬يعدددر‬ ‫د درحق تسدددد ‪and conquer‬‬ ‫تسدددمع اد د الطريقدددة بطريقدددة «‬
‫عددددددة إمكانيدددددات للغدددددة ‪ Java‬مسددددداعدة يف عمليدددددة تطدددددوير وتصدددددميم وتشدددددغيل وصددددديانة‬
‫ال ام الكبرية‪.‬‬

‫أجزاء برنامج بلغة جافا )‪:(Program Modules in Java‬‬

‫ذتلدددددك الددد د ام يف ‪ Java‬ندددددوع مدددددك األ دددددااء الطدددددرق ‪ methods‬والفئدددددات ‪.classes‬‬


‫يدددتم كتابدددة بدددرام ‪ Java‬عدددادة بد د ن يدددتم اذمدددع بد د الطدددرق املكتوبدددة مدددك قبدددل املد د م‬
‫والطددددرق اذدددداااة املتددددو رة يف املكتبددددات املعياريددددة للغددددة ‪ ،Java‬كدد د لك اددددو ايددددا مددددع‬
‫الفئات‪.‬‬

‫‪(Java‬‬ ‫‪Application‬‬ ‫‪Programming‬‬ ‫تددددوع مكتبددددات الطدددددرق املعياريددددة يف ‪Java‬‬

‫موعددة غ يددة مددك الطددرق اخلاصددة‬ ‫‪ Interface‬علددع‬ ‫)‪«Java API» or Java class library‬‬

‫بت فيددد العمليدددات ايسدددابية الرياردددية الشدددائعة‪ ،‬والعمليدددات اخلاصدددة بسالادددل ايدددرو‬
‫باإلرددددا ة إىل عمليددددات الدددددخل‪/‬اخلر وعمليددددات التحقدددد وكشدد د األخطدددداء والكددددثري‬
‫الكثري غرياا‪.‬‬

‫يسددددتطيع املدد د م كتابددددة ددددرق للقيددددام مب ددددام حمددددددة ميكددددك ااددددتمدام ا يف عدددددة‬
‫‪Programmer-‬‬ ‫ال ندددام ‪ .‬تسدددمع اددد الطدددرق أحياندددا «بطدددرق املددد م‬ ‫نقددداط ردددمك نددد‬
‫‪ »Defined‬حيد د جتدددرع كتابدددة التعليمدددات املعر دددة للطريقدددة مدددرة واحددددة قدددا‬ ‫‪Methods‬‬

‫وتبقع بعداا ا التعليمات معاولة وخمبئة بال سبة لبقية الطرق‪.‬‬

‫يدددتم اادددتدعاء أع ريقدددة مدددك الطدددرق الددديت كتب اادددا مدددك أ دددل إ ددداز امل مدددة اخلاصدددة‬
‫‪ .method‬تتةددددمك عمليددددة االاددددتدعاء ااددددم الطريقددددة‬ ‫ا ‪Call‬‬ ‫ب ددددا) مددددك خددددال ااددددتدعائ‬
‫املسددددتدعاة واملعلومددددات الالزمددددة هلددددا للقيددددام بعملدد د ا علددددع ددددكل واددددطاء ‪.)arguments‬‬
‫ددددة عمليددددة اإلدارة ذات التسلسددددل اهلرمدد د حيدد د يطلددددب رب‬ ‫تشددددبه ادد د العمليددددة يف ال‬
‫العمددددل الدد د ع يقددددوم بااددددتدعاء الطددددرق) مددددك عاملدددده الطريقددددة ‪ )method‬القيددددام مب مددددة‬
‫حمدددددة ددددم يعيددددد ‪ return‬ال تددددائ الدددديت حصدددل علي ددددا‪ .‬ال تعددددر الطريقددددة املسددددتدعية رب‬
‫العمدددل) كيد د ادددتقوم الطريقدددة املسدددتدعاة العامدددل) بت فيد د امل مدددة امل ا دددة ب دددا‪ .‬ميكدددك‬
‫ددددرق أخددددرى عمددددا كخددددريك) دون أن ت ددددتم الطريقددددة‬ ‫للطريقددددة املسددددتدعاة أن تسددددتدع‬
‫األاااية املستدعية رب العمل) ل لك‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫‪boss‬‬

‫‪worker1‬‬ ‫‪worker2‬‬ ‫‪worker3‬‬

‫‪worker4‬‬ ‫‪worker5‬‬

‫عالقة التسلسل اهلرم ب الطريقة "رب العمل" والطريقة "العامل"‬

‫فئة (مكتبة) الطرق الرياضية ‪:Math-Class Methods‬‬

‫تسددددمح ددددرق الفئددددة الريارددددية للمدد د م بالقيددددام بددددالكثري مددددك ايسددددابات الريارددددية‬
‫الشددددائعة‪ .‬ادددد قوم بااددددتمدام عدددددددا مددددك الطددددرق الرياردددددية لتوردددديح املفدددداايم املتعلقدددددة‬
‫بالطرق وكيفية ااتمدام ا‪.‬‬

‫يددددتم اادددددتدعاء الطدددددرق عدددددادةً بدددد ن نكتدددددب ات دددددا متبوعددددا بقدددددوم يسدددددارع مفتدددددو‬
‫وواددديا أو قائمدددة مدددك الوادددطاء يفصدددل يمدددا بي دددا بواادددطة واصدددل«‪ )»,‬دددم نةدددع أخدددريا‬
‫قددددوم ميدددديم‪ .‬علددددع اددددبيل املثددددا ‪ ،‬يسددددتطيع مدد د م يرغددددب يف حسدددداب و باعددددة قيمددددة‬
‫اذ ر الرتبيع للقيمة ‪ ،3‬أن يكتب التعليمة التالية‪:‬‬

‫;) ) ‪System.out.println( Math.sqrt( 3.0‬‬

‫ميكدددددك لوادددددطاء الطريقدددددة أن تكدددددون وابدددددر‪ ،‬مدددددتغريات‪ ،‬أو حتدددددع تعدددددابري حسدددددابية‪.‬‬
‫مايل ‪:‬‬ ‫ل فر‬

‫;‪float a = 1.0, b = 8.6, c = 42.6‬‬


‫;) ) ‪System.out.println( Math.sqrt( a + b * c‬‬
‫الطرق اجلاهزة‪:‬‬
‫اد د ورد يف اذددددو التدددال بعةد دا مدددك دددرق املكتبدددة الرياردددية‪ ،‬حيد د ‪ x‬و‪ y‬امدددا مدددك‬
‫ال ما ‪:double‬‬
‫مثا‬ ‫الوصف‬ ‫ال ريقة‬
‫) ‪abs( 23.7‬‬ ‫ريقددددة القيمددددة املطلقددددة لددددد‪ x‬ادد د‬
‫‪is 23.7‬‬
‫) ‪abs( 0.0‬‬ ‫الطريقددددة تقبددددل أيةدد دا واددددائا مددددك‬
‫‪is 0.0‬‬
‫) ‪abs( x‬‬
‫) ‪abs( -23.7‬‬
‫‪float,‬‬ ‫‪int,‬‬ ‫الد د ما‬
‫‪is 23.7‬‬ ‫‪)long‬‬
‫) ‪ceil( 9.2‬‬
‫‪is 10.0‬‬
‫) ‪ceil( -9.8‬‬ ‫تقريب ‪ x‬إىل أصغر عدد صحيح‬ ‫) ‪ceil( x‬‬
‫‪is -9.0‬‬

‫) ‪cos( 0.0‬‬ ‫ريقدددة يدددب التمدددام لدددد‪ x x‬قيمدددة‬


‫‪is 1.0‬‬
‫) ‪cos( x‬‬
‫مقدرة بالراديان)‬
‫) ‪exp( 1.0‬‬
‫‪is 2.71828‬‬
‫) ‪exp( 2.0‬‬ ‫الطريقة األاية ‪ex‬‬ ‫) ‪exp( x‬‬
‫‪is 7.38906‬‬
‫) ‪floor( 9.2‬‬
‫‪is 9.0‬‬ ‫تقريددددب ‪ x‬إىل أكددد عدددددد صددددحيح‬
‫) ‪floor( -9.8‬‬
‫) ‪floor( x‬‬
‫أصغر مك ‪x‬‬
‫‪is -10.0‬‬
‫) ‪log( Math.E‬‬
‫‪is 1.0‬‬ ‫ريقدددددة اللوغددددداريتم الطبيعددد د لدددددد‪x‬‬
‫) ‪log( x‬‬
‫)‪log(Math.E *Math.E‬‬ ‫لألاام ‪)e‬‬
‫‪is 2.0‬‬
‫ريقدددة إر ددداع القيمدددة األكد د بد د‬
‫) ‪max( 2.3, 12.7‬‬
‫‪is 12.7‬‬ ‫اددد الطريقدددة تقبدددل أيةدددا‬ ‫قيمدددت‬
‫) ‪max( x, y‬‬
‫) ‪max( -2.3, -12.7‬‬ ‫‪float,‬‬ ‫وادددائا مدددك الد د ما‬
‫‪is -2.3‬‬
‫‪)int, long‬‬
‫) ‪min( 2.3, 12.7‬‬
‫‪is 2.3‬‬ ‫ريقدددة إر ددداع القيمدددة األصدددغر بد د‬
‫) ‪min( x, y‬‬
‫) ‪min( -2.3, -12.7‬‬ ‫اددد الطريقدددة تقبدددل أيةدددا‬ ‫قيمدددت‬
‫‪is -12.7‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مثا‬ ‫الوصف‬ ‫ال ريقة‬
‫‪float,‬‬ ‫وادددائا مدددك الد د ما‬
‫‪)int, long‬‬
‫) ‪pow( 2.0, 7.0‬‬
‫‪is 128.0‬‬ ‫ريقددددددددة حسدددددددداب ‪ x‬مر وعدددددددا إىل‬
‫) ‪pow( x, y‬‬
‫) ‪pow( 9.0, 0.5‬‬ ‫القوة ‪ y‬أع ‪)xy‬‬
‫‪is 3.0‬‬
‫) ‪sin( 0.0‬‬ ‫ريقدددددددة اذيدددددددب لدددددددد‪ x x‬قيمدددددددة‬
‫) ‪sin( x‬‬
‫‪is 0.0‬‬ ‫مقدرة بالراديان)‬
‫) ‪sqrt( 900.0‬‬
‫‪is 30.0‬‬
‫اذ ر الرتبيع للمتغري ‪x‬‬ ‫) ‪sqrt( x‬‬
‫) ‪sqrt( 9.0‬‬
‫‪is 3.0‬‬
‫) ‪tan( 0.0‬‬ ‫ريقدددة الظدددل لدددد‪ x x‬قيمدددة مقددددرة‬
‫) ‪tan( x‬‬
‫‪is 0.0‬‬ ‫بالراديان)‬

‫ذتلك ا املكتبة أيةا وابر عددية ا ‪:‬‬

‫‪Math.E‬‬ ‫‪is 2.7182818284590452354‬‬


‫‪Math.PI‬‬ ‫‪is 3.1415926535897932384‬‬

‫املتغريات النهائية ‪:Final Instance Variables‬‬


‫ددددة بددد البيانددددات الدددديت ميكددددك تغيرياددددا «املددددتغريات» وبددد‬ ‫ذيددددا معظددددم لغددددات ال‬
‫تلدددك الددديت تبقدددع قيم دددا ابتدددة «الثوابدددر»‪ ،‬لكدددك اد د ا التمييدددا غدددري مو دددود يف لغدددة ‪Java‬‬

‫لعدددم و ددود الثوابددر‪ ،‬وال وددد ادد ا مددك إمكانيددات ادد اللغددة الدديت تددو ر يف الواقددع كليددة‬
‫أ ةدددل ال تسدددمح باادددتمدام صددديو مشددداب ة للثوابدددر حسدددب بدددل تسدددمح أيةددا بتطبيدد ادد ا‬
‫املف وم علع ع اصر أخرى كالطرق أو الفئات‪.‬‬

‫ال مي كدددك تعدددديل قيمدددة مدددتغري بعدددد التصدددريح ع ددده بالصدددفة ‪ ،final‬يلعدددب بددد لك دور‬
‫الثابدددر يف اللغدددات األخدددرى‪ ،‬وتسدددتمدم اد د املدددتغريات غاليد دا لتمثيدددل القددديم الثابتدددة‪ ،‬دددإذا‬
‫أردت علددددع اددددبيل املثددددا أن تسددددتمدم قيمددددة )‪ pi (π‬يف برنا ددددك مددددك غددددري احملتمددددل أن‬
‫تةطر لتعديل ا‪ ،‬ل ا يفةل أن تطل علي ا الصفة ‪:final‬‬

‫;‪public final double PI = 3.141592653589793‬‬

‫يددددو ر ااددددتمدام ادددد املددددتغريات ميددددات اددددامت ‪ ،‬مددددك ناحيددددة أوىل يدددداداد عامددددل‬
‫املرت ددددم أيددددة حماولددددة إلادددد اد قيمددددة ديدددددة للمددددتغري‪،‬‬ ‫األمددددان يف ال نددددام إذ اددددري‬
‫وتىلدع مثل ا احملاولة إىل توليد راالة اخلط التالية‪:‬‬

‫‪can't assign a value to a final variable‬‬

‫ومددددك ناحيددددة أخددددرى‪ ،‬يتحسددددك مسددددتوى أداء ال نددددام إذ يولددددد املرت ددددم ترميدددداا أكثددددر‬
‫ديددددا‬ ‫عاليدددة ع ددددما يسدددتطيع أن وددددد أن قيمدددة مدددا لدددك يدددتم تغيريادددا‪ .‬وبشدددكل أكثدددر‬
‫ايسدددابات يف وقدددر الرتمدددة بددددالً مدددك ت يلد د ا‬ ‫دددرع بعد د‬ ‫يسدددتطيع املرت دددم ع دئد د أن‬
‫إىل وقر الت في ‪ ،‬ع دما يصاد املرت م السطر‪:‬‬

‫;‪int x = a + 2‬‬

‫حيدد ‪ a‬ادددو مدددتغري عدددادع‪ ،‬لدددك يسدددتطيع إ دددراء ايسددداب دددورا ويسدددتبد ب دد ا السدددطر‬
‫‪ ،‬باملقابددددل إذا كددددان ‪a‬‬ ‫اددددطر الرتميددددا املوا دد د ‪ ،‬ولددددك ت فدد د العمليددددة إال يف وقددددر الت فيدد د‬
‫مددددتغريا ن ائيددددا يعددددر املرت ددددم أن قيمتدددده لددددك تددددتغري ويسددددتطيع بدددد لك إ ددددراء ايسدددداب‬
‫مبا رة وإا اد القيمة امل اابة للمتغري ‪.x‬‬

‫ميكدددك أن يتةدددمك ال ندددام ندددوع مدددك الثوابدددر‪ :‬تلدددك الددديت تعدددر قيم دددا قبدددل ت فيدد‬
‫ديدددددد قيم دددددا إال ع دددددد ت فيددد د ال ندددددام ‪ ،‬ويدددددىلدع‬ ‫ال ندددددام ‪ ،‬وتلدددددك الددددديت ال ميكدددددك‬
‫سد د مسدددتوى األداء ب سدددبة وكليدددة خمتلفدددة‪ .‬وال ميكدددك إ دددراء‬ ‫اادددتمدام كدددل ندددوع إىل‬
‫ايسدددددابات يف وقدددددر الرتمدددددة إال إذا كاندددددر قددددديم الثوابدددددر معرو دددددة مسدددددبقًا‪ .‬وتعتمدددددد‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫دددايك اددد املدددتغريات يف م طقدددة مدددك‬ ‫سددد مسدددتوى األداء علدددع‬ ‫الطريقدددة األخدددرى يف‬
‫الددد اكرة ذكددددك قراءت ددددا بسددددرعة لكددددك باملقابددددل يدددداداد زمددددك تغدددديري البيانددددات املمانددددة‬
‫ديددددد قيم ددددا أ دددداء ت فيدد د‬ ‫ي ددددا‪ ،‬وتعتدد د ادد د اآلليددددة م ااددددبة للثوابددددر الدددديت ميكددددك‬
‫اددد اآلليددددة يف ‪ Java‬بااددددتمدام مددددتغريات ن ائيددددة بدددددون قدددديم‬ ‫ال نددددام ‪ ،‬وميكددددك ددددر‬
‫ك دد دا‬ ‫ابتدائيددددة‪ ،‬علددددع أن تسدد د د القدددديم االبتدائيددددة هلدد د املددددتغريات الحقًدد دا ولددددك يعددددود‬
‫بعدئ تغيرياا‪ .‬و رع التصريح عك ا املتغريات بالصيغة‪:‬‬

‫;‪final double E‬‬

‫وال ميكدددك اادددتمدام اد د املدددتغريات قبدددل أن تسد د د إلي دددا قيمدددة ابتدائيدددة‪ ،‬ومدددك الشدددائع‬
‫يد د يقدددوم املرت دددم‬ ‫اادددتمدام اد د ا الد د ما مدددك املدددتغريات للتصدددريح عدددك وادددطاء الطدددرق‬
‫بتحس ترميا ا الطرق‪ .‬وعليه ميكك أن نكتب‪:‬‬

‫)‪int mymethod(final int i, final int y‬‬


‫{‬
‫‪body‬‬
‫}‬

‫ك دد دا تعديلدد د ما‬ ‫ي خدد د املددددتغريان قيم مددددا ع ددددد ااددددتدعاء الطريقددددة قددددا‪ ،‬وال يعددددود‬
‫داخل الطريقة‪.‬‬

‫ال ظدددر عدددك ندددوع املدددتغري‪ ،‬إنددده ميكدددك أن يدددتم تعريفددده كمدددتغري ن دددائ ‪.final‬‬ ‫إذن دددبغ‬
‫وال ميكك تغيري أع متغري ت تعريفه كمتغري ن ائ ‪ final‬مب رد تعي قيمة له‪.‬‬

‫أن يدددتم تسدددمية الثوابدددر بكلمدددات واردددحة ومعد د ة‪،‬‬ ‫دددرت العدددادة بد د املد د‬ ‫تلم‬
‫كمدددا دددرت العدددادة علدددع عدددل كا دددة األحدددر يف ايالدددة الكدددبرية مدددثالً االادددم‬
‫‪ PI‬أ ةل مك ‪ pi‬للداللة علع الثوابر‪.‬‬
:‫ال نام التال يورح ااتمدام مكتبة الطرق الريارية‬

// Testing the Math class methods.


public class MathTest {
public static void main( String args[] )
{
System.out.println( "Math.abs( 23.7 ) = " +
Math.abs( 23.7 ) );

System.out.println( "Math.abs( 0.0 ) = " +


Math.abs( 0.0 ) );

System.out.println( "Math.abs( -23.7 ) = " +


Math.abs( -23.7 ) );

System.out.println( "Math.ceil( 9.2 ) = " +


Math.ceil( 9.2 ) );

System.out.println( "Math.ceil( -9.8 ) = " +


Math.ceil( -9.8 ) );

System.out.println( "Math.cos( 0.0 ) = " +


Math.cos( 0.0 ) );

System.out.println( "Math.exp( 1.0 ) = " +


Math.exp( 1.0 ) );

System.out.println( "Math.exp( 2.0 ) = " +


Math.exp( 2.0 ) );

System.out.println( "Math.floor( 9.2 ) = " +


Math.floor( 9.2 ) );

System.out.println( "Math.floor( -9.8 ) = " +


Math.floor( -9.8 ) );

System.out.println( "Math.log( Math.E ) = " +


Math.log( Math.E ) );

Fundamentals of Programming in Java - Ahmad Jabr


System.out.println(
"Math.log( Math.E * Math.E ) = " +
Math.log( Math.E * Math.E ) );

System.out.println( "Math.max( 2.3, 12.7 ) = "+


Math.max( 2.3, 12.7 ) );

System.out.println( "Math.max( -2.3, -12.7 )="+


Math.max( -2.3, -12.7 ) );

System.out.println( "Math.min( 2.3, 12.7 ) = "+


Math.min( 2.3, 12.7 ) );

System.out.println( "Math.min( -2.3, -12.7 )="+


Math.min( -2.3, -12.7 ) );

System.out.println( "Math.pow( 2.0, 7.0 ) = " +


Math.pow( 2.0, 7.0 ) );

System.out.println( "Math.pow( 9.0, 0.5 ) = " +


Math.pow( 9.0, 0.5 ) );

System.out.println( "Math.sin( 0.0 ) = " +


Math.sin( 0.0 ) );

System.out.println( "Math.sqrt( 900.0 ) = " +


Math.sqrt( 900.0 ) );

System.out.println( " Math.sqrt( 9.0 ) = " +


Math.sqrt( 9.0 ) );

System.out.println( " Math.tan( 0.0 ) = " +


Math.tan( 0.0 ) );

} // end main
} // end class MathTest
: ‫يكون خر ال نام كالتال‬

Math.abs( 23.7 ) = 23.7


Math.abs( 0.0 ) = 0.0
Math.abs( -23.7 ) = 23.7
Math.ceil( 9.2 ) = 10.0
Math.ceil( -9.8 ) = -9.0
Math.cos( 0.0 ) = 1.0
Math.exp( 1.0 ) = 2.7182818284590455
Math.exp( 2.0 ) = 7.38905609893065
Math.floor( 9.2 ) = 9.0
Math.floor( -9.8 ) = -10.0
Math.log( Math.E ) = 1.0
Math.log( Math.E * Math.E ) = 2.0
Math.max( 2.3, 12.7 ) = 12.7
Math.max( -2.3, -12.7 ) = -2.3
Math.min( 2.3, 12.7 ) = 2.3
Math.min( -2.3, -12.7 ) = -12.7
Math.pow( 2.0, 7.0 ) = 128.0
Math.pow( 9.0, 0.5 ) = 3.0
Math.sin( 0.0 ) = 0.0
Math.sqrt( 900.0 ) = 30.0
Math.sqrt( 9.0 ) = 3.0
Math.tan( 0.0 ) = 0.0

:Method Declarations ‫التصريح عن الطرق‬

‫ بااددددتمدام‬10 ‫ إىل‬1 ‫سدددداب مربددددع األعددددداد الصددددحيحة مددددك‬ ‫يقددددوم الدد د مي التددددال‬
: ‫ املعر ة مك قبل امل م‬square ‫الطريقة‬

// Creating and using a programmer-defined method.


import java.awt.Container;
import javax.swing.*;

public class SquareIntegers extends JApplet {


//set up GUI and calculate squares of integers from 1to 10
public void init()

Fundamentals of Programming in Java - Ahmad Jabr


{
// JTextArea to display results
JTextArea outputArea = new JTextArea();

// get applet's content pane (GUI component display area)


Container container = getContentPane();

// attach outputArea to container


container.add( outputArea );

// store result of call to method square


int result;

// String containing results


String output = "";

// loop 10 times
for ( int counter=1; counter <= 10; counter++){
result = square( counter ); // method call

// append result to String output


output += "The square of " + counter +
" is " + result + "\n";

} // end for

// place results in JTextArea


outputArea.setText( output );

} // end method init

// square method declaration


public int square( int y )
{
return y * y; // return square of y
} // end method square
} // end class SquareIntegers
‫التوضي ي ي ي ي اادددددددددتوردنا املسددددددددداريك السدددددددددابق األو ‪ java.awt.Container‬وذلدددددددددك‬
‫تدددددوع الع اصدددددر يف الددد د مي ‪ ،‬الثدددددان *‪ javax.swing.‬للكائ دددددات‬ ‫إلنشددددداء حاويدددددة‬
‫الراومية والفئة ‪.JApplet‬‬

‫متعدد األاطر‪:‬‬ ‫قم ا بعد ذلك بتعري أداة مربع ال‬

‫;)(‪JTextArea outputArea = new JTextArea‬‬

‫م أنش نا اياوية‪:‬‬

‫;)(‪Container container = getContentPane‬‬

‫إىل اياوية‪:‬‬ ‫م أرف ا أداة مربع ال‬

‫;) ‪container.add( outputArea‬‬

‫يف حلقة التكرار ‪ for‬ااتمدم ا السطر‪:‬‬

‫;) ‪result = square( counter‬‬

‫والدد د ع يعدد د عددددك عمليددددة ااددددتدعاء الطريقددددة ‪ square‬وذريددددر املددددتغري ‪ counter‬كوادددديا‬


‫هلد د الطريقدددة ليدددتم اادددتمدام قيمتددده‪ ،‬وتر دددع قيمدددة ديددددة مدددك اد د الطريقدددة لتمدددان يف‬
‫املتغري ‪.result‬‬
‫الكامل يف املتغري ‪ outpot‬عك ري الصيغة‪:‬‬ ‫بعد تكويك ال‬
‫‪output += "The square of " + counter + " is " + result +‬‬
‫;"‪"\n‬‬

‫متعدددددددة األادددددطر ‪ outputArea‬عدددددك ريددد د‬ ‫إىل أداة مربدددددع الددد د‬ ‫يدددددتم إرادددددا الددد د‬
‫التعليمة التالية‪:‬‬
‫;) ‪outputArea.setText( output‬‬
‫املمرر إلي ا إىل األداة ال صية‪.‬‬ ‫إذ تستمدم الطريقة ‪ setText‬لورع ال‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫الشكل العام للتصريح عن طريقة ‪General Format of a Method‬‬
‫‪:Declaration‬‬

‫الشكل العام للتصريح عك الطرق املعر ة مك قبل امل م ‪:‬‬ ‫ميكك تلمي‬

‫‪return-value-type method-name( parameter1, …,‬‬


‫) ‪parameterN‬‬
‫{‬
‫‪declarations and statements‬‬
‫}‬

‫حيددددد ‪ return-value-type‬تعددددد عددددددك نددددددوع البيانددددددات الدددددديت اددددددرت ع مددددددك اددددد‬


‫الطريقدددة وميكدددك أن نكتدددب ا دددا أع ادددا مدددك األاددداط املعرو دددة ادددابقًا أنظدددر الفصدددل‬
‫ةدددددع لكا دددددة دددددروط‬ ‫الثدددددان )‪ .‬و‪method-name‬تعددد د عدددددك اادددددم الطريقدددددة واددد د‬
‫الشددددددددروط املورددددددددوعة ألتدددددددداء املددددددددتغريات مددددددددثالً)‪.‬‬ ‫التسددددددددمية يف لغددددددددة ‪ Java‬نفدددددد د‬
‫إ بدددارا وإادددا يعتمدددد علدددع‬ ‫‪ parameter‬تعد د عدددك الوادددائا إذ أن عددددد الوادددطاء لدددي‬
‫حا تدددك والوظيفدددة املطلوبدددة مدددك اد د الطريقدددة‪ .‬يبددددأ سدددم الطريقدددة بدددالقوم «{» وي ت د د‬
‫بالقوم «}»‪.‬‬

‫ددددا قم ددددا بكتابددددة الطريقددددة ‪ ،square‬تتلقددددع ادد د الطريقددددة نسددددمة مددددك املددددتغري‬ ‫يف برنا‬
‫‪ counter‬بوااددددددطة الوادددددديا ‪ y‬كمددددددا اددددددو مورددددددح يف ريقددددددة التعريدددد د واالاددددددتدعاء‬
‫السابقة‪:‬‬

‫;) ‪result = square( counter‬‬


‫‪...‬‬
‫) ‪public int square( int y‬‬
‫{‬
‫;‪return y * y‬‬
‫}‬
‫سدددداب القيمددددة ‪ .y*y‬جتددددرع إعددددادة القيمددددة ال اجتددددة إىل‬ ‫بعددددداا تقددددوم الطريقددددة ‪square‬‬

‫الطريقدددددة ‪square‬‬ ‫ال قطدددددة الددددديت ت ع دددددداا اادددددتدعاء الطريقدددددة ‪ .square‬يظ دددددر تعريددد د‬
‫الواددديا ‪ .y‬تفيدددد الكلمدددة ‪int‬‬ ‫كمدددا لدددو أن دددا ت تظدددر قيمدددة صدددحيحة تصدددل ا مدددك خدددال‬
‫ديدددد ادددا ال تي دددة املعدددادة مدددك قبدددل الطريقدددة‪ .‬يف حد د‬ ‫الددديت تسدددب اادددم الطريقدددة يف‬
‫تسدددتمدم التعليمدددة ‪ return‬مدددك أ دددل ذريدددر ال تي دددة إىل الطريقدددة األصدددلية الددديت ذدددر م دددا‬
‫عملية االاتدعاء‪.‬‬

‫;‪import java.awt.Container‬‬
‫;*‪import javax.swing.‬‬
‫‪public class SquareIntegers extends JApplet‬‬
‫{‬ ‫) ‪public int square( int y‬‬
‫)(‪public void init‬‬ ‫{‬
‫{‬ ‫;‪return y * y‬‬
‫}‬
‫‪...‬‬
‫;) ‪result = square( counter‬‬
‫‪...‬‬
‫}‬
‫}‬

‫ااتدعاء الطريقة‬

‫يو دددد ال دددة دددرق إلعدددادة الدددتحكم إىل ال قطدددة الددديت ت مدددك ع دددداا اادددتدعاء إحددددى‬
‫الطدددرق‪ .‬إذا كاندددر الطريقدددة ال تعيدددد أع قيمدددة الطدددرق مدددك ال دددوع ‪ void‬تسدددمع يف بعددد‬
‫األحيددددان اإل ددددراءات)‪ ،‬ميكددددك إعددددادة الددددتحكم بكددددل بسددددا ة ع ددددد الوصددددو إىل قددددوم‬
‫الطريقة أو ع د ت في التعليمة‪:‬‬ ‫ب‬ ‫ال اية «}» اخلا‬

‫;‪return‬‬

‫أما إذا كانر الطريقة تعيد نتي ة إن التعليمة‪:‬‬

‫;‪return expression‬‬

‫تقوم بإعادة قيمة التعبري ‪ expression‬إىل الطريقة املستدعية‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ونتي ة ت في ال مي الساب تكون كالتال ‪:‬‬

‫الدد ما علدددع الشدددكل‬ ‫* يدددىلدع القيدددام بالتصدددريح عدددك الوادددطاء مدددك نفدد‬ ‫ملحوظي ي ي ي‬
‫التددال مددثالً‪ int x, y :‬بدددالً مددك‪ int x, int y :‬إىل حدددو خط د أ دداء‬
‫ديدددد ادددا كدددل واددديا مدددك وادددطاء الطريقد دة‬ ‫دددب‬ ‫الرتمدددة ألنددده‬
‫علع حد ‪.‬‬

‫* تو د ال حاالت لطريقة االاتدعاء‪:‬‬

‫‪ .1‬ب كر اام الطريقة وواطائ ا كما يف الشكل التال ‪:‬‬

‫;) ‪x = square( 2‬‬

‫الفئددددة ‪ class‬املو ددددود‬ ‫وادددد ا يعددددم ااددددتدعاء ريقددددة مو ددددودة يف نفدددد‬


‫ي ا املستدع ‪.‬‬

‫‪ .2‬ااددددتدعاء ريقددددة خاصددددة بكددددائك مددددا وذلددددك بااددددتمدام ال قطددددة «‪».‬‬


‫كالتال ‪:‬‬

‫;) "‪g.drawString( "Hi‬‬


: ‫ ااتدعاء ريقة خاصة بفئة ما الطرق الساك ة) كالتال‬.3

x = Math.abs( y );

:Maximum ‫ الطريقة‬:‫مناذج الطرق املعرفة‬

‫ املعر دددددة مدددددك قبدددددل املدددد م مدددددك أ دددددل‬maximum ‫الدددد مي التدددددال الطريقدددددة‬ ‫يعدددددر‬
:‫ال ة قيم صحيحة‬ ‫ديد أك قيمة مك ب‬

// Finding the maximum of three floating-point numbers.


import java.awt.Container;

import javax.swing.*;

public class MaximumTest extends JApplet {


// initialize applet by obtaining user input and
// creating GUI
public void init()
{
// obtain user input
String s1 = JOptionPane.showInputDialog(
"Enter first floating-point value" );

String s2 = JOptionPane.showInputDialog(
"Enter second floating-point value" );

String s3 = JOptionPane.showInputDialog(
"Enter third floating-point value" );

// convert user input to double values


double number1 = Double.parseDouble( s1 );
double number2 = Double.parseDouble( s2 );
double number3 = Double.parseDouble( s3 );

// method call
double max = maximum(number1, number2,number3);

Fundamentals of Programming in Java - Ahmad Jabr


// create JTextArea to display results
JTextArea outputArea = new JTextArea();

// display numbers and maximum value


outputArea.setText( "number1: " + number1 +
"\nnumber2: " + number2 +
"\nnumber3: " + number3 +
"\nmaximum is: " + max );

// get applet's GUI component display area


Container container = getContentPane();

// attach outputArea to Container c


container.add( outputArea );

} // end method init

// maximum method uses Math class method max to help


// determine maximum value
public double maximum( double x, double y, double z )
{
return Math.max( x, Math.max( y, z ) );
} // end method maximum
} // end class Maximum

: ‫ونات ت في ا ا ال مي كالتال‬
‫قسر الوسطاء ‪:Argument Promotion or Coercion‬‬

‫يعددد اددد ا املصدددطلح عدددك إ بدددار الوادددطاء علدددع أن تصدددبح مدددك ادددا معددد م اادددب‪.‬‬
‫سددددب اذدددد ر‬ ‫علددددع اددددبيل املثددددا ‪ ،‬ميكددددك ااددددتدعاء الطريقددددة الريارددددية ‪ sqrt‬الدددديت‬
‫الرتبيعددد د مدددددع األعدددددداد الصدددددحيحة رغدددددم أن دددددا تقبدددددل الوادددددطاء مدددددك ال دددددوع ‪ double‬يف‬
‫تعريف ا‪ ،‬أع أن التعليمة‪:‬‬

‫;) ) ‪System.out.println( Math.sqrt( 4‬‬

‫تعمدددل بشدددكل صدددحيح لتطبدددع القيمدددة ‪ 2‬حيد د يقدددوم ادددوذ الطريقدددة بإ بدددار املرت دددم‬
‫ويددددل القيمددددة الصددددحيحة ‪ 4‬إىل القيمددددة ايقيقيددددة ‪ 4.0‬قبددددل أن ميرراددددا إىل سددددم‬ ‫علددددع‬
‫الطريقددددة نفسدد د ا‪..‬واذدو التددددال يورددددح ايكليددددة قسددددر أادددداط البيانددددات اذدددداااة يف‬
‫لغة ‪:Java‬‬

‫إمكانية القسر إىل‬ ‫منط البيانات‬


‫‪none‬‬ ‫‪double‬‬
‫‪double‬‬ ‫‪float‬‬
‫‪double, float‬‬ ‫‪long‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫إمكانية القسر إىل‬ ‫منط البيانات‬
‫‪double, float, long‬‬ ‫‪int‬‬
‫‪double, float, long, int‬‬ ‫‪char‬‬
‫‪double, float, long, int‬‬ ‫‪short‬‬
‫‪double, float, long, int, short‬‬ ‫‪byte‬‬
‫‪none‬‬ ‫‪boolean‬‬

‫توليد األعداد العشوائية ‪:Random-Number Generation‬‬

‫ما ‪double‬‬ ‫تسددددددتمدم الطريقددددددة )(‪ Math.random‬لتوليددددددد أرقددددددام عشددددددوائية مددددددك الددددد‬
‫سددداب‬ ‫حمصدددورة بد د الدددرقم ‪ 0‬و‪ .1‬وذعدددل املددددى يبعدددد إىل قيمدددة مدددا ولدددتكك ‪ m‬نقدددوم‬
‫القيمة التالية‪:‬‬

‫;‪c = Math.random() * m‬‬

‫تعدد د ادد د التعليمددددة عددددك عمليددددة توليددددد أرقددددام عشددددوائية حمصددددورة بدد د الددددرقم ‪ 0‬و‪.m‬‬
‫ولتحريك املدى نقوم مثالً بكتابة التعليمة التالية‪:‬‬

‫;‪c = Math.random() + m‬‬

‫لتوليدددد أرقدددام عشدددوائية حمصدددورة بد د الدددرقم ‪ m‬و‪ .m+1‬ولب ددداء قاعددددة أااادددية ميكدددك‬
‫ااتمدام التعليمة التالية‪:‬‬

‫;‪c = ( Math.random() * ( m - n ) ) + n‬‬


‫تولددددد ادد د التعليمددددة أرقامدد دا عشددددوائي ًة حمصددددورة بدد د الددددرقم ‪ n‬و‪ ،m‬أع أن أقددددل رقددددم‬
‫عشوائ ميكك توقعه او الرقم ‪ n‬وأك رقم عشوائ ميكك ظ ور او ‪.m‬‬

‫‪ 1‬ع دددد‬ ‫يدددتغري الوردددع ع ددددما نرغدددب يف توليدددد أرقدددام عشدددوائية صدددحيحة‪ ،‬ع دددداا يد د ق‬
‫إ دددددراء عمليدددددة التوليدددددد و دددددب إردددددا ته لكدددد تكدددددون العمليدددددة صدددددحيحة‪ ،‬أع تصدددددبح‬
‫التعليمة السابقة كالتال ‪:‬‬

‫;‪c = (int)( Math.random() * ( m - n + 1 ) ) + n‬‬

‫ااتمدم ا التعليمة ‪ )int‬أما العبارة لتحويل القيمة إىل قيمة صحيحة‪.‬‬

‫ال ندددددام التدددددال يوردددددح عمليدددددة اادددددتمدام الطريقدددددة ‪ random‬يف عمليدددددة توليدددددد أرقدددددام‬
‫عشوائية‪:‬‬

‫;‪import javax.swing.JOptionPane‬‬

‫{ ‪public class RandomIntegers‬‬


‫) ][‪public static void main( String args‬‬
‫{‬
‫;‪int value, n = 7, m = 9‬‬
‫;"" = ‪String output‬‬

‫‪// loop 20 times‬‬


‫{)‪for (int counter = 1; counter <= 20;counter++‬‬
‫‪// pick random integer between n and m‬‬
‫* )(‪value = (int)( Math.random‬‬
‫; ‪(m - n + 1) ) + n‬‬

‫‪// append value to output‬‬


‫;" " ‪output += value +‬‬

‫‪// if counter divisible by 5,‬‬


‫‪// append newline to String output‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


if ( counter % 5 == 0 )
output += "\n";

} // end for

JOptionPane.showMessageDialog( null, output,


"20 Random Numbers from " + n + " to " +
m, JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 ); // terminate application


} // end main
} // end class RandomIntegers

: ‫يكون خر ال نام كالتال يف حالة تشغيله مرت‬

‫ال ندددام التدددال يقدددوم باختبدددار احتماليدددة مدددرات تكدددرار ظ دددور إحددددى أو ددده ح دددر ال دددرد‬
:‫الستة‬
// Roll a six-sided die 6000 times.
import javax.swing.*;

public class RollDie {


public static void main( String args[] )
{
int frequency1 = 0, frequency2 = 0,
frequency3 = 0, frequency4 = 0,
frequency5 = 0, frequency6 = 0, face;

// summarize results
for ( int roll = 1; roll <= 6000; roll++ ) {
face = 1 + ( int ) ( Math.random() * 6 );

// determine roll value and increment


// appropriate counter
switch ( face ) {
case 1:
++frequency1;
break;

case 2:
++frequency2;
break;

case 3:
++frequency3;
break;

case 4:
++frequency4;
break;

case 5:
++frequency5;
break;

case 6:

Fundamentals of Programming in Java - Ahmad Jabr


++frequency6;
break;
} // end switch
} // end for

JTextArea outputArea = new JTextArea();

outputArea.setText( "Face\tFrequency" + "\n1\t"


+ frequency1 + "\n2\t" + frequency2 +
"\n3\t" + frequency3 + "\n4\t" +
frequency4 + "\n5\t" + frequency5 +
"\n6\t" + frequency6 );

JOptionPane.showMessageDialog( null,
outputArea, "Rolling a Die 6000 Times",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 ); // terminate application


} // end main
} // end class RollDie

: ‫وع د ت في ألكثر مك مرة يكون اخلر كالتال‬


Fundamentals of Programming in Java - Ahmad Jabr
‫قواعد جمال الرؤية ‪:Scope Rules‬‬

‫دددداء ال نددددام الدد د ع نسددددتطيع رددددم ه‬ ‫ددددا الرايددددة املتعلدد د مبعدد د ذر مددددا‬ ‫يتحدددددد‬
‫التعامددل مددع ا د ا املُعددر ‪ .‬علددع اددبيل املثددا ع دددما نصددر عددك مددتغري حمل د رددمك كتلددة‬
‫يمكك التعامل معه قا رمك ا الكتلة‪.‬‬

‫االت الراية ملُعر ما وم ا‪:‬‬ ‫يو د أنواع مك‬

‫الراية علع مستوى الطريقة ‪method scope‬‬ ‫ا‬ ‫•‬

‫‪file scope‬‬ ‫ا الراية علع مستوى املل‬ ‫•‬

‫الراية علع مستوى الكتلة ‪block scope‬‬ ‫ا‬ ‫•‬

‫وال مي التال لتوريح الفكرة‪:‬‬

‫‪// A scoping example.‬‬


‫;‪import java.awt.Container‬‬
‫;*‪import javax.swing.‬‬
public class Scoping extends JApplet {
JTextArea outputArea;

// field that is accessible to all


// methods of this class
int x = 1;

// create applet's GUI


public void init()
{
outputArea = new JTextArea();
Container container = getContentPane();
container.add( outputArea );

} // end method init

// method start called after init completes;


// start calls
// methods useLocal and useField
public void start()
{
int x = 5; //local variable in method start
// that shadows field x

outputArea.append( "local x in start is " +


x );

useLocal(); // useLocal has local x


useField(); // useInstance uses Scoping's
// field x
useLocal(); // useLocal reinitializes local x
useField(); // Scoping's field x retains
// its value

outputArea.append( "\n\nlocal x in start is " +


x );

Fundamentals of Programming in Java - Ahmad Jabr


} // end method start

// useLocal creates and initializes local


// variable x during each call
public void useLocal()
{
int x = 25; // initialized each time
// useLocal is called

outputArea.append("\n\nlocal x in useLocal is "


+ x + " after entering useLocal" );

++x;

outputArea.append( "\nlocal x in useLocal is "


+ x + " before exiting useLocal" );

} // end method useLocal

// useField modifies Scoping's field x during


// each call
public void useField()
{
outputArea.append( "\n\nfield x is " + x +
" on entering useField" );

x *= 10;

outputArea.append( "\nfield x is " + x +


" on exiting useField" );

} // end method useInstance


} // end class Scoping

: ‫وع د ت في يكون خر ه كالتال‬


‫التحميل الزائد للطرق ‪:Method Overloading‬‬

‫االادددم بشدددرط أن تتعامدددل مدددع وادددطاء‬ ‫تسدددمح لغدددة ‪ Java‬بتعريد د عددددة دددرق هلدددا نفد د‬
‫‪Method‬‬ ‫هلدددددا أاددددداط خمتلفدددددة‪ .‬تسدددددمع اددد د اإلمكانيدددددة « التحميدددددل الاائدددددد للطدددددرق‬
‫دددددإن املرت دددددم يقدددددوم باختيدددددار‬ ‫ريقدددددة مددددداادة ‪overloaded‬‬ ‫‪ .»Overloading‬ع دددددد اادددددتدعاء‬
‫الطريقددددة امل ااددددبة بعددددد التحقدد د مددددك عدددددد واددددا وترتيددددب الواددددطاء اخلاصددددة بعمليددددة‬
‫االادددتدعاء نفسدد ا‪ .‬يدددتم اادددتمدام إمكانيدددة التحميدددل الاائدددد للطدددرق لب ددداء عددددة دددرق هلدددا‬
‫امل مة أيةا ولكك مع أااط خمتلفة للبيانات‪.‬‬ ‫االام وتقوم ب ف‬ ‫نف‬

‫الد د مي التدددال يسدددتمدم التحميدددل الاائدددد للطد درق مدددك أ دددل حسددداب مربدددع عددددد مدددك‬
‫ال ما ‪ int‬ومك ال ما ‪:double‬‬

‫‪// Using overloaded methods‬‬


‫;‪import java.awt.Container‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


import javax.swing.*;

public class MethodOverload extends JApplet {


// create GUI and call each square method
public void init()
{
JTextArea outputArea = new JTextArea();
Container container = getContentPane();
container.add( outputArea );

outputArea.setText("The square of integer 7 is"


+ square( 7 ) +
"\nThe square of double 7.5 is " +
square( 7.5 ) );

} // end method init

// square method with int argument


public int square( int intValue )
{
System.out.println(
"Called square with int argument: " +
intValue );

return intValue * intValue;


} // end method square with int argument

// square method with double argument


public double square( double doubleValue )
{
System.out.println(
"Called square with double argument: " +
doubleValue );

return doubleValue * doubleValue;


} // end method square with double argument
} // end class MethodOverload
Called square with int argument: 7
Called square with double argument: 7.5

‫تلدد الوادددائا‬ ‫الدد مي التدددال يوردددح أنددده ع دددد إ دددراء التحميدددل الاائدددد للطدددرق البدددد أن‬
:‫ب الطرق املاودة‬

// Overloaded methods with identical signatures.


import java.awt.Container;
import javax.swing.*;

public class MethodOverload extends JApplet {


// create GUI and call each square method
public void init()
{
JTextArea outputArea = new JTextArea();
Container container = getContentPane();
container.add( outputArea );

outputArea.setText( "The square of 7 is " +


square( 7 ) );
} // end method init

// declaration of method square with int argument


public int square( int x )
{
return x * x;
}

// second declaration of method square


// with int argument causes syntax error
public double square( int y )

Fundamentals of Programming in Java - Ahmad Jabr


{
return y * y;
}
} // end class MethodOverload

: ‫وع د ت في ال نام الساب يكون اخلر كالتال‬

MethodOverload.java:24: square(int) is already defined in


MethodOverload
public double square( int y )

1 error
‫االستدعاء الذايت (العودية) ‪:Recursion‬‬

‫موعدددة مدددك الطدددرق الددديت تقدددوم‬ ‫تتد د ل الد د ام الددديت قم دددا بعررد د ا يمدددا ادددب مدددك‬
‫د د وبطريقدددة ارميدددة‪ .‬لكدددك مدددك املفيدددد يف بعد د‬ ‫ب ادددلوب م‬ ‫باادددتدعاء بعةد د ا الدددبع‬
‫الطدددددرق باادددددتدعاء نفسدددد ا‪ .‬نسدددددم الطدددددرق السدددددابقة بطدددددرق‬ ‫املسدددددائل‪ ،‬أن تقدددددوم بعدددد‬
‫‪ recursive‬ألن ددددا كمددددا قل ددددا تسددددتدع‬ ‫الطددددرق العوديددددة) ‪methods‬‬ ‫االاددددتدعاء الدد د ات‬
‫ريقة أخرى‪.‬‬ ‫نفس ا بشكل مبا ر أو غري مبا ر مك خال‬

‫تتمتدددع أاددداليب ايدددل ملسدددائل تسدددتدع اادددتمدام عمليدددة االادددتدعاء الد د ات بعددددد مدددك‬
‫قدددا كيفيدددة حدددل املسدد لة‬ ‫الع اصدددر املشدددرتكة حيدد يدددتم اادددتدعاء ريقدددة عوديدددة تعدددر‬
‫يف أبسدددددا حاالت دددددا‪ .‬نسدددددم اددد د ايالدددددة أو ايددددداالت البسددددديطة «بايالدددددة أو ايددددداالت‬
‫‪ .»base‬أع ع دددددد اادددددتدعاء الطريقدددددة مدددددع حالدددددة ابتدائيدددددة إنددددده يعيدددددد‬ ‫االبتدائيدددددة ‪cases‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫ببسدددا ة ايدددل املتعلد د ب د د ايالدددة‪ .‬أمدددا ع دددد اادددتدعائ ا مدددع حالدددة أكثدددر تعقيددددا إن دددا‬
‫يدد تعدددر مددداذا تفعدددل بددداذاء األو ولك دددا ال‬ ‫تقدددوم بتقسددديم اد د ايالدددة إىل ددداأيك‬
‫دددب علدددع‬ ‫دددب عملددده مدددع اذددداء الثدددان ‪ .‬لكدددك مدددك أ دددل إيقدددا العوديدددة‪،‬‬ ‫تعلدددم مددداذا‬
‫تلددد ع ددددا يف كوندددده يت دددداو حالددددة‬ ‫اذدددداء الثددددان أن يشددددابه املسددد لة األصددددلية لك دددده‬
‫أاد د ل وأبسدددا مدددك حالدددة املسد د لة األصدددلية‪ .‬وعلدددع اعتبدددار أن حالدددة اذددداء الثدددان تت ددداو‬
‫مسدد د لة مشدددداب ة للمسدد د لة األصددددلية لدد د لك ميكددددك للطريقددددة أن تعددددود لتسددددتدع نفسدد د ا‬
‫يدددل مسد د لة أصدددغر مدددك املسد د لة السدددابقة‪ ..‬واكد د ا‪ .‬نسدددم اد د العوديدددة يف االادددتدعاء‬
‫‪ .recursion‬تتةددددمك خطددددوة العوديددددة علددددع العبددددارة‬ ‫‪ recursive call‬خبطددددوة العوديددددة ‪step‬‬

‫ددددب علددددع نتددددائ ادددد اخلطددددوة أن ت ةددددم إىل نتددددائ اذدددداء األو الدددد ع‬ ‫‪ return‬ألندددده‬
‫تعدددر الطريقدددة العوديدددة التعامدددل معددده مدددك أ دددل تكدددويك حدددل للمسددد لة املت اولدددة وإعدددادة‬
‫ال تي دددة إىل الطريقدددة املسدددتدعية‪ .‬ولتورددديح ذلدددك اد د درم مثدددا علدددع االادددتدعاء الد د ات‬
‫واددددو حسدددداب املةددددروب ‪ factorial‬إذا كددددان لدددددي ا ‪ n‬عدددددد صددددحيح مو ددددب‪ ،‬ددددإن القيمددددة‬
‫تقرأ مةروب العدد ‪ )n‬تساوع قيمة اذداء‪:‬‬ ‫!‪n‬‬

‫‪n!=n * (n-1) * (n-2) * …* 1‬‬


‫‪1!=1‬‬
‫‪0!=1‬‬
‫!)‪n! = n * (n-1‬‬
120 ‫القيمة ال ائية‬
5! 5!
5!=5*24=120 ‫إعادة القيم‬

5*4! 5*4!
4!=4*6=24 ‫إعادة القيمة‬
4*3! 4*3!
3!=3*2=6 ‫إعادة القيمة‬
3*2! 3*2!
2!=2*1=2 ‫إعادة القيمة‬
2*1! 2*1!

1 ‫إعادة القيمة‬
1 1

‫أ) معاذة االاتدعاء العودع‬ ‫ب) القيم املعادة مك االاتدعاءات العودية‬

‫وال نددددام التددددال يظ ددددر ااددددتمدام عمليددددة االاددددتدعاء الدد د ات يف حددددل ادد د ا ال ددددوع مددددك‬
:‫املسائل‬

// Recursive factorial method.


import java.awt.*;
import javax.swing.*;

public class FactorialTest extends JApplet {


JTextArea outputArea;

// create GUI and calculate factorials of 0-10


public void init()
{
outputArea = new JTextArea();

Container container = getContentPane();


container.add( outputArea );

// calculate the factorials of 0 through 10


for(long counter = 0;counter <= 10; counter++ )

Fundamentals of Programming in Java - Ahmad Jabr


outputArea.append( counter + "! = " +
factorial( counter ) + "\n" );
} // end method init

// recursive declaration of method factorial


public long factorial( long number )
{
// base case
if ( number <= 1 )
return 1;
// recursive step
else
return number * factorial( number - 1 );

} // end method factorial


} // end class FactorialTest
:Fibonacci ‫ سالسل‬:‫مثال آخر عن االستدعاء الذايت‬

:‫ التالية‬Fibonacci ‫تبدأ االال‬

0, 1, 1, 2, 3, 5, 8, 13, 21, …

‫مدددوع‬ ‫ يسددداوع كدددل عددددد مدددك أعدددداداا‬:‫ وتتمتدددع باخلاصدددية التاليدددة‬1‫ و‬0 ‫مدددع القيمدددت‬
.‫العدديك السابق له‬

fibonacci( n ) = fibonacci( n - 1 ) + fibonacci( n - 2 )

:fibonacci ‫ال مي التال يورح ااتمدام الطريقة‬

// Recursive fibonacci method.


import java.awt.*;
import javax.swing.*;

public class FibonacciTest extends JApplet {


JTextArea outputArea;

Fundamentals of Programming in Java - Ahmad Jabr


// create GUI and calculate fibonaccis of 0-10
public void init()
{
outputArea = new JTextArea();

Container container = getContentPane();


container.add( outputArea );

// calculate the fibonaccis of 0 through 10


for(long counter = 0;counter <= 10; counter++ )
outputArea.append( counter + "! = " +
fibonacci( counter ) + "\n" );

} // end method init

// recursive declaration of method fibonacci


public long fibonacci( long n )
{
// base case
if ( n == 0 || n == 1 )
return n;
// recursive step
else
return fibonacci( n - 1 ) +
fibonacci( n - 2 );

} // end method fibonacci


} // end class FibonacciTest
fibonacci(3)

return fibonacci(2) + fibonacci(1)

return fibonacci(1) + fibonacci(0) return 1

return 1 return 0

Fundamentals of Programming in Java - Ahmad Jabr


‫متارين الفصل اخلامس‪:‬‬

‫‪ . 1‬ما الفائدة مك ااتمدام الطرق يف ال نام‬

‫ا الراية وأذكر بعةا م ا‬ ‫‪ . 2‬ماذا نقصد مبصطلح‬

‫‪ . 3‬اذكر أمثلة ريارية الاتمدام عملية التحميل الاائد‬

‫‪ .4‬امأل الفراغات التالية‪:‬‬


‫املكونات األاااية ل ام لغة ‪ Java‬ا ‪ ...................‬و‪....................‬‬ ‫•‬

‫يتم ت في تعليمات الطريقة بعد القيام بد‪....................‬‬ ‫•‬

‫قددددا رددددمك سددددم الطريقددددة حيدد د ت التصددددريح ع دددده‬ ‫نسددددم املددددتغري املعددددرو‬ ‫•‬

‫بد‪....................‬‬

‫تسددددتمدم الكلمددددة األاااددددية‪ ...................‬رددددمك الطريقددددة املسددددتدعاة مددددك أ ددددل‬ ‫•‬

‫إعادة قيمة م ا إىل الطريقة املستدعية‪.‬‬

‫يسددداعد احملددددد‪ ...................‬علدددع التصدددريح عدددك مدددتغريات قابلدددة للقدددراءة قدددا أو‬ ‫•‬

‫الكتابة ي ا ملرة واحدة قا‪.‬‬

‫‪ myPow(base,‬الددددددديت تعيدددددددد قيمدددددددة العبدددددددارة‪:‬‬ ‫اكتدددددددب الطريقدددددددة )‪exponenr‬‬ ‫‪. 5‬‬


‫‪baseexponenr‬‬
‫ددددإن االاددددتدعاء )‪ myPow(3,4‬يعددددم حسدددداب القيمددددة ‪.3×3×3×3‬‬ ‫علددددع اددددبيل املثددددا‬
‫أن ‪ exponenr‬ادددو عبدددارة عدددك عددددد صدددحيح‬ ‫دددب كتابدددة الطريقدددة السدددابقة‪ ،‬بفدددر‬
‫مو ددددب‪ .‬ااددددتمدم إحدددددى ب ددددع التكددددرار لت فيدد د ذلددددك‪ .‬ال تسددددتمدم أع ريقددددة مددددك‬
‫الطرق اذاااة‪.‬‬
‫يددد تدددددعم االاددددتدعاء الددد ات ‪ .‬مفتددددا ايددددل‬ ‫اعددددد كتابددددة الطريقددددة ‪myPow‬‬ ‫‪. 6‬‬
‫او‪.)xy = x * xy-1 :‬‬

‫‪ . 7‬اكتدددددب الطريقدددددة ‪ isPrime‬الددددديت ت خدددد عدددددددا صدددددحيحا وتعيدددددد قيمدددددة م طقيدددددة‬


‫;‪ )true‬تفيدددد بد د ن اد د ا العددددد ادددو عددددد أولد د أو ال‪ .‬حيد د أن األعدددداد األوليدددة‬ ‫‪false‬‬

‫ا تلك األعداد اليت ال تقبل القسمة إال علع نفس ا والواحد‪.‬‬

‫‪ . 8‬اكتدددددب ريقدددددة ت خددددد عدددددددا صددددددحيحا وتعيدددددد أرقدددددام اددددد ا العددددددد بصددددددورة‬
‫معكواة‪ .‬علع ابيل املثا ‪ ،‬إذا أعطي ا الطريقة الرقم ‪ 7354‬تعيد ‪.4537‬‬

‫سددددددب اللوغدددددداريتم لألاددددددام‬ ‫‪ myLog(base,‬الدددددديت‬ ‫اكتددددددب الطريقددددددة )‪num‬‬ ‫‪. 9‬‬


‫احملدد كالتال ‪.Logbase(num) :‬‬

‫‪ . 10‬اكتدددب ريقدددة تسدددتقبل مدددك املسدددتمدم عددددديك صدددحيح وتعيدددد رقمد دا عشدددوائيا‬
‫مك ال ما ‪ double‬حمصور ب ا يك العدديك‪.‬‬

‫السددددالبة‪ ،‬والعشددددرية أع ميك ددددا‬ ‫يددد تدددددعم األاددد‬ ‫ددددور الطريقددددة ‪myPow‬‬ ‫‪. 11‬‬
‫حساب‪ myPow(2.0,-1) :‬و)‪.myPow(4.0,0.5‬‬

‫‪ . 12‬اكتدددب ريقدددة يسددداب قيمدددة الثابدددر ‪ ،PI‬حيد د تسدددتقبل اد د الطريقدددة القيمدددة‬


‫‪ n‬لت ف املعادلة ايسابية التالية‪:‬‬

‫‪n‬‬
‫‪4‬‬ ‫‪4 4 4‬‬ ‫‪(−1) n 4‬‬
‫‪ =  (−1) i‬‬ ‫‪= 4 − + − + ... +‬‬
‫‪i =0‬‬ ‫‪2i + 1‬‬ ‫‪3 5 7‬‬ ‫‪2n + 1‬‬

‫قم بإنشاء املتغري ال ائ ‪ myPI‬واا د إليه قيمة ا الطريقة‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مدة االمتحان‪ :‬ساعتني‬

‫أجب عن مج ع األسئل التال‬


‫السؤال األول [‪ 15‬درجة]‪:‬‬
‫الفقرة األوىل‪ :‬عرف ما يلي (بشكل خمتصر) [‪ 5‬درجات]‪:‬‬
‫ة‬ ‫‪ - Java‬أادددددددددددلوب ال‬ ‫)‪Virtual Machine (JVM‬‬ ‫كلة ا ا اال رتاردددددددددددية‬
‫ددة املوحدددة ‪ - UML‬التحميددل‬ ‫‪ - Structured‬لغددة ال مد‬ ‫‪Programming‬‬ ‫امل يكلددة‬
‫الاائد ‪.Overloading‬‬

‫الفقرة الثانية‪ :‬أكمل العبارات التالية [‪ 5‬درجات]‪:‬‬


‫‪ . 1‬يسدددددددتمدم األمر ‪ ..........‬لرتمة ملفات لغة ‪ .Java‬ويتم إنشددددددداء مل ميتلك االمتداد‬
‫‪. ..........‬‬
‫‪ . 2‬يتم ت في الطريقة ‪ ..........‬تلقائيا ع دما يدخل ال مي يف حالة الال عالية‪.‬‬
‫‪ . 3‬ميكك كتابة ميع ال ام بااتمدام ال ة أنواع مك ب ع التحكم‪ .......... :‬و ‪..........‬‬
‫و ‪. ..........‬‬

‫الفقرة الثالثة‪ :‬وضح الفرق بني كالً من‪( :‬مع التوضيح املطلوب) [‪ 5‬درجات]‪:‬‬
‫‪ . 1‬تطبيقات ا ا و برمي يات ا ا ورح مبثا بسيا دا)‪.‬‬
‫ب ية االختيار وب ية التكرار ورددددددح بااددددددتمدام ذثيل ‪ UML‬يالة‬ ‫‪. 2‬‬
‫واحدة لكل ب ية)‪.‬‬
‫السؤال الثاني [‪ 21‬درجة]‪:‬‬
‫الفقرة األوىل‪ :‬اكتب تعليمة أو جمموعة تعليمات بلغة ‪ Java‬للقيام باملهام التالية [‪ 7‬درجات]‪:‬‬
‫يئته بالقيمة ‪A‬‬ ‫‪ . 1‬التصريح عك املتغري ‪ c‬مك ال ما ايريف وت‬
‫‪ . 2‬ذثيل املعادلة ايسابية التالية‪y = sin(ln( x 7 )) :‬‬

‫‪100‬‬ ‫‪ (0,‬وبطو رلع مقدار‬ ‫قطة )‪0‬‬ ‫‪ . 3‬رام مربع يبدأ مك ال‬
‫ما ‪ double‬وبالقيمة ‪2.71828182‬‬ ‫‪ . 4‬التصريح عك الثابر ‪ E‬مك ال‬

‫الفقرة الثانية‪ :‬ما هو خرج األجزاء الربجمية التالية [‪ 7‬درجات]‪:‬‬


‫‪.1‬‬
‫{) ‪for( int i = 1; i <= 10; i += 2‬‬
‫)‪if( i % 3 != 0‬‬
‫;‪continue‬‬
‫)‪else if( i % 10 == 0‬‬
‫;‪break‬‬
‫‪else‬‬
‫;)‪System.out.println(i‬‬
‫}‬
‫‪.2‬‬
‫;‪int i = 5, j = 1‬‬
‫(‪System.out.println‬‬ ‫;) ‪i += 2‬‬
‫(‪System.out.println‬‬ ‫;) ‪j -= i++‬‬
‫(‪System.out.println‬‬ ‫;) ‪i = 2 + --j‬‬
‫(‪System.out.println‬‬ ‫;) ‪--i‬‬
‫(‪System.out.println‬‬ ‫;) ‪i‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫الفقرة الثالثة‪ :‬ارسم خمطط ‪ UML‬اخلاص بالتعليمات التالية [‪ 7‬درجات]‪:‬‬
‫‪.1‬‬
‫) ‪if( x == 5‬‬
‫)‪for( i = 0; i<=10 ; i++‬‬
‫;) ‪System.out.println( i += 2‬‬
‫‪.2‬‬
‫{‪do‬‬
‫{)‪switch(i‬‬
‫‪case 1:‬‬
‫‪case 2:‬‬
‫;) "‪System.out.println( "A‬‬
‫;‪break‬‬
‫‪default:‬‬
‫;) "‪System.out.println( "B‬‬
‫}‬
‫;)‪}while(i <= 10‬‬

‫السؤال الثالث [‪ 24‬درجة]‪:‬‬


‫الفقرة األوىل‪ :‬اكتب الربامج التالية [‪ 12‬درجة]‪:‬‬
‫‪)+,‬‬ ‫مثل ‪-, *, /‬‬ ‫‪ . 1‬برنا ًا يسددتقبل مك املسددتمدم رقم وإ ددارة عملية حسددابية‬
‫ااددددددددددددددتمدم ب ية االختيار‬ ‫سدددددددددددددداب نات ت في ا العملية علع الرقم‬ ‫م يقوم‬
‫‪.)switch‬‬
‫‪ . 2‬برنا ًا يساب نات املعادلة الريارية التالية‪:‬‬
‫‪10‬‬
‫‪4‬‬
‫‪y =  xi +‬‬
‫‪i =0‬‬ ‫!‪i‬‬
‫الفقرة الثانية‪ :‬اكتب الطرق التالية [‪ 12‬درجة]‪:‬‬
‫‪ . 1‬الطريقة )‪ isPrime(intvalue‬اليت ت خ عددا صدددددددحيحا وتعيد قيمة م طقية‪.‬‬
‫صددددددواب ‪ true‬يف حالة كان ا ا العدد الوادددددديا أوليا أو خط ‪ false‬يف حالة‬
‫يكك العدد أوليا‪ .‬العدد األول او العدد ال ع ال يقبل القسدددددمة إال علع نفسددددده وعلع‬
‫الواحد بدون باق )‪.‬‬
‫سدددددددددددددداب قيمة اللوغاريتم‬ ‫‪ . 2‬الطريقة )‪ logn(base,number‬تقوم ا الطريقة‬
‫لألادددددددام ‪ base‬بالشدددددددكل التال ‪ .Logbase(x) :‬علما ب ن )‪، Log a ( x) = Ln( x‬‬
‫)‪Ln(a‬‬
‫حي ‪ Ln‬او اللوغاريتم الطبيع أع لألاام ‪.)e‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مدة االمتحان‪ :‬ساعتني‬

‫أجب عن مج ع األسئل التال‬


‫السؤال األول [‪ 15‬درجة]‪:‬‬
‫الفقرة األوىل‪ :‬عرف ما يلي (بشكل خمتصر) [‪ 5‬درجات]‪:‬‬
‫الشددددددددددددفرة البايتية ‪ - ByteCode‬اخلوارزمية ‪ - Algorithms‬قسددددددددددددر الواددددددددددددطاء‬
‫‪ - Argument‬االاتدعاء ال ات ‪.Recursion‬‬ ‫‪Coercion‬‬

‫الفقرة الثانية‪ :‬أكمل العبارات التالية [‪ 5‬درجات]‪:‬‬


‫رى اخلر‬ ‫علع‬ ‫‪ . 1‬تسدددددددددددتمدم الطريقة الدالة) ‪ ..........‬لطباعة واددددددددددديط ا ك‬
‫القياا ‪.‬‬
‫‪ . 2‬لت في ال مي رددددددمك صددددددفحات الويب نسددددددتمدم الواددددددم العالمة) ‪ ..........‬يف لغة‬
‫ة ‪.HTML‬‬ ‫ال‬
‫‪ . 3‬تستمدم الكلمة األاااية ‪ ..........‬رمك الطريقة املستدعاة مك أ ل إعادة قيمة م ا‬
‫إىل الطريقة املستدعية‪.‬‬

‫الفقرة الثالثة‪ :‬وضح الفرق بني كالً من‪( :‬مع التوضيح املطلوب) [‪ 5‬درجات]‪:‬‬
‫ورح ذلك مبثا لكل م ما)‪.‬‬ ‫‪ .‬العبارة ‪ For‬و العبارة ‪Do/While‬‬ ‫‪1‬‬
‫مثل ‪)int‬‬ ‫‪ . 2‬الطريقة اليت ذتلك اا البيانات ‪ void‬واليت ذتلك نوع بيانات مع‬
‫ورح ذلك مبثا لكل م ما)‪.‬‬
‫السؤال الثاني [‪ 21‬درجة]‪:‬‬
‫الفقرة األوىل‪ :‬اكتب تعليمة أو جمموعة تعليمات بلغة ‪ Java‬للقيام باملهام التالية [‪ 7‬درجات]‪:‬‬
‫يئته بالقيمة ‪123‬‬ ‫‪ . 1‬التصريح عك املتغري ‪ x‬مك ال ما "عدد صحيح ويل" وت‬

‫‪ . 2‬ذثيل املعادلة ايسابية التالية‪y = 3 e x :‬‬

‫‪100‬‬ ‫‪ (10,‬وبطو مقدار‬ ‫قطة )‪10‬‬ ‫‪ . 3‬رام خا مستقيم أ ق يبدأ مك ال‬


‫ما ‪ double‬وبالقيمة ‪3.14159265‬‬ ‫‪ . 4‬التصريح عك الثابر ‪ PI‬مك ال‬

‫الفقرة الثانية‪ :‬ما هو خرج األجزاء الربجمية التالية [‪ 7‬درجات]‪:‬‬


‫‪.1‬‬
‫) ‪for( int i = 1; i <= 10; i += 0‬‬
‫{‬
‫)‪if( ++i % 2 == 0‬‬
‫;‪continue‬‬
‫‪else‬‬
‫;)‪System.out.println(i++‬‬
‫}‬
‫‪.2‬‬
‫;‪int i = 1‬‬
‫{‪do‬‬
‫{)‪switch(i‬‬
‫‪case 1:‬‬
‫‪case 2:‬‬
‫;) ‪System.out.println( i--‬‬
‫;‪break‬‬
‫‪case 3:‬‬
‫;) ‪System.out.println( ++i‬‬
‫;‪break‬‬
‫}‬
‫;) ‪}while( i % 2 != 0‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫الفقرة الثالثة‪ :‬اكتب خمطط ‪ UML‬اخلاص بالتعليمات التالية [‪ 7‬درجات]‪:‬‬
‫‪.1‬‬
‫)‪for( i = 0; i<=10 ; i++‬‬
‫)‪if(i % 2 == 0‬‬
‫;) ‪System.out.println( i += 2‬‬
‫‪.2‬‬
‫{)‪while(i <= 10‬‬
‫)‪if(i == 1‬‬
‫;) ‪System.out.println( i += 10‬‬
‫)‪else if (i == 2‬‬
‫;) ‪System.out.println( i += 20‬‬
‫‪else‬‬
‫;) ‪System.out.println( i‬‬
‫}‬

‫السؤال الثالث [‪ 24‬درجة]‪:‬‬


‫الفقرة األوىل‪ :‬اكتب الربامج التالية [‪ 12‬درجة]‪:‬‬
‫‪ . 1‬برنا ًا يسددددددددتقبل مك املسددددددددتمدم رقم ‪ x‬و‪ y‬ورقم للرتتيب إما ‪ 1‬أو ‪ ،)2‬م يقوم‬
‫سب رقم الرتتيب الرقم ‪ 1‬يساب ‪ xy‬والرقم ‪ 2‬يساب‬ ‫ساب نات ت في العملية‬
‫‪ .yx‬ااتمدم ب ية االختيار ‪.)if/else‬‬
‫‪ . 2‬برنا ًا يساب نات املعادلة الريارية التالية‪:‬‬
‫‪10‬‬
‫‪y =  xi‬‬
‫‪i =1‬‬
‫الفقرة الثانية‪ :‬اكتب الطرق التالية [‪ 12‬درجة]‪:‬‬
‫‪ Pow(base,‬اليت تعيددد قيمددة العبددارة‪.baseexponenr :‬‬ ‫)‪exponenr‬‬ ‫‪ . 1‬الطريقددة‬
‫حي أن ‪ exponenr‬او عدد صحيح مو ب‪.‬‬
‫عدد كوايا هلا‪ ،‬وتعيد القيمة ‪ 0‬يف حالة كان العدد ‪0‬‬ ‫‪ . 2‬الطريقة ‪ sgn‬اليت ت خ‬
‫والقيمة ‪ 1‬يف حالة كان العدد مو با والعدد ‪ -1‬يف حالة كان العدد االبا‪.‬‬

‫مع متنياتنا لكم بالتوفيق والنجاح‬


‫م‪ .‬أمحد جرب‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أوالً‪ :‬أهم املصادر واملراجع العربية‪:‬‬

‫• بطددددي ‪ ،‬مددددا ‪ :‬برجمــــة قواعــــد البيانــــات باســــتخدام ‪ Oracle‬و ‪ .Java‬حلددددب‪:‬‬


‫عاع لل شر والتوزيع‪.2005 ،‬‬
‫• ح ار‪ ،‬ادع‪ :‬لغة الربجمة ‪ .Java 2‬حلب‪ :‬عاع لل شر والتوزيع‪.2001 ،‬‬
‫• ح ددار‪ ،‬ددادع‪ UML :‬لغــة النمذجــة املوحــدة ملربجمــي جافــا‪ .‬حلددب‪ :‬ددعاع لل شددر‬
‫والتوزيع‪.2005 ،‬‬
‫• حسدددك‪ ،‬حسدددك دددالي‪ ،‬وال قدددرع‪ ،‬م يدددب ترمدددة وإعدددداد)‪ :‬الربجمـــة بلغـــة جافـــا‬
‫باســـتخدام ‪ Borland JBuilder 4‬جــــ‪ :1‬مـــدخل إىل ‪ .JBuilder 4‬دمشددد ‪ :‬دار‬
‫الررا لل شر‪.2001 ،‬‬
‫• حسدددك‪ ،‬حسدددك دددالي‪ ،‬وال قدددرع‪ ،‬م يدددب ترمدددة وإعدددداد)‪ :‬الربجمـــة بلغـــة جافـــا‬
‫باســـتخدام ‪ Borland JBuilder 4‬جــــ‪ :2‬دليـــل املطـــورين‪ .‬دمشددد ‪ :‬دار الرردددا‬
‫لل شر‪.2001 ،‬‬
‫• اي بظل د ‪ ،‬عبددد ايميددد‪ :‬األســئلة األكثــر طرحًــا حــول ‪ .Java‬حلددب‪ :‬ددعاع لل شددر‬
‫والتوزيع‪.2006 ،‬‬
‫• خراددددة‪ ،‬ددددال ترمدددددة وإعددددداد)‪ :‬تعلـــــم ‪ Java‬باســـــتخدام بيئـــــة التطـــــوير‬
‫‪ .JBuilder‬حلب‪ :‬عاع لل شر والتوزيع‪.2006 ،‬‬
‫• خراددة‪ ،‬ددال ‪ :‬لنبــدأ مــع ‪ :Java‬خطواتــك األوىل إلتقــان ‪ Java‬بســهولة ويســر‪.‬‬
‫حلب‪ :‬عاع لل شر والتوزيع‪.2006 ،‬‬
‫• دونددددااو‪ ،‬ددددون‪ :‬برجمــــة قواعــــد البيانــــات باســــتخدام جافــــا بايبــــل ‪Java‬‬

‫‪ .DataBase Programming Bible‬ترمددددة‪ :‬قسددددم الرتمددددة بدددددار الفدددداروق وخالددددد‬


‫العامرع القاارة‪ :‬دار الفاروق لل شر والتوزيع‪.2003 ،‬‬
‫ددد ‪ ،‬صدددال ترمدددة وإعدددداد)‪ :‬كيـــف تـــربمج بلغـــة ‪ ،C++‬الطبعدددة األوىل‪.‬‬ ‫• الددددو‬
‫حلب‪ :‬عاع لل شر والتوزيع‪.1999 ،‬‬
‫د د ‪ ،‬صدددال ترمدددة وإعدددداد)‪ :‬كيـــف تـــربمج بلغـــة ‪ ،C++‬الطبعدددة الثانيدددة‪.‬‬ ‫• الددددو‬
‫حلب‪ :‬عاع لل شر والتوزيع‪.2004 ،‬‬
‫• مشسدد ‪ ،‬امددام‪ :‬تطبيقــات قواعــد البيانــات باســتخدام ‪ .Java‬حلددب‪ :‬ددعاع لل شددر‬
‫والتوزيع‪.2004 ،‬‬
‫• الشدددمعة‪ ،‬خالدددد عبدددد السدددائر والعبدددد اهلل‪ ،‬أادددامة‪ JSP :‬كتــــاب املـــربمج‪ :‬عــــرض‬
‫شـــامل لربميجـــات ‪ Servlet 2.4‬وبروتوكـــول ‪ HTTP‬و ‪ JSP 2.0‬وتغطيـــة لنمـــاذج‬
‫‪ HTML‬وتقنية ‪ .JDBC‬حلب‪ :‬عاع لل شر والتوزيع‪.2005 ،‬‬
‫• عدددداب‪ ،‬عدددداب حممددددد وما ددددد‪ ،‬مصددددطفع وحسدد د ‪ ،‬قدددددرع لعددددر‪ :‬الطريــــق إىل‬
‫احتراف لغة ‪ .Java‬القاارة‪ :‬دار الكتب العلمية لل شر والتوزيع‪.2002 ،‬‬
‫• عددداب‪ ،‬عددداب حممدددد وما دددد‪ ،‬مصدددطفع وحسد د ‪ ،‬قددددرع لعدددر‪ :‬تعلـــم واحتـــرف‬
‫‪ Java‬بسهولة‪ .‬القاارة‪ :‬دار الكتب العلمية لل شر والتوزيع‪.2003 ،‬‬
‫ترمددددة وإعددددداد)‪ :‬تعلــــم ‪ .C#‬حلددددب‪ :‬ددددعاع لل شددددر والتوزيددددع‪،‬‬ ‫• القةددددمان ‪ ،‬رامدد د‬
‫‪.2003‬‬
‫• لي يكدددر‪ ،‬ريدددك‪ :‬علـــم نفســـك ‪ Visual J++ 6‬يف ‪ 21‬يومًـــا‪ .‬بدددريوت‪ :‬الددددار العربيدددة‬
‫للعلوم‪.2000 ،‬‬
‫ترمددددة وإعددددداد)‪ :‬برجمــــة اجلــــوال باســــتخدام ‪:Java‬‬ ‫• حمفددددوظ‪ ،‬حممددددد م ددددا‬
‫تطـــوير برجميـــات لاجهـــزة الصـــغرية باســـتخدام ‪ .J2ME‬حلدددب‪ :‬دددعاع لل شدددر‬
‫والتوزيع‪.2005 ،‬‬
‫• مر ان‪ ،‬ايثم‪ Java 2 :‬دورة يف كتاب‪ .‬حلب‪ :‬عاع لل شر والتوزيع‪.2001 ،‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫دددة ترمدددة)‪ C++ :‬الـــدليل الكامـــل‪ :‬دروي إضـــافية علـــى‬ ‫• مركدددا التعريدددب وال‬
‫الوب مع شهادة علمية‪ .‬بريوت‪ :‬الدار العربية للعلوم‪.1997 ،‬‬
‫دددة‪ .‬بدددريوت‪:‬‬ ‫• مدددوري ‪ ،‬بدددروم‪ :‬تعلـــم اجلافـــا ا ن‪ .‬ترمدددة‪ :‬مركدددا التعريدددب وال‬
‫الدار العربية للعلوم‪.1996 ،‬‬
‫‪ :‬تقنيــــات وحلــــول يف ‪ ،Java‬ددددائ ‪ .‬حلددددب‪ :‬ددددعاع لل شددددر‬ ‫• خنبددددة مددددك املدد د‬
‫والتوزيع‪.2005 ،‬‬
‫• ال قدددرع‪ ،‬م يدددب‪ :‬تعـــرف علـــى الربجمـــة ورضـــية التوجـــه‪ .‬دمشد د ‪ :‬دار الرردددا‬
‫لل شر‪.2001 ،‬‬
‫• ال قرع‪ ،‬م يب‪ :‬تعرف على لغة ‪ .Java‬دمش ‪ :‬دار الررا لل شر‪.2000 ،‬‬
‫• ايوبددارد‪ ،‬ددون‪ :‬ملخصــات إيــزي شــوم‪ :‬الربجمــة باســتخدام ‪ .C++‬ترمددة‪ :‬حممددد‬
‫إبدددراايم العددددوع واشدددام عبدددد املد د عم كشدددك‪ .‬القددداارة‪ :‬الددددار الدوليدددة لالادددتثمارات‬
‫الثقا ية ش‪.‬م‪.‬م‪.2001 ،‬‬
‫ريدددر املدددو ا‪:‬‬ ‫• ايوبدددارد‪ ،‬دددون‪ :‬ملخصـــات إيـــزي شـــوم‪ :‬الربجمـــة بلغـــة ‪.Java‬‬
‫أنطدددون باكسدددرت‪ ،‬ترمدددة‪ :‬دددىلاد دددديد زايدددد‪ .‬القددداارة‪ :‬الددددار الدوليدددة لالادددتثمارات‬
‫الثقا ية ش‪.‬م‪.‬م‪.2004 ،‬‬
‫‪ ،‬دانيددددا ‪ :‬جافــــا ‪ 2‬بايبــــل ‪Java 2‬‬ ‫• وولدددد‪ ،،‬كرون وكدددداوت‪ ،،‬واددددت واددددتي‬
‫‪ .Bible‬ترمدددة‪ :‬قسدددم الرتمدددة بددددار الفددداروق وخالدددد العدددامرع‪ .‬القددداارة‪ :‬دار الفددداروق‬
‫لل شر والتوزيع‪.2001 ،‬‬
:‫ أهم املصادر واملراجع األجنبية‬:‫ثانيًا‬

• Deitel, Harvey M. and Deitel, Paul J.: Java How to Program, 5th ed.
India: Pearson Education Pte. Ltd, 2004.
• Gosling, B. and Others: The Java Language Specification: Second
Edition. Web site: Java.sun.com.
• Jaworski, Jamie: Training Guide: Java 2 Certification, 1st ed. India:
Techmedia, 1999.
• SYBEX: Java 2, J2SE 1.4 Complete, 1st ed. India: BPB Publications,
2003.

Fundamentals of Programming in Java - Ahmad Jabr


‫مبادئ الكمبيوتر‬
‫ونظام التشغيل مايكروسوفت دوس ‪MS-DOS‬‬
‫اإلصدار ‪7,1‬‬
‫(‪)1998‬‬
‫أســـــس ومبادئ الكمبيوتر‪ ,‬والتعريف بهجزائه ومكوناته‪,‬‬ ‫•‬

‫وطريقة عمله‪.‬‬

‫• أســـاســـيات نظم تشـــغيل الكمبيوتر‪ ,‬وتعريف بههم أنظمة‬

‫التشغيل وأنواعها املختلفة‪ ,‬وفكرة عملها‪.‬‬

‫التعرف على نظام التشغيل مايكروسوفت دوس ‪MS-DOS‬‬ ‫•‬

‫اإلصدار ‪.7,1‬‬

‫• سطر األوامر وطرق التعامل معه‪.‬‬

‫أهم األوامر الداخلية يف الدوس‪.‬‬ ‫•‬

‫التعامل مع امللفات واألدلة واألقراص‪.‬‬ ‫•‬

‫التعامل مع النصوص وامللفات النصية‪.‬‬ ‫•‬

‫التعامل مع األوامر اخلارجية والربامج التطبيقية‪.‬‬ ‫•‬

‫• إدارة نظام التشغيل وصيانته‪.‬‬

‫• بعض املهام املتقدمة‪.‬‬


‫أساسيات الكمبيوتر‬
‫ومبادئ استخدام مايكروسوفت ويندوز ‪98‬‬
‫‪Microsoft Windows 98‬‬
‫(‪)1999‬‬
‫أســاســيات الكمبيوتر‪ :‬ما هو الكمبيوتر‪ ,‬املكونات األســاســية‬ ‫•‬

‫للكمبيوتر‪ :‬املكونات املادية‪ ,‬املكونات الغري مادية‪.‬‬

‫نظام التشـــــغيل ويندوز ‪ :Windows 98‬تعريفه‪ ,‬تارخيه‪,‬‬ ‫•‬

‫مميزاته‪.‬‬

‫• مكونات النظام األســــاســــية والتعامل معها‪ :‬ســــطح املكت ‪,‬‬

‫قائمة ابدأ‪ ,‬النوافذ‪ ,‬القوائم‪ ,‬مربعات احلوار‪.‬‬

‫إدارة امللفات واملجلدات واألقراص‪ :‬برنامج مستكشف ويندوز‪ ,‬العمليات الرئيسية على‬ ‫•‬

‫امللفات‪ ,‬ســـــلة املحذوفات‪ ,‬االختصـــــارات‪ ,‬العمليات‬

‫الرئيســـــيـــة على املجلـــدات‪ ,‬العمليـــات‬

‫الرئيسية على األقراص‪.‬‬

‫التعامل مع التطبيقات‪ :‬الرســـــام‪ ,‬املفكرة‪,‬‬ ‫•‬

‫معاجل الكلمات‪ ,‬اآللة احلاسبة‪ ,‬األلعاب‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات شبكات الكمبيوتر ‪Networks‬‬
‫ومقدمة إىل شبكة اإلنترنت ‪Internet‬‬
‫(‪)2000‬‬
‫• مــدخــل إىل شـــــبكــات الكمبيوتر ‪ :Network‬تعريفهــا‪,‬‬

‫أمهيتها‪ ,‬معداهتا‪ ,‬بروتوكوالهتا‪.‬‬

‫• أنواع الشبكات‪ :‬أشهر التصنيفات‪ ,‬أهم األنواع‪.‬‬

‫• شـــــب كة اإلنتر نت ‪ :Internet‬ماهيت ها‪ ,‬تارخي ها‪ ,‬أمهيت ها‬

‫وفوائدها‪.‬‬

‫• خدمات اإلنترنت نظرة شاملة‪.‬‬

‫• شبكة الوب ‪ :Web‬عناوين ‪ ,URL‬صفحات ‪ ,Web‬مستعرضات ‪.Web‬‬

‫• الربيد اإللكتروين ‪ :E-Mail‬عناوين الربيد‪ ,‬ارسال واستقبال الربيد‪ ,‬إدارة الربيد‪.‬‬

‫• التواصل اآلين واملحادثات‪ :‬خدمة ‪ ,IRC‬برنامج ‪.ICQ‬‬

‫أشهر مواقع الوب العربية يف شبكة اإلنترنت‪.‬‬ ‫•‬


‫أساسيات حساب التفاضل والتكامل ‪Calculus‬‬
‫(‪)2000‬‬
‫• املفاهيم األساسية‪:‬‬
‫املجموعــات‪ ،‬األعــداد احلقيقيــة‪ ،‬الفترات‪ ،‬املتراجحــات‪ ،‬القيم‬
‫املطلقة‪.‬‬
‫• الدوال‪:‬‬
‫املفهوم‪ ،‬األنواع‪ ،‬دوال كثرية احلــدود‪ ،‬الــدوال األســـيــة‪ ،‬الــدوال‬
‫املثلثية‪ ،‬الدوال الزائدية‪ ،‬تركيب الدوال‪ ،‬الدالة العكســية‪ ،‬الدوال‬
‫اللوواريتمية‪ ،‬الدوال املثلثية العكسية‪ ،‬الدوال الزائدية العكسية‪.‬‬
‫• النهايات‪:‬‬
‫املفهوم‪ ،‬هناية الدوال‪ ،‬نظريات النهايات‪ ،‬النهايات وري املعرفة‪ ،‬النهايات عند الالهناية‪.‬‬
‫• االتصال‪:‬‬
‫املفهوم‪ ،‬اتصال الدوال‪ ،‬نظريات االتصال‪.‬‬
‫• املشتقات‪:‬‬
‫املفهوم‪ ،‬قابلية االشتقاق‪ ،‬قوانني االشتقاق األساسية‪ ،‬اشتقاق الدوال املختلفة‪ ،‬االشتقاق الضمين‪،‬‬
‫التفاضالت‪ ،‬املشتقات النونية‪.‬‬
‫تطبيقات املشتقات‪:‬‬ ‫•‬
‫نظر ية القي مة املتوســـ طة‪ ،‬التزا يد والت ناقص ل لدا لة‪ ،‬التقعر ون قاط االنقالب‪ ،‬القيم العظمى‬
‫والصغرى للدالة‪ ،‬رسم منحىن الدالة‪.‬‬
‫• التكامل غري املحدود‪:‬‬
‫الدالة األصــلية واملشــتقة العكســية‪ ،‬خواص‬
‫الت كا مل وري امل حدود‪ ،‬الت كا مل بالتعويض‪،‬‬
‫التكامل بالتجزيء‪ ،‬تكامالت الدوال املثلثية‬
‫والزائدية‪ ،‬التكامل بالكســـور اجلزئية‪ ،‬بعض‬
‫التكامالت الشائعة‪.‬‬
‫• التكامل املحدود‪:‬‬
‫املجاميع‪ ،‬حساب املساحات حتت منحىن الدالة‪ ،‬التكامل املحدود‪،‬‬
‫خواص التكامل املحدود‪ ،‬النظرية األساسية للتفاضل والتكامل‪.‬‬
‫تطبيقات التكامل‪:‬‬ ‫•‬
‫املساحات‪ ،‬احلجوم‪ ،‬الشغل‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات معاجلة النصوص‬
‫واستخدام مايكروسوفت وورد ‪2000‬‬
‫‪Microsoft Word 2000‬‬
‫(‪)2001‬‬
‫• برامج معاجلة النصوص‪:‬‬
‫املفاهيم األ سا سية‪ ،‬نظرة تارخيية‪ ،‬أمهيتها وفوائدها‪ ،‬أ شهر برامج‬
‫معاجلة النصوص‪.‬‬
‫البدء مع برنامج مايكروسوفت وورد ‪:2000‬‬ ‫•‬
‫التعريف‪ ،‬أهم املميزات‪ ،‬فوائد االستخدام‪ ،‬تشغيل الربنامج‪ ،‬التعرف‬
‫على النافذة الرئيسية‪ ،‬اخلروج من الربنامج‪.‬‬
‫املهام األساسية للمستندات‪:‬‬ ‫•‬
‫الكتابة (عريب‪ ،‬إجنليزي)‪ ،‬التعامل مع امللفات (املستندات)‪ :‬احلفظ‪،‬‬
‫اإلوالق‪ ،‬الفتح‪ ،‬إضــافة معلومات‪ ،‬حفظ نســخة‪ ،‬الفتح املتعدد‪ ،‬التحكم يف عرض النصــوص‪ ،‬عرض‬
‫إحصائيات املستند‪.‬‬
‫• التعامل مع النصوص‪:‬‬
‫التحرك داخل النص‪ ،‬حتديد أجزاء النص‪ ،‬تنقيح النص‪.‬‬
‫• تنسيق النصوص‪:‬‬
‫ما قبل التنسيق‪ ،‬تنسيق الفقرات‪ ،‬تنسيق اخلطوط‪ ،‬تنسيق الصفحة‪ ،‬مهارات تنسيقية إضافية‪.‬‬
‫• التعامل مع اجلداول‪:‬‬
‫طرق الت صميم‪ ،‬التنقل‪ ،‬الكتابة‪ ،‬حتديد أجزاء اجلدول‪ ،‬احلذف واإل ضافة ( صف – عمود )‪ ،‬تغيري‬
‫عرض وارتفاع األعمدة والصفوف‪ ،‬دمج اخلاليا‪ ،‬تقسيم اخلاليا‪،‬‬
‫تقسيم اجلدول‪ ،‬تنسيق اجلدول‪.‬‬
‫• بعض املهارات املتقدمة‪:‬‬
‫مهــارات الكتــابــة‪ ،‬التعــامــل مع الصــــور‬
‫والرســـومات والتاثريات‪ ،‬مهارات الطباعة‪،‬‬
‫دمج املراسالت‪.‬‬
‫أسس ومبادئ الرياضيات املعاصرة‪:‬‬
‫مقدمة يف اجلرب املجرد‬
‫(‪)2001‬‬
‫• املنطق الرياضي‪.‬‬

‫• نظرية املجموعات‪.‬‬

‫• اجلداء الديكاريت والعالقات‪.‬‬

‫• التطبيقات‪.‬‬

‫• العمليات اجلربية‪.‬‬

‫• نظرية الزمر‪.‬‬

‫• احللقات واحلقول‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات جداول البيانات اإللكترونية‬
‫واستخدام برنامج مايكروسوفت إكسل إكس يب‬
‫‪Microsoft Excel XP‬‬
‫(‪)2002‬‬
‫برامج جداول البيانات اإللكترونية‪:‬‬ ‫•‬
‫املفاهيم األســـاســـية‪ ،‬نظرة تارخيية‪ ،‬أمهيتها وفوائدها‪ ،‬أشـــهر‬
‫برامج جــداول البيــانــات اإللكترونيــة‪ ،‬إجراء احلســـــابــات‬
‫اإللكترونية‪.‬‬
‫البدء مع برنامج مايكروسوفت إكسل إكس يب‪:‬‬ ‫•‬
‫التعريف‪ ،‬أهم املميزات‪ ،‬فوائد االســـتخدام‪ ،‬تشـــغيل الربنامج‪،‬‬
‫التعرف على النافذة الرئيسية‪ ،‬اخلروج من الربنامج‪.‬‬
‫• املكونات األساسية للمصنف (ملف إكسل)‪:‬‬
‫املصـــنف (دفتر العمل)‪ ،‬الورقة‪ ،‬األعمدة‪ ،‬الصـــفوف‪ ،‬اخلاليا‪ ،‬ختطيط املســـودة‪ ،‬إدخال العناوين‪،‬‬
‫النصوص‪ ،‬األرقام‪.‬‬
‫• املهام األساسية للمصنفات‪:‬‬
‫احلفظ‪ ،‬إضــــافة املعلومات‪ ،‬إنشــــاء مصـــنف عمل جديد‪ ،‬فتح مصـــنف عمل قد ‪ ،‬العمل بالغة‬
‫اإلجنليزية‪ ،‬عرض أكثر من مصنف عمل معًا‪.‬‬
‫• التعامل مع أوراق العمل‪:‬‬
‫تســمية ورقة العمل‪ ،‬التعامل مع بطاقات أوراق املصــنف‪ ،‬إدارة األوراق‪ :‬إضــافة – حذف – نقل –‬
‫نس ـ ‪ ،‬حتديد جزء من ورقة العمل (خلية – خاليا متجاورة – خاليا متفرقة – نطاق من اخلاليا –‬
‫صف كامل – عمود كامل – كل خاليا الورقة)‪.‬‬
‫• التعامل مع منطقة البيانات‪:‬‬
‫اخلاليا (إضــافة – حذف – تســمية)‪ ،‬الصــف (إضــافة – حذف)‪ ،‬العمود (إضــافة – حذف)‪ ،‬تغيري‬
‫ارتفاع صف أو عدة صفوف‪ ،‬تغيري عرض عمود أو عدة أعمدة‪ ،‬استعادة العرض االفتراضي‪.‬‬
‫• تعديل حمتويات اخلاليا‪:‬‬
‫اســـتبدال حمتويات خلية‪ ،‬إصـــالح األخطاء داخل اخللية‪ ،‬اإلضـــافة إىل حمتويات اخللية‪ ،‬حذف‬
‫حمتويات خلية أو أكثر‪ ،‬التراجع عن آخر تعديل‪ ،‬تكرار آخر وظيفة‪ ،‬نســ حمتويات خلية‪ ،‬النســ‬
‫التلقائي يف اخلاليا املتجاورة‪ ،‬نقل حمتويات خلية‪ ،‬حتريك نطاق من اخلاليا‪ ،‬البحث واالســـتبدال‪،‬‬
‫فرز وترتيب حمتويات اخلاليا‪.‬‬
‫• العمليات احلسابية‪:‬‬
‫اجلمع والطرح‪ ،‬الضــرب والقســمة والنســبة‪ ،‬ضــم النصــوص‪ ،‬مقارنة القيم‪ ،‬مقدمة عن اســتخدام‬
‫الوظيفة الشرطية ‪ ،IF‬أولويات احلساب‪ ،‬تغيري أولويات احلساب‪.‬‬
‫املعادالت احلسابية والدوال اجلاهزة‪:‬‬ ‫•‬
‫اســتخدام عناوين اخلاليا يف املعادالت احلســابية‪ ،‬اســتخدام أمساء اخلاليا يف املعادالت احلســابية‪،‬‬
‫اســتخدام الدوال اجلاهزة‪ ،‬اجلمع التلقائي‪ ،‬النسـ التلقائي للمعادالت‪ ،‬اســتخدام العناوين املطلقة‪،‬‬
‫استخدام معاجل إنشاء الوظائف‪.‬‬
‫أهم الدوال (الوظائف) اجلاهزة‪:‬‬ ‫•‬
‫الدالة ‪ ،AVERAG‬الدالة ‪ ،COUNT‬الدالة ‪ ،IF‬الدالة ‪ ،MAX‬الدالة ‪ ،MIN‬الدالة ‪،NOW‬‬
‫الدالة ‪ ،ROUND‬أهم الدوال الرياضية واملثلثية‪.‬‬
‫• التنسيق يف ورقة العمل‪:‬‬
‫املحاذاة داخل اخلاليا‪ ،‬تغيري اجتاه النص يف اخللية‪ ،‬تنســـيق اخلط‪ ،‬تنســـيق األرقام (كنســـبة –‬
‫عالمة عشــرية – خانات عشــرية – عملة – لون عرض األرقام الســالبة)‪ ،‬ختطيط خاليا اجلدول‪،‬‬
‫تغيري لون اخلاليا‪ ،‬تغيري لون اخلطوط‪ ،‬تظليل اخلاليا بالنقوش‪ ،‬إخفاء خطوط الشـــبكة‪ ،‬تنســـيق‬
‫الصفحات‪.‬‬
‫• الرسوم البيانية‪:‬‬
‫إنشاء الرسم يف ورقة خاصة‪ ،‬إنشاء الرسم يف نفس الورقة‪ ،‬استخدام معاجل الرسوم‪ ،‬تعديل مكونات‬
‫الرسم البياين‪ ،‬الرسوم البيانية الثالثية األبعاد‪ ،‬تنسيق الرسوم البيانية‪.‬‬
‫• قاعدة البيانات‪:‬‬
‫مقدمة عن قواعد البيانات‪ ،‬مفهوم احلقول والســجالت‪ ،‬تصــميم قاعدة البيانات‪ ،‬إدخال الســجالت‪،‬‬
‫ا ستخدام منوج البيانات‪ ،‬االنتقال بني ال سجالت‪ ،‬تعديل بيانات سجل‪ ،‬التراجع عن تعديل ال سجل‪،‬‬
‫حذف ســـجل‪ ،‬فرز وترتيب الســـجالت‪ ،‬البحث يف قاعدة‬
‫البيانات‪ ،‬البحث باستخدام الفلتر التلقائي‪.‬‬
‫• الطباعة‪:‬‬
‫طباعة حمتويات مصـــنف‪ ،‬حتديد مقاي‬
‫وإعدادات ال صفحة‪ ،‬تعديل هوامش ال صفحة‪،‬‬
‫موضــع اجلدول يف الصــفحة‪ ،‬تصــميم رأي وتذييل‬
‫الصـــفحة‪ ،‬طباعة خطوط الشـــبكة‪ ،‬معاينة الصـــفحة‪،‬‬
‫طباعة جزء من الورقة‪ ،‬طباعة الرسم البياين فقط‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫مقدمة يف اجلرب اخلطي ‪:Linear Algebra‬‬
‫أسس ومبادئ نظرية املصفوفات ‪ Matrix‬واملحددات ‪Determinant‬‬
‫(‪)2002‬‬
‫• املصفوفات‪:‬‬
‫التعريف‪ ،‬أنواع خاصـــة من املصـــفوفات‪ ،‬املصـــفوفة الصـــفرية‪،‬‬
‫مصفوفة الوحدة‪.‬‬
‫• جرب املصفوفات‪:‬‬
‫تســـاوي املصـــفوفات‪ ،‬مجع املصـــفوفات‪ ،‬النظري اجلمعي‪ ،‬املحايد‬
‫اجلمعي‪ ،‬ضـــرب املصـــفوفاة بعدد‪ ،‬طرح املصـــفوفات‪ ،‬خصـــائص‬
‫عملية اجلمع‪ ،‬ضـــرب املصـــفوفات‪ ،‬النظري الضـــريب‪ ،‬املحايد‬
‫الضريب‪ ،‬خصائص عملية الضرب‪.‬‬
‫• عمليات خاصة على املصفوفات‪:‬‬
‫مدور املصــفوفة‪ ،‬أثر املصــفوفة‪ ،‬العمليات الصــفية األولية‪ ،‬املصــفوفات األولية‪ ،‬معكوي املصــفوفة‬
‫املربعة‪ ،‬قابلية االنعكاي‪ ،‬تشابه املصفوفات‪ ،‬رفع املصفوفة إىل قوة‪.‬‬
‫• املحددات‪:‬‬
‫التعريف‪ ،‬نشـــر املحدد‪ ،‬طريقة ســـاروي حلســـاب‬
‫املحددات‪ ،‬حمددات املصـــفوفات القطرية أو‬
‫املثلثية‪.‬‬
‫• العمليات على املحددات‪:‬‬
‫حمدد املدور‪ ،‬تاثري العمليات الصـــفيةعالعمودية‬
‫األولية على املحددات‪ ،‬مصـــفوفات حمدداهتا أصـــفار‪،‬‬
‫خواص حســاب املحددات‪ ،‬حمددات بداللة متغري‪ ،‬االســتفادة‬
‫من املحددات يف إجياد معكوي املصفوفات‪.‬‬
‫تطبيقات على املصفوفات واملحددات‪:‬‬ ‫•‬
‫حل نظام املعادالت اخلطية باستخدام املصفوفات‪.‬‬
‫أساسيات الكمبيوتر‬
‫واستخدام نظام التشغيل مايكروسوفت ويندوز إكس يب‬
‫‪Microsoft Windows XP‬‬
‫(‪)2003‬‬
‫مقرر دراسي تطبيقي‪ ,‬دليل تدرييب متكامل وفق معايري الشهادة الدولية ‪ECDL/ICDL‬‬
‫• أساسيات الكمبيوتر‪:‬‬
‫ما هو الكمبيوتر‪ ،‬تارخيه وتطوره‪ ،‬أنواع الكمبيوترات‪.‬‬
‫• املكونات األساسية للكمبيوتر‪:‬‬
‫املكونات املادية (جســــد الكمبيوتر)‪ :‬وحدات اإلدخال ( ‪Input‬‬
‫‪ ،)Unit‬وحــدات اإلخراج (‪ ،)Output Unit‬وحــدة املعــاجلــة‬
‫املركزية (‪ ،)Center Processing Unit - CPU‬وحدة الذاكرة‬
‫الرئيســية‪ ،‬وحدات قياي الســعة التخزينية لذاكرة الكمبيوتر‪،‬‬
‫و حدات التخزين ال ثانو ية ‪ -‬ا لدائ مة‪ :‬األقراص الصـــل بة‪،‬‬
‫األقراص املرنة‪ ،‬األقراص الليزرية املدجمة‪،‬‬
‫املكونــات وري امل ـاديــة (روح الكمبيوتر)‪ :‬أنظمــة التشـــغيــل ‪ ، Operating Systems‬الربامج‬
‫التطبيقية ‪.Application Programs‬‬
‫• نظام التشغيل ويندوز ‪:Windows‬‬
‫ما هو نظام التشغيل ويندوز‪ ،‬مميزات ويندوز‪.‬‬
‫• أهم مكونات النظام ويندوز‪:‬‬
‫ســطح املكتب ‪ ،Desktop‬مكوناته‪ ،‬شــريط املهام‪ ،‬مكوناته‪ ،‬زر ابدأ‪ ،‬مكوناته‪ ،‬قائمة الربامج‪ ،‬كيفية‬
‫تشــغيل الربامج‪ ،‬قائمة املســتندات‪ ،‬فتح آخر املســتندات‪ ،‬قائمة إعدادات‪ ،‬أمر البحث‪ ،‬أمر تعليمات‪،‬‬
‫أمر تشغيل‪ ،‬أمر إيقاف تشغيل النظام‪.‬‬
‫التعامل مع واجهات النظام ومكوناته‪:‬‬ ‫•‬
‫التعامل مع الفارة (املاوي)‪ ،‬التعامل مع النوافذ‪ ،‬مكوناهتا‪ ،‬التحجيم والتحريك‪ ،‬التعامل مع القوائم‪،‬‬
‫القوائم الفرعية‪ ،‬القائمة الســريعة‪ ،‬التعامل مع مربعات احلوار‪ ،‬مربعات احلوار املبوبة‪ ،‬التعامل مع‬
‫االختصارات‪.‬‬
‫• جهاز الكمبيوتر‪ ,‬مكوناته‪:‬‬
‫األقراص الثابتة‪ ،‬األقراص املرنة‪ ،‬األقراص املضغوطة‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• املستكشف ‪:Explorer‬‬
‫طرق تشــغيل املســتكشــف‪ ،‬مكوناته‪ ،‬طرق العرض‪ ،‬الترتيب‪ ،‬خيارات عرض املجلد‪ ،‬اســتخدام لوحة‬
‫املفاتيح مع املستكشف‪.‬‬
‫• التعامل مع امللفات واملجلدات‪:‬‬
‫رموز عرض املجلدات وامللفات واألنواع األســاســية للملفات‪ ،‬إنشــاء جملد أو ملف‪ ،‬األمساء الطويلة‬
‫للملفات‪ ،‬حتديد املجلدات وامللفات‪ ،‬إعادة تســمية جملد أو ملف‪ ،‬نس ـ امللفات واملجلدات‪ ،‬نقل امللفات‬
‫واملجلدات‪ ،‬الســحب واإلفالت‪ ،‬للنســ والنقل‪ ،‬إرســال إىل …‪ ،‬التراجع عن العمليات اليت قمت هبا‪،‬‬
‫إلغاء عمليات امللفات أثناء القيام هبا‪ ،‬خصــائص املجلدات وامللفات وتغيريها‪ ،‬حف امللفات واملجلدات‪،‬‬
‫سلة املحذوفات‪ ،‬استعادة امللفات املحذوفة‪.‬‬
‫• لوحة التحكم بالنظام‪:‬‬
‫خصـــائص عرض النظام‪ ،‬إعدادات شـــريط املهام وقائمة ابدأ‪ ،‬إعدادات الفارة‪-‬املاوي‪ ،‬إعدادات‬
‫التاري والوقت‪ ،‬اإلعدادات اإلقليمية‪.‬‬
‫تشغيل الربامج التطبيقية‪:‬‬ ‫•‬
‫برنامج الدفتر‪ ،‬برنامج الرسام‪ ،‬احلاسبة‪.‬‬
‫أسس ومبادئ اإلحصاء ‪Statistics‬‬
‫واالحتماالت ‪Probability‬‬
‫(‪)2003‬‬
‫• اإلحصاء وعرض البيانات‪:‬‬
‫طرق عرض البيانات‪ ،‬التوزيعات التكرارية‪ ،‬التكرارات النســـبية‪،‬‬
‫التوزيع التكراري املتجمع‪ ،‬طرق متثيــل التوزيعــات التكراريــة‬
‫بيانيًا‪ ،‬حاالت املنحنيات التكرارية‪ ،‬تطبيقات على برنامج إكسل‪.‬‬
‫• مقاييس الزنعة املركزية‪:‬‬
‫الوسط احلسايب وخواصه‪ ،‬الوسيط وتطبيقاته‪ ،‬املنوال وحاالته‪،‬‬
‫العالقة بني الوســـط والوســـيط واملنوال‪ ،‬الربيعات والعشـــريات‬
‫واملئويات‪ ،‬الوســط اهلندســي والتوافقي والتربيعي‪ ،‬تطبيقات على‬
‫برنامج إكسل‪.‬‬
‫• مقاييس التشتت وااللتواء والتفرطح‪:‬‬
‫املدى‪ ،‬املدى الربيعي‪ ،‬االحنراف الربيعي‪ ،‬االحنراف املطلق‪ ،‬التباين وخواصــــه‪ ،‬االحنراف املعياري‪،‬‬
‫معامل االختالف‪ ،‬العزوم وااللتواء والتفرطح‪ ،‬تطبيقات على برنامج إكسل‪.‬‬
‫• طرق مجع البيانات والعينات‪:‬‬
‫املعاينة وإطارها‪ ،‬أنواع طرق اجلمع‪ ،‬العينات وأنواعها االحتمالية (العشــوائية البســيطة‪ ،‬املنتظمة‪،‬‬
‫الطبقية‪ ،‬متعددة املراحل‪ ،‬العنقودية‪ ،‬املحاصصة‪ ،‬املعيارية) ووري االحتمالية (املالئمة‪ ،‬التمييز)‪.‬‬
‫• نظرية املجموعات وطرق العد‪:‬‬
‫املجموعات وأنواعها‪ ،‬جرب املجموعات‪ ،‬خواص العمليات اجلربية‪ ،‬طرق العد‪ ،‬التباديل وتطبيقاته‪،‬‬
‫التوافيق وتطبيقاته‪.‬‬
‫• نظرية االحتماالت‪:‬‬
‫التجربة العشوائية‪ ،‬فضاء العينة‪ ،‬احلوادث‬
‫(املســـتحيلة‪ ،‬املةكدة‪ ،‬املتنافية)‪ ،‬االحتمال‪،‬‬
‫م سلمات وقوانني االحتماالت‪ ،‬االحتمال املنتظم‬
‫والتكرار النســـا‪ ،‬االحت مال الشـــرطي‪ ،‬األ حداث‬
‫املســـتقلة‪ ،‬قاعدة بيز‪ ،‬املتغريات العشـــوائية ذات البعد‬
‫الواحد‪ ،‬التوزيعات االحتمالية‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• االرتباط واالحندار‪:‬‬
‫االرتباط‪ ،‬معامل االرتباط اخلطي الب سيط (معامل ارتباط بري سون)‪ ،‬معامل ارتباط الرتب (معامل‬
‫ارتباط ســبريمان للرتب)‪ ،‬االحندار‪ ،‬أشــكال االنتشــار‪ ،‬حتليل االحندار‪ ،‬توفيق االحندار‪ ،‬االحندار‬
‫املتعدد‪ ،‬تطبيقات على برنامج إكسل‪.‬‬

‫أساسيات إدارة قواعد البيانات‬


‫واستخدام برنامج مايكروسوفت أوفيس أكسيس ‪2003‬‬
‫‪Microsoft Office Access 2003‬‬
‫(‪)2004‬‬
‫• مدخل إىل قواعد البيانات ‪:Databases‬‬
‫امل فاهيم األســــاســـ ية‪ ،‬نظرة تارخي ية‪ ،‬أمه ية وفوا ئد قوا عد‬
‫البيانات‪ ،‬أنواع قواعد البيانات‪.‬‬
‫• نظم إدارة قواعد البيانات ‪:DBMS‬‬
‫ماهيتها‪ ،‬تطورها‪ ،‬أمهيتها وفوائدها‪ ،‬أشهرها‪.‬‬
‫• قواعد البيانات العالئقية ‪:Relational Database‬‬
‫النموذج العالئقي‪ ،‬أنواع العالقــات‪ ،‬اجلرب العالئقي وعمليــاتــه‪،‬‬
‫مراحل تصـــميم وبناء قاعدة بيانات عالئقية‪ ،‬النماذج املعيارية‬
‫‪.Normal Forms‬‬
‫برنامج مايكروسوفت أوفيس أكسيس ‪:2003‬‬ ‫•‬
‫التعريف‪ ،‬أهم املميزات‪ ،‬التعامل مع الربنامج‪ ،‬إنشاء قاعدة بيانات وإدارهتا‪.‬‬
‫• التعامل مع اجلداول ‪:Tables‬‬
‫التعريف‪ ،‬طرق اإلنشـــاء‪ ،‬إدخال البيانات‪ ،‬إدارة اجلداول‪ ،‬التصـــميم اليدوي‪ ،‬أنواع البيانات‪ ،‬إدارة‬
‫احلقول‪ ،‬إدارة السجالت‪ ،‬طرق العرض‪ ،‬البحث والفرز والتصفية‪.‬‬
‫• بناء العالقات ‪ Relationships‬بني اجلداول‪:‬‬
‫أمهيتها‪ ،‬أنواعها يف أك سيس وأين ومىت ت ستخدم‪،‬‬
‫إنشاء عالقة بني جدولني‪ ،‬التكامل املرجعي‪،‬‬
‫إدارة العالقات‪.‬‬
‫• التعامل مع النماذج ‪:Forms‬‬
‫التعريف‪ ،‬األمهية والفوائد‪ ،‬طرق اإلنشـــاء‪ ،‬إدخال‬
‫الب يا نات والتن قل بني احلقول والســـجالت‪ ،‬الت عا مل مع‬
‫البيانات يف النموذج‪ :‬البحث والفرز والتصــفية‪ ،‬إدارة النماذج‪،‬‬
‫التصميم اليدوي‪.‬‬
‫• التعامل مع االستعالمات ‪:Queries‬‬
‫التعريف‪ ،‬األنواع‪ ،‬األمهية والفوائد‪ ،‬طرق اإلنشاء‪ ،‬التصميم اليدوي‪ ،‬نظرة سريعة على لغة ‪،SQL‬‬
‫التعامل مع البيانات يف االستعالم‪ :‬البحث والفرز والتصفية‪ ،‬إدارة االستعالمات‪.‬‬
‫• التعامل مع التقارير ‪:Reports‬‬
‫التعريف‪ ،‬األمهية والفوائد‪ ،‬طرق اإلنشــــاء‪ ،‬التصـــميم اليدوي‪ ،‬إدارة التقارير‪ ،‬معاينة وطباعة‬
‫التقرير‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات الربجمة بلغة فيجوال بيسك ‪6‬‬
‫‪Fundamentals of Programming in Visual Basic 6.0‬‬
‫(‪)2004‬‬
‫• مقدمة عن الربجمة والربجمة املرئية‪:‬‬
‫مقدمة تارخيية عن لغة البي سيك وفيجوال بي سيك‪ ،‬مفهوم‬
‫الربجمــة املرئيــة‪ ،‬مفهوم الربجمــة املســـرية بــاألحــداث‬
‫‪ ،Event-Driven Programming‬م ف هوم ا ل عنــاصــــر‬
‫وال كائ نات ‪ ،Objects and Controls‬الرب جمة املوج هة‬
‫بالكائنات )‪.Object-Oriented Programming (OOP‬‬
‫البدء مع بيئة فيجوال بيسيك‪:‬‬ ‫•‬
‫تشــغيل فيجوال بيســيك‪ ،‬بيئة التطوير املتكاملة ‪ IDE‬للغة‬
‫فيجوال بيســـيك‪ ،‬مفهوم املشـــروع – النموذج (اإلنشـــاء –‬
‫الفتح) – أنواع املل فات‪ ،‬مربع األدوات – إضــــا فة األدوات‬
‫وتغيري موقعها وحجمها‪ ،‬إطار اخلصائص – تغيري خاصية‪ ،‬إطار املشروع‪.‬‬
‫خطوات الربجمة املرئية‪:‬‬ ‫•‬
‫كتابة الربنامج األول‪ ،‬إنشاء واجهة الربنامج‪ ،‬ضبط اخل صائص‪ ،‬كتابة شيفرة الربنامج – العبارات‬
‫الربجمية – إنشاء األحداث‪ ،‬حفظ الربنامج‪ ،‬تشغيل الربنامج‪ ،‬بناء امللف التنفيذي‪.‬‬
‫• العمل مع أدوات التحكم‪:‬‬
‫االســتعمال األســاســي ألدوات التحكم (زر األمر – مربع النص – العنوان أو التســمية)‪ ،‬اســتعمال‬
‫كائنات نظام امللفات (األقراص – املجلدات – امللفات)‪ ،‬كائن الصــورة – برنامج مســتكشــف الصــور‪،‬‬
‫كائنات للحصول على إدخاالت املستخدم (زر خيار – مربع اختيار)‪ ،‬التعامل مع مربع السرد والقوائم‬
‫املركبة املنسدلة‪ ،‬العمل مع القوائم – حمرر القوائم‪ ،‬التعامل مع مربعات احلوار (‪SAVE ،OPEN‬‬
‫‪.)AS, PRINT, FONT, COLOR‬‬
‫أساسيات الربجمة بلغة فيجوال بيسيك اجلزء األول‪:‬‬ ‫•‬
‫• املتغريات والعوامل يف فيجوال بيسيك‪:‬‬
‫هيكلية مجل فيجوال بيسيك‪ ،‬استعمال املتغريات لتخزين املعلومات‪ ،‬حجز مساحة للمتغريات (عبارة‬
‫‪ ،)DIM‬تعيني القيمة للمتغري‪ ،‬تصـــريح املتغريات من دون اســـتعمال ‪ ،DIM‬اإلجبار على التصـــريح‬
‫بعبارة ‪ ،OPTION EXPLICIT‬احلصول على إدخال من املستخدم بواسطة الدالة ‪،INPUTBOX‬‬
‫عرض الرسائل واإلخراج يف مربع حوار بواسطة ‪.MSGBOX‬‬
‫أنواع البيانات يف فيجوال بيسك‪:‬‬ ‫•‬
‫أنواع البيانات األســاســية‪ ،‬أنواع البيانات املعرفة من قبل املســتخدم (اســتخدام العبارة ‪،)TYPE‬‬
‫الثوابت (التعريف واال ستخدام)‪ ،‬ا ستعمال عوامل فيجوال بي سيك (‪،*،-،+‬ع‪ ،)&،^،mod،\،‬تطبيق‬
‫ا لة احلا سبة الب سيطة‪ ،‬دوال فيجوال بي سيك الريا ضية ( ‪abs, cos, exp, rnd, sgn, sin,‬‬
‫‪ ،)sqr, str, val‬أولويات العوامل‪.‬‬
‫• استعمال بنيات القرار‪:‬‬
‫اســتعمال التعابري الشــرطية – عوامل املقارنة (=‪ ،)=<،=>،<،>،><،‬بنيات القرار ‪،IF...THEN‬‬
‫اســـتعمال العوامل املنطقية يف التعابري الشـــرطية (‪ ،)AND, OR, NOT, XOR‬بنية القرار‬
‫‪ ،SELECT CASE‬استعمال عوامل املقارنة مع البنية ‪ SELECT CASE‬واستخدام ‪.IS,TO‬‬
‫استعمال احللقات وعدادات الوقت‪:‬‬ ‫•‬
‫حل قات ‪ ،FOR...NEXT‬اجلم لة ‪ ،EXIT FOR‬حل قات ‪ DO WHILE LOOP‬و ‪DO LOOP‬‬
‫‪ WHILE‬و‪ ،DO LOOP UNTIL‬استعمال كائنات عدادات الوقت‪.‬‬
‫• العمل مع النماذج‪:‬‬
‫إضـــافة مناذج جديدة إىل الربنامج (النماذج الفاروة‪ ،‬النماذج املوجودة ســـابقًا‪ ،‬النماذج اجلاهزة‬
‫مسبقة التصميم ‪ -‬الشاشة االفتتاحية‪ ،‬إرشادات الربنامج‪ ،‬مربعات احلوار)‪ ،‬مجل وعبارات النموذج‬
‫يف الشــيفرة الربجمية (‪ ،)Unload ،Hide ،Show ،Load‬خصــائص النموذج‪ ،‬العمل مع املشــاريع‬
‫متعددة النماذج‪ ،‬الواجهات متعددة الوثائق ‪ ،MDI‬تطبيق املفكرة متعددة النماذج‪.‬‬
‫• الطباعة يف فيجوال بيسك‪:‬‬
‫إرســال خرج الربنامج إىل الطابعة‪ ،‬الكائن ‪ ،PRINTER‬طباعة منوذج باكمله باســتعمال الطريقة‬
‫‪.PRINTFORM‬‬
‫التعامل مع األخ طاء باســـــتعمال معاجلات‬ ‫•‬
‫األخطاء‪:‬‬
‫مىت جيــب اســــتخــدام معــاجلــات‬
‫األخطاء‪ ،‬إعداد مصــائد األخطاء –‬
‫اجلــمــلــة ‪،ON ERROR GOTO‬‬
‫اجلــمــلــة ‪RESUME – RESUME‬‬
‫‪.NEXT‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• إضافة األعمال الفنية والتهثريات اخلاصة‪:‬‬
‫أداة التحكم خط‪ ،‬أداة التحكم شــكل‪ ،‬تغيري مةشــر الفارة اخلصــائص – ‪MOUSEPOINTER‬‬
‫‪ ،MOUSEICON‬نقل الكائنات يف نظام اإلحداثيات – الطريقة ‪.MOVE‬‬
‫أساسيات الربجمة بلغة فيجوال بيسيك اجلزء الثاين‪:‬‬ ‫•‬
‫• العمل مع الوحدات النمطية‪:‬‬
‫إنشاء وحدة منطية قياسية‪ ،‬العمل مع املتغريات العمومية ‪.PUBLIC‬‬
‫• العمل مع اإلجراءات‪:‬‬
‫إنشــــاء اإلجراءات الفرعية ‪ ،SUB‬مترير املتغريات باملرجع وبالقيمة اســـتخدام – ‪BYREF‬‬
‫‪ ،BYVAL‬استدعاء اإلجراءات الفرعية‪.‬‬
‫• العمل مع الدوال‪:‬‬
‫إنشــاء الدوال ‪ ،FUNCTION‬اســتدعاء الدوال‪ ،‬قطع عمل اإلجراءات أو الدوال والعبارة ‪،EXIT‬‬
‫أهم دوال معاجلة السالسل النصية (‪.)right, left, mid, instr, asc, chr ،ucase, lcase, len‬‬
‫• العمل مع املصفوفات‪:‬‬
‫مفهوم املصفوفات وأنواعها (مصفوفات ثابتة احلجم – مصفوفات ديناميكية)‪ ،‬إنشاء املصفوفة ثابتة‬
‫احلجم‪ ،‬العمل مع عناصر املصفوفة‪ ،‬إنشاء املصفوفة الديناميكية‪ ،‬استخدام مجلة ‪ REDIM‬لتغيري‬
‫حجم املصــفوفة‪ ،‬املصــفوفات متعددة األبعاد‪ ،‬مصــفوفة العناصــر ‪ ،ActiveX‬التعامل مع مصــفوفة‬
‫العناصر واخلاصية ‪.INDEX‬‬
‫برجمة قواعد البيانات بواسطة فيجوال بيسيك‪:‬‬ ‫•‬
‫إنشــاء تطبيقات صصــصــة لقواعد البيانات‪ ،‬مناهج برجمة قواعد البيانات ( – ‪DAO – RDO‬‬
‫‪،)ADO‬‬
‫اســــتعمــال األداة ‪ DAO‬عنصــــر التحكم بــالبيــانــات وخصـــــائصــــهــا ( ‪CONNECT,‬‬
‫‪،)RECORDSOURCE, READONLY ،DATABASENAME, RECORDSETTYPE‬‬
‫اســـتعمــال أدوات التحكم املرتبطــة ‪ bound‬لعرض البيــانــات من القــاعــدة‪ ،‬اخلــاصـــيتني‬
‫‪،DATASOURCE – DATAFIELD‬‬
‫اســـتعمال كائن جمموعة ســـجالت ‪ ،RECORDSET‬اإلضـــافة واحلذف للســـجالت‪ ،‬التحقق من‬
‫البيانات املدخلة‪،‬‬
‫اســتخدام كائنات البيانات ‪ ،ActiveX Data Objects ADO‬خصــائص ‪ ADO‬اخلاصــة‪ ،‬مقدمة‬
‫للربجمة باستخدام مكتبة ‪.ADODB‬‬
‫مقدمة يف الربجمة بلغة إس كيو إل ‪SQL‬‬
‫ومدخل إىل قواعد البيانات ‪Oracle 9i‬‬
‫(‪)2004‬‬
‫• بعض املفاهيم األساسية‪:‬‬
‫الب يا نات‪ ،‬املعلو مات‪ ،‬قا عدة الب يا نات‪ ،‬نظم إدارة قوا عد‬
‫الب يا نات (‪ ،)DBMS‬و ظائف قوا عد الب يا نات‪ ،‬م فاهيم‬
‫قاعدة البيانات العالئقية‪ ،‬املســـتخدمني واملهام‪ ،‬األعمدة‪،‬‬
‫الصفوف‪ ،‬العالقات‪ ،‬مفهوم الكائنات‪.‬‬
‫• املبادئ األساسية للغة ‪:SQL‬‬
‫مفهوم اللغات املســـتضـــافة‪ ،‬لغة ‪ SQL‬ومكوناهتا ( ‪DML,‬‬
‫‪ ،)DDL, DCL, TCL‬اســتخدام برنامج أكســس ‪Access‬‬
‫يف تنفيذ عبارات لغة ‪.SQL‬‬
‫• أوامر لغة ‪ SQL‬املستخدمة يف االختيار واالستفسار‪:‬‬
‫أوامر اختيار جمموعة من احلقول من أكثر من جدول (‪ ،)SELECT – FROM‬ا ستخدام ال شرط‬
‫‪ WHERE‬مع األمر ‪ ،SELECT‬اســـتخدام معايري التصـــفية (معامالت التشـــغيل‪ :‬املعامل ‪LIKE‬‬
‫والرموز (_‪ ،)% ،‬املعامل ‪ ،IN‬املعامل ‪ ،)BETWEEN‬اســـتخدام عمليات الربط املنطقية ( ‪AND,‬‬
‫‪ ،)OR‬ا ستبعاد التكرارات يف بيانات حقل معني ‪ ،DISTINCTROW‬ت سمية احلقل امل ستنتج داخل‬
‫أمر ‪ ،SELECT‬اختيار جمموعة من احلقول من أكثر من جدول‪ ،‬ترتيب السجالت ‪،ORDER BY‬‬
‫اســـتخــدام الــدوال (‪ )AVG, COUNT, MIN, MAX, SUM, FIRST, LAST‬مع مجلــة‬
‫‪ ،SELECT‬االستفسارات املتداخلة‪ ،‬إنشاء االستعالمات املعقدة بواسطة برنامج ‪.ACCESS‬‬
‫• مقدمة عن أوراكل وبيئة العمل فيها‪:‬‬
‫نظرة عامة على ‪ ،ORACLE‬تعريف قاعدة البيانات ‪ ،ORACLE‬الربامج املســــاعدة يف أوراكل‬
‫(برنامج ‪ ،SQL*PLUS‬برنامج ‪ ،)Enterprise Manager‬العناصــر الرئيســية اخلاصــة بقاعدة‬
‫بيانات أوراكل (عناصــر ‪ ،Tablespaces‬اجلداول‪ ،‬عناصــر ‪ ،Schemas‬عناصــر ‪،Sequence‬‬
‫اإلجراءات املخزنة والوظائف وجمموعة اإلجراءات‪ ،‬األزندة (القوادح) ‪ ،TRIGGERS‬املرادفات‬
‫‪ ،)SYNONYMS‬مقدمة عن ا ستخدام ‪( SQL*PLUS‬ت شغيل الربنامج‪ ،‬سطر األوامر اخلاص بـ‬
‫‪ ،SQL*PLUS‬االتصــــال بقاعدة البيانات باســـتخدام ‪ ،SQL*PLUS‬املحث (‪ ،)>SQL‬إدخال‬
‫األوامر والفاصلة املنقوطة)‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• لغة معاجلة البيانات ‪( DML‬التعامل مع البيانات)‪:‬‬
‫أمر إ ضافة ال سجالت ‪( INSERT INTO – VALUES‬إ ضافة سجل واحد‪ ،‬ن س ال سجالت من‬
‫جدول إىل آخر‪ ،‬اســـتخدام طريقة & يف اإلضــــافة)‪ ،‬أمر حتديث البيانات ‪UPDATE – SET‬‬
‫(حتديث احلقول يف ســـجالت معينة‪ ،‬حتديث احلقول يف كافة الســـجالت)‪ ،‬أمر حذف الســـجالت‬
‫‪( DELETE FROM‬حذف ســجالت معينة‪ ،‬حذف كافة ســجالت اجلدول)‪ ،‬أمر إبطال التعديالت‬
‫‪ ،ROLLBACK‬حفظ التعديالت ‪.COMMIT‬‬
‫• لغة تعريف البيانات ‪( DDL‬التعامل مع الكائنات)‪:‬‬
‫التعامل مع اجلداول ‪( TABLES‬إنشــاء جدول‪ ،‬إنشــاء جدول فارن‪ ،‬إنشــاء جدول من خالل جدول‬
‫أخر‪ ،‬االســـتعالم عن بن ية وتكوين ا جلدول ‪ ،DESC‬ت عد يل خصــــائص جدول‪ ،‬حذف جدول‪،‬‬
‫االســتعالم عن اجلداول املوجودة)‪ ،‬القيود على اجلداول ‪( CONSTRAINTS‬إضــافة القيود على‬
‫مســـتوى العمود‪ ،‬على مســـتوى اجلدول (اســـتخدام العبارة ‪ ،)CONSTRAINT‬أنواع القيود (عدم‬
‫قبول القيم الفاروة ‪ ،NOT NULL‬عدم التكرار ‪ ،UNIQUE‬شـــرط التحقق ‪ ،CHECK‬املفتاح‬
‫الرئيســـي ‪ ،PRIMARY KEY‬املفتاح األجنا (بناء العالقة) ‪ ،FOREIGN KEY‬إضـــافة قيد‬
‫بعد إنشـــاء اجلدول‪ ،‬حذف القيود‪ ،‬حذف قيد املفتاح الرئيســـي‪ ،‬االســـتعالم عن قيود اجلداول من‬
‫خالل اجلدول ‪.USER_CONSTRAINTS‬‬
‫• التعامل مع العروض ‪:VIEWS‬‬
‫تعريف العروض وا ستخداماهتا‪ ،‬إن شاء العروض‪ ،‬حذف العروض‪ ،‬اال ستعالم عن العروض املوجودة‬
‫بواسطة ‪.USER_VIEWS‬‬
‫• التعامل مع املتسلسالت ‪:SEQUENCES‬‬
‫تعريف املت سل سالت‪ ،‬توليد األرقام املت سل سلة تلقائيًا‪ ،‬اال ستخدام ألكثر من جدول‪ ،‬اال ستقالل عن‬
‫اجلدول‪ ،‬إنشــاء املتســلســالت‪ ،‬طريقة اســتخدام املتســلســالت‪ ،‬حذف املتســلســالت‪ ،‬االســتعالم عن‬
‫املتسلسالت املوجودة بواسطة ‪.USER_SEQUENCES‬‬
‫• التعامل مع الفهارس ‪:INDEXES‬‬
‫تعريف الفهاري واســتخدامها‪ ،‬تســريع احلصــول على البيانات‪ ،‬االســتقالل عن اجلدول‪ ،‬حذفها ال‬
‫يةثر يف اجلدول‪ ،‬حتذف عند حذف جدوهلا‪ ،‬إنشــــاء فهري‪ ،‬حذف فهري (ماعدا احلقول ‪NOT‬‬
‫‪ ،)NULL,PRIMARY KEY‬مىت تســتخدم الفهاري‪ ،‬مىت ال تســتخدم الفهاري‪ ،‬االســتعالم عن‬
‫الفهاري املوجودة بواسطة ‪.USER_INDEXES‬‬
‫• التعامل مع املرادفات ‪:SYNONYMS‬‬
‫تعريف املرادفات واستخدامها كبدائل ألمساء اجلداول والعروض‪ ،‬إنشاء املرادفات‪ ،‬حذف املرادفات‪،‬‬
‫االستعالم عن املرادفات املوجودة بواسطة ‪.USER_SYNONYMS‬‬
‫• أهم األوامر املستخدمة يف ‪:SQL*PLUS‬‬
‫أمر م سح حمتويات املخزن املةقت اخلاص بـــــ )‪ ،SQL (Clear SQL‬أمر االت صال بوحدة خدمة‬
‫(‪ ،)Connect‬أمر تقد وصــف تفصــيلي ألحد عناصــر قاعدة البيانات (‪ ،)Describe‬أمر حترير‬
‫حمتويات املخزن املةقت اخلاص بـــــــ ‪ ،)Edit( SQL‬أمر حتميل حمتويات ملف إىل املخزن املةقت‬
‫(‪ ،)Get‬أمر تقد التعليمات األســاســية ألوامر )‪ ،SQL*PLUS (Help‬أمر وضــع قائمة للجمل‬
‫املوجودة يف املخزن املةقت (‪ ،)List‬أمر اخلروج من )‪ ،SQL*PLUS (Quit‬أمر و ضع قائمة باجلمل‬
‫املوجودة يف املخزن املةقت وتنفيذها (‪ ،)Run‬أمر حفظ املخزن املةقت يف ملف (‪ ،)Save‬أمر توجيه‬
‫املخرجات إىل ملف خارجي أو الطابعة (‪ ،)Spool‬أمر تشـــغيل مجل ‪ SQL‬املوجودة بداخل ملف‬
‫(‪.)Start‬‬
‫• نظام التهمني يف ‪ – ORACLE‬مستخدمي ‪:ORACLE‬‬
‫اتصال املستخدم بقاعدة البيانات‪ ،‬إنشاء مستخدم جديد‪ ،‬منح الصالحيات (االمتيازات) للمستخدم‪،‬‬
‫تعريف األدوار ‪ ( ROLE‬صندوق ال صالحيات) وأمهيتها‪ ،‬إن شاء األدوار‪ ،‬إعطاء االمتيازات لادوار‪،‬‬
‫إع طاء امت يازات ا لدور للمســـت خدم‪ ،‬امت يازات ال كائ نات ‪ ،Object Privileges‬االســـتعالم عن‬
‫االمتيازات املمنوحة لادوار‪ ،‬اال ستعالم عن األدوار املمنوحة للم ستخدمني‪ ،‬اال ستعالم عن امتيازات‬
‫الكيانات املمنوحة للمســـتخدمني‪ ،‬ســـحب االمتيازات من املســـتخدم ‪ ،REVOKE‬تغيري كلمة املرور‬
‫للمستخدم‪ ،‬حذف املستخدم‪.‬‬
‫• لغة االستعالمات البنيوية اإلجرائية ‪:PL/SQL‬‬
‫التعامل مع الكتل ‪( BLOCKS‬تعريفها وفوائدها)‪ ،‬مكونات الكتل (جزء التصرحيات ‪،DECLARE‬‬
‫اجلزء التنف يذي ‪ ،...BEGIN‬حتديد االســـتث ناءات (جزء مراق بة األخ طاء) ‪،EXCEPTION‬‬
‫التعليقــات)‪ ،‬أنواع الكتــل (الكتــل الغري حمــددة (مســــمــاة) ‪ ،ANONYMOUS‬اإلجراءات‬
‫‪ ،PROCEDURES‬الدوال ‪ ،)FUNCTIONS‬استخدام الكتل‪ ،‬تنفيذ الكتل بواسطة املعامل "ع"‪.‬‬
‫• التعامل مع املتغريات وأنواعها ‪:VARIABLES‬‬
‫املتغريات ا ستخداماهتا وفوائدها‪ ،‬أنواع البيانات القيا سية (‪،DATE ،NUMBER ،VARCHAR2‬‬
‫‪ ،)BFILE ،NCLOB ،CLOB ،BLOB ،BOOLEAN ،LONG ،CHAR‬ت عر يف ا مل ت غريات‪،‬‬
‫حتميل املتغريات بقيمة‪ ،‬أنواع البيانات املعرفة من قبل املســـتخدم (متغري الســـجل ‪،RECORD‬‬
‫اســـت خدام الع بارة ‪ ،TYPE%‬اســـت خدام الع بارة ‪ ROWTYPE%‬ملتغريات الســـ جل‪ ،‬املتغريات‬
‫اخلارجية (متغريات ‪ )SQLPLUS‬التعريف – اإل سناد – طباعة القيمة‪ ،‬عرض البيانات من داخل‬
‫الكتلة – هتيئة وحدة اإلخراج – اســـتخدام الدمج‪ ،‬اســـتخدام املتغريات يف عبارات ‪ ،SQL‬حتميل‬
‫املتغريات بقيمة من قاعدة البيانات‪ ،‬استخدام الدوال مع املتغريات‪ ،‬الثوابت ‪.CONSTANT‬‬
‫بىن التحكم واختاذ القرارات‪:‬‬ ‫•‬
‫بنية الشرط ‪ ،IF‬بنية التكرار ‪ ،LOOP‬بنية التكرار ‪ ،FOR‬بنية التكرار ‪.WHILE‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• التعامل مع املؤشرات ‪:CURSOR‬‬
‫املة شرات وفوائدها وا ستخدامها‪ ،‬تعريف املة شرات‪ ،‬معامالت املة شرات‪ ،‬فتح املة شر‪ ،‬اال سترجاع –‬
‫حتميل بيانات املةشر إىل متغري‪ ،‬مواصفات وخصائص املةشرات‪ ،‬إوالق املةشر‪ ،‬استخدام ‪ FOR‬مع‬
‫املةشرات‪.‬‬
‫• اإلجراءات ‪:PROCEDURE‬‬
‫تركيب اإلجراءات‪ ،‬إنشــــاء اإلجراءات‪ ،‬تنفيذ اإلجراءات‪ ،‬تنفيذ اإلجراء من داخل إجراء آخر‪،‬‬
‫استخدام املعامالت ‪ ،Parameters‬طرق إرسال املعامالت (معامالت ‪ ،)OUT ، IN‬حذف اإلجراءات‪.‬‬
‫• الدوال ‪:FUNCTION‬‬
‫تركيب الدوال‪ ،‬إنشـــاء الدوال‪ ،‬اســـتخدام املعامالت ‪ IN‬يف الدوال‪ ،‬تنفيذ الدوال‪ ،‬تنفيذ الدوال من‬
‫داخل كتل أخرى‪ ،‬حذف الدوال‪.‬‬
‫• األزندة – القوادح ‪:TRIGGERS‬‬
‫األزندة التعريف والتركيب واألنواع‪ ،‬إنشـــاء األزندة‪ ،‬إيقاف عمل األزندة وإعادة التشـــغيل‪ ،‬حذف‬
‫األزندة‪.‬‬
‫أساسيات الربجمة بلغة باسكال ‪7‬‬
‫‪Fundamentals of Programming in Pascal 7‬‬
‫(‪)2005‬‬
‫• أساسيات الربجمة – مقدمة عن لغات الربجمة‪:‬‬
‫احلاســــب ا ك ومكوناته‪ ،‬لغات الربجمة (لغة ا لة‪ ،‬لغة‬
‫التجميع‪ ،‬الل غات عال ية املســـتوى)‪ ،‬ن بذة تارخي ية عن ل غة‬
‫الربجمة باســكال‪ ،‬لغة باســكال والربجمة اهليكلية‪ ،‬املكونات‬
‫األساسية لبيئة عمل توربو باسكال قياسية‪.‬‬
‫• مراحل عمل برنامج بلغة باسكال‪:‬‬
‫كتابة الرب نامج يف املحرر‪ ،‬املعاجلة القواعدية – مرحلة ما‬
‫ق بل التر مجة‪ ،‬مرح لة التر مجة‪ ،‬مرح لة الربط‪ ،‬مرح لة‬
‫التحم يل والتنف يذ‪ ،‬م قد مة يف الرب جمة بل غة باســـ كال ‪-‬‬
‫الربنامج األول ‪ ..‬طباعة مجلة‪.‬‬
‫بنية الربنامج بلغة باسكال‪:‬‬ ‫•‬
‫رأي الربنامج‪ ،‬قســـم التصـــرحيات االختيارية‪ ،‬اجلســـم الرئيســـي للربنامج‪ ،‬العبارات البســـيطة‬
‫والعبارات املركبة‪.‬‬
‫التعامل مع البيانات يف لغة باسكال‪:‬‬ ‫•‬
‫املتغريات (املتحوالت)‪ ،‬تســمية املتغريات – القيود املفروضــة على األمساء‪ ،‬التصــريح عن املتغريات‪،‬‬
‫املعامالت (معامل اإلسناد (=‪ ،):‬املعامالت احلسابية (‪+‬و‪-‬و*وع)‪ ،‬معامالت املقارنة (>و<و=)‪ ،‬أسبقية‬
‫املعامالت)‪ ،‬تعريف الثوابت‪.‬‬
‫اإلجراءات مسبقة التعريف لعملييت اإلدخال واإلخراج‪:‬‬ ‫•‬
‫اإلجراءات املســتخدمة يف عمليات اإلخراج (‪ ،)write, writeln‬اإلجراءات املســتخدمة يف عمليات‬
‫اإلدخال (‪.)read, readln‬‬
‫• أنواع البيانات القياسية يف لغة باسكال‪:‬‬
‫األعداد احلقيقية (نوع البيانات عدد حقيقي (‪ ،)real‬إظهار األعداد احلقيقية‪ ،‬املعامالت املطبقة‬
‫على القيم احلقيقية)‪،‬‬
‫األعداد ال صحيحة (نوع البيانات عدد صحيح (‪ ،)integer‬التحكم ب شكل اخلرج‪ ،‬نوع البيانات عدد‬
‫صـــحيح طويل (‪ ،)LONGINT‬نوع البيانات كلمة (‪ ،)WORD‬نوع البيانات عدد صـــحيح قصـــري‬
‫(‪ ،)SHORTINT‬نوع البيانات بايت (‪ ،)BYTE‬املعامالت املطبقة على األعداد الصحيحة)‪،‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أنواع البيانات ذات األســــاي الرمزي (نوع البيانات رمز (‪ ،)CHAR‬نوع البيانات ســـلســـلة رمزية‬
‫(‪ ،)STRING‬التحكم بشكل اخلرج)‪،‬‬
‫أ نواع ا ل بيــانــات ا مل ن ط قيــة (‪ ،)BOOLEAN‬ا ملعــا مالت ا مل ط بقــة ع لى ا مل ت غريات ا مل ن ط قيــة‬
‫(‪،)AND,OR,NOT‬‬
‫أنواع البيانات التعدادية (استخدام التعريف ‪ TYPE‬إلنشاء أنواع البيانات التعدادية‪ ،‬التصريح عن‬
‫املتغريات من النوع التعدادي‪ ،‬استخدام املتغريات من النوع التعدادي)‪.‬‬
‫بىن التحكم والتكرار يف لغة باسكال‪:‬‬ ‫•‬
‫بنية االختيار ‪ ،IF‬عبارة ‪ ،IF ELSE‬عبارات ‪ IF‬املتداخلة‪،‬‬
‫االختيار ما بني عدة إمكانيات وعبارة ‪،CASE‬‬
‫عبارة ‪ GOTO‬والتكرار‪،‬‬
‫التكرار البسيط – عبارة ‪ ،FOR‬احللقات العكسية والعبارة ‪ ،DOWNTO‬حلقات ‪ FOR‬املتداخلة‪،‬‬
‫بىن التكرار املشروط‪ ،‬بنية التكرار املتهورة ‪ ،REPEAT UNTIL‬بنية التكرار احلذرة ‪.WHILE‬‬
‫• اإلجراءات والدوال‪:‬‬
‫اإلجراءات واستخدامها‪ ،‬تعريف اإلجراءات‪ ،‬استدعاء اإلجراءات‪ ،‬املعامالت (الوسطاء) – املعامالت‬
‫املرجعية‪ ،‬املتغريات العامة واملتغريات املحلية‪،‬‬
‫الدوال واســـتخدامها‪ ،‬تعريف الدوال‪ ،‬اســـتدعاء الدوال‪ ،‬اإلجراءات والدوال مســـبقة التعريف‬
‫(‪.)ABS, SQR, SQRT, INC, DEC, LENGTH, RANDOM, UPCASE‬‬
‫أنواع البيانات املركبة‪:‬‬ ‫•‬
‫نوع البيانات م صفوفة ‪ ،ARRAY‬التعريف والت صريح عن امل صفوفة‪ ،‬الكتابة والقراءة من عنا صر‬
‫املصفوفة‪ ،‬املصفوفات متعددة األبعاد‪،‬‬
‫نوع البيانات سجل ‪ ،RECORD‬التعريف والت صريح عن‬
‫الســجالت‪ ،‬التعامل مع حقول الســجل‪ ،‬الســجالت‬
‫املتداخلة‪ ،‬مصفوفة السجالت‪ ،‬التعامل مع‬
‫مصفوفة السجالت‪،‬‬
‫املجموعات ‪ ،SETS‬إن شاءها وا سناد‬
‫القيم هلا‪ ،‬العمل يات على املجمو عات‬
‫(االحتــاد‪ ،‬ا ل تقــا طع‪ ،‬ا ل فرق)‪ ،‬مقــارنــة‬
‫املجموعات‪ ،‬اختبار االنتماء العبارة ‪ ،IN‬عمليات‬
‫القراءة والكتابة‪.‬‬
‫• التعامل مع امللفات ‪:FILE‬‬
‫تعريف املل فات‪ ،‬أنواع املل فات‪ ،‬طرق تعريف املل فات يف باســـ كال‪،‬‬
‫إنشــــاء املل فات‪ ،‬املل فات ا خلارج ية وذاكرة التخزين املةق تة للمل فات‪،‬‬
‫الكتابة يف امللفات‪ ،‬القراءة من امللفات‪ ،‬نس ونقل امللفات‪ ،‬تعديل امللفات‪ ،‬التعامل مع امللفات النصية‪.‬‬
‫• املؤشرات ‪ Pointers‬والقوائم املرتبطة ‪:Linked Lists‬‬
‫التعريف واألمهية‪ ،‬الت صريح باملة شر‪ ،‬عملية التا شري‪ ،‬فكرة املتغري املرجعي‪ ،‬اإل سناد يف املة شرات‪،‬‬
‫إنشاء وحذف املتغري املرجعي‪،‬‬
‫القوائم املرتبطة التعريف واألمهية‪ ،‬أنواع القوائم املرتبطة‪ ،‬إنشاء قائمة وتدمريها‪ ،‬مثال تطبيقي‬
‫على القوائم املرتبطة‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات الربجمة بلغة سي وسي‪++‬‬
‫‪:Fundamentals of Programming in C/C++‬‬
‫مدخل أساسي للربجمة كائنية التوجه ‪OOP‬‬
‫(‪)2005‬‬
‫اجلزء األول‪ :‬الربجمة بلغة سي‪:‬‬ ‫•‬
‫• أساسيات الربجمة – مقدمة عن لغات الربجمة‪:‬‬
‫احلاســــب ا ك ومكوناته‪ ،‬لغات الربجمة (لغة ا لة‪ ،‬لغة‬
‫التجميع‪ ،‬الل غات عال ية املســـتوى)‪ ،‬ن بذة تارخي ية عن ل غة‬
‫الربجمة سي‪ ،‬الربجمة اهليكلية‪.‬‬
‫• مراحل عمل برنامج بلغة سي‪:‬‬
‫كتابة الربنامج يف املحرر‪ ،‬املعاجلة القواعدية – مرحلة ما‬
‫ق بل التر مجة‪ ،‬مرح لة التر مجة‪ ،‬مرح لة الربط‪ ،‬مرح لة‬
‫التحميل والتنفيذ‪ ،‬مقدمة يف الربجمة بلغة ســـي ‪ -‬الربنامج‬
‫األول ‪ ..‬طباعة مجلة‪.‬‬
‫املكونات الرئيسية (اهليكل األساسي) يف برامج لغة سي‪:‬‬ ‫•‬
‫اجلزء التعريفي (جزء موجهات املترجم‪ ،‬موجهات ال ضم (املوجه ‪ include<>#‬وامللفات الرأ سية)‪،‬‬
‫موج هات التعريف (املو جه ‪ ،)define const1 value#‬جزء اإلعالن)‪ ،‬اجلزء الوظيفي (التوابع‬
‫(الدوال) واإلجراءات‪ ،‬العبارات ‪ statements‬واستخدام الرمز (;))‪ ،‬التمييز بني األحرف الصغرية‬
‫والكبرية‪ ،‬التعليقات ع* … *ع – كيف توضع يف الربنامج‪ ،‬تنسيق الربنامج‪.‬‬
‫• املتغريات (املتحوالت) ‪:Variables‬‬
‫شروط التسمية‪ ،‬طرق اإلعالن (التعريف) عن متغري‪ ،‬تعريف جمموعة متغريات معًا‪ ،‬موضع اإلعالن‬
‫عن املتغريات‪ ،‬أنواع البيانات القياســـية (املتغريات الصـــحيحة (‪ ،)int, long‬املتغريات احلقيقية‬
‫(‪ ،)float, double‬املتغريات احلرفية (‪ ،)char‬بناء متغريات ســـلســـلة حرفية ‪ ،)string‬الثوابت‬
‫(الرقمية – احلرفية)‪ ،‬طرق إسناد (تعيني) القيم للمتغريات‪ ،‬اإلسناد عند اإلعالن‪.‬‬
‫• العمليات على املتغريات‪:‬‬
‫العمل يات احلســــاب ية (‪ * - +‬ع ‪ – )%‬بر نامج ‪ ..‬مجع عددين‪ ،‬أولو يات العمل يات احلســــاب ية‬
‫(()‪*،‬ع;‪ ،)-;+،%‬عمليات اإل سناد املخت صرة (‪،=*،=-،=+‬ع=‪ ،)=%،‬عمليات الزيادة واإلنقاص بواحد‬
‫(‪.)x++, ++x, x--, --x‬‬
‫• الشاشة ولوحة املفاتيح‪:‬‬
‫ال‪ :‬الكتابة على الشاشة‪ :‬إرفاق مكتبة اإلدخال واإلخراج القياسية ‪ ،stdio.h‬كتابة حرف واحد‬ ‫أو ً‬
‫على الشــاشــة ‪ ،putchar, putchar‬كتابة جمموعة من األحرف ‪ ،puts‬اإلجراء ‪( printf‬األحرف‬
‫وري املطبوعة (\‪ ،)\\ ”\ n \t \b‬طباعة حمتويات متغريات‪ ،‬اســـتخدام أحرف البدل (‪i; %d, %‬‬
‫‪ ،)%c, %s, %f, %x, %o‬التحكم يف عرض النتائج‪ d - %-5s05% - d5% :‬ناحية اليسار)‪.‬‬
‫ثانيًا‪ :‬القراءة من لوحة املفاتيح‪ :‬قراءة حرف واحد ‪ ،getchar‬اســـتخدام ‪ getch ،getche‬من‬
‫املكت بة ‪ ،conio.h‬قراءة جممو عة من األحرف ‪ ،gets‬اســـت خدام ‪ ،strlen‬اإلجراء ‪( scanf‬نوع‬
‫البيانات – األحرف البديلة‪ ،‬مكان ختزين املدخالت‪ ،‬اســـتخدام الرمز & والعناوين يف الذاكرة‪،‬‬
‫اســتخدام إجراء ‪ scanf‬مع الســالســل واملســافات – أمساء الســالســل عناوين يف الذاكرة‪ ،‬إفران‬
‫الذاكرة الوسيطة اخلاصة بلوحة املفاتيح )‪ ،fflush(stdin‬القراءة املتعددة باستخدام ‪.scanf‬‬
‫بىن التحكم واختاذ القرارات (احللقات والشروط)‪:‬‬ ‫•‬
‫اخلوارزميات – لغة اخلوارزميات‪ ،‬بىن التحكم – التنفيذ أو البنية التســـلســـلية – نقل التحكم‪،‬‬
‫عمليات اختاذ القرار‪ :‬عمليات املساواة واملقارنة (==‪،)=> ،> ،=< ،< ،=! ،‬‬
‫البنية الشـرطية (‪ ،)if‬البنية الشـرطية (‪ ،)if else‬تداخل البىن الشـرطية (‪ – )if else‬اسـتخدام‬
‫البنية (‪،)else if‬‬
‫بنية الشرط املتعدد )‪،(switch) – (switch/default‬‬
‫العامل الشرطي‪ ،‬املعامالت املنطقية (&&‪ – )! ،|| ،‬العمليات املنطقية‪،‬‬
‫البنية التكرارية (‪ ،)for‬البنية التكرارية (‪ ،)while‬البنية التكرارية (‪،)do/while‬‬
‫التعليمتان ‪،break, continue‬‬
‫أسلوب الربجمة املهيكلة – قواعد تشكيل برامج مهيكلة‪،‬‬
‫التعليمة املحظورة ‪ ،goto‬نوع البيانات التعدادية (‪.)Enumerated Data Type‬‬
‫• التوابع (الدول) ‪:Functions‬‬
‫التوابع اجلاهزة – مكتبة التوابع الرياضـــية (‪ ،)math.h‬املكتبات املعيارية وامللفات الرأســـية‪،‬‬
‫التصريح عن التوابع‪ ،‬تعريف التوابع – دمج الت صريح والتعريف‪ ،‬استدعاء التوابع‪ ،‬مترير املعامالت‬
‫(‪ – Arguments‬الوســطاء) إىل التوابع (التمرير بواســطة الثوابت‪ ،‬التمرير بواســطة املتغريات)‪،‬‬
‫احلصـــول على قيم مرجع ية من التوابع – األمر (‪ ،)return‬امل عامالت املرجع ية ( ‪Reference‬‬
‫‪ ،)Arguments‬املتغريات و أصــناف (صــفوف) التخزين – عمر املتغريات – جمال الرؤية (املتغريات‬
‫اخلارجية‪ ،‬املتغريات ا لية‪ ،‬املتغريات الساكنة)‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫• املصفوفات ‪:Arrays‬‬
‫املصــفوفات – التصــريح عن املصــفوفات‪ ،‬إدخال ع إخراج قيم لعناصــر املصــفوفة‪ ،‬هتيئة املصــفوفة‪،‬‬
‫املصـــفوفات ثنائية البعد – املصـــفوفات متعددة األبعاد‪ ،‬هتيئة مصـــفوفة ثنائية البعد‪ ،‬مترير‬
‫املصفوفات كمعامالت للتوابع‪.‬‬
‫• سالسل احلروف ‪:Strings‬‬
‫ال سال سل احلرفية – متغريات ال سال سل احلرفية‪ ،‬ثوابت ال سال سل احلرفية‪ ،‬التعامل مع الفراوات‪،‬‬
‫التعامل مع األســطر املتعددة‪ ،‬مصــفوفة من الســالســل احلرفية‪ ،‬توابع مكتبة التعامل مع ســالســل‬
‫احلروف ((‪( )string.h‬توابع نس السالسل (‪ ،)strcpy, strncpy‬توابع إضافة السالسل ( ‪strcat,‬‬
‫‪ ،)strncat‬توابع مقارنة السالسل )‪.)(strcmp, strncmp‬‬
‫• املؤشرات ‪:Pointers‬‬
‫العناوين واملة شرات – العنونة املبا شرة ووري املبا شرة للمتغريات‪ ،‬الت صريح عن املة شرات كمتغريات‬
‫وإعطاءها قيمًا ابتدائية‪ ،‬عمليات التاشـــري‪ ،‬الوصـــول إىل املتغري املشـــار إليه‪ ،‬اســـتدعاء التوابع‬
‫بالعنوان‪ ،‬تعابري املةشــرات واملةشــر احلســايب‪ ،‬املصــفوفات واملةشــرات ‪ -‬العالقات بني املةشــرات‬
‫وامل صفوفات (مترير امل صفوفات‪ ،‬ترتيب عنا صر م صفوفة‪ ،‬املة شر إىل سال سل حرفية‪ ،‬ال سال سل‬
‫احلرفية كمعامالت للتوابع)‪.‬‬
‫• اجلزء الثاين‪ :‬الربجمة بلغة سي‪:++‬‬
‫• مقدمة عن الربجمة بلغة سي‪:++‬‬
‫نبذة تارخيية عن لغة الربجمة ســـي ‪ ،++‬مقدمة عن الربجمة ورضـــية التوجه ‪ ،OOP‬املكونات‬
‫األساسية لبيئة عمل سي ‪ ++‬قياسية‪ ،‬مقدمة يف الربجمة‬
‫بلغة ســـي ‪ - ++‬الربنامج األول ‪ ..‬طباعة مجلة‪،‬‬
‫التعليقات با ستخدام عع‪ ،‬اإلخراج بوا سطة‬
‫التابع <<‪ ،cout‬اإلدخال بواســـطة‬
‫التابع >>‪ ،cin‬سال سل اهلروب (\ ‪n‬‬
‫‪ ،)”\ \\ \t \r \a‬املةثرات ( ‪endl,‬‬
‫‪ )setw‬مــن ‪ ،iomanip.h‬الــعــمــلــيــة‬
‫األحادية لتحديد جمال الرؤية (‪ )::‬النطاق‪.‬‬
‫• أفكار متقدمة‪:‬‬
‫العود ية ‪( Recursion‬االســـ تد عاء ا لذايت) يف التوابع‪،‬‬
‫التوابع الســـطر ية‪ ،‬امل عامالت االفتراضـــ ية‪ ،‬التحم يل الزا ئد‬
‫للتوابع‪ ،‬القوالب – قوالب التوابع‪ ،‬اســتخدام الواصــف (‪ )const‬عند‬
‫مع معامالت التوابع‪ ،‬مصـــفوفات الفرز (طريقة الفرز الفقاعي)‪ ،‬مصـــفوفات البحث (البحث اخلطي‪،‬‬
‫البحث الثنائي)‪ ،‬استخدام الواصف ‪ const‬مع املةشرات‪ ،‬املةشرات على التوابع‪.‬‬
‫أسس ومبادئ الربجمة الكائنية التوجه‪:‬‬ ‫•‬
‫• مفاهيم أساسية يف الربجمة الكائنية ‪:Object-Oriented Programming-OOP‬‬
‫التجريد‪ ،‬الصف‪ ،‬الكائن‪ ،‬اخلصائص‪ ،‬الوظائف‪ ،‬التغليف‪ ،‬إخفاء البيانات‪ ،‬الوراثة‪ ،‬تعدد األوجه‪.‬‬
‫• الصف ‪:Class‬‬
‫إنشاء الصفوف‪ ،‬تعريف خصائص الصف ووظائفه‪ ،‬الوصول ملكونات الصفوف‪ ،‬حمددات الوصول إىل‬
‫املكو نات (ال عام ‪ public‬وا خلاص ‪ ،)private‬و ظائف التشـــي يد ‪ ،constructor‬و ظائف ال تدمري‬
‫‪ ،destructor‬العبارة ‪ ،this‬وظائف اإلســـناد ‪ set‬واإلرجاع ‪ ،get‬الوظائف الســـكونية ‪ static‬يف‬
‫الصفوف‪ ،‬الوظائف الصديقة ‪.friend‬‬
‫• الوراثة ‪:inheritance‬‬
‫املفهوم واألمهية‪ ،‬توريث الصفوف‪ ،‬حمدد الوصول املحمي ‪ ،protected‬الوراثة والتشييد والتدمري‪.‬‬

‫‪Fundamentals of Programming in Java - Ahmad Jabr‬‬


‫أساسيات نظام التشغيل لينكس ‪Linux‬‬
‫(‪)2005‬‬
‫• التعرف على نظام لينكس ‪:Linux‬‬
‫ماهيته‪ ،‬نظرة تارخيية‪ ،‬أشـــهر التوزيعات ‪،Distribution‬‬
‫طرق االختيار بني التوزيعات‪.‬‬
‫• جتهيز النظام للعمل على جهازك‪:‬‬
‫كيفية احلصــول على التوزيعات‪ ،‬التطبيق على نظام ردهات‬
‫لينكس ‪ RedHat Linux‬اإلصــــدار األ حدث ‪ ،9‬ون ظام‬
‫ديبيــان ‪ Debian‬اإلصـــــدار ‪ ،3.0R3‬وبعض التوزيعــات‬
‫الشهرية‪.‬‬
‫• التعامل مع سطر األوامر‪:‬‬
‫معــاجلــة األوامر‪ ،‬أهم األوامر‪ ،‬إدارة امللفــات واملجلــدات‪،‬‬
‫التعامل مع امللفات النصية‪ ،‬احلصول على املساعدة‪.‬‬
‫التعامل مع البيئة الرسومية ‪:KDE‬‬ ‫•‬
‫التعامل مع النوافذ‪ ،‬ختصيص البيئة الرسومية وإدارهتا‪.‬‬
‫• إدارة امللفات واملجلدات واألقراص‪:‬‬
‫نظام امللفات يف لينكس‪ ،‬التنقل فيه‪ ،‬تنظيم امللفات واملجلدات وإدارهتا‪ ،‬إدارة األقراص والوصـــول‬
‫إليها والتعامل معها‪.‬‬
‫• التعامل مع التطبيقات‪:‬‬
‫الوصــــول إىل التطبيقــات وتشــــغيلهــا‪،‬‬
‫التطبي قات املت عددة‪ ،‬أســـطح املك تب‪،‬‬
‫إدارة التطبي قات وتثبيت ها‪ ،‬الت عا مل‬
‫مع أشهر التطبيقات املتوفرة‪.‬‬
‫• التعامل مع الشبكات‪:‬‬
‫إعداد االتصــال بالشــبكة‪ ،‬اســتعراض شــبكة‬
‫الويب‪ ،‬الوصول للربيد اإللكتروين‪.‬‬

You might also like