Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_пособие_укр.doc
Скачиваний:
4
Добавлен:
11.11.2019
Размер:
1.22 Mб
Скачать

Лабораторна робота 4 Область дії змінної. Персистенція

Область дії (видимості) змінної має 3 рівні:

  1. Рівень процедури

  2. Рівень модуля

  3. Рівень проекту.

Змінні рівня процедури описуються в тілі процедури з ключовим словом dim і розпізнаються тільки в цій процедурі, тому що втрачають своє значення після інструкції end sub.

Приклад 1

public sub pr1 ()

dim B1 as integer

B1 = 5555

msgbox (“b1 = “ & b1)

'вікно повідомлення про значення локальної змінної b1

proc2

end sub

public sub proc2 ()

msgbox b1

end sub

Запустіть процедуру pr1 і опишіть результати. Запустіть proc2 і поясніть результати її виконання.

Змінні рівня модуля описуються з ключовим словом dim в області опису модуля, тобто до опису процедур і функцій і доступні будь-якій процедурі модуля.

Доповнимо попередній приклад:

Приклад 2

dim B2 as string

public sub pr_1 ()

dim B1 as integer

B1 = 5555

msgbox “b1=” & b1

B2 = “Іди”

msgbox “b2=” & b2

proc_2 'процедура pr_1 викликає proc_2

end sub

public sub proc_2 ()

msgbox b1

msgbox b2

end sub

Запустіть процедуру pr_1 і опишіть результати і всі діалогові вікна, що з'явилися.

Змінні рівня модуля, оголошені за допомогою ключового слова Public, доступні для всіх процедур і модулів проекту й називаються відкритими. Усі змінні рівня проекту зручно описувати в окремому стандартному модулі.

Приклад 3

Опишемо B3 як змінну рівня проекту в модулі1, у процедурі p1 модуля1 привласнимо їй значення, а в процедурі 3 модулі 2 виведемо її значення.

Модуль 1

public dim B3 as string 'В3 – змінна рівня проекту

dim B2 as string ‘В2 - змінна рівня модуля

public sub p1 ()

dim B1 as integer 'В1 - змінна рівня процедури

b1 = 5555

b2 = “ідучи- іди”

b3 = “рівень проекту”

p2 'виклик процедури р2

p3 'виклик процедури р3

msgbox (“b1 = “& b1& “b2 = “& b2 &“b3 = “& b3)

end sub

Модуль 1

public sub p2 ()

msgbox (“b2 = “& b2 &“b3 = “& b3)

end sub

Модуль 2

public sub p3 ()

msgbox (“b2 = “& b2)

msgbox (“b3 = “& b3)

end sub

Запустіть процедуру p1 і опишіть результати.

Усі процедури і функції мають рівень дії проекту.

Якщо змінні на рівні процедури описуються ключовим словом static замість dim, то значення змінної зберігається й після виходу з даної процедури, але до завершення виконання коду.

Приклад 4

sub pr4 ()

pr5

pr5

end sub

sub pr5 ()

static v as string

dim v1 as string

if v=”” then

v=”v – статична змінна”

v1=”v1 – нестатична змінна”

end if

msgbox v

msgbox v1

end sub

V зберігається як статична змінна, тому в процедурі pr4 v виводиться двічі, а v1 – один раз.

Статичні процедури і функції

Процедури і функції можуть бути описані як статичні, при цьому всі змінні цих процедур і функцій стають статичними.

Приклад 5

sub proc6 ()

proc7

proc7

end sub

static sub proc7 ()

dim a as string

if a = “” then

a = “ще не доведено, що а - статична”

else

а = “а - статична змінна”

end if

msgbox a

end sub

Змінна а описується і встановлюється в процедурі proc7. Процедура proc6 двічі викликає процедуру proc7 і обидва рази виводить поточне значення змінної а у вікні повідомлень, демонструючи при другому виклику, що а – це дійсно статична змінна. При першому виклику proc7 умова оператора if істинно й змінній а привласнюється значення. При другому виклику proc7 умова оператора if – хибно (тому що після end sub процедури proc7 а зберегла своє значення) і змінна а знову ініціалізується.

Завдання до лабораторної роботи 4

Запустити на виконання приклади 1-5, описати результати, зробити висновки.