الكلية الجامعية للعلوم التطبيقيةبرمجة 1
English
المحاضرة 1 · 100 دقيقة

مقدمة في البرمجة بلغة جافا

من الآلة الحاسبة إلى أول برنامج تكتبه وتشغّله بنفسك

إعداد: م. بدر الدين محمد الحليمي

في نهاية هذه المحاضرة ستكون قادرًا على

  1. تشرح معنى البرمجة بمثال من حياتك اليومية
  2. تحدد البيانات والمعالجة والمخرجات في برنامج بسيط
  3. تفرّق بين Java وJDK وNetBeans، وتصف رحلة البرنامج من ملف .java إلى JVM
  4. تنشئ مشروعًا وتكتب أمر طباعة وتشغّله
  5. تتتبّع برنامجًا سطرًا سطرًا باستخدام المتتبّع في هذا الموقع
  6. تقرأ رسالة خطأ بسيطة وتصححها
محتويات المحاضرة
  1. البرمجة موجودة في كل تطبيق نستخدمه
  2. الآلة الحاسبة تأخذ بيانات وتعالجها وتعرض نتيجة
  3. الحاسوب ينفّذ ما نكتبه حرفيًا، ولا يخمّن قصدنا
  4. تعلّم جافا يشبه تعلّم لغة جديدة
  5. المتغير اسم يحتفظ بقيمة يستخدمها البرنامج
  6. ثلاثة أطراف تعمل معًا عند تشغيل أي برنامج
  7. ثلاثة مصطلحات نحتاجها قبل أن نبدأ
  8. يمر البرنامج بأربع محطات: من .java إلى javac إلى .class إلى JVM
  9. إنشاء أول مشروع في NetBeans 8 بخمس خطوات، وثلاث مناطق فقط في الشاشة
  10. أول برنامج: سطر واحد يطبع رسالة على الشاشة
  11. الزر «تتبّع سطرًا سطرًا» يريك البرنامج وهو ينفّذ كل سطر
  12. علامات التنصيص تغيّر معنى ما نكتبه
  13. رسالة الخطأ تدلّنا على مكان التصحيح
  14. طريقة العمل في كل تمرين، واختصارات توفّر الوقت
  15. تمرين ختامي: برنامج يطبع ثلاثة أسطر
  16. أسئلة المراجعة
الجزء الأول: ما البرمجة؟

البرمجة موجودة في كل تطبيق نستخدمه

تطبيقات الهاتف

الرسائل، والخرائط، والآلة الحاسبة في هاتفك.

برامج سطح المكتب

محرر النصوص، والمتصفح، والآلة الحاسبة في Windows.

مواقع الويب

محركات البحث، والمنصات التعليمية، والمتاجر الإلكترونية.

كل تطبيق منها مجموعة تعليمات كتبها مبرمجون بإحدى لغات البرمجة. البرمجة هي كتابة تعليمات مرتبة يفهمها الحاسوب، لحل مشكلة أو تنفيذ مهمة. واليوم نكتب أول تعليماتنا بلغة جافا.

الكلمةمعناها
تعليماتأوامر محددة: اجمع، اطبع، احفظ.
مرتبةالحاسوب ينفّذها بالتسلسل، سطرًا بعد سطر.
لهدفلكل برنامج مهمة واضحة يؤديها.

الآلة الحاسبة تأخذ بيانات وتعالجها وتعرض نتيجة

1. البيانات (Input)

2 و3. ما البيانات التي أعطيناها للبرنامج؟

2. المعالجة (Processing)

الجمع. ما العملية التي طلبناها؟

3. المخرجات (Output)

5. ما النتيجة التي عرضها؟

بيانات، ثم معالجة، ثم مخرجات: نمط يتكرر في معظم البرامج التي ستكتبها.

الآلة الحاسبة في سطر واحد

اضغط «تشغيل». ثم غيّر العددين إلى 7 و8 وشغّل مرة أخرى. أين البيانات هنا؟ وأين المعالجة؟ وأين المخرجات؟

public class Calculator {
    public static void main(String[] args) {
        System.out.println(2 + 3);
    }
}
الناتج
5

