هذا هو الدرس الرابع والأخير في الدوال الخاصة بالتعامل مع الأرقام..
وإليكم تعدادا ثم تفصيلا للدوال التي سنتناولها في هذا الدرس:
30- الدالة REALP
31- الدالتان RATIONAL, RATIONALIZE
32- الدالة RATIONALP
33- الدالتان NUMERATOR, DENOMINATOR
34- الدالة INTEGER-LENGTH
35- الدالة INTEGERP
36- الدالة FLOAT
37- الدالة FLOATP
والآن سنفصل في الحديث عن وظيفة وماهية كل دالة وطريقة كتابتها مع التزويد بأمثلة وأكواد متعددة للتوضيح والترسيخ..
30- الدالة REALP
الوظيفة:
تعود هذه الدالة بالقيمة True (T) إذا كان الكائن المرسل لها عبارة عن عدد حقيقي..
بينما تعود بالقيمة False (Nil) خلاف ذلك.
الشكل:
(realp object)
أمثلة:

31- الدالتان RATIONAL, RATIONALIZE
الوظيفة:
تقوم هاتان الدالتان بتحويل العدد المعطى لها إلى صورة عدد كسري مكون من بسط ومقام.
وتختلف الدالتان عن بعضهما في الدقة الموضوعة لكل منهما:
فالدالة RATIONAL تضع أعدادا تنتج عند قسمتها من جديد العدد العشري نفسه (بنفس الدقة) بينما الدالة RATIONALIZE تقرب الأعداد أكثر لتعطي كسرا أبسط ولكن عند القسمة سنحصل على رقم عشري قريب جدا من الرقم العشري المعطى لها.
حالات خاصة:
الشكل:
(rational number)
(rationalize number)
أمثلة:
عند إرسال صفر:

عند إرسال عدد صحيح:

عند إرسال عدد كسري:

عند إرسال عدد حقيقي (عشري):

32- الدالة RATIONALP
الوظيفة:
تعود هذه الدالة بالقيمة True (T) إذا كان الكائن المرسل لها عبارة عن عدد كسري.
بينما تعود بالقيمة False (Nil) خلاف ذلك.
الشكل:
(rationalp object)
أمثلة:

33- الدالتان NUMERATOR, DENOMINATOR
الوظيفة:
تعود الدالة NUMERATOR ببسط العدد الكسري المرسل لها.
بينما تعود الدالة DENOMINATOR بمقام العدد الكسري المرسل لها.
الشكل:
(realpart number)
(imagpart number)
أمثلة:
استخدام الدالة NUMERATOR:

استخدام الدالة DENOMERATOR:

34- الدالة INTEGER-LENGTH
الوظيفة:
تستقبل هذه الدالة أي رقم صحيح وتعود بعدد البت اللازمة لتمثيل هذا العدد في صيغة المكمل الثنائي binary two's-complement format.
الشكل:
(integer-length integer)
أمثلة:
عند تطبيق الدالة على الرقم صفر نحصل على:

عند تطبيق الدالة على أرقام صحيحة موجبة:

عند تطبيق الدالة على أرقام صحيحة سالبة:

أمثلة متقدمة على استخدامات هذه الدالة:

35- الدالة INTEGERP
الوظيفة:
تعود هذه الدالة بالقيمة True (T) إذا كان الكائن المرسل لها عبارة عن عدد صحيح.
بينما تعود بالقيمة False (Nil) خلاف ذلك.
الشكل:
(integerp object)
أمثلة:

36- الدالة FLOAT
الوظيفة:
تقوم هذه الدالة بتحويل العدد الحقيقي إلى عدد عشري. الفرق بين الـReal Numbers والـfloat Numbers هو في الدقة أي في عدد المنازل العشرية فقط.
الشكل:
(float number [prototype])
إذا تم إرسال Prototype لهذه الدالة فإن الرقم العائد يكون له نفس الدقة أي نفس الشكل الموجود في هذا الـPrototype.
لاحظ الأمثلة التالية لترى نتيجة استخدام الـPrototype بنفسك.
أمثلة:


37- الدالة FLOATP
الوظيفة:
تعود هذه الدالة بالقيمة True (T) إذا كان الكائن المرسل لها عبارة عن عدد عشري من النوع Float .
بينما تعود بالقيمة False (Nil) خلاف ذلك.
الشكل:
(floatp object)
أمثلة:
هذه الدالة تعود بالقيمة T عندما نرسل لها أرقاما عشرية:

بينما لو أرسلنا أرقاما صحيحة سنجد أنها تعود بالقيمة NIL:

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
وهكذا تناولنا معظم وأهم الدوال المعرفة في LISP للتعامل مع الأرقام.. من السهولة جدا تعلم ومعرفة ماهية عمل هذه الدوال، أليس كذلك؟! :)
من الممتع أيضا أننا نتدرج في المعلومة لذا ستجدون بإذن الله أن كل كلمة مستساغة ومفهومة.. عندما نصل إلى القسم المتوسط من الدروس سيكون كل شيء سهل وواضح..