КампутарыПраграмаванне

Дынамічны масіў і яго асаблівасці

Масівам у агульным выпадку называюць спарадкаваны набор элементаў, кожны з якіх мае пэўны (адзін і той жа) тып. Масівы бываюць статычнымі і дынамічнымі. Даўжыня першага задаецца на этапе праграмавання, г.зн. перад пачаткам запуску праграмы на выкананне, другога - па ходзе выканання.
Для статычнага масіва пры апісанні павінна быць вызначана колькасць элементаў, якое на працягу працы праграмы нельга змяніць (павялічыць або паменшыць). Пры запуску праграмы, якая выкарыстоўвае статычны масіў, на выкананне ў аператыўнай памяці вылучаецца некаторы колькасць байт для захоўвання яго элементаў. Гэты аб'ём памяці будзе замацаваны за праграмай да таго часу, пакуль яна не скончыць сваю працу. Нават калі гэтая памяць не будзе выкарыстоўвацца, ніякай іншай праграмны код не зможа атрымаць да яе доступ.
Мова праграмавання Pascal можа працаваць толькі са статычнымі масівамі. Таму, калі патрабуецца працаваць з паслядоўнасцю зменнай даўжыні, можна апісаць структуру, напрыклад, са ста элементаў, і выкарыстоўваць на розных этапах розная колькасць элементаў, не якое перавышае лік 100. А гэта, вядома, неразумна.
Такой праблемы не існуе ў інтэграванай асяроддзі распрацоўкі Delphi. Дынамічны масіў дазваляе пры апісанні не называць колькасць элементаў, а вызначаць яго падчас выканання праграмы. Дынамічны масіў можна апісаць у раздзеле Var наступным чынам:
Var Massive: array of integer

Такім чынам, структура, пазначаная ідэнтыфікатарам Massive, уяўляе сабой лінейную цэлалікавых паслядоўнасць невядомай (пакуль!) Даўжыні. Каб задаць памер, у праграме неабходна ўжыць працэдуру SetLength, напрыклад, SetLength (Massive, 9). Дынамічны масіў Massive здабудзе памернасць, роўную ліку 9. Цяпер вызначана, што ў паслядоўнасці прысутнічаюць дзевяць элементаў цэлага тыпу, пронумерованные ад нуля. Такімі асаблівасцямі валодае дынамічны масіў. Delphi мае працэдуру, вызваляе памяць ад набору лікаў, калі патрэба ў іх захоўванні адпала. Гэта працэдура Finalize, у нашым выпадку яна будзе ўжытая наступным чынам: Finalize (Massive).

Падобным чынам можна апісваць і прымяняць шматмерныя дынамічныя масівы ў Delphi. Напрыклад, двухмерных дынамічная структура будзе апісана так:
Var Massive: array of array of integer
Пры неабходнасці слупкі матрыцы могуць быць рознай даўжыні. Гэта таксама задаецца працэдурай SetLength.

Часта бывае, асабліва ў вялікіх і складаных праграмах, што некаторыя структуры дадзеных выкарыстоўваюцца час ад часу або толькі ў пачатку / канцы працы праграмы. Пры гэтым было б вельмі марнатраўным трымаць месца ў аператыўнай памяці "пра запас". Дынамічны масіў - адзін са спосабаў рацыянальнага размеркавання рэсурсаў вылічальнай сістэмы. Хоць і валодае некаторымі недахопамі. Па-першае, гэта не заўсёды зручная нумарацыя элементаў з нуля. Па-другое, праграмісту трэба пастаянна разумець у кожнай кропцы праграмнага кода, у якім стане знаходзіцца дынамічны масіў. Але яго вартасці робяць смешнымі ўсе гэтыя цяжкасці. У прыватнасці, калі патрабуецца перадаць з падпраграмы дадзеныя вялікага аб'ёму, то без дынамічнага спосабу прадстаўлення не абысціся.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.delachieve.com. Theme powered by WordPress.