Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Візуал Бейсік 2010 Глінський.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.12 Mб
Скачать

§ 19. Цикли. Цикл з параметром

Цикл — це процес повторення дій (виконання певної серії ко­манд деяку кількість разів).

1. Види циклів. Розглядають цикли, де кількість повторень відома заздалегідь, і цикли, де кількість повторень заздалегідь не відома, але її можна визначити під час виконання циклу. Обчислити суму п’яти членів числової послідовності — це задача на використання склу з відомою кількістю повторень.

Задача 1. Обчислити суму (s) чисел від 1 до 5.

Розв’язання. Математично задача розв’язується так: s=l+2+3- + 4 + 5. Чи можете ви швидко додати ці числа і переконатися, що s = 15? Комп’ютер розв’язує цю задачу інакше. Розгляньте код для комп’ютера, створений за допомогою команди If-Then GoTo, і дізнаєтеся, як «мислить» комп’ютер, розв’зуючи задачу 1:

Dim і, s As Integer

s = 0

і = 1

start: If і > 5 Then GoTo finish

s = s + і

і = і +1

GoTo start

finish: <вивести s>

Наведена програма — це приклад циклічного алгоритму з «передумовою». Умову виходу з циклу і > 5, яка дає відповідь на запитання «Чи не пора закінчити роботу?», комп’ютер перевіряє пера виконанням трьох дій у циклі.

Завдання 1. Виконайте код з ручкою в руках або в консольному режимі і переконайтеся, що результат буде 15, а кількість по­вторень однотипних дій у циклі — 5.

Завдання 2. Перебудуйте код, щоб умова виходу з циклу пере­вірялась після виконання основних дій у циклі. Підказка:

s = 0

і = 1

start: s = s + і: і = і +1

If і <= 5 Then GoTo start

<вивести s>

Такий цикл називають «циклом з післяумовою».

2. Поняття про «нескінченні» цикли. Кількість повторень у цикл: має бути скінченною. Утворення «нескінченних» циклів — часта по­милка початківців. Якщо пропустити у попередньому коді команд? і = і + 1, то отримаємо «нескінченний» цикл. «Нескінченні» цикли призводять до так званого «зависання» комп’ютера, коли користувач не отримає жодних результатів (як у цьому випадку, алгоритм буде нерезультативний), або до безупинного виведення на екран непо­трібних результатів. Подальша робота з такою програмою стає не­можливою. Виконання програми потрібно зупинити шляхом натискання на клавіші Ctrl + Break чи інакше.

3. Цикл з параметром (ForNext). Задачу 1 значно простіше розв’язати за допомогою алгоритмічної конструкції «цикл з параметром» (інші назви — цикл «для», цикл For).

Цикл з параметром має такий загальний вигляд:

For і = <вираз1> То <вираз2> Step <вираз3> <серія команд>

Next і

Рядок For-To-Step читають так: «для і від значення виразу 1 до значення виразу 2 з кроком, що заданий виразом 3, виконати серію команд». Перший рядок у конструкції циклу є командою, яку на­зивають заголовком циклу. Next — це команда, яка фіксує кінець деякої серії команд. Вона змінює значення параметра «і» на вели­чину кроку. Серія команд утворює тіло циклу. Змінну «і» назива­ють параметром циклу.

Дія команди. Спочатку параметру циклу (тут «і») присвоюється значення виразу 1. Якщо це значення менше-рівне значення виразу 2, зо виконується серія команд; значення параметра змінюється на значення кроку і знову порівнюється зі значення виразу 2 і т.д. Коли значення параметра перевищить значення виразу 2, то виконання никлу завершується і виконуватиметься наступна після Next коман­да. Якщо крок дорівнює одиниці, то Step <вираз 3> можна не писати.

Задача 2. Дослідити, яке буде значення змінної s після виконан­ня команди циклу:

s = 0

For і = 1 То 9 Step 2

s = s + і

Next і

Розв’язування. Виконаємо код з ручкою в руках і випишемо всі проміжні значення змінних s та і:

s = 0,

і=1, якщо 1 <= 9, то s = 0+1 = 1,

і = 1 + 2 = 3, 3 <=9= так, s=1 +3 = 4,

і = 3 +2 = 5, 5<= 9=так, s=4+ 5 = 9,

і=5 +2 = 7, 7<=9= так, s=9 +7 = 16,

і = 7 +2 = 9, 9<=9=так, s=16 + 9 = 25,

і = 9 + 2 = 11,11<9 = ні, вихід з циклу.

Відповідь: s = 25.

Інший спосіб: треба догадатися, що записані команди означають обчислення такої суми: 0 + 1+ 3 + 5 + 7 + 9, що дорівнює 25.

