Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Степан / Информатика / Информатика упп.doc
Скачиваний:
75
Добавлен:
20.04.2015
Размер:
1.17 Mб
Скачать

Операторы управления

В программе принят естественный порядок выполнения операторов – в той последовательности, в которой они записаны. В случае, если этот порядок должен быть нарушен, используются операторы перехода.

ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА. Оператор вида:

GOTO метка_оператора

вынуждает программу выполнять не следующий по порядку оператор, а опера­тор с указанной меткой. Например, оператор GOTO 25 читается как “Идти к оператору с меткой 25” и передает управление оператору с меткой 25.

Во многих версиях Бейсика все операторы в программе нумеруются. В QBasic, однако, сплошная нумерация не обязательна, хотя и возможна. Здесь для организации ссылок используются метки (в частном случае это могут быть и номера операторов), которые расставляются слева от тех операторов, на которые есть ссылки. Метками могут быть любые целые числа, идущие в произвольном порядке (не обязательно по возрастанию). Важно только, чтобы они не повторялись. Метками могут быть также буквы и слова, отделенные от оператора двоеточием, например возможна такая ссылка (здесь mn – метка)

GOTO mn

. . .

mn: PRINT x

Имя метки задается программистом произвольно. При грамотном программировании можно обойтись минимумом меток или не использовать их вовсе.

ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА

имеет две разновидности:

IF логическое_условие THEN оператор

If логическое_условие goto метка_оператора

Здесь, если заданное условие истинно, выполняется указанный оператор (в первом случае), или производится переход к оператору с указанной меткой (во втором). Если условие ложно, выполняется оператор, следующий непос­редственно за оператором IF. Например, оператор

IF a^2>=b–2 GOTO 40

нет

читается: “Если A2>=B–2 , то идти к оператору 40, если нет – к оператору, записанному ниже (непосредственно под оператором IF)”. А

IF x>z THEN ?Y читается:

нет

Если X>Z, тогда напечатать Y, иначе идти к следующему оператору”.

После фразы THEN (тогда) может быть использовано ключевое слово ELSE (иначе):

IF логическое_условие THEN оператор ELSE оператор

Здесь, если условие истинно, выполняется оператор, следующий после слова THEN, иначе оператор, следующий после слова ELSE.

Например, оператор

IF a>b THEN ?”А больше В” ELSE ?”В больше А”

выводит сообщение о фактическом соотношении переменных А, В.

Другой пример. На практике иногда приходится выяснять, четное число (например Х) или нечетное. Это можно сделать с помощью следующего выражения

IF FIX(x/2)=x/2 THEN ”X – четное” ELSE ” X – нечетное

СТРУКТУРНЫЙ ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА

Здесь уместно напомнить, что всюду, где в синтаксисе команд встречается слово оператор, может быть записано несколько операторов, разделенных двоеточием. Однако этого может оказаться недостаточно – внутрь выражений THEN/ELSE может потребоваться включить много действий и даже целые процессы. В этом случае используется структурный оператор условного перехода. Такой оператор условного перехода позволяет формировать условия, влияющие на любое число строк программы.

Вид оператора:

IF логическое_условие THEN

операторы1

[ELSE

операторы2]

END IF

Здесь если логическое условие истинно, выполняются операторы группы 1, если нет – операторы группы 2. Присутствие фразы ELSE и следующей за ней группы операторов необязательно.

Для примера используем предыдущую задачу о сравнении чисел А и В.

IF a>b THEN

?”А больше В”

ELSE

?”В больше А”

END IF

Замечание к нотации. Для придания более наглядного вида программе удобно использовать отступы при вводе “подчиненных” операторов в структурах IF, FOR и других, как показано выше. В данном случае подчиненными операторами по отношению к структуре IF являются операторы печати.

ОПЕРАТОР ВЫБОРА (селектор). Оператор выбора позволяет осуществлять удобный выбор среди нескольких возможных альтернатив.

