Практика программирования на Python 3, лекция №4
Практика: cs.mipt.ru/python
Telegram-группа: t.me/tkhirianov_python_2019
Программа курса: github.com/tkhirianov/lection...
Спонсировать: / tkhirianov или www.paypal.me/tkhirianov или 63900240 9020000598 (карта СБ).
Пікірлер: 128
0:00 Вводные слова, в основном для студентов. 1:00 Начало. Про структурное программирование. Немножко истории. 2:20 Теория о структурном программировании. Суть, по пунктам. 4:08 1. Структурное программирование - это... 5:55 Фишка в том, чего нет в структурном программировании. (о GOTO) 9:45 2. Про повторяющийся код - в функции (10:50 о минусе этого пункта (о программировании снизу-вверх)) 11:40 3. Программируй "сверху-вниз". (главная парадигма) 12:25 Лирика. О системах управления контентом/версиями 14:30 Пример про подход к программированию программы. (итеративный подход) 22:00 Лирика про ошибку в какой-то строке. ($ git blame *.py) 23:00 Возвращаемся к программированию сверху-вниз. Декомпозиция задачи на примере строительства дома. 26:13 Про делегирование. (полномочий и ответственности) 30:50 Про Интерфейс взаимодействия/вызова. Про договоренности/контракт. (Документация) 34:00 Продолжаем про подход сверху вниз. Про pass и документацию. 46:00 Про функцию main в подходе сверху вниз. 48:50 Возвращаемся к рисунку про "мошенника" и что нужно сделать, чтобы он перестал им быть. 54:10 Стираем pass и пишем код. 1:00:25 Нельзя коммитить программу... 1:00:57 Про отладочную печать 1:02:45 Немного практики программирования сверху-вниз "в живую". 1:05:25 Про выбор "опорной точки", о спорах и удобности интерфейса. 1:12:40 О важности запустить программу перед commit'ом. 1:13:15 Резюме о структурном программировании.
@turkmenprofessor4125
4 жыл бұрын
Спасибо!
Гениальный преподаватель! А фраза "много званых, но мало избранных" - просто бомба!
"Давайте делать паузы в словах"-не нудные лекции, а захватывающее шоу! Так учиться-мечта!
Учитель которого всегда интересно слушать! Всем таких советую
Студенты на лекциях убывают, зрители из интернета прибывают.
@ZZZ5204
4 жыл бұрын
Вестимо, часть студентов предпочитает ютуб;)
О, е-е-е, старый добрый БАСИК (Basic). На 7:15 пишется так: 30 IF a=0 THEN GOTO 50 Я не умничаю, это просто ностальгия. Школьный компьютер «Агат». В то время это было что-то бомбически.
@user-ml3pu5lo1p
3 жыл бұрын
А вопрос про GOTO был призабавнейший, презобавнейший для этой аудитории! Конечно наверное не все это должны знать.... сейчас хз чего им в школах преподают
the roof, the roof, the roof is on fire все лекции смотрю как сериал. Спасибо, очень интересно!
Пустил слезу, когда про GOTO услышал. Застал ещё то время, когда в школе Бэйсик проходили (поверхностно, но всё же).
Спасибо за большое количество лекций . Глотаю на ходу
Спасибо вам, прекрасные лекции
Отлично доносит суть. Очень интересно. Больше бы таких учителей.
Спасибо вам за Ваш труд!!!
Тимофей, ты лучший! Спасибо тебе за твой труд! Очень крутые наглядные и очень понятные объяснения!
спасибо, Тимофей Фёдорович, всё ясно и декомпозированно
благородное дело передавать знания
Дай Вам Бог здоровья. Настоящий преподаватель. Увлекательно, доходчиво. Рад за Ваших учеников. Надеюсь, они ценят.
Аплодирую в конце лекции в который раз. Какой же тимофей чудесник.
Тайм-коды: Структурное Программирование 1:39 одним из первых топил за Парадигму структурное программирование Никлаус Вирт 2:18 суть СП: 4:14 1) программирование - это а) последовательное исполнение б) ветвление в) циклы 5:58 это не GOTO 8:45 продвижение идеи: давайте делать отступы 9:53 2) повторяющийся код -> в функции 11:00 3) программируй "сверху-вниз" (прога сначала создается крупными мазками, а потом уходим в детализацию (решение маленьких подзадач) 12:28 системы управления контентом (системы контроля версий) Git 14:25 рисунок time-line проекта. 1) пустой репозиторий 2) делаем его git-клон 3) initial commit. Файл с прогой отсутствует. Но он Уже (даже пустой) Консистентный (интерпретировабельный) 15:06 итеративный подход 17:21 двигаться итерациями 19:05 промежуточные устойчивые версии 21:44 $ git blame 1.py # это если где-то ошибка 22:46 ваша задача: уметь git pull, git add, git commit, git push 23:01 "сверху-вниз" + Декомпозиция задачи 23:30 пример Постройка дома. (Программа и Подпрограмма) От программы в подпрогр - Параметры, обратно - что-то 26:13 Делегирование подзадачи (полномочий и ответственности) 28:34 источник ошибки 30:47 Интерфейс взаимодействия (вызова) программы и подпрограммы 31:16 Контракт (договоренности) в виде Документации. На этапе проработки интерфейса 34:08 вначале пишется так, как будто подпрограмма уже есть 36:55 Функция-заглушка (функция-мошенник с телом pass) # mock-функция 41:12 в любом коммите 2 этапа: 1) взлёт (творческий) 2) приземление (технический) Документация. writ it down 42:55 документ-строка. Главное человеко-понятность 46:10 сверху всех def main(): 47:03 ниже всех if__name__=="__main__": main() в Питоне нет предобъявления функций 48:57 дорисовываем строительство 1:00:26 нельзя коммитить неконсистентную прогу. Репозиторий ломать нельзя. 1:01:00 отладочная печать (например тупо принтануть чёт) 1:02:47 переход в среду разработки git status git commit -m 1:08:10 windowSize(x,y) чтобы появился холст, на кот. будет все рисоваться. run() 1:12:07 типичная ошибка программиста - закоммитить не синтерпретировав ( не запустив) 1:13:20 СП - упорядочивание программы. Думаем: - а за что отвечает кусок программы - что ему надо дать - что он должен вернуть
Моим первым (и пока единственным) языком программирования тоже был бейсик. И вот решила Python изучить. Как изменился мир!
Щедро. Спасибо!
Просто шикарно! Тёзка взорвал мозг как ПРАВИЛЬНО подходит к программированию. Особенно конец лекции прекрасен
Огромное спасибо за ваш труд)
Спасибо Вам большое, очень интересно и доступно подан материал, хотел глянуть минут на 10, пропал на час.
@user-ru1qt2og1o
4 жыл бұрын
Ага, затягивает.
Круть!!! Продолжайте в том же духе
Блеск, спасибо Тимофей Фёдорович. Большое.
Супер лекция )
Я фанат этого чувака, таким разносторонне развитым быть нереально!
Классно рассказал про Структурное программирование
Лайк заочно!!!
, спасибо за очередную лекцию !!! , , , храни Вас Бог
@Titanoboagames
4 жыл бұрын
Бога нет
@BlackRasta207
4 жыл бұрын
@@Titanoboagames Ахаха, в каждой что ли коммент-секции есть человек, который мгновенно применяет свои сверхценные убеждения к любому нейтральному комменту, хоть как-то затрагивающему хоть какой-нибудь религиозный термин?)) Откуда вы такие вообще берётесь?)
Нереально крутой чувак!)
Спасибо.
Лучшее!
Ура! Есть пиджак!)
@paveldumavin5068
4 жыл бұрын
)))print(пиджак)
@yaroslav5168
4 жыл бұрын
@@paveldumavin5068 a=1 while a teacher.chto_odet(sviter) a += 1 while ??????: teadcher.chto_odet(pidjak)
@paveldumavin5068
4 жыл бұрын
@@yaroslav5168 это ещё не учил ....s = Nekto s = del(s)
Большое спасибо!
Добрый день Тимофей! В первую очередь хотел бы сказать огромное спасибо за Ваш труд, очень классные лекции! Можно Вас попросить также предоставить доступ к Лабораторным работам, с целью закрепления прослушанного материала. После первых лекций были классные задачи с черепашкой, которые позволили намного глубже понять материал. Дальше к сожалению таких же заданий не нашел. Я думаю, если вы сделаете Лабораторные на платной основе, это будет справедливо и полезно для многих. Еще раз спасибо за Ваш труд!!!
@dyler_turden
2 жыл бұрын
Поддерживаю данную инициативу
И ни одного комментария про "the roof is on the fire"
13:20 - В точку, во время работы , постоянно с такой проблемой сталкивался 🙄
Да, научиться бы мне хорошо делать декомпозицию и делегирование. Какие книги почитать для этого можно? Здоровская лекция, в прочем, как и всегда.
12:40 не использовал систему управления версиями, попробую :). СПАСИБО!!!
ZX-Spectrum имел, как по мне, самый приятный Бейсик )
11:43 -- в наше время, в середине 70-х, это называлось "программирование сверху-вниз наискосок" 😎 А если серьезно, я бы начинал Python с объектно-ориентированной парадигмы, потому что структурное программирование - это частный случай.
Спасибо
Препод похож на домовёнка Кузеньку )
Когда Basic начали расписывать чуть слезу не проронил
На прошлой лекции были сравнения с фашизмом, в этой уже сам господь бог. Такие яркие примеры :D
Эх, мне бы такого учителя в вузе
Обратная связь: Как перестать захлёбываться от восторга и ощущения, что ты снова студент, хотя тебе 27 лет :D Очень понятно и интересно. То, что не мог осилить в школе и универе сейчас влёт идет. Хотя образование горного инженера. Которое не пригодилось вообще, хех...
Избавлю вас от обременения почитать про РЕР8. Достаточно просто нажать cnrl+alt+L - всё расставляет на свои места
8:09 бейсик это не низкий уровень. низкий уровень это ассемблер. как раз на спектруме это и показали людям - была задача показать что программировать дома это просто. и далее - не сказал бы что читать код бейсика тяжело. ассемблер читать - надо тренироваться, знать структуру компьютера (в том же спектруме знать что в каких ячейках хранится, какую память можно использовать...) и то, сложностей не много. в свое время сам освоил даже прерывания и мог переделывать загрузчики "защищенных" программ, помню модно еще было что-то делать пока идет загрузка... в то время ни литературы толком ни интернета еще существовало... и повторюсь - для людей впервые столкнувшись с программированием - давать язык слишком рано, наверное потому и стали меньше посещать - чем дальше тем сложнее понять что и зачем. наверстать они уже не успеют... зачем такой аудитории аналогии с бейсиком?! они не поймут ни недостатков ни прелести...
Подскажите плз. создали функцию main() из нее мы запускаем созданную ниже функцию paint_house(...), а из нее запускаем функции paint_wall, paint_roof, paint_window, но эти же функции еще не созданы? Или это сделано только чтобы показать как делается декомпозиция и структура программы?
Еще одни программист который начинал изучение с ZX Spectrum-a )
Если кому-то понадобится домик, который не успели доделать в данном упражнении, то вот код: from graph import * def main(): windowSize(500,600) paint_house(100, 200, 300, 400) x = 100 y = 200 width = 300 height = 400 run() # Запускает холст def paint_walls(x, y, width, height): brushColor("green") rectangle(x, y, width, height) def paint_roof(x, y, width, height): brushColor("gold") points = ((x, height), (width, height), (height, x), (x, height)) polygon(points) def paint_window(x, y, width, height): brushColor("white") rectangle(x, y, width, height) def paint_house (x, y, width, height): paint_walls(x, y, width, height) paint_roof(x, y, width, height//2) w_height = height // 1.6 w_width = width // 2 paint_window(x + w_width, y//2 + w_height, w_width, w_height) main()
@dmytrosoroka7335
3 жыл бұрын
from graph import * def main(): windowSize(500, 600) paint_house(100, 200, 300, 400) x = 100 y = 300 width = 300 height = 400 run() def paint_house(x, y, width, height): paint_walls(x, y, width, height//2) paint_roof(x, y, width, height//2) w_height = height//4 w_width = width//2 paint_window(x + w_width//2, y + w_height//2, w_width, w_height) def paint_walls(x, y, width, height): print("Рисую стны", x, y) brushColor("green") rectangle(x, y, x + width, y + height) def paint_roof(x, y, width, height): brushColor("gold") points = ((x, height), (x + width, height), (x + width//2, y - height//1.6), (x, height)) polygon(points) def paint_window(x, y, w_width, w_height): brushColor("white") rectangle(x, y, x + w_width, y + w_height) main()
Roof is on fire )))
Спасибо за Ваш труд ! Подскажите пожалуйста, какие платные Курсы стоит пройти? Боюсь заплатить не малые деньги и в итоге разочароваться. Опыта нет
@dyler_turden
2 жыл бұрын
Имхо, только Курсера вызывает интерес... И она сотрудничает с МФТИ, кстати
Подскажите пожалуйста, как сделать овалы? Я нашел задание картина 1. Но вот как делать овалы я так и не понял, нашел функцию которая описывает эллипс, но проблема в том что его можно построить по точкам только горизонтально или вертикально. И не понятно как рисовать овалы под углом.. И есть ли в библиотеке graph что-то похожее на библиотеку черепахи, а именно поворот на какое-то количество градусов? Или может кто-то может кинуть примеры выполнения этих заданий?
Тимофей Федорович, здравствуйте! Смотрю ваши лекции, и там вы говорите про лабораторные. Может быть можно где-то скачать задания для них?
@iokar911
4 жыл бұрын
а это не то? cs.mipt.ru/python
@nickolajn.9961
4 жыл бұрын
@@iokar911 вроде, это. Спасибо
Первые 2 главы книги Бытие, описаны как комментарии к программе, обратите внимание пожалуйста.
С человечками получился забавный намек на абстракцию
57:16
@tooman
4 жыл бұрын
Сочувствую
8:18 в чпу станках макропрограммирование такое )))
Помогите пожалуйста, как заставить весь корабль двигаться, я его нарисавал в отдельной функции: def lodka(x,y): penColor("brown") brushColor("brown") rectangle(x, y, x+180, y+50) polygon([(x+180,y),(x+250,y),(x+180,y+50)]) penColor("black") brushColor("white") circle(x+220,y+10,8) penColor("brown") brushColor("brown") arc(x+50,y-50,x-40,y+50,start=180,end=270) дальше x = 50 y = 240 obj = lodka(x,y) onTimer(update, 50) и куча ошибок, как это правильно оформить?
56:26 Премьер министр Канады.
7:45 тыщ
Сколько я отдал своей юности языку Basic >_
Подскажите, почему комментарии к функциям не пишутся, как комментарии, а через тройные кавычки?
@ocetua
3 жыл бұрын
Это разные вещи. В кавычках пишется документация к функции, классу или модулю и эта документация должна отличаться от комментариев.
Почему не использовать аннотации? paint_house(x=100, y=100, width=50, height=50) Видно что за элементы и за что отвечают. Ну и конечно использовать docstring,
12:36 разве не система управления версиями (git и его аналоги)?
@MsKarlason
4 жыл бұрын
произошла опечатка
Одного не пойму, как у него в 3мерном пространстве получилось 4 координаты дома. Т.е. если с локейшном, то должно быть 5 переменных - location x,y + 3 для дома (стен, без крыши). Даже если параметры одинаковые по цифре. Или он имел в виду двумерный дом на экране?. Ну и читается не хейт, а хайт, конечно. В дальнейшем пользуемся словами length, width, height. Ну и не lection, а lecture.
Классно наверное, в нашем вузе на пары не приходят преподы а не студенты
Можно вопрос, а как лекция может быть прочитана 23.10.2019 если видео выложено 18.10.2019?
@testmybrend7591
4 жыл бұрын
скорее всего месяцем* ошиблись и скорее всего это было за сентябрь
@iskandarihsanov4324
4 жыл бұрын
23.9.19
@eladbv1
4 жыл бұрын
Это магия )))
@wolfich4684
4 жыл бұрын
Просто благодаря питону уже можно многое ... )
@nickkondr5565
4 жыл бұрын
Это сверху вниз.
пришлось переслушать песню Fire Water Burn
Тайрел Уэллик
Этот волшебник называется прораб. А прорабы, как известно, еще те волшебники)
Как попадать к вам на лекции при этом не быть студентом ?=)))))
Вопросов нет, пока перевариваем материал. Спасибо за лекции. "За него топил...." это сленг преподов? Или чтобы ближе к тинейджерам быть?
@ridnat1760
4 жыл бұрын
"топил" сленг распространён примерно с 2006 года, преподу на вид 30-35 лет, соответственно 13 лет назад ему было 17-22 года, короче не думаю что это для того чтоб быть ближе к тинейджерам LoL
Да что же это такое, всё время хватает времени закончить лекцию.
Можно конечно нарисовать черепахой, и сохранить точки куда-то, а потом по этим точкам нарисовать библиотекой graph, но мне кажется это дичь, должен быть способ проще
@ruslanchechotkin789
4 жыл бұрын
Или нарисовать в ряд много окружностей и поиграть с радиусами... Да, наверне так
@ruslanchechotkin789
4 жыл бұрын
Думал серией кругов с увеличивающимся и уменьшающемся радиусом, но нет, кружочками не выходит, тогда ободка нет черного на овале, я уже не знаю как еще
@ruslanchechotkin789
4 жыл бұрын
Разобрался как наклонить эллипс и посчитать точки, пол дня убил, ох и задачки у вас товарищ))
В университете надо вставать? У нас в колледже Цюриха препод просто "Привет " говорит. Удивило, что он нам дал эмейл и мобильный рабочий номер. Если непонятки, то можно всегда спросить на неделе или назначить встречу.
@leavemehere9702
4 жыл бұрын
Это обычное уважение. Преподаватель перед студентами стоит 1,5 часа, почему бы и студентам не встать на пару секунд?
@isamiwind438
4 жыл бұрын
как поступили?
@olegmakarikhin
4 жыл бұрын
Такая традиция приветствия в наших ВУЗах. Кроме того у такого приветствия есть роль переключения внимания, сложно не заметить что вокруг тебя студенты повставали, а значит начась лекция
@ZZZ5204
4 жыл бұрын
Я перед просмотром каждой лекции встаю. Это не шутка. Это помогает мне лучше погружаться, как будто на лекции в реальной жизни
59
лабы в ссылке под видео)
Де домік?)
"я лекцию проспал по питону. О чём там было?....ну, э-э-э, про волшебников". Гарри Поттер и так себе дары питона.
@paveldumavin5068
4 жыл бұрын
прикольно
Окуджава пел : "Давайте восклицать...", а вы процитировали сплина
@user-ml3pu5lo1p
3 жыл бұрын
Оказывается это стихи Окуджавы. СПЛИН спел
Система управления контентом, наверное здесь не при чем
@lumpenscl
4 жыл бұрын
Система управления версиями
Что за Лабы? Гетлаб что-ли?. Сыллку можно, я тоже пропускать не буду
в 2к19 смотрят ))