КАТЕГОРИИ: Архитектура-(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. Доповніть програму прикладу 7.7 (малювання шахівниці) друкуванням номерів клітинок — від 1 до 64, — так, як показано на мал. 7.6.
Підказка: Номер клітинки варто виразити через значення лічильників обох циклів: j + (i - 1) * nj. Вказівка: Щоб номери друкувалися всередині, а не зовні клітки, у методі Line варто поміняти місцями координати двох кутів зображуваного прямокутника. При програмуванні дій, що повторюються, далеко не завжди заздалегідь відоме число повторень. Змінимо, наприклад, умову задачі приклада 7.1 — будемо не тільки знаходити квадрати натуральних чисел від 1 до 100, але і підсумовувати квадрати цих чисел, а результат підсумовування на кожнім кроці циклу привласнювати змінній Сума типу Integer. Чи буде обчислена сума всіх 100 доданків? (Таким було 1-е запитання наприкінці розд. 7.1.) Відповідь на це питання негативна. Справа в тому, що максимальним значенням змінної типу Integer є число 32767 (див. розд. 3.1). Якщо ми встановимо число повторень рівне 100, на якомусь кроці циклу виникне помилка, викликана спробою привласнити змінній Сума значення, що перевищує число 32767. Ця спроба викликає появу на екрані попереджуючого повідомлення (мал. 7.7).
Це неприємно, тому що наша програма «зависне» і необхідно буде перервати її роботу. Чи можна уникнути цього? Один із способів полягає в застосуванні оператора On Error GoTo... (У випадку помилки перейти...). Подробиці про цей оператор — у розд. 7.6. Інший спосіб більш природний і застосовується частіше. Він полягає у використанні циклу з умовою. Цикл з умовою — це багаторядковий оператор, перший рядок якого починається з ключового слова Do (Виконати), а останній рядок починається з ключового слова Loop (Петля). Синтаксис циклу з умовою має дві форми. Форма 1:
Форма 2:
ПовторюваніОператори — це будь-які оператори мови, що повинні виконуватися багаторазово. (Один раз, кілька разів чи жодного разу!) Умова буває двох типів: · с ключовим словом While; у цьому випадку вона називається умовою продовження циклу (умовою типу While); · с ключовим словом Until; у цьому випадку вона називається умовою завершення циклу (умовою типу Until). Після ключового слова While (чи Until) записується УмовнийВираз. Якими бувають УмовніВирази, Ви знаєте — про них йшла мова в розд. 6.3. Таким чином, можливі 4 варіанти: Табл. 7.2.
Тепер розглянемо логіку роботи циклу з умовою. Випадок 1. Використання умови типу While — продовження циклу. ПовторюваніОператори виконуються, якщо значення УмовногоВиразу дорівнює True (Істина). У противному випадку цикл завершується. Випадок 2. Використання умови типу Until — завершення циклу. ПовторюваніОператори виконуються, якщо значення УмовногоВиразу дорівнює False (Неправда). У противному випадку цикл завершується. Очевидно, що завжди можна замінити умову типу While умовою типу Until, і навпаки. Для цього потрібно використовувати логічне заперечення УмовногоВиразу (див. розд. 6.3). Приклад 7.8. Ви хочете, щоб цикл завершився при виконанні наступного умови: Це рівнозначно до того, що цикл повинен продовжуватися, поки виконується умова Not (X> 100 Or Time > 600), Яку з двох умов використовувати: А чим відрізняються варіанти 1 і 2 табл. 7.2 від варіантів 3 і 4? Якщо умова стоїть у першому рядку, може трапитися так, що ПовторюваніОператори так жодного разу і не будуть виконані! Іноді це буває корисно. Нижче буде розглянутий приклад 7.9, у якому говориться і про цей випадок. А якщо умова стоїть в останньому рядку, ПовторюваніОператори будуть виконані хоча б один раз! Приклад 7.9. Розглянемо таку задачу. Петро Петрович купив мішок цукру. І вирішив для себе: щораз брати з цього мішка рівно одну десяту частину його вмісту, доки в мішку не залишиться менше 30 кг цукру. (Спочатку в мішку було 50 кг.) Напишемо програму мовою Visual Basic, що видавала б номер звертання Петра Петровича до мішка і кількість цукру, що залишився в мішку, у вигляді:
Один з варіантів розв'язку:
Очевидно, що замість Until Maca < 30 можна написати: А що буде, якщо початкова маса мішка не 50, а 25 кг? Буде помилково надруковано:
(Незважаючи на те, що маса мішка менше 30 кг, Петро Петрович одного разу все-таки відсипле собі 2.5 кг цукру!) Щоб програма так не помилялася, Умову потрібно перенести з останнього рядка циклу в її перший рядок: А тепер ми можемо показати Вам, як вирішується задача підсумовування квадратів, наведена на початку глави:
Підсумовування буде продовжуватися, поки значення змінної Sum не досягне встановленого нами значення. Таким чином, ми встановили «непрохідний бар'єр» для нескінченного повторення. Але наскільки надійний цей бар'єр? В останньому розділі цієї глави ми торкнемося цього питання. Hові поняття:
Дата добавления: 2014-12-23; Просмотров: 628; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |