- •Інформатика
- •1. Складання алгоритмів
- •1.1. Визначення алгоритму
- •Алгоритм повинен бути:
- •1.2. Алгоритми на природній мові
- •1.3 Алгоритми лiнійної структури
- •1.4 Алгоритми розгалуженої структури
- •1.5 Алгоритм циклічної структури
- •1.6 Комбіновані алгоритми
- •1.7 Схематичне зображення алгоритмів
- •Опис символів
- •2 Алгоритмічна мова qbasic
- •2.1 Інструментарій
- •2.2 Система меню
- •Поле опцій
- •Перемикачі
- •Поле вводу
- •Блок контролю
- •Поле списків
- •2.3 Редактор
- •Маркіровка тексту
- •Обробка тексту
- •2.4 Збереження і завантаження програм
- •Збереження
- •Збереження з іншим іменем
- •Завантаження програми
- •2.5 Складання нової програми
- •2.6 Друк програми
- •2.7 Пошук та зміна тексту
- •Пошук тексту
- •Багаторазовий пошук
- •Зміна тексту
- •2.8 Робота з кількома вікнами
- •2.10.1 Елементарні конструкції мови qbasic
- •Символи
- •2.10.2 Чисельні та символьні дані
- •2.10.3 Стандартні функції
- •2.10.4 Вирази
- •2.10.5 Операції та їх приорітет
- •Логiчні операцiї
- •2.11 Оператори мови qbasic
- •2.11.1 Оператор присвоєння
- •2.11.2 Оператор swap
- •2.11.3 Оператори введення-виведення Оператори введення read, data, restore
- •Оператор введення input
- •Оператор виведення print. Функції spc, tab
- •Оператор виведення print using
- •2.11.4 Оператори керування
- •Оператор goto
- •Оператор on…goto
- •Оператори stop і cont
- •Оператори if… then… else
- •Блок умовного переходу в програмі
- •Оператори gosub і return
- •Оператор on...Gosub
- •Цикл while
- •Цикл do
- •Оператор вибору select case
- •2.11.5 Графiчнi оператори Оператор view
- •Оператор screen
- •Оператор circle
- •Оператор window
- •Оператор line
- •Оператор draw
- •Оператор preset, pset
- •Оператор locate
- •2.11.6 Функції і процедури, визначенні користувачем
- •Функції-вираз
- •Власні функції
- •Власні процедури
- •2.11.7 Масиви Оператори option base, dim, erase
- •Встановлення кольорів екрана
- •2.11.9 Робота з файлами
- •2.11.10 Функція eof
- •Перелік посилань
Цикл 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 завершиться.
