אלגוריתמים וקוד מדומה
הוצג| English | משמעות |
|---|---|
| algorithm/ˈælɡərɪθəm/ | אלגוריתם |
| sequence/ˈsiːkwəns/ | רצף |
| deterministic/dɪˌtɜːmɪˈnɪstɪk/ | דיטמיניסטיבי |
| identifier table/aɪˈdentɪfaɪə ˈteɪbl/ | טבלת מזהים |
| variable/ˈveərɪəbl/ | משתנה |
| data type/ˈdeɪtə taɪp/ | סוג נתונים |
| pseudocode/ˈsuːdəʊkəʊd/ | קוד מדומה |
| assignment/əˈsaɪnmənt/ | הערכה |
| loop/luːp/ | לולאה |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | לולאת שליטה במניין |
| pre-condition loop/priː kənˈdɪʃn luːp/ | לולאת תנאי מקדים |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | לולאת תנאי מאוחר |
| iteration/ˌɪtəˈreɪʃn/ | חזרה |
| selection/sɪˈlekʃn/ | בחירה |
| flowchart/ˈfləʊtʃɑːt/ | תרשים זרימה |
| stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ | התמקדות הדרגתית |
הקו הרווח היקר בהיסטוריה
- ב-22 ביולי 1962, רקטת Mariner 1, המיועדת לונוס, פוצעה 293 שניות לאחר השקה.
- הגורם היה פסיק אחד חסר מעל סימן במשוואות ההנחיה. המחשב ביצע את הצעדים הכתובים בדיוק, והצעדים הכתובים היו שגויים.
- מחשב לעולם לא ממלא מה שהתכוונת. כל צעד שנותנת לו חייב להיות בעל משמעות אחת בדיוק.
- לכן שיעור זה עוסק בכתיבת צעדים שמכונה יכולה לבצע: אלגוריתמים.
מהו אלגוריתם
- Algoritm הוא פתרון לבעיה המבוער כ-רצף של צעדים מוגדרים.
- כל שלב הוא לא משמעותי (משמעות אחת), דיטרמיניסטיבי (אותו קלט → אותו תוצא), סופי (השלבים נגמרים) ו-יעיל (כל שלב ניתן לביצוע בפועל).
- הוא אומר מה לעשות, בלי קשר לשפת תכנות כלשהי, והכל עוקב אחר קלט → עיבוד → תוצא.

לכל אלגוריתם יש אותו צורה: קלט, עיבוד, תוצא
אלגוריתם הוא "מחושב". משמעות זאת:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מחושב = אותו קלט → אותה תוצאה בכל פעם. (סופי = השלבים נגמרים; חד-משמעי = משמעות אחת לכל שלב.)
דוגמה פתרה: טבלת המזהים
- לפני כתיבת קוד, רשימו את כל חלקי הנתונים ב-טבלת מזהים: השם המשתנה, סוג הנתונים והתיאור.
- תוכנת מלאי של חנות מאחסנת
"Fruit",20/02/2025,12.67וTRUE. בשאלת הבחינה נדרשים שם וסוג לכל אחד מהם. Category : STRING(קטגוריית מלאי),DateSold : DATE(מתי נמכר),ItemCost : REAL(העלות),InStock : BOOLEAN(האם יש במלאי?).- נקודה אחת לכל שורה על השם וגם הסוג, לכן כתבו את הסוג בדיוק כפי שמנחה הפסודוקוד עושה:
INTEGER,REAL,STRING,CHAR,BOOLEAN,DATE.

טבלת מזהים מיישמת את שם כל חלק נתונים לפני שכתבים קוד
בטבלת זיהויים, סוג הנתונים עבור ערך כמו 12.67 (עלות) הוא ____.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מספר עם חלק עשרוני הוא REAL. INTEGER הוא למספרים שלמים, STRING לטקסט, BOOLEAN ל-THE/FALSE ו-DATE לתאריך.
שלושת הבניינים
אם … אז … אלא אם כן … סוף-אם
- הקצהת אוצרת ערך באמצעות חץ,
Total ← Total + Value;=משמש להשוואה.DIVהיא חלוקה של מספר שלם וMODשארית החלוקה, ולכן17 MOD 5 = 2.
INPUT Age # sequence
IF Age >= 18 THEN
# selection
ENDIF
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
FOR Count <- 1 TO 10 # iteration
OUTPUT Count
NEXT Count

שלושת בלוקי הבניין של כל אלגוריתם
בחירה: עקוב אחר ветки IF / ELSE
גרור את הנקודות ותצפה איזה ветка רץ. בחירה בוחנת כל תנאי בתורו ולוקחת את הראשון שהוא נכון — כך עובד IF … ELSE IF … ELSE.
התאם כל אחד מבני הבנייה השלושה לתפקיד שלו.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
כל אלגוריתם בנוי משלושה מבנים בסיסיים — רצף, בחירה ואיטרציה.
במדומי-קוד זה, איזה סממן מייצג הקצה (אחסון ערך)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הקצה משתמשת ב← (לדוגמה x ← 5); = שמורה להשוואה.
מהו הערך של 17 MOD 5?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
MOD נותן שארית: $17 = 3 \times 5 + 2$, ולכן 17 MOD 5 = 2. (17 DIV 5 = 3.)
איזו לולאה?
FOR … NEXTכאשר יודעים כמה פעמים: לולאת בקרת ספירה.WHILE … ENDWHILEבודק את התנאי לפני כל עברת לולאה, ולכן הגוף עשוי להתבצע אפס פעמים: לולאת תנאי מקדים.REPEAT … UNTILבודק את התנאי אחרי כל עברת לולאה, ולכן הגוף תמיד מתבצע לפחות פעם אחת: לולאת תנאי מאחר. אימות קלט הוא המקרה הקלאסי.- תשובה המבקשת "לתאר את מבנה האיטרציה" מציגה את שם הלולאה, אומרת איפה נבדק התנאי, ומציגה את ההשלכה.

לולאת WHILE בודקת לפני ביצוע הגוף; לולאת REPEAT … UNTIL בודקת לאחר כך
מה ההבדל בין לולאת WHILE ללולאת REPEAT...UNTIL?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
WHILE בוחנת קודם (ייתכן שתפעיל 0 פעמים); REPEAT...UNTIL בוחנת לאחר, ולכן תמיד פועלת לפחות פעם אחת.
לולאת FOR היא מצטופפת-ספירה (חוזרת מספר קבוע של פעמים), בעוד ש-lולאת WHILE היא מצטופפת-תנאי (חוזרת עד שהתנאי משתנה).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
השתמש ב-FOR כשאתה יודע כמה סיבובים; השתמש ב-WHILE/REPEAT כשאתה חוזר עד שמושהה משהו יהפוך לאמת.
דוגמה פתורה: ממילים לפסאודוקוד
- משימה: לקבל 100 ערכים שלמים, לחבר רק את החיוביים מהם, ולהוציא את הסכום הכולל.
- לתכנן תחילה את הנתונים:
Count,TotalוNextNumber, כולםINTEGER. ולאחר מכן שלושת המבנים יעשו את השאר.
DECLARE Count, Total, NextNumber : INTEGER
Total <- 0
FOR Count <- 1 TO 100
INPUT NextNumber
IF NextNumber > 0 THEN
Total <- Total + NextNumber
ENDIF
NEXT Count
OUTPUT Total
- השאלה המשלימה מבקשת זיהוי המבנים: איטרציה (לולאת
FORחוזרת על קבלת הקלט 100 פעמים), בחירה (IFמחליטה האם לערך יוסף) ורצף (הפקודות מתבצעות בסדר).
זיהוי מבנים בקטע טקסט
- שאלה פופולרית מציגה חמישה קטעי פסאודוקוד ובוקשת לסמן אילו אחד מהם משתמש ב-הקצה, בחירה או איטרציה.
Result ← CalculateTotal()הוא הקצה.WHILE IsClosedהיא איטרציה.REPEAT … INPUT Value … UNTIL Sales[4] > Valueהיא איטרציה וגם הקצה (INPUTמאחסן ערך). IF Sales[Current] <= 150 THEN Discount ← TRUE סוף-אם- סקורו כל שורה בקטע, לא רק את הראשונה. ייתכן ששורה תדרוש סימון כפול.
אילו מבנים המערך הזה משתמש? REPEAT … INPUT Value … UNTIL Total > 100. בחר את כל האפשרויות הרלוונטיות.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
REPEAT … UNTIL היא איטרציה, וINPUT Value מאחסנת ערך, מה שנחשב להקצה. אין כאן IF או CASE, ולכן אין בחירה — תנאי UNTIL שולט בלולאה ואינו בוחר בין ענפים.
דיאגרמת זרימה
- דיאגרמת זרימה תיעד את אותו אלגוריתם באמצעות ציור. אליפסות הן
STARTוEND, מלבנות הן תהליכים, מקביליות הןINPUT/OUTPUT, ומעיינית היא החלטה. - מעיינית היא מקום בו מתרחשת בחירה, וקו זרימה שמחזיר למעלה בדיאגרמה הוא לולאה.
- הבחינה שואלת בשתי הדרכים: פסאודוקוד מדיאגרמת זרימה, ודיאגרמת זרימה מפסאודוקוד או אנגלית מבנית. כל סמל שתציירו צריך להתייחס לשורה אחת בפסאודוקוד.

כל סמל במפת ח的流程 מתאים לסוג אחד של פקודת פסדוקוד
בתרשים זרימה, מה מייצג מעין יהלום?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
יהלומים משמשים לבחירה, ויהלום שקו הזרימה שלו חוזר כלפי מעלה בתרשים הוא בדיקת לולאה. מלבנים הם תהליכים, מקבילית קלט/תפוקה, ביציות START ו-END.
דוגמה מפורטת: משחק הניחוחות
- התוכנית בוחרת מספר שלם אקראי בין 1 ל-100, ולאחר מכן מבקשת ניחושים עד שהמשתמש יצליח. המשתמש חייב לנח לפחות פעם אחת, ולכן הלולאה היא
REPEAT … UNTIL.
DECLARE Target, Guess : INTEGER
Target <- INT(RAND(100)) + 1
REPEAT
INPUT Guess
IF Guess < Target THEN
OUTPUT "Too low"
ELSE
IF Guess > Target THEN
OUTPUT "Too high"
ENDIF
ENDIF
UNTIL Guess = Target
OUTPUT "Correct"
- עקובו אחר מפת הח流程: יהיה קריטריון הצבתה אחד לבדיקת הלולאה, שניים להעצות, וכל קו זרימה מחזיר את השלט בחזרה ל
INPUT Guessאו לEND.

משחק הניחוחות כמפת ח流程: הלולאה חוזרת לכניסת הנתונים עד שהניחוש תואם
מדוע REPEAT … UNTIL הוא הלולאה הנכונה למשחק הניחוחות?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
לולאת תנאי סיום (post-condition) תמיד מפעילה את גופה פעם אחת לפני הבדיקה, מה שתואם למשחק הדורש לפחות ניחוח אחד. לולאת WHILE דורשה ניחוח לפני הלולאה רק כדי להיות משהו לבדוק.
פישוט הדרגתי
- פישוט הדרגתי פירונו להתחיל ממבנה כללי ולהרחיב כל צעד לצעדים מפורטים יותר, שוב ושוב, עד שכל צעד ניתן לכתיבה ישירה כפקודת פסדוקוד.
- "מעבד הזמנה" → "קבלת הפריטים", "חישוב הסכום הכולל", "קבלת תשלום" → "חישוב הסכום הכולל" הופך ל"לכל פריט, הוספת מחיר × כמות; יישום הנחה כלשהי".
- כל רמה היא פישוט של הרמה שמעליה, והרמות המוגמרות יחד הן העיצוב. "תאר פישוט הדרגתי" דורש את המבנה הכללי, ההרחבה וכלל עצירת הפישוט.

פשט כל צעד עד שהוא ניתן לקידוד ישיר
סדרו את שלבי ההתפתחות השלבית בסדר.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
ציינו תחילה, ואז פתחו בשלב אחר שלב; עצרו כאשר צעד הוא שורת פסאודוקוד אחת.
פקודות לוגיקה
- חלקים מהפתרון מוגדרים על ידי פקודות לוגיקה: תנאים הבנויים מהשוואות (
=,<>,<,>,<=,>=) המחוברים על ידיAND,ORוNOT. - נקודת סימון תקפה:
Mark >= 0 AND Mark <= 100. הנחה חלה אם הלקוח הוא חבר או משקיע מעל 50:IsMember OR Total > 50. NOT (Mark < 40)אומר את אותו דבר כמוMark >= 40. כתוב את הפקודה, ולאחר מכן בדוק אותה עם ערך בכל צד של הגבול.

השוואות המחוברות על ידי AND, OR וNOT בונות את התנאים שהאלגוריתם זקוק להם
NOT (Mark < 40) מתקיים עבור אותם בדיוק ערכים של Mark כמו Mark >= 40.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הכחשת "קטן מ-40" נותנת "40 או יותר". בדקו את הגבול: Mark = 40 הופך את Mark < 40 לשקר, ולכן הכחשתו היא נכונה, ו-40 >= 40 גם כן נכון.
סימונים נופלים מהיד
←מבצע השמה ו=ביצוע השוואה.IF Total = 0הוא בדיקה;Total = 0בשורה עצמאית אינו מביא נקודות.- לכל קונסטרוקציה סוגר:
ENDIF,ENDWHILE,UNTIL,NEXT,ENDCASE. חוסר סוגר שובר את מבנה הסימון. - הכרז לפני השימוש והתחל סכום נע ל-
0. WHILEעשוי לעולם לא להיכלל, בעוד ש-REPEATתמיד יבוצע פעם אחת. בחר את הלולאה המתאימה למשימה, והסבר מדוע אם נתבקש.
הבנתך מושלמת
- צעדי האלגוריתם הם מובנים במידה, דטרמינטיביים, סופיים ויעילים; תכנן את הנתונים בטבלת מזהים
- שלושה מבנים: רצף, בחירה (
IF/CASE), איטרציה (FOR/WHILE/REPEAT);WHILEבודק לפני, ו-REPEATלאחר ביצוע - גרף זרימה ופסאודוקוד מתארים אותו אלגוריתם; הדקק צעד-צעד מרחיב תוכנית אב עד שתוכל לקוד אותה
- התנאים הם ביטויים לוגיים: השוואות המחוברות עם
AND,OR,NOT