برنامج يأخذ درجات طالب، ويحسب معدله، ثم يعرضه. ما «المعالجة» هنا؟

الحاسوب ينفّذ ما نكتبه حرفيًا، ولا يخمّن قصدنا

تعليمة ناقصة: «اكتب اسمي»

ما الاسم بالضبط؟ في أي برنامج نكتبه؟ أين نضعه داخل الصفحة؟

تعليمات واضحة ومرتبة

1. افتح برنامج Notepad. 2. انقر داخل الصفحة. 3. اكتب الاسم: Ahmed. 4. احفظ الملف باسم name.

وضوح التعليمات وترتيبها جزء أساسي من البرمجة. توقّع ناتج البرنامجين التاليين قبل كشف الإجابة.

في النص خطأ إملائي. هل يصححه الحاسوب؟

public class Literal {
    public static void main(String[] args) {
        System.out.println("Helo, Jaba!");
    }
}
أظهر الناتج
الناتج
Helo, Jaba!

لماذا؟ الحاسوب لا يفهم قصدك، بل يطبع النص كما كتبته تمامًا. وهذا ليس خطأ عند المترجم، لأن النص يمكن أن يكون أي شيء.

التعليمات مرتبة بغير ترتيب الحروف. ماذا يطبع البرنامج؟

public class Order {
    public static void main(String[] args) {
        System.out.println("C");
        System.out.println("A");
        System.out.println("B");
    }
}
أظهر الناتج
الناتج
C
A
B

لماذا؟ ينفّذ الحاسوب الأسطر بالترتيب الذي كتبناه من الأعلى إلى الأسفل، ولا يعيد ترتيبها. وكل println ينتقل بعدها إلى سطر جديد.

تعلّم جافا يشبه تعلّم لغة جديدة

العنصرفي اللغة البشريةفي Java
المفرداتكلمات مثل: كتاب، يكتب، الطالبكلمات محجوزة مثل: class وpublic وint
القواعدترتيب الكلمات وعلامات الترقيمالأقواس { } والفاصلة المنقوطة ;
الجملة«يكتب الطالب الدرس».System.out.println("Hi");

تعلّم جافا يعرّفك بمفاهيم مشتركة بين لغات كثيرة، مثل المتغيرات والشروط والتكرار. لكن لكل لغة قواعدها وخصائصها؛ فتعلّم جافا لا يعني إتقان كل اللغات.

أي عنصر مما يلي يقابل «علامات الترقيم» في اللغة البشرية؟

المتغير اسم يحتفظ بقيمة يستخدمها البرنامج

firstNumber2int
secondNumber3int
  • البرنامج يحتاج أحيانًا إلى الاحتفاظ بقيم أثناء عمله.
  • العدد 2 ليس متغيرًا؛ المتغير اسم يحتفظ به.
  • يمكن تغيير القيمة لاحقًا، ويبقى الاسم كما هو.
  • المتغيرات لا تقتصر على الأعداد.
الجزء من int firstNumber = 2;معناه
intنوع البيانات: عدد صحيح
firstNumberاسم المتغير
2القيمة المخزنة فيه

الآلة الحاسبة بمتغيرين

هذه نظرة أولى فقط؛ سنشرح المتغيرات بالتفصيل في محاضرة لاحقة. اضغط «تشغيل»، ثم غيّر القيمتين وشغّل مرة أخرى.

public class TwoNumbers {
    public static void main(String[] args) {
        int firstNumber = 2;
        int secondNumber = 3;
        System.out.println(firstNumber + secondNumber);
    }
}
الناتج
5

ثلاثة أطراف تعمل معًا عند تشغيل أي برنامج

الطرفدوره
البرنامج (Program)يحدد المهمة المطلوبة، وكيف نتعامل مع البيانات والنتائج.
نظام التشغيل (Operating System)يدير موارد الجهاز، ويقدم خدمات للبرامج مثل الملفات والإدخال والإخراج.
المعالج (CPU)ينفّذ تعليمات البرنامج، ومنها العمليات الحسابية والمنطقية.
أمثلة على أنظمة التشغيل

