программирование на языке бейсик

 

УРОК 4. Условный оператор и оператор перехода

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

INPUTвведите число “, i1%

IF i1% > 0 THEN PRINTвведенное число положительное - ”, i1%

IF i1% < 0 THEN PRINTвведенное число отрицательное - ”, i1%

После запуска программы на экране появится текст «введите число», после чего нужно набрать необходимое значение и нажать на клавишу Enter.

Программа позволяет вывести число, если оно отрицательное или положительное. Когда число равно 0 на экран ничего не выводится и программа прекращает свою работу. В примере, показанном на рисунке, данная программа запускалась два раза, причем один раз вводилось положительное число (1), второй - отрицательное (-2).

Для того, чтобы вывести нулевое значение, нужно добавить один оператор, как это указано ниже:

INPUTвведите число “, i1%

IF i1% > 0 THEN PRINTвведенное число положительное - ”, i1%

IF i1% < 0 THEN PRINTвведенное число отрицательное - ”, i1%

IF i1% = 0 THEN PRINT “введенное число нулевое - ”, i1%

Как правило, в операции условия проводится сравнение двух чисел или выражений. Поэтому часто используются следующие операторы: > - больше, < - меньше, <= - меньше или равно, >= - больше или равно, <> - не равно.

Во многих программах существуют более сложные операторы условия, которые могут быть составными. Например, оператор «IF (i1%>0) OR (i1%<0) THEN PRINTненулевое значение - ”, i1%» позволяет распечатать ненулевые значения переменной i1%. В приведенном условии имеется две операции сравнения. В первой проверяется является ли значение положительным «(i1%>0)» и во второй - является ли значение отрицательным «(i1%<0)». Между этими двумя операторами находится третий - «OR», который свидетельствует о том, что должно удовлетворяться одно из двух условий. Данный оператор проверяет истинность двух операторов и в случае истинности одного из условий выводит значение переменной i1% на экран.

Рассмотрим, как работает этот оператор на примерах. Пусть значение переменной i1% равно 3. В этом случае первый операнд истинен, а второй нет. Так как в условии оператора достаточно, чтобы одно из условий было истинно, то будет выполняться следующий оператор (PRINT), которое выводит на экран сообщение: «ненулевое значение - » и значение переменной i1%, равное 3. Если значение переменной i1% равно -4, то первый операнд сравнения ложный «(i1%>0)», а второй истинен «(i1%<0)», поэтому снова будет выведено на экран сообщение: «ненулевое значение - » и значение переменной i1% равное -4.

Если значение переменной i1% равно 0, то оба условия «(i1%>0)» и «(i1%<0)» будут ложны и на экран ничего не будет выведено.

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


NOT (НЕ)



AND (И)

0

1


OR (ИЛИ)

0

1


XOR (Исключающее ИЛИ)

0

1

0

1


0

0

0


0

0

1


0

1

0

1

0


1

0

1


1

1

1


1

0

0

 

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

Оператор NOT имеет один аргумент и позволяет установить значение условия на обратное, то есть, если исходное условие было истинным, то станет ложным, а если было ложным, то станет истинным. Например, результат операции NOT (i1%<0) при значении переменной i1% равной 1 будет истина, так как условие (i1%<0) - ложно, а оператор NOT позволяет перевести полученное значение на обратное, то есть на истину. Если значение переменной будет равно -2, то результат условия всей операции будет ложь, так как условие (i1%<0) - истинно.

Остальные операции содержат два аргумента, значение которых указано внизу и справа от названия операции. Рассмотрим условие «(i1%>0) OR (i1%<0)». Если значение переменной i1% равно 3, первый аргумент будет истинным или равным 1, а второй - ложным или равен 0. Для того, чтобы воспользоваться таблицей, выберем операцию ИЛИ и под названием операции - значение 1, а справа от названия - 0, так как одно условие было истинным, а второе ложным. Найдем значение на пересечении найденного столбца и строки, которое равно 1, то есть истинно. Значит, общее условие истинно и будет выполнен оператор, который находится за ключевым словом «THEN». Аналогично можно узнать результат для других операций.

