КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Вкладені цикли
Вправи Питання для роздумів Лічильник (індекс) циклу, крок циклу, початкове і кінцеве значення лічильника, перевірка на несуперечність. 1. Скільки повторень зробить цикл, якщо початкове значення лічильника 1, кінцеве значення 31, а крок дорівнює 5? 2. Початкове значення лічильника 5, кінцеве значення -5, крок дорівнює -2. Які значення буде послідовно приймати лічильник? Скільки значень він прийме? Якою буде сума цих значень? Якою буде ця сума, якщо крок зробити рівним -3? 3. Яким буде значення лічильника після роботи циклу, якщо початкове значення 5, кінцеве значення -5, а крок дорівнює 27? 4. Яким буде значення лічильника після роботи циклу, якщо початкове значення 5, кінцеве значення -5, а крок дорівнює -20? 5. Як Ви думаєте, де будуть надруковані номери квадратів у прикладі 7.4, якщо в методі Line поміняти місцями координати кутів квадратів — замість виразу (3 + i* 3, 3) -(l+ 1 * 3, 1) після слова Line записати вираз (1 + i* 3, l)-(3 + i* 3, 3)? Як потрібно змінити цей вираз для того, щоб результат роботи програми не змінився, якщо збільшити на 1 початкове і кінцеве значення лічильника (рядок For i = 0 To 10 перетворити в рядок For i = 1 To 11)? 6. 12. Як Ви думаєте, чому крок циклу в програмі побудови графіка функції (код 7.3) встановлений явно рівним 0.01, а не за замовчуванням — рівним 1? 1. Напишіть програму багаторазового друку свого імені зі значеннями параметрів циклу, що зазначені в першому питанні. 2. Напишіть програму, що друкує суму значень, про які йдеться у другому питанні. 3. За аналогією з прикладом 7.4 напишіть програму, за допомогою якої зображується не горизонтальний (як у цьому прикладі), а вертикальний ряд пронумерованих квадратів (чи кіл). 4. За аналогією з прикладом 7.5 напишіть програму, що будує графіки функцій у = Sin (x), у = Tan (x), у = l / x — синусоїду, тангенсоїду і гіперболу, (синусоїду і тангенсоїду — на відрізку [ 0,+ 2 ], гіперболу — на відрізку [-2, 2]). Подумайте над тим, як краще підібрати масштаби графічного вікна, а також як уникнути виходу за межі області визначення функцій (x ≠ 0 для гіперболи і x ≠ /2, x ≠ З/2 для тангенсоїди). Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення. Гарним прикладом може служити обробка таблиць, (Про представлення даних у вигляді таблиць докладно буде йти далі в нашому посібнику) При цьому одна змінювана величина — це номер рядка таблиці, а інша — це номер стовпця таблиці. У програмуванні (мовою Visual Basic, і не тільки на ній) для цих цілей використовуються так звані вкладені цикли — конструкції виду:
Тут Ім’я А і Ім’я Б — це індекси двох циклів (зовнішнього циклу А і внутрішнього циклу Б). Все інше в цьому записі не має потреби в роз'ясненні. Відзначимо тільки одну деталь: для більшої наочності рядки коду внутрішнього циклу трішки зміщені вправо. Такий запис «драбинкою» зовсім не обов'язковий, але полегшує читання програми. (До речі, запис «драбинкою» уже застосовувався — див. код 6.13 у розд. 6.6.) Працюють вкладені цикли в такий спосіб: При кожному значенні лічильника зовнішнього циклу А лічильник внутрішнього циклу Б «пробігає» усі свої значення. І при кожному значенні лічильника внутрішнього циклу Б виконуються ПовторюваніОператори. Приклад 7.6. Необхідно написати програму, що друкує таблицю чисел, представлену в табл. 7.1.
Ви здогадалися, що це за таблиця? Неважко помітити, що в першому рядку — натуральні числа (від 1 до 5). В другому рядку — їхні квадрати, у третьому — їхні куби і т.д. Напишемо програму, що друкує цю таблицю, використовуючи вкладені цикли. Код, що вирішує цю задачу, наступний:
Тут i — лічильник рядків таблиці, a j — лічильник стовпців; j^i — зведення номера стовпця до ступеня, рівний номеру рядка; ni і nj — число рядків і стовпців таблиці. Cls — метод, що застосовується до екранної форми і служить для її очищення від того, що на ній було надруковано раніше. (Згадаєте, яку роль грає кома в операторі Print j^i і подумайте, навіщо потрібний оператор Print, записаний між рядками Next j і Next i.). Екранна форма для даного приклада проста: запуск програми ініціюється натисканням єдиної командної кнопки. Результат показаний на мал. 7.4.
Приклад 7.7. За допомогою графічного методу Line зобразимо шахівницю — квадратне клітинне поле з 64 клітками (8 x 8), що по черзі зафарбовані двома різними кольорами. Ідея алгоритму така. Рядки і стовпці клітинного поля нумеруються від 1 до 8. Поле проглядається зліва направо і зверху вниз. Якщо сума номерів рядка і стовпця для чергової клітки парна, клітка зафарбовується одним кольором, а якщо ця сума непарна — іншим. Як не можна краще для цього завдання підходять вкладені цикли. Можна запропонувати наступну програму, у якій використовуються вкладені цикли:
У цій програмі nj — це число стовпців (вертикалей), a ni — число рядків (горизонталей) дошки; j і i — номер стовпця і номер рядка чергової клітки. На кожному кроці внутрішнього циклу робиться перевірка на парність суми i + j. Для цього використовується операція Mod — залишок від ділення (у даному випадку залишок від ділення i + j на 2). Якщо залишок дорівнює 0, число парне, якщо ні — непарне. Зафарбований прямокутник малюється за допомогою методу Line... BF. На мал. 7.5 показаний результат роботи програми.
Зверніть Вашу увагу на деякі особливості приведеної програми. Перше, що впадає в око — це «зникнення» командної кнопки на екранній формі після появи зображення шахівниці. Ми зробили це навмисно — щоб вигляд цієї кнопки не заважав спогляданню створеного нами графічного «шедевра». Зробити невидимою командну кнопку на екранній формі нескладно — для цього потрібно привласнити їй властивості Visible значення False, що і робить один з рядків програмного коду. А щоб після цього на зображенні шахівниці не залишився слід від «зниклої» кнопки, до екранної форми варто застосувати особливий метод Refresh (Refresh— буквально: освіжати, підправляти (англ.)), за допомогою якого усе, що було на формі, примусово перемальовується. Зверніть увагу і на те, як у приведеній програмі зроблено масштабування екранної форми: значення координат її правого нижнього кута в методі Scale залежать від значень змінних ni, nj, dx, dy, x 1 і y 1, заданих раніше. Це означає, що шахівниця буде зображуватися на екранній формі будь-якого розміру — розміри дошки будуть «підстроюватися» під розміри форми! Крім того, можна без зусиль задати на цій дошці будь-яке число горизонталей і вертикалей (у першому рядку процедури встановити значення змінних ni і nj). Hові поняття:
Дата добавления: 2014-12-23; Просмотров: 597; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |