פסקל
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
פסקל היא שפת תכנות עילית למחשב הקרוייה על שמו של המתמטיקאי הצרפתי בלייז פסקל.
השפה הומצאה בשנת 1968 על־ידי ניקלאוס ווירת' כפרוייקט תחקירי בתחום של תאוריות מחשב. נחשבת לאחת משפות התכנות ששימשו השראה לתכנות מונחה עצמים.
תוכן עניינים |
[עריכה] חלק הצהרתי
כל תוכנית פסקל מתחילה במילה program, מילה זו מגדירה למהדר שתוכנית זאת היא תוכנית פסקל. לאחר המילה יופיע רווח ולאחריו שם התוכנית המתחילה באותיות קטנות או גדולות (אין חשיבות לכך בפסקל) וקוים תחתונים. בשם התוכנית הופעת מספרים היא חוקית כל עוד היא לא נעשית בתחילת השם. בנוסף לכך, אין להשתמש ברווחים בשם התכנית. לאחר השם יופיע נקודה-פסיק (";"), המכריז שחלק זה נגמר.
[עריכה] הצהרת משתנים
כל תוכנית בנויה על הבסיס הבא:
Var
variable:variable_type;
{כאן ניתן להוסיף מתשנים נוספים עם סוג המשתנה}
Begin
{.באזור זה יופיעו פקודות פסקל ובסוף כל פקודה, נקודה פסיק}
{.הערות שוליים ניתן לכתוב בתוך סוגריים מסולסלים}
End.ה- variable הוא שם המשתנה הייחודי וה- variable_type זה סוג המשתנה.
סוגי משתנים נפוצים:
integer- מספר שלם (מהמספר מינוס 32768 עד 32768).
real- מספר ממשי (מספרים רציונליים וכן מספרים אי-רציונליים).
char- תו (כל תו המופיע על המקלדת).
string- מחרוזת (מורכבת מעד 256 תווים).
boolean- בוליאני (אמת\שקר-true\false)
[עריכה] הצבה
לשם הצבת ערך בתוך משתנה יש לבצע מספר שלבים:
- רושמים את שם המשתנה אליו מכניסים ערך.
- רושמים נקודותים (:), ולאחריהן שווה (=).
- רושמים את הערך שרוצים להכניס לתוך המשתנה.
- כהרגלנו בקודש, שמים נקודה פסיק (;) בסוף הפקודה.
הערות:
- משתנה יכול לקבל רק רק ערכים שהם מאותו הסוג שלו! יוצא הדופן היחיד לכלל זה, הוא שמשתנים מסוג ממשי (real) יכולים לקבל גם ערכים שלמים (integer).
- חל איסור מוחלט להכניס ערך למשתנה, כאשר אלו אינם מאותו הסוג. במקרה כזה התוכנית לא תהודר (תתקמפל), ויהיה צורך לבצע תיקונים.
- במידה ומשתמש יכניס כקלט ערך לא תקין, התוכנית תיעצר ועל המסך תתקבל שגיאה.
- לגבי ערכים מסוג תו (char) או מחרוזת (string): כאשר מציבים ערך מסוים בתוך משתנה מאחד הסוגים הללו, יש לשים בתחילתו ובסופו גרש אחד. דוגמה:
[עריכה] קלט ופלט
הפעולות הבסיסיות ביותר בפסקל הן פלט (הדפסת נתונים על מסך המשתמש) וקלט (קריאת נתון ע"י המשתמש). פלט נעשה באמצעות פקודת write או writeln (ההבדל - writeln יגרום לכך שלאחר שיודפס הערך, הערך הבא יכתב בשורה מתחתיו, כלומר, הוא "יורד שורה"). קלט נעשה באמצעות פקודת read או readln (אותו ההבדל). לאחר פקודת קלט או פלט יש להציב סוגריים ולכתוב בתוכן את הערך. במידה והערך שמודפס בפלט הוא יישומי בלבד באותה הפקודה (ולא ערך), יש להציבו בתוך גרשיים. בין שני ערכים שמודפסים\נקלטים יש להציב פסיק.
לאחר פעולת פלט או קלט, כמו לאחר כל פקודה בפסקל, יש להציב נקודה-פסיק.
דוגמה לפעולות קלט\פלט פשוטות (כקטע מתכנית):
readln(number);
writeln(number+1, ' is the following number');על המסך יוצג המספר העוקב של המספר שנקלט. מסך לדוגמא אם נקלט 2:
2
3 is the following number[עריכה] חילוק ושארית במספרים שלמים
בפסקל אין לחלק מספרים שלמים באמצעות פעולת החילוק הרגילה והיא חלה רק על מספרים ריאליים מתוך יציאה מנקודת מבט שכל חילוק היא פעולה ריאלית שיכולה להסתיים בשבר. לכן, יש להשתמש בחילוק שלם - div (קיצור של division), שמותיר את השארית ומשאיר אותנו עם ערך שלם. הפעולה ההפוכה של div היא mod, שנותנת לנו את השארית מפעולת החילוק. דוגמה לשימוש בפעולות חילוק ושארית במספרים שלמים:
var
number,hiluk:integer;
Begin
writeln('enter a number');
readln(number);
hiluk:=number div 2;
writeln(number, ' ', hiluk);
writeln(number mod 2);
end.במקרה ונקלט 4, יוצג
4 4 2
0במקרה ונקלט 5 יוצג
5 5 2
1[עריכה] עיצוב הדפסה
עיצוב הדפסה משנה את הדרך בה המידע מודפס על המסך, ולכן הוא בשימוש רק בפקודות פלט. לאחר הערך, ניתן להציב נקודותיים ולקבוע את המספר של הרווחים שתצור התוכנית לאחר הצגת הערך על המסך. נקודותיים נוספות יתנו אופציה לקבוע (בערך מספרי ריאלי, כמובן) כמה ספרות לאחר הנקודה העשרונית יוצגו. כך שולטים על רמת הדיוק של הפעולות החשבוניות של התכנית מבלי לפגוע בערך עצמו ומבלי לשמור את הערך המתקבל. לדוגמה, קטע מתכנית:
אם נקלט 7.5 יוצג:
[עריכה] התניה פשוטה
ההתניה בפסקל מתבצעת באמצעות פקודת "if", לאחריה התנאי, שבמקרה שמתבצע יבוצע מה שבא אחרי המילה "then", ואם לא יבוצע (לא חובה) יבוצע else. בפקודת if לא משתמשים רק בערכים מספריים, כי אחרת הכל ידוע מראש ואין סיבה להשתמש בהתניה (לדוגמה, "אם 0 קטן מ3 אזי בצע.."). בסוף ההתניה יש להציב נקודה פסיק. אם יש else, אין להציב נקודה פסיק לאחר ה-then. לדוגמא: כתוב תכנית שקולטת ערך. במידה והוא זוגי, היא מדפיסה את תוצאת החילוק שלו ב2, אחרת היא תדפיס את השארית של תוצאת חילוק זאת.
var
a:integer;
begin
readln(a);
if a mod 2=0 {כלומר, אין שארית לתוצאת החילוק ב2=זוגי}
then writlen(a div 2)
else writeln(a mod 2);
end.
במקרה של התניה בבוליאני, אין צורך לכתוב if boo=true , מכיוון שהתכנית בודקת אם הערך שנקלט הוא נכון, ולכן יש לכתוב if boo בלבד. אם היננו רוצים לבדוק שונוּת, יש שתי אפשרויות: 1. הסימן <>. 2. המילה NOT, שבאה בנוסף למילים כמו OR ו AND. (פירוט בטבלת אופרטורים במדריך הפקודות בקישורים החיצוניים.)
[עריכה] פונקציות בנויות
פונקציות מחזירות ערכים ואינן פקודה. כדי להשתמש בפונקציות שבנויות בפסקל, יש לכתוב את שם הפונקציה ואחריה זימון. הזימון בפוקנציות הבנויות הוא הערך שבו הפונקציה משתמשת כדי להחזיר את הערך המבוקש. אם, לדוגמא, שם הפונקציה המובנית הוא trunc (קיצוץ המספר לשלם), והערך הוא 6.4 יש לזמן כך (כדי שיוצב לתוך NUMBER שלם):
הערך המוחזר, במקרה הזה, הוא שלם, ולכן מוצב לתוך מספר שלם. בכל פעם שמזמנים פונקציה יש להתחשב בטיפוס הנתונים שהיא מחזירה ולהציב אותה במקום בהתאם. הפונקציות השכיחות ביותר בפסקל הן random, trunc, sqr, sqrt, round.
[עריכה] קישורים חיצוניים
-שכחתי להוסיף שם שלפני הצהרת המשתנים יש להוסיף var. (בטבלת ההשוואה)
