Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.

  Рет қаралды 51,899

Konstantin Vladimirov

Konstantin Vladimirov

Күн бұрын

Пікірлер: 135
@adasdadsadas604
@adasdadsadas604 Жыл бұрын
Никто не верил, но курс по С появился, Спасибо!
@napalm20005
@napalm20005 Жыл бұрын
Ахахахах, при чем, большиснтво ожидавших - зрители курса по C++)
@Rinatanski
@Rinatanski 5 ай бұрын
@@napalm20005 такой курс уже есть
@РусланКарнеенко
@РусланКарнеенко 2 күн бұрын
Действительно, очень познавательно и подача супер. Спасибо
@АндрейШевелёв-г2щ
@АндрейШевелёв-г2щ Жыл бұрын
Трехкратное "УРА" в честь выхода курса по Сям🥳🥳🥳. Огромное спасибо автору
@СергейМ-в9е
@СергейМ-в9е 7 ай бұрын
Искренняя благодарность Константину Игоревичу за великолепные лекции! Смотрю на одном дыхании.
@ЮрийМедведев-у1ш
@ЮрийМедведев-у1ш 4 ай бұрын
Отличный препод! 1. Врубается в тему. 2. Норм относится к своим ученикам. 3. Умеет донести до своих учеников знания. Спасибо! 🙏
@nmg_prm
@nmg_prm Жыл бұрын
Константин Игоревич, большое спасибо за то что делитесь знаниями, с обычными зрителями из глубинки!
@kamsikamsa
@kamsikamsa Жыл бұрын
От души!!! Я не верил, что такое может быть) но надеялся) спасибо!🎉😂
@profprogrammer9003
@profprogrammer9003 Жыл бұрын
Контента такого уровня на ютубе нет . Спасибо .
@назовименятаккакпосчитаешьнужн
@назовименятаккакпосчитаешьнужн Жыл бұрын
реально курс по C? это сон? лучший подарок на др, спасибо
@vanhelsing4214
@vanhelsing4214 Жыл бұрын
Еее! А вот и классика подъехала)
@ill4374
@ill4374 5 ай бұрын
Спасибо за то, что снимаете!
@requ1em939
@requ1em939 4 ай бұрын
Спасибо огромное за то, что выкладываете подобные семинары. Очень приятно и поучительно Вас слушать.
@mikhail_dudek
@mikhail_dudek Жыл бұрын
Константин Игоревич, спасибо, было интересно и познавательно!
@Alex_LinuxTommy
@Alex_LinuxTommy Жыл бұрын
Так мало курсов по чистому С, огромное спасибо! С первых минут видео ясно, что курс будет стоящий!
@moshamiracle
@moshamiracle Жыл бұрын
родная сишечка, как же я ждала
@makaedg
@makaedg Жыл бұрын
Я ждал этого курса все лето, ураа!!)
@user-jj7xq3lf1l
@user-jj7xq3lf1l Жыл бұрын
Безумно рад новым видео на канале! Спасибо!
@yaroslaveremenko4900
@yaroslaveremenko4900 Жыл бұрын
Круто!
@babichfx
@babichfx Жыл бұрын
Миллион тысяч лайков!
@999poll
@999poll 5 ай бұрын
Ютуб в последнее время рекомендует хорошие вещи 😮
@OstretsovArtem
@OstretsovArtem 5 ай бұрын
часто в последнее время залезаю в исходники PostgreSQL и решил все-таки почитать про C и вот тут такой полезный плейлист! спасибо автору, очень выразительно, точно и компактно излагает материал.
@alexeytrukhachev
@alexeytrukhachev 5 ай бұрын
Спасибо за курс!
@maxs4535
@maxs4535 Жыл бұрын
Ой йой йой, как здорово! Курс по С это шикарно, спасибо вам большое! Интересно, а к лекционной части будет доступ на KZbin?
@tilir
@tilir Жыл бұрын
Увы лекции читаю не я. Не знаю пишутся ли они, вероятно нет. Я рекомендую заменять лекционную часть Керниганом и Ричи. По тем вопросам которых там нет я запланировал несколько похожих на лекции допсеминаров.
@rrrrr5042
@rrrrr5042 Жыл бұрын
спасибо вам большое, пожалуйста, не останавливайтесь
@TurboGamasek228
@TurboGamasek228 5 күн бұрын
он приветствуется, а я уже многое понял
@anton_sosnitzkij
@anton_sosnitzkij 9 ай бұрын
Спасибо большое за видеозаписи с курса! 14:51 слайд 8 сначала указатель назван p, а затем используется pa
@slonbeskonechen8310
@slonbeskonechen8310 4 ай бұрын
как же не хватало подобных лекций лет 20 назад....
@tilir
@tilir 3 ай бұрын
И мне ))
@marktsyst
@marktsyst Жыл бұрын
Класс, супер лектор
@ivankorotkov2563
@ivankorotkov2563 Жыл бұрын
51:30, опечатка на слайде 29 диапазон целых знаковых типов от -2^{x-1} до 2^{x-1} - 1, а не от -(2^{x-1} -1) - т.е. отрицательных значений на одно больше чем положительных. Позже (1:21:10) кстати упоминается что инт ассиметричен. Вспомнился в какой-то книжке по ассемблеру пример кода (которым автор очень гордился), который вычислял abs за две x86 команды - изменить знак (neg) и условный переход на предыдущую команду если результат предыдущей команды отрицателен (вроде js, но могу и ошибаться за давностью лет). Разумеется на минимальных числах он зацикливался, потому что там neg всегда возвращал отрицательный результат.
@tilir
@tilir Жыл бұрын
Да всё так. Я убрал с этого слайда асимметричность целых для простоты. Но она действительно есть. У нас будет (не скоро) занятие где мы будем специально говорить о кодировках для int, float и других типов и о трюках с этими кодировками вроде быстрого приближённого логарифма и т.п.
@ode2877
@ode2877 7 ай бұрын
С таким преподом я бы точно не прогуливал пары
@ДенисКолчев-щ4с
@ДенисКолчев-щ4с Жыл бұрын
Смотреть уроки с "Базового курса по С++" не так кофортно, ибо присутствует чувство, что что-то прошло мимо тебя (но эти студенты в видео понимают о чём речь). Так что да здравствует consistency!
@hatiko8227
@hatiko8227 Жыл бұрын
Сразу же к указателям и ассертам :) Я так понял курс для тех, кто уже знаком с программированием. Интересно было послушать. Хочется еще придраться что вывод не на stderr)
@tilir
@tilir Жыл бұрын
Я пока не объяснял файловый вывод, это будет позже.
@mister-ace
@mister-ace 8 ай бұрын
Большое спасибо за то, что Вы делаете. Подскажите, пожалуйста, какие разделы математики необходимо изучить , чтобы понимать и математические кейсы в курсе?
@MisterX-hu3pt
@MisterX-hu3pt 9 ай бұрын
Спасибо.
@insane_tux
@insane_tux Жыл бұрын
Спасибо Константин за ваши видео, хотелось бы узнать все ли семинары по Практике языка С будут публиковатся на вашем канале ?
@tilir
@tilir Жыл бұрын
Надеюсь все если с продакшном справимся.
@exx-ns4tt
@exx-ns4tt 2 ай бұрын
Константин Игоревич, Вы будете где-либо дублировать семинары в случае блокировки\тотального замедления youtyb'а?
@tilir
@tilir 2 ай бұрын
У себя в тг всё написал: t.me/cpp_lects_rus/185
@BARABUMBS
@BARABUMBS 9 ай бұрын
Добрый день! Спасибо за лекции. Кажется алгоритм на 39:42 некоторые случаи не учитывает. Если b
@yaroshchenko_creative
@yaroshchenko_creative Жыл бұрын
Можно больше сделать уроков по чистому си. ANSI C, если я не потаю...
@alexanderspeshilov839
@alexanderspeshilov839 11 ай бұрын
50:00 слайд 29: диапазоны знаковых типов разве такие? Нижняя граница же -(2^n) - чётное число.
@weFromRussia
@weFromRussia Жыл бұрын
минута 51 - должно быть - начало отрицательного диапазона для int-а -(2^(x-1)) , на видео -(2^(x-1) - 1). Длина отрицательного диапазона числа равна длине положительного плюс ноль (то есть длиннее чем чисто положительного)
@tilir
@tilir Жыл бұрын
Да спасибо в комментах уже обсуждали. Пока что это сознательное упрощение. Мы дойдём до тонкостей и последствий кодировки целых и плавающих чисел довольно скоро.
@b0ryakha
@b0ryakha Жыл бұрын
Видео супер! Планируется ли в будущем курс по библиотекам c++? например как правильно работать с QT?
@kratodns9777
@kratodns9777 29 күн бұрын
А не подскажете , изучаю лекции Дербышевой Т.Н. из МФТИ, подойдут ли они к этому практикуму ?
@MikhailGoncharov-tl4cr
@MikhailGoncharov-tl4cr 5 ай бұрын
недавно просматривал семинар, стало интересно про работу на бакалавра Марка. у него канал свой есть. было бы интересно послушать что это и где применяется икак работает.
@tilir
@tilir 5 ай бұрын
Канала у Марка нет. Дипломная работа у него была по улучшению работы с индуктивностями, патч залит в LLVM, пользуется ну хм... весь мир примерно . Но я боюсь если вы не эксперт по компиляторам то читать его диплом вам будет тяжеловато.
@MVZ1983
@MVZ1983 5 ай бұрын
Переменную q в скобках for можно объявлять. Это локальная для блока for переменная, и после цикла она не действительна
@johntrucena4947
@johntrucena4947 9 ай бұрын
там в функции gcd должен не сам y возвращаться, а iabs(y) при вводе 14 -2 выдаёт -2
@alexmo6538
@alexmo6538 4 ай бұрын
Было бы вообще отлично, если бы все команды используемые для работы в VIM были записаны на отдельном слайде или в комментариях!
@tilir
@tilir 3 ай бұрын
Или в инструкции к виму? ))
@alexmo6538
@alexmo6538 3 ай бұрын
@@tilir Требовать невозможно, т.к. курс бесплатный. Просто лезть в интернет и искать инструкцию, когда засел проходить урок по видео только лишь сбивает с толку. П.С. Спасибо вам за уроки.
@MVZ1983
@MVZ1983 5 ай бұрын
Получается, что не только % ведет себя иначе, но и / По Евклиду -8 / 6 = -2 с остатком 4 По си -8 / 6 = -1 c остатком -2
@tilir
@tilir 5 ай бұрын
Вы совершенно правы ))
@urbilya1
@urbilya1 6 ай бұрын
На слайде с суффиксами констант (на ~53:30) у "abc" указан тип const char[4] вместо char[4] (мы всё-таки в C, а не в C++ :))
@tilir
@tilir 5 ай бұрын
Фактически это readonly то есть const. То что по стандарту он трактуется как char[4] это забавный бюрократический выверт, не более того.
@АндрейШерстобитов-в8д
@АндрейШерстобитов-в8д Жыл бұрын
Интересно стало, а Вы нарочно в gdb не пользуетесь словом start? Или вы хотели показать, что можно указывать имена функций при установке breakpoint?
@tilir
@tilir Жыл бұрын
Второе. Я хотел показать break. Объяснить потом что start = b main + r куда проще.
@stanislavstanislavius7618
@stanislavstanislavius7618 Жыл бұрын
Ждем ассемблер
@tilir
@tilir Жыл бұрын
Будет в этом курсе во втором семестре.
@stanislavstanislavius7618
@stanislavstanislavius7618 Жыл бұрын
@@tilir как подарок на Новый год!) Спасибо большое)
@ДенисТюльков-ш2и
@ДенисТюльков-ш2и 5 ай бұрын
Эх, Константин Игоревич. Если бы мне в своё время Вячеслав Юрьевич так же доходчиво объяснял бы специфику указателей в Си. Я, конечно, потом всё уяснил. Но так не хватало лекций подобного плана.
@tilir
@tilir 5 ай бұрын
Вячеслав Юрьевич это, если не секрет, кто?
@ДенисТюльков-ш2и
@ДенисТюльков-ш2и 2 ай бұрын
Да не суть важно. Мне бы оказаться на ваших лекциях 20 лет назад...
@antonpetrenko9176
@antonpetrenko9176 10 ай бұрын
Очень интересно и позновательно. Спасибо! Единственный негативный осадок остался от gdb. 1:02:45 не удается запустить отладчик : warning: opening /proc/PID/mem file for lwp 40.40 failed: No such file or directory (2) Cannot insert breakpoint 1. Cannot access memory at address 0x80011fa Патчи по типу echo -ne '\x90\x90' | sudo dd of=/usr/bin/gdb seek=$((0x335bad)) bs=1 count=2 conv=notrunc - так же ситуацию не решают =(
@tilir
@tilir 10 ай бұрын
Да это известная проблема. Обычно если не хочется грязных хаков помогает просто пересборка GDB github.com/microsoft/WSL/issues/8516#issuecomment-1526257546 Или ещё проще установка из PPA: github.com/microsoft/WSL/issues/8516#issuecomment-1762849202
@DART2WADER
@DART2WADER Жыл бұрын
С++ Россия: назад к базовой базе)))
@tilir
@tilir Жыл бұрын
Это не курс по C++. Мы там будем дальше уходить в ассемблер и всё такое.
@DART2WADER
@DART2WADER Жыл бұрын
@@tilir ну и хорошо. Всё равно много всякого на PIC12, PIC16 и других "убогих" камнях делается, а там кроме с90-99 ничерта нет.
@elkiaora
@elkiaora Жыл бұрын
Я правильно понимаю, что на 16:29 ошибка на доске с перенаправлением стрелки? *pa = b должно быть pa = &b, и тогда уже *pa = 3 запишет 3 в b
@tilir
@tilir Жыл бұрын
На доске для студентов было правильно, я при подготовке видео ошибся. Спасибо, добавлю в errata.
@weerbox
@weerbox Жыл бұрын
​@@tilirещё на 14:33 в коментариях фигурирует *pa == 1 и *pa == 2, хотя определялся только указатель int *p = &a;
@tilir
@tilir Жыл бұрын
@@weerbox да должно быть pa
@antonzhurba865
@antonzhurba865 Жыл бұрын
После 10 слайда возник вопрос: когда всё таки правильно использовать abort() а не тот же exit(). И можно ли давать функциям возможность закрывать программу, в даном случае я бы возвращал код ошибки в read_inputs и в main вызывал abort() на основание кода.
@tilir
@tilir Жыл бұрын
Насчёт проблем abort я буду говорить когда буду говорить о разработке библиотек. Пока что заставлять обвешиваться лапшой ифов не гуманно: это просто один бинарник, ему некому прокидывать возврат. Выбор между abort, _Exit и exit надо бы проговорить, раньше в этом курсе не было. Я подумаю куда включить, спасибо за идею.
@РоманКолтунов-п8р
@РоманКолтунов-п8р 4 ай бұрын
Здравствуйте! Домашние задания это внутренний ресурс только для студентов, или не-студентам тоже можно зарегистрироваться посмотреть?
@tilir
@tilir 4 ай бұрын
Открыто пока что для всех. Ссылка в описании.
@strtel3186
@strtel3186 11 ай бұрын
Константин Игоревич, скажите, пожалуйста, почему в функции "int gcd(int x, int y)" мы предполагаем, что второй аргумент не равен нулю? Ведь по определению: НОД(x,0) равен 0, если x
@tilir
@tilir 11 ай бұрын
Это странное определение. Если x < 0 то НОД не нулевой, например НОД(-2, -4) = 2. Случай x = 0 я вычеркиваю для простоты. Для программиста 0 это не делитель ))
@strtel3186
@strtel3186 11 ай бұрын
Хорошо, спасибо!
@АндрейШерстобитов-в8д
@АндрейШерстобитов-в8д Жыл бұрын
Константин, а какая мотивация пользоваться if & endif вместо комментария? И то и то насколько мне известно убирается препроцессором. Сам вижу возможный аргумент, что добавление/удаление комментария рушат историю в гите и засоряют блейм, а других аргументов привести не могу Спасибо за лекцию!
@tilir
@tilir Жыл бұрын
Комментарии созданы для комментирования. Для условного отключения коды созданы директивы условного отключения кода. Мы просто используем инструменты по назначению.
@ypohut1673
@ypohut1673 9 ай бұрын
Ассемблер пожалуйста❤
@Андрей-с6у6ч
@Андрей-с6у6ч 2 ай бұрын
Такой вопрос, почему вы вызываете abort() при ошибки в функции ввода вместо кода возврата? Чтобы не возвращаться в main и сразу выйти из программы?
@tilir
@tilir 2 ай бұрын
Для простоты, это всё-таки первое занятие. Педагогическая стратегия такая: на первом занятии учим детей использовать abort, потом до конца магистратуры отучаем. Те, кого удаётся отучить, становятся программистами ))
@napalm20005
@napalm20005 Жыл бұрын
А cmake будет на этом практическом курсе?
@tilir
@tilir Жыл бұрын
Будет серия допсеминаров по консоли и сборке если студенты захотят. Если проведем тоже выложу ))
@napalm20005
@napalm20005 Жыл бұрын
@@tilir Большущее спасибо, что так оперативно отвечайте на вопросы в ютубе. Я даже себе представить не могу как вы на все это находите время. Дай бог, чтобы ваши студенты захотели. Еще вопрос, в МФТИ нету заочки или онлайн курсов по С/С++?
@darkeliphant1843
@darkeliphant1843 3 ай бұрын
А контесты доступны для всех, или только для студентов? Не могу разобраться как их найти.
@tilir
@tilir 3 ай бұрын
Пока что всем доступны. Ссылка в описании. Обратите внимание: http.
@nikitamalcev4954
@nikitamalcev4954 3 ай бұрын
Кажется, что платформа проверки контестов упала, уже пару дней как "Service is not available". Это конец или временные проблемы?
@tilir
@tilir 3 ай бұрын
Я это не контролирую. Но если что всё выложено тут: github.com/tilir/c-graduate/tree/master/coursework/contests Просто без удобного интерфейса. И я на последнем семинаре как раз кинул клич: кто может помочь поднять более стабильные контесты, welcome.
@StudyAndWork-n6p
@StudyAndWork-n6p 3 ай бұрын
Подскажите, где можно найти задачи? В контесте на eJudge пишут: server is not available. Есть ли возможность как то порешать контесты?)
@tilir
@tilir 3 ай бұрын
Я это не контролирую. Но если что всё выложено тут: github.com/tilir/c-graduate/tree/master/coursework/contests Просто без удобного интерфейса. И я на последнем семинаре как раз кинул клич: кто может помочь поднять более стабильные контесты, welcome.
@alexanderkuptsov6117
@alexanderkuptsov6117 5 ай бұрын
Здравствуйте, а люди с улицы могут присоединиться к контестам? Просто 43:45 как бы намекает )
@tilir
@tilir 5 ай бұрын
Пока что да. Если их закроют я что нибудь придумаю.
@alexanderkuptsov6117
@alexanderkuptsov6117 5 ай бұрын
@@tilir Ого, ничего себе! Вы не против, если я посдаю что-нибудь?
@fedorbabkin
@fedorbabkin Жыл бұрын
Если реализовывать алгоритм Евклида для очень больших чисел, то их сначала надо как-то научиться хранить? А в C это удобно делать?
@tilir
@tilir Жыл бұрын
Есть почти стандартные решения, такие как gmp.
@dmitrii-329d
@dmitrii-329d Жыл бұрын
База
@antonzhurba865
@antonzhurba865 Жыл бұрын
На 14 слайде, утверджений a = max(n | (n/x)∧(n/y)) верно ли оно? Мы же ищем наибольший общий целый делитель что делит x и y ( max(n | (x/n)∧(y/n)) ?
@tilir
@tilir Жыл бұрын
Запись n \ x читается как "n делит x" и на 14-м слайде max(n | (n\x)∧(n\y)) слеши в другую сторону.
@АндрейПолетимов
@АндрейПолетимов 11 ай бұрын
А как несколько кусков кода не связанных друг с другом убрать из компиляции? #if 0 #endif в нескольких местах компилятору не понравилось.
@tilir
@tilir 11 ай бұрын
Сделайте минимальное вопроизведение на годболте я бы глянул.
@Str3ps1ls
@Str3ps1ls 6 ай бұрын
увы, но доступ к задачнику отсутствует... по поиску аналогично - nothing found
@tilir
@tilir 6 ай бұрын
У вас в адресной строке https скорее всего. Сделайте http.
@Str3ps1ls
@Str3ps1ls 6 ай бұрын
@@tilir спасибо большое! Все верно, теперь можно и задачи порешать 😏
@ДанилаМакляков-м4н
@ДанилаМакляков-м4н 4 ай бұрын
не подскажите как перейти к контесту, до этого начинал решать, а теперь не могу снова зайти
@tilir
@tilir 4 ай бұрын
Есть в описании видео: olymp1.vdi.mipt.ru/
@ДанилаМакляков-м4н
@ДанилаМакляков-м4н 4 ай бұрын
я понял в чем была проблема, переходя по ссылке у меня все равно открывался https, а не http, будьте внимательнее, если у кого то так же
@dimon_ksi
@dimon_ksi Жыл бұрын
Чему равен iabs() от INT_MIN ?
@tilir
@tilir Жыл бұрын
Да я упоминаю несимметриченость int. Но ещё раз -- пока рано обращать на это особое внимание. Мы пока что считаем что int это от -(2^n-1) до (2^n-1). Детали последуют в развитии курса.
@bonjovi8610
@bonjovi8610 2 ай бұрын
Какой уровень, для кого семинар?
@cuniapapa5370
@cuniapapa5370 Ай бұрын
Написано же: "Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики."
@1sheix
@1sheix 5 ай бұрын
не слышно что отвечает зал:(
@АндрейПолетимов
@АндрейПолетимов 11 ай бұрын
А почему просто тупо при поиске НОД сразу не брать числа по модулю, а проверять только на 0? Меньше гимора.
@tilir
@tilir 11 ай бұрын
Уточните пожалуйста в чём идея?
@АндрейПолетимов
@АндрейПолетимов 11 ай бұрын
@@tilir идея в том, что при поиске наибольшего общего искать НОД не для введенных значений, а от их модулей. Ведь для его поиска знак не имеет значение. Останется только проверка на 0, что можно сделать типа if(x==0|y==0) return 1
@artemfediai7206
@artemfediai7206 5 ай бұрын
Последний студент так и сделал по факту. Но там есть неприятный момент в связи с тем, что тип инт маргинально несимметричный. И тогда будет ошибка. Но ее можно избежать одной проверкой.
@ВладиславГришин-ш7ш
@ВладиславГришин-ш7ш 8 ай бұрын
откуда появилось foo ?
@wewsectos
@wewsectos 5 ай бұрын
Кто-нибудь дайте логин пасс, хочется делать дз(
@tilir
@tilir 5 ай бұрын
Регистрация открытая.
@DIY_PLC
@DIY_PLC Жыл бұрын
uint64_t красивее чем unsigned long long int
@tilir
@tilir Жыл бұрын
Пожалуйста не используйте типы с фиксированной длиной без точного обоснования их применения. Есть ситуации когда они нужны, но выбором по умолчанию должны быть обычные типы. Язык задуман и построен вокруг них.
@SeregaKai
@SeregaKai 8 ай бұрын
@@tilir В программирование под микроконтроллеры использование типов фиксированной длины довольно частая практика. Ну и кажется что для переносимости кода это тоже одно из правил.
@linuxgik-ru
@linuxgik-ru 3 ай бұрын
Прошу, произведите переезд на rutube. Да сдохнет ютуб!!!!!
@tilir
@tilir 3 ай бұрын
Вообще то мой канал есть на рутубе. Увы меня там не смотрят. Тот же самый бакалаврский курс который здесь набирает 100к там набирает типа 200 просмотров всего.
My Daughter's Dumplings Are Filled With Coins #funny #cute #comedy
00:18
Funny daughter's daily life
Рет қаралды 29 МЛН
Officer Rabbit is so bad. He made Luffy deaf. #funny #supersiblings #comedy
00:18
Funny superhero siblings
Рет қаралды 19 МЛН