Windows، وmacOS لأجهزة Mac، وiOS لهواتف iPhone، وAndroid لمعظم الهواتف الأخرى.

مصطلح سنراه لاحقًا: Method

دالة: مجموعة تعليمات لها اسم وتؤدي مهمة. أما الجمع نفسه فنكتبه مباشرة بالرمز +.

على هاتفك تطبيق الخرائط ونظام Android. ماذا يمثّل Android؟

الجزء الثاني: بيئة العمل وأول برنامج

ثلاثة مصطلحات نحتاجها قبل أن نبدأ

أين نكتب البرنامج؟ وكيف نشغّله في NetBeans 8؟ نبدأ بالتفريق بين ثلاثة أسماء تتكرر كثيرًا.

Java

اللغة التي نكتب بها التعليمات: كلماتها ورموزها وقواعدها.

Java 8
JDK

أدوات تطوير برامج جافا، ومنها المترجم الذي يحوّل الكود إلى برنامج قابل للتشغيل.

JDK 8u111
NetBeans

بيئة تطوير متكاملة: نكتب فيها الكود ونشغّله ونكتشف أخطاءه.

NetBeans IDE 8.2
أين نكتب الكود؟الحكم
محرر نصوص بسيطممكن، لكن بلا أدوات مساعدة
NetBeansالأنسب: كتابة وتشغيل وكشف أخطاء
Microsoft Wordغير مناسب لكتابة الكود

أي الثلاثة يحتوي على المترجم؟

يمر البرنامج بأربع محطات: من .java إلى javac إلى .class إلى JVM

  1. ملف المصدر: FirstProgram.javaهنا نكتب التعليمات بلغة Java، وهو نص يقرؤه البشر.
  2. المترجم: javacيفحص قواعد الكود. فإذا وجد خطأ توقف وعرض رسالة، وإلا ترجم الكود.
  3. الكود الوسيط: FirstProgram.classينتج المترجم ملفًا فيه bytecode، وهي تعليمات تفهمها آلة جافا الافتراضية.
  4. آلة جافا الافتراضية: JVMتنفّذ JVM الكود الوسيط على جهازك، بمساعدة نظام التشغيل والمعالج.

راقب المحطتين

اضغط «تشغيل»، وستظهر كلمة «ترجمة…» لحظة قبل أن ينفّذ JVM البرنامج. ثم احذف ; وشغّل مرة أخرى: توقف كل شيء عند المترجم، ولم يعمل JVM إطلاقًا.

public class Path {
    public static void main(String[] args) {
        System.out.println("Compiled, then run by the JVM");
    }
}
الناتج
Compiled, then run by the JVM

ما الذي ينتجه javac من ملف FirstProgram.java الصحيح؟

إنشاء أول مشروع في NetBeans 8 بخمس خطوات، وثلاث مناطق فقط في الشاشة

  1. افتح نافذة المشروعFile ثم New Project، أو Ctrl+Shift+N.
  2. اختر نوع المشروعJava ثم Java Application، ثم Next.
  3. سمِّ المشروعFirstProgram، وأبقِ الخيار Create Main Class مفعّلًا، ثم Finish.
  4. افتح الصنف الرئيسيFirstProgram.java يُفتح تلقائيًا، وفيه main.
  5. شغّل المشروعRun Project، أو F6، أو زر التشغيل الأخضر.
المنطقةماذا نفعل فيها؟
Projectsملفات مشروعك، ومنها ملف الكود.
محرر الكودهنا نكتب التعليمات ونعدلها.
Outputهنا يظهر الناتج، وتظهر رسائل الخطأ.
Output - FirstProgram (run)
run:
Hello, Java!
BUILD SUCCESSFUL (total time: 0 seconds)
نافذة Output في NetBeans. السطران run: وBUILD SUCCESSFUL من NetBeans نفسه، وليسا من برنامجك.

أول برنامج: سطر واحد يطبع رسالة على الشاشة

  1. اكتب السطر داخل قوسي main
  2. توقّع الناتج قبل التشغيل
  3. شغّلفي المختبر اضغط F6، وهنا زر «تشغيل» أو Ctrl+Enter.
  4. غيّر الرسالة وشغّل مرة أخرى
package firstprogram;

public class FirstProgram {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
الناتج
Hello, Java!
الجزءمعناه للمبتدئ
package firstprogram;الحزمة التي يوجد فيها الصنف (تشبه المجلد)
public class FirstProgramتعريف الصنف الذي يحتوي كود مثالنا
mainنقطة بدء تنفيذ البرنامج
{ }بداية كتلة من التعليمات ونهايتها
System.out.printlnتطبع قيمة ثم تنتقل إلى سطر جديد
"Hello, Java!"نص نريد طباعته كما هو
;تنهي التعليمة

غيّر الرسالة

عدّل البرنامج ليطبع السطر Welcome to Java تمامًا كما هو.

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
الناتج المتوقع
Welcome to Java
تلميح 1

غيّر النص الذي بين علامتي التنصيص فقط، ولا تحذف العلامتين.

الحل
public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome to Java");
    }
}

الزر «تتبّع سطرًا سطرًا» يريك البرنامج وهو ينفّذ كل سطر

في هذا الموقع متتبّع (debugger) مع كل برنامج: يوقف البرنامج قبل كل سطر لتراه يعمل خطوة خطوة. وهو أفضل طريقة لفهم برنامج لا يفعل ما توقعته.

  1. اضغط «تتبّع سطرًا سطرًا»يتوقف البرنامج، ويتلوّن السطر الذي سيُنفَّذ بعد لحظة. لم يُنفَّذ بعد.
  2. اضغط «السطر التالي» أو F8يُنفَّذ السطر. انظر إلى الناتج أسفل المحرر، ثم توقّع ما سيحدث بعدها.
  3. اضغط «متابعة» أو F9يكمل البرنامج بقية الأسطر دون توقف.

جرّب المتتبّع

اضغط «تتبّع سطرًا سطرًا»، واضغط «السطر التالي» ثلاث مرات. متى يظهر كل سطر في الناتج؟ ثم جرّب الزر نفسه في مختبر المتغيرين أعلاه، وشاهد الصناديق تظهر وتمتلئ.

public class Trace {
    public static void main(String[] args) {
        System.out.println("Line one");
        System.out.println("Line two");
        System.out.println(2 + 3);
    }
}
الناتج
Line one
Line two
5

علامات التنصيص تغيّر معنى ما نكتبه

تعبير بلا علامات تنصيص. ماذا يطبع؟

public class NoQuotes {
    public static void main(String[] args) {
        System.out.println(2 + 3);
    }
}
أظهر الناتج
الناتج
5

لماذا؟ تعبير حسابي: يُحسب أولًا، ثم يُطبع الناتج.

الآن داخل علامات تنصيص. ماذا يطبع؟

public class WithQuotes {
    public static void main(String[] args) {
        System.out.println("2 + 3");
    }
}
أظهر الناتج
الناتج
2 + 3

لماذا؟ نص: يُطبع حرفيًا كما كتبناه، أما علامتا التنصيص نفسهما فلا تُطبعان.

اكتب السطرين معًا

غيّر الأعداد في السطرين. أي السطرين تغيّر ناتجه حسابيًا؟ ثم جرّب 2 * 3 في السطر الأول.

public class Quotes {
    public static void main(String[] args) {
        System.out.println(2 + 3);
        System.out.println("2 + 3");
    }
}
الناتج
5
2 + 3

اطبع العملية ثم ناتجها

اطبع السطر 4 + 6 كنص، ثم اطبع في السطر التالي ناتج 4 + 6 محسوبًا.

public class SumTwice {
    public static void main(String[] args) {
        // Write two println statements here

    }
}
الناتج المتوقع
4 + 6
10
تلميح 1

أحد السطرين يحتاج إلى علامتي تنصيص، والآخر لا يحتاج إليهما.

الحل
public class SumTwice {
    public static void main(String[] args) {
        System.out.println("4 + 6");
        System.out.println(4 + 6);
    }
}

رسالة الخطأ تدلّنا على مكان التصحيح

