איטרטור – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
עריכה
עריכה
שורה 1:
ב[[מדעי המחשב]] היישומיים, '''איטרטור''' הוא אובייקט ב[[מדעי המחשב]] היישומיים המאפשר מעבר על איברי קבוצה נתונה. המעבר מתבצע באמצעות [[ממשק (תכנות)|ממשק]] מוסכם ופשוט, שאינו תלוי במימוש הפרטני של [[מבנה נתונים|מבנה הנתונים]] המממש את הקבוצה.
 
{{ש}}רבות מ[[שפת תכנות|שפות התכנות]] מאפשרות להגדיר [[אלגוריתם|אלגוריתמים]] דרך פעולתם על איטרטורים. האלגוריתם המתקבל מסוגל לפעול על כל מבנה נתונים התומך באיטרטורים. נציין, כי על מנת להשתמש באיטרטורים חובה להגדיר [[סדר טוב]] על המבנה: עבור כל איבר, חייב להיות מוגדר האיבר '''הבא''' לו והאיבר '''הקודם''' לו. נשים לב כי עלולה להיווצר בעיה, כאשר אנו מעוניינים להתקדם לאיבר הבא מהאיבר המוגדר כ"אחרון" או לסגת לאיבר הקודם מהאיבר המוגדר כ"ראשון". באופן פרטני יותר, ניתן לבצע באמצעות האיטרטור את הפעולות הבאות:
 
רבות מ[[שפת תכנות|שפות התכנות]] העדכניות מאפשרות להגדיר [[אלגוריתם|אלגוריתמים]] דרך פעולתם על איטרטורים. האלגוריתם המתקבל מסוגל לפעול על כל מבנה נתונים התומך באיטרטורים.
{{ש}}נציין, כי על מנת להשתמש באיטרטורים חובה להגדיר [[סדר טוב]] על המבנה: עבור כל איבר, חייב להיות מוגדר האיבר '''הבא''' לו והאיבר '''הקודם''' לו. נשים לב כי עלולה להיווצר בעיה, כאשר אנו מעוניינים להתקדם לאיבר הבא מהאיבר המוגדר כ"אחרון" או לסגת לאיבר הקודם מהאיבר המוגדר כ"ראשון".
{{ש}}באופן פרטני יותר, ניתן לבצע באמצעות האיטרטור את הפעולות הבאות:
* בקש ממבנה הנתונים איטרטור לאיבר הראשון.
* בקש ממבנה הנתונים איטרטור לאיבר האחרון.
* קדם את האיטרטור לאיבר הבא.
* בחלק ממבני הנתונים, ניתן להסיגהסג את האיטרטור לאיבר הקודם במבנה (רק בחלק ממבני הנתונים).
* החזר למשתמש את המידע שנמצא בתוך האיבר עליו מצביע האיטרטור.
 
שורה 14 ⟵ 13:
== דוגמה לשימוש באיטרטורים==
נקח כדוגמה אלגוריתם פשוט: חיפוש ליניארי. באלגוריתם זה יש לעבור איבר איבר על איברי קבוצה נתונה, עד שמוצאים איבר המתאים לקריטריון כלשהו. השאלה היא מהי המשמעות של "לעבור איבר איבר":
# ב[[מערך (מבנה נתונים)|מערך]], יש לקדם מצביע כך שיצביע לאיבר הבא במערך.
# ב[[רשימה מקושרת]], יש לעקוב אחרי המצביע לחוליה הבאה בחוליה הנוכחית.
# ב[[עץ חיפוש]]|עץ חיפוש בינארי,]] ישנה חוקיות מסובכת יותר (המתחילה בכלל: אם לצומת יש בן ימני, יש לעבור אליו, ולהמשיך לרדת שמאלה ככל האפשר).
 
השימוש באיטרטורים מאפשר להגדיר אלגוריתם '''יחידי''' לחיפוש ליניארי, המתאים לכל אחת מאפשרויות אלו: