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

תוכן שנמחק תוכן שנוסף
Jona1357 (שיחה | תרומות)
מ תקלדה
Matanyabot (שיחה | תרומות)
מ בוט החלפות: מסוי\1, ,, לעיתים
שורה 35:
 
=== אופרטורים אריתמטיים ===
ארבעת האופרטורים ה[[אריתמטיקה|אריתמטיים]] המשמעותיים ביותר ב-Common Lisp, ובניבי Lisp בכלל, הם חיבור <code>+</code> , חיסור <code>-</code> , כפל <code>*</code> , וחילוק <code>/</code> .
 
אמנם אופרטורים אלה הם חלק אינטגרלי ממתמטיקה ואריתמטיקה בסיסית, וקיימים בכלל שפות התכנות, במשפחת Lisp צורת הכתיבה שלהם שונה. ב-Lisp ישנו שימוש בכתיב תחילי, כלומר, האופרטורים והפעולות בה מופיעים בהתחלה, ושאר האיברים בביטוי הם האופרנדים, או הפרמטרים בהתאמה. באופרטורים ופעולות מובנות רבות אין מגבלה לכמות האופרנדים שניתן להכניס, כלומר, חיבור,חיסור, כפל וחילוק למשל, אינן פעולות בינאריות ב-Lisp. לדוגמה, על מנת לבצע את הפעולה האריתמטית <math>2 * 3 + 7 - 6</math>, נכתוב את הקוד הבא:<syntaxhighlight lang="common-lisp">
שורה 42:
 
=== אופרטורים השוואתיים ===
אופרטורים השוואתיים במדעי המחשב משווים בין שני ביטויים או יותר. דוגמאות לאופרטורים השוואתיים קיימות גם במתמטיקה, ( <math>= </math>, <math>\neq </math>, <math>></math> , <math><</math>, <math>\geq</math>, <math>\leq</math> וכו׳ ).
 
הם מחזירים ערך בוליאני (כלומר, אמת / שקר ): '''אמת''' במידה והתנאי ההשוואתי מתקיים , ו'''שקר''' במידה והתנאי אינו מתקיים. למשל, בשפות תכנות עיליות, כגון C#, Java, Python ועוד משתמשים באופרטור <code>==</code> על מנת לבדוק האם שני ביטויים שווים זה לזה. לדוגמה, <code>5==4</code> יחזיר '''שקר''', אך 7==7 יחזיר '''אמת''' . מפני שהתחביר בניבי Lisp, משתמש בכתיב תחילי (בדומה ל[[כתיב פולני]]), אופרטורי ההשוואה לרוב ממוקמים באופן שונה, ומקבלים מספר אופרנדים שונה. על מנת לבצע השוואה ב-Common Lisp ניתן להשתמש (בין היתר) באופרטור <code>=</code> שיכול לקבל מספר בלתי מוגבל של אופרנדים, וכן באופרטור <code>eq</code> אשר מקבל 2 איברים בלבד. בין האופרטורים הללו ישנם הבדלים אחרים. לדוגמה:<syntaxhighlight lang="common-lisp">
(= (+ 5 5) 10 (+ 2 8) (+ 3 7 ))
-> T
שורה 57:
 
=== התניות ===
במדעי המחשב, נהוג לבצע פעולה מסויימתמסוימת כאשר תנאי מתקיים, ופעולה אחרת ( או חוסר פעולה ) , כאשר התנאי אינו מתקיים.
 
ב-Common Lisp, על מנת לבצע התניות יש להשתמש בהוראת ה-if. בניבי Lisp אחרים לעתיםלעיתים תבוצע התניה באמצעות הוראת ה-cond ( קיצור של condition ).
 
מבנה הבלוק של '''if''' : <syntaxhighlight>
שורה 132:
(* number1 number1)
)
</syntaxhighlight>דוגמה לפעולה [[רקורסיה|רקורסיבית]] אשר מחשבת עד [[סכום]] המספרים מ-0 עד למספר הנתון, כלומר, עבור פרמטר n : <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 )