דלג לתוכן

אלגוריתמים ותכנות

עקרונות מדעי המחשב - AP · נושא 3

שיעור וידאו לנושא זה פתח את עמוד הוידאו
9:17

אלגוריתמים ותכנות

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

קריאת קול באנגלית · תרגום אנגלי + סינית שרוף בתוך הסרטון

הקוד למטה משתמש ב-伪代码 AP CSP – ההערכה הייחוסית הניטרלית בשפה. ההקצה נכתב a ← expression, והמדדים ברשימה מתחילים ב-1.

3.1

משתנים והקצאות

סיילבוס

הבנה מתמשכת (AAP-1): כדי למצוא פתרונות ספציפיים לבעיות הניתנות לגנרליזציה, מתכנתים מייצגים ומארגנים נתונים בדרכים שונות.

מטרת למידה AAP-1.A: לייצג ערך באמצעות משתנה. [מיומנות 3.A]

  • AAP-1.A.1 משתנה הוא אבסטרקציה בתוך תוכנית שיכולה להכיל ערך. למשתנה כלשהו יש אחסון נתונים המצומד לו המייצג ערך אחד בכל פעם, אך ערך זה יכול להיות רשימה או קבוצה אחרת המכילה בתורה מספר ערכים.
  • AAP-1.A.2 השימוש בשמות משתנים משמעותיים תורם לקריאות הקוד ולהבנת הערכים המיוצגים על ידי המשתנים.
  • AAP-1.A.3 חלק מהשפות מספקות סוגי נתונים לייצוג מידע, עליהם נתייחס באמצעות משתנים. סוגים אלו כוללים מספרים, בוליאנים, רשימות ומחרוזות.
  • AAP-1.A.4 לערכים מסוימים יש ייצוג טוב יותר באמצעות סוג נתונים אחד בהשוואה לסוג אחר.

מטרת למידה AAP-1.B: לקבוע את ערך משתנה כתוצאה ממינון. [מיומנות 4.B]

  • AAP-1.B.1 אופרטור המינון מאפשר לתוכנית לשנות את הערך המיוצג על ידי משתנה.

  • AAP-1.B.2 דף ההפניות לבחין מספק את האופרטור "$\leftarrow$" לשימוש במינון. לדוגמה,

    טקסט:

    a ← expression

    בלוק:

    a ← expression

    מחשב expression ולאחר מכן ממין העתקה של התוצאה למשתנה a.

  • AAP-1.B.3 הערך המאוחסן במשתנה יהיה הערך שהמין אותו לאחרונה. לדוגמה:

    a ← 1 b ← a a ← 2 display(b)

    עדיין מציג 1.

מקור: תיאור הקורס והמבחן של College Board AP

משתנה הוא מקום בעל שם המוחזק בו ערך. מפעיל ההקצה מאחסן את הערך בצד ימי לתוך המשתנה בצד שמالي:

משתנה הוא מקום אחסון בעל שם שערכו יכול להשתנות
משתנה הוא אחסון בעל שם שערכו יכול להשתנות
a ← 5
b ← a + 3      // b is now 8

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

חקור

צפו במשתנה ששומר ומשנה את ערכו

משתנה הוא תיבה עם שם שאוחדת ערך אחד בכל פעם. הקצה מעתיקה ערך לתוך התיבה; הקצה חוזרת כוססת כל מה שהיה שם.

מילון מונחים אימון
English עברית
variable/ˈveərɪəbl/ משתנה
assignment/əˈsaɪnmənt/ הקצה
Data abstraction/ˈdeɪtə əbˈstrækʃn/ השחתת נתונים
remainder/rɪˈmeɪndə/ שארית
string/strɪŋ/ מחרוזת
concatenation/kənˌkætəˈneɪʃn/ הדבקה
Boolean expression/ˈbuːlɪən ekˈspreʃn/ ביטוי בוליאני
conditional (selection)/kənˈdɪʃənl/ תנאי (בחירה)
nested conditional/ˈnestɪd kənˈdɪʃənl/ תנאי מצטלב
Iteration (a loop)/ˌɪtəˈreɪʃn/ איטרציה (לולאה)
infinite loop/ˈɪnfɪnət luːp/ לולאת אינסוף
algorithm/ˈælɡərɪθəm/ אלגוריתם
list/lɪst/ רשימה
3.2

הלכידות נתונים

סיילבוס

הבנה מתמשכת (AAP-1): כדי למצוא פתרונות ספציפיים לבעיות הניתנות לגנרליזציה, מתכנתים מייצגים ומארגנים נתונים בדרכים שונות.

מטרת למידה AAP-1.C: נציג רשימה או מחרוזת באמצעות משתנה. [מיומנות 3.A]

  • AAP-1.C.1 רשימה היא סדרה מסודרת של אלמנטים. לדוגמה,

    [value1, value2, value3, ...]

    מתארת רשימה שבה value1 הוא האלמנט הראשון, value2 הוא האלמנט השני, value3 הוא האלמנט השלישי, וכדומה.

  • AAP-1.C.2 אלמנט הוא ערך יחיד ברשימה שמוקצה לו אינדקס ייחודי.

  • AAP-1.C.3 אינדקס הוא שיטה נפוצה להתייחס לאלמנטים ברשימה או במחרוזת באמצעות מספרים טבעיים.

  • AAP-1.C.4 מחרוזת היא סדרה מסודרת של תווים.

