סוגי נתונים המוגדרים על ידי המשתמש
הוצג| English | משמעות |
|---|---|
| user-defined types/ˈjuːzə dɪˈfaɪnd taɪps/ | סוגים מוגדרים על ידי המשתמש |
| non-composite/nɒn ˈkɒmpəzɪt/ | לא הרכבי |
| composite/ˈkɒmpəzɪt/ | הרכבי |
| enumerated type/ɪˈnjuːməreɪtɪd taɪp/ | סוג מונה |
| pointer/ˈpɔɪntə/ | מצביע |
| dereference/ˌdiːˈrefrəns/ | פענוח |
| record/ˈrekɔːd/ | רשומה |
| set/set/ | סט |
| class/klæs/ | כיתה |
| attributes/ˈætrɪbjuːts/ | מאפיינים |
| methods/ˈmeθədz/ | שיטות |
סוג שגורם לחוסר האפשרות לטעות
- מערכת בית חולים אחסנה קבוצת דם של מטופל כ-
STRING. מישהו הקליד "0+" במקום "O+": אפס במקום אות. השדה קיבל זאת, מכיוון שרצף מקבל הכל. - לא היה דבר בתוכנית שיכול להבחין כי "0+" אינו קבוצת דם, ולכן השגיאה עברה ללא שינוי לנקודה שבה היא הייתה משמעותית.
- תן לשדה סוג שערכיו הם בדיוק שמוע קבוצות הדם, וההקללה תידחה ברגע הכתיבה, על ידי המייצר, לפני שהתוכנית תפעיל לעולם.
- זה מה ש-סוגים מוגדרים על ידי משתמש מביאים לך. שיעור זה הוא אלו שהתוכנית לימודים מונה, וכיצד לבחור ביניהם.
מדוע נדרשים סוגים מוגדרים על ידי משתמש
STRINGמובנה מאפשר לך לאחסן תהום בשדה שצריך להכיל אחד ממספר ערכים חוקיים; סוג מוגדר על ידי משתמש מצמצם אותו, כך שהמייצר יזהה יותר טעויות.- אובייקטים אמיתיים הם בדרך כלל קבוצה של ערכים מסוגים שונים, וסוג מובנה יכול להכיל רק אחד.
DECLARE MyTaxi : Vehicleהוא מתעדת עצמי: הוא אומר מה המשתנה הוא, בעוד ש-DECLARE MyTaxi : STRINGאומר רק איך הוא מאוחסן.
מדוע נדרשים סוגי נתונים המוגדרים על ידי המשתמש? סמן את כולם החלופות הרלוונטיות.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
הגבלה, קיבוץ ותיעוד עצמי. מהירות אינה הסיבה; הדיוק והבהירות הם.
סוגים לא-קומפוזיטיים: מנומרים
- סוג לא-קומפוזיטי מחזיק ערך בודד; סוג קומפוזיטי מקבץ מספר ערכים יחד.
- סוג מונה (enum) הוא סוג שיש לו ערכים המהווים רשימה קבועה של קבועים ממוסמים. השמות הם ערכים של הסוג החדש, מאוחסנים פנימית כמספרים שלמים קטנים.
TYPE Vehicle = (M100, M230, T101, T102, T120, T150)
DECLARE MyTaxi : Vehicle
MyTaxi ← T102 // anything outside the list is rejected
- שימושים: ימי השבוע, צבעים, קודי מצב, קבוצות דם: כל תחום שבו הערכים המשפטיים הם רשימה קצרה ומכונה.

שישה ערכים ממוסמים, ואין ניתן להעמיס שום דבר אחר
סוג מונה (enumerated type) מכיל:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סוג מונה מגביל משתנה לאחד מתוך סט קבוע של ערכים בעלי שמות (למשל: ימי השבוע).
סוגים לא-קומפוזיטיים: איشار
- איشار מחזיק את כתובת הזיכרון של משתנה אחר, או
NULLשמסמל "אין יעד". - כדי להפנות (dereference) איشار, שנכתב
p^, הוא לגשת למשתנה עליו הוא מצביע.
TYPE PNode = ^TNode // a pointer to a TNode
DECLARE p : PNode
p ← NEW TNode
p^.Value ← 42 // dereference, then reach the field
- איشارים הם מה שמאפשר מבנים דינמיים: רשימה מקושרת היא נודיות המחוברות באיشارים, ועץ הוא נודיות עם שתי איشارים. כמו כן, הם מעבירים רקורד גדול לתהליך ללא העתקתו.

