В
четырех таблицах указаны четыре операции, причем сначала приведено
название на английском языке, которое используется в программировании,
а затем в скобках - на русском.
Оператор
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
E ND 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».
|