Напишем программу по другому.

INPUTвведите число “, i1%

IF i1% > 0 THEN GOTO M1

IF i1% < 0 THEN GOTO M2

IF i1% = 0 THEN GOTO M3

M1: PRINTвведенное число положительное - ”, i1%

GOTO M4

M2: PRINTвведенное число отрицательное - ”, i1%

GOTO M4

M3: PRINTвведенное число нулевое - ”, i1%

M4: PRINTконец работы программы ”

В данной программе используется оператор безусловного перехода «GOTO», который обозначает, что когда дойдет до него управление, то произойдет переход на метку, которая указана справа от него. Для второй строки справа от оператора находится метка «M1», то есть будет произведен переход на эту метку, которая находится на пятой строчке программы. В этом месте сама метка находится слева от оператора, а справа от нее присутствует двоеточие.

Программа работает следующим образом. Вначале вводится значение для переменной i1%, допустим мы ввели 5. Затем во второй строке происходит проверка: значение больше нуля или нет. Так как значение больше нуля, то выполняется оператор за ключевым словом «THEN», то есть оператор безусловного перехода «GOTO M1», по которому управление передается на пятую строчку. В этой строчке содержится команда печати сообщения о том, что число положительное («M1: PRINTвведенное число положительное - ”, i1%»), а следующим оператором производится переход на последнюю строчку программы оператором «GOTO M4», где распечатывается текст: «конец работы программы».

Иногда (при отладке или написании программ) полезно отдельно иметь строчки, которые будут выполняться при введенном положительном значении, а те операторы, которые не выполняются, обозначить многоточием:

INPUTвведите число “, i1%

IF i1% > 0 THEN GOTO M1

M1: PRINTвведенное число положительное - ”, i1%

GOTO M4

M4: PRINTконец работы программы ”

Для отрицательных значений будет выполняться следующая последовательность операторов:

INPUTвведите число “, i1%

IF i1% > 0 THEN …

IF i1% < 0 THEN GOTO M2

M2: PRINTвведенное число отрицательное - ”, i1%

GOTO M4

M4: PRINTконец работы программы ”

Для нулевого значения числа будет выполнена следующая последовательность действий:

INPUTвведите число “, i1%

IF i1% > 0 THEN …

IF i1% < 0 THEN …

IF i1% = 0 THEN GOTO M3

M3: PRINTвведенное число нулевое - ”, i1%

M4: PRINTконец работы программы ”

Данную программу можно написать и в другом виде:

INPUTвведите число “, i1%

IF i1% > 0 THEN GOTO M1

IF i1% < 0 THEN GOTO M2

PRINTвведенное число нулевое - ”, i1%

GOTO M4

M1: PRINTвведенное число положительное - ”, i1%

GOTO M4

M2: PRINTвведенное число отрицательное - ”, i1%

M4: PRINTконец работы программы ”

Если введено нулевое значение, которое не положительное и не отрицательное, и другого числа не существует, то в этой программе убрана строчка «IF i1% = 0». Данную программу, как и многие другие, можно оформить множеством способов, каждый из которых зависит от человека, который ее написал. Как правило, при написании программы следует стремиться к выполнению двух условий: 1. программа должна легко читаться и 2. программа должна быть оптимально написана, чтобы не были использованы лишние переменные и операторы.

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

Другим принципом структурного программирования является написание большого количества комментариев в программе. Комментарии - это текст, который не выполняется программой. Приведем пример.

INPUTвведите число “, i1% ‘ ввод числа

IF i1% > 0 THEN GOTO M1 ‘ проверка на положительность

IF i1% < 0 THEN GOTO M2 ‘ проверка на отрицательность числа

