الانتقال إلى المحتوى

استخدام الأدوات والأساليب

AP علوم الحاسوب A · الموضوع 1

درس فيديو لهذا الموضوع افتح صفحة الفيديو
15:05

استخدام الأدوات والأساليب

إليك برنامجان بلغة جافا. الأول ينقصه فاصلة منقوطة. الثاني يقسم سبعة على اثنين ويخزن الإجابة في عدد صحيح. المحرر يوقف الـ…

سرد باللغة الإنجليزية · ترجمة مدمجة بالإنجليزية + الصينية

1.1

مقدمة في الخوارزميات والبرمجة والمُترجمات

المنهج

الهدف التعليمي 1.1.A: تمثيل الأنماط والخوارزميات الموجودة في الحياة اليومية باستخدام اللغة المكتوبة أو المخططات.

  • 1.1.A.1 الخوارزميات تحدد عمليات خطوة بخطوة يجب اتباعها عند إنجاز مهمة أو حل مشكلة. يمكن تمثيل هذه الخوارزميات باستخدام اللغة المكتوبة أو المخططات.
  • 1.1.A.2 التسلسل يحدد ترتيبًا لإكمال خطوات العملية. تتم الخطوات في العملية واحدة تلو الأخرى.

الهدف التعليمي 1.1.B: شرح عملية ترجمة البرنامج وتنفيذه.

  • 1.1.B.1 يمكن كتابة الكود في أي محرر نصوص؛ ومع ذلك، غالبًا ما يُستخدم بيئة التطوير المدمجة (IDE) لكتابة البرامج لأنها توفر أدوات للمبرمج لكتابة وترجمة وتشغيل الكود.
  • 1.1.B.2 يقوم المترجم بفحص الكود بحثًا عن بعض الأخطاء. يجب إصلاح الأخطاء التي يمكن اكتشافها بواسطة المترجم قبل تشغيل البرنامج.

الهدف التعليمي 1.1.C: تحديد أنواع أخطاء البرمجة.

  • 1.1.C.1 خطأ بناء الجملة هو خطأ في البرنامج لا يتم فيه اتباع قواعد لغة البرمجة. يتم اكتشاف هذه الأخطاء بواسطة المترجم.
  • 1.1.C.2 خطأ المنطق هو خطأ في الخوارزمية أو البرنامج يسبب سلوكًا خاطئًا أو غير متوقع. يتم اكتشاف هذه الأخطاء من خلال اختبار البرنامج ببيانات محددة لمعرفة ما إذا كان ينتج النتيجة المتوقعة.
  • 1.1.C.3 خطأ وقت التشغيل هو خطأ في البرنامج يحدث أثناء تنفيذ البرنامج. عادةً ما يؤدي أوقات التشغيل إلى إنهاء البرنامج بشكل غير طبيعي.
  • 1.1.C.4 الاستثناء هو نوع من أخطاء وقت التشغيل يحدث نتيجة لخطأ غير متوقع لم يتم اكتشافه بواسطة المترجم. إنه يعطل التدفق الطبيعي لتنفيذ البرنامج.

المصدر: وصف دورة وامتحان College Board AP

أكواد برمجية على محطة عمل — يتم كتابة البرامج وتجميعها وتشغيلها كتعليمات دقيقة
الكود المصدري على محطة عمل – تُكتب البرامج وتُترجم وتُنفذ كتعليمات دقيقة

الخوارزمية هي إجراء محدود ومُرتب خطوة بخطوة يحل مشكلة. البرنامج يعبر عن الخوارزمية بلغة يمكن للحاسوب تشغيلها. لغة جافا مُترجمة: يقوم المُترجم بترجمة الكود المصدري إلى بايت كود، الذي تقوم آلة جافا الافتراضية (JVM) بتشغيله. يتم التقاط خطأ في الصياغة (انتهاك القواعد النحوية) بواسطة المُترجم؛ أما خطأ في المنطق (نتيجة خاطئة) فلا يُلتقط – يعمل البرنامج لكن بأداء غير صحيح.

المُجمِّع يُترجم البرنامج بأكمله دفعة واحدة؛ المُفسِّر يُنفذه سطراً بسطر
المُترجم يترجم البرنامج بأكمله دفعة واحدة؛ المُفسّر يشغله سطراً بسطر
عدة رقائق معالجة حاسوب مرئية من الأسفل
يتم ترجمة برنامج جافا الخاص بك إلى تعليمات يقوم معالج CPU مثل هذه فعلياً بتشغيلها
مفردات تدريب
English العربية
algorithm/ˈælɡərɪθəm/ خوارزمية
program/ˈprəʊɡræm/ برنامج
compiled/kəmˈpaɪld/ مُجمَّع
compiler/kəmˈpaɪlə/ مُترجم
syntax error/ˈsɪntæks ˈerə/ خطأ صياغة
logic error/ˈlɒdʒɪk ˈerə/ خطأ منطق
variable/ˈveərɪəbl/ حدث
1.2

المتغيرات وأنواع البيانات

المنهج

الهدف التعليمي 1.2.A: تحديد فئة أنواع البيانات الأنسب لمواصفة معينة.

  • 1.2.A.1 نوع البيانات هو مجموعة من القيم ومجموعة عمليات مقابلة على تلك القيم. يمكن تصنيف أنواع البيانات إما إلى أنواع أولية أو مرجعية.
  • 1.2.A.2 أنواع البيانات الأولية المستخدمة في هذا البرنامج تحدد مجموعة القيم والعمليات المقابلة عليها للأرقام وقيم المنطق.
  • 1.2.A.3 النوع المرجعي يستخدم لتعريف الكائنات التي ليست أنواعاً أولية.

الهدف التعليمي 1.2.B: تطوير كود لإعلان متغيرات لتخزين الأرقام وقيم المنطق.

  • 1.2.B.1 أنواع البيانات الأولية الثلاثة المستخدمة في هذا البرنامج هي int، double، وboolean. القيمة int هي عدد صحيح. القيمة double هي عدد حقيقي. القيمة boolean هي إما true أو false.
    • عبارة الاستبعاد: أنواع البيانات الأولية الخمسة الأخرى (long، short، byte، float، وchar) هي خارج نطاق برنامج امتحان علوم الحاسوب AP A.
  • 1.2.B.2 المتغير هو موقع تخزين يحمل قيمة، والتي يمكن أن تتغير أثناء تشغيل البرنامج. لكل متغير اسم ونوع بيانات مرتبط به. يحتوي المتغير من النوع الأولي على قيمة أولية من ذلك النوع.

المصدر: وصف دورة وامتحان College Board AP

المتغير هو صندوق مُسمّى يخزن قيمة ذات نوع ثابت. أنواع جافا الأساسية الأولية هي int (أعداد صحيحة)، double (عشرية)، وboolean (true/false). يُعلن باستخدام النوع أولاً:

الأنواع الأساسية للبيانات في لغة جافا، كل منها يخزن نوعاً مختلفاً من القيم
أنواع بيانات جافا الأساسية، كل منها يخزن نوعاً مختلفاً من القيم
int score = 90;
double price = 4.99;
boolean passed = true;
استكشف

استكشف كيف يحتفظ المتغير بقيمة واحدة في كل مرة

المتغير هو صندوق مُسمّى يخزن قيمة واحدة من نوع ثابت. مرّ عبر الأسطر ولاحظ كيف يأخذ كل صندوق قيمته؛ انتبه إلى أن إعادة تعيين score تستبدل الرقم القديم بدلاً من إنشاء صندوق جديد.

مفردات تدريب
English العربية
type/taɪp/ النص
primitive types/ˈprɪmɪtɪv taɪps/ الأنواع الأولية
expression/ekˈspreʃn/ تعبير
modulus/ˈmɒdjʊləs/ المقياس
escape sequence/eˈskeɪp ˈsiːkwəns/ تسلسل الهروب
assignment/əˈsaɪnmənt/ التعيين (assignment)
Casting/ˈkæstɪŋ/ التحويل
library/ˈlaɪbrəri/ مكتبة
abstraction/əbˈstrækʃn/ التجريد
Comments/ˈkɒments/ التعليقات
method signature/ˈmeθəd ˈsɪɡnɪtʃə/ توقيع الدالة
arguments/ˈɑːɡjuːmənts/ وسائط
class (static) method/klæs ˈmeθəd/ دالة (ستاتيكية) صفية
1.3

التعبيرات والإخراج

المنهج

الهدف التعليمي 1.3.A: تطوير كود لتوليد المخرجات وتحديد النتيجة التي سيتم عرضها.

  • 1.3.A.1 System.out.print وSystem.out.println يعرضان المعلومات على شاشة الكمبيوتر. System.out.println ينقل المؤشر إلى سطر جديد بعد عرض المعلومات، بينما System.out.print لا يفعل ذلك.

الهدف التعليمي 1.3.B: تطوير كود للاستخدام الثوابت النصية وتحديد نتيجة استخدام الثوابت النصية.

  • 1.3.B.1 الثابت هو تمثيل الكود لقيمة ثابتة.
  • 1.3.B.2 الثابت النصي هو تسلسل من الأحرف محاط بعلامات اقتباس مزدوجة.
  • 1.3.B.3 تسلسلات الهروب هي تسلسلات خاصة من الأحرف يمكن تضمينها في السلسلة النصية. تبدأ بـ \ ولها معنى خاص في جافا. تسلسلات الهروب المستخدمة في هذا البرنامج تشمل علامات الاقتباس المزدوجة \"، والخط المائل العكسي \\، وسطر جديد \n.

الهدف التعليمي 1.3.C: تطوير كود للتعبيرات الحسابية وتحديد نتيجة هذه التعبيرات.

  • 1.3.C.1 التعبيرات الحسابية، التي تتكون من قيم رقمية ومتغيرات وعوامل، تتضمن تعبيرات من نوع int وdouble.
  • 1.3.C.2 العوامل الحسابية تتكون من الجمع +، والطرح -، والضرب *، والقسمة /، والباقي %. عملية حسابية تستخدم قيمتين int ستُقيّم إلى قيمة int. عملية حسابية تستخدم قيمة double واحدة على الأقل ستُقيّم إلى قيمة double.
    • عبارة الاستبعاد: التعبيرات التي تؤدي إلى قيم double خاصة (مثل اللانهائيات و NaN) هي خارج نطاق برنامج امتحان علوم الحاسوب AP A.
  • 1.3.C.3 عند قسمة قيم رقمية تكون جميعها int، يكون الناتج هو الجزء الصحيح فقط من القسمة. وعند قسمة قيم رقمية تستخدم قيمة double واحدة على الأقل، يكون الناتج هو ناتج القسمة.
  • 1.3.C.4 يُستخدم مؤثر الباقي % لحساب الباقي عندما يتم قسمة عدد a على عدد آخر b.
    • عبارة الاستبعاد: استخدام قيم أقل من 0 لـ a واستخدام قيم أقل من أو تساوي 0 لـ b يقع خارج نطاق منهج امتحان علوم الحاسوب AP A.
  • 1.3.C.5 يمكن استخدام المؤثرات لبناء تعبيرات مركبة. في وقت التجميع، ترتبط القيم الرقمية بالمؤثرات وفقاً لتسلسل أولويات المؤثرات لتحديد كيفية تجميعها. يمكن استخدام الأقواس لتعديل تسلسل أولويات المؤثرات. للضرب والقسمة والباقي أولوية أعلى من الجمع والطرح. يتم تقييم المؤثرات ذات الأولوية المتساية من اليسار إلى اليمين.
  • 1.3.C.6 سيؤدي محاولة قسمة عدد صحيح على الصفر إلى ظهور ArithmeticException.
    • عبارة الاستبعاد: استخدام القسمة على الصفر عندما تكون إحدى القيم الرقمية double يقع خارج نطاق منهج امتحان علوم الحاسوب AP A.

المصدر: وصف دورة وامتحان College Board AP

التعبير يجمع بين القيم والعمليات الحسابية لحساب نتيجة: + - * / و% (باقي القسمة، الباقي). قسمة الأعداد الصحيحة تقطع: 7 / 2 يساوي 3، بينما 7 % 2 يساوي 1. أسبقية العمليات تتبع الرياضيات (*،/،% قبل +،-). اطبع باستخدام:

System.out.print("no newline");
System.out.println("with newline");

قسمة عدد صحيح على العدد الصحيح 0 (مثل 7 / 0) غير مسموح بها وتسبب انهياراً وقت التشغيل مع ArithmeticException. داخل السلسلة النصية، يشير الشرطة العكسية إلى تسلسل الهروب: \" يطبع علامة اقتباس مزدوجة، \\ شرطة عكسية واحدة، و\n يبدأ سطوراً جديداً – لذا System.out.println("She said \"hi\""); يطبع She said "hi".

استكشف

استكشف ترتيب العمليات خطوة بخطوة

يطبق جافا *، /، % قبل + و -، عملًا من اليسار إلى اليمين. راقب كل خطوة ولاحظ لماذا 2 + 3 * 4 هي $14$، وليست $20$ — لأن الضرب يحدث أولاً.

1.4

جمل الإسناد الإدخال

المنهج

هدف التعلم 1.4.A: كتابة كود لجمل الإسناد مع التعبيرات وتحديد القيمة التي يتم تخزينها في المتغير كنتيجة لهذه الجمل.

  • 1.4.A.1 يجب إسناد قيمة لكل متغير قبل استخدامه في تعبير. يجب أن تكون هذه القيمة من نوع بيانات متوافق. يتم تهيئة المتغير لأول مرة يتم فيها إسناد قيمة له. يمكن إسناد نوع مرجعي لكائن جديد أو null إذا لم يكن هناك كائن. المعرف_literal null هو قيمة خاصة تُستخدم للإشارة إلى أن المرجع غير مرتبط بأي كائن.
  • 1.4.A.2 يسمح مؤثر الإسناد = للبرنامج بتهيئة أو تغيير القيمة المخزنة في متغير. يتم تخزين قيمة التعبير الموجود على اليمين في المتغير الموجود على اليسار.
    • عبارة الاستبعاد: استخدام مؤشرات الإسناد داخل التعبيرات (مثل a = b = 4; أو a[i += 5]) يقع خارج نطاق منهج امتحان علوم الحاسوب AP A.
  • 1.4.A.3 أثناء التنفيذ، يتم تقييم التعبير لإنتاج قيمة واحدة. تعتمد قيمة التعبير على نوعه بناءً على تقييم التعبير.

هدف التعلم 1.4.B: تطوير كود لقراءة الإدخال.

  • 1.4.B.1 يمكن أن يأتي الإدخال بأشكال متنوعة، مثل الملمسي، الصوتي، المرئي، أو النصي. تمثل فئة Scanner إحدى الطرق للحصول على إدخال نصي من لوحة المفاتيح.
    • عبارة الاستبعاد: أي شكل محدد للإدخال من المستخدم يقع خارج نطاق منهج امتحان علوم الحاسوب AP A.

المصدر: وصف دورة وامتحان College Board AP

الإسناد x = expr; يقيّم الطرف الأيمن ويخزنه في المتغير الأيسر. اقرأ الإدخال باستخدام Scanner:

Scanner in = new Scanner(System.in);
int age = in.nextInt();
String name = in.next();
1.5

التحويل ونطاق المتغيرات

المنهج

هدف التعلم 1.5.A: تطوير كود لتحويل القيم الأولية إلى أنواع أولية مختلفة في التعبيرات الحسابية وتحديد القيمة الناتجة.

  • 1.5.A.1 يمكن استخدام مؤشرات التحويل (int) و(double) للتحويل من قيمة double إلى قيمة int (أو العكس).
  • 1.5.A.2 يؤدي تحويل قيمة double إلى int إلى قص الأرقام الموجودة على يمين الفاصلة العشرية.
  • 1.5.A.3 يتسبب بعض الكود في تحويل قيم int تلقائياً (توسيع) إلى قيم double.
  • 1.5.A.4 يمكن تقريب قيم النوع double إلى أقرب عدد صحيح بواسطة (int)(x + 0.5) للأعداد غير السالبة أو (int)(x - 0.5) للأعداد السالبة.

هدف التعلم 1.5.B: وصف الظروف التي تؤدي إلى تقييم تعبير صحيح بقيمة خارج النطاق المسموح به.

  • 1.5.B.1 يحتوي الثابت Integer.MAX_VALUE على أكبر قيمة ممكنة للنوع int. يحتوي الثابت Integer.MIN_VALUE على أصغر قيمة ممكنة للنوع int.
  • 1.5.B.2 يتم تمثيل القيم الصحيحة في Java بقيم من النوع int، والتي يتم تخزينها باستخدام كمية محدودة (4 بايت) من الذاكرة. لذلك، يجب أن تكون قيمة int ضمن النطاق من Integer.MIN_VALUE إلى Integer.MAX_VALUE شاملاً الحدين.
  • 1.5.B.3 إذا كان التعبير سيُقيم إلى قيمة int خارج النطاق المسموح به، يحدث فائض في القيم الصحيحة. يكون الناتج قيمة int ضمن النطاق المسموح به ولكن ليس بالضرورة القيمة المتوقعة.

