В прошлых примерах программы у нас исполнялись линейно, строка за строкой. Но так бывает не всегда. Очень часто программа выполняет или не выполняет определённые действия в зависимости от условий. И даже больше - в программах тысячи и даже миллионы таких условий.
Например в прошлом уроке в задачах было бы хорошо проанализировать вводимые человеком данные, соответствуют ли они условиям задачи, корректы ли они.
В программировании это называется "защита от дурака" т.е. программа не должна обрабатывать заведомо некорректные данные, даже если их человек вводит сознательно. А сколько радости доставит двоечнику или юному хакеру "взломать" программу введя в неё недопустимые данные - это нужно предусмотреть и исключить.
Чтобы выполнять или не выполнять действие в зависимости от условия есть условный оператор. Записывается он так:
if условие then действие1 else действие2,
если условие выполняется(справедливо, истинно), то выполняется действие1, в противном случае, если условие не выполняется(ложно) - выполняется действие2.
Условный оператор может иметь краткую форму
if условие then действие1
здесь если условие ложно, то прогамма ничего не делает, а исполняется дальше.
Действия могут вмещать в себя много команд, которые не поместятся в строке с условным оператором, тогда условный оператор записывается в несколько строк:
if условие then
действие1
действие2
действие3
...
else
действ1
действ2
...
end if
Условный оператор может быть вложенным, это если в одном условном операторе есть ещё несколько условных операторов с другим условиями.
if условие then
действие1
действие2
if условие2 then
действие3
действие4
действие5
end if
...
else
действ1
действ2
...
end if
Условие в условном операторе может быть сложным -составленным из нескольких условий объединённых логическими операциями AND, OR, NOT
Например в первой задаче прошлого урока радиус должен быть больше нуля.
#lang "qb"
R=17
l=2*3.1415*R
S=3.1415*R*R
print "R="; R; " S=";s;" l=";l
щаминим вторую строку на input "Введите значение радиуса";R
и если он больше нуля выполним вычисления и выведем результат на экран
#lang "qb"
input "Введите значение радиуса";R
if R>0 then
l=2*3.1415*R
S=3.1415*R*R
print "R="; R; " S=";s;" l=";l
else
print "Вы ввели неверное значение радиуса"
end if
sleep
Вот так этот пример у меня выглядит в среде FBIDE
Я выбрал тему borland, вы можете выбрать другую, оставить как есть, или настроить цвета как вам понравится.
в мею View-Settings и переходите на вкладку Themes
В задаче же о нахождении площади треугольника условие будет немножко сложнее, в геометрии оно называется неравенство треугольника - длина любой стороны в треугольнике всегда меньше суммы длин двух других сторон.
условие запишется так
if a<b+c AND b<a+c AND c<a+b then ... тогда треугольник существует и мы можем, вернее программа может выполнятся дальше.
Обратили внимание на отступы в строках 7-10, 12, 13
Это своего рода стандарт, стиль программирования. Конечно использовать его или нет дело хозяйское, но работая в команде следует всё таки придерживаться общего стиля в программировании. В данном случае я так выделил строки зависящие от выполнения условия. Так оформленную программу легче читать. Есть и другие правила(стиль, стандарт) например в назначении имён переменным, расстановке скобок, пробелов, комментариев...
В следующей задаче где дано трёхзначное число, человек ведь по ошибке или намеренно может ввести что угодно.
input "введите трехзначное число"; a
a1=int(a/100)
a2=int(a-a1*100)/10
a3= a mod 10
Это предотвратить поможет такое условие
if a>99 AND a<1000 then ...
Задачи для самостоятельного решения
- из двух чисел a и b определить большее(вывести на экран)
- из трёх чисел a, b и c определить меньшее(вывести на экран)
- даны два числа a и b определить что больше - их сумма или произведение. Думаете сумма всегда меньше? Или не всегда?
05 FreeBASIC - первые простые задачки
04 FreeBasic - графика
03 FreeBASIC. Текстовые переменные и операции с ними
02 FreeBASIC Переменные в Бейсике
01 Начинаем изучать FreeBasic
00 FreeBASIC лучший из диалектов бейсика
16/06/18 23:20
✅
✅
Сюда приплывал Моби Дик
✅🤙 🚀