42642

ДОСЛІДЖЕННЯ БЛОЧНОЇ ОРГАНІЗАЦІЇ ПРОГРАМ, СТРАТЕГІЙ РОЗПОДІЛУ ПАМ'ЯТІ

Лабораторная работа

Информатика, кибернетика и программирование

Статичні програмні об’єкти існують весь час життя програми та доступні в тій частині програми, в якій вони описані. Статичними програмними об’єктами у мові Pascal є всі об’єкти, які об’являються у секції Var головної програми (зовнішній блок) або як типізовані константи. У мові С статичні об’єкти об’являються з позначенням „static”.

Украинкский

2013-10-30

71 KB

7 чел.

Лабораторна робота 8

ДОСЛІДЖЕННЯ БЛОЧНОЇ ОРГАНІЗАЦІЇ ПРОГРАМ,

СТРАТЕГІЙ РОЗПОДІЛУ ПАМ'ЯТІ

Мета лабораторної роботи - вивчити блочну організацію програм Паскаль та Сі та стратегії розподілу пам'яті.

Теоретичні відомості

Програми на мовах Паскаль та Сі мають блочну організацію, що дозволяє керувати областю дії та періодом існування програмних об’єктів для ефективного використання памяті під час виконання програм.

Область дії та період існування програмного об’єкту залежить від використання відповідної стратегії розподілу виділеної під значення об’єкту пам'яті. Існують статичний та динамічний розподіл пам'яті, останній поділяється на розподіл у блоці та «купі».

Для програм з блочною структурою характерними рисами є мембраний ефект, регулюючий область дії програмних об’єктів, та засоби його подолання.

Статичний розподіл пам’яті

Статичні програмні об’єкти існують весь час життя програми та доступні в тій частині програми, в якій вони описані. Статичними програмними об’єктами у мові Pascal є всі об’єкти, які об’являються у секції Var головної програми (зовнішній блок) або як типізовані константи. У мові С статичні об’єкти об’являються з позначенням „static”.

Паскаль:

<опис змінної> ::= {див. лаб. 2}

<типізована константа>::= const<позначка імені>:<індикатор типу>=<R - вираз>;

<позначка імені>::= <ідентифікатор>

<R - вираз>::={див. лекції}

Наприклад:

const r : real  = 5;

Сі:

модифікатор static

<опис змінної>::=static<індикатор типу>{*}02<ідентифікатор>;

Наприклад:

static float r1;

static float r2 = 5;

Динамічний розподіл пам’яті у блоці

Об’єкт, об’явлений у блоці (між { } ) існує від точки об’яви до кінця блоку. Об’єкт видаляється з пам’яті перед виходом з блоку, при цьому значення об’єкту втрачається. Змінні в мові Сі створюються та використовуються згідно з  динамічною стратегію у блоці за замовчуванням або за допомогою позначення „auto” при описі.

Сі:

модифікатор auto

<опис змінної>::={auto}01<індикатор типу>{*}02<ідентифікатор>;

<блок>::={{<опис змінної>}1n{<оператор}0m}

Наприклад:

{

auto float r1;

float r2 = 5;

r1 = r1 + r2;

}

Об’єкт, який об’явлено у певному блоці, є доступним у будь-якому вкладеному блоці. Але якщо у вкладеному блоці об’являється об’єкт з однаковим позначенням, то даний внутрішній об’єкт „покриває” зовнішній на період існування вкладеного блоку. Це явище іменується „мембранним ефектом:

void main (void)

{

int a=1, b=2;

{

 int a=10;    // a = 10, b = 2

 static int c=3;   // об’ява статичної змінної  

}

// знову a = 1, b = 2. Змінна "a" з кладеного блока видалена

//  Зміннаc" існує та має значення "3", але є недоступною */

}

Динамічний розподіл пам’яті в “купі”

Динамічні  об’єкти у „купі” не мають власних імен та створюються та знищуються за допомогою спеціальних операцій. Доступ до цих об’єктів може бути здійснений тільки за допомогою покажчиків.

Паскаль:

<захоплення пам’яті>::=new(<позначка імені вказівної змінної>);

<звільнення пам’яті>::=dispose(<позначка імені вказівної змінної>);

Наприклад:

var

pI : ^integer;

begin

new pI;

pI^ := 25;

dispose pI;

end

Сі:

<захоплення пам’яті>::=<позначка імені вказівної змінної>=new<індикатор типу>;

<звільнення пам’яті>::=delete<позначка імені вказівної змінної>;

Наприклад:

main()

{

int *pI;

pI = new int;

*pI := 25;

delete pI;

}

Глобальний дозвіл видимості імен 

Сі:

операція ::

<глобальний дозвіл>::=::<позначка імені глобальної змінної>

Наприклад:

int i = 45;

main()

{

float i = 10.1; // i = 10.1 ::i = 45

::i = ::i * 2;  // i = 10.1 ::i = 90

i = i+ ::i;  // i = 100.1 ::i = 90

}

Правила написання програм

При описі у програмі змінних, динамічних в блоку, давайте їм різні позначки імен (якщо це не одна й та же змінна).

Описуйте у програмі об'єкти якомога ближче до місця використання.

Перш ніж використати змінну-покажчик після розподілу пам'яті у “купі” (оператор new) необхідно перевірити наявність вільної пам'яті (значення вмісту не повинно бути NULL/Nil).

Своєчасно звільняйте пам'ять, “захоплену” в “купі”  (оператори dispose/ delete)

Завдання

  1.  Вивчити блочну структуру програм на мовах Паскаль та Сі. Для цього:

а)  написати програму на мові Паскаль, що складається з головного блоку beginend;

б) написати програму на мові Сі, що складається з головного блоку main, декількох вкладених в main блоків, що є динамічно розподіленими по відношенню один до іншого, та ще декількох вкладених один в другий блоків.

2. Дослідити статичний розподіл пам’яті в мовах Паскаль та Сі. Для цього:

а) додати в програму на мові Паскаль опис декількох простих змінних різних типів, ініціалізованих  при створенні, та в головному блоці використати ці змінні в виразах та лівій частині оператора привласнення;

б) виконати програму по кроках та дослідити у вікні перегляду (Watch), як будуть змінюватись значення імені та вмісту змінних (@ідентифікатор, ідентифікатор);

в) додати в програму на мові Сі опис статичних змінних у зовнішньому (поза блоком main) та у вкладених блоках та ініціалізувати змінні при створенні та за допомогою привласнення;

г) додати в різні блоки оператори привласнення, в яких використовуються описані змінні;

д) виконати програму по кроках та дослідити у вікні Watch, як будуть змінюватись значення імені та вмісту змінних (&ідентифікатор, ідентифікатор);

є) побудувати та виконати програму (використовуючи вікно Watch) таким чином, щоб продемонструвати всі особливості статичного розподілу пам’яті, описані в лекціях.

3. Дослідити динамічний розподіл пам’яті в блоці в мові Сі. Для цього:

а) додати в програму на мові Сі опис динамічних в блоці змінних у головному (main) та вкладених блоках та ініціалізувати змінні при створенні та за допомогою привласнення;

б) додати в різні блоки оператори привласнення, в яких використовуються описані змінні;

в) дослідити, як будуть змінюватись значення імені та вмісту змінних;

г) описати  у вкладених блоках та використати в операторах привласнення змінні з однаковим значенням і дослідити мембранний ефект, аналізуючи значення імен та вмісту змінних при виконанні програми;

д) описати  у динамічно розподілених блоках та використати в операторах привласнення змінні з однаковим значенням, дослідити та пояснити зміну значеннь імен та вмісту змінних при виконанні програми;

є) додати в програму наступний код:

// оператор, що дозволяє увійти в блок декілька разів

for (int i = 0; i < 5; i = i + 1)

{

 static int iA = 0;

auto int iB = 0;

iA = iA + 1;

iB = iB + 1;

}

дослідити у вікні Watch та пояснити поведінку статичної та динамічної змінних;

ж) побудувати та виконати програму (використовуючи вікно Watch) таким чином, щоб продемонструвати всі особливості динамічного розподілу пам’яті в блоці, описані в лекціях.

4. Додати в програму на мові Сі приклад застосування операції глобального дозволу видимості імен.

5. Дослідити динамічний розподіл пам’яті в «купі» в мовах Паскаль та Сі. Для цього:

а) додати в програму на мові Паскаль опис першої типізованої вказівної змінної, захопити пам'ять в «купі», занести в «купу» значення та звільнити пам'ять (див. приклад);

б) виконати нижче опис дій п. 5.а по відношенню до другої вказівної змінної;

в) дослідити у вікні Watch значення імені, вмісту та розіменованого вмісту покажчиків (@ідентифікатор, ідентифікатор, ідентифікатор^);

г) звільняти і не звільняти пам'ять у «купі» та пояснити зміни у вікні Watch;

д) виконати дії пп. 5.а – 5.гв програмі на мові Сі (&ідентифікатор, ідентифікатор, *ідентифікатор);

є) виконати дії п. 5.а з одним покажчиком у вкладеному блоці програми на мові Сі, а з іншим – нижче, поза вкладеним. Звільняти і не звільняти пам'ять у «купі», захоплену першим, локальним покажчиком, та за допомогою Watch пояснити, як утворюється «сміття» в «купі»;

