Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кравчук / 1 семестр / Visual_Basic_6.0._Посiбник_2009

.pdf
Скачиваний:
60
Добавлен:
29.02.2016
Размер:
5.8 Mб
Скачать

Виконання завдання (варіант б).

Розглянемо x як масив чисел,

тобто x ={xi}, i 1, n (n=4). Для введення змінних d, c та n створюємо масив w (використовуємо функцію Array). Введення елементів масиву x здійснюємо за допомогою функції Array. Виведення результатів здійснюємо в таблицю

MSFlexGrid.

1Відкрити новий проект.

2У низу форми за допомогою кнопки створюємо дві командні кнопки.

3Змінюємо стандартні назви командних кнопок на <Розрахунки> та <Вихід>.

4У формі за допомогою кнопки

(Label) накреслюємо об’єкт Label1 та змінюємо в нього властивість Caption на «Таблиця результатів».

5Розташуємо нестандартний елемент управління MSFlexGrid на панелі інструментів. Для цього: Project Components Microsoft FlexGrid Control 6.0 CheckBox ОК. Під об’єктом

Label1 у формі за допомогою кнопки (MSFlexGrid) на-

креслюємо об’єкт

MSFlexGrid1. Результати об-

числень будуть виведені в таб-

лицю MSFlexGrid1.

Схемадоваріанту(б)

Початок

Введення d, c, n

 

Введення

 

 

 

xi

 

 

 

 

 

i=1,n

 

 

 

 

a

17,89 x

i

c sin d

 

 

 

 

c cosd

 

 

a>xi

 

+

 

 

 

 

 

 

 

 

 

y ln a 2

 

xi

y arctg(a xi )

p

cos y eXi

 

Виведення

 

 

 

xi ,a ,y ,p

 

 

 

Кінець

 

 

6Два рази клацнути по кнопці < Розрахунки >. У вікні Project1–Form1(Code) з’явиться заголовок процедури Private Sub Command1_Click() та її кінець End Sub. Після заголовку процедури набрати текст (тіло програми).

7Два рази клацнути по кнопці <Вихід>. У вікні Project1–Form1(Code) з’явиться заголовок процедури Private Sub Command2_Click() та її кінець End Sub. Після заголовку процедури набрати текст – End.

60

8Запустити програму на виконання, натиснувши кнопку <Start> на панелі інструментів Standard.

9У вікні Form1 клацнути по командній кнопці <Розрахунки>. Результати з’являться в таблиці MSFlexGrid1.

10Для закінчення розрахунків необхідно клацнути у формі по кнопці <Вихід>. Повертаємось у вікно коду.

11Зберегти форму (Save Form1), проект (Save Project).

Результати обчислень.

61

7.2. Оператор циклу While … Wend

Синтаксис:

While < умова >

< Група операторів >

Wend

Тут:

<умова> логічний вираз, який може мати два значення: істина (True = -1), або хибність (False = 0).

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

вживається оператор Exit While.

 

 

 

 

 

 

 

 

 

 

Допускається використання вкладених циклів.

Схема

 

При цьому кількість операторів While і відповідних їм

 

Wend повинна збігатись.

 

 

 

 

 

 

 

 

 

 

Приклад. Обчислити

 

 

Початок

 

n

cosi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введення

 

S

 

;

n 10

 

 

 

 

 

 

 

 

3

n

 

