Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка QB.doc
Скачиваний:
16
Добавлен:
06.11.2018
Размер:
2.41 Mб
Скачать

Цикл do

Конструкція DO... LOOP дуже схожа на WHILE... WEND. Тут також є послідовність операторів, повторне виконання яких залежить від деяких умов.

Варіант 1

DO

[0ператор 1]

. . .

[0ператор n]

[EXIT DO]

LOOP [{WHILE I UNTIL} Умова]

Варіант 2

DO [{WHILE I UNTIL} Умова]

[0ператор 1]

. . .

[0ператор n]

[EXIT DO]

LOOP{WHILE I UNTIL}

Ключовими словами WHILE або UNTIL визначається засіб перевірки умов. При використанні WHILE цикл виконується до тих пір, доки дотримується умова (значення логічного вираження істинно). І, навпаки, при використанні UNTIL цикл виконується тільки тоді, коли умова не дотримується (значення логічного вираження неправдиве).

EXIT DO

Оператор EXIT DO передчасно перериває виконання циклу DO... LOOP. Робота програми триває з оператора, наступного за LOOP.

В першому варіанті цикл виконується принаймні один раз, бо перевірка умови знаходиться в кінці циклу. А в другому варіанті цикл може взагалі не виконуватися, якщо відповідна умова з самого початку не дозволяє входити в нього. Цей варіант дуже схожий на цикл WHILE... WEND. Як видно з синтаксичного опису, DO... LOOP може працювати без перевірки умов. В цьому випадку з нескінченного циклу можна вийти за допомогою оператора EXIT DO.

Приклад 1

'Контроль введення за допомогою оператора DO... LOOP

CLS

DO

INPUT "Введіть додатнє число"; zahl

LOOP UNTIL zahl>0

PRINT "Спасибі"

‘Кінець програми.

Якщо порівняти цей приклад з прикладом 2 з попереднього розділу (для WHILE... WEND), то видно, що контроль введення легше реалізувати оператором DO... LOOP, ніж оператором WHILE... WEND.

Приклад 2

В цьому прикладі коректність введення перевіряється в конструкції IF, і якщо умова виконується, вихід з циклу відбувається за допомогою оператора EXIT DO.

'Контроль введення за допомогою оператора DO... LOOP

DIM zahl!

CLS

DO

INPUT "Введіть додатнє число", zahl!

IF zahl! > 0 THEN

EXIT DO

END IF

LOOP

PRINT'Cnacибі’

‘Кінець програми .

Завдання

Для щойно розглянутого прикладу складіть інші варіанти оператора DO... LOOP

а)DO WHILE...

6) DO UNTIL...

в) DO... LOOP WHILE .

Оператор вибору select case

SELECT CASE призначений для виконання одного з альтернативних дій, перерахованих в ньому. Вибір визначається значенням керуючої змінної. Почнемо з подання синтаксису:

SELECT CASE Змінна

CASE Порівняння

[0ператори 1]

[CASE Порівняння

[0ператори 2]]...

[CASE ELSE

[Oпepaтори]]...

END SELECT

Спочатку виконується порівняння 1. Якщо результат істинний, виконуються оператори 1, після чого виконання програми триває з оператора, наступного за END SELECT. Якщо результат порівняння 1 неправдивий, та перевіряється умова наступної гілки CASE. В підсумку виконуються оператори тієї CASE-гілки, для якої виконується умова порівняння. Якщо ж ні для однієї гілки результатом порівняння не є істина, то виконуються оператори гілки CASE ELSE.

Примітка: Застосування CASE ELSE не обов'язково. Однак цю гілку однаково слід описувати, бо QBASIC видає повідомлення про помилку, якщо її немає і ані для жодного з порівнянь не був отриманий істинний результат.

CASE-порівняння в найпростішому випадку складається тільки з одного виразу (наприклад, з чисел або зі змінних). Однак можна включати списки виразів (вираз 1, вираз 2,...), або навіть цілі області (вираз 1 ТО , вираз 2). Далі значення змінної можна оцінювати за допомогою операторів порівняння, як у випадку за умовами. Для цього після CASE застосовується ключове слово IS, за яким слідує операція відношення та вираз.

Приклад 1. В цьому прикладі вводиме число перевіряється на належність до певного інтервалу.

‘SELECT…CASE

CONST zehn%=10

DIM zahl%

CLS

INPUT "Задати число"; zahl%

SELECT CASE zahl%

CASE 1, 2 'список значень

PRINT "Число 1 або 2"

CASE 3 TO 10 'область значень

PRINT "Число в діапазоні від 3 до 10"

CASE IS=11 'порівняння з IS і оператор

PRINT "Число 11"

"Зрозуміло, вираз для порівняння може бути і складніше

CASE IS<zehn%+10

PRINT "Число менше 20"

CASE ELSE

PRINT "Це всe, що я знаю про число"

END SELECT

PRINT "Кінець"

‘Кінець програми

Приклад 2. Інколи важливо, в який послідовності розташовуються CASE-гілки. Розглянемо приклад.

'SELECT... CASE з підвохом

DIM zahl%

CLS

INPUT "Ввести число"; zahl%

SELECT CASE zahl%

CASE IS < 10

PRINT "Число менше 10"

CASE IS < 20

PRINT "Число менше 20"

CASE IS < 5

PRINT "Число менше 5"

CASE ELSE

PRINT "Рішення не зустрілося"

END SELECT

'Кінець програми .

Третя CASE-гілка ніколи не буде виконана, бо число, що менше 5, завжди менше 10, а отже, після першої CASE - гілки виконання оператора SELECT завершиться.