מטרת למידה AAP-1.D: עבור המערכת המופשטת: א. פיתוח המערכת המופשטת באמצעות רשימות לאחסון של מספר אלמנטים. [מיומנות 3.B] ב. הסבר על אופן בו השימוש בהמערכת המופשטת מנהל את המורכבות בקוד התוכנה. [מיומנות 3.C]

  • AAP-1.D.1 המערכת המופשטת מספקת הפרדה בין התכונות המופשטות של סוג הנתונים לבין פרטי ההצגה הממשיים שלה.

  • AAP-1.D.2 המערכות המופשטות מנהלות מורכבות בתוכניות על ידי מתן שמם לקבוצת נתונים ללא התייחסות לפרטים הספציפיים של ההצגה.

  • AAP-1.D.3 ניתן ליצור מערכות מופשטות באמצעות רשימות.

  • AAP-1.D.4 פיתוח המערכת המופשטת כדי לממש אותה בתוכנית עשוי לגרום לתוכנית שקלה לפיתוח ולתחזוקה.

  • AAP-1.D.5 המערכות המופשטות מכילות לעיתים אלמנטים מסוגים שונים.

  • AAP-1.D.6 השימוש ברשימות מאפשר לטפל בפריטים קשורים רבים כערך אחד. רשימות מכונות בשמות שונים, כמו מערך, בהתאם לשפת התכנות.

    • הערה על חריגות (EK AAP-1.D.6): השימוש ברשימות מקושרות מחוץ לתחום החקר של הקורס ובמבחן AP.
  • AAP-1.D.7 דף העזר לבחינה מספק את הסימון

    [value1, value2, value3, ...]

    ליצירת רשימה שבה הערכים הללו הם הפריטים הראשון, השני, השלישי, וכדומה. לדוגמה,

    • טקסט:

      aList ← [value1, value2, value3, ...]

      בלוק:

      aList ← value1, value2, value3

      יוצר רשימה חדשה המכילה את הערכים value1, value2, value3, ו... באינדקסים 1, 2, 3, ו... בהתאמה, ומיישר אותה לaList.

    • טקסט:

      aList ← []

      בלוק:

      aList ← (ריק)

      יוצר רשימה ריקה חדשה ומטיל אותה ל-aList.

    • טקסט:

      aList ← bList

      בלוק:

      aList ← bList

    מקצה העתק של הרשימה bList לרשימה aList. לדוגמה, אם bList מכילה [20, 40, 60], אזי גם aList תכיל [20, 40, 60] לאחר ההקצה.

  • AAP-1.D.8 דף העזר לבחינה מתאר מבנה רשימה שבו ערכי האינדקס הם מ-1 ועד למספר האלמנטים ברשימה, כולל המספר האחרון. עבור כל פעולות הרשימה, אם אינדקס הרשימה קטן מ-1 או גדול מאורך הרשימה, מופיע הודעת שגיאה והתוכנית תופסק.

מקור: תיאור הקורס והמבחן של College Board AP

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

3.3

ביטויים מתמטיים

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרת הלמידה AAP-2.A: לביטא אלגוריתם המשמש סידור ללא שימוש בשפת תכנות. [מיומנות 2.A]

  • AAP-2.A.1 אלגוריתם הוא סט סופי של הוראות שמבצע משימה ספציפית.
  • AAP-2.A.2 מעבר לשפות תכנות ויזואליות וטקסטואליות, אלגוריתמים יכולים להיות מובעים בדרכים מגוונות, כגון שפה טבעית, דיאגרמות ופסאו-קוד.
  • AAP-2.A.3 אלגוריתמים המבוצעים על ידי תוכניות ממומשים באמצעות שפות תכנות.
  • AAP-2.A.4 כל אלגוריתם יכול להיבנות באמצעות שילובים של סידור, בחירה וחזרה.

מטרת הלמידה AAP-2.B: לייצג תהליך אלגוריתמי צעד-בצעד באמצעות פקודות קוד רצף. [מיומנות 2.B]

  • AAP-2.B.1 סידור הוא היישום של כל צעד באלגוריתם בסדר שבו נתונות פקודות הקוד.
  • AAP-2.B.2 פקודת קוד היא חלק ממקוד התוכנית שמבטא פעולה ביצועית.
  • AAP-2.B.3 ביטוי יכול להורכב מערך, משתנה, אופרטור או קריאת פרוצדורה החזירה ערך.
  • AAP-2.B.4 ביטויים מוערכים כדי לייצר ערך יחיד.
  • AAP-2.B.5 הערכת ביטויים נעשית לפי סדר פעולות מוגדר על ידי שפת התכנות.
  • AAP-2.B.6 פקודות רצף מבוצעות בסדר שבו הן מופיעות בקטע הקוד.
  • AAP-2.B.7 בהירות וקריאות הן considerations חשובות כאשר מביעים אלגוריתם בשפת תכנות.

מטרת הלמידה AAP-2.C: להעריך ביטויים המשמשים אופרטורים אריתמטיים. [מיומנות 4.B]

  • AAP-2.C.1 אופרטורים אריתמטיים הם חלק מרוב שפות התכנות ומכללים אופרטורים של חיבור, חיסור, כפל, חלוקה ואופרטור מודולוס.

  • AAP-2.C.2 דף העזר לבחינה מספק a MOD b, המעריך את שארית החלוקה כאשר a מחולק ב-b. הנח כי a הוא שלם הגדול או שווה ל-0 ו-b הוא שלם הגדול מ-0. לדוגמה, 17 MOD 5 מעריך ל-2.

  • AAP-2.C.3 דף העזר לבחינה מספק את האופרטורים הארימטיים +, -, *, / ו-MOD.

    טקסט ומסגרת:

    • a + b
    • a - b
    • a * b
    • a / b
    • a MOD b

    אלו משמשים לבצע פעולות אריטמיות על a ועל b. לדוגמה, 17 / 5 מעריך ל-3.4.

  • AAP-2.C.4 סדר הפעולות המשמש במתמטיקה חל גם בהערכת ביטויים. לאופרטור MOD יש אותה עדיפות כמו לאופרטורים * ול-/.

מקור: תיאור הקורס והמבחן של College Board AP

תוכניות מחשבות עם הפעולונים +, -, *, /, וMOD (השארת של חילוק, למשל 17 MOD 5 הוא 2). ביטויים עוקבים אחרי סדר פעולות רגיל. MOD שימושי במיוחד לבדיקת חלוקיות (n MOD 2 = 0 פירושו שn הוא זוגי) ולעטיפת ערכים סביב טווח.

חקור

חשבו ביטוי צעד אחר צעד

ביטוי מוערך לפי סדר פעולות: כפל וחילוק מתבצעים לפני חיבור וחסר, משמאל לימין.

3.4

מחרוזות

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרות למידה AAP-2.D: הערך ביטויים המעבדים מחרוזות. [כישור 4.B]

  • AAP-2.D.1 הצמדת מחרוזות (String concatenation) מחברת שתי מחרוזות או יותר קצה לקצה ליצירת מחרוזת חדשה.
  • AAP-2.D.2 תת-מחרוזת היא חלק ממחרוזת קיימת.

מקור: תיאור הקורס והמבחן של College Board AP

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

3.5

ביטויים בוליאניים

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרות למידה AAP-2.E: עבור קשרים בין שני משתנים, ביטויים או ערכים: א. כתוב ביטויים באמצעות אופרטורים יחסיים. [כישור 2.B] ב. הערך ביטויים המשתמשים באופרטורים יחסיים. [כישור 4.B]

  • AAP-2.E.1 ערך בוליאני הוא או נכון או שגוי.

  • AAP-2.E.2 דף העזר לבחינה מספק את אופרטורי היחס הבאים: =, ≠, >, <, ≥ ו-≤.

    טקסט ומסגרת:

    • a = b
    • a ≠ b
    • a > b
    • a < b
    • a ≥ b
    • a ≤ b

    אלו משמשים לבדוק את הקשר בין שני משתנים, ביטויים או ערכים. השוואה באמצעות אופרטור יחסי מערכי תוצאה בוליאנית. לדוגמה, a = b מעריך ל-true אם a ו-b שווים; אחרת, הוא מעריך ל-false.

