מערך נקרא בדרך כלל מסודרקבוצה של אלמנטים, שלכל אחד מהם יש סוג מסוים (זהה). מערכים הם סטטיים ודינמיים. אורך הראשון נקבע בשלב התכנות, כלומר. לפני תחילת התוכנית לרוץ, השני - במהלך הביצוע.
עבור מערך סטטי, התיאור צריך להיותמספר האלמנטים שלא ניתן לשנות (להגדיל או להקטין) במהלך המבצע התוכנית נקבע. כאשר אתה מפעיל תוכנית המשתמשת במערך סטטי, מספר בתים מוקצים לזיכרון כדי לאחסן את האלמנטים שלה. כמות זיכרון זו תוקצה לתוכנית עד לסיום עבודתה. גם אם זיכרון זה אינו בשימוש, לא קוד קוד אחר יוכל לגשת אליו.
שפת התכנות פסקל יכולה לעבודרק עם מערכים סטטיים. לכן, אם אתה רוצה לעבוד עם רצף אורך משתנה, אתה יכול לתאר מבנה, למשל, מתוך מאה אלמנטים, ולהשתמש במספר שונה של אלמנטים בשלבים שונים, לא יעלה על 100. וזה, כמובן, הוא בלתי סביר.
בעיה כזו לא קיימת במציאות משולבתדלפי סביבת הפיתוח. מערך דינמי מאפשר לך לציין לא לציין את מספר האלמנטים בתיאור, אך כדי לקבוע זאת במהלך ביצוע התוכנית. מערך דינמי יכול להיות מתואר בסעיף Var כדלקמן:
Var Massive: מערך שלם
לפיכך, המבנה המיועדמזהה Massive, הוא רצף שלם ליניארי של אורך לא ידוע (עדיין!). כדי להגדיר את הגודל, התוכנית צריכה להשתמש בהליך SetLength, לדוגמה, SetLength (Massive, 9). מערך מאסיבי דינמי ירכוש ממד השווה ל -9. כעת נקבע כי הרצף מכיל תשעה אלמנטים מסוג שלם המספרים מאפס. תכונות אלה יש מערך דינמי. לדלפי יש נוהל שמשחרר זיכרון ממערכת מספרים, כאשר הצורך באחסון שלהם נעלם. זהו הליך Finalize, במקרה שלנו הוא יחול כדלקמן: לסיים (מסיבי).
באופן דומה, ניתן לתאר ולהחיל מערכים דינמיים רב-ממדיים בדלפי. לדוגמה, מבנה דינמי דו מימדי יתואר כך:
Var Massive: מערך מערך של מספר שלם
אם יש צורך, עמודות מטריקס יכול להיות באורכים שונים. זה מצוין גם על ידי הליך SetLength.
קורה לעתים קרובות, במיוחד גדולים ומורכביםתוכניות שכמה מבני נתונים משמשים מעת לעת או רק בתחילת / סוף התוכנית. באותו זמן זה יהיה בזבזני מאוד לשמור מקום RAM "במילואים". מערך דינמי הוא אחת הדרכים להפצה רציונאלית של משאבי מערכת המחשב. אמנם יש כמה חסרונות. ראשית, זה לא תמיד נוח מספר אלמנטים מאפס. שנית, מתכנת חייב תמיד להבין בכל נקודה של קוד התוכנית, באיזו מדינה הוא מערך דינמי. אבל סגולותיו הופכות את כל הקשיים האלה מגוחכים. בפרט, אם אתה רוצה להעביר כמויות גדולות של נתונים משגרת, אתה לא יכול לעשות בלי ייצוג דינמי.
</ p>