[МУЗЫКА] [МУЗЫКА] Здравствуйте, уважаемые слушатели! Мы переходим ко второму занятию. Надеюсь, вы справились с первым и решили хотя бы половину задач. Сегодня мы будем изучать логический оператор, условия и циклы. Наверняка вам очень не хватало всего этого при решении некоторых задач, пришлось помучиться. Тем не менее, сейчас мы всему этому научимся и, вообще говоря, это фундамент, на котором строится все программирование. Как говорили в «Часе кода», выступали люди из разных компаний, мировые знаменитости в программировании, они для маленьких детей говорили: «Вы знаете, в наших программах очень много ифов». Это «если» по-английски, то есть «условия». Ну это, конечно, все очень забавно. Действительно, в любых программах много «ифов», ну и сегодня мы научимся ими пользоваться. Для начала разберемся, что такое логический тип данных. Поговорим подробнее о логическом типе данных. Логический тип данный может принимать всего два значения: «истина» или «ложь». И, соответственно, все переменные этого типа будут иметь одно из двух значений. Как и целые числа, как и строки, переменные логического типа неизменяемые. То есть, вообще говоря, у вас в памяти существует всего два объекта: True или False и все переменные ссылаются на один из них. То есть можно считать, что все они – ярлычки типа bool (называются переменные такие) – относятся к одному из этих двух типов. Как получаются логические значения? Чаще всего они получаются, конечно, не присваиванием True или False, не считыванием от пользователя, а в результате вычисления какого-то логического выражения. Логическое выражение очень похоже на арифметическое. Как у нас были арифметические какие-то операции – «+», «−», «*» – мы из них компоновали с помощью скобок сложные выражения, точно так же можно поступать и с логическим выражением. Логическое выражение чаще всего представляется в виде: какое-то арифметическое выражение, знак сравнения (о них мы поговорим чуть позже) и второе арифметическое выражение. Ну пример вы можете увидеть на слайде. Арифметическое – знак – арифметическое выражение. Знаки достаточно понятные: <, >, =, ≠. Ну и понятное дело, что при подстановке конкретных значений в арифметическое выражение, если у вас там используются переменные какие-то, оно может принять как раз одно из наших двух значений. Посмотрим подробнее на сравнения. Какие они бывают? «Меньше»/«больше» – очень просто: они записываются ровно этими значками. «Меньше или равно» и «больше или равно» – записывают сначала знак «<» или «>», а затем, тут же рядом с ним значок «=». «Сравнение на равенство» – это два значка, записанных подряд, два значка «=». Зачем так сделано? Ну, чтобы отличать от присваивания, от одного значка «=», чтобы не запутаться в этом, и легче было интерпретировать программе интерпретатору. И, наконец, «!=» – это «не равно», «отрицание к равно», можно сказать. Порядок сравнений всегда одинаковый. То есть у вас никаких приоритетов в сравнениях нет между собой. Нет такого, что «<» выполняется раньше, чем «= =». То есть у них всех одинаковый приоритет, и этот приоритет ниже, чем у арифметических операций. То есть сначала выполняются все арифметические операции, и только затем происходит сравнение. Конечно, вы можете изменить этот порядок с помощью скобок, то есть вы можете мешать и сравнения и какую-то арифметику, и менять порядок вычисления с помощью скобок, и у вас даже не будет ошибки, но правда, возможно, вы получите не совсем то, что ожидали. Так что лучше не злоупотреблять таким деланием – сравнение раньше, чем арифметические операции, и стараться обходиться без вот таких скобок, увеличивающих их приоритет. В Python можно использовать двойные сравнения. То есть, если вы хотите проверить, например, что число x лежит в пределах от 0 до 10, вы можете написать 0 < = x < = 10 и это будет корректно обрабатываться, у вас сначала выполнится одно сравнение, а потом второе. Также существуют логические операции, которые позволяют связывать между собой какие-то разные логические выражения. Очень просто, даже в речи используются «и», «или», «не» и, в общем-то, они имеют ровно такой смысл, как и называются. То есть «и» – это значит, что одновременно будут выполняться оба логических выражения; «или» – означает, что хотя бы одно из них должно быть «истинным», чтобы получить в результате «истину»; и «не» – это унарная операция, которая ставится перед выражением и означает отрицание. То есть, если оно было «истинным», оно стало «ложным», если оно было «ложным», оно стало «истинным». У этих операций есть приоритет. Этот приоритет ниже, чем у арифметических операций, но выше, чем у сравнений. И между собой он тоже различный. Сначала выполняются все отрицания. Они записываются как not, по-английски «не», собственно Затем выполняются «и» (and) и только затем выполняются «или». Таким образом, нужно помнить об этих приоритетах, но иногда имеет смысл явно выделять скобками, даже если приоритет понятный, потому что это не так часто встречается в реальной жизни. И если люди помнят о приоритетах операций: «плюс», «умножить», «разделить», «возведение в степень», то про логические операции люди могут забыть. Особенно, если это не профессиональные программисты, которые часто их используют. Поэтому ничего страшного, если вы поставите, как бы, лишние скобки, но, тем не менее, это сделает ваш код более читаемым. Напомню, что наша цель – это писать не самые короткие программы, может быть даже не самые-самые эффективные программы, программы, которые люди будут легко читать и понимать. Собственно, я постараюсь вам показать в следующих видеофрагментах несколько примеров. Я надеюсь, что они хорошие, и вы сможете освоить, как делать логические операции, а затем и как делать условия и циклы. [МУЗЫКА] [МУЗЫКА]