ж) навести в програмі на мові Сі інші приклади некоректних дій з покажчиками,що призводять до утворення «сміття».

Контроль знань та вмінь

Таблиця вмінь

Таблиця 1

Розподіл пам'яті

статичний

динамічний в блоці

динамічний в “купі”

глобальний дозвіл видимості імен

зовнішній блок

типізо-вані констан-ти

static

мембран-ний ефект

динаміч-но розподі-лені блоки

взаємо-дія static та auto

new

delete

взаємо-дія в блоках

п

с

с

п

с

п

с

с

с

Контрольні запитання

  1.  Дайте визначення блоку.
  2.  Що таке час існування та область дії об'єкта?
  3.  У чому сутність мембранного ефекту?
  4.  Як складається нумерація блоків?
  5.  Які є стратегії розподілу пам'яті?
  6.  Що таке глобальний дозвіл видимості імен?
  7.  Як організована та використовується пам'ять типу “купа”?
  8.  Як організована та використовується пам'ять типу “стек”?
  9.  Як ініціалізуються об'єкти в залежності від використаної стратегії розподілу пам'яті?


 

А также другие работы, которые могут Вас заинтересовать

29731. Основні системи професійного навчання 18.4 KB
  Типи уроків теоретичного навчання: комбіновані змішані уроки; перевірка виконання учнями домашнього завдання практичного характеру; перевірка оцінка і корекція раніше засвоєних знань навичок і вмінь; відтворення і корекція опорних знань учнів; повідомлення теми мети і завдань уроку та формування мотивації учіння; сприймання й усвідомлення учнями нового матеріалу; осмислення узагальнення і систематизація нових знань; підсумки уроку і повідомлення домашнього завдання. уроки засвоєння нових знань; Мета: оволодіння учнями новими...
29732. Нестандартні уроки, класифікація методики проведення 18.78 KB
  Найпоширеніші серед них урокипресконференції урокиаукціони уроки ділові ігри урокизанурення урокизмагання уроки типу КВК урокиконсультації комп'ютерні уроки урокиконсиліуми урокитвори урокивинаходи урокизаліки театралізовані уроки уроки взаємного навчання учнів уроки творчості урокисумніви урокиконкурси урокифантазії урокиконцерти урокиекскурсії інтегральні уроки тощо. Нестандартні уроки спрямовані на активізацію навчальнопізнавальної діяльності учнів бо вони глибоко зачіпають емоційномотиваційну сферу...
29733. Поняття поурочно-тематичного планування 21.48 KB
  Плани в процесі проектування використовуються дуже широко: навчальний план план навчальновиховної роботи профтехучилища план уроку та ін Кожен з цих планів має своє призначення і свою структуру. План уроку це визначення завдань уроку і перелік основних дій педагога і учнів з освоєння змісту навчального матеріалу. Якщо поурочнотематичний план є проектом педагогічного процесу то план уроку його конструктом. Структура контрольнооблікового уроку Залік це форма перевірки досягнень учнів з вивченої теми чи розділу курсу навчального...
29734. Інструкційно-технологічна карта як дидактичний засіб навчання 85.5 KB
  Інструкційнотехнологічні карти виготовляють за формою: Вимоги до сучасного уроку теоретичного навчання. Загальні вимоги до уроку такі: проведення уроку на основі сучасних наукових досягнень передового педагогічного досвіду закономірностей навчального процесу; проведення уроку на основі методик гуманних дидактичних концепцій; особистісна спрямованість тобто забезпечення учням умов для самореалізації та ефективної навчальнопізнавальної діяльності з урахуванням їхніх інтересів потреб нахилів здібностей та життєвих настанов; оптимальне...
29735. Форми та методи навчання 19.54 KB
  Методом навчання називають спосіб упорядкованої взаємозвязаної діяльності викладача направленої на рішення завдань виховання і розвитку учнів в процесі навчання. Методи навчання є одним з найважливіших компонентів навчального процесу. Без відповідних методів діяльності неможливо реалізувати мету і завдання навчання досягнути засвоєння учнями певного змісту навчального матеріалу.
29736. Систематичність та послідовність навчання в закладах ПТНЗ 16.41 KB
  Основною умовою реалізації вимог цього принципу є здійснення міжпредметних зв'язків тобто зв'язування між собою знань з різних навчальних дисциплін з різних тем однієї дисципліни. Види та методи контролю знань на уроці Перевірка знань умінь та навичок невідємна частина навчального процесу який проектує і здійснює інженерпедагог. Самоконтроль який реалізує на практиці принципи активності й свідомості міцності знань навичок і вмінь студентів.