ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:16
Управляющие конструкции и ветвление:
  • Сегодняшняя встреча посвящена изучению условных конструкций (ветвлений) в программировании
  • Основное внимание уделено операциям присваивания и управляющим конструкциям, влияющим на порядок выполнения операций
  • Участники обсудили особенности записи простых алгоритмов ветвления на языке Python, включая работу с условиями и вывод результатов
00:15:59
Логические операции и условные инструкции:
  • В Python сравнение двух значений на равенство записывается двумя знаками равенства (`==`)
  • В языке программирования Python логические выражения используются для условий в конструкции `if`, где результатом является булев тип (true/false)
  • Високосным годом считается тот, чей номер делится на 4, но не делится на 100, или делится на 400
00:36:42
Решение классических задач с помощью условных конструкций:
  • Рассмотрен алгоритм поиска максимального (самого тяжёлого) значения среди нескольких чисел (арбузов), основанный на последовательных сравнительных операциях
  • Предложено использование вложенных условных операторов для выбора наибольшего значения среди множества чисел
  • Упрощён алгоритм нахождения максимального значения путём последовательного сравнения пар чисел и обновления текущего максимума
01:09:01
Программирование методом копирования и вставки:
  • 1. Рассматривается возможность передачи нескольких аргументов функции `min` (не только два)
  • 2. Упоминается удобство языка Python благодаря наличию простых встроенных функций типа `min`, позволяющих эффективно находить минимальное число среди множества значений
  • 3. Обсуждается необходимость корректной замены переменных (`n` на `m`) и проверки условий вывода значения в программе
01:12:13
Упрощение решений и работа с массивами:
  • Определено, что из двух чисел (n и m) одно является коротким бортиком, другое длинным
  • Предложена формула для определения короткого и длинного бортика: if `and < m` → short = n, long = m; else → short = m, long = n
  • Для нахождения минимального и максимального значений чисел n и m предложена запись через функции min(n,m) и max(n,m)
01:16:11
Алгоритмизация и оптимизация задач:
  • 1. Рассматривалась задача упрощения процесса
  • 2. Принято решение оставить некоторые моменты на самостоятельное рассмотрение
  • 3. Определена конкретная задача под номером 3522 с пометкой «в»
01:16:47
Работа с геометрическими объектами и пространственными задачами:
  • Определена необходимость ориентации кирпича относительно сторон отверстия таким образом, чтобы его длинная сторона совпадала с большей стороной отверстия
  • Предложен метод определения средней (по длине) стороны кирпича и сравнения её с размерами отверстия
  • Рассмотрена возможность поворота кирпича и изменения размеров отверстий для упрощения задачи проверки возможности прохождения кирпича через отверстие
0: Все равно нет, так, не tar. Поехали. Так.
1: Добрый вечер. Значит, сегодняшнее занятие будет посвящено условным инструкциям. То есть это 1 управляющая конструкция, в языке которой мы познакомимся. Управляющая, в смысле, что она меняет последовательность.
2: Действий. Вообще есть такое высказывание, что самое главное в программировании самая главная операция это операция присваивания. То есть все, что вы делаете, это вы меняете какие-то данные, меняете какие-то
3: Переменные, то есть любое выполнение каких-то операций это изменение чего-то, то есть присваивание нового значения, а все остальное, что нужно в вашей программе, это просто в то
4: Том или Ином порядке выполнять операции, присваивания, то есть все остальное, все остальные операции в программировании нужны для того, чтобы изменять последовательность присваиваний переменным значений. И мы начнём спрос
5: Управляющие конструкции это ветвление. Ветвление. Это когда вам нужно сделать 1 действие или другое действие. Ну вот, например, вы пришли в магазин и увидели на витрине 2 арбуза. Вы хотите взять тот
6: Который тяжелее, значит, вы должны сравнить их массу. Если 1 арбуз тяжелее 2 вы положите в корзинку 1 арбуз, иначе вы положите в корзинку 2 арбуз это
7: Простой алгоритм, содержащий в себе ветвление. Ваши дальнейшие действия. Какой именно арбуз вы положите в корзинку, зависит от каких-то условий, а именно от результата сравнения массы 2 Арбузов. На давайте, на
8: Пишем эту задачу в решим эту задачу. В смысле программирования нам нужно написать программу, которая выбирает наибольшее из 2 чисел. Значит, пусть у нас есть 2 числа 3, 5.
9: И мы хотим выбрать то из них, которое больше значит из чисел 3 и 5 больше 5 из чисел, скажем, 4 и 2, больше 4. А из чисел 8 и 8 считается, что больше 8. То есть, если вы пришли и
10: И увидели, что оба арбуза одинаковые, то вы 1 из них выберете. Если оба арбуза весят там по 8 килограмм, то вы выберете арбуз весом 8 килограмм, даже неважно, какой из 2, но он будет весить 8 килограмм. Так?
11: Нам даны 2, 2 числа. Программа получает на вход 2 числа считаем их.
12: В этом случае предполагается, что числа заданы в отдельных строчках, то есть в 1 строке записано число 3. Во 2 строке записано число 5. Иногда на олимпиадах дают пример входных данных, когда входные данные, когда числа записаны в
13: 1 строке через пробел 3, пробел 5. Ну, пока я не буду рассказывать, что делать. В этом случае. Мы чуть позже. Я объясню, как считывать 2 числа записанных вот таким вот образом через пробел. Может быть, даже не на сегодняшнем занятии. И дальше мы должны
14: Сделать следующее если число a больше числа b, то напечатать число, а иначе напечатать число б. Вот такой простой алгоритм, по-русски звучащий вполне себе.
15: По-русски, но мы его запишем теперь на языке питон. Если, а больше б, то вывести значение а лс.
16: Вывести значение б.
17: Соответственно, когда вы, когда питон дойдёт до этой строчки, он проверит условие, которое здесь записано, а больше б после слова if должно стоять некоторое условие, если условие верно, он выполнит вот эту инструкцию, Инна.
18: Если условие неверно, он выполнит вот эту инструкцию, несколько слов о том, как это должно быть записано с точки зрения синтаксиса языка ну, во первых, есть слова if.
19: Слово слова else это инструкции языка, управляющие, которые, соответственно, определяют ветвления.
20: После слова if нужно поставить хотя бы 1 пробел или несколько пробелов, потом записывается конструкция, проверяемое значение, а больше, чем б. И в принципе его можно писать слитно, без пробелов, но.
21: По считается, что программа выглядит красиво, если вот такие вот операции, например, операции сравнения отделяются пробелами с 2 сторон. То есть в красивой программе здесь должен стоять, должны стоять пробелы точно.
22: Также операция присваивания это тоже двоичная операция, и она тоже должна отделяться пробелами. Ну не с точки зрения языка, а с точки зрения красоты программы после
23: Проверяемого условия в питоне ставится двоеточие аналогично после слова else в питоне ставится двоеточие, а вот эти вот действия, которые выполняются после инстру,
24: Инструкции if или, соответственно, после инструкции элса. То есть это то, что, как говорится, является блоком этих 2 операций после слова if идёт блок, последовательность действий, кото
25: Которая выполняется где, которая выполняется до, если условие выполнено. Вот этот блок должен быть написан с отступом в несколько пробелов. То есть здесь нужно поставить несколько пробелов. Обычно при
26: Это ставить 4 пробела.
27: Слово элси пишется без отступа, а вот после этого слова, после этого слова, после слова print тоже пишется с отступом.
28: Ну, иногда рисуют так называемые блок схемы.
29: Которые показывают, как исполняется программа. Вот мы идём по стрелочке и доходим до условия, а больше чем б, если условие выполнено.
30: То в этом случае мы печатаем значение, а
31: Это вот это действие, если условие не выполнено.
32: Нет, все совсем не как в кубейсике мы печатаем слово б, печатаем значение б.
33: После этого здесь наши дорожки расходятся, но в какой-то момент они могут сойтись вместе. И общее действие, которое выполняется общее действие, которое выпол.
34: Меняется уже после окончания инструкции и инструкции if.
35: Например, давайте напечатаем.
36: Конец.
37: Вот это действие вот к вопросу о бейсике, значит, кто спросил, нам нужно уже пишется вот здесь вот.
38: Если отступа никакого нет, то это означает, что наша инструкция закончилась, и мы продолжаем выполнять операции дальше. Ну и для тех, кто знаком с бейсиками, с паскалями.
39: С другими языками программирования, как правило, в языках программирования используется для обозначения конца.
40: Ветвления Концов блоков, какие-то специальные слова, например, в том же самом кубейсике нужно написать слово, and if, если вы пишите на паскале, то несколько инструкций должны
41: Быть записаны между словами begin и end слово begin означает начало вот здесь вот пишется Бегин начало блока, а здесь пишется слово and правильно в си си плюс плюс там или в java, или там.
42: Пхп используются фигурные скобочки. Это довольно распространённый стиль. Он пошёл именно из языка си использование фигурных скобочек, а вот в питоне никаких скобочек, никаких слов b and
43: Нету. В питоне все определяется отступом. Если вы хотите написать что-то внутри блока, вы пишите это с отступом. Да, если вы хотите написать ещё 1 инструкцию какую-то
44: Ещё что-нибудь сделать. Например, мы хотим не только вывести значение максимума, но и присвоить его переменной, то вы пишите мм. Равно а а здесь вы пишите мм равно б и.
45: Эти инструкции должны быть написаны с одинаковым отступом, то есть вы написали после слова if слово принт с отступом, например, в 4 пробела, если вы хотите продолжать последовательность.
46: Действий, которое будет выполнено. Если условие выполнено, вы пишите, продолжаете отступ в 4 пробела. Вы, да, значит, можно ли сделать отступ в 2 пробела, значит, вы можете здесь сделать после слова и в 4 пробела, а после слова л.
47: 2 пробела это считается разными блоками, но внутри 1 блока отступ должен быть одинаковым. То есть если вы здесь поставили 4 пробела, то в инструкции, которая продолжает
48: В этом же блоке должно быть поставлено тоже 4 пробела.
49: Ещё иногда бывают символы табуляции, такие странные символы, их вообще лучше не использовать, но если вы используете символы табуляции в текстовом редакторе, то в нельзя, чтобы в отступе смешивались табуляции и пробелы.
50: Обычно правильно настроенные текстовые редакторы, вот для сред разработки, для программирования сами заменяют символы табуляции на пробелы. Так лучше всего делать, если кто не знает, что такое символы табуляции. Ну, лучше всего можете пока проигно.
51: Эти слова вот.
52: Итак, что вот так устроено простейшее ветвление, что можно использовать в качестве проверяемых условий? Ну, на самом деле можно использовать много разных вещей. Значит, да, можно ли писать
53: Да, значит действительно элса, можно не писать. Ну давайте, хорошо про это. Ну давайте про alsa можно действительно элса не писать, вы можете просто вот так вот все пропустить, давайте напишем программу, которая считает модуль числа, то есть если
54: Число больше нуля. Программа выводит x. Если число мень, ну, исходное число, если число меньше нуля, программа выводит минус икс, соответственно, считали икс.
55: Если x больше нуля принт икс элс.
56: Print минус икс
57: Это я написал, чтобы показать, что мы можем несколько действий в блоке написать. Так вот, 1 вариант такой программы, a2 вариант такой программы такой же с ветвлением. Ну, я не хочу.
58: Рассматривать всякие функции, которые там, это которые там всякие апсы и там что там Андрей уж не знаю на каком языке пишет, на каком-то функциональном что-то. Вот значит я хочу сейчас просто
59: Показать несколько примеров 2 способ написать ту же самую программу вот у меня есть число x.
60: Некоторые говорят давайте проверим, что если условие икс меньше нуля, то мы в переменной икс нужно присвоить значение минус икс. Возьмём число x, запишем, поменяем на минус и.
61: После этого присвоим ему, а другие говорят а если это так, а если не так, то мы напишем x, присвоим значение x. Нет, после икс больше нуля надо двоеточие, да, значит, после проверяем.
62: Условия. Я говорил про это после проверяемого условия, после слова if ставится в конце двоеточие. Ну вот такая программа, она правильно работает, но она смешная, вы переменные.
63: Икс, присвоите икс. Ну а что от этого поменялось? Ничего не поменялось. Вот в этом случае это можно не писать и слово else тогда можно не писать. То есть если просто xx меньше нуля, то мы в переменную икс записали минус икс и сделали его положительным в лю.
64: В любом случае, ну а теперь, после окончания цикла, мы можем вывести значение x на экран икс в квадрате в степени 0 5 ну это почти правильно.
65: Кстати, нет. Значит, ну, во первых, у дениса в решении используется вот такой оператор. Это не возведение в степень, а то, что выше написал Артур.
66: Тернарный оператор на питоне не так записывается.
67: Тернарный оператор Андрей, тернарный оператор на питоне пишется при слове вот не так, значит, не посмотрите книжку. А то, что написал Артур, это вообще неправильно. Дело в том, что вот такое выражение
68: Дело в том, что операция возведения в степень выполняется не слева направо, а справа налево, то есть это действие выполняется так сначала посчитать 2 в степени 0 5.
69: А потом возвести x в эту степень. То есть вы получите x в степень корень из 2 вот это нужно знать про операцию возведения в степень. Я про это не сказал в прошлый раз. Тогда нужно вот так вот делать. Кроме того, это выражение
70: Вам вернёт результат в виде действительного числа. Это тоже не очень хорошо. Вот, вот, соответственно, случай, когда мы обошлись без слова else, это иногда ещё называется неполным, неполной условной инструкцией. А когда есть
71: Else называется полной условной инструкцией. Итак, возвращаемся к тому, что может быть в качестве условия. В самом простейшем случае в качестве условия могут быть следующие.
72: Вещи, операции, сравнения.
73: Это операции больше, меньше, больше или равно меньше, или равно операции проверки 2 значений на равенство записывается 2 знаками.
74: Равенство, да, потому что 1 знаком равенства в питоне записывается присваивание. А если вы хотите в условии if использовать 2 знака равенства, то вы использоать проверку на равенство, нужно писать 2 знака равенства. Ну, д.
75: И неравенство тоже записывается правильно, Никита, восклицательный знак равно не равно 2 значения, а не равно б.
76: Эти 2 значения нет. Вот Михаил, вот так вот это из паскаля в нет, в сишарп. Уверен, что неравенство в сишарп, вот так вот, поскольку сишарп наследует синтаксис от си,
77: Значит, а вот так это из паскаля. Вот, соответственно, в питоне все-таки синтаксис вот такой вот, вот не равно факториал можно посчитать циклом. Можете посчитать, есть и в стандартной
78: Библиотеки, вот эти выражения возвращают. Результатом их является что-то типа да или нет, это так называемые условные инструкции.
79: Условные, условный. Нет, булевский тип. Значит, они возвращают вам значение типа да или нет в пито. Соответственно, в питоне значение, да, обозначается.
80: Словом, true истина значение нет возвраща обозначается словом фолс ложь, то есть результатом является либо true, либо false если вы написали 3 больше, чем 5, то результат будет false ложно.
81: Если вы написали 4 равно равно 4, то результатом будет true истина соответственно, после слова if может стоять в принципе любое логическое выражение, которое возвращает да или.
82: Нет true или false. Помимо вот таких логических выражений можно использовать и
83: Операции с логическими выражениями, логические операции, логические операции бывают такими. Логическая и
84: Записывается словом n. Например, если вы хотите проверить, что 2 числа больше нуля, каждое из 2 чисел больше нуля, то это пишется икс больше нуля энд игрек больше, нуля 2.
85: Логических выражения, между которыми стоит слово. And этот результат будет истинным тогда и только тогда, когда это истина, и это истина. 2 амперсанда. Нельзя, значит,
86: Это должно быть истинным, и это должно быть истинным. Если хотя бы 1 из них ложно, то результат ложный, логическое или записывается словом ор, или.
87: Соответственно, запись x, например, не равно нулю ор игрек не равно нулю обозначает, что хотя бы 1 из чисел икс или игрек не равно.
88: Нулю. То есть если, например x 3 и игрек 0 результат будет истина, если оба условия выполнены, то результат тоже будет истинным. То есть если x 5 игрек во
89: То результатом вычисления x не равно, нулю или игрек не равно нулю будет, соответственно, тоже истина, потому что хотя бы 1 из них истина, оказалось, даже оба оказались истины, и
90: Отрицание, отрицание записывается при помощи слова not отрицание это уже унарная операция после неё записывается.
91: Вы можете, например, написать какое-то условие, и тогда отрицание это true истина, если здесь будет записана ложь и ложь, если здесь было записана истина, отрицание меняет.
92: Это меняет значение на противоположное. Ну, в данном случае можно написать, конечно, меньше, либо равно, но может оказаться, быть ещё и более сложное выражение какое-то, значит так, Никита нот.
93: Нужно писать строчными буквами, то есть питон это язык, чувствительный к регистру, поэтому все операции должны быть записаны так, как они есть, а вот когда вы пишите слова true и false, то они записываются с заглавной буквы ну вот так вот.
94: Именно так они и определены в языке как слова, записанные с заглавной буквой.
95: Вот логические операции нам, соответственно, помогают решать какие-то много разных задачек. Использование логических операций. Вот там стандартная задача, задача определить
96: Является ли год високосным?
97: Мы сейчас используем григорианский календарь в этом григорианском календаре високосными годами являются года, чьи номера делятся на 100, то есть номер года делится на 100 ой на 4.
98: На 4, а кроме тех лет, чьи номера делятся на 100 года, чьи номера делятся на 100, у них все хитрее, из них високосными считаются только те, чьи номера Деля.
99: На 400. То есть мы можем сказать, что год будет високосным, если его номер н. Делится на 4.
100: И не делится на 100.
101: То есть исключим из множества високосных лет года 1900, 1800, 1700. Но мы исключили зря, например, год 2000, потому что он будет високосным по 2.
102: Части правила, что если год делится на 400
103: Если итак, собственно говоря, можно сформулировать условия. Год високосный, если его номер делится на 4, но не и не делится на 100, или если его номер делится на 400, вот тут вот нам
104: Помогут условные инструкции. Логические операции нам помогут. Если номер года н.
105: Делится на 4 это проверка того, что остаток от деления n на 4 равен нулю, но при этом не делится на 102 условия должны выполняться одновременно.
106: Условие, что н. Делится на 100, это не делится на 100 остаток от деления n на 100 не равен нулю так, Артур, у вас сишный синтаксис, поэтому не пишите, пожалуйста, не засоряйте неправильными фразами.
107: Вот, или если номер года делится на 400 н проценты 400 равно нулю, в этом случае программа выводит ес.
108: Ну, давайте високосный элс принт ноу.
109: Соответственно, пусть мы, например, получили на вход число n равное 2014.
110: Что у нас получится в результате проверим, что наша программа всегда работает, если мы получили н равное 2014 условие остаток отделения н на 4 равен нулю это ложь, условие н.
111: Делится на 100 это ложь, условие н. Делится на 400 это ложь, ложь и ложь, будет ложь, ложь или ложь это ложь.
112: И программа выведет no если мы возьмём год, например, 2012, тогда это условие заменится на истинное истина.
113: И вот это условие. А я был не прав, когда н. 2014 вот здесь была ложь, н делится на 4 ложь, а. Н. Не делится на 100. Это была истина, но.
114: Ложь и истина это ложь. Должно быть выполнено истины оба условия, а истина только 1. Поэтому вот это выражение я поставлю здесь скобочки будет истины ложным.
115: Или ложь будет, соответственно, ложь. Если мы возьмём год кратный 2000, например, 2012, который делится на 4, то здесь будет истинным это условие. И 2 условие тоже будет истинным, поэтому результат этого
116: Выражение будет истинным истина или ложь это, соответственно, истина, потому что 1 условие истина, и программа тогда выведет слово ес.
117: Если мы возьмём, например, год равный, 1900
118: То он делится на 4, но
119: Но не делится на 100. Вот здесь вот будет ложь, ой, но делится на 100. Поэтому условие, что остаток деления н на 100 0 0 не равно нулю это будет ложь, поэтому здесь будет записано истина и ложь.
120: Истина и ложь это, соответственно, ложь.
121: Поэтому все будет определяться значением оставшегося последнего выражения соответственно для 1900 условие остаток отделения н на 400 равно нулю ложно программа выведет no для 2000.
122: Будет истина, программа выведет ес.
123: Логические операции выполняются. Так.
124: Отрицание выполняется раньше, у него приоритет выше.
125: Потом ложь на истину даёт ложь, да? Ну вот тут будет.
126: Если и если или ложь на истину даёт ложь, если так. Ну, в общем, все, все, все поняли. Надеюсь, значит сначала выполняется отрицание, если они бы у нас были, потом выполняется.
127: Слово and все и выполняются, а потом выполняются или то есть и старше, как говорят, что у него выше приоритет. Но если вам нужно поменять порядок действий, вы можете
128: Поставить скобочки, тогда, например, у вас можно если поставить здесь скобочки, то будет сначала вычитаться это, а потом, соответственно, это давайте эту же самую задачу решим чуть чуть по другому и более и менее красив.
129: Мы решим её без условных инструкций, ой, без, без логических операций, но при помощи вложенных условных инструкций у нас, по сути, есть 2 принципиально разных
130: Случая года, делящиеся сейчас скажу, года, делящиеся на 100 и года, не делящиеся на 100. Для них все работает по разному. Давайте мы возьмём и проверим, что номер года, если делится на
131: На 100, если n делится.
132: На 100.
133: Вот сюда мы напишем обработку случая для годов, делящихся на 100, а сюда мы напишем обработку случаев для годов, неделящихся на 100, для делящих, для неделящихся на 100. Все очень просто. Если год делится на
134: 4 високосный, иначе не високосный, поэтому сюда мы можем поставить ещё 1 ветвление. Ветвление внутри ветвления. Вложенная условная инструкция получается, если не
135: Делится на 4.
136: То нужно напечатать ес.
137: Лс.
138: Print no.
139: Итак, например, мы ввели число 2014, проверяется 1 условие остаток от деления n на 100 равен нулю это неправда, значит, мы идём к слову лс и, выполняя.
140: То, что написано после слова элса.
141: Здесь мы проверяем, что остаток отделения н на 4 равен нулю, и вот тут получается вложенная условная инструкция в 1 месте у нас дорожки разошлись.
142: По условию н. Больше, чем остаток деления н на 100 равен нулю. А вот здесь вот наши дорожки расходятся опять вот эти 2 блока относятся вот к этому слову. Иф.
143: И к этому слову, элса, соответственно, нужно вложенные блоки выделять увеличенным отступом. То есть, если здесь вы поставили 4 пробела, то здесь нужно поставить побольше, например, 8 а
144: Здесь слово alsa относится к этому слову иф. И поэтому отступ у этого alsa должен быть точно таким же, как у слова if, то есть слово alsa вы пишите с таким же отступом в 4.
145: Дело как у слова if дальше вы, соответственно, пишите команды, относящиеся к блоку, который выполняется. Если это вот 2 условие не выполнено. И здесь вы пи,
146: Тоже дополнительный отступ. Соответственно, если вы после этого вернётесь, напишите здесь слово принт, это будет действие, которое будет выполнено вот здесь вот, вот эти 2 дорожки.
147: Сошлись вместе, то есть этот слово принт относится к блоку. После этого alsa, если вы пишите опять без отступа, то у вас вы сошлись и вот с этой дорожкой и
148: Это уже означает, что эта инструкция if закончилась и вы пишите продолжение дальше 2 знака равенства это проверка на то, что это выражение равно этому остаток отделения н на 4 равен нулю.
149: Ну а что нужно делать, если n делится на 100 тут все от тут все зависит от остатка отделения н на 400, если н делится на 400, тогда напечатать ес.
150: Иначе напечатать. Ну.
151: А можно вместо else и if сразу лиф, а потом лс. Ну давайте и про это поговорим. Значит, есть ещё такая конструкция.
152: Elif?
153: Ещё 1 решение этой же задачи запишем.
154: И изучим ещё 1 конструкцию.
155: Запишем по другому.
156: Опять дано число n. Сначала проверим, что число делится на 400.
157: Если число делится на 400, то год високосный.
158: После слова if можно написать не слово л. С, а слово elif, это означает следующее если это условие ложно, мы проверяем следующее условие теперь давайте отбросим.
159: Года, номера которых делятся на 100.
160: Поскольку мы отбросили года, номера которых делятся на 400, они не високосные, то теперь, если мы отбросим года, номера которых делятся на 100 эти года, эти будут високосные, а эти будут не високосными. Поэтому в этом слу.
161: Случае мы напечатаем слово es hoy no.
162: Теперь из оставшихся годов у нас остались только года, чьи номера не делятся на 100 вообще те, которые делятся на 4 високосные, те, которые не делятся на 4 не високосные.
163: Проверим ещё 1 условие если n делится на 4.
164: Тогда печатаем ес.
165: Иначе печатаем ноу.
166: Эта инструкция, соответственно, работает так эти условия проверяются подряд до тех пор, пока не найдём 1, которое выполнится. Например, введём число 2012, проверим это условие, оно
167: Ложно проверим это условие, оно ложно. Проверим это условие. А вот это условие будет истинным, поэтому будет выполнена вот эта инструкция и на этом все закончится. Если же все условия будут, вы ложны.
168: Например, введём число 2014 не делится на 400, на 100, на 4, тогда просто будет выведено слово no.
169: Блок else тут тоже может отсутствовать, тогда если ни 1 условие не выполнено, то ничего не будет выведено.
170: Ну давайте разберём ещё классическую задачу. Задачу про
171: Поиск максимума из нескольких чисел. Пусть у вас, пусть вы пришли в магазин и у вас есть на витрине стоит 3 арбуза.
172: Вы хотите выбрать из них самый тяжёлый? Вы, у вас есть вот чашечные весы, вот такие, на которых вы можете просто положить 2 арбуза и проверить, а больше б или нет, сколько для этого взвешивания понадобится, и как делать, и как.
173: Решать эту задачу.
174: Вот пусть у нас 3 числа это а, б ц. Значит, мы сначала должны сравнить а и б.
175: Если условие истина, а больше б истина, то тогда из 2 Арбузов а. И п тяжелее а. И мы должны сравнивать а. С ц.
176: Соответственно, если
177: А будет больше, чем ц, то мы выводим а а, иначе окажется, что что тяжелее арбуз ц нужно вывести ц.
178: Если же это условие ложно.
179: Ну, давайте нормальную блок схему нарисуем, то, значит, из 2 Арбузов а и б тяжелее б и нужно сравнивать б с ц.
180: Если да, то б больше ц оказалось, то, значит, самый тяжёлый это б, а если нет, то самый тяжёлый это опять-таки ц.
181: То есть это можно написать такой алгоритм можно написать при помощи.
182: Последовательных.
183: Вложенных друг в друга условных инструкций. Если, а больше б в этом случае из а и б мы выбрали а и сравниваем более тяжёлый а с ц е.
184: А больше, чем ц нужно напечатать, а иначе нужно напечатать ц.
185: Слово лс. Мы пишем под этим if оно относится к нему, теперь мы пишем лс к этому if, то есть сюда мы попадём в том случае, если это условие не выполнено, значит, б будет больше либо равно чем.
186: Тогда мы сначала.
187: Тогда мы проверяем, сравниваем б и ц, если б больше, чем ц, то печатаем б, иначе печатаем ц.
188: Я написал тут 3 слова if, но на самом деле этот алгоритм выполняет только 2 сравнения, то есть выполняется это, а потом это сравнение или это сравнение можно ещё этот алгоритм упростить.
189: Но можно сделать его ещё и так, чтобы он вообще, да, значит, чтобы сделать его ещё более понятным, потому что что произойдёт, если мы попробуем обобщить этот алгоритм на
190: Случай, когда у нас больше 2 Арбузов, больше 3 Арбузов, например, 4 арбуза, но можно, например, сравнить первые 2, выбрать из них самый тяжёлый, сравнить вторые 2, сравнить 3.
191: 4 выбрать из них самый тяжёлый сравнить ещё per ещё 2 ну и получится очень сложно на самом то деле алгоритм то будет устроен так.
192: Пусть Арбузов много, давайте мы их все выложим в ряд.
193: Сначала выберем самый тяжёлый из первых 2.
194: И возьмём его в руки. Теперь мы должны взять тот, что у нас находится в руках, и сравнить его с 3 арбузом.
195: Из них выбрать самый тяжёлый. После этого мы его возьмём в руки, а остальные нас не интересуют. После этого возьмём следующий арбуз. Сравним то, что у нас в руках, с тем, что у нас находится на с очередным
196: Арбузом из них выберем самый тяжёлый. То есть на каждом шаге мы будем просматривать, мы храним, держим в руках самый тяжёлый из Арбузов, который у нас есть.
197: И сравниваем его с очередным следующим арбузом. То есть давайте мы возьмём
198: Если а больше, чем б тогда в м запишем а лс в м запишем б в переменную м мы записываем максимум из 2.
199: Чисел а и б. Тем самым. А теперь в м. Записан максимум из чисел а и б. Нужно сравнить м с ц. Если ц оказалось больше, чем м. То есть мы посмотрели на очередной арбуз ц. Он оказался больше, чем
200: Лучше известный нам, то, значит, мы должны обновить значение. М запишем в него значение ц. Аналогично посмотрим на следующий арбуз.
201: Д. Если д оказался больше, чем м то в м. Запишем д. Ну да, понятно, что можно это продолжать дальше сколь угодно долго. Если у нас Арбузов очень много, нам понадобятся массивы и циклы про массивы и циклы, мы.
202: Пока разговаривать не будем. Это через несколько занятий. Если хотите, почитайте теоретический материал на сайте информетикс мск ру и смотрите, и смотрите, что там получается. Давайте мы
203: Сейчас сделаем перерыв, ну, на побольше, там чем на 5 минут до 16 43, до 16, 16 43. Сейчас давайте до 16 50 и
204: Продолжим, порешаем. Посмотрим задачки на информатикс мск ру.
205: На задаче на условные инструкции нужно зайти на сайт информетикс мск ру, найти там курс.
206: Найти там курс на питон. И вот есть раздел про условные инструкции. Те, кто хочет дальше про циклы, списки, массивы. Вот вам дальше много всего можете
207: Изучать. Мы зайдём в условную инструкцию. Есть теоретический материал, соответствующий тому, что рассказывалось сегодня, и есть задачи. Часть из задачек мы уже рассмотрели.
208: Вот, значит, ну давайте посмотрим на какие-то, ну вот тот же самый високосный год, да? Ну давайте на напишем.
209: То, что мы написали энн, равно инт от инпут, если n делится на 4 i, n не делится на 100.
210: Или если n делится на 400, то вывести.
211: Yes, else вывести no.
212: Сохраним.
213: Ц тмп.
214: Зайдём на сайт, выберем файл.
215: Отправим.
216: Ну, получили ok, разумеется. Естественно, все правильно. Так, ну, давайте посмотрим на какие-то задачи. Вот довольно.
217: Большой цикл задачек, типа ход кони, ход ладьи. Здесь говорится, и ход короля, ход слона и так далее. Значит, здесь говорится про то, могут, можно ли 2 клетки
218: На шахматной доске соединить ходом фигуры, то есть может ли ладья попасть из 1 клетки в другую клетку. Ну, соответственно, как у нас 4 числа даны координаты 1 клетки. 1, 1, 2.
219: Клетке 1 8. Тогда ладья может попасть, а из клетки 3 4 в клетку 4 3 попасть не может. Соответственно, читаем числа. 1, что я бы заметил.
220: Что переменные должны называться правильным образом. То есть, если речь идёт понятным образом, если вы будете называть координаты ладьи а б, ц d4 числа или ку в е р, как не
221: Некоторые любят тоже 4 буковки, 4 переменные, то у вас код будет непонятный и вам будет сложно его написать. Соответственно, если речь идёт о координатах, то самое лучшее название для координат это икс и игрек, поскольку
222: У вас 2 координаты, то есть мы считали икс, и мы считали игрек, но у нас 2 координаты, поэтому лучше координаты 1 клетки называть икс 1, а координаты 2.
223: Клетки называть икс 2 и игрек 2. Соответственно тогда вы сразу же по каждой клеточке поймёте, что вы считали данные по названию переменной сразу же.
224: Правильно ли у неё название, что в ней хранится, это очень важно. Соответственно, если как проверить, что клетки соединены ходом ладьи, они должны находиться на 1 горизонтали. В этом случае у них совпадают игреки. Игрек 1 равно.
225: Игрек 2 или на 1 вертикали в этом случае у них совпадают иксы, то есть условие, что клетки соединены ходом ладьи, если икс 1, равно икс 2 или игрек 1 raw.
226: Но игрек 2 в этом случае нужно напечатать ес.
227: Иначе нужно напечатать ноу.
228: Так, ладья это у нас рук.
229: Переключимся, выберем файл, отправим.
230: Ок, все работает. Вот можно, конечно эту задачу написать и по другому. Например, если икс 1 равно икс 2 напечатать ес Элиф.
231: Игрек 1 равно, игрек 2 напечатать тоже yes else напечатать ноу.
232: Просто здесь поставить двоеточие, вот такое решение. То есть проверим, если иксы совпадают, печатаем ес, иначе проверим, что игреки совпадают. Печатаем ес, иначе печатаем. Ноу, ну мне такое решение не нравится следующим.
233: Ну, во первых, он просто, в нём много строчек, и даже сразу же можно понять, что в этом решении, как его можно упростить. Смотрите, у нас здесь записано 1 условие, и после него записана строчка принт ес, потом
234: Мы написали Элиф другое условие, и после него мы написали слово ес. То есть, если выполнено это условие или, если выполнено это условие, программа выводит слово ес во всех остальных случаях.
235: Она выводит слово no, поэтому можно просто заменить условие на 1 составное условие ор, или так, как мы это и сделали в самом начале, в этом случае, конечно, короче, соста.
236: Составное условие при помощи логической операции, и, по сути, ваша программа должна отделить 1 из 2 случаев, выбрать 1 из 2 случаев да или нет, вывести yes или no, поэтому.
237: В вашей программе достаточно 1 если точка, если 2 клетки соединены ходом ладьи, то программа выводит ес, и здесь нужно просто записать условие, которое проверяет это, иначе вывести.
238: No.
239: В некоторых задачах, ну, например, давайте посмотрим задачу ход слона.
240: Тоже самое проверить, проверить, можно ли из 1 клетки попасть в другую клетку, но клетки на этот раз соединены ходом слона, как понять, что клетки соединены ходом слона, можно.
241: Сделать следующую вещь. Давайте посчитаем. Вот у нас 2 клетки, как ходит слон, он ходит по горизонтали и по вертикали на 1 и ту же величину. То есть по диагонали он ходит, то есть перемещение по
242: По горизонтали равно перес равно перемещению по вертикали насколько ход конь слон сместится по горизонтали, это разность его x координат, то есть нужно вычесть из x.
243: 2 икс 1.
244: Можем записать это в переменную, назовём её d x. В механике, обычно через дельта икс или d x. Обозначается изменение переменной, то есть если у вас изменилась координата, то это дельта.
245: X или d x насколько изменилась и 2 координата игрек это величина д игрек равна игрек 2 минус игрек 1 вот эти 2 величины должны быть равны.
246: Но вполне возможно, что обе они или 1 из них отрицательна. То есть может оказаться, что по оси икс конь слон сместился на 2 клетки, а по оси игрек на - 2 клетки. То есть возможна ситуация, что
247: 2 клетки соединены ходом слона если d xx равно д игрек, ну а также если они противоположны друг другу, то есть 2 и - 2, в этом случае d x будет равно минус д.
248: Игрек.
249: В этом случае мы можем напечатать слово ес.
250: Ls напечатаем слово no.
251: Ну, давайте сохраним.
252: Так это у нас слон.
253: Слон по-английски в смысле слон как шахматная фигура, это bishop?
254: Отправим файл на проверку.
255: Ну, естественно, да, все пройдено. Давайте посмотрим ещё совсем сложную задачу про ходы. Вот рассмотрим ход коня. Задача все тоже самое. Но конь
256: Ходит на но конь ходит у нас буквой г в 1 направлении, он ходит на 2 клетки, а в другом направлении он ходит на 1 клетку.
257: Значит, если мы опять посчитаем смещение д. X, y, д, игрек, начнём с того же самого, посчитаем смещение по оси d x y д игрек, то решение может быть таким, что 1 из этих чисел равно д.
258: 2, а другое чисел, 1 другое число равно 1, но каждое из них может быть отрицательным, ну и можно написать так если d xx равно 2 энд д игрек равно.
259: 1 или если d xx равно 2 и и д игрек равно - 1 или.
260: Если d xx равно.
261: - 2.
262: And д игрек равно.
263: 1 n нет или если д икс равно - 2 энд д игрек равно - 1 или и вот тут.
264: Сделать все тоже самое, но с заменой оо, да, да, да, да, да, да, это вот, вот я вам сейчас показываю, как писать не надо. Вот, значит, Владимир тоже написал код, как писать не надо.
265: Роман написал что-то более похожее на правду. Вот. Но я тоже, мне такая запись не нравится. Значит, да, вот некоторые пытаются сделать модуль и понятно, что нужно сделать модуль.
266: Не надо делать модуль при помощи использования возведения в квадрат, извлечения квадратного Корня, потому что, во первых, вы переходите к действительным числам. Во вторых, это просто некрасиво. Если вам уж на то нужно, если вам уж на то пошло, нужен
267: Модуль то ну уж во первых, уж можно написать так, как я вам показывал в начале, если d xx меньше нуля д икс равно минус d x. Но на самом деле у нас есть замечательная функция.
268: Функция апс, которая
269: Возвращает модуль числа. И если мы просто отдельно посчитаем модуль по оси смещение по оси икс,
270: И модуль смещения по оси игрек то оставшееся условие, которое нам нужно проверить, это условие такое, что d x должен быть равен 2 и д. Игрек должен быть равен единице и.
271: Д икс равен 1 и д. Игрек равен 2 в этом случае клетки соединены ходом коня мы выводим yes иначе.
272: Выводим no.
273: Вот здесь вот я пользуюсь тем, что логические операции выполняются так сначала и and потом или or. То есть сначала выполняется, вычисляется вот это выражение д икс равен 2 и д. Игрек равен.
274: 1. Если это выражение истинно, то результат уже будет истинным. Тогда потом вычисляется вот это выражение, если оно будет истинным, то результат тоже будет истинным, потому что в результате у нас стоит или or от этих 2 выражений, если
275: Вам нужен другой порядок действий, то скобки надо поменять Роман апс от d x плюс apps от д игрек равно 3 энд д икс не равно нулю n д игрек не равно нулю, ну в каком-то смысле это правильное вы.
276: Выражение, то есть написать, что сумма d x y д игрек по модулю равна 3 это возможно, когда 1 из них 3, другое 0 или когда 1 из них 1, а другое 2 но.
277: Отбросить условия, что отбросить вариант 3 0 Роман пытается добавление дополнительного условия д икс не равно нулю e д игрек не равно нулю можно дальше пойти по этому пути можно, например, написать, что d x plus.
278: Д игрек равно 3.
279: Ну и, например, и д икс умножить на д игрек равно 2 тоже самое. Результат будет истинным, когда сумма 2 чисел, а числа у нас целые неотрицательные 0 1 2 3. Результат будет истинным.
280: Если только когда 1 из этих чисел единица, а другое двойка, но я не люблю так писать, потому что в в таком коде очень тяжело разобраться, очень тяжело понять.
281: Понять, что же именно мы имели ввиду. То есть вы из, ну, не очень очевидно, что эти условия ограничивают Ровно эти варианты. 1 из чисел, равно 2 другое число, равно единице.
282: Заметим, что, ну давайте решение сдадим какое-нибудь
283: А нужно было, я его сохранил, но я его плохо сохранил.
284: Сохраним как
285: Конь по-английски шахматный это рыцарь knight.
286: Выберем файл найт пи отправим.
287: Ок.
288: Обратим внимание на то, что мы делали в этой задаче. Мы на самом деле, прежде чем использовать сравнение, то есть, прежде чем писать проверку окончательного результата, резуль данные немножко упростили.
289: Например, взяли и заменили положительные числа на отрицательные числа, на положительные. То есть свели задачу к положительным числам, и тогда мы избавились от большого количества проверок. Если бы мы здесь ещё бы
290: Отдельно написали бы разбор случаев для когда x d x отрицательный, д игрек положительный d x положительный, д игрек отрицательный или д игрек и д. Игрек оба отрицательные, тогда бы у нас вот как.
291: Раньше был написан какой-то там большой код, я писал, было бы очень большая программа, которая, во первых, была бы совершенно непонятна, а во вторых, в ней очень легко сделать ошибку.
292: Копируя эти, этот код и исправляя в нём переменные, вы можете, исправляя в нём значение, вы можете не так что-то исправить, и у вас получится, будет решение с ошибкой. А в таком решении, когда мы сна
293: Сначала упрощаем входные данные, а потом проверяем условия. Ошибиться, конечно, гораздо тяжело. Так, давайте посмотрим на другую задачу.
294: Вот тоже пример задачи, которая, которая
295: Очень часто, пока очень часто пишут очень плохо, значит, есть бассейн размером n на m метров, и известно, что там Яша обнаружил, что он
296: В какой-то момент находится на расстоянии x метров от длинного бортика и на расстоянии игрек метров от короткого бортика нужно выяснить, какое минимальное расстояние должен проплыть.
297: Яша, чтобы добраться до 1 из бортиков, это тоже пример задачи на упрощение. И, кстати, сейчас я вам покажу ещё, как решать задачу.
298: Как функцию min мы получим.
299: Значит, нам даны сначала размеры бассейна н на м, метров числа н и м. Мы считали число н.
300: Мы считали число м.
301: После этого нам даны расстояния икс и игрек, икс и игрек это расстояние до
302: Длинного бортика и до короткого бортика. Значит, н размер
303: М. Тоже размер.
304: X. Расстояние до.
305: Длинного бортика.
306: И игрек расстояние до короткого бортика.
307: Дальше проблема заключается в том, что у нас непонятно, какой бортик короткий, а какой бортик длинный. Ну вот, допустим, что nn меньше, чем
308: Меньше, чем м.
309: Тогда н это.
310: Короткий бортик.
311: А. М. Это длинный бортик.
312: Дальше хорошо бы нарисовать.
313: Давайте.
314: Значит, нужно посчитать, до каких бортиков Яша может добраться, за какое расстояние.
315: Так, рисунок.
316: Вот, значит, у нас есть.
317: Прямоугольник.
318: Вот наш бассейн даже синим обозначен, и у него н это короткий бортик.
319: А. М. Это длинный бортик.
320: Яша находится на расстоянии x от длинного бортика значит, пусть где-то здесь есть Яша.
321: И он находится на расстоянии x от длинного бортика значит, x. У нас вот здесь вот расстояние x.
322: До другого длинного бортика.
323: То есть вот это у нас. X.
324: Вот так вот 1 и 6 сантиметров. А до другого бортика сколько будет?
325: Будет, соответственно, n минус икс.
326: Вот здесь будет.
327: Н минус икс, но это расстояние до длинных борти, до длинного бортика, а до короткого бортика, соответственно, будет игрек до 1 бортика и m минус игрек, значит.
328: У нас есть следующее расстояние.
329: X.
330: And минус икс игрек м минус игрек.
331: И нам нужно выбрать из них самое короткое ну дальше начинается все зависит от того, есть ли любители писать инструкции, например, если x больше чем
332: And минус икс то в м запишем. Н минус икс лс в м запишем икс. Теперь сравним, если
333: М больше чем игрек то в и м запишем игрек. Если м минус игрек больше чем м малое, то в м запишем.
334: М минус игрек. Вот мы разобрали 1 случай после этого.
335: Берутся, да? Ну, во первых, после этого берётся, пишется лс.
336: Выделяется весь этот текст, копируется и дальше начинается программирование методом копи паст скопировать и вставить равно, а не больше.
337: Не понял. А вот здесь вот, да? Угу. Вот. Да, вот чем плох метод копипаста. Скопировали, вставили. И если у нас была 1 ошибка, мы ошибку размножили. А дальше?
338: Начинается замена n на m n на m.
339: М. На and m. На n.
340: Где-нибудь ошиблись и в конце отлично пишем значение. М.
341: Ну, во первых, следует заметить, что действительно, опять-таки, в питоне очень много замечательных функций есть, которые позволяют легко решать задачи, например, вот действительно функция my
342: Есть, которая возвращает минимум из чисел, если нам нужно найти, соответственно, минимум из чисел.
343: X и сколько у нас там н. Минус икс мы можем вызвать функцию мин от этих 2 чисел?
344: Можем даже после этого вызвать функцию мин от чисел игрек и м минус игрек.
345: Вот это вернёт нам минимум из 2 чисел x y n минус икс вот это вернёт нам минимум из 2 чисел игрек и н минус игрек, а теперь мы возьмём и подставим, и вызовем функцию min от результата, и вот это мы можем напеча.
346: Все равно начинается программирование методом копи паста.
347: Но даже я вам подскажу, что даже ещё никто не написал у функции мин можно передавать даже несколько аргументов, не обязательно 2, a3 или 4, то есть вы можете написать min x, н. Минус икс игр.
348: Игрек м, минус игрек, и вы получите минимум из 4 чисел. Вот такой удобный язык. В нём очень много вещей, которые позволяют очень просто писать программы. То есть
349: Например, там в паскале или в си такого таких удобств нету, таких 1 такой простой функции, min, которой можно любое количество аргументов передать.
350: Но все равно, если and меньше, чем м. Мы.
351: Выведем эту строчку, иначе нужно m и n поменять местами.
352: Выведем вот такое значение. Казалось бы, программа стала ещё лучше. Да, функция Макс тоже есть, но
353: Все равно эти выражения очень, очень большие, можно сделать по другому. Можно действительно пойти по пути, упростить решение, упростить решение. Это давайте. Вот у нас есть 2 часа.
354: Н и м. Нам нужно из чисел n и m выбрать короткий и длинный бортик, можем, например, если мы выберем из чисел н и м.
355: Короткий и длинный бортик код после этого будет короче, например, можем написать так. Если and меньше чем м, то short короткий бортик, равно n a long.
356: Равно м, иначе сделаем наоборот, шот равно.
357: М. Long равно n. Дальше нужно составить выражение для для вот уже с переменными.
358: И long, а не с тем, что мы написали а давайте-ка мы сделаем так. Давайте мы будем считать, что and это короткий бортик, а. М. Это длинный в этом случае, если переменная n и m.
359: Неправильно упорядочены, то есть окажется, что если н больше, чем м нужно их переставить местами, напомню, как переставлять переменные местами при помощи кортежей.
360: А вот здесь вот тогда ничего делать не нужно.
361: То есть, на самом деле правильно так записать. Если н, оказалось больше, чем м, то мы должны поменять местами переменные. Н и м. Ну что ж, давайте.
362: Попробуем сохранить решение.
363: Яша.
364: Файл будет называться.
365: О, все решение прошло, все, все тесты можно. То есть мы сначала упрощаем задачу, то есть принимаем, значит, определяем, какой бортик, какой бортик короткий какой.
366: Длинный. И после этого мы точности со всем определились, и мы просто выводим результат. Все стало гораздо проще, чем любые попытки, которые мы написали раньше. Можно ещё эту вещь
367: Выбора из 2 чисел н и м. Наименьшего и наибольшего сделать ещё немножко по другому вот так иногда пишут and m равно мин из н м и max is н м.
368: Здесь, во первых, используется функция Макс точно также, которая находится, находит максимум из 2 или нескольких чисел, и мы используем кортежи. То есть сначала вычисляется наименьшее из чисел н и м.
369: Наибольшее из чисел n и m и получается кортеж из 2 переменных, которые мы и записываем в переменные n и m. То есть в. Н. Попадёт наименьшее, а в. М. Попадёт наибольшее массив можно в mie.
370: Работать с массивами тогда, а от какой-нибудь нужно выводить, не понял вопроса.
371: Вот, ну вот совсем элегантное, простое решение. Если задачу упростить сначала, то она может стать существенно проще.
372: Ну, давайте ещё разберём задачу на
373: Упрощение тоже.
374: Ну нет, дайте коробки, оставим на потом.
375: На самостоятельное решение. Задача узник замка иф. Задача в списке имеет буковку в и номер 35 22 у нас
376: Есть прямоугольное отверстие размером д на е и есть кирпич размером а на б на ц. Нужно определить, можно ли протолкнуть кирпич размером д на её в отверстие раз.
377: Мером не так. Кирпич размером, а на б на ц, в отверстие размером д на е кирпичи поворачивать нельзя, то есть кирпич нужно проталкивать так, чтобы он его стороны были параллельны.
378: Сторонам отверстия, иначе может оказаться, что, например, у нас есть очень плоский кирпич длинный, и тогда его можно, например, по диагонали засунуть отверстие квадратное тогда
379: Если кирпич очень плоский, то длина диагонали квадрата это корень из 2 от его стороны, и даже, например, мы можем в квадрат со стороной 1 протолкнуть кирпич размером, если он плоский, очень тонкий.
380: Размером, ну, с шириной больше 1, но меньше, чем корень из 2. Но вот здесь все не так понятно, что нам нужно
381: Отверстие кирпич проталкивать так, чтобы самая длинная его сторона была вдоль, не поперёк отверстия. То есть мы будем двигать его, продвигать длинной стороной, то есть нужно кирпич ориентировать таким образом, чтобы
382: Маленькая сторона кирпича находилась вдоль маленького маленькой стороны отверстия, a2 по размеру сторона кирпича находилась рядом, вот вдоль параллельно большой.
383: Той стороне отверстия, а самая большая сторона кирпича находилась. Вот мы её будем, мы будем двигать вдоль этой стороны. Поэтому упрощать задачу нужно таким образом. Сначала нам даны числа а, б. Ц.
384: Б ц д е. Значит, сначала мы упрощаем давайте кирпич повернём так отверстие, поменяем стороны отверстия так, чтобы значение д.
385: Было меньше, чем её. То есть, например, если д больше, чем её, поменяем их местами.
386: Теперь давайте.
387: Выберем.
388: У кирпича наименьшую сторону, наибольшую сторону и по 2 по величине можно сделать разными способами, например.
389: Min size это минимальная сторона кирпича, это минимум из чисел а, б. Ц.
390: Max size это максимум из чисел а. Б ц а как найти мы нашли наименьшее из 3 чисел, наибольшее из 3 чисел а как найти среднее мне нужно сравнить наименьшую.
391: Сторону кирпича с числом д, которое меньшая сторона отверстия, а среднюю по величине сторону кирпича, со стороной её, с наибольшей стороной отверстия. То есть я до
392: Должен сравнить кирпич пролезет в отверстие если min size будет меньше, чем dd меньше, либо равно и.
393: Middle size средняя сторона будет меньше, либо равна, чем её, но это мидл сайз, ещё нужно найти.
394: Как его найти? Есть ли ответы? Нету ответов. Тогда я продолжу пока писать код. Значит, тогда мы выводим yes, иначе мы выводим no, осталось.
395: Только middle size найти.
396: Ну, способ номер 1 у нас есть 3 числа а. Б ц. Мы знаем из них наименьшее. Наибольшее осталось найти 3, значит, можно их все сложить. А плюс б, плюс ц.
397: Если мы из них вычтем мин сайсс.
398: Наименьшее число и вычтем Макс сайсс.
399: Наибольшее число, то останется как раз-таки в сумме 3 число, которое нам нужно. То есть это будет как раз мидл сайз.
400: 1 вариант. 2 вариант. Мы можем 3 числа по упорядочивать. Давайте упорядочим 3 числа между собой. Мне нужно найти, чтобы, а стало наименьшим числом. Давайте сначала сравним его с
401: Если, а больше, чем б, то поменяем их местами.
402: Теперь мы добились того, что из чисел а и б а наименьшее теперь я хочу добиться, чтобы а стало наименьшим из всех 3 чисел, тогда нужно сравнить а и ц. Если а окажется больше, чем ц, то мы поменяем а и ц.
403: Местами.
404: Вот теперь мы можем быть уверены, что из 3 чисел а. Б и ц. А. Самое маленькое, но мне ещё нужно найти среднее а а, наименьшее, чтобы было. А вот теперь давайте добьёмся того, чтобы б стало среднее.
405: Ну, осталось сравнить б и ц. Они могут быть как угодно упорядочены между собой, поэтому сравним если б окажется больше, чем ц, то мы поменяем б и ц местами.
406: Вот теперь мы на самом деле добились того, что 3 числа а б ц упорядочены, то есть are меньше либо равно, чем б, и оно de меньше, либо равно, чем ц.
407: Вот тогда мы можем сравнивать а. С д и.
408: Б с её можно напечатать ес, иначе напечатаем ноу, ну вот такое решение. А давайте за ещё 1 вещь покажу тоже из числа синтаксического сахара, из числа.
409: Лестности, прелестности питона. Вот такая задача. Сколько совпадает чисел даны 3 числа? Нам нужно вывести 3, если они все равны. 2, если совпадает 2 числа.
410: И 0, если все числа различны.
411: Ну, можно решать задачу при помощи последовательностных инструкций. Сначала проверим, что 3 числа равны. Это условие, что а равно б и б равно ц.
412: Ну, то, что, а равно ц уже не надо проверять, потому что в этом случае будет, будет написано, а, и ц, будут равны. В этом случае 3 числа равны.
413: Напечатаем 3.
414: Дальше удобно проверить, что, ну, давайте проверим, например, что 2 числа равны.
415: Это условие, что а равно б или а равно ц или б. Равно ц. Если хотя бы 1 пара из оставшихся 3 равна, то тогда мы напечатаем число 2.
416: Во всех остальных случаях мы напечатаем число 0 0 равных чисел.
417: Ну, давайте попробуем сдать файл. Называется иквел.
418: Ок, прошло. А теперь показываю то, что называется синтаксическим сахаром. В питоне можно писать вот так. Ни в каких других языках, мне известных, такие проверки запрещены они либо
419: Вообще не будут работать либо либо синтаксически некорректно, либо будут работать совсем не так. Такие проверки означают, что должно быть выполнено это условие, а равно
420: Б. И вот это условие б. Равно ц. То есть все проверки выбираю, выполняются подряд.
421: Ну, убедимся в том, что действительно работает.
422: Ок, да, давайте ещё 1 синтакс ещё сделаем по другому. Давайте вот эти 2 случая поменяем местами. Сначала проверим, что числа не равны.
423: То есть, если 3 числа не равны, напечатаем ноу, как проверить, что 3 числа не равно, а не равно b не равно ц.
424: А не равно b b не равно ц.
425: Сохраним.
426: Сдадим файл.
427: Частичное решение. Смотрим протокол.
428: На каких-то тестах нам выдают неправильный ответ. Ну кто скажет, в чем дело? Почему ответ мы неправильный получили.
429: В каком случае наша программа работает неправильно?
430: На каком примере наша программа выдаёт неправильный ответ?
431: Когда are равно ц да, например, при случае а. 3, б, 4, ц, 3, тогда а не равно b b, не равно ц, но числа а и ц могут оказаться равными. Можем вот сюда вот поставить.
432: Ещё 1 условие и тогда у нас будет все 3 условия проверяться, а не равно b b. Не равно ц ц не равно, а в этом случае мы печатаем 0, иначе печатаем 2.
433: Вот действительно правильное решение. Ну, на этом мы закончим решение задач с условными инструкциями.
434: Если есть вопросы, можете быстро их попробовать задать.
435: Значит, короче, это все нужно в 1 очередь для просчитывания чего-либо, то есть решения логических и алгебраических задачек. Я бы сказал бы, что это прежде всего нужно для того, чтобы вы научились, во первых, работать с условными инструкциями. А во вторых, поскольку речь идёт о
436: Олимпиадах, то есть у нас курс подготовка к олимпиадам, то уметь решать именно такие логические и алгебраические задачи крайне важно. То есть олимпиада по информатике, задача на олимпиаде по информатике зачастую
437: То это задача, где вы должны уметь сообразить, то есть придумать решение задачи. И после этого вы должны его закодировать, то есть написать программу, которой все это делается, проверяется 2 даже
438: Больше навыков навык придумать решение, навык изложить решение в форме алгоритма, то есть записать его не по-русски словами. Ну, посмотрим, какая сторона, короче.
439: А какая длиннее и какое расстояние до этой стороны и этой выберем из них наименьшее наибольшее число. Нужно ещё уметь записать алгоритм, то есть сформулировать решение в виде
440: Последовательности действий, понимаемый компьютером, а дальше это записать в форме программы, то есть написать на языке программирования. Все это нужно уметь на олимпиадах по информатике делать.
441: А когда нужно проверить, что верно, либо то, либо другое, какую команду вводить. Ага. Вот то, что верно. Или 1 условие, или другое, это так называемое исключающее, или, то есть то, что верно, ров.
442: 1 из 2, ну, можно, например, если можно, написать.
443: Условия, так что а или б a or b. И при этом.
444: Not a and b. Да, это ксор исключающие или, то есть то, что верно, что а или б, но при этом неверно, что верно а. И б. В принципе, вы можете попробовать вас.
445: Пользоваться вертикальной палочкой для обозна, а для обозначения ксор. Нет, не вертикальной палочкой, а крышкой вот такой операции. Но это битовая операция, и с ней нужно быть поаккуратней, но
446: Если у вас айб логические типа true или false, то можно пользоваться исключающим или записанным в форме крышки.
447: Ещё вопросы?
448: Значит, следующее занятие через неделю будет посвящено циклам, и вместо меня его проведёт преподаватель мфт Тимофей Фёдорович Хирьянов. Ну и тогда я надеюсь, что вы
449: Dirt через неделю, а со мной вы в следующий раз встретитесь через 2 недели это