При решении большинства задач порядок вычислений зависит от определенных условий, например, от исходных данных или от промежуточных результатов, полученных на предыдущих шагах программы. Для организации вычислений в зависимости от какого-либо условия в языке Free Pascal используется условный оператор if…then…
else , который в общем виде записывается так:
if условие then оператор_1 else оператор_2;
где if…then…else – зарезервированные слова, условие – выражение логического типа 37 , оператор_1 и оператор_2 – любые операторы языка Free Pascal.
37 Логическое выражение может принимать одно из двух значений: истина или ложь.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Работа условного оператора организована следующим образом. Сначала вычисляется выражение, записанное в условии . Если оно
имеет значение истина ( True ), то выполняется оператор_1. В противном случае, когда выражение имеет значение ложь ( False ), оператор_1 игнорируется и управление передается оператору_2 . Алгоритм, который реализован в условном операторе if…then…else , представлен на рис. 3.8.
Уроки Python / Конструкция if elif else — если то иначе — Условная инструкция
Рисунок 3.8: Алгоритм условного оператора if. then. else
Например, чтобы сравнить значения переменных x и y , нужно со-
здать следующий программный код: write(‘x=’); readln(x);
write(‘y=’); readln(y); if x=y then
writeln(‘значение x равно значению y’) else
writeln(‘значение x не равно значению y’);
Если в задаче требуется, чтобы в зависимости от значения условия выполнялся не один оператор, а несколько, их необходимо заклю-
чать в операторные скобки как составной оператор: if условие then
begin оператор_1; оператор_2;
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Альтернативная ветвь else в условном операторе может отсут-
ствовать, если в ней нет необходимости: if условие then оператор;
if условие then begin
В таком «усеченном» виде условный оператор работает так: оператор (группа операторов) либо выполняется, либо пропускается, в зависимости от значения выражения, представляющего условие. Алгоритм этого условного процесса представлен на рис. 3.9.
Рисунок 3.9: Алгоритм условного оператора if без альтернативной ветви else
Пример применения условного оператора, без альтернативной ветви else может быть та-
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Условные операторы могут быть вложены друг в друга. При вложениях условных операторов всегда действует правило: альтернатива else считается принадлежащей ближайшему if , имеющему ветвь
else . Например, в записи if условие_1 then if условие_2 then
оператор_А else оператор_Б;
оператор_Б относится к условию_2 , а в конструкции if условие_1 then
if условие_2 then оператор_А;
он принадлежит оператору if с условием_1.
If else. Конструкция логического выбора if. Лесенка if — else if. Примеры использования. Урок #12.
Для сравнения переменных в условных выражениях применяют операции отношения : = , <> , < , >, = . Условные выражения со-
ставляют с использованием логических операций and , or и not . В
языке Free Pascal приоритет операций отношения меньше, чем у логических операций , поэтому составные части сложного логического выражения заключают в скобки.
Допустим, нужно проверить, принадлежит ли переменная х ин-
тервалу [ a , b ]. Условный оператор будет иметь вид: if (x>=a) and (x<=b) then….
не верна, так как фактически будет вычисляться значение выражения x>= (a and x)
Рассмотрим использование оператора if на примерах 38 .
ЗАДАЧА 3.1. Дано вещественное число x . Для функции, график которой приведен на рис. 3.10, вычислить y = f ( x ).
38 В задачах этой главы мы не будем уделять много внимания интерфейсу создаваемых программ, чтобы у читателя была возможность разобраться в алгоритмах и способах их записи на языке Free Pascal.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Рисунок 3.10: Графическое представление задачи 3.1
Рисунок 3.11: Блок-схема алгоритма решения задачи 3.1
Аналитически функцию, представленную на рис. 3.10, можно записать так:
Составим словесный алгоритм решения этой задачи:
1. Начало алгоритма.
2. Ввод числа x (аргумент
3. Если значение x меньше либо равно -2 , то переход к п. 4, иначе переход к п. 5.
4. Вычисление значения функции: y=4 , переход к п. 8.
5. Если значение x больше либо равно 1 , то переход к п. 6, иначе переход к п. 7.
6. Вычисление значения функции: y=1 , переход к п. 8.
7. Вычисление значения функции: y=x 2 .
8. Вывод значений аргумента x и функции y .
9. Конец алгоритма.
Блок-схема, соответствующая описанному алгоритму, представлена на рис. 3.11.
Текст программы на языке Free Pascal будет иметь вид: var x,y: real; begin
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
ЗАДАЧА 3.2. Даны вещественные числа x и y . Определить при-
надлежит ли точка с координатами ( x ; y ) заштрихованной части плоскости (рис. 3.12).
Как показано на рис. 3.12, плос-
кость ограничена линиями x =-1, x =3,
y =-2 и y =4. Значит точка с координа-
тами ( x ; y ) будет принадлежать этой
плоскости, если будут выполняться
следующие условия: x ³ -1, x £ 3, y ³
-2 и y £ 4. Иначе точка лежит за пре-
Блок-схема, описывающая алгоритм
решения данной задачи, представле-
Рисунок 3.12: Графическое
на на рис. 3.13. Текст программы к
задаче 3.2 приведен далее.
представление задачи 3.2
Рисунок 3.13: Алгоритм решения задачи 3.2
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
writeln(‘Точка принадлежит плоскости’) else
writeln(‘Точка не принадлежит плоскости’);
ЗАДАЧА 3.3. Написать программу решения квадратного уравнения ax 2 + bx + c =0.
Исходные данные: вещественные числа а , b и с – коэффициенты
Результаты работы программы: вещественные числа x1 и x2 –
корни квадратного уравнения либо сообщение о том, что корней нет. Вспомогательные переменные: вещественная переменная d , в ко-
торой будет храниться дискриминант квадратного уравнения. Составим словесный алгоритм решения этой задачи.
1. Начало алгоритма.
2. Ввод числовых значений переменных а , b и с .
3. Вычисление значения дискриминанта d по формуле d = b 2 − 4ac .
5. Вывод сообщения Вещественных корней нет и пере-
Источник: studfile.net
Операторы If, if-else и elif в Python
Оператор If в Python – это условный оператор, в котором набор операторов выполняется на основе результата условия.
В этом примере мы узнаем о синтаксисе оператора If и различных сценариях..
Ниже приведена блок-схема команды if в Python. На основе оценки условия выполнение программы идет по одному из путей.
Синтаксис
Ниже приводится синтаксис:
if boolean_expression: statement(s)
Обратите внимание на отступ, предусмотренный для операторов внутри блока if и двоеточия (:) после логического выражения.
Если логическое выражение возвращает true, выполняются инструкции блока if. В противном случае операторы не выполняются, и выполнение программы продолжается с операторов после метода if, если они есть.
Пример 1
В этом примере мы будем использовать простое логическое выражение, сформированное с помощью реляционного оператора, меньшего чем, для условия if. Операторы внутри блока if – это всего лишь один оператор печати.
a = 2 b = 5 if a
Запустите программу, и вы увидите следующий вывод в консоли.
2 is less than 5
Это тривиально, что условие, указанное в приведенном выше операторе, оценивается как true, поэтому оператор внутри блока if выполняется.
Пример 2: если логическое выражение имеет значение False
В этом примере мы напишем оператор, в котором логическое выражение или условие принимает значение false.
a = 24 b = 5 if a
Условие, указанное в if, оценивается как false, и поэтому оператор внутри блока if не выполняется.
Пример 3: с несколькими условиями
Если вам нужно записать несколько условий в одно выражение, используйте логические операторы, чтобы объединить их и создать составное условие.
a = 2 b = 5 c = 4 if a
2 is less than 5 and 4
Пример 4: с выражением, вычисляющим число
Если выражение в операторе оценивается как число, тогда операторы выполняются, если число не равно нулю. ноль считается false, а ненулевое значение (положительное или отрицательное) считается true.
В этом примере мы напишем команду If, в котором логическое выражение оценивается как число.
a = 2 if a: print(a, ‘is not zero’)
Поскольку значение условия оценивается как 2, что является ненулевым числом, выполняются инструкции внутри блока if.
2 is not zero.
Пример 5: с несколькими операторами в блоке
В разделе синтаксиса мы уже упоминали, что внутри блока if может быть несколько операторов.
a = 2 if a: print(a, ‘is not zero’) print(‘And this is another statement’) print(‘Yet another statement’)
В этом примере мы написали только операторы печати внутри if. Но вы можете написать набор любых допустимых операторов.
Обратите внимание, что if-block имеют одинаковый отступ.
2 is not zero And this is another statement Yet another statement
Пример 6: вложенные функции
Вы можете написать функцию if внутри другой функции if. Это называется вложением.
a = 2 if a!=0: print(a, ‘is not zero.’) if a>0: print(a, ‘is positive.’) if a
Поскольку внешнее условие a != 0 оценивается как true, выполнение переходит в if. И операторы внутри этого внешнего блока рассматриваются как еще одни операторы в Python и выполняются соответственно.
2 is not zero. 2 is positive.
Условия if else Arduino, логические операторы
Условные операторы if … else в Arduino IDE создают удобную конструкцию в скетче, которая разветвляет выполнение программы в зависимости от значения переменной или исходя из каких-то данных, полученных, например, от датчиков и сенсоров, подключенных к микроконтроллеру Ардуино. Рассмотрим в этой статье примеры использования конструкции if else в Ардуино, а также логические операторы сравнения (== != < >).
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- датчик воды (water sensor)
- светодиод и резистор
- макетная плата
- коннекторы
Условный оператор if (если) в языке Arduino проверяет условие и если оно истинно, выполняется блок команд. Существует два вида использования оператора if в скетче — с фигурными скобками и без. Без фигурных скобок после условного оператора if , будет выполнена только первая команда. Мы рекомендуем всегда использовать фигурные скобки, так как в этом случае сложнее допустить ошибку в программе.
Условные операторы if, if…else в Arduino
Рассмотрим применение блоков условий на примере подключения датчика воды и светодиодов (можно использовать любой сенсор). В языке Arduino if используется с логическими операторами для проверки истинности условий. Круглые скобки логически группируют несколько операторов сравнений в один блок. Следующая программа проверяет, превышает ли значение переменной water заданный интервал.
Скетч с условным оператором if
#define LED 13 #define WTR A1 int water; void setup() < pinMode(LED, OUTPUT); pinMode(WTR, INPUT); Serial.begin(9600); >void loop() < water = analogRead(WTR); Serial.println(water); if (water >100) < digitalWrite(LED, HIGH); >if (water < 100) < digitalWrite(LED, LOW); >delay(1000); >
В этом скетче переменная water сравнивается со значением 100 и если переменная больше этого значения, то включается светодиод. Конструкция if else Arduino обеспечивает больший контроль над программой, чем один оператор if. Это позволяет определить действия не только для случая, когда выражение истинно, но и когда значение ложно. Загрузите пример программы с операторами if … else в языке Ардуино.
Скетч с условным оператором else
#define LED 13 #define WTR A1 int water; void setup() < pinMode(LED, OUTPUT); pinMode(WTR, INPUT); Serial.begin(9600); >void loop() < water = analogRead(WTR); Serial.println(water); if (water >100) < digitalWrite(LED, HIGH); >else < digitalWrite(LED, LOW); >delay(1000); >
Логические операторы, операторы сравнения
Не путайте знак равенства «=» с оператором сравнения Arduino «==». Использование знака равенства в условном операторе if может дать другой результат при выполнении программы.
Например, фрагмент кода if (y = 100) — это не то же самое, что if (y==100). Знак равенства — это оператор присваивания, который устанавливает значение переменной y равным 100 и не проверяет, равна ли переменная y значению 100.
Операторы сравнения Arduino
x == y (x равен y)
x != y (x не равно y)
x < y(x меньше y)
x > y (x больше y)
x (x меньше или равно y)
x >= y (x больше или равно y)
Логические операторы Arduino
! (not) логическое НЕ, отрицание
(and) логическое И
|| (or) логическое ИЛИ
В следующем примере с помощью логического оператора and () мы объединили два условия в одном блоке. Сейчас светодиод будет гореть, когда переменная water будет больше 100 значения и меньше 200, в других остальных случаях светодиод будет выключен. Количество использования логических операторов в одном блоке не ограничено. Загрузите следующий код в плату, схема с датчиком остается прежней.
Скетч с логическим оператором
#define LED 13 #define WTR 10 int water; void setup() < pinMode(LED, OUTPUT); pinMode(WTR, INPUT); Serial.begin(9600); >void loop() < water = analogRead(WTR); Serial.println(water); if (water >100 and water < 200) < digitalWrite(LED, HIGH); >else < digitalWrite(LED, LOW); >delay(1000); >
Несколько условий if … else в Arduino
В программе может быть несколько условий if, создавая целую цепочку элементов управления. Проверки будут выполняться одна за другой, пока не будет встречено истинное выражение. Если истинное выражение не найдено, будет выполнен последний блок else (если он есть в программе). Конструкция else if может быть без заключительного блока else и наоборот. Количество ветвей else if в программе не ограничено.
#define LED 13 #define WTR A1 int water; void setup() < pinMode(13, OUTPUT); pinMode(A1, INPUT); Serial.begin(9600); >void loop() < water = analogRead(WTR); Serial.println(water); if (water < 100 or water >400) < digitalWrite(LED, LOW); >else if (water > 100 and water < 200) < digitalWrite(LED, HIGH); >else if (water > 200 and water < 300) < digitalWrite(LED, LOW); >else if (water > 300 and water < 400) < digitalWrite(LED, HIGH); >delay(1000); >
Заключение. Порядок условий в одном блоке играет важную роль, когда речь идет об оптимизации кода и попытке сделать программу быстрее. Суть заключается в том, что логические выражения проверяются слева направо, и если первая проверка делает выражение недействительным, дальнейшая проверка прекращается. Таким образом можно освободить микроконтроллер Ардуино от выполнения лишних проверок.
Источник: arduino-site.ru