هدف التعلم 1.5.C: وصف الظروف التي تقيد دقة التعبيرات.

  • 1.5.C.1 تخصص الحواسيب كمية محددة من الذاكرة لتخزين البيانات بناءً على نوع البيانات. إذا كان التعبير سيُقيم إلى double أدق مما يمكن تخزينه في كمية الذاكرة المخصصة، تحدث خطأ التقريب. سيتم تقريب الناتج إلى القيمة القابلة للتمثيل. لتجنب أخطاء التقريب التي تحدث بشكل طبيعي، استخدم قيم int.
    • عبارة الاستبعاد: أنواع بيانات عشرية خاصة أخرى يمكن استخدامها لتجنب أخطاء التقريب تقع خارج نطاق منهج امتحان علوم الحاسوب AP A.

المصدر: وصف دورة وامتحان College Board AP

نطاق int، الاندفاع والتقطيع

لكل نوع نطاق ثابت؛ يحدث اندفاع للـ int فوق حوالي 2.1 مليار. التحويل يحوّل بين الأنواع. التوسيع (من int إلى double) تلقائي؛ الضيق يتطلب تحويلاً صريحاً، وهو يقطع (لا يقرب):

double avg = (double) total / count;   // force real division
int whole = (int) 3.9;                 // 3, truncated

مهارة الامتحان: انتبه لقسمة الأعداد الصحيحة التي تنتج نتيجة مقطوعة عندما كان متوقعاً رقم عشري – حول أحد المعاملين إلى double أولاً.

مثال محلول. تابع كل تعبير:

  • 7 / 2 → 3 (كلاهما int، لذا القسمة تقطع)؛
  • 7.0 / 2 → 3.5 (واحد منهما double يجبر القسمة الحقيقية)؛
  • 7 % 2 → 1 (الباقي);
  • (double) 7 / 2 → 3.5 (الـ cast يرتبط بقوة أكبر من /، لذا فهو 7.0 / 2);
  • (double) (7 / 2) → 3.0 (الأقواس تحسب 7 / 2 = 3 في int أولاً، ثم توسع).

الشكلان الأخيران متشابهان لكنهما مختلفان – تحديد موقع الـ cast هو ما يحدد متى تحدث عملية الاختصار.

استكشف

لماذا تخزن int و double الأرقام بشكل مختلف

يحتوي int فقط على أعداد صحيحة في نطاق ثابت؛ بينما يخزن double معامل و أُس، مستبدلاً الدقة بنطاق ضخم. تحويل double→int يتخلص من الجزء العشري، وقيمة تتجاوز نطاق int تسبب طفحاً.

1.6

معملات التعيين المركبة

المنهج

هدف التعلم 1.6.A: تطوير كود لجمل الإسناد مع مؤشرات الإسناد المركب وتحديد القيمة التي يتم تخزينها في المتغير كنتيجة.

  • 1.6.A.1 يمكن استخدام مؤشرات الإسناد المركب +=، -=، *=، /=، و%= بدلاً من مؤثر الإسناد في التعبيرات الرقمية. يقوم مؤشر الإسناد المركب بإجراء العملية الحسابية المحددة بين القيمة الموجودة على اليسار والقيمة الموجودة على اليمين ثم إسناد النتيجة إلى المتغير الموجود على اليسار.
  • 1.6.A.2 后置自增运算符(post-increment operator)++ 和后置自减运算符(post-decrement operator)-- 用于向数值变量的存储值添加 1 或减去 1。新值被赋给该变量。
    • 排除说明: 前置形式(prefix form)(例如 ++x)中的自增和自减运算符的使用不在 AP 计算机科学 A 课程和考试范围内。在其他表达式内使用自增和自减运算符(例如 arr[x++])也不在 AP 计算机科学 A 课程和考试范围内。

المصدر: وصف دورة وامتحان College Board AP

تجمع الاختصارات عملية مع إسناد: x += 5 تعني x = x + 5؛ وبالمثل -=، *=، /=، %=. المشغلتان الزيادة والنقصان x++ وx-- تضيفان أو تطرحان واحداً.

1.7

واجهة برمجة التطبيقات (API) والمكتبات

المنهج

هدف التعلم 1.7.A: تحديد الخصائص والسلوكيات لصف موجود في المكتبات المضمنة في واجهة برمجة التطبيقات.

  • 1.7.A.1 المكتبات هي مجموعات من الصفوف. يحدد مخطط واجهة برمجة التطبيقات (API) للمبرمج كيفية استخدام تلك الصفوف. الوثائق الموجودة في مخططات واجهات برمجة التطبيقات والمكتبات ضرورية لفهم خصائص وسلوكيات صف تم تعريفه بواسطة واجهة برمجة التطبيقات. يُعرّف الـ صف نوع مرجعيًا محددًا. يتم تجميع الصفوف في واجهات برمجة التطبيقات والمكتبات في حزم. يمكن استخدام الصفوف والمكتبات الموجودة مسبقًا لإنشاء كائنات.
  • 1.7.A.2 تشير الخصائص إلى البيانات المتعلقة بالصف وتُخزن في المتغيرات. تشير السلوكيات إلى ما يمكن أن تفعله instances من الصف (أو ما يمكن القيام به بها) وتُعرف بواسطة الدوال.

المصدر: وصف دورة وامتحان College Board AP

واجهة برمجة التطبيقات (API) هي القائمة المنشورة للفئات والطرق التي يمكنك استخدامها. المكتبة هي مجموعة من الفئات الجاهزة (مثل Math، String، Scanner). تقرأ وثائق API لتعرف ما تحتاجه الطريقة (معاملاتها) وما تُرجعه، دون رؤية كودها الداخلي – وهو مثال على التجريد.

1.8

التوثيق باستخدام التعليقات

المنهج

هدف التعلم 1.8.A: وصف وظيفة الكود واستخدامه من خلال التعليقات.

  • 1.8.A.1 تُكتب التعليقات لكل من المبرمج الأصلي والمبرمجين الآخرين لفهم الكود ووظيفته، لكنها يتجاهلها المترجم ولا يتم تنفيذها عند تشغيل البرنامج. تشمل ثلاثة أنواع من التعليقات في Java /* */، الذي يولد كتلة من التعليقات؛ //، الذي يولد تعليقًا على سطر واحد؛ و/** */، وهي تعليقات Javadoc وتُستخدم لإنشاء وثائق واجهة برمجة التطبيقات.
  • 1.8.A.2 الشرط المسبق هو شرط يجب أن يكون صحيحًا قبل تنفيذ دالة مباشرة لكي تتصرف كما هو متوقع. لا يوجد توقع بأن تقوم الدالة بفحص للتأكد من استيفاء الشروط المسبقة.
  • 1.8.A.3 后置条件(postcondition)是指方法执行后必须始终为真的条件。后置条件描述了执行结果,具体表现为返回值或对象属性的当前值。

المصدر: وصف دورة وامتحان College Board AP

التعليقات يتجاهلها المترجم لكنها تشرح الكود للبشر: // لسطر واحد، /* ... */ لحقل، و/** ... */ لتعليق Javadoc الذي يوثق غرض الطريقة ومعاملاتها وقيمتها المُرجعة. تُكتب هنا المتطلبات المسبقة والمتطلبات اللاحقة بدقة.

1.9

توقيعات الطرق

المنهج

هدف التعلم 1.9.A: تحديد الدالة الصحيحة التي يجب استدعاؤها بناءً على التوثيق وتوقيعات الدوال.

  • 1.9.A.1 الدالة هي كتلة من الكود ذات اسم تعمل فقط عند استدعائها. كتلة الكود هي أي جزء من الكود محاط بأقواس مجعدة. يسمح الت مجرد الإجراء للمبرمج باستخدام الدالة بمعرفة ما تفعله الدالة حتى لو لم يعرف كيف تمت كتابتها.
  • 1.9.A.2 الوسيط هو متغير مُصَرَّح به في ترويسة الدالة أو المُنشئ ويمكن استخدامه داخل جسم الدالة. هذا يسمح بتمرير القيم أو الحجج واستخدامها بواسطة الدالة أو المنشئ. يتكون توقيع الدالة لدالة ذات وسائط من اسم الدالة وقائمة الوسائط المرتبة. يتكون توقيع الدالة لدالة بدون وسائط من اسم الدالة وقائمة وسائط فارغة.

هدف التعلم 1.9.B: وصف كيفية استدعاء الدوال.

  • 1.9.B.1 دالة فارغة ليس لها قيمة إرجاعية وبالتالي لا يتم استدعاؤها كجزء من تعبير.
  • 1.9.B.2 الدالة غير الفارغة تُرجع قيمة تكون من نفس نوع النوع المُرجع في الترويسة. لاستخدام القيمة المُرجعة عند استدعاء دالة غير فارغة، يجب تخزينها في متغير أو استخدامها كجزء من تعبير.
  • 1.9.B.3 الحجة هي قيمة يتم تمريرها إلى الدالة عند استدعائها. يجب أن تكون الحجج الممررة إلى الدالة متوافقة من حيث العدد والترتيب مع الأنواع المحددة في قائمة الوسائط لتوقيع الدالة. عند استدعاء الدوال، يتم تمرير الحجج باستخدام "التمرير بالقيمة". "التمرير بالقيمة" يُهيئ الوسائط بنسخ من الحجج.
  • 1.9.B.4 يُقال إن الدوال مُفرطة التحميل عندما توجد عدة دوال بنفس الاسم ولكن بتواقيع مختلفة.
  • 1.9.B.5 استدعاء الدالة يعطل التنفيذ التسلسلي للعبارات، مما يؤدي إلى تنفيذ البرنامج أولاً للعبارات الموجودة في الدالة قبل الاستمرار. بمجرد تنفيذ آخر عبارة في الدالة أو تنفيذ عبارة إرجاع، يتم إعادة تدفق التحكم إلى النقطة التي تلي مباشرة مكان استدعاء الدالة.

المصدر: وصف دورة وامتحان College Board AP

توقيع الطريقة هو اسم الطريقة بالإضافة إلى أنواع معاملاتها، على سبيل المثال nextInt() أو substring(int, int). لاستدعاء طريقة، يجب عليك تزويد الحجج التي تتطابق مع المعاملات من حيث العدد والنوع والترتيب. يحدد أيضًا ترويسة الطريقة (الإعلان الكامل) نوع الإرجاع – نوع القيمة التي تُرجعها الطريقة (void إذا لم يكن هناك إرجاع) – لكن نوع الإرجاع ليس جزءًا من التوقيع، ولهذا لا يمكن لطريقتين أن تختلفا بنوع الإرجاع وحده.

1.10

استدعاء طرق الفئة

المنهج

هدف التعلم 1.10.A: كتابة كود لاستدعاء دوال الفئة وتحديد نتيجة هذه الاستدعاءات.

  • 1.10.A.1 دوال الفئة مرتبطة بالفئة، وليست بأمثلة من الفئة. تتضمن دوال الفئة الكلمة المفتاحية static في الترويسة قبل اسم الدالة.
  • 1.10.A.2 تُستدعى دوال الفئة عادةً باستخدام اسم الفئة متبوعاً بعامل النقطة. عندما يحدث استدعاء الدالة داخل الفئة المُعرِّفة، يكون استخدام اسم الفئة اختيارياً في الاستدعاء.

المصدر: وصف دورة وامتحان College Board AP

طريقة الفئة (الثابتة) تنتمي إلى الفئة نفسها، لذا تستدعيها على اسم الفئة: ClassName.method(args). لا حاجة لكائن.

استكشف

تابع استدعاء دالة داخل صنف على المكدس

استدعاء دالة صنف مثل Math.max يدفع إطاراً جديداً على مكدس الاستدعاءات؛ عندما ترجع الدالة قيمة، يُزاح إطارها ويعود التحكم إلى المستدعي. مرّ بالخطوات لمراقبة نمو المكدس وتناقصه.