i 1(i 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i = 1; s = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i n

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S S

 

cos i

 

 

 

 

 

 

 

 

 

 

(i 1)3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i = i + 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Виведення

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кінець

 

62

7.3. Оператор циклу Do…Loop

Поряд з операторами For…Next та While…Wend застосовується більш сучасний оператор циклу Do…Loop, що має два можливих формати.

Синтаксис:

I формат

 

ІI формат

Do

 

Do {While | Until} < умова >

< група операторів >

 

< група операторів >

[If <умова виходу> Then Exit Do]

 

[If <умова виходу> Then Exit Do]

Loop {While | Until} < умова >

 

Loop

Тут:

 

 

<умова> – логічний вираз, який

може мати два значення: істина

(True = -1), або хибність (False = 0);

While - ключове слово для виконання циклу, поки умова істинна; Until - ключове слово для виконання циклу, поки умова хибна;

Exit Do – оператор дострокового виходу із циклу, коли <умова виходу> стане істинною.

Дія: У першій формі запису спочатку виконується група операторів (тіло циклу), після чого перевіряється умова повторення циклу. Таким чином, цей цикл завжди виконується хоча б один раз. У другій формі запису спочатку перевіряється умова повторення циклу й, якщо вона не виконується, то цикл ні разу не виконується. Ключове слово While (Поки) забезпечує виконання циклу, поки <умова> є істинною; як тільки вона стане хибною, буде зроблено вихід із циклу. Ключове слово Until (Доки) забезпечує виконання циклу, доки <умова> не стане істинною, тобто поки вона є хибною.

Приклад. Обчислити суму спадного ряду

 

sink

S

 

k3 3

k 1

з точністю ε = 10-5, використовуючи усі можливі варіанти використання опера-

тора Do…Loop.

Варіанти програм

1 варіант

2 варіант

63

3 варіант

4 варіант

Результати обчислень:

8.Модульне програмування

8.1.Створення процедур (підпрограм) загального призначення

У стандартних модулях розміщують процедури загального призначення, які можуть бути викликані з будь-якого місця в програмі. Процедури загального призначення близькі до внутрішніх операторів та функцій Visual Basic: вони викликаються за іменем, можуть мати аргументи, і кожна з них виконує конкретні дії. Процедури загального призначення дозволяють економити час, роблять програми більш компактними, зручними в перегляді (прочитанні), спрощують роботу програм. Вони не зв'язані ні з якою подією і їхній виклик розроблювач здійснює за своїм розсудом.

Устандартномумодуліможнастворититривидипроцедурзагальногопризначення.

1.Процедури типу Function (Функція). Такі процедури повертають значення через власне ім’я, і тому їх можна використовувати у виразах. Функції можна викликати за ім’ям з інших процедур; вони можуть мати аргументи, через які одержують вхідні значення. Зазвичай використовуються для обчислень.

2.Процедури типу Sub (Підпрограма). На відміну від функцій підпрограми не повертають значення через власне ім’я, і тому їх не можна використовувати у виразах. Їх також викликаємо за ім’ям з інших процедур, вони також можуть мати аргументи для одержання вхідних значень і повернення результатів. Акцентуємо увагу: процедури типу Sub повертають значення тільки через параметри. На відміну від функцій процедури типу Sub використовуються зазвичай для обробки подій, для встановлення властивостей значень, але їх також можна використовувати для обробки вхідних даних і відображення вихідних результатів.

64

3. Процедури типу Property (Властивість). Такі процедури використову-

ються для створення властивостей, які потрібні користувачу в програмі для подальшого маніпулювання ними. Це корисно для створення інструменту, який дозволяє використовувати стандартні засоби управління Visual Basic.

Щоб набрати будь-яку процедуру загального призначення необхідно:

У меню Project вибрати команду Add Module. З’явиться вікно Add Module. Вибрати закладку New та натиснути кнопку Открыть (Ореn).

У вікні Code з’явиться новий стандартний модуль Module1.

Увести в стандартному модулі текст процедури.

8.2. Процедури типу Function

Синтаксис:

Function <ім’я>([<СФормП>]) [As <тип>] [<блок операторів>] [<ім’я> = <вираз>]

[If <умова> Then [<ім’я> = <вираз>:] Exit Function] End Function, де

<ім’я> – довільний ідентифікатор, відмінний від службового слова; - два обов’язкових пробіла, яки покращують вигляд функції;

<СФормП> - список формальних параметрів p1, . . . , pn, які можуть бути: 1) змінною, 2) масивом і записується він таким чином:

p1 [{*|As <тип>}], p2 [{*|As <тип>}], . . ., pn [{*|As <тип>}].

Тут символ * - це будь-який символ об’яви типу даних із набору

{% | & | ! | # | $};

<ім’я> = <вираз> - присвоєння імені функції значення, яке вона поверне у місце виклику;

Exit Function – оператор дострокового виходу з функції, коли <умова> стане істинною.

Зауваження. Якщо доступність (видимість) функції не об’явлена, то за умовчанням вона загальнодоступна (Public).

Звернення до процедури – функції здійснюється таким чином:

<ім’я>([<СФактП>]), де

<СФактП> - список фактичних параметрів a1, a2, … , an, якими можуть бути: 1) константа; 2) змінна (проста та з індексами); 3) масив; 4)

арифметичний вираз.

Зауваження. Щоб передати в фунцію масив, достатньо після імені вказати пусті дужки x().

Дія: При зверненні до функції:

65

1)формальні параметри (аргументи) визначаються фактичними аргументами;

2)виконується процедура, у якій ім’я приймає значення;

3)значення передається в головний модуль до місця виклику.

Приклад. Обчислити p = arctg a + 4,7b, де:

a – сума компонентів вектора x = {xi } = {1,5; -6,7; 8,35; -1,9; 0,7} (i 1,n; n 5);

b – сума компонентів вектора y = {yi } (i 1,n; n 5), які обчислюються так:

y

i

 

xi

Схема процедури обчислень суми

cos i

 

 

елементів вектора SV(n, x())

 

 

 

 

Схема основної процедури

Вхід

Початок

 

n = 5

 

i = 1, n

 

Введення

xi

 

xi

 

yi cos

i

Виведення

yi

 

a=SV(n, x( ))

b=SV(n, y( ))

p = arctg(a)+4,7b

Виведення a, b, p

s = 0

i=1,n

s = s + zi