מטרות למידה AAP-2.F: עבור קשרים בין ערכים בוליאניים: א. כתוב ביטויים באמצעות אופרטורים לוגיים. [כישור 2.B] ב. הערך ביטויים המשתמשים באופרטורים לוגיים. [כישור 4.B]

  • AAP-2.F.1 דף העזר לבחינה מספק את האופרטורים הלוגיים NOT, AND ו-OR, המערכים תוצאה בוליאנית.

  • AAP-2.F.2 דף העזר לבחינה מספק

    טקסט:

    NOT condition

    בלוק:

    NOT condition

    שמעריך true אם condition הוא false; אחרת מעריך false.

  • AAP-2.F.3 דף העזר לבחינה מספק

    טקסט:

    condition1 AND condition2

    בלוק:

    condition1 AND condition2

    שמעריך true אם גם condition1 וגם condition2 הם true; אחרת מעריך false.

  • AAP-2.F.4 דף העזר לבחינה מספק

    טקסט:

    condition1 OR condition2

    בלוק:

    condition1 OR condition2

    שמעריך true אם condition1 הוא true או אם condition2 הוא true או אם גם condition1 וגם condition2 הם true; אחרת מעריך false.

  • AAP-2.F.5 האופרנד של אופרטור לוגי הוא ביטוי בוליאני או ערך בוליאני יחיד.

מקור: תיאור הקורס והמבחן של College Board AP

ביטוי בוליאני מתאפיין בתוצאה של true או false. הוא משתמש באופרטורי יחס (=, ≠, <, >, ≤, ≥) ובאופרטורים לוגיים NOT, AND, OR:

שלושת משפחות המפעילים: אריתמטי, יחסי ולוגי
שלושת משפחות המפעילים: אריתמטי, יחסי ולוגי
  • NOT הופך ערך לחיובי/שלילי (או להפוך),
  • AND נכון רק כאשר שני הצדדים נכונים,
  • OR נכון כאשר לפחות אחד מהצדדים נכון.

תנאים אלו מנהלים כל החלטה ולולאה.

חקור

נסו טבלת אמת של OR

ביטוי בוליאני הוא או נכון (1) או שגוי (0). OR הוא נכון כאשר לפחות אחד מהקלטים הוא נכון; הפכו את הקלטים כדי לראות כל מקרה.

3.6

תנאים (בחירה)

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרות למידה AAP-2.G: לבטא אלגוריתם המשתמש בבחירה ללא שימוש בשפת תכנות. [מיומנות 2.A]

  • AAP-2.G.1 בחירה קובעת אילו חלקים מאלגוריתם יוצאו לפועל בהתבסס על כך שהתנאי הוא true או false.

מטרות למידה AAP-2.H: עבור בחירה: א. כתוב הודעות תנائية. [מיומנות 2.B] ב. קבע את התוצאה של הודעות תנائية. [מיומנות 4.B]

  • AAP-2.H.1 הודעות תנائية, או "הודעות if", משפיעות על הזרימה הרצף של השליטה על ידי ביצוע הודעות שונות בהתבסס על ערך הביטוי הבוליאני.

  • AAP-2.H.2 דף העזר לבחינה מספק

    טקסט:

    IF(condition) { <block of statements> }

    בלוק:

    IF condition block of statements

    שבו הקוד בblock of statements יוצא לפועל אם הביטוי הבוליאני condition מעריך true; אין פעולה כלשהי אם condition מעריך false.

  • AAP-2.H.3 דף העזר לבחינה מספק

    טקסט:

    IF(condition) { <first block of statements> } ELSE { <second block of statements> }

    בלוק:

    IF condition first block of statements ELSE second block of statements

    שבו הקוד בfirst block of statements יוצא לפועל אם הביטוי הבוליאני condition מעריך true; אחרת, הקוד בsecond block of statements יוצא לפועל.

מקור: תיאור הקורס והמבחן של College Board AP

תנאי (בחירה) קובעים איזה קוד יוצא לפועל. IF מפעיל בלוק רק כאשר התנאי שלו נכון; ELSE מציע חלופה:

בחירה בין מסלולים בהתאם לתנאי
הבחירה בוחנת בין מסלולים על בסיס תנאי
IF (score ≥ 60)
{
    DISPLAY("Pass")
}
ELSE
{
    DISPLAY("Fail")
}
חקור

עקבו אחרי החלטה של if / else

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

3.7

תנאים מקוננים

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרות למידה AAP-2.I: עבור בחירה מקושרת: א. כתוב תנאים מודגשים. [מיומנות 2.B] ב. קבע את התוצאה של תנאים מודגשים. [מיומנות 4.B]

  • AAP-2.I.1 תנאים מודגשים מכילים תנאים בתוך תנאים.

מקור: תיאור הקורס והמבחן של College Board AP

תנאי מקונן מציב IF אחד בתוך אחר (או מקשר ELSE IF) כדי לבחור בין יותר משני מסלולים. רק הערוכה הראשונה המתאימה תופעל:

IF (g ≥ 90)      { grade ← "A" }
ELSE IF (g ≥ 80) { grade ← "B" }
ELSE             { grade ← "C" }
3.8

איטרציה

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרת למידה AAP-2.J: מבטא אלגוריתם המשתמש באיטרציה ללא שימוש בשפת תכנות. [מיומנות 2.A]

  • AAP-2.J.1 איטרציה היא חלק חוזר באלגוריתם. האיטרציה חוזרת מספר פעמים ספציפי או עד שהתנאי הנתון מתקיים.

