Выбор действий в Бейсике

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

Выбор действий в Бейсике может кодироваться двумя способами: частным и общим. Начнем с частного способа, который применим только в ситуациях, когда выбору подлежат группы из одного - двух действий.

Для примера рассмотрим алгоритм «оракул», в котором машина предрекает, будет ли вам сопутствовать удача в ваших делах. Логика этого оракула проста - он случайным образом выбирает одну из двух фраз: «Вас ждет успех» или «Вас ждет неудача». Соответствующая программа на Бейсике приведена справа:

АЛГ «ОРАКУЛ» НАЧ Р:= СЛУЧАЙНОЕ (0,1) ЕСЛИ Р<0,5 ТО ВЫВОД ВАС ЖДЕТ УСПЕХ КЕСЛИ ЕСЛИ Р > = 0,5 ТО ВЫВОД ВАС ЖДЕТ НЕУДАЧА КЕСЛИ КОН 10 ¢ оракул   20 Р = RND (- TIME) 30 IF P< .5 THEN PRINT «Вас ждет успех»   40 IF P > = .5 THEN PRINT «Вас ждет неудача»     50 END

Выполнение этой программы на ЭВМ после ее запуска командой RUN будет состоять в следующем. Выполняя 20-й оператор, ЭВМ вычислит некоторое случайное число р. Аргумент - TIME в датчике случайных чисел означает, что случайное число будет вычисляться в зависимости от значения счетчика времени, имеющегося в машине. По этой причине каждое новое обращение к этой программе будет давать совершенно новое непредвиденное предсказание.

Далее в 30-м операторе в соответствии с алгоритмом проверяется значение полученного случайного числа: р < 0,5? Если это так, то на экран будет введена фраза «Вас ждет успех». Затем, в 40-м операторе проверяется: р >= 0,5? Если число р больше или равно 0,5, то на экране появится фраза: «Вас ждет неудача».

Кодирование простейших условных действий, как видно из примера, заключается в замене слова «если» на слово «IF» и слова «то» на слово «THEN». Роль слова «кесли» в этом правиле играет номер следующего оператора.

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

Оператор безусловного перехода в Бейсике записывается с помощью словосочетания GO TO (GO TO - переход к …). Оператор условного перехода кодируется с помощью слов IF...THEN GO TO (если ... переход к …).

Рассмотрим теперь программу «оракул», закодированную по тому же алгоритму, с помощью операторов условного и безусловного переходов:

АЛГ «ОРАКУЛ» НАЧ Р:= СЛУЧАЙНОЕ (0,1) ЕСЛИ Р > 0,5 ТО ВЫВОД ВАС ЖДЕТ УСПЕХ   ИНАЧЕ ВЫВОД ВАС ЖДЕТ НЕУДАЧА КЕСЛИ КОН 10 ¢ оракул   20 Р = RND (-TIME) 30 IF NOT P >.5 THEN GO TO 60 40 PRINT «Вас ждет успех» 50 GO TO 80 60 ¢ иначе 70 PRINT «Вас ждет неудача» 80 ¢кесли 90 END

Запись IF NOT P> 0,5 THEN GO TO 60 - это оператор условного перехода. Фраза NOT P >0,5 означает: «неверно, что р > 0,5». Поэтому если случайное число р, вычисленное машиной, окажется меньше или равно 0,5 то условие NOT P >0,5 окажется выполненным и ЭВМ должна будет выполнить оператор GO TO 60.

Оператор GO TO 60 - это оператор безусловного перехода, выполнение перехода которого заключается в продолжении вычислений с оператора 60. В данном случае ЭВМ выведет фразу «Вас ждет неудача» и закончит свою работу.

Если же случайное число р окажется больше 0,5, то условие NOT P > 0.5 окажется ложным. В этом случае ЭВМ перейдет к выполнению следующего по тексту программы оператора и выведет фразу «Вас ждет успех». Далее в строке 50, стоит оператор GO TO 80 - оператор перехода к 80-му оператору. Выполняя его, ЭВМ изменит ход выполнения программы и завершит выполнение программы, не вывода фразы «Вас ждет неудача».

