Повторение действий на Бейсике

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

Изложение правил начнем с разбора «звездного неба» из п случайных точек.

АЛГ «ЗВЕЗДНОЕ НЕБО» НАЧ ЗАПРОС ЗВЕЗД = , п ГРАФИКА xm: = 255; ym: = 191; cm: = 3 om К = 1 ДО П ЦИКЛ х: = хm * СЛУЧАЙНОЕ (0,1) у: = уm * СЛУЧАЙНОЕ (0,1) с: = сm * СЛУЧАЙНОЕ (0,1) ТОЧКА (Х, У), С ЦИКЛ КОН 10 ¢ звездное небо   20 INPUT «звезд =»; N 30 ¢ графика 40 XM = 255: YM = 191: CM =3 50 FOR K = 1 TO N 60 X = XM * RND (1) 70 Y = EM * RND (1) 80 C = CM * RND (1) 90 PSET (X, Y), C 100 NEXT K 110 END

Приведенная программа формирует картинку из п случайных точек. Количество точек указывает человек, отвечая на вопрос «звезд =?», который выведет 30-й оператор программы. Далее ЭВМ фиксирует число точек по горизонтали хm = 255, по вертикали уm = 191 и количество цветов сm = 3. Зная характеристики своих ЭВМ, вы должны изменить эти значения так, чтобы звездное небо заняло весь экран, и звезды были бы всех возможных цветов.

Для повторения действий заданное число раз в языке Бейсик существует оператор FOR. Такой оператор мы видим в 50-й строке. В данной программе он означает, что операторы 60, 70, 80 и 90, вплоть до оператора NEXT в 100-й строке, будут выполняться п раз при изменении к от 1 до п. Это означает, что п раз (с помощью датчика случайных чисел) будут вычислены координаты х, у и цвет с точки на экране и она будет выведена на экран 100-м оператором.

В общем случае повторение действий заданное число раз в Бейсике кодируется по следующей схеме:

Повторение: от «к» = «l» до «п» цикл «действия» цикл Бейсик: 100 FOR «k» = «1» TO «n» . . . «действия» 180 NEXT «k»

Здесь «k» - некоторая числовая переменная, а «l» и «n» - числа или формулы, выражающие начальное и конечное значения переменной «k». действия в такого вида циклах повторяются n-l+1 раз для значений k = l, l+1, l+2, . . . , n.

Конструкции повторения действий с проверкой условия пока в языке Бейсик кодируются с использованием операторов условного и безусловного перехода. Изучение правил можно начать с проверки на ЭВМ программы, реализующей алгоритм игры «Угадай-ка».



АЛГ «ИГРА: УГАДАЙ-КА» НАЧ Х: = СЛУЧАЙНОЕ (1,100) ВЫВОД УГАДАЙ ЧИСЛО ВЫВОД ОТ 1 ДО 100 ЗАПРОС ЧИСЛО = , Р ПОКА Р ≠ Х ЦИКЛ ЕСЛИ Р > Х ТО ВЫВОД МНОГО КЕСЛИ ЕСЛИ Р < Х ТО ВЫВОД МАЛО КЕСЛИ ЗАПРОС ЧИСЛО = Р КЦИКЛ   ВЫВОД МОЛОДЕЦ, УМНИЦА! КОН 10 ¢ игра: угадай-ка 20 DEFINT X, P ¢ - WTKST 30 X = 99 * RND (1) + 1 40 PRINT «угадай число» 50 PRINT «от 1 до 100» 60 INPUT «число =»; Р 70 IF NOT X < > P GO TO 120 80 IF P > X THEN PRINT «много»   90 IF P < X THEN PRINT «мало»   100 INPUT «число =»; Р 110 GO TO 70 120 ¢ кцикл 130 PRINT «молодец, умница!» 140 END

Прежде всего отметим, что приведенная программа начинается с оператора DEFINT P, Х. Этот оператор означает, что переменные Х и Р в качестве значений будут принимать не вещественные, а целые числа. Далее, в операторе 30, с помощью датчика случайных чисел ЭВМ «некоторое вещественное число, умножает его на 99, прибавляет к нему 1 и запоминает в переменной Х, отбросив дробную часть.

Затем ЭВМ начинает диалог, спрашивая у человека число-ответ и отвечая «мало» или «много» до тех пор, пока он не угадает задуманное машиной число. Ввод и проверку этой программы так же полезно проводить по частям. Первыми следует ввести и проверить операторы 20, 30, 40 и 50, которые фиксируют случайное число и начинают диалог. Далее нужно ввести операторы 60, 80 и 90 - ввода и анализов ответов. Запуская только эту часть программы, уже можно начать игру-эксперимент с ЭВМ.

Вариант игры становится полным после ввода операторов 100, 110, 70, 120 и 130 - повторного запроса чисел, перехода к началу цикла, анализа совпадения чисел, выхода из цикла и «поздравления с победой». Именно эти операторы - 70, 110 и 120 организуют цикл в повторениях действий вычислительной машины.

Общий принцип кодирования циклов такого типа с повторением действий пока на языке Бейсик можно изобразить следующей схемой:

200 IF NOT (<условие>) THEN GO TO 300

. . . <операторы>

GO TO 200

300 ¢ кцикл

ПРАВИЛА КОДИРОВАНИЯ:

а) слово пока заменяется на слова IF NOT, а слово цикл - на оператор перехода на последний оператор цикла;

б) перед последним оператором цикла ставится оператор перехода к началу цикла.

Примечание: вместо записи NOT (<условие>) при организации цикла можно записывать отрицание этого условия, выраженное на Бейсик. В приведенном примере оператор

70 IF NOT X < > P THEN GO TO 110

может быть заменен на равносильный ему оператор

70 IF X = P THEN GO TO 110.

Вопросы и упражнения и задания для самопроверки

ВОПРОСЫ:

Как на Бейсике кодируется цикл со счетчиком?

Как изменяется значение счетчика цикла?

Как на Бейсике кодируется пока-цикл?

УПРАЖНЕНИЯ:

Составьте алгоритмы и программы формирования изображений из случайных:

а) отрезков; б) рамок;

в) окружностей; г) кругов.

2. Модифицируйте алгоритм и программу игры «Угадай-ка» так, чтобы можно было сыграть с ЭВМ несколько раз.

ЗАДАНИЯ:

Выведите и отладьте программу вывода звездного неба по приведенному плану ввода и испытаний.

Составьте план ввода и испытаний программы формирования изображений с выбранными графическими элементами. Введите по этому плану свою программу в ЭВМ и проведите эксперименты.

Введите и отладьте на ЭВМ программу игры «Угадай-ка» по приведенному плану ввода и испытаний.

Составьте план ввода и испытаний модифицированной программы игры «Угадай-ка» и проведите ее отладку на ЭВМ.

Наши рекомендации