מטרת למידה AAP-2.K: לגבי איטרציה: א. כתוב פקודות איטרציה. [מיומנות 2.B] ב. קבע את התוצאה או ההשפעה המשנית של פקודות איטרציה. [מיומנות 4.B]

  • AAP-2.K.1 פקודות איטרציה משנות את זרימת הבקרה הרציף על ידי חזרה על סט של פקודות אפס או יותר פעמים, עד שהתנאי העצירה מתקיים.

  • AAP-2.K.2 דף ההפניות לבחינה מספק

    טקסט:

    REPEAT n TIMES { <block of statements> }

    בלוק:

    REPEAT n TIMES block of statements

    שבו block of statements מופעל n פעמים.

  • AAP-2.K.3 דף ההפניות לבחינה מספק

    טקסט:

    REPEAT UNTIL(condition) { <block of statements> }

    בלוק:

    REPEAT UNTIL condition block of statements

    שבו הקוד בblock of statements חוזר עד שהביטוי הבוליאני condition מתאפשר לtrue.

  • AAP-2.K.4 באיטרציה REPEAT UNTIL(condition), לולאה אינסופית נוצרת כאשר התנאי הסיום לעולם לא יתאפשר לtrue.

  • AAP-2.K.5 באיטרציה REPEAT UNTIL(condition), אם התנאי מתאפשר לtrue בהתחלה, גוף הלולאה לא יופעל כלל, בשל בדיקת התנאי לפני הלולאה.

מקור: תיאור הקורס והמבחן של College Board AP

איטרציה (לולאה) חוזרת על הוראות. פסאודוקוד AP כולל שני צורות:

לולאת תנאי מקדים (WHILE) בודקת לפני הגוף, ולכן ייתכן שתפעיל אפס פעמים
לולאת תנאי מקדים (WHILE) בודקת לפני הגוף, ולכן ייתכן שתפעיל אפס פעמים
REPEAT 5 TIMES        // a fixed count
{
    DISPLAY("hi")
}

REPEAT UNTIL (found)  // until a condition becomes true
{
    ...
}

לולאה לעולם לא נפגשת בתנאי ההפסקה שלה היא לולאה אינסופית.

חקור

עקבו אחר לולאה מעבר אחר מעבר

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

3.9

פיתוח אלגוריתמים

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרת למידה AAP-2.L: השוואה בין מספר אלגוריתמים כדי לקבוע האם הם מייצרים אותה השפעה משנית או תוצאה. [מיומנות 1.D]

  • AAP-2.L.1 ניתן לכתוב אלגוריתמים בצורות שונות ועדיין לבצע את אותן משימות.
  • AAP-2.L.2 אלגוריתמים שנראים זהים עשויים לייצר השפעות משניות או תוצאות שונות.
  • AAP-2.L.3 ניתן לכתוב חלק מההצהרות התנודתיות כביטויים בוליאניים שקולים.
  • AAP-2.L.4 ניתן לכתוב חלק מהביטויים הבוליאניים כהצהרות תנודתיות שקולות.
  • AAP-2.L.5 ניתן לפתח או להשתמש באלגוריתמים שונים כדי לפתור את אותו בעיה.

מטרת לימוד AAP-2.M: עבור אלגוריתמים: א. יצירת אלגוריתמים. [מיומנות 2.A] ב. מיזוג ועריכה של אלגוריתמים קיימים. [מיומנות 2.B]

  • AAP-2.M.1 ניתן ליצור אלגוריתמים מתוך רעיון, על ידי מיזוג של אלגוריתמים קיימים, או על ידי עריכת אלגוריתמים קיימים.
  • AAP-2.M.2 ידע של אלגוריתמים קיימים יכול לעזור בבניית אלגוריתמים חדשים. בין האלגוריתמים הקיימים נכללים:
    • מציאת הערך המקסימלי או המינימלי של שני מספרים או יותר
    • חישוב הסכום או הממוצע של שני מספרים או יותר
    • זיהוי אם מספר שלם מתחלק במספר שלם אחר בשווה (ללא שארית)
    • קביעת מסלול של רובוט בתוך מבוך
  • AAP-2.M.3 השימוש באלגוריתמים קיימים ונכונים כבלוקי בנייה לבניית אלגוריתם אחר מביא יתרונות כמו צמצום זמן הפיתוח, צמצום בדיקות והקלת זיהוי שגיאות.

מקור: תיאור הקורס והמבחן של College Board AP

קוד מקור Python במסך — אלגוריתמים הם הוראות מדויקות וממוינות
קוד מקור Python במסך — אלגוריתמים הם הוראות מדויקות וממוינות

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

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

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

סכמת זרימה מציגה אלגוריתם באמצעות הסמלים הסטנדרטיים
סכמת זרימה מציגה אלגוריתם באמצעות הסמלים הסטנדרטיים
3.10

רשימות

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרת למידה AAP-2.N: עבור פעולות על רשימות: א. כתיבת ביטויים המשמשים אינדקסינג של רשימה ופעולות על רשימות. [מיומנות 2.B] ב. חישוב ביטויים המשמשים אינדקסינג של רשימה ופעולות על רשימות. [מיומנות 4.B]

  • AAP-2.N.1 דף ההפניות לבחין מספק פעולות בסיסיות על רשימות, כולל:
    • גישה לאלמנט באמצעות אינדקס

      טקסט:

      aList[i]

      בלוק:

      aList i

      מגיע אל האלמנט של aList באינדקס i. האלמנט הראשון של aList נמצא באינדקס 1 ומגיעים אליו באמצעות הסימון aList[1].

    • יישום ערך של אלמנט מרשימה למשתנה

      טקסט:

      x ← aList[i]

      בלוק:

      x ← aList i

      מקצב את הערך של aList[i] למשתנה x.

    • יישום ערך לאלמנט ברשימה

      טקסט:

      aList[i] ← x

      בלוק:

      aList i ← x

      מקצב את הערך של x ל-aList[i].

      טקסט:

      aList[i] ← aList[j]

      בלוק:

      aList i ← aList j

      מקצב את הערך של aList[j] ל-aList[i].

    • הכנסת אלמנטים באינדקס נתון

      טקסט:

      INSERT(aList, i, value)

      בלוק:

      INSERT aList, i, value

      מזיז ימינה כל ערך ב-aList הנמצא באינדקסים הגדולים או שווים ל-i. אורך הרשימה עולה ב-1, והערך value מוצב באינדקס i בתוך aList.

    • הוספת אלמנטים בסוף הרשימה

      טקסט:

      APPEND(aList, value)

      בלוק:

      APPEND aList, value

      מעלה את אורך aList ב-1, והערך value מוצב בסוף aList.

    • הסרת אלמנטים

      טקסט:

      REMOVE(aList, i)

      בלוק:

      REMOVE aList, i

      מסיר את הפריט באינדקס i ב-aList ומזיז שמאלה כל ערך הנמצא באינדקסים גדולים מ-i. אורך aList קטן ב-1.

    • קביעת אורך רשימה

      טקסט:

      LENGTH(aList)

      בלוק:

      LENGTH aList

      מחזיר את מספר האלמנטים הקיימים כרגע ב-aList.

  • AAP-2.N.2 פרוצדורות רשימות מיושמות בהתאם לכללי הסינטקס של שפת התכנות.

מטרות למידה AAP-2.O: עבור אלגוריתמים המעורבים באלמנטים של רשימה: א. כתוב הודעות איטרציה כדי לעבור על רשימה. [מיומנות 2.B] ב. קבע את תוצאת האלגוריתם הכולל מעברים על רשימות. [מיומנות 4.B]

  • AAP-2.O.1 עיבר ברשימה יכול להיות עיבר מלא, בו נגישים כל האלמנטים ברשימה, או עיבר חלקי, בו נגישים רק חלק מהאלמנטים.

    • הצהרת פסילה (EK AAP-2.O.1): עיבר בו-זמני של מספר רשימות באמצעות אותו אינדקס עבור שניהן (עיבור מקביל) אינם בתחום הלימודים ובתחום המבחן AP.
  • AAP-2.O.2 ניתן להשתמש בפקודות חזרה כדי לבצע עיבר ברשימה.

  • AAP-2.O.3 דף ההפניות למבחן מספק

    טקסט:

    FOR EACH item IN aList { <block of statements> }

    בלוק:

    FOR EACH item IN aList block of statements

    המשתנה item מקבל את הערך של כל אלמנט ב-aList ברצף, בסדר, מהאלמנט הראשון ועד האחרון. הקוד ב-block of statements מתבצע פעם אחת עבור כל הצבת ערך ל-item.

  • AAP-2.O.4 ידע באלגוריתמים קיימים המשתמשים בחזרות יכול לעזור בבניית אלגוריתמים חדשים. מספר דוגמאות לאלגוריתמים קיימים הנעשים לעיתים קרובות שימוש ברשימות כוללות:

    • קביעת ערך מינימום או מקסימום ברשימה
    • חישוב סכום או ממוצע של רשימת מספרים
  • AAP-2.O.5 אלגוריתמי חיפוש ליניארי או חיפוש רציפות בוחנים כל אלמנט ברשימה, בסדר, עד שמצויה הערך הרצוי או שנבדקו כל האלמנטים ברשימה.

מקור: תיאור הקורס והמבחן של College Board AP

רשימה היא קבוצה מסודרת של ערכים תחת שם אחד, הה抽象ה הנתונים המרכזית של הקורס. Pseudocode ב-AP משתמש באינדקסים החל מ-1:

רשימה מחזיקה ערכים רבים במשתנה אחד, כאשר כל אחד מהם נמצא באמצעות האינדקס שלו
רשימה מחזיקה ערכים רבים במשתנה אחד, כאשר כל אחד מהם נמצא באמצעות האינדקס שלו
scores ← [88, 74, 95]
DISPLAY(scores[1])          // 88
scores[2] ← 80              // replace the 2nd value
APPEND(scores, 60)          // add to the end
INSERT(scores, 1, 100)      // insert at index 1
REMOVE(scores, 3)           // delete the 3rd element
LENGTH(scores)              // how many elements

לעבור על רשימה עם לולאה כדי לחשב סכום, לספור, לחפש או למצוא מקסימום:

FOR EACH x IN scores
{
    total ← total + x
}
3.11

חיפוש בינארי

סיילבוס

הבנה מתמשכת (AAP-2): הדרך שבה פקודות ממוינות ומשולבות בתוכנית קובעת את התוצאה המחושבת. תוכניות משלבות מבני איטרציה ובחירה כדי לייצג חזרות ולקבל החלטות כדי להתמודד עם ערכי קלט מגוונים.

מטרות למידה AAP-2.P: לגבי אלגוריתמי חיפוש בינארי: א. לקבוע את מספר החזרות הנדרשות למציאת ערך במאגר נתונים. [מיומנות 1.D] ב. להסביר את הדרישות הנדרשות להשלמת חיפוש בינארי. [מיומנות 1.A]

  • AAP-2.P.1 אלגוריתם החיפוש הבינארי מתחיל באמצע מאגר נתונים מסודר ומספרים ומסיר מחצית מהנתונים; תהליך זה חוזר על עצמו עד שמצויה הערך הרצוי או שנערכו כל האלמנטים.
    • הצהרת פסילה (EK AAP-2.P.1): יישומים ספציפיים של החיפוש הבינארי אינם בתחום הלימודים ובתחום המבחן AP.
  • AAP-2.P.2 הנתונים חייבים להיות במסודר כדי להשתמש באלגוריתם החיפוש הבינארי.
  • AAP-2.P.3 חיפוש בינארי הוא לעיתים קרובות יעיל יותר מחיפוש רציפות/ליניארי כאשר מיושם על נתונים מסודרים.

מקור: תיאור הקורס והמבחן של College Board AP

ספר טלפונים: חיפוש בינארי חוצה את עמודי המנוחה בשתי בחלקים בשלבים כל אחד
ספר טלפונים: חיפוש בינארי חוצה את עמודי המנוחה בשתי בחלקים בשלבים כל אחד

חיפוש בינארי מוצא ערך ברשימה ממויינת הרבה מהר יותר מלבדוק כל אלמנט. הוא בודק את האלמנט האמצעי, ומרחיק את המחצית שלא יכולה להכיל את המטרה, וחוזר על כך עד למציאתו. כל שלב חוצה את מרחב החיפוש, ולכן רשימה של $n$ פריטים לוקחת כ-$\log_2 n$ צעדים. הוא דורש שהנתונים יהיו ממוינים תחילה.

חיפוש בינארי חוצה את הטווח בכל שלב (הרשימה חייבת להיות מסודרת)
חיפוש בינארי חוצה את הטווח בכל שלב (הרשימה חייבת להיות מסודרת)

דוגמה פתורה. בחיפוש ברשימה מוסדרת של $8$ פריטים, חיפוש בינארי חוצה את הטווח בכל שלב: $8\rightarrow4\rightarrow2\rightarrow1$, עד $3$ השוואות ($\log_2 8=3$), בעוד שחיפוש ליניארי עשוי לקחת עד $8$. היתרון גדל באופן אקספוננציאלי: כ-$1{,}000$ פריטים דורשים רק $\approx10$ שלבי חיפוש בינארי (אבל עד $1{,}000$ ליניאריים), ו-$1{,}000{,}000$ פריטים דורשים רק $\approx20$. חיצוני הוא מה שהופך את זה לאלגוריתם בזמן סביר.

מילון מונחים אימון
English עברית
Binary search/ˈbaɪnəri sɜːtʃ/ חיפוש ביינארי
3.12

קריאת הליכים

