פסקל (Pascal) היא שפת תכנות עילית שפותחה ב־1970 על ידי ניקלאוס וירת. השם ניתן על שמו של המתמטיקאי והפילוסוף בלז פסקל. השפה תוכננה כדי להקל על לימוד תכנות ומדעי המחשב, והיא שימשה שפת לימוד וסטנדרט לתיאור אלגוריתמים עד אמצע שנות ה־90.
פסקל הושפעה במיוחד מ־ALGOL. בגרסתה המקורית היו כשלים תכנוניים שחלקם תוקנו בתקינה ורובם שופרו במהדרים (תוכנות שמתרגמות קוד לשפת מכונה). פסקל השפיעה על שפות מאוחרות יותר כמו Ada, Java ו‑Visual Basic.
חברות רבות פיתחו מהדרים וסביבות פיתוח לפסקל. מיקרוסופט ייצרה Microsoft Pascal, אבל הפופולרית הייתה Borland עם Turbo Pascal. Turbo Pascal הפך לחזק בשנות ה־80, הוסיף תמיכה בתכנות מונחה עצמים בגרסה 5.5, ובהמשך הוחלף בסביבת Delphi שמשתמשת בפסקל כשפת בסיס. קיימות גם רנדרים חופשיים כמו FreePascal.
לשפת פסקל יש תחביר מוגדר היטב. כל תוכנית מחולקת למקטעים, וייתכנו מקטעים ריקים פרט לגוף התוכנית שחייב להיות. השפה אינה מבחינה בין אותיות גדולות וקטנות (case‑insensitive), כלומר write ו‑WRITE זהים.
Program Hello_World;
Begin
Writeln ('Hello World!');
הקוד מציג שורה עם הטקסט ויורד לשורה הבאה.
בלוקים מתחילים ב‑Begin ונגמרים ב‑End. פקודות מופרדות בנקודה פסיק (;). הערות מסומנות באמצעות (* … *). מחרוזת היא בין גרשים בודדים (').
שים לב: הוספת נקודה פסיק אחרי הפקודה האחרונה בבלוק עלולה לגרום לשגיאת הידור; בקצה התוכנית יש לסיים בנקודה.
הכרזת קבועים נעשית עם Const. הערך אינו משתנה במהלך הריצה.
פסקל משתמשת במערכת טיפוסים סטטית (type safety). זאת אומרת שטיפוסי הנתונים מוגדרים מראש ויש הגבלות על המרות ביניהם. זה מקל על הבנת הקוד אך מקשה על פעולות מסוימות שנוחות בשפות אחרות.
הכרזת משתנים נעשית עם Var. אפשר להגדיר טיפוסים חדשים ולתת להם שמות.
מערכים מוצהרים עם טווח אינדקסים וסוג איברים. ניתן להשתמש בטווחים מספריים או תווים, ולבנות מערכים רב‑ממדיים. לפני שימוש יש לאפס מערך כדי למנוע ערכים אקראיים.
Record (רשומה) מאפשר ליצור טיפוס שמאגד מספר שדות יחד, כמו שם, גיל ומחרוזת. אפשר לבנות רשומות דינמיות שמשתנות בזמן ריצה באמצעות Case. המילה With מקצרת גישה לשדות.
Set (קבוצה) היא אוסף פריטים מטיפוס נתון. היא תומכת בפעולות כמו בדיקה אם אלמנט שייך, איחוד, חיתוך וחיסור. גודל מקסימלי הוא 256 פריטים.
שגרה (Procedure) היא קטע קוד שאינו מחזיר ערך. היא מוגדרת עם Procedure, מקבלת פרמטרים, וכוללת גוף בין Begin ו‑End. לדוגמה שגרה שמדפיסה מחרוזת מספר פעמים.
Function דומה לשגרה אך מחזירה ערך. יש לה שם וסוג ערך שמוחזר. בתוך הגוף יש להקצות את הערך לשם הפונקציה כדי להחזירו.
קלט/פלט נעשים בעזרת Read ו‑Write, ויש גם ReadLn ו‑WriteLn שמוסיפות ירידת שורה.
ההשמה נעשית עם :=. לדוגמה X := A + 5 משימה לתוצאה של הביטוי למשתנה X.
If מאפשר בדיקה של תנאי והרצת פקודה או בלוק פקודות לפי התוצאה. אפשר לקנן תנאים.
Case בוחן ערכים שונים של משתנה ומריץ את הקטע המתאים. בטורבו פסקל נוספה אפשרות Else.
For חוזרת על קטע קוד מספר קבוע של פעמים, עם משתנה מונה.
While מריצה את הקוד כל עוד תנאי אמת.
Repeat מריצה את הקוד וחוזרת עליו עד שהתנאי מתקיים. בניגוד ל‑While, היא מבוצעת לפחות פעם אחת.
פסקל תומכת במצביעים (pointers). אופרטור ^ משמש לגישה למצביע. New יוצר זיכרון חדש ו‑Nil מסמן חוסר מצביע. מבנים מקשרים (כמו רשימות מקושרות) מיושמים באמצעות מצביעים.
בתקן הבסיסי קיימות כ‑35 מילים שמורות (מילים שמיועדות לשימוש בשפה ולא ניתן לקרוא להן שמות משתנים). בתקן המורחב נוספו מילים נוספות.
תקן ISO 10206 הרחיב את פסקל והוסיף יכולות כמו מודולים (Units), מערכים דינמיים כפרמטרים, מחרוזות בגודל קבוע, גישה ישירה לקבצים, מספרים מרוכבים ועוד.
קיימות סביבות פיתוח מסחריות וחינמיות. הבולטות כללו את Turbo Pascal של Borland, Microsoft Pascal וסביבת FreePascal בקוד פתוח.
פסקל היא שפת תכנות שנוצרה ב־1970 על ידי ניקלאוס וירת. השם נתן לה על שם בלז פסקל. השפה נועדה לעזור ללמד תכנות.
תוכנית פסקל מחולקת לחלקים ברורים. השפה לא מבחינה בין אותיות גדולות וקטנות.
Program Hello_World;
Begin
Writeln ('Hello World!');
הקוד מציג "Hello World" על המסך.
כל קטע מתחיל ב‑Begin ונגמר ב‑End. פקודות מופרדות ב־; (נקודה פסיק). מחרוזות נכתבות בגרשים בודדים (').
Const משמש להכריז על ערכים שלא משתנים. Var מכריז על משתנים שממשיכים לקבל ערכים.
מערך הוא רשימה של פריטים מאותו סוג. אפשר ליצור מערכים דו‑ממדיים כמו ריבוע של תאים.
Record (רשומה) היא כמו קופסה שמכילה שדות שונים, למשל שם וגיל. ניתן לשמור כמה דברים יחד.
Set (קבוצה) היא אוסף פריטים. אפשר לבדוק אם פריט נמצא בקבוצה.
Procedure היא פעולה שלא מחזירה דבר. Function מחזירה ערך, כמו מספר.
Write ו‑Writeln מדפיסים טקסט למשתמש. Read ו‑ReadLn קוראים קלט מהמשתמש.
If בודק תנאי ומחליט מה להריץ. For חוזר שוב ושוב מספר פעמים. While חוזר כל עוד התנאי נכון. Repeat חוזר עד שתנאי מתקיים.
Pointer (מצביע) הוא כתובת לזיכרון. New יוצר מקום חדש בזיכרון. Nil אומר שאין כתובת.
תקנים חדשים הוסיפו יכולות נוספות כמו מודולים ומחרוזות טובות יותר.
יש כלים שונים שמתרגמים קוד פסקל לקבצים שמחשב יכול להריץ. חלקם חינמיים כמו FreePascal.
תגובות גולשים