מערך דינמי ותכונותיו

מחשבים

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

 מערך דינמי של דלפי

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

מערך דינמי

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

מערך דינמי של דלפי

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