IF i1% = 0 THEN GOTO M3 ‘ число с нулевым значением

M1: PRINTвведенное число положительное - ”, i1% ‘ число положительное

GOTO M4 ‘ переход в конец программы

M2: PRINTвведенное число отрицательное - ”, i1% ‘ число отрицательное

GOTO M4 ‘ переход в конец программы

M3: PRINTвведенное число нулевое - ”, i1% ‘ нулевой значение

M4: PRINTконец работы программы ” ‘ конец программы.

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

программа для проверки положительных, отрицательных и нулевых значений

INPUTвведите число “, i1% ‘ ввод числа

IF i1% > 0 THEN GOTO M1 ‘ проверка на положительность

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

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

В конце урока приведем программу нахождения корней квадратного уравнения.

INPUT "Введите значение коэффициентов квадратного уравнения (a, b, c) - ", a, b, c

d = b ^ 2 - 4 * a * c

IF d < 0 THEN

PRINT "дискриминант отрицательный, корней нет "

ELSE

x1 = (-b + SQR(d)) / (2 * a)

x2 = (-b - SQR(d)) / (2 * a)

PRINT " корни данного уравнения: ", x1, " и ", x2

END IF

В приведенной распечатке результатов работы программы вначале был произведен неверный ввод (отсутствует запятая между второй и третьей цифрами), затем введены коэффициенты и получены значения (2 и 2.5). После этого, программа запускалась еще два раза. После первого запуска дискриминант оказался отрицательным, а во втором случае были найдены два одинаковых корня (-2 и -2).

Задачи.

1. Напишите программу по вводу двух чисел и выведите на экран максимальное из них.

2. Напишите программу ввода трех чисел и выведите на экран сумму их квадратов.

3. Предположим, что в переменной i1% находится значение 10, а в i2% - -2 (минус два). Укажите истинны ли следующие условия: 1. (i1%>0) OR (i1%<0), 2. (i1%>0) OR (i2%<0), 3. (i1%>0) AND (i2%<0), 4. (i2%>0) AND (i1%<0), 5. (i1%>0) ХOR (i2%<0), 6. (i1%>0) OR (NOT (i1%<0)), 7. NOT((i1%>0) OR (i1%<0)), 8. (i1%>0) XOR (i2%<0), 9. (i1%>0) 10. NOT (i1%<0).

4. Укажите ошибки, которые имеются:

а) InPUTвведите число , i1% ‘ ввод числа

б) if i1% > 0 THEN GOTO M1: ‘ проверка на положительность

в) IF i1% < 0 THEN GOTOM2 ‘ проверка на отрицательность числа

г) IF i1% = 0 THEN GOTO M3; ‘ число с нулевым значением

д) M1: PRINTвведенное число положительное , i1% ‘ число положительное

е) СOTO M4 ‘ переход в конец программы

ж) M2: PRINTвведенное число отрицательное - ” i1% ‘ число отрицательное

з) GOTO M4 переход в конец программы

и) M3: PRINTвведенное число нулевое - ”, i1% ‘ нулевое значение

к) M4 PRINTконец работы программы ” ‘ конец программы.

Ответы: а) нет второй кавычки после текста сообщения, б) лишнее двоеточие, в) в операторе перехода нужно отделить пробелом название оператора и название метки: GOTO M2. г) лишняя точка с запятой, д) нет второй кавычки, е) в операторе перехода неправильный символ, нужно: GOTO M4, ж) нет запятой перед переменной i1%, з) отсутствует апостроф для комментария, и) правильный оператор, к) отсутствует двоеточие после имени метки.

5. Напишите программу детектора лжи, где критерием истинности является проверка на результат арифметического действия «2+2».

(переход на следующую страницу)

 

О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О











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

Запрещается использовать материалы для получения личной финансовой выгоды, а также размещать на сайтах в интернете.


 
 
 
Яндекс.Метрика


Каталог@MAIL.RU - каталог ресурсов интернет