Розгляньте (рис. 1.22) графічні схеми циклу «для», заголовок якого має, наприклад, такий вигляд (крок = 1): For і = а То b.

Зверніть увагу! У блок-схемі застосовано новий вид блоків для зображення алгоритмічної конструкції «цикл для».

Довідка 1. Ім’я змінної після слова Next можна не писати.

Довідка 2. Якщо тіло циклу коротке, то всю конструкцію цикл? можна розмістити в одному рядку коду. Тоді код стає компактнішим (лише не забувайте між командами ставити двокрапки), наприклад, For і = 1 То 9 Step 2 : s = s + і: Next.

Рис. 1.22. Блок-схема і структурна схема циклу «для»

4. Обчислення сум і добутків за допомогою циклу For. Розглянемо типові задачі, які ведуть до використання циклів — обчислена сум і добутків чисел.

Задача 3. Обчислити суму (s) чисел від 1 до п, де нехай п = 100 за допомогою циклу For.

Розв’язування. Математично задача розв’язується так: s = 1 + 2 - 3 + ... + 100 = 5050.

Графічні схеми алгоритму. Розгляньте графічні схеми алгоритму розв’язування задачі 3 (рис.1.23). Замість традиційних назв і таї для змінних використаємо назви Число і Сума.

Рис. 1.23. Блок-схема і структурна схема для задачі 3

Наступний код дає розв’язок задачі:

'Сума чисел

Dim Число As Integer, Сума As Integer, n As Integer

n = InputВох(“Введіть n”)

Сума = 0

For Число = 1 To n Step 1

Сума = Сума + Число

Next Число

<вивести Сума>

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

Завдання 1. Виконайте код у візуальному режимі і переконай­теся, що результат 5050. На форму треба вставити два текстові поля (одне — для відображення п, друге — для суми) і кнопку «Обчисли­ти», код якої наведено вище. Команду <вивести Сума> слід замінити командою TextBox2.Text = Сума. Відобразити число п у полі 1 можна командою TextBox1.Text = n.

Завдання 2. Виконайте код і обчисліть таку суму:

s = 1 + 2 + 3 + .. + 500.

Завдання 3. Модифікуйте код, щоб обчислити таку суму:

s= 2 + 4 + 6 +.. + 200.

Завдання 4. Модифікуйте код, щоб обчислити суму непарних чисел від 11 до 99.

Завдання 5*. Модифікуйте код, щоб обчислити

s = sinl + sin2 + sin3 + ...+ sinl0.

Задача 4. Обчислити добуток чисел від 1 до 8 за допомогою циклу For.

Розв’язування. Потрібно скласти код для обчислення добутку d=1*2*3*... *8. Переконайтеся, що наступний код дає розв’язок задачі:

'Добуток чисел

Dim n, d

n = 8 : d = 1

For і = 1 То n Step 1

d = d * і

Next і

<вивести "Добуток = " + Str(d)>

Правило. Перед обчисленням добутку відповідній змінній d тре­ті присвоїти значення 1.

Завдання 1. Реалізуйте код.

Завдання 2. Модифікуйте код для обчислення добутку парних чисел від 2 до 10.

Завдання 3*. Модифікуйте візуальний проект і код, щоб обчис­тити за допомогою одної команди циклу суму і добуток чисел від 1 :: 8, а також середнє арифметичне, середнє геометричне і середнє гармонійне цих чисел. Вивести текстове повідомлення, яке середнє більше. Формули відшукайте в мережі (почніть з www.google.com.ua).

Завдання 4*. На прикладі перших десяти натуральних чисел дослідіть, що більше: середнє квадратичне чи середнє арифметичне чисел. Дізнайтеся, які ще є види середніх значень і які співвідношення між всіма середніми значеннями (див. www.google.com.ua).

5. Побудова таблиць. За допомогою циклу зручно виводити на екран таблиці з даними. Тут таблицями ми називаємо нерозграфлені стовпці з даними.

З адача 5. Побудувати (вивести на ек­ран) таблицю квадратів чисел від 10 до 20.

Розгляньте на малюнку поряд код : результати його виконання у вікні Imme­diate (VBA).

Задача 6. Побудувати таблицю відповідності між морськими милями та кіло-1 метрами для 1, 2, 3, ..., n миль, якщо ві­домо, що 1 морська миля = 1,852 км. Значення п (кількість рядків у таблиці — близько 10) задати в ре­жимі діалогу.

Розв’язування. Код може мати такий вигляд:

'Таблиця мір

Dim myli As Integer, n As Integer, km As Single

n = InputBox(“Кількість рядків у таблиці”)

For myli = 1 To n

km = 28.353495 * myli

<вивести myli, km>