SV = s

Вихід

Програма

Кінець

66

Виконання завдання

1.Відкрити новий проект. Змінити в Form1 властивість Caption на Процедури типу Function.

2.За допомогою кнопки створити дві командні кнопки у формі.

3.Змінити стандартні назви командних кнопок на <Обчислити> та <Вихід>.

4.Обов’язково встановити для властивості форми Autoredraw значення True (Да).

5.У формі за допомогою кнопки (Label) накреслити об’єкти Label1, Label2, … , Label5 та змінити в них властивість Caption (Label1 – Вектор x{}; Label2 – Вектор y{}; Label3 – a = ; Label4 – b = ; Label5 – p = )

6.У формі за допомогою кнопки (TextBox) накреслити об’єкти Text1, Text2, Text3 та присвоїти властивості Text значення пусто (для всіх об’єктів). Результати обчислень будуть виведені в ці текстові області.

7.У формі за допомогою кнопки (ListBox) накреслити об’єкт List1. Заповнити список на стадії проектування. Два рази клацнути по властивості List. У розкритий список занести значення компонент вектора X (після введення кожного значення натискати клавіші Ctrl + Enter ). Накреслити об’єкт List2, який буде заповнений під час виконання процедури компонентами вектора y.

8.Два рази клацнути по кнопці <Обчислити>. У вікні Project1–Form1(Code) з’явиться заголовок процедури Private Sub Command1_Click() та його кінець End Sub. Після заголовку процедури набрати текст (тіло програми) (див. попередню стор.).

9.Два рази клацнути по кнопці <Вихід>. У вікні Project1–Form1(Code) з’явиться заголовок процедури Private Sub Command2_Click() та його кінець End Sub. Після заголовку процедури набрати текст – End.

10.У меню Project вибрати команду Add Module. З’явиться вікно Add Module. Вибрати New і натиснути кнопку <Открыть>.

11.З’явиться вікно Project1 – Module1(Code). Надрукувати ім’я процедури Function SV(n, z) і натиснути Enter , з’явиться End Function (кінець процедури).

12.Після заголовку процедури набрати текст (тіло процедури).

13.Запустити програму на виконання, натиснувши кнопку <Start> на панелі інструментів Standard.

67

14.У вікні Form1 клацнути по командній кнопці <Обчислити>. Результат виконання процедури буде показаний у вікні форми.

15.Для закінчення розрахунків клацнути у формі по кнопці <Вихід>, щоб повернутися у вікно коду.

16.Зберегти модуль (Save Module1), форму (Save Form1), проект (Save Project).

8.3. Процедури типу Sub

Синтаксис:

Sub <ім’я> ([<СФормП>]) [<блок операторів>]

[If <умова> Then Exit Sub] End Sub, де:

<ім’я> – довільний ідентифікатор, відмінний від службового слова; - два обов’язкових пробіла, яки покращують вигляд процедури;

<СФормП> - список формальних параметрів p1, . . . , pn, які можуть бути: 1) змінною, 2) масивом і записується він таким чином:

p1 [{*|As <тип>}], p2 [{*|As <тип>}], . . ., pn [{*|As <тип>}].

Тут символ * - це будь-який символ об’яви типу даних із набору

{% | & | ! | # | $};

Exit Sub – оператор дострокового виходу з функції, коли <умова> стане істинною.

Формальні параметри умовно поділяють на дві групи:

1)параметри, що визначаються фактичними аргументами при зверненні до процедури (формальний параметр стоїть праворуч від оператора присвоєння);

2)параметри, що визначають фактичні аргументи після виконання процедури (формальний параметр стоїть ліворуч від оператора присвоєння).

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

68

Звернення до процедури здійснюється або за ім'ям, або за допомогою оператора Call. Синтаксис:

<ім’я> [<СФактП>] або Call <ім’я>([<СФактП>]),

Тут:

<СФактП> - список фактичних параметрів a1, a2, … , an, якими можуть бути: 1) константа; 2) змінна (проста та з індексами); 3) масив; 4) арифметичний вираз. Акцентуємо увагу: при першому методі виклику процедури круглі дужки навколо списку фактичних аргументів не ставляться.

Зауваження. Щоб передати в процедуру масив, достатньо після імені вказати пусті дужки x().

Приклад. Задані матриці Anxn та Bmxm (n > m). Нехай елементи матриць знаходяться на проміжку [f1, f2], де f1 = –20; f2 = 20. Обчислити

p c cos d sin , де 0,5 ; 1,6 ; c – сума елементів матриці А; d – сума елементів матриці В.

Формування матриць та знаходження суми елементів матриці оформити у вигляді процедури типу Sub (підпрограми).

Схема основної процедури

Початок

Введення n, m, f1, f2, ,

FORM (A)

FORM (B)

SUM (A)

SUM (B)

p c cos d sin

Виведення c, d, p

Кінець

69