סיילבוס

הבנה מתמשכת (AAP-3): מתכננים מפצלים בעיות לחלקים קטנים ויותר ניתנים לניהול. על ידי יצירת פרוצדורות והיעזרות בפרמטרים, מתכננים ממחישים תהליכים שניתן להשתמש בהם שוב. פרוצדורות מאפשרות למתכננים להתייחס לקוד קיים שנבדק כבר, מה שמאפשר להם לכתוב תוכנות מהר יותר ובביטחון רב יותר.

מטרות למידה AAP-3.A: לגבי קריאות פרוצדורה: א. כתוב הוראות לקריאת פרוצ'ורות. [מיומנות 3.B] ב. קבע את התוצאה או ההשפעה של קריאת פרוצ'ורה. [מיומנות 4.B]

  • AAP-3.A.1 פרוצ'ורה היא קבוצה ממוענת של הוראות תכנות, העשויה להכיל פרמטרים וערכים החזרתיים.

  • AAP-3.A.2 לפרוצ'ורות ישנם שמות שונים, כגון שיטה או פונקציה, בהתאם לשפת התכנות.

  • AAP-3.A.3 פרמטרים הם משתני כניסה בפרוצ'ורה. ארגומנטים מציינים את ערכי הפרמטרים בעת קריאת הפרוצ'ורה.

  • AAP-3.A.4 קריאת פרוצ'ורה מפסיקה את הביצוע הרציף של ההוראות, וגורמת לתוכנה לבצע את ההוראות בתוך הפרוצ'ורה לפני שהיא ממשיכה. לאחר ביצוע ההוראה האחרונה בפרוצ'ורה (או הוראת החזרה), זרימת הבקרה חוזרת לנקודה המידית שלאחר הקריאה לפרוצ'ורה.

  • AAP-3.A.5 דף הייחוס למבחן מספק

    procName(arg1, arg2, ...)

    כדרך לקרוא ל-

    טקסט:

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    בלוק:

    PROCEDURE procName parameter1, parameter2,... block of statements

    שיש לו אפס או יותר ארגומנטים; arg1 מוגדר לparameter1, arg2 מוגדר לparameter2, וכדומה.

  • AAP-3.A.6 דף הייחוס למבחן מספק את הפרוצ'ורה

    טקסט:

    DISPLAY(expression)

    בלוק:

    DISPLAY expression

    להדפסת הערך של expression, שאחריו רווח.

  • AAP-3.A.7 דף הייחוס למבחן מספק את

    טקסט:

    RETURN(expression)

    בלוק:

    RETURN expression

    ההוראה, המשמשת להחזרת זרימת הבקרה לנקודה בה נקראה הפרוצ'ורה ולהחזרת הערך של expression.

  • AAP-3.A.8 דף הייחוס למבחן מספק

    result ← procName(arg1, arg2, ...)

    כדי להגדיר לresult את "ערך הפרוצ'ורה" שנחזר על ידי קריאת

    טקסט:

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    בלוק:

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

  • AAP-3.A.9 דף הייחוס למבחן מספק את הפרוצ'ורה

    טקסט:

    INPUT()

    בלוק:

    INPUT

    המקבלת ערך מהמשתמש ומחזירה את ערך הכניסה.

מקור: תיאור הקורס והמבחן של College Board AP

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

sum ← Add(3, 4)      // call, passing 3 and 4

הליכים מאפשרים להשתמש בקוד ללא הכרה בפנימייתו – אבסטרקציית הליכים.

3.13

פיתוח הליכים

סיילבוס

הבנה מתמשכת (AAP-3): מתכננים מפצלים בעיות לחלקים קטנים ויותר ניתנים לניהול. על ידי יצירת פרוצדורות והיעזרות בפרמטרים, מתכננים ממחישים תהליכים שניתן להשתמש בהם שוב. פרוצדורות מאפשרות למתכננים להתייחס לקוד קיים שנבדק כבר, מה שמאפשר להם לכתוב תוכנות מהר יותר ובביטחון רב יותר.

