- •Інформатика
- •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
- •Перелік посилань
Оператори gosub і return
Послідовність повторних у програмі операторів може бути оформлена у вигляді підпрограми. Підпрограма – це частина (фрагмент) програми, яка реалізує операції, використання яких потрібне у декількох місцях програми. Для звертання до підпрограми використовують оператор GOSUB, формат якого
GOSUB <позначка>
де <позначка> позначає місце, з якого починається підпрограма ("точка входу" у підпрограму).
Наприклад:
GOSUB C5
При виконанні інтерпретатором QBASIC оператор керування передається на підпрограму, яка починається з позначки С5. Підпрограма може вміщувати будь – які оператори практично з будь – якої кількості рядків. Але останнім оператором підпрограми обов’язково повинен бути оператор RETURN. Цей оператор повертає керування на оператор, наступний за оператором GOSUB.
Наприклад:
…………
GOSUB 500
A=X^2
B=Y-X
…………
500:
FOR I=1 TO N1
Z=X*I
PRINT Z
NEXT I
RETURN
…………
Керування передається на оператор 500. Потім послідовно виконуються оператори до RETURN, після цього буде виконуватись оператор A=X^2.
З підпрограми можна виходити до рядка, розташованого за підпрограмою. Спроба входу до тіла підпрограми операторами умовного або безумовного переходу викликає виведення на екран повідомлення про помилку:
RETURN WITHOUT GOSUB
Звертання до підпрограми може вкладатися одне в одне: при цьому вкладеність підпрограм відрізняється від вкладеності циклів або вкладеності дужок у вираз. У разі підпрограм вкладається не сама підпрограма, а оператори GOSUB, які їх викликають. Таким чином, перша підпрограма може викликати другу, друга – третю, і т. ін.
Оператор on...Gosub
Цей оператор аналогічний оператору ON...GOTO з тією лише різницею, що керування передається підпрограмою, що починається з оператора, мітка якого обирається із даного в списку ON...GOSUB списку міток відповідно до значення вказаного в ON...GOSUB виразу. В цьому відношенні оператор ON...GOSUB аналогічний оператору ON...GOTO. Наприклад:
.....
ON X^2 GOSUB 400, 610
A=B
C=A-B
.....
400: D=C-2
.....
RETURN
.....
610: N=K^M
.....
RETURN
.....
Цикл while
За допомогою конструкції WHILE... WEND можна реалізувати виконання ряду операторів до тих пір, доки виконується визначена умова. Послідовність операторів, виконання яких повторюється циклічно, називається циклом.
WHILE Умова
[0ператор 1]
. . .
[0ператор n]
WEND
Поки дотримується умова, послідовно виконуються оператори від 1 до n. Ключове слово WEND закриває конструкцію за аналогією з командою END IF.
Якщо умова циклу більше не дотримується, то виконання програми триває, починаючи з оператора, наступного за WEND.
Примітка: Якщо умова циклу WHILE не виконується з самого початку, то керування відразу передається оператору, розташованому за WEND.
Приклад 1:
Стежте за тим, щоб дії всередині циклу впливали нa WHILE-умову. В цьому прикладі показано що відбуватиметься, якщо цю рекомендацію не виконати.
‘Конструкція циклу WHILE з підвохом
DIM i%
i%=1
WHILE i%=1
РRINT “перший оператор у циклі WIHLE”
PRINT “другий оператор у циклі WIHLE”
WEND
‘Кінець програми
Приклад 2.
‘Перевірка вводимих величин за допомогою команди WHILE
DIM zahl!
WHILE zahl<O
INPUT "Введіть додатнє число", zahl!
WEND
PRINT "Спасибі! "
‘Кінець програми
Після запуску програми можна переконатися в тому, що не можна ввести значення в змінну. Цикл WHILE не виконується ані разу, тому що в арифметичних змінних с самого початку зберігається число нуль, отже, значення логічного виразу циклу WHILE завжди неправдиве.
Примітка. Якщо ви використаєте цикл WHILE... WEND, стежте за тим, щоб на час першої перевірки логічної умови змінні, що входять до умови, були встановлені відповідним чином.
Вставте в останній приклад перед рядком WHILE... наступний оператор:
zahl! = -1
В результаті програма буде працювати правильно.
Завдання. Розглянемо програму:
'Перевірка вводимих величин
CLS
INPUT "Задайте висоту (> 1000)", height!
INPUT "Задайте ширину (< 66)", breadth!
INPUT "Задайте довжину (>= 123)", length!
'Кінець програми
Нехай за будь-якими причинам значення вводимих змінних обмежені наступними умовами:
Область значень для висоти: > 1000
Область значень для ширини: < 66
Область значень для довжини: >= 123
Продовжити програму для контролю вводимих значень, в якій:
а) перевірка здійснюється за допомогою операторів IF і GOTO;
б) перевірка виконується в операторі WHILE... WEND.
