سنتعرف في هذا الدرس على الدوال المتخصصة في طباعة المخرجات النصية..
هناك دوال عديدة وكثيرة جدا لطباعة النصوص في LISP ولكننا سنكتفي بالتعرف على اثنتين منها فقط لكونها تفي بالغرض...
الدالة الأولى: PRINT FUNCTION
وهي دالة سهلة جدا ولكنها غير عملية ولا تفي بكل الاستخدامات.
الدالة الثانية: FORMAT FUNCTION
وهي أصعب نوعا من سابقتها ولكنها عملية جدا ولها استخدامات كثيرة ومتعددة.. حيث تمكننا من طباعة المخرجات في شكل جميل، ونستطيع عن طريقها طباعة المسافات والأسطر الفارغة.. وكذلك يمكننا عن طريقها طباعة النواتج الرقمية من أي نوع وبالدقة التي نريدها للأرقام العشرية..
يمكننا أيضا استخدام الإمكانيات الموجودة في هذه الدالة لطباعة الجداول وغيرها.
1- الدالة PRINT
الوظيفة:
تقوم هذه الدالة بطباعة ما نرسله لها من نصوص أو متغيرات أو القيم العائدة من دالة معينة..
الشكل:
(print form)
أمثلة:
مثال1:
لطباعة النص C4arab نكتب:
لطباعة النص Welcome To C4ARAB.COM المبدوء والمنتهي بمسافات بيضاء، نكتب:
مثال2:
لطباعة الرقم 1000 نكتب:
مثال3:
يمكننا أيضا طباعة القيم العائدة من دوال مختلفة كدوال إجراء العمليات الحسابية أو دوال المقارنة:

مثال4:
لطباعة متغير x يحوي قيما رقمية نكتب:


ملاحظة: لاحظ أنه تم طباعة محتوى المتغير x لأننا لم نستخدم علامات التنصيص معه، لكن لو استخدمنا علامات التنصيص " " فإنه سيتم اعتباره نصا وليس متغيرا !
مثال5:
لطباعة عناصر قائمة x-list نكتب:


2- الدالة FORMAT
الوظيفة:
تقوم هذه الدالة بطباعة ما نرسله لها من نصوص أو متغيرات أو القيم العائدة من دالة معينة..
الشكل:
(format {t nil} control-string arguments)
لابد أن يتم كتابة هذه الدالة كما رأينا مع أحد المتغيرين t أو nil :
بالنسبة للـ Control-string فهي عبارة التحكم التي تجعل دالة الطباعة Format ذات إمكانيات عالية..
يمكن كتابة أكثر من control-sting بحسب الشكل الذي نريد ظهوره ولأي عدد من الـarguments التي نريد طباعتها..
وهنا قائمة ببعض الـcontrol-strings ووظائفها (والأمثلة توضح لنا كيف نستخدم عبارات التحكم هذه):
~%
لطباعة سطر جديد
~&
لطباعة سطر جديد إذا لم نكن على سطر جديد.
~s
لطباعة s-expression مع علامة التنصيص " "
~a
لطباعة s-expression بدون علامة التنصيص " "
ملاحظة: تعرفنا على الـs-expression في أول درس من دروس القسم المتوسط
~d
لطباعة أعداد صحيحة Integers
~c
لطباعة رمز Character
~{str~}
للدوران داخل عناصر قائمة list وطباعتها عنصرا عنصرا.
~width,decimalsF
لطباعة الأرقام العشرية بطول معين للرقم وعدد محدد للمنازل العشرية.
حيث أن:
width --> عبارة عن الرقم الذي يحدد سعة الرقم الكلية، أي عدد الأرقام قبل العلامة العشرية وبعدها مع أخد العلامة العشرية أيضا في الاعتبار، وإذا كان إجمالي العدد أقل من العدد المحدد في عبارة التحكم هذه فإن LISP سيجعلها مساحات بيضاء قبل بداية الرقم.. انظر المثال
decimals --> ويستخدم لتحديد عدد المنازل العشرية.
أمثلة:
مثال1:
طباعة الرموز Characters:


مثال2:
لطباعة متغير قيمته عبارة عن عدد صحيح نكتب:

مثال3:
لطباعة الأرقام العشرية:

مثال4:
لطباعة العبارة “C4arab” مرة بوجود علامات التنصيص ومرة بدونها

وبهذا نكون قد انتهينا بحمد الله من القسم المتوسط من دروس LISP.. آمل أن أكون أفدتكم وأن يكون ما كتبته مفيدا وواضحا لمن يريد تعلم ودراسة هذه اللغة..