Chapter 7 - Practice

Q1: write Predicate

  • ايه ناتج كل استعلام من دول (لو في خطأ Syntax Error اشرح ليه):
  1. ?- write(c), write(8), write(r).
  2. ?- write([a, b, c, d]).
  3. ?- write(Hello World).
  4. ?- write('Hello World').
  5. ?- X = 5, write('Value = '), write(X).

Q2: nl و tab

  • هات ناتج الاستعلام ده:
?- write(a), tab(3), write(b), nl, tab(1), write(c).

Q3: read Predicate

  • استخدم read & write عشان تعمل برنامج بياخد الاسم من اليوزر ويقوله Greeting : username

Q4: مكعب العدد (Cube) - نسخة بسيطة

  • اكتب دالة cube بتطلب من المستخدم إدخال رقم، وبعدين تحسب الـ Cube بتاعه (n³) وتطبعه وجربها.

Q5: مكعب العدد (Cube) - Loop مع Cut

  • عدل دالة الـ Cube عشان تفضل تقرا أرقام وتطبع Cubes لغاية ما المستخدم يكتب stop.

  • وجربها:

?- cube.
|: 2.
|: 5.
|: 12.
|: stop.

Q6: جمع رقمين (Sum)

  • اكتب دالة sum تقرا رقمين من المستخدم وتطبع مجموعهم.

  • وجرب:

?- sum.
|: 10.
|: 15.

Q7: Function مع Read و Cut

  • اكتب برنامج function يقرا قيمة X من المستخدم ويحسب:
    • لو X ≤ 3 يبقى Y = 2X
    • لو X > 3 يبقى Y = 4X + 5
  • استخدم Cut .

وجرب:

?- function.
|: 2.

?- function.
|: 5.

Q8: الجذر التربيعي مع Validation

  • اكتب دالة sqr تقرا رقم X وتطبع الجذر التربيعي بتاعه (X^0.5).
  • لو الرقم سالب، اطبع ايرور من غير ما تحسب حاجة.

وجرب:

?- sqr.
enter number: 9.

?- sqr.
enter number: -4.

Q9: تصنيف درجات الطلاب (Succeed / Fail)

  • اكتب دالة test1 تقرا درجة الطالب وتطبع succeed لو ≥ 50 و fail لو أقل من 50 (بدون Cut).
  • اكتبها تاني باستخدام Cut .

وجرب:

?- test1.
enter score: 75.

?- test1.
enter score: 30.

Q10: اسم الطالب + الدرجة + النتيجة

  • اكتب دالة test تطلب من المستخدم إدخال الاسم ثم الدرجة، وبعدين تطبع اسم الطالب مع نتيجته (succeed/fail).

  • وجرب:

?- test.
enter your name: ahmed.
enter score: 85.

Q11: قسمة رقمين مع تجنب القسمة على صفر

  • اكتب دالة divide تقرا رقمين A و B وتطبع ناتج A / B. لو B = 0، اطبع رسالة خطأ.

  • وجرب:

?- divide.
Enter A: 10.
Enter B: 2.

?- divide.
Enter A: 10.
Enter B: 0.

لو وصلت لهنا فعاش اوي باذن الله تقفل الماده ومتنساش تدعيلي

Nour Eldeen Mahmoud