Правила кодирования:

а) слово если заменяется на слова IF NOT:

б) слово то заменяется на оператор перехода THEN GO TO, но номера операторов, куда должен производиться переход, заполняются позже;

в) слово инес заменяется на два оператора: оператор перехода GO TO к концу выбора и оператор условного перехода IF NOT с тем же условием;

г) слово иначе также заменяется на два оператора: оператор перехода GO TO к концу выбора и оператор - комментарий иначе;

д) слово кесли переписывается в строку - комментарий кесли, являющуюся концом выбора;

е) во всех операторах GO TO заполняются номера строк, куда производится переход, - номер конца выбора в операторах GO TO и номер начала следующей альтернативы в операторах условного перехода IF NOT . . . THEN GO TO.

В качестве примера рассмотрим перевод на язык Бейсик диалогового алгоритма решения на ЭВМ квадратного уравнения:

АЛГ «РЕШЕНИЕ КВАДРАТНОГО УРАВНЕНИЯ» НАЧ ВЫВОД КВАДРАТНОЕ УРАВНЕНИЕ ВЫВОД а * х ^ 2+ b*x+c=0 ЗАПРОС а= , а ЗАПРОС b= , b ЗАПРОС с= , с d: = b2 - A * a * c ЕСЛИ а = 0 ТО ВЫВОД НЕДОПУСТИМО: а = 0 ИНЕС d < 0 ТО     ВЫВОД КОРНЕЙ НЕТ   ИНАЧЕ х1: = (-b + Выбор действий в Бейсике - student2.ru ) / (2 * a) x2: = (-b - Выбор действий в Бейсике - student2.ru ) / (2 * a) ВЫВОД КОРНИ: ВЫВОД Х1 = , Х1 ВЫВОД Х2 = , Х2 КЕСЛИ КОН 10 ¢ решение квадратного уравнения     30 PRINT «квадратное уравнение» 40 PRINT «ax ^ 2 + bx +c = 0» 50 INPUT «A =»; А 60 INPUT «B =»; В 70 INPUT «C =»; C 80 D = B ^ 2 - 4 * A * C 90 IF NOT A = 0 THEN GO TO 120 100 PRINT «недопустимо: а = 0» 110 GO TO 210 120 IF NOT D < 0 THEN GO TO 150 130 PRINT «корней нет» 140 GO TO 210 150 ¢ иначе 160 X1 = (- B + SQR (D)) / (2 * A) 170 X2 = (- B - SQR (D)) / (2 * A) 180 PRINT «корни:» 190 PRINT «x1 =»; х1 200 PRINT «x2 =»; x2 210 ¢ кесли 220 END

Для упрощения понимания операторов условного перехода - IF . . . THEN GO TO - при их кодировании полезно применять следующее правило. Отрицания условий выбора лучше записывать не в форме со словами NOT, а явно выразив отрицание условий выбора, записанных в алгоритме. Так, в рассмотренной программе вместо фразы NOT А = 0 - «неверно, что а = 0» - лучше в соответствии с законами логики записывать условие А < > 0, означающее а ≠ 0, а вместо условия NOT D > 0 - «неверно, что d > 0» - записать условие D < = 0, означающее, что d ≤ 0.

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

ВОПРОСЫ:

Как кодируется на Бейсике выбор действий в простейших случаях?

Что такое операторы безусловного и условного переходов?

Как кодируется выбор действий на Бейсике в общем случае?

Как на Бейсике записываются отрицания условий?

УПРАЖНЕНИЯ:

Составьте диалоговый алгоритм решения линейных уравнений с анализом условия а=0 и закодируйте его на языке Бейсик.

Составьте диалоговый алгоритм решения системы двух линейных уравнений с анализом условия D=0 и закодируйте его на языке Бейсик.

Примечание. В языке Бейсик буквы D и d означают одно и тоже имя переменной.

ЗАДАНИЯ:

Составьте план ввода и испытаний программы решения:

а) квадратного уравнения;

б) линейного уравнения;

в) системы двух уравнений

и проведите отладку программы на ЭВМ.

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