המשתנה מחזיק את המקום שבו הנתונים נמצאים, ולא את הנתונים עצמם
איشارת (pointer) מאחסנת את כתובת הזיכרון של משתנה אחר, ועבור אותה איشارת (למשל p^) מגיעים למשתנה אליו היא מצביעה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
איشارות (עם NULL המסמן "מצביע על כלום") הן האופן שבו בונים מבנים דינמיים כמו רשימות מקושרות ועצים.
הגעה למשתנה שעליה מצביע רמז, שנכתב p^, נקראת ____.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
לרמז יש כתובת זיכרון; פירוק רמז עוקבת אחריה לנתונים. כך נבנים רשימות קשורות ועצים.
סוגים קומפוזיטיים
- רקורד מקבץ שדות בעלי סוגים שונים תחת שם אחד, ב
TYPE … ENDTYPEבלוק. פגשתם בו בנושא 10. - סט הוא אוסף לא-ממוצע של ערכים יחידים, עם הפעולות הוספה, הסרה, בדיקת חברה, איחוד וחיתוך.
DECLARE Available : SET OF Colour
Available ← {Red, Blue}
IF Green IN Available THEN
…
ENDIF
- כיתה ודגימותיה, אובייקטים, משלבים שדות נתונים, ה-מאפיינים, עם הפעולות עליהם, ה-מתודות.

שדים בעלי סוגים שונים, מזהה אחד
התאם כל סוג מוגדר-על ידי המשתמש למה שהוא מכיל.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
סוג ממונה = ערכים נקובים וקבועים; רמז = כתובת; מחלקה = נתונים + התנהגות; סט = ערכים יחידים ולא מסודרים.
סט הוא אוסף מסודר שבו ערך יכול להופיע יותר מפעם אחת.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סט הוא לא מסודר וערכיו יחידים. מערך הוא המבנה המסודר שמאפשר חזרות.
הכיתה
CLASS Taxi
PRIVATE Capacity : INTEGER
PUBLIC FUNCTION GetCapacity() RETURNS INTEGER
RETURN Capacity
ENDFUNCTION
ENDCLASS
- כיתה היא ההגדרה; אובייקט הוא דגימה שלה, טקסי אמיתי אחד עם הקיבולת שלו.
- מה שמבדיל בינה לבין רקורד הן המתודות: רקורד הוא נתונים בלבד, כיתה היא נתונים וגם ההתנהגות הקשורה אליהם.
מחלקה משלבת:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מחלקה מקבוצה מאפיינים ושיטות; אובייקט הוא הדגמה של מחלקה.
מה מבדיל בין מחלקה לבין רקורד?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
שניהם קבוצות שדות; רק המחלקה כוללת התנהגות. אובייקט הוא instance אחת של המחלקה.
דוגמה מפורטת: בחר את הסוג והסבר למה
- מערכת הזמנות מאחסנת, עבור כל הזמנה, מצב שחייב להיות אחד מהאפשרויות: מבוקש, מאומת או ביטול. איזה סוג מוגדר על ידי המשתמש מתאים, ולמה?
- סוג מונה: הערכים המשפטיים הם רשימה קצרה וקבועה, ולכן הסוג מונע הצבת ערך אחר והקוד נקרא כפי שהתחום עצמו.
- ואילו עבור ההזמנה עצמה: מספר זיהוי, תאריך, מספר נוסעים ומחיר? רקורד, מכיוון שערכי השדות שונים ותיארו תמיד יחד הזמנה אחת.
- ואילו עבור קבוצת המושבים העדיין פנויים? סט: לא מסודר, ללא חזרות, וחברות בו היא הפעולה הנדרשת.
בחירה בין הפורמטים
| צורך | סוג |
|---|---|
| ערך מרשימה קצרה וקבועה | מונה |
| אי-ישירות, או מבנה הגדל | איشارת |
| מספר שדות בעלי סוגים שונים המתארים דבר אחד | רקורד |
| קבוצה לא מסודרת של ערכים ייחודיים | סט |
| מצב וגם ההתנהגות הפועלת עליו | כיתה |
מעבדת מושגי תכנות
קשר בין הדוגמאות לבין הרעיון התכנותי שהן מדגימות.
למשתנה חייב להיות אחד {Red, Green, Blue}, הסוג הטוב ביותר הוא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
רשימה קבועה של ערכים מותרים היא בדיוק מה שסוג ממונון נועד עבורו.
סימונים נופלים מהיד
- ערכי סוג מונה הם קבועים ממונים, לא מחרוזות.
MyTaxi ← "T102"הוא דבר אחר ושגוי. - איشارת מחזיקה כתובת, לא הערך עצמו. גישה לערך (Dereferencing) היא השלב שמגיע אליו.
- סט הוא לא מסודר וללא חזרות; מערך הוא מסודר ועשוי להכיל חזרות. ניסוח השאלה מעלה את ההבחנה.
- מה שהופך כיתה ליותר מרקורד הם ה-מתודות. אמור זאת כאשר מבקשים להסביר את ההבדל.
הבנתך מושלמת
- סוגים מוגדרים על ידי המשתמש מצמצמים מה ניתן לאחסן, מקבוצים ערכים השייכים זה לזה, וגורמים לקוד להיות תיעוד עצמי.
- לא קומפוזיטי: מונה (רשימה קבועה של קבועים ממונים) ואיشارת (כתובת, המגיעים אליה באמצעות גישה לערך)
- קומפוזיטי: רקורד (שדות בעלי סוגים שונים), סט (לא מסודר, ייחודי), כיתה/אובייקט (מאפיינים פלו מתודות)
- בחר מהצורך, והסבר באמצעות התכונה המתאימה: רשימה קבועה, אי-ישירות, שדות מעורבים, ייחודיות, או מצב עם התנהגות