טיפולי נתונים ורקורדים
הוצג| English | משמעות |
|---|---|
| data type/ˈdeɪtə taɪp/ | סוג נתונים |
| field/fiːld/ | שדה |
| record/ˈrekɔːd/ | רשומה |
| record structure/ˈrekɔːd ˈstrʌktʃə/ | מבנה רשומה |
| dot notation/dɒt nəʊˈteɪʃn/ | סימון נקודתי |
ההחלטה על סוג נתונים היקרה בהיסטוריה
- בזיכרון 1960 עלותו גבוהה יותר מזו של מתכנתים. כדי לחסוך שני תווים בכל תאריך, שנים נאגרו בשתי ספרות:
99אומר 1999. - אף אחד לא ציפה שהקוד ישרוד את המאה. הוא שרד, וב-1 ינואר 2000 כל אחד מהשדות הללו היה יקרא כ1900. ממשלות וחברות הוציא הערכה של $300 מיליארד בדקו ותיקנו אותו.
- התקלה לא הייתה טעות הקלדה. היא הייתה סוג נתונים שנבחר לזיכרון בשנת 1965 ונשמר עבור תאריכים בשנת 2000.
- שיעור זה מראה איך לבחור את הסוג המתאים לנתונים, ואיך לאגד ערכים השייכים יחד לתוך רקורד.
ששת הסוגים הבסיסיים
| סוג | מכיל | משתמשים בו עבור |
|---|---|---|
INTEGER |
מספר שלם, 42, -7 |
ספירות, אינדקסים, מזהים |
REAL |
מספר עם חלק שברתי, 3.14 |
מדידות, ממוצעים |
CHAR |
תווה יחיד, 'A' |
אות ציון, בחירת תפריט |
STRING |
תווים בתוך סימני הוצאה, "Hello" |
טקסט |
BOOLEAN |
TRUE או FALSE |
דגלים |
DATE |
תאריך לוח שנה | תאריכי לידה, גבולות אחרונים |

pseudo-code (伪代码) מציין גם שני סוגים מבניים: ARRAY ו-FILE
איזה סוג נתונים מאחסן היטב פקודת כן/לא כמו "במלאי"?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
לדגל יש שני מצבים, ולכן BOOLEAN (TRUE/FALSE) הוא הבחירה המדויקת — ולא המחרוזות "yes"/"no".
סוג מציא (floating-point) יש להשתמש כדי לאחסן מדידה כמו טמפרטורה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספירות שלמות משתמשות במספרים שלמים; מדידות משתמשות במספרים מציאיים.
בחר לפי השימוש בערך
- סוג נקבע לפי מה שהתוכנית תעשה עם הערך, ולא לפי המראה שלו.
- מספר התלמידים הוא
INTEGER; ממוצע הציון של הכיתה הואREAL, כי יש לו חלק שברתי; האם תלמיד שילם הואBOOLEAN. - אינדקס במערך הוא תמיד
INTEGER. אות ציון יחיד הואCHAR; כתובת דוא"ל היאSTRING. - מספר טלפון הוא
STRING: הוא מתחיל ב0, ואף אחד לעולם לא מחבר שני מספרי טלפון.
התאם כל ערך לסוג הנתונים המתאים ביותר עבורו.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
בחר בסוג המדויק: BOOLEAN לדגל, REAL לערכים עם חלקים עשרוניים, INTEGER לספירות שלמות, STRING לטקסט.
איזה סוג נתונים יש להשתמש כדי לאחסן מספר טלפון כמו 07700 900123?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
INTEGER יוריד את האפס הקדמי, ואף תוכנה אינה מחברת או כופלת מספרי טלפון. הדיגיטים הם טקסט.
דוגמה מפורטת: ציין את סוג הנתונים המתאים
| נתונים | סוג | כי |
|---|---|---|
| מספר פריטים במלאי | INTEGER |
ספירה שלמה |
| מחיר של פריט | REAL |
כולל סנטים, חלק שברוני |
| האם הפריט במבצע | BOOLEAN |
רק שני מצבים |
קוד הקטגוריה של הפריט, 'F' |
CHAR |
בדיוק תווית אחת |
| שם הספק | STRING |
טקסט |
| תאריך אספקת הפריט | DATE |
תאריך לוח שנה |
- נה על שם הסמנטק (pseudo-code), לא השפה שמכיר:
BOOLEAN, לאbool;REAL, לאfloat.
סוג הנתונים של אינדקס במערכת נמצא תמיד ____.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
אינדקס סופר מקומות, ולכן הוא מספר שלם. Names[2.5] אין לו כל משמעות.
רשומות
- רשומה (מבנה רשומה) מכילה קבוצה של פריטי נתונים בעלי סוגי נתונים שונים תחת זיהוי אחד. כל פריט הוא שדה.
- השתמש בה כאשר ערכים רבים מתארים תמיד דבר אחד: פריט במלאי, לקוח, סטודנט.
TYPE TStockItem
DECLARE ItemID : INTEGER
DECLARE Category : STRING
DECLARE ItemCost : REAL
DECLARE InStock : BOOLEAN
ENDTYPE

