Common Lisp – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Jona1357 (שיחה | תרומות)
כתיבת קוד בשפה. הדף לוקה בחסר..
Jona1357 (שיחה | תרומות)
אין תקציר עריכה
שורה 41:
(print "They are equal")
(print "They are not equal")
)
</syntaxhighlight>
 
== פעולות ==
בתכנות פונקציונלי ופרוצדורלי, נהוג להגדיר פעולות שיכולות לקבל פרמטרים שונים. כך נמנעת חזרה של אותו קוד מספר פעמים, ונשמר הסדר והיעילות בקוד. ב-Common Lisp הגדרת פעולות נעשית באמצעות ה[[מילה שמורה|מילה השמורה]] <code>defun</code>.
 
מבנה בלוק של פעולה:<syntaxhighlight lang="common-lisp">
(defun <functionName> (<parameters>)
<content>
)
</syntaxhighlight>דוגמה לפעולה אשר מפושטת לפרמטר בריבוע:<syntaxhighlight lang="common-lisp">
(defun power number1
(* number1 number1)
)
</syntaxhighlight>דוגמה לפעולה [[רקורסיה|רקורסיבית]] אשר מחשבת עד [[סכום]] המספרים מ-0 עד למספר הנתון ( <math>{ 1+2+3\cdots+n }</math>, או בכתיב מתמטי :<math>\textstyle \sum_{k=0}^N \displaystyle</math>) ומקבלת רק מספרים אי שליליים ושלמים:<syntaxhighlight lang="common-lisp">
(defun sum_to( num1 )
( if ( eq num1 0 )
0
(+ (sum_to ( - num1 1 )) num1 )
)
)
</syntaxhighlight>ועל אותו עיקרון, מימוש ב-Common Lisp לפעולת ה[[עצרת]] ב[[מתמטיקה]], שמקבלת [[מספרים חיוביים ושליליים|מספרים אי שליליים]] ושלמים בלבד:<syntaxhighlight lang="common-lisp">
(defun factorial_of( num1 )
( if ( eq num1 0 )
1
(* (factorial_of ( - num1 1 )) num1 )
)
)
</syntaxhighlight>וכן פעולה אשר מפושטת למספר הגדול ביותר ב[[רשימה (מבנה נתונים)|רשימה]] המוכנסת אליה:<syntaxhighlight lang="common-lisp">
(defun max_item ( item lst )
( if ( eq lst nil )
item
(max_item (max (car lst ) item ) (cdr lst) )
)
)
</syntaxhighlight>