في درس اليوم سنحتاج لكافة ما تعلمناه في الدروس السابقة، وسأقوم بتدريج الدرس من الأسهل فما فوق. قبل البدأ في الدرس والأمثلة، هناك جزء مهم لم يتم شرحه في المقدمات السابقة بشكل وافي، وهو المكتبات المرفقة مع Java. إذ أن Java تحتوي على عدة مكتبات من شأنها المساعدة على معالجة البرنامج وأيضًا التسهيل والاختصار على المستخدم. في Java لإدراج مكتبة معينة نستخدم الكلمة المفتاحية import تتليها مسافة ثم اسم المكتبة قبل اسم الكائن أو class. مثال:
import java.util.scanner;
في المثال هناك اسم احد المكاتب الجاهزة في Java، وقد قمت بتضمينها جزء معين منها وهو “scanner” الخاص بالمدخلات، ويمكننا تضمين كافة اجزاء مكتبة معينة بالطريقة الآتية:
import java.util.*;
أي نستبدل الجزء بـ”*” ويقصد بها التعميم على جميع افرع المكتبة المحددة
في الدرس الذي بعنوان البرنامج الأول باستخدام Java تم شرح طريقة كتابة برنامج بسيط بـJava، وأيضًا شُرحت بعض المعطيات في الكائن. وفي درس آخر بعنوان المتغيرات والمصفوفات في Java تم وضع شرح حول المتغيرات وأنواعها. انتهينا من المقدمة التجهيزية .
الجزء الاول لدرس المدخلات: الادخال لمتغير بسيط:
صنع برنامج لعمل عملية حسابية بين رقمين، اسم الكائن هو testinput، والمتغيرات a للرقم الأول، b للرقم الثاني، sum لناتج الجمع و input للمدخلات.
مثلما ذُكِر في المقدمة، سنقوم بتضمين إحدى مكتبات Java المرفقة مسبقًا إلى البرنامج للتعامل مع المدخلات فسنضع في السطر الأول أمر الاستيراد أو التضمين:
import java.util.*;
بعد امر الاستيراد سنقوم ببدأ بقية البرنامج بشكل اعتيادي ليكون كالتالي:
class testinput
{
public static void main(String[]args)
{
* لا تنسى إغلاق الأقواس بعد الانتهاء من البرنامج 🙂
الآن لنقم بتحديد انواع المتغيرات، ولنتفرض أنها اعداد صحيحة (integer) كالتالي:
int a, b, sum;
بما أنه هناك مكتبة خارجية، يجب التعريف بالمكتبة ضمن البرنامج؛ لذلك سنستخدم كلمة مفتاحية جديدة وهي new وتستخدم لإنشاء مثيل لكائن أو متغير ضمن كائن آخر ( ربما لم أكتبها بشكل صحيح – يمكن التأكد من الموسوعة الحرة).
الطريقة الصحيحة لتخصيص متغير لمكتبة التعامل مع المدخلات هو كتابة الكلمة المفتاحية Scanner يتلوها اسم المتغير ولنفترض انه input، وبعدها علامة “=” تتلوها الكلمة المفتاحية new وأخيرًا كتابة الدالة Scanner وبين قوسين كتابة System.in. (لاحظ أن كافة السطر ثوابت باستثناء المتغير input، أي يمكننا استبداله بأي اسم آخر). المثال:
Scanner input = new Scanner(System.in);
بعد ان قمنا بتهيئة مكتبة الادخال، لجلب المدخلات نستخدم الطريقة الآتية:
a = input.nextInt();
b = input.nextInt();
وهكذا بالترتيب. لاحظ استخدام “nextInt“؛ هي من ثوابت مكتبة الادخال، ولها انواع اخرى بنفس الوزن مثل:
input.nextDouble();
input.nextFloat();
input.nextChar();
النوع تحدده حسب نوع المتغير الذي يتم تخزين البيانات به
بعد أن قمنا بتخزين المدخلات في المتغيرات a و b سنقوم بتخزين حاصل جمعهما في المتغير sum كالتالي:
sum = a+b;
وببساطة نتابع بقية البرنامج:
System.out.print(a + " + " + b + " = " + sum);
}
}
شفرة البرنامج كاملة:
import java.util.*;
class testinput
{
public static void main(String[]args)
{
int a, b, sum;
Scanner input = new Scanner(System.in);
System.out.print("Enter 2 numbers: ");
a = input.nextInt();
b = input.nextInt();
sum = a+b;
System.out.print(a + " + " + b + " = " + sum);
}
}
صورة للناتج:
الجزء الثاني من الدرس: الادخال لمصفوفة:
الاختلاف بسيط عن الطريقة السابقة، لكن اكمالًا لتقصير في شرح درس المتغيرات السابق؛ سأقوم بتوضيح طريقة تعيين حجم المصفوفة بالشكل الصحيح. هنا سنقوم باستخدام الكلمة المفتاحية new مرة أخرى.
لعمل متغير باسم numbers بطول (2) أو مكانين للتخزين، نكتب الكلمة المفتاحية int[] (لاحظ الاقواس المربعة) ويتلوها اسم المتغير وهو numbers وعلامة “=” ثم نكتب الكلمة المفتاحية new وأخيرًا نكرر int لكن هذه المرة مع حجم المتغير بين القوسين المربعين [2]. المثال:
int[] numbers = new int[2];
أيضًا عن المثال في الجزء الأول، سنضطر لتغيير المتغيرات a و b إلى متغير المصفوفة ورقم الفهرسة (index) ليكون:
numbers[0] عوضًا عن a
numbers[1] عوضًا عن b
البرنامج كاملًا بعد التعديلات اللازمة:
import java.util.*;
class testinput
{
public static void main(String[]args)
{
int[] numbers = new int[2];
int sum;
Scanner input = new Scanner(System.in);
System.out.print("Enter 2 numbers: ");
numbers[0] = input.nextInt();
numbers[1] = input.nextInt();
sum = numbers[0]+numbers[1];
System.out.print(numbers[0] + " + " + numbers[1] + " = " + sum);
}
}
الجزء الثالث والأخير من الدرس: استخدام التكرار في الادخال ومعالجة المدخلات:
للتذكير: يمكن الوصول لدرس التكرارات عبر الدرس التكرار في C, Java و PHP.
بذكر التكرار والادخال، نستنج أن الطريقة الأفضل للمتغيرات هي استخدام المصفوفات، لأن المصفوفات تحتوي على رقم فهرس (index) ومن خلال التكرار يمكن التحكم بها. قبل البدأ في الادخال، للتوضيح سأضع مثالًا لكيفية عرض محتوى مصفوفة معينة باستخدام التكرار. المثال التالي مع الشرح:
class testloop
{
public static void main(String[]args)
{
// المصفوفة مع بعض القيم
int[] numbers = {10,33,21,53,22};
//تعريف متغير حساب التكرار
int i;
/* أمر التكرار
* لاحظ استخدام
* numbers.length
* الغرض من ذلك هو تحديد طول المصفوفة تلقائيًا دون الحاجة لكتابة الرقم يدويًا
* ويمكن كتابة الرقم ليكون حسب المثال السابق 5
* لاحظ أن شرط المصفوفة هو أن يكون متغير حساب التكرار أصغر من حجم المصفوفة
* لأن المصفوفة تبدأ من الصفر، بالتالي فإن آخر فهرس هو 4
*/
for(i=0;i<numbers.length;i++)
{
/* طباعة محتوى المصفوفة
* لاحظ ان متغير حساب التكرار هو بمكان رقم الفهرس
* حسب الأمثلة السابقة دون التكرار
*/
System.out.print(numbers[i] + "\n");
}
}
}
(يفضل نسخ الشفرة السابقة لمحرر Java لتظهر بشكل صحيح)
حان الوقت لتطبيق المثال السابق للعمليات الحسابية وباستخدام التكرار، الاختلاف ليس بالكثير، الشفرة كاملة:
import java.util.*;
class testinput
{
public static void main(String[]args)
{
// تحديد نوع المصفوفة وطولها
int[] numbers = new int[5];
// تحديد نوع متغير حساب التكرار ومتغير تخزين حاصل الجمع
int i,sum;
// تحديد قيمة متغير حساب المجموع بصفر لتجنب الأخطاء في بداية العملية الحسابية
sum = 0;
Scanner input = new Scanner(System.in);
System.out.print("Enter 5 numbers: ");
// أمر التكرار، لتخزين المدخلات فقط
for(i=0;i<numbers.length;i++)
{
numbers[i] = input.nextInt();
}
/* أمر التكرار للعمليات الحسابية
* لاحظ طريقة كتابة المتغير
* ويقصد به جمع القيم السابقة في متغير حساب المجموع مع محتوى المصفوفة
* ويمكن كتابته بطرق أخرى مثل:
* sum += numbers[i];
*/
for(i=0;i<numbers.length;i++)
{
sum = sum + numbers[i];
}
System.out.print("sum = " + sum);
}
}
صورة للناتج:
يمكن طرح الاستفسارات في التعليقات أسفل الدرس 🙂