זיהוי אחד, ארבעה שדות, ארבעה סוגים
רקורד משמש ל:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
רקורד מקבץ שדות בעלי (ייתכן) סוגים שונים המתארים דבר אחד. מערך אחסן ערכים רבים מאותו סוג.
הצהרת שימוש ושימוש ברשומה
TYPE … ENDTYPEמגדיר את הסוג. לאחר מכן הצהר משתנים ממנו, בבודד או כמערך:
DECLARE Item1 : TStockItem
DECLARE Items : ARRAY[1:100] OF TStockItem
- גישור לשדה באמצעות סימון נקודה, כדי לכתוב ולקרוא:
Item1.Category ← "Fruit"
OUTPUT Item1.Category, " costs ", Item1.ItemCost
Items[7].InStock ← FALSE
רקורד מקבץ שדות תחת שם אחד
רקורד מאגד שדות הקשורים יחד. כל שדה הוא תווית ממונפת שמגיעים אליה באמצעות סימן נקודה — Item1.Category — ולא באמצעות אינדקס מספרי.
כדי להגדיר את שדה הקטגוריה של משתנה הרקורד Item1, כותבים:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סימוני נקודה record.field מאפשרים הגעה לשדה של רקורד.
דוגמה מפורטת: תיק המצטרפות למועדון
- מועדון שומר, עבור כל סטודנט, מזהה סטודנט (מחרוזת), שם, תאריך לידה ועד שלושה מספרי מצטרפות. הצהר את סוג הרשומה, מערך ל-3000 סטודנטים, ואחסן שם באלמנט הראשון.
TYPE Student
DECLARE StudentID : STRING
DECLARE Name : STRING
DECLARE DateOfBirth : DATE
DECLARE Club : ARRAY[1:3] OF INTEGER
ENDTYPE
DECLARE Membership : ARRAY[1:3000] OF Student
Membership[1].Name ← "Li Wei"
- הציונים:
TYPEעם המזהה וENDTYPE; כל שדה מוגדר עם סוג מתאים; המערך עם הגבולות שלו וOF Student; השדה שהושג באמצעות האינדקס וגם נקודת הגישה.
סדרו את שורות הצהרת ההצטרפות למועדון בסדר הנכון.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
הגדירו את הסוג, סיימו אותו, הכריזו משתנה או מערך מסוג זה, ולאחר מכן השתמשו באינדקס ובנקודה כדי להגיע לשדה.
דוגמה פתורה: ציין את השגיאה בהצהרת הסוג
TYPE TBooking
DECLARE Seats : INTEGER
DECLARE Price
DECLARE Total : STRING
- שלוש שגיאות, כל אחת בעלת ציון: לסוג אין
ENDTYPE; לשדהPriceאין סוג נתונים; וTotalיכילSeats * Price, תוצאת חישוב, ולכן אינו יכול להיותSTRING. - השלוש הרגילות של המבקר: חוסר ב
ENDTYPE, שדה ללא סוג, שדה מסוג לא נכון עבור השימוש בו.
איזה מהבאים הם טעויות בהצהרת רקורד? סמנו את כל האפשרויות החלות.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
סוגים שונים ברקורד אחד הם העניין המרכזי של רקורד. השלושה האחרים הם הטעויות שהבוחנים נוטים להכניס.
רקורד, מערך או משתנים רגילים
- ערכים ש-תמיד קשורים ביחד ויש להם סוגים שונים: רקורד.
- הרבה ערכים מאותו סוג תחת שם אחד: מערך (שיעור הבא).
- טבלה של שורות שכל שורה מכילה שדות מעורבים: מערך של רקורדים,
Members[i].Name. - ערכים שאינם קשורים: משתנים נפרדים. איחודם אינו מוסיף שום ערך.
מערך של רקורדים מאפשר לזיהוי אחד לאחז בטבלה שבה לכל שורה ישנם שדות בסוגי נתונים שונים.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Members[i] היא שורה אחת (רקורד); Members[i].Name היא תא אחד. המערך מספק את השורות, והרקורד מספק את העמודות המעורבות.
סימונים נופלים מהיד
- ערך כן/לא הוא
BOOLEAN, ולא המחרוזות"yes"ו"no". - מספר טלפון או זהות שמתחילים ב
0הםSTRING, לעולם לאINTEGER. - כסף ב
REALמצטבר שגיאות עיגול; מערכות רבות מאחסנות פניטים שלמים כINTEGER. - כל שדה הוא
DECLAREשורה עם סוג, והסוג מסתיים בENDTYPE. האינדקס הולך על המערך, הנקודה על השדה:Members[3].Name.
הבנתך מושלמת
- שישה סוגים בסיסיים,
INTEGER,REAL,CHAR,STRING,BOOLEAN,DATE, שנבחרים לפי מה שהתוכנה עושה עם הערך - רקורד מחזיק שדות של סוגים שונים תחת מזהה אחד:
TYPE … DECLARE field : type … ENDTYPE - להצהיר משתנים או מערכים של הסוג, ולהגיע לשדה עם סינטקס נקודות:
Membership[1].Name ← "Li Wei" - השגיאות שמכניס המבקר: ללא
ENDTYPE, שדה ללא סוג, שדה מסוג שגוי עבור השימוש בו