Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вкладені цикли



Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення.

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

У програмуванні (мовою 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; Прочитано: 509 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...