Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1332231791

.pdf
Скачиваний:
27
Добавлен:
12.02.2016
Размер:
20.05 Mб
Скачать

Кодовий замок

1.Як потрібно виділяти вкладений оператор? а) ніяк не виділяти; б) брати у квадратні дужки; в) виділяти відступом.

2.Скільки у коді має бути операторів End If, коли один оператор If міститься в іншому?

а) 0; б) 1; в) 2.

3.За яким словом записують код, що виконується, коли умова в операторі If хибна?

а) Then;

б) Else;

в) Otherwise.

4.Скільки рядків коду може бути між операторами Else

та End If?

а) 0; б) 1;

в) скільки завгодно.

5.Що відбувається із вказівником на рядок, який виконується, під час виконання оператора If у покроковому режимі? а) вказівник залишається перед оператором If;

б) вказівник переміщується всіма рядками, але при цьому виконуються лише деякі рядки коду;

в) вказівник на рядок, що виконується, «перестрибує» ряд­ ки, які не потрібно виконувати.

6.Чи можна присвоїти число текстовій змінній? а) так, можна, звичайним оператором присвоєння; б) ні, не можна в жодний спосіб;

в) так, можна, скориставшись функцією зведення типів.

Варіативність—основаінтелекту

171

7.Чи можна всередині конструкції If умова1 Then...Else знову використовувати вираз If умова1 Then?

а) ні, не можна — це призведе до помилки; б) так, можна, хоч і це не логічно;

в) так, можна, це звична ситуація у програмуванні.

8.Якого значення набуде змінна x після виконання такого коду?

Dim x As Integer

x = 1

If x > 0 Then

If x > 1 Then

x = 2

End If

x = 3

End If

а) 1; б) 2; в) 3.

172

День 9

День 10

Циклічність — крок до оптимізації

Цього разу (всупереч побоюванням Михася) Даринка та Михась відчували себе після вчорашньої мандрівки на аероциклах значно краще, ніж тоді, коли вони вперше сіли за кермо повітряного транспорту. ВВ показав їм картинг-трек, на якому було так весело! Шкода тільки, що вони туди потрапити не змогли — не було вільних картингів. Але всі вирішили, що це місце потрібно обов’язково відвідати знову.

Зранку друзі зібралися в кімнаті ВВ, який розповів Михасю та Даринці, чим відрізняються сучасні картинги від тих, які були раніше, пояснив правила поведінки, а потім, скориставшись мережею, зробив замовлення на 3 картинги. Після цього ВВ розпочав черговий урок.

Повторення коду

У житті ми часто робимо одні й ті самі речі знову й знову, — розмірковував ВВ. — Пригадую, як я тричі фарбував свій аероцикл, щоб він мав чудовий вигляд.

— Мама каже, що їй доводиться повторювати мені п’ять разів, щоб я виніс сміття, перш ніж я це зроблю, — навів приклад Михась. — Але насправді вона повторює це лише чотири рази, я підраховував.

Циклічність—крокдооптимізації

173

— Так само і з програмами, — відповів ВВ. — Часто виникають ситуації, коли потрібно, щоб програма виконувала одну й ту саму дію знову й знову, доки вона не виконає її певну кількість разів. Тому в усіх мовах програмування використову­ ють цикли, код у яких виконується декілька разів. Цикли — дуже зручний засіб, завдяки якому обсяг коду, що вам дово­ диться писати, зменшується. Коли ви вставляєте оператор у цикл, вам необхідно написати його лише один раз, а викону­ ватися він може багато разів. Зазвичай такий підхід дає змогу зменшити кількість помилок.

Ось приклад неефективного кодування. Уявіть, що вам потріб­ но додати всі числа між 1 та 100. Це можна зробити, написавши одне довге присвоєння, наприклад:

Dim TotalCount As Integer TotalCount = 0

TotalCount = 1 + 2 + 3 + 4 'тощо