مفردات تدريب
English العربية
class/klæs/ كلاس
1.11

فئة الرياضيات

المنهج

هدف التعلم 1.11.A: كتابة كود لتعبيرات تتضمن استدعاءات لمكتبات رياضية مدمجة وتحديد القيمة الناتجة عن ذلك.

  • 1.11.A.1 فئة Math هي جزء من حزمة java.lang. فئات حزمة java.lang متاحة بشكل افتراضي.
  • 1.11.A.2 تحتوي فئة Math فقط على دوال الفئة. دوال الفئة التالية من Math - بما فيها وظيفتها ومتى يتم استخدامها - جزء من مرجع Java السريع:
    • static int abs(int x) يُرجع القيمة المطلقة لقيمة int.
    • static double abs(double x) يُرجع القيمة المطلقة لقيمة double.
    • static double pow(double base, double exponent) يُرجع قيمة الوسيط الأول مرفوعة إلى أس الوسيط الثاني.
    • static double sqrt(double x) يُرجع الجذر التربيعي غير السالب لقيمة double.
    • static double random() يُرجع قيمة double أكبر من أو تساوي 0.0 وأقل من 1.0.
  • 1.11.A.3 يمكن معالجة القيم المُرجعة من Math.random() باستخدام العمليات الحسابية وعمليات التحويل لإنتاج رقم عشوائي int أو double في نطاق محدد بناءً على معايير محددة. يمكن أن تكون كل نقطة طرفية للنطاق شاملة، أي أن القيمة مدرجة، أو غير شاملة، أي أن القيمة غير مدرجة.

المصدر: وصف دورة وامتحان College Board AP

يوفر الصف Math طرقاً رياضية ثابتة: Math.abs(x)، Math.pow(base, exp)، Math.sqrt(x)، وMath.random() (حيث double في $[0,1)$). للحصول على عدد صحيح عشوائي من 0 إلى n-1: (int)(Math.random() * n).

1.12

الكائنات: أمثلة للفئات

المنهج

هدف التعلم 1.12.A: شرح العلاقة بين الفئة والكائن.

  • 1.12.A.1 الكائن هو مثال محدد للفئة له خصائص مُعرَّفة. الفئة هي التنفيذ الرسمي، أو المخطط الهندسي، لخصائص وسلوكيات الكائن.
  • 1.12.A.2 يمكن تطوير تسلسل هرمي للفئات من خلال وضع الخصائص والسلوكيات المشتركة للفئات ذات الصلة في فئة واحدة تسمى فئة أب. يمكن للفئات التي تمتد فئة الأب (تسمى فئات فرعية) الاستفادة من الخصائص والسلوكيات الموجودة في الفئة الأب دون استبدالها في الكود. هذا يخلق علاقة وراثة من الفئات الفرعية إلى الفئة الأب.
    • عبارة الاستبعاد: تصميم وتنفيذ علاقات الوراثة خارج نطاق مادة علوم الحاسوب A للامتحان AP.
  • 1.12.A.3 جميع الفئات في Java هي فئات فرعية من فئة Object.

هدف التعلم 1.12.B: كتابة كود لإعلان متغيرات لتخزين أنواع الإشارات المرجعية.

  • 1.12.B.1 المتغير من نوع إشارة مرجعية يحمل إشارة مرجعية لكائن، والتي يمكن اعتبارها عنوان الذاكرة الخاص بذلك الكائن.

المصدر: وصف دورة وامتحان College Board AP

= ينسخ المرجع، وليس الكائن

الفئة هي مخطط أولي؛ الكائن هو مثال ملموس مُنشأ منها. تجمع الفئة بين البيانات (الحقول) والسلوك (الطرق) – وهو جوهر برمجة الكائنات. String، Scanner، وArrayList جميعها فئات تقوم بإنشاء أمثلة منها.

يمكن تنظيم الفئات في تسلسل هرمي. الفئة الأب تحتوي على سمات وسلوكيات مشتركة بين عدة فئات فرعية که extend لها – وهي علاقة وراثة. كل فئة في جافا هي في النهاية فئة فرعية من الفئة المدمجة Object، ولهذا فإن كل كائن يمتلك بالفعل طريقة toString؛ كتابة طريقة في فئة فرعية بنفس توقيع طريقة في الفئة الأب يُسمى إعادة تعريف الطريقة. (تصميم نظام الوراثة الخاص بك خارج نطاق هذا المقرر، لكن يُتوقع منك التعرف على هذه المصطلحات.)

مخطط فئة: سمات خاصة وطرق عامة
مخطط فئة: سمات خاصة وطرق عامة
الفئة هي مخطط أولي؛ كل كائن هو مثال واحد مُنشأ منها
الفئة هي مخطط أولي؛ كل كائن هو مثال واحد مُنشأ منها
مفردات تدريب
English العربية
object/ˈɒbdʒekt/ الجسم
instance/ˈɪnstəns/ مثال
object-oriented programming/ˈɒbdʒekt ˈɔːrɪəntɪd ˈprəʊɡræmɪŋ/ البرمجة كائنية التوجه
superclass/ˈsuːpəklæs/ الكلاس الأب
subclasses/ˈsʌbklæsɪz/ الفئات الفرعية
inheritance relationship/ɪnˈherɪtəns rɪˈleɪʃənʃɪp/ علاقة الوراثة
method overriding/ˈmeθəd ˌəʊvəˈraɪdɪŋ/ إعادة كتابة الدالة
Instantiation/ˌɪnstænʃɪˈeɪʃn/ التنصيب
constructor/kənˈstrʌktə/ الدالة الإنشائية
reference/ˈrefrəns/ مرجعي
1.13

إنشاء الكائنات والتخزين (إنشاء الأمثلة)

المنهج