מטרת הלמידה AAP-3.B: הסבר כיצד השימוש באבסטרקציה פרוצ'ורלית מנהל את המורכבות בתוכנה. [מיומנות 3.C]

  • AAP-3.B.1 סוג נפוץ אחד של אבסטרקציה הוא אבסטרקציה פרוצ'ורלית, המספקת שם לתהליך ומאפשרת שימוש בפרוצ'ורה תוך ידע רק במה she does, לא איך she does it.
  • AAP-3.B.2 חילוץ הליכי (Procedural abstraction) מאפשר פתרון לבעיה גדולה לבסס על פתרונות של תת-בעיות קטנות יותר. דבר זה מתבצע על ידי יצירת הליכים לפתרון כל אחת מהתת-בעיות.
  • AAP-3.B.3 חלוקה של תוכנת מחשב לתת-תוכניות נפרדות נקראת מודולריות.
  • AAP-3.B.4 חילוץ הליכים עשוי להפריד מאפיינים משותפים כדי לגנרלזציה פונקציונליות במקום להכפיל קוד. הדבר מאפשר שימוש חוזר בקוד התוכנה, מה שעוזר בניהול המורכבות.
  • AAP-3.B.5 שימוש בפארמטרים מאפשר גנרליזציה של הליכים, ומאפשר לחזר אותם לשימוש עם מגוון ערכי כניסה או ארגומנטים.
  • AAP-3.B.6 שימוש בחילוץ הליכים עוזר לשפר את קריאות הקוד.
  • AAP-3.B.7 שימוש בחילוץ הליכים בתוכנית מאפשר למפתחים לשנות את הפנימיים של ההליך (כדי להפוך אותו למהיר יותר, יעיל יותר, לצרוך פחות זיכרון וכו') מבלי צורך בהודעת משתמשים על השינוי, כל עוד מה שההליך עושה נשמר.

מטרות לימוד AAP-3.C: פיתוח חילוצי הליכים לניהול מורכבות בתוכנית על ידי כתיבת הליכים. [מיומנות 3.B]

  • AAP-3.C.1 דף העזר לבחן מספק

    טקסט:

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    בלוק:

    PROCEDURE procName parameter1, parameter2,... block of statements

    שמשתמש כדי להגדיר הליך לקבל אפס או יותר ארגומנטים. ההליך מכיל block of statements.

  • AAP-3.C.2 דף העזר לבחן מספק

    טקסט:

    PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    בלוק:

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    שמשתמש כדי להגדיר הליך לקבל אפס או יותר ארגומנטים. ההליך מכיל block of statements ומחזיר את הערך של expression. פקודת RETURN עשויה להופיע בכל מקום בתוך ההליך וגורמת לחזרה מיידית מההליך חזרה לפקודה הקוראת.

מקור: תיאור הקורס והמבחן של College Board AP

את מגדירה פרוצדורה בשם, פרמטרים (כניסות), וגוף, ואופציונלית RETURN תוצאה:

פירוק תוכנה לפרוצדורות ופרוצדורות משנה
פירוק תוכנה לפרוצדורות ופרוצדורות משנה
PROCEDURE Add(a, b)
{
    RETURN(a + b)
}

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

מילון מונחים אימון
English עברית
procedure (function)/prəˈsiːdʒə/ פרוצדורה (פונקציה)
procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ הפשטה פרוצדורלית
abstraction/əbˈstrækʃn/ הפשטה
library/ˈlaɪbrəri/ ספרייה
simulation/ˌsɪmjʊˈleɪʃn/ סימולציה
Efficiency/ɪˈfɪʃənsi/ יעילות
heuristic/hjuːˈrɪstɪk/ הוריסטיקה
undecidable/ˌʌndɪˈsaɪdəbl/ בלתי ניתן להחלטה
Interface/ˈɪntəfeɪs/ ממשק
3.14

ספריות

סיילבוס

הבנה מתמשכת (AAP-3): מתכננים מפצלים בעיות לחלקים קטנים ויותר ניתנים לניהול. על ידי יצירת פרוצדורות והיעזרות בפרמטרים, מתכננים ממחישים תהליכים שניתן להשתמש בהם שוב. פרוצדורות מאפשרות למתכננים להתייחס לקוד קיים שנבדק כבר, מה שמאפשר להם לכתוב תוכנות מהר יותר ובביטחון רב יותר.

מטרות לימוד AAP-3.D: בחירת ספריות מתאימות או מקטעי קוד קיימים לשימוש ביצירת תוכניות חדשות. [מיומנות 2.B]

  • AAP-3.D.1 ספריית תוכנה מכילה הליכים שניתן להשתמש בהם ביצירת תוכניות חדשות.
  • AAP-3.D.2 מקטעי קוד קיימים יכולים לבוא ממקורות פנימיים או חיצוניים, כמו ספריות או קוד שנכתב בעבר.
  • AAP-3.D.3 השימוש בספריות מפשט את המשימה של יצירת תוכניות מורכבות.
  • AAP-3.D.4 ממשקי תוכנת אפליקציה (APIs) הם ספקים עבור האופן שבו הליכים בספרייה מתנהגים ועלולים להיות משמשים.
  • AAP-3.D.5 מסמכות ל-API/ספרייה נדרשת בהבנת ההתנהגויות המסופקות על ידי ה-API/ספרייה ובאופן השימוש בהן.

מקור: תיאור הקורס והמבחן של College Board AP

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

התעודה היא חלק מהספרייה. תיעוד עבור API או ספרייה הוא חיוני כדי להבין את ההתנהגויות שהיא מספקת וכיצד להשתמש בהן — מה כל פרוצדורה מצפה לקבל כפרמטרים, מה היא מחזירה, ומה היא עושה בקצוות. בלעדה היית צריך לקרוא את המקור, מה שמבטל את מטרת הה abstraction; עם התעודה ניתן להשתמש בפרוצדורה בצורה נכונה מבלי לדעת כיצד היא פועלת בפנים.

3.15

ערכים רנדומליים

סיילבוס

הבנה מתמשכת (AAP-3): מתכננים מפצלים בעיות לחלקים קטנים ויותר ניתנים לניהול. על ידי יצירת פרוצדורות והיעזרות בפרמטרים, מתכננים ממחישים תהליכים שניתן להשתמש בהם שוב. פרוצדורות מאפשרות למתכננים להתייחס לקוד קיים שנבדק כבר, מה שמאפשר להם לכתוב תוכנות מהר יותר ובביטחון רב יותר.

מטרות לימוד AAP-3.E: ליצירת ערכים אקראיים: א. כתוב ביטויים ליצירת ערכים אפשריים. [מיומנות 2.B] ב. חשב ביטויים כדי לקבוע תוצאות אפשריות. [מיומנות 4.B]

  • AAP-3.E.1 דף ההפניות לבחינה מספק

    טקסט:

    RANDOM(a, b)

    בלוק:

    RANDOM a, b

שמייצר ומחזיר מספר שלם אקראי בין a ל-b, כולל השניים. לכל תוצאה יש סיכון שווה להתרחשות. לדוגמה, RANDOM(1, 3) עשויה להחזיר 1, 2 או 3.

  • AAP-3.E.2 השימוש בהחזרת מספרים אקראיים בתוכנית פירושה שהכל ביצוע עשוי להניב תוצאה שונה.

מקור: תיאור הקורס והמבחן של College Board AP

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

3.16

סימולציות

סיילבוס

הבנה מתמשכת (AAP-3): מתכננים מפצלים בעיות לחלקים קטנים ויותר ניתנים לניהול. על ידי יצירת פרוצדורות והיעזרות בפרמטרים, מתכננים ממחישים תהליכים שניתן להשתמש בהם שוב. פרוצדורות מאפשרות למתכננים להתייחס לקוד קיים שנבדק כבר, מה שמאפשר להם לכתוב תוכנות מהר יותר ובביטחון רב יותר.

מטרות למידה AAP-3.F: עבור סימולציות: א. הסבר כיצד מחשבים יכולים לשמש לייצוג תופעות או תוצאות מהעולם האמיתי. [מיומנות 1.A] ב. השוואת סימולציות עם הקשרים מהעולם האמיתי. [מיומנות 1.D]

  • AAP-3.F.1 סימולציות הן אבסטרקציה של עצמים או תופעות מורכבות יותר לצורך ספציפי.
  • AAP-3.F.2 סימולציה היא ייצוג המשמש מערכי ערכים משתנים כדי לשקף את המצב המתגלגל של תופעה.
  • AAP-3.F.3 סימולציות לעיתים קרובות מדמות אירועים מהעולם האמיתי במטרה להסיק מסקנות, ולאפשר בדיקה של תופעה ללא מגבלות העולם האמיתי.
  • AAP-3.F.4 תהליך פיתוח סימולציה אבסטרקטית כולל הסרת פרטים ספציפיים או הפשטת פונקציונליות.
  • AAP-3.F.5 סימולציות עשויות להכיל שיפוע הנגזר מבחירות של אלמנטים מהעולם האמיתי שנכללו או נשללו.
  • AAP-3.F.6 סימולציות מועילות ביותר כאשר אירועים מהעולם האמיתי אינם מעשיים לניסויים (למשל: גדולים מדי, קטנים מדי, מהירים מדי, איטיים מדי, יקרים מדי או מסוכנים מדי).
  • AAP-3.F.7 סימולציות מקלות על ניסוח ועיבוד של היפותזות הקשורות לעצמים או תופעות הנבדקות.
  • AAP-3.F.8 מחזירי מספרים אקראיים יכולים לשמש לחיקוי השונות הקיימת בעולם האמיתי.

מקור: תיאור הקורס והמבחן של College Board AP

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

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

3.17

יעילות אלגוריתמית

סיילבוס

הבנה מתמשכת (AAP-4): קיימות בעיות שאין למחשב פתרון להן, ואף כאשר המחשב יכול לפתור בעיה, ייתכן שלא יוכל לעשות זאת בזמן סביר.

מטרות למידה AAP-4.A: לקביעת יעילותו של אלגוריתם: א. הסבר את ההבדל בין אלגוריתמים הפועלים בזמן סביר לבין אלו שאינם פועלים בזמן סביר. [מיומנות 1.D] ב. זיהוי מקרים שבהם פתרון היקטי (היוריסטי) עשוי להיות מתאים יותר. [מיומנות 1.D]

  • AAP-4.A.1 בעיה היא תיאור כללי של משימה שיכולה (או לא יכולה) להיפתר באמצעות אלגוריתם. דוגמה לבעיה כוללת גם קלט ספציפי. לדוגמה, מיון הוא בעיה; מיון הרשימה (2,3,1,7) הוא דוגמה לבעיה זו.
  • AAP-4.A.2 בעיית החלטה היא בעיה עם תשובה כן/לא (למשל, האם קיים מסלול מ-A ל-B?). בעיית מינון היא בעיה שמטרתה למצוא את הפתרון "הטוב ביותר" מבין אפשרויות רבות (למשל, מהו המסלול הקצר ביותר מ-A ל-B?).
  • AAP-4.A.3 יעילות היא הערכת כמות המשאבים החישוביים הנצרכים על ידי אלגוריתם. יעילות מתבטאת בדרך כלל כפונקציה של גודל הקלט.
    • הצהרת אי-כלליות (EK AAP-4.A3): ניתוח פורמלי של אלגוריתמים (Big-O) והסקה פורמלית באמצעות נוסחאות מתמטיות אינם בתחום הלימודים ובמסלול AP.
  • AAP-4.A.4 יעילותו של אלגוריתם נקבעת באמצעות הסקה פורמלית או מתמטית.
  • AAP-4.A.5 ניתן למדוד יעילות של אלגוריתם באופן לא פורמלי על ידי חישוב מספר הפעמים שבו ביטוי או קבוצת ביטויים מתבצעת.
  • AAP-4.A.6 אלגוריתמים שונים ונכונים עבור אותה בעיה עשויים להציג יעילויות שונות.
  • AAP-4.A.7 אלגוריתמים עם יעילות פולינומית או איטית יותר (קבועה, ליניארית, ריבועית, קובית וכו') נחשבים לפועלים בזמן סביר. אלגוריתמים עם יעילות מעריכית או פאקטוריאלית הם דוגמאות לאלגוריתמים הפועלים בזמן לא סביר.
  • AAP-4.A.8 חלק מהבעיות אינן ניתנות לפתרון בזמן סביר מכיוון שאין להן אלגוריתם יעיל לפתרון. במקרים אלו מחפש פתרונות מקבילים.
  • AAP-4.A.9 היוריסטיקה היא גישה לבעיה המייצרת פתרון שאינו מובטח להיות אופטימלי, אך עשויה לשמש כאשר טכניקות המובטחות למצוא פתרון אופטימלי בכל פעם הן לא מעשיות.
    • הצהרת אי-כלליות (AAP-4.A.9): פתרונות הייוריסטיים ספציפיים אינם בתחום הלימודים ובמסלול AP.

מקור: תיאור הקורס והמבחן של College Board AP

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

איך זמן הריצה של אלגוריתם גדל עם גודל הקלט n
איך זמן הריצה של אלגוריתם גדל עם גודל הקלט n
3.18

בעיות בלתי פתירות

סיילבוס

הבנה מתמשכת (AAP-4): קיימות בעיות שאין למחשב פתרון להן, ואף כאשר המחשב יכול לפתור בעיה, ייתכן שלא יוכל לעשות זאת בזמן סביר.

מטרת הלמידה AAP-4.B: הסבר על קיום של בעיות בלתי פתירות במדעי המחשב. [מיומנות 1.A]

  • AAP-4.B.1 בעיה פתירה היא בעיית החלטה עבורה ניתן לכתוב אלגוריתם המפיק תוצאה נכונה לכל הקלטים (למשל, "האם המספר זוגי?").
  • AAP-4.B.2 בעיה בלתי פתירה היא בעיה עבורה אין אפשרות לבנות אלגוריתם המסוגל לספק תמיד תשובה נכונה כן/לא.
    • הצהרת אי-כלליות (EK AAP-4.B.2): קביעה האם בעיה נתונה היא בלתי פתירה אינה בתחום הלימודים ובמסלול AP.
  • AAP-4.B.3 בעיה בלתי פתירה עשויה להכיל דוגמאות מסוימות הניתנות לפתרון אלגוריתמי, אך אין אלגוריתם שיכול לפתור את כל הדוגמאות של הבעיה.

מקור: תיאור הקורס והמבחן של College Board AP

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

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

3.18

טיפים לבחינות

  • לדעת שמשתנה הוא אחסון קרוי לערך ולעקוב אחר הקצאה עדכון צעד אחר צעד.
  • קראו את הפסאודוקוד AP בזהירות — a <- expression מבצע הקצאה, ורשימות ממודדות ב-1 בדף ההפניות לבחינה.
  • להבדיל בין משתנה ל-רשימה (אוסף המיוגש באמצעות אינדקס) ולשתמש נכונה בפעולות על רשימות.
  • חשבו ביטויים עם עדיפות נכונה ולוגיקה בוליאנית (AND, OR, NOT).
  • לבחור שמות משתנים ברורים ומובנים — משימות הכתיבה מעודדות כתיבת קוד קריאה.

שיעורים אינטראקטיביים בנושא זה

לעבור על הדברים צעד אחר צעד, עם תרגילים לבדיקה מיידית.

מבחני עבר

נושאים נוספים בעקרונות מדעי המחשב - AP

היכנס או צור חשבון

IGCSE, A-Level & AP