Важкувато?! Чим би це замінити?

Dim TotalCount As Integer TotalCount = 0

TotalCount = TotalCount + 1 TotalCount = TotalCount + 2 TotalCount = TotalCount + 3

TotalCount = TotalCount + 4 'тощо

Ще більше коду, який повторюється! Один рядок вам доведеть­ ся повторювати сто разів!

А якщо йтиметься про числа від 1 до 1000? Як ви їх збираєтеся додавати?

Оператор визначеного циклу

Ось тут і стануть у нагоді цикли. Як я вже згадував, у всіх мовах­ програмування є цикли, за допомогою яких код можна виконувати знову й знову. Часто вам відомо, скільки саме разів він має виконуватися. Наприклад, щоб додати всі числа від 1 до 1000, код повинен виконуватися 1000 разів. Якщо відомо, скільки разів має виконуватися код, ви застосовуєте

174

День 10

визначений цикл. Його так називають, бо в операторі циклу ви визначаєте, скільки саме разів виконуватиметься певний фрагмент коду.

У Visual Basic .NET визначений цикл утворюється за допомо­ гою оператора For...Next. Код, який має виконуватися ви­ значену кількість разів, міститься всередині цього оператора. Синтаксис циклу For...Next у Visual Basic .NET такий:

Dim LoopCounter As Integer

For LoopCounter = ПочатковеЗначення To КінцевеЗначення оператор 1 оператор 2

оператор N

Next

Зауважте, що слова For, Next та To є ключовими. У середови-

щі Visual Studio вони виділяються синім кольором і пишуться з великої літери. LoopCounter — це змінна цілочислового

типу, яка має використовуватися в циклі For...Next. Цю

змінну називають лічильником циклу (вона не обов’язково повинна мати ім’я LoopCounter). За допомогою лічильника

програма відстежує, скільки разів виконався цикл. Зсередини циклу ви можете отримати до цієї змінної доступ.

ПочатковеЗначення та КінцевеЗначення мають бути цілими числами, змінними цілочислового типу або виразами, резуль-

татами обчислення яких є цілі числа (наприклад, 3 + 1 або X + 1). ПочатковеЗначення — це початкове значення змінної LoopCounter. Кожного разу після виконання тіла циклу

(так називають групу операторів всередині циклу) значення змінної LoopCounter збільшується на одиницю. Коли значення змінної LoopCounter стає більшим за кінцеве значення,

виконання циклу припиняється.

Давайте напишемо код, у якому використовуватиметься визначений цикл. Спочатку створіть цикл, що виконується двічі та відображає значення лічильника під час кожного виконання. Створіть нову Windows-програму та назвіть її ForNextTwo. Додайте командну кнопку до форми Form1. Відредагуйте обробник події клацання кнопки. Додайте до нього наведений далі код.

Циклічність—крокдооптимізації

175

Dim LoopCounter As Integer

For LoopCounter = 1 To 2

MessageBox.Show(LoopCounter)

Next

Побудуйте та запустіть проект. Клацніть кнопку. Відкриється

вікно повідомлення з текстом «1» — це поточне значення змінної LoopCounter. Якщо клацнути кнопку OK, то відобра-

зиться повідомлення з текстом «2»: тепер поточне значення змінної LoopCounter дорівнює двом. Клацніть кнопку OK.

Виконання циклу завершилося, тому повідомлень більше не виводиться.

Розглянемо виконання коду уважніше. Ви оголосили цілочислову змінну з іменем LoopCounter, у рядку For надали цій

змінній початкове значення 1, а верхньою межею зробили число 2. Оператор, що виконуватиметься двічі, ви розмістили

між операторами For і Next. Кожного разу, коли виконувався цикл, значення змінної LoopCounter збільшувалося на один,

а у вікні повідомлення виводилося поточне значення цієї змінної (спочатку 1, потім 2). Коли значення LoopCounter

сягнуло трьох, цикл завершив свою роботу, і вікно повідомлення не відкрилося.

Покрокове виконання визначеного циклу

Давайте дослідимо код циклу For...Next, який ви щойно на- ­писали, за допомогою налагоджувача Visual Studio .NET. Про­ стежте за виконанням коду в покроковому режимі.

1.Встановіть точку переривання на рядку, що містить оператор For. Побудуйте та запустіть програму.

176

День 10

2.Коли відкриється форма, клацніть кнопку Button1. Код буде виконано до точки переривання. Рядок коду, помі­

чений точкою переривання, буде виділено. Підведіть курсор до змінної LoopCounter. Буде відображено її значення, що дорівнює 0.

3.Натисніть клавішу F11. Буде виконано виділений рядок коду:

For LoopCounter = 1 To 2

Перемістіть курсор до змінної LoopCounter. Значення цієї змінної становить 1.

4.Натисніть клавішу F11. Буде виконано виділений рядок коду:

MessageBox.Show(LoopCounter)

У вікні повідомлення буде виведено одиницю. Клацніть кнопку OK, щоб закрити вікно повідомлення.

Циклічність—крокдооптимізації

177

5.Натисніть клавішу F11. Буде виконано виділений рядок коду:

Next

6. І знову виконується цикл For:

For LoopCounter = 1 To 2

Перемістіть курсор до змінної LoopCounter. Тепер її значення становить 2.

7.Натисніть клавішу F11. Буде виконано виділений рядок коду:

MessageBox.Show(LoopCounter)

У вікні повідомлення відображатиметься число 2. Клацніть кнопку OK, щоб закрити вікно повідомлення.

178

День 10

8.Натисніть клавішу F11. Буде виконано виділений рядок коду:

Next

9. Знову виконується цикл For.

For LoopCounter = 1 To 2

Перемістіть курсор до змінної LoopCounter в операторі For. Значення LoopCounter становить 3.

10.Натисніть клавішу F11. Буде виконано виділений рядок коду:

End Sub

Циклічність—крокдооптимізації

179

Форма з’явиться знову. Зауважте, що останнього разу оператор всередині циклу не виконувався, бо значення лічильника перевищило кінцеве значення.

Ви щойно використали інструменти налагодження, щоб переглянути роботу циклу For... Next у покроковому режимі, і таким чином дізналися, як виконується код.

Застосування визначеного циклу

У мене є ідея! — із захопленням продовжив ВВ.

Яка? — з цікавістю запитала Даринка.

Давайте напишемо код, що додаватиме цілі числа від 1 до 1000. Це легко зробити за допомогою циклу For...Next. На-

пишіть Windows-програму, що називатиметься AddUp (Додавання). Додайте кнопку до форми Form1. Змініть значення атрибута Text кнопки Button1 на Додати. Двічі клацніть цю

кнопку, щоб змінити обробник події її клацання, і додайте до нього такий код:

Dim LoopCounter As Integer Dim TotalCount As Integer = 0

For LoopCounter = 1 To 1000

TotalCount = TotalCount + LoopCounter

Next

MessageBox.Show(TotalCount)

Напишіть та запустіть програму. Клацніть кнопку Додати. У вікні повідомлення буде виведено суму всіх цілих чисел від 1 до 1000. Швидко? Ви написали кілька рядків коду, а програма автоматично виконала 1000 додавань.

Як працює цей код? Спершу оголошуються дві змінні цілочис-

лового типу: LoopCounter і TotalCount. Змінна LoopCounter

«стежить» за тим, скільки разів виконується цикл, а у змінній TotalCount зберігається сума чисел. У циклі For змінній LoopCounter надається початкове значення 1, а кінцеве зна-

чення покладається рівним 1000, ми ж хочемо, щоб цикл виконувався 1000 разів. Оператор, що повторюється, додає поточне зна-

180

День 10