هدف التعلم 1.13.A: تحديد المُنشئ الصحيح الذي يتم استدعاؤه باستخدام التوقيع الخاص به.

  • 1.13.A.1 تحتوي الفئة على منشئات يتم استدعاؤها لإنشاء الكائنات. لها نفس اسم الفئة.
  • 1.13.A.2 يتكون توقيع المنشئ من اسم المنشئ، وهو نفسه اسم الفئة، وقائمة مرتبة من أنواع الوسائط. قائمة الوسائط، في ترويسة المنشئ، تذكر أنواع القيم الممررة وأسماء متغيراتها.
  • 1.13.A.3 يُقال إن المنشئات مُعادة التحميل عندما تكون هناك منشئات متعددة بتوقيعات مختلفة.

هدف التعلم 1.13.B: كتابة كود لإعلان متغيرات من الأنواع الصحيحة لحمل إشارات مرجعية للكائنات.

  • 1.13.B.1 المتغير من نوع إشارة مرجعية يحمل إشارة مرجعية لكائن أو، إذا لم يكن هناك كائن، null.

هدف التعلم 1.13.C: كتابة كود لإنشاء كائن عن طريق استدعاء منشئ.

  • 1.13.C.1 يتم إنشاء الكائن عادةً باستخدام الكلمة المفتاحية new متبوعة باستدعاء واحد من منشئات الفئة.
  • 1.13.C.2 تسمح الوسائط للمنشئات بقبول قيم لتعيين القيم الأولية لخصائص الكائن.
  • 1.13.C.3 وسيلة المنشئ هي قيمة يتم تمريرها إلى المنشئ عند استدعائه. يجب أن تكون الوسائط الممررة إلى المنشئ متوافقة من حيث الترتيب والعدد مع الأنواع المحددة في قائمة الوسائط في توقيع المنشئ. عند استدعاء المنشئات، يتم تمرير الوسائط باستخدام النقل بالقيمة. يقوم النقل بالقيمة بتهيئة الوسائط بنسخ من الوسائط.
  • 1.13.C.4 يعطل استدعاء المنشئ التنفيذ التسلسلي للعبارات، مما يؤدي إلى تنفيذ البرنامج أولاً للعبارات الموجودة في المنشئ قبل الاستمرار. بمجرد تنفيذ آخر عبارة في المنشئ، يتم إعادة تدفق التحكم إلى النقطة مباشرة بعد مكان استدعاء المنشئ.

المصدر: وصف دورة وامتحان College Board AP

إنشاء الأمثلة يُنشئ كائنًا باستخدام الكلمة المفتاحية new، والتي تستدعي مُنشئًا:

Scanner in = new Scanner(System.in);
String s = new String("hi");   // or just "hi"

يحتوي المتغير على مرجع (عنوان الكائن)، وليس الكائن نفسه. يمكن لمرجعين أن يشيرا إلى نفس الكائن؛ ومقارنتهما باستخدام == تقارن العناوين، وليس المحتوى.

يمكن أن تشير المرجع أيضاً إلى شيء فارغ: القيمة الخاصة null تعني "غير مرتبطة بأي كائن". استدعاء طريقة على مرجع null يتسبب في انهيار البرنامج عند التشغيل مع خطأ NullPointerException. احمِ نفسك منه باختبار ==/!= والتحقق من null أولاً، حتى يتم التوقف المبكر لـ && قبل تنفيذ الطريقة: if (s != null && s.length() > 0).

المتغير الأولي يحتوي على قيمته مباشرة، والمرجع يحتوي على سهم نحو الكائن
المتغير الأولي يحتوي على قيمته مباشرة، والمرجع يحتوي على سهم نحو الكائن
مفردات تدريب
English العربية
null/nʌl/ null
instance method/ˈɪnstəns ˈmeθəd/ طريقة العينة
immutable/ɪˈmjuːtəbl/ غير قابلة للتغيير
Interface/ˈɪntəfeɪs/ واجهة
1.14

استدعاء طرق الأمثلة

المنهج

هدف التعلم 1.14.A: كتابة كود لاستدعاء دوال الأمثلة وتحديد نتيجة هذه الاستدعاءات.

  • 1.14.A.1 دوال الأمثلة تُستدعى على أمثلة من الفئة. يُستخدم عامل النقطة جنبًا إلى اسم الكائن لاستدعاء دوال الأمثلة.
  • 1.14.A.2 سيؤدي استدعاء دالة على إشارة مرجعية null إلى حدوث NullPointerException.

المصدر: وصف دورة وامتحان College Board AP

طريقة المثال تعمل على كائن محدد، لذا تستدعيها على مرجع الكائن: object.method(args). مثال: in.nextInt()، word.length().

1.15

معالجة النصوص

المنهج

هدف التعلم 1.15.A: كتابة كود لإنشاء كائنات سلاسل نصية وتحديد نتيجة إنشاء السلاسل النصية ودمجها.

  • 1.15.A.1 يمثل كائن String سلسلة من الأحرف ويمكن إنشاؤها باستخدام حرف ثابت أو عن طريق استدعاء منشئ فئة String.
  • 1.15.A.2 الفئة String جزء من حزمة java.lang. الفئات الموجودة في الحزمة java.lang متاحة افتراضياً.
  • 1.15.A.3 كائن String غير قابل للتعديل، مما يعني أنه بمجرد إنشاء كائن String، لا يمكن تغيير خصائصه. لا تقوم الطرق المستدعاة على كائن String بتغيير محتوى كائن String.
  • 1.15.A.4 يمكن دمج كائني String معاً أو دمجهما باستخدام العامل + أو +=، مما ينتج عنه كائن String جديد. يمكن دمج قيمة أولية مع كائن String. هذا يؤدي إلى التحويل الضمني للقيمة الأولية إلى كائن String.
  • 1.15.A.5 يمكن دمج كائن String مع أي كائن، مما يستدعي بشكل ضمني طريقة الكائن toString (وهو سلوك مضمون بسبب علاقة الوراثة التي تمتلكها كل فئة مع فئة Object). تُرجع طريقة الكائن toString قيمة نصية تمثل الكائن. غالباً ما تستبدل فئات فرعية من Object طريقة toString بتنفيذ محدد للفئة. استبدال الطريقة يحدث عندما تكون هناك طريقة عامة في فئة فرعية تحمل نفس توقيع الطريقة العامة في الفئة الأب، لكن سلوك الطريقة يكون محدداً للفئة الفرعية.
    • عبارة الاستبعاد: استبدال طريقة toString لفئة ما هو خارج نطاق برنامج امتحان علوم الحاسوب AP A.

الهدف التعليمي 1.15.B: تطوير كود لاستدعاء طرق على كائنات السلاسل النصية وتحديد نتيجة استدعاء هذه الطرق.

  • 1.15.B.1 لكائن String قيم مؤشرات تتراوح من 0 إلى أقل بمقدار واحد من طول السلسلة النصية. محاولة الوصول إلى مؤشرات خارج هذا النطاق ستؤدي إلى خطأ StringIndexOutOfBoundsException.
  • 1.15.B.2 methods String التالية - بما في ذلك ما تفعله ومتى يتم استخدامها - هي جزء من مرجع جافا السريع:
    • int length() يُرجع عدد الأحرف في كائن String.
    • String substring(int from, int to) يُرجع الجزء الجزئي من السلسلة النصية الذي يبدأ عند المؤشر from وينتهي عند المؤشر to - 1.
    • String substring(int from) يُرجع substring(from, length()).
    • int indexOf(String str) يُرجع مؤشر الحدوث الأول لـ str؛ يُرجع -1 إذا لم يتم العثور عليه.
    • boolean equals(Object other) يُرجع true إذا كان this يماثل نفس تسلسل الأحرف لـ other؛ يُرجع false بخلاف ذلك.
    • int compareTo(String other) يُرجع قيمة < 0 if this is less than other; returns zero if this is equal to other; returns a value > 0 إذا كان this أكبر من other. تُرتب السلاسل النصية بناءً على الأبجدية.
    • عبارة الاستبعاد: استخدام طريقة equals لمقارنة كائن String بكائن من نوع آخر غير String هو خارج نطاق برنامج امتحان علوم الحاسوب AP A.
  • 1.15.B.3 يمكن إنشاء سلسلة نصية مطابقة للعنصر الفردي الوحيد عند الموقع index عن طريق استدعاء substring(index, index + 1).

المصدر: وصف دورة وامتحان College Board AP

النصوص غير قابلة للتغيير

كائنات String غير قابلة للتغيير – تُرجع الطرق نصًا جديدًا بدلاً من تغيير النص الأصلي. الطرق الرئيسية (جميع الفهارس تبدأ من 0):

s.length();            // number of characters
s.substring(2, 5);     // chars at index 2,3,4 (5 excluded)
s.indexOf("ab");       // first position, or -1
s.equals(other);       // content comparison (never use == for Strings)
s.compareTo(other);    // <0, 0, >0 by dictionary order

مهارة الامتحان: substring(a, b) يشمل الفهرس a لكنه يستبعد b، ولازم مقارنة Strings استخدام .equals، لا == – وهما من أكثر الثغرات الشائعة في String اختبارًا.

مثال محلول. ليكن String s = "COMPUTER"; (الفهارس 0–7). حينئذٍ s.length() يساوي 8؛ s.substring(0, 4) يساوي "COMP" (الفهارس 0,1,2,3 – الفهرس 4 مستبعد)؛ s.substring(4) يساوي "UTER" (من الفهرس 4 إلى النهاية)؛ s.indexOf("PU") يساوي 3؛ وs.indexOf("X") يساوي -1 (غير موجود). يعد احتساب الطرف المستبعد لـ substring الخطأ الأكثر شيوعاً.

طلب فهرس خارج 0 إلى length()-1 (حجة substring أو charAt خاطئة، مثل s.substring(0, 20) هنا) يسبب انهيارًا مع StringIndexOutOfBoundsException – وهو نظير خطأ فهرس المصفوفة في String.

فهارس النص تبدأ من 0
فهارس النص تبدأ من 0
استكشف

استكشف مؤشرات السلاسل واستخراج أجزاء منها

كل حرف له مؤشر، ويبدأ الترقيم من 0. اسحب نقطة البداية والنهاية لترى كيف تأخذ substring(from, to) الحروف من from حتى — ولكن دون تضمين — to.

1.15

نصائح للامتحان

  • تتبع الك يدويًا سطراً بسطر، وتتبع قيمة كل متغير في جدول – الامتحان يكافئ التتبع الدقيق على الحساب التخميني.
  • تعرف على الأنواع الأولية في Java وأن القسمة الصحيحة تقوم بالتقطيع ($7/2$ يعطي $3$)؛ استخدم تحويل نوع أو double للقسمة الحقيقية.
  • ميّز بين أخطاء وقت التجميع (التركيب، الأنواع) وأخطاء وقت التشغيل – وتعرّف على الأسماء المحددة: ArithmeticException (int ÷ 0)، NullPointerException (دالة على مرجع فارغ)، StringIndexOutOfBoundsException / ArrayIndexOutOfBoundsException – وأخطاء المنطق (مخرجات خاطئة).
  • اتبع أولوية المعاملات وابدأ قيمة كل متغير قبل استخدامه.
  • في الأسئلة المقالية، اكتب كود Java كامل وقابل للتجميع – أعد النوع الصحيح وطابق ترويسة الدالة بدقة.

دروس تفاعلية حول هذا الموضوع

ا-working عليه خطوة بخطوة، مع تمارين تحقق فوري.

أوراق الامتحانات السابقة

المزيد من المواضيع في AP علوم الحاسوب A

تسجيل الدخول أو إنشاء حساب

IGCSE, A-Level & AP