Урок 3 |
Урок 4.Проверка условий в программе.Попробуем составить программу для решения квадратного уравнения ах2-вх+с=0.
PRINT "решение квадратного уравнения"
|
первая группа операторов | вторая группа операторов |
Простейшим примером условия служит сравнение двух арифметических выражений, например, А>0, X+Y < Z+5 и т. д. Для записи операций сравнения в условиях используются следующие значки:
> больше,
>= больше или равно,
< меньше,
<= меньше или равно,
= равно,
<> не равно.
Таким образом, можно переписать нашу программу так:
В этой программе имеется разветвление по условию D<0. Если подсчитанное значение D оказывается отрицательным, то печатается сообщение, что корней нет, затем мы сразу попадаем в конец программы. В случае, когда значение D неотрицательно, мы сразу попадаем на группу операторов, вычисляющих корни и печатающих их значения. Эту программу можно записать, используя сравнение D>=0:
Внешний вид программы немного изменился, но смысл остался тем же.
Обратите внимание на то, как записаны операторы в конструкции IF-THEN-ELSE Считается правилом хорошего тона записывать операторы, вложенные в управляющие конструкции, с небольшим отступом вправо. Тогда сразу видно, где начинается разветвление и где оно заканчивается. Если в программе все операторы расставлены кое-как, то ясно, что писал ее непрофессионал и там много ошибок.
В этой программе квадратный корень вычисляется только один раз, да и арифметических операций меньше. Кстати все эти программы имеют еще один недостаток. Что получается, если в качестве значения для А ввести нуль? На нуль делить нельзя, а мы это нигде не проверяем. Строго говоря, следовало бы еще написать
Но это уже задача для тех, кто хочет стать программистом.
Конструкция IF-THEN-ELSE имеет несколько сокращенных вариантов. Во-первых, если при невыполнении указанного условия ничего делать не надо, то можно не писать слово ELSE. В этом случае конструкция принимает следующий вид:
IF условие THEN группа операторов
END IF
Здесь при справедливости условия выполняется группа операторов, а если условие нарушено, то сразу переходим к тем инструкциям, которые следуют за словами END IF.
Если запись операторов, входящих в конструкцию IF-THEN -ELSE, достаточно короткая, то ее можно расположить на одной строке, не указывая слов END IF,
IF условие THEN операторы_1 ELSE операторы_2
или при отсутствии второй группы операторов так:
IF условие THEN операторы
Несколько идущих подряд операторов здесь нужно разделять двоеточием. Вот пример записи вычисления абсолютной величины Y=|X|:
А это пример с несколькими операторами:
Двоеточие можно использовать и в других местах программы, чтобы записать в одной строке несколько отдельных инструкций, например
Напишите программу проверки пароля. Пусть пароль — некоторое число, зафиксированное в программе. Программа печатает приглашение “введите пароль” и вводит число. Если введенное число совпадает с фиксированным паролем, то программа выводит приветствие, если нет — сообщает о том, что пароль не угадан.
Выясним, как следует поступать, если надо выполнить разветвление на три “рукава”, как, например, в следующей задаче. Для заданного Х вычислить значение А по формулам:
А=Х+1, если Х<0,
А=2Х, если 0<=Х<10,
А=0, если Х>=10.
Здесь можно идти разными путями.
Первый способ. Поместить одну управляющую конструкцию IF внутрь другой.
Поясним эту программу с помощью блок-схемы.
Второй способ. Познакомимся с дополнительными возможностями языка Basic. К сожалению, в условии нельзя непосредственно записать 0<=Х<10, но зато можно объединить несколько простых условий в одно сложное:
Это означает, что условие будет выполнено, если одновременно выполняются оба данных неравенства. Таким образом, можно предложить следующий вариант решения данной задачи.
Блок-схема для этой программы выглядит так.
Рассмотрим теперь более подробно условие
Слово AND — это обозначение логической операции “И”. Каждое отдельное неравенство в данный момент может быть или правильным или нет. Можно сказать, что любая операция сравнения имеет логическое значение “да” (неравенство или равенство выполнены) или “нет” (не выполнены). С этими логическими значениями можно выполнять логические операции И, ИЛИ, НЕ, которые обозначаются AND, OR, NOT, и тем самым объединять несколько простых неравенств в более сложное логическое выражение. Логические операции действуют по следующим правилам:
для двух логических выражений (двух сравнений), объединенных операцией AND, результат имеет значение “да”, если оба логических выражения имеют значение “да”. Для операции OR результат имеет значение “да”, если хотя бы одно из логических выражений имеет значение “да”. Операция NOT меняет логическое значение на противоположное.
Логическое выражение может быть достаточно сложным и содержать несколько логических операций. В этом случае операции выполняются слева направо и приоритет имеет операция NOT, затем AND, и далее OR. Для изменения порядка выполнения операций можно (как и в арифметических выражениях) использовать круглые скобки.
Условие Х<0 или Х>100 можно записать так:
Это же условие можно сформулировать словами “X не принадлежит отрезку [0,100]” и записать следующим образом:
Условие: “А, В, С одновременно обращаются в 0” можно записать так:
1.Напишите программу, которая выводит на экран приглашение: “Который час?”, вводит с клавиатуры число X, имеющее смысл времени суток, и печатает слова “Доброе утро”, “Добрый вечер”, “Спокойной ночи” и т.п. в зависимости от введенного времени. Например, для 6<Х<10 она должна вывести “Доброе утро”. Программа должна реагировать на ввод неправильного времени: Х<0 или Х>24.
2.Напишите программу, вводящую с клавиатуры три числа А,В,С и проверяющую, существует ли треугольник со сторонами А,В,С. Программа должна выдавать ответ “да/нет”.
Другие способы управления последовательностью выполнения инструкций
Чтобы облегчить знакомство с конструкцией IF-THEN-ELSE, мы не рассказали о всех возможных формах ее записи. Теперь восполним этот пробел. В самом общем виде эта конструкция выглядит так:
IF условие_1 THEN
операторы_1
ELSEIF условие_2 THEN
операторы_2
• • • •
ELSE
операторы
END IF
Групп со словом ELSE IF может быть несколько, а может не быть ни одной. Группа со словом ELSE также может присутствовать, а может отсутствовать. Работает конструкция следующим образом:
Сначала проверяется условие_1. Если оно выполнено, то выполняются операторы _1, и дальше управление передается инструкциям, записанным после слов END IF. Если условие_1 не выполнено, то проверяется условие_2, и при его справедливости выполняются операторы_2. Если же и оно не выполнено, то проверяется условие_3, и т.д. Если ни одно из этих условий не выполнено, то выполняются операторы после слова ELSE. Слово ELSE также может отсутствовать; тогда, если проверка всех условий дает “нет”, то ни одна из групп операторов в этой конструкции не выполняется.
Во всех случаях после выполнения соответствующей группы операторов управление передается на инструкции, следующие за словами END IF. Обратите внимание, что слова IF, ELSEIF, ELSE, END IF и операторы, включенные в эту конструкцию, должны располагаться на разных строках.