Next

Розгляньте код і результати у вікні середовища VB (рис. 1.24).

Рис. 1.24. Розв’язування задачі 6 у VB

Завдання 1. Реалізуйте останні два коди у консольному режимі.

Завдання 2. Модифікуйте коди, щоб забезпечити виведення таблиць (стовпців даних) у текстові файли.

6. Виведення таблиць з даними у багаторядкове текстове поле. Щоб створити візуальний проект розв’язування задачі 5 чи 6, на­вчимося виводити таблиці даних у багаторядкове текстове поле TextВох (VB і VBA) чи у багаторядковий напис (лише у VB).

Багаторядкове поле чи напис створюють на етапі конструювання форми, надаючи значення True властивості Multiline об’єкта TextBox чи Label.

Наше завдання — створити таблицю з даними як єдине текстове дане. Під час формування такого текстового даного застосовують рядок нульової довжини ("") і до нього додають наступний рядок з даними разом з деякою стандартною сталою VbCrLn у VB (або vbCr у VBA). Ця стала містить код дії переходу на новий рядок, тобто забезпечує розташування рядків один під одним у вигляді таблиці (стовпців даних).

Щоб стовпці в таблиці не «злипалися» між ними створюють пропуски. Для цього дані форматують або застосовують деяку не­стандартну текстову сталу з пропусками, наприклад, Space = “ ” чи стандартну сталу vbTab (або комбінують ці засоби).

Отже, щоб створити таблицю, перед циклом треба записати

Space =” “

TextBox1.Text =""

У тілі циклу замість псевдокоду <вивести і, z> мають бути команди

t = Str(i) + Space + Str(z)

TextBox1.Тext = TextBox1.Text + t + vbCr 'VBA.

Зауваження. Таблиці можна виводити у вікно повідомлень. Для дього у попередньому коді потрібно скрізь замість TextBox1.Text записати деяку текстову змінну d і після виконання циклу (або в циклі) виконати команду MsgBox d у VBA чи MessageBox.Show(d) у VB.

Завдання 3. Створіть проект для розв’язування задачі 6. Підказка: код кнопки «Обчислити», в якому реалізовано виведення результатів у вигляді таблиці в багаторядкове текстове поле TextBох1, може бути таким:

'Таблиця мір

Dim myli As Integer, n As Integer, km As Single

n = InputBox(“Кількість рядків у таблиці”)

TextBox1.Text =""

For myli = 1 To n

km = 28.353495 * myli

t= Str(myli) + ” " + vbTab + Str(km)

TextBox1.Text = TextBox1.Text + t + vbCr 'VBA

Next

Для середовища VB замість vbCr треба писати vbCrLn.

Завдання 4. Модифікуйте код, щоб у першому рядку був та­кий текст-заголовок таблиці: «Милі Кілометри».

Завдання 5. Модифікуйте код для виведення таблиці квадратів і кубів чисел від 10 до 20.

Завдання 6. Модифікуйте попередній код, щоб діапазон чисел можна було задавати в режимі діалогу.

7. Виведення таблиці з даними у список. Дані у вигляді таблиці можна виводити в об’єкт ListBox за допомогою методу Add. Новий рядок автоматично відображається у вікні об’єкта-списку. Для цьо­го замість псевдокоду <вивести і, z> достатньо двох команд:

t= Str(i) +" "+Str(z)

ListBoxl.Items.Add t 'VB

ListBoxl .Addltem t 'VBA

Завдання 7. Доповніть попередні коди виведенням результатів у список.

Висновок. Результати розв’язування задач у вигляді окремих да­них чи таблиць можна виводити: а) у консольне вікно чи у вікно ін­терпретації; б) у текстовий файл; в) у звичайне чи багаторядкове поле чи напис; г) у вікно повідомлень; д) у список.

Вправи

1. Які значення змінних s і d після виконання кодів:

a) s = 0

б) d = 1

For х = 1 То 5 Step 2

For a = 1 To 5

s = s + 2 * x

d = d * a

Next x

Next a

в) s=0

г) d = 1: m = 6

For x = 10 To 0 Step -2

For x = 1 To m Step m / 3

s = s + x

d = d * x

Next x

Next x

2. Виведіть у вигляді таблиці з двома стовпцями і, ai послідовність чисел ai= і2 - 30, де і=1,2,…,10:

а) у консольне вікно;

б) у текстовий файл;

в) у багаторядкове поле чи напис;

г) у вікно повідомлень;

д) у список.

3. Розв’яжіть задачу № 7 свого варіанта з розділу «Задачі», застосува­вши 2-3 способи виведення результатів.

4. Розв’яжіть задачу № 8 свого варіанта з розділу «Задачі».