Студопедия

КАТЕГОРИИ:


Архитектура-(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]). Подумайте над тим, як краще підібрати масштаби графічного вікна, а також як уникнути виходу за межі області визначення функцій (x0 для гіперболи і x/2, xЗ/2 для тангенсоїди).

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

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

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


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.