الخطأ معلومة تساعدنا على التصحيح، وظهور رسائل الخطأ أثناء التعلّم أمر طبيعي. في NetBeans تظهر علامة حمراء بجانب رقم السطر، وخط أحمر تحت موضع الخطأ. قف بالمؤشر على العلامة لتقرأ الرسالة.

تجربة مقصودة: الفاصلة المنقوطة

حذفنا الفاصلة المنقوطة من نهاية سطر الطباعة. اقرأ الرسالة، ثم أعد الرمز وشغّل البرنامج من جديد.

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome")
    }
}
رسالة المترجم';' expected
أظهر التصحيح
public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome");
    }
}
الناتج
Welcome

لماذا؟ السطر لا ينتهي بالرمز ;، لذلك لا يستطيع المترجم فهم نهاية التعليمة، فيتوقف ولا يُنتج ملف .class.

خطأ شائع آخر: علامة التنصيص

نسينا إغلاق النص. أصلح السطر حتى يطبع البرنامج Welcome.

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome);
    }
}
رسالة المترجمunclosed string literal
أظهر التصحيح
public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome");
    }
}
الناتج
Welcome

لماذا؟ تبدأ علامة التنصيص الأولى نصًا، ويبحث المترجم عن علامة تغلقه في السطر نفسه فلا يجدها.

طريقة العمل في كل تمرين، واختصارات توفّر الوقت

توقّع

ماذا سيُطبع؟

شغّل

اضغط F6.

فسّر

لماذا ظهر هذا؟

عدّل

غيّر وجرّب ثانية.

طبّق الخطوات الأربع

توقّع الأسطر الثلاثة، ثم شغّل، وفسّر الفرق بينها. ثم عدّل عددًا واحدًا وتوقّع من جديد.

public class Routine {
    public static void main(String[] args) {
        System.out.println("10 + 5");
        System.out.println(10 + 5);
        System.out.println("Done");
    }
}
الناتج
10 + 5
15
Done
الاختصارماذا يفعل في NetBeans 8
Ctrl+Shift+Nمشروع جديد
sout + Tabكتابة أمر الطباعة تلقائيًا
F6تشغيل المشروع
Shift+F6تشغيل الملف المفتوح
Ctrl+Sحفظ الملف
Alt+Shift+Fترتيب مسافات الكود
  • للجدد على لوحة المفاتيح: حوّل لغة الكتابة إلى الإنجليزية قبل كتابة الكود (Alt+Shift).
  • الأقواس الهلالية ( ): Shift مع الرقمين 9 و0.
  • الأقواس المعقوفة { }: Shift مع المفتاحين المجاورين لحرف P.
  • علامة التنصيص ": Shift مع المفتاح المجاور لمفتاح الفاصلة المنقوطة.
  • الفاصلة المنقوطة ;: المفتاح المجاور لحرف L.

تمرين ختامي: برنامج يطبع ثلاثة أسطر

ثلاثة أسطر

اكتب برنامجًا يطبع: الاسم Ahmed، ثم العبارة My first Java program، ثم ناتج العملية 10 + 5.

public class FirstProgram {
    public static void main(String[] args) {
        // Write your three println statements here

    }
}
الناتج المتوقع
Ahmed
My first Java program
15
تلميح 1

تحتاج إلى ثلاثة أوامر println داخل main.

تلميح 2

فكّر: هل تضع العملية الحسابية بين علامتي تنصيص؟

الحل
public class FirstProgram {
    public static void main(String[] args) {
        System.out.println("Ahmed");
        System.out.println("My first Java program");
        System.out.println(10 + 5);
    }
}

أسئلة المراجعة

أين كتبنا التعليمات داخل البرنامج؟

في أي نافذة ظهر الناتج في NetBeans؟

لماذا وضعنا النص بين علامتي تنصيص؟

ما الفرق في الناتج بين هذين السطرين؟

public class Review {
    public static void main(String[] args) {
        System.out.println("10 + 5");
        System.out.println(10 + 5);
    }
}
أظهر الناتج
الناتج
10 + 5
15

لماذا؟ السطر الأول نص يُطبع كما هو، والسطر الثاني تعبير يُحسب أولًا.

ما الترتيب الصحيح لرحلة البرنامج؟