وبعد أن تعرفنا في الدرس الماضي على الدوال الخاصة بالرموز CHARACTERS والتي تفيد في إجراء بعض العمليات على الرموز، يهمنا أن نتعرف الآن على مفهوم المقارنة بين رمزين أو أكثر وكذلك الدوال الخاصة بالمقارنة بين الرموز.
أولا: مفهوم المقارنة:
تفيد المقارنة بين الرموز في عمليات وتطبيقات كثيرة جدا.. وسنرى بإذن الله العديد من الأمثلة في القسم المتقدم من هذه الدروس..
يمكننا مثلا ترتيب عنا صره قائمة تحتوي على مجموعة من الحروف تصاعديا أو تنازليا.. أو يمكننا اختبار تحقق شرط تساوي حرفين أو رمزين لإجراء عملية معينة مثلا..
ثانيا: الدوال الخاصة بالمقارنة بين الرموز
هناك 12 دالة تستخدم للمقارنة بين رمزين أو أكثر، وإليكم تعدادا ثم تفصيلا للدوال التي سنتناولها في هذا الدرس:
1- الدالة CHAR=
2- الدالة CHAR=
3- الدالة CHAR>
4- الدالة CHAR<
5- الدالة CHAR<=
6- الدالة CHAR>=
7- الدالة CHAR-EQUAL
8- الدالة CHAR-NOT-EQUAL
9- الدالة CHAR-LESSP
10- الدالة CHAR-GREATERP
11- الدالة CHAR-NOT-GREATERP
12- الدالة CHAR-NOT-LESSP
والآن سنفصل في الحديث عن وظيفة وماهية كل دالة وطريقة كتابتها مع التزويد بأمثلة وأكواد متعددة للتوضيح والترسيخ..
1- الدالة =CHAR
الوظيفة:
تختبر هذه الدالة تطابق رمزين أو أكثر، ويجب أن يسبق كل رمز بالعلامة الخاصة بالرموز في LISP وهي #.
الشكل:
(char= character[s])
أمثلة:



2- الدالة =CHAR
الوظيفة:
تختبر هذه الدالة عدم تطابق رمزين أو أكثر، ويجب أن يسبق كل رمز بالعلامة الخاصة بالرموز في LISP وهي #.
الشكل:
(char/= character[s])
أمثلة:



3- الدالة >CHAR
الوظيفة:
الشكل:
(char< character[s])
أمثلة:



4- الدالة <CHAR
الوظيفة:
الشكل:
(char> character[s])
أمثلة:



5- الدالة =>CHAR
الوظيفة:
الشكل:
(char<= character[s])
أمثلة:




6- الدالة =<CHAR
الوظيفة:
الشكل:
(char>= character[s])
أمثلة:




والآن سنأتي لست دوال أخرى تقوم بنفس وظائف الدوال السابقة مع فارق بسيط ولكنه هام! .. سيتم توضيح الفارق بمثال بسيط بعد سردها..
7- الدالة CHAR-EQUAL
تقوم هذه الدالة بنفس وظيفة الدالة CHAR=.
8- الدالة CHAR-NOT-EQUAL
تقوم هذه الدالة بنفس وظيفة الدالة CHAR=.
9- الدالة CHAR-LESSP
تقوم هذه الدالة بنفس وظيفة الدالة CHAR<.
10- الدالة CHAR-GREATERP
تقوم هذه الدالة بنفس وظيفة الدالة CHAR>.
11- الدالة CHAR-NOT-GREATERP
تقوم هذه الدالة بنفس وظيفة الدالة CHAR<=.
12- الدالة CHAR-NOT-LESSP
تقوم هذه الدالة بنفس وظيفة الدالة CHAR>=.
تختلف الدوال CHAR-EQUAL, CHAR-NOT-EQUAL, CHAR-LESSP, CHAR-GREATERP, CHAR-NOT-GREATERP, CHAR-NOT-LESSP عن الدوال CHAR=, CHAR/=, CHAR<, CHAR>, CHAR<=, CHAR>= على الترتيب في الآتي:
الدوال CHAR=, CHAR/=, CHAR<, CHAR>, CHAR<=, CHAR>= :
تكون حساسة لحالة الأحرف هل هي في صيغة lower-case أو في صيغة upper-case فنجد أن:

فكما نلاحظ تم اعتبار الحرف a مختلفا عن الحرف A لكونهما في حالتين مختلفة وبالتالي عادت الدالة بالقيمة False.
بينما الدوال CHAR-EQUAL, CHAR-NOT-EQUAL, CHAR-LESSP, CHAR-GREATERP, CHAR-NOT-GREATERP, CHAR-NOT-LESSP :
غير حساسة لحالة الأحرف فلا فرق بين أن يكون الحرف في صيغة lower-case أو في صيغة upper-case فنجد أن:

أي أنه تم اعتبار حالة التساوي بغض النظر عن حالة الحرف، وبالتالي عادت الدالة بالقيمة True