![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення.
Гарним прикладом може служити обробка таблиць, (Про представлення даних у вигляді таблиць докладно буде йти далі в нашому посібнику) При цьому одна змінювана величина — це номер рядка таблиці, а інша — це номер стовпця таблиці.
У програмуванні (мовою Visual Basic, і не тільки на ній) для цих цілей використовуються так звані вкладені цикли — конструкції виду:
For Ім’я А = Значення А1 To Значення А2 [Step Значення А3 ] For Ім’я Б= Значення Б1 To Значення Б2 [Step Значення Б3 ] ПовторюваніОператори Next [ Ім’я Б ] Next [ Ім’я А ] |
Тут Ім’я А і Ім’я Б — це індекси двох циклів (зовнішнього циклу А і внутрішнього циклу Б). Все інше в цьому записі не має потреби в роз'ясненні. Відзначимо тільки одну деталь: для більшої наочності рядки коду внутрішнього циклу трішки зміщені вправо. Такий запис «драбинкою» зовсім не обов'язковий, але полегшує читання програми. (До речі, запис «драбинкою» уже застосовувався — див. код 6.13 у розд. 6.6.)
Працюють вкладені цикли в такий спосіб: При кожному значенні лічильника зовнішнього циклу А лічильник внутрішнього циклу Б «пробігає» усі свої значення. І при кожному значенні лічильника внутрішнього циклу Б виконуються ПовторюваніОператори.
Приклад 7.6. Необхідно написати програму, що друкує таблицю чисел, представлену в табл. 7.1.
Табл. 7.1 | ||||
Ви здогадалися, що це за таблиця?
Неважко помітити, що в першому рядку — натуральні числа (від 1 до 5). В другому рядку — їхні квадрати, у третьому — їхні куби і т.д.
Напишемо програму, що друкує цю таблицю, використовуючи вкладені цикли.
Код, що вирішує цю задачу, наступний:
Код 7.4 |
![]() |
Тут i — лічильник рядків таблиці, a j — лічильник стовпців; j^i — зведення номера стовпця до ступеня, рівний номеру рядка; ni і nj — число рядків і стовпців таблиці. Cls — метод, що застосовується до екранної форми і служить для її очищення від того, що на ній було надруковано раніше.
(Згадаєте, яку роль грає кома в операторі Print j^i і подумайте, навіщо потрібний оператор Print, записаний між рядками Next j і Next i.).
Екранна форма для даного приклада проста: запуск програми ініціюється натисканням єдиної командної кнопки. Результат показаний на мал. 7.4.
![]() |
Мал. 7.4. Результат роботи найпростішої програми з вкладеними циклами. |
Приклад 7.7. За допомогою графічного методу Line зобразимо шахівницю — квадратне клітинне поле з 64 клітками (8 x 8), що по черзі зафарбовані двома різними кольорами.
Ідея алгоритму така. Рядки і стовпці клітинного поля нумеруються від 1 до 8. Поле проглядається зліва направо і зверху вниз. Якщо сума номерів рядка і стовпця для чергової клітки парна, клітка зафарбовується одним кольором, а якщо ця сума непарна — іншим. Як не можна краще для цього завдання підходять вкладені цикли.
Можна запропонувати наступну програму, у якій використовуються вкладені цикли:
Код 7.5 |
![]() |
У цій програмі nj — це число стовпців (вертикалей), a ni — число рядків (горизонталей) дошки; j і i — номер стовпця і номер рядка чергової клітки. На кожному кроці внутрішнього циклу робиться перевірка на парність суми i + j. Для цього використовується операція Mod — залишок від ділення (у даному випадку залишок від ділення i + j на 2). Якщо залишок дорівнює 0, число парне, якщо ні — непарне.
Зафарбований прямокутник малюється за допомогою методу Line... BF.
На мал. 7.5 показаний результат роботи програми.
![]() | Мал. 7.5. Результат роботи програми малювання шахівниці |
Зверніть Вашу увагу на деякі особливості приведеної програми.
Перше, що впадає в око — це «зникнення» командної кнопки на екранній формі після появи зображення шахівниці. Ми зробили це навмисно — щоб вигляд цієї кнопки не заважав спогляданню створеного нами графічного «шедевра». Зробити невидимою командну кнопку на екранній формі нескладно — для цього потрібно привласнити їй властивості Visible значення False, що і робить один з рядків програмного коду. А щоб після цього на зображенні шахівниці не залишився слід від «зниклої» кнопки, до екранної форми варто застосувати особливий метод Refresh (Refresh— буквально: освіжати, підправляти (англ.)), за допомогою якого усе, що було на формі, примусово перемальовується.
Зверніть увагу і на те, як у приведеній програмі зроблено масштабування екранної форми: значення координат її правого нижнього кута в методі Scale залежать від значень змінних ni, nj, dx, dy, x 1 і y 1, заданих раніше. Це означає, що шахівниця буде зображуватися на екранній формі будь-якого розміру — розміри дошки будуть «підстроюватися» під розміри форми! Крім того, можна без зусиль задати на цій дошці будь-яке число горизонталей і вертикалей (у першому рядку процедури встановити значення змінних ni і nj).
Hові поняття:
Дата публикования: 2014-12-28; Прочитано: 529 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!