דלג לתפריט ראשי דלג לתוכן העמוד דלג לתחתית הדף (מקש קיצור 2)
לרישום ומידע נוסף השאירו פרטים

פסאודו קוד – מה זה ומה התועלת בו? כולל דוגמאות

ד"ר יוסי שלוסברג מהפקולטה למדעי המחשב, מסביר מה זהו פסאודו-קוד מתי משתמשים בו, וגם נותן דוגמה למי שרוצה לאתגר את עצמו

על המושג פסאודו-קוד שמעתם? מה המשמעות של המושג הזה, ואיך הוא קשור לשפות התכנות השונות שלומדים בתואר ראשון במדעי המחשב?
ד"ר יוסי שלוסברג, מרצה בפקולטה למדעי המחשב, מציין כי בתחום מדעי המחשב, אולי יותר מכל תחום דעת אחר, על העוסקים בו ועל הסטודנטים הלומדים תחום זה, להתמודד עם פתרון בעיות שלא על פי סכמה קבועה. הבעיות מגוונות, צבעוניות ועשירות תוכן, והפותרים והפותרות נדרשים לגמישות מחשבתית ולמידה לא מבוטלת של יצירתיות.

קלט, פלט ואלגוריתם

על איזה בעיות אנחנו מדברים? אתם אולי חושבים על בעיות טכנולוגיות מורכבות אבל ד"ר שלוסברג מדגים דרך בעיות פשוטות יותר.
1. בעיית השועל והכרם: שועל עומד ליד גדר ויודע כי קיימת פרצה אך אינו יודע היכן היא מצויה. במצב עניינים זה, איך השועל ינתב את צעדיו כך שימצא את הפרצה במהירות המרבית? 2. בעיית נשל הנחש: אורכו של נחש מסוים הוא y ס"מ. ידוע לנו כי נחש מגיח לעולם ואורכו x סנטימטרים, וידוע שבכל השלה גדל אורכו בסנטימטר אחד או שאורכו גדל פי שניים. מה מספר ההשלות המינימלי שהיו לנחש הזה? 3. בעיית מגדלי התאומים: לפניכם קוביות משחק בגבהים שונים, האם תוכלו להרכיב מכולן שני מגדלים בגובה שווה?

"כל אחת מהבעיות שהוצגו מאופיינת בקלט - נתוני הבעיה, ופלט רצוי", אומר ד"ר שלוסברג, "כדי להשיג את הפלט הרצוי נדרשת סדרה של צעדים מוגדרים היטב. סדרת צעדים זו קרויה במדעי המחשב אלגוריתם".

ד"ר שלוסברג מציין מושג זה מקורו בשמו של המתמטיקאי המוסלמי בן המאה התשיעית מוחמד אל-ח'וואריזמי, שתרם תרומה חשובה לפתרון שיטתי של המשוואה הריבועית ולייסודו של ענף האלגברה. "האלגוריתם – הרעיון או המתכון לפתרון - הוא ליבו של תחום מדעי המחשב, ויש מקומות שמכנים את התחום כולו אלגוריתמיקה. האלגוריתם אותו מפתח התוכניתן או התוכניתנית צריך שיהיה נכון (עוצר על כל קלט עם הפלט המתאים), אך חשוב גם שיהיה יעיל ויצרוך משאבי זמן ומקום קטנים ככל שניתן", אומר ד"ר שלוסברג.

לבטא את הרעיון האלגוריתמי בצורה הפשוטה ביותר

כיצד נרשם הפתרון? כאמור, עם המחשב יש לשוחח בשפה ברורה וחד משמעית. בשפה טבעית כמו עברית או אנגלית אפשר להשתמש במידה של ערפול: "הוסף קצת סוכר", "דני הוא גבוה". אך ההוראות האלגוריתמיות חייבות להיות מדויקות: "הוסף ל-x 1", "אם y=0 עצור".

"למעשה שפת המחשב היא אסמבלי – שפת מכונה - והיא מורכבת מרצפים של אפסים ואחדות, אך כדי להקל על עבודת התכנות נוצרו במהלך השנים שפות תכנות, שבהן ההוראות כתובות בשפה עילית קרובה יותר לשפת הדיבור (אך היא כמובן חד-משמעית) ואותה ניתן לתרגם לשפת מכונה", מסביר ד"ר שלוסברג. קיים מספר רב של שפות תכנות, ביניהן: בייסיק, פורטרן, פסקל, C, ג'אווה, פייתון. לכל שפת תכנות אוסף הוראות וחוקים משלה, ולכל שפה ישנו יתרון בתחום יישומי כזה או אחר.

"כשם שאפשר לכתוב שיר באנגלית או בצרפתית אבל הרעיון שאותו ניסה להביע המשורר הוא אותו הרעיון, כך אפשר לרשום פתרון אלגוריתמי בשפת תכנות כזו או אחרת אך הרעיון האלגוריתמי הוא אותו הרעיון", מסביר ד"ר שלוסברג.

"בקורסי האלגוריתמים השונים המועברים בלימודי מדעי המחשב, הפתרונות על פי רוב רשומים בפסאודו-קוד – קוד מדומה.
הפסאודו-קוד (Pseudo-Code) אינו קוד בשפת תכנות שאפשר להריצו במחשב והוא כתוב בשפה חופשית יותר ללא הדרישות הפורמליות והטכניות של שפות התכנות. יחד עם זאת הפסאודו-קוד כמו קוד הריצה חייב להיות חד-משמעי, וקל לתרגמו לקוד ריצה בשפת תכנות כלשהי. הפסאודו-קוד הוא למעשה הכלאה של אלמנטים משפות התכנות משולבים בשפה טבעית, ותפקידו לבטא את הרעיון האלגוריתמי בצורה הפשוטה ביותר".

לפניכם דוגמה לפסאודו-קוד בשם תעלומה:

תעלומה
1. קבל מהמשתמש מספר טבעי x
2. כל עוד x>0, בצע:
    2.1 הדפס את x
    2.1 אם x זוגי חלק את x ב-2.
    2.2 אחרת (x אינו זוגי) הכפל את x ב-3 והוסף ל-x 1.

האם הבנתם את פעולתו של האלגוריתם? (אם לא, לא נורא, יש עוד מה ללמוד)
עבור הקלט x=7 מה תהיה סדרת ההדפסות?

בהצלחה!