Вид оператора:

SELECT CASE выражение_для_проверки

[CASE список_выражений_1

операторы 1]

[CASE список_выражений_2

операторы2]

. . .

[CASE ELSE

операторы_N]

END SELECT

где: выражение для проверки – числовое или символьное выражение;

список выражений – одно или более выражений такого же типа, что и выражение для проверки.

Если выражение для проверкисовпадает с каким-либо элементом изсписка выражений, приведенного после ключевого слова CASE, то выполняется группа операторов, следующих за этим словом до следующего CASE или END SELECT. Затем осуществляется переход к оператору, идущему после END SELECT. Если нет ни одного совпадения, выполняются операторы, следующие после слова CASE ELSE (если есть).

Элементы списка выражений должны иметь одну из следующих форм:

выражение_1 [,выражение_2] – проверяется совпадение выражения для проверки с любым выражением из перечисленного списка.

выражение_1 TO выражение_2 – проверяется нахождение выра­жения для проверки в диапазоне от выражения 1 до выра­жения 2.

IS логическое_условие– проверяет истинность логического условия. Условие должно начинаться с одного из знаков отношений (<, >, <=, >=, <>, =).

Пример. Здесь проверяется, при­надлежит ли переменная Х подмножеству чисел 1,3,5,7, или оно находится в диапазоне от 10 до 20, или оно больше 100 с выдачей соответствующего сообщения. Если ни одно из условий не выполняется, выдается сообщение "Остальные числа". Решение ниже слева.

Допускается соединение списков выраженийлюбого типа. Положим, что нам нужно выяснить только факт принадлежности/непринадлежности к указанному множеству. В этом случае решение задачи (ниже справа) упрощается.

SELECT CASE x

CASE 1,3,5,7

? "x=1, 3, 5, 7"

CASE 10 TO 20

? "10<=x<=20"

CASE IS > 100

? "x>100"

CASE ELSE

?"Остальные числа"

END SELECT

SELECT CASE x

CASE 1,3,5,7,10 TO 20, IS > 100

? "x=1,3,5,7 или 10<=x<=20 или х>100"

CASE ELSE

? "Остальные числа"

END SELECT

ОПЕРАТОР ЗАВЕРШЕНИЯ. Оператор END (“конец”) завершает выполнение программы. Он может находиться в любом месте программы. Таких операторов может быть несколько в случае, если предполагается завершение программы не только в ее конце. Присутствие END в конце программы необязательно, поскольку после выполнения последнего оператора, она все равно заканчивается.

КОММЕНТАРИИ. Написанная программа спустя некоторое время даже автору кажется малопонятным набором символов. Для облегчения понимания программы в нее вставляются комментарии – тексты, поясняющие суть процессов и не влияющие на ее исполнение. Такие тексты должны начинаться со слова-оператора

REM текст_комментария

Оператор REM может находиться как в отдельной строке, так и после любого оператора. Более удобной формой является использование для тех же целей апострофа. Ниже (слева и справа) изображены идентичные примеры комментариев.

PRINT x REM комментарии PRINT x 'комментарии

REM и это комментарии 'и это комментарии

Очевидно, что удобнее пользоваться апострофами.

В заключение еще один полезный оператор. Оператор очистки экрана.

CLS

В символьном режиме курсор будет установлен в левый верхний угол, в графическом – в центр экрана.

Блок-схема. При разработке алгоритма программы сначала удобно построить его графическое представление – блок-схему. В блок-схеме отдельные операции или группы операций помещаются в прямоугольные блоки. Операции анализа (операторы IF) отображаются ромбами, имеющими два выхода. Выход ДА, соответствует истинному значению, анализируемого условия, НЕТ – ложному.

Обычно, блок-схемы обрамляют блоки НАЧАЛО и КОНЕЦ. Мы будем изображать последние только в случае, если возможно разночтение.