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

  Рет қаралды 54,957

Konstantin Vladimirov

Konstantin Vladimirov

Күн бұрын

Пікірлер: 135
@adasdadsadas604
@adasdadsadas604 Жыл бұрын
Никто не верил, но курс по С появился, Спасибо!
@napalm20005
@napalm20005 Жыл бұрын
Ахахахах, при чем, большиснтво ожидавших - зрители курса по C++)
@Rinatanski
@Rinatanski 6 ай бұрын
@@napalm20005 такой курс уже есть
@СергейМ-в9е
@СергейМ-в9е 8 ай бұрын
Искренняя благодарность Константину Игоревичу за великолепные лекции! Смотрю на одном дыхании.
@АндрейШевелёв-г2щ
@АндрейШевелёв-г2щ Жыл бұрын
Трехкратное "УРА" в честь выхода курса по Сям🥳🥳🥳. Огромное спасибо автору
@ЮрийМедведев-у1ш
@ЮрийМедведев-у1ш 5 ай бұрын
Отличный препод! 1. Врубается в тему. 2. Норм относится к своим ученикам. 3. Умеет донести до своих учеников знания. Спасибо! 🙏
@nmg_prm
@nmg_prm Жыл бұрын
Константин Игоревич, большое спасибо за то что делитесь знаниями, с обычными зрителями из глубинки!
@requ1em939
@requ1em939 5 ай бұрын
Спасибо огромное за то, что выкладываете подобные семинары. Очень приятно и поучительно Вас слушать.
@kamsikamsa
@kamsikamsa Жыл бұрын
От души!!! Я не верил, что такое может быть) но надеялся) спасибо!🎉😂
@profprogrammer9003
@profprogrammer9003 Жыл бұрын
Контента такого уровня на ютубе нет . Спасибо .
@TurboGamasek228
@TurboGamasek228 Ай бұрын
он приветствуется, а я уже многое понял
@Alex_LinuxTommy
@Alex_LinuxTommy Жыл бұрын
Так мало курсов по чистому С, огромное спасибо! С первых минут видео ясно, что курс будет стоящий!
@РусланКарнеенко
@РусланКарнеенко Ай бұрын
Действительно, очень познавательно и подача супер. Спасибо
@mikhail_dudek
@mikhail_dudek Жыл бұрын
Константин Игоревич, спасибо, было интересно и познавательно!
@ill4374
@ill4374 7 ай бұрын
Спасибо за то, что снимаете!
@makaedg
@makaedg Жыл бұрын
Я ждал этого курса все лето, ураа!!)
@назовименятаккакпосчитаешьнужн
@назовименятаккакпосчитаешьнужн Жыл бұрын
реально курс по C? это сон? лучший подарок на др, спасибо
@user-jj7xq3lf1l
@user-jj7xq3lf1l Жыл бұрын
Безумно рад новым видео на канале! Спасибо!
@vanhelsing4214
@vanhelsing4214 Жыл бұрын
Еее! А вот и классика подъехала)
@moshamiracle
@moshamiracle Жыл бұрын
родная сишечка, как же я ждала
@anton_sosnitzkij
@anton_sosnitzkij 10 ай бұрын
Спасибо большое за видеозаписи с курса! 14:51 слайд 8 сначала указатель назван p, а затем используется pa
@rrrrr5042
@rrrrr5042 Жыл бұрын
спасибо вам большое, пожалуйста, не останавливайтесь
@yaroslaveremenko4900
@yaroslaveremenko4900 Жыл бұрын
Круто!
@babichfx
@babichfx Жыл бұрын
Миллион тысяч лайков!
@OstretsovArtem
@OstretsovArtem 6 ай бұрын
часто в последнее время залезаю в исходники PostgreSQL и решил все-таки почитать про C и вот тут такой полезный плейлист! спасибо автору, очень выразительно, точно и компактно излагает материал.
@999poll
@999poll 7 ай бұрын
Ютуб в последнее время рекомендует хорошие вещи 😮
@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 и других типов и о трюках с этими кодировками вроде быстрого приближённого логарифма и т.п.
@alexeytrukhachev
@alexeytrukhachev 6 ай бұрын
Спасибо за курс!
@slonbeskonechen8310
@slonbeskonechen8310 6 ай бұрын
как же не хватало подобных лекций лет 20 назад....
@tilir
@tilir 4 ай бұрын
И мне ))
@marktsyst
@marktsyst Жыл бұрын
Класс, супер лектор
@ode2877
@ode2877 8 ай бұрын
С таким преподом я бы точно не прогуливал пары
@hatiko8227
@hatiko8227 Жыл бұрын
Сразу же к указателям и ассертам :) Я так понял курс для тех, кто уже знаком с программированием. Интересно было послушать. Хочется еще придраться что вывод не на stderr)
@tilir
@tilir Жыл бұрын
Я пока не объяснял файловый вывод, это будет позже.
@ДенисКолчев-щ4с
@ДенисКолчев-щ4с Жыл бұрын
Смотреть уроки с "Базового курса по С++" не так кофортно, ибо присутствует чувство, что что-то прошло мимо тебя (но эти студенты в видео понимают о чём речь). Так что да здравствует consistency!
@MisterX-hu3pt
@MisterX-hu3pt 10 ай бұрын
Спасибо.
@maxs4535
@maxs4535 Жыл бұрын
Ой йой йой, как здорово! Курс по С это шикарно, спасибо вам большое! Интересно, а к лекционной части будет доступ на KZbin?
@tilir
@tilir Жыл бұрын
Увы лекции читаю не я. Не знаю пишутся ли они, вероятно нет. Я рекомендую заменять лекционную часть Керниганом и Ричи. По тем вопросам которых там нет я запланировал несколько похожих на лекции допсеминаров.
@weFromRussia
@weFromRussia Жыл бұрын
минута 51 - должно быть - начало отрицательного диапазона для int-а -(2^(x-1)) , на видео -(2^(x-1) - 1). Длина отрицательного диапазона числа равна длине положительного плюс ноль (то есть длиннее чем чисто положительного)
@tilir
@tilir Жыл бұрын
Да спасибо в комментах уже обсуждали. Пока что это сознательное упрощение. Мы дойдём до тонкостей и последствий кодировки целых и плавающих чисел довольно скоро.
@alexanderspeshilov839
@alexanderspeshilov839 Жыл бұрын
50:00 слайд 29: диапазоны знаковых типов разве такие? Нижняя граница же -(2^n) - чётное число.
@BARABUMBS
@BARABUMBS 10 ай бұрын
Добрый день! Спасибо за лекции. Кажется алгоритм на 39:42 некоторые случаи не учитывает. Если b
@MVZ1983
@MVZ1983 7 ай бұрын
Переменную q в скобках for можно объявлять. Это локальная для блока for переменная, и после цикла она не действительна
@mister-ace
@mister-ace 9 ай бұрын
Большое спасибо за то, что Вы делаете. Подскажите, пожалуйста, какие разделы математики необходимо изучить , чтобы понимать и математические кейсы в курсе?
@yaroshchenko_creative
@yaroshchenko_creative Жыл бұрын
Можно больше сделать уроков по чистому си. ANSI C, если я не потаю...
@exx-ns4tt
@exx-ns4tt 3 ай бұрын
Константин Игоревич, Вы будете где-либо дублировать семинары в случае блокировки\тотального замедления youtyb'а?
@tilir
@tilir 3 ай бұрын
У себя в тг всё написал: t.me/cpp_lects_rus/185
@insane_tux
@insane_tux Жыл бұрын
Спасибо Константин за ваши видео, хотелось бы узнать все ли семинары по Практике языка С будут публиковатся на вашем канале ?
@tilir
@tilir Жыл бұрын
Надеюсь все если с продакшном справимся.
@ДенисТюльков-ш2и
@ДенисТюльков-ш2и 7 ай бұрын
Эх, Константин Игоревич. Если бы мне в своё время Вячеслав Юрьевич так же доходчиво объяснял бы специфику указателей в Си. Я, конечно, потом всё уяснил. Но так не хватало лекций подобного плана.
@tilir
@tilir 7 ай бұрын
Вячеслав Юрьевич это, если не секрет, кто?
@ДенисТюльков-ш2и
@ДенисТюльков-ш2и 3 ай бұрын
Да не суть важно. Мне бы оказаться на ваших лекциях 20 лет назад...
@johntrucena4947
@johntrucena4947 10 ай бұрын
там в функции gcd должен не сам y возвращаться, а iabs(y) при вводе 14 -2 выдаёт -2
@MikhailGoncharov-tl4cr
@MikhailGoncharov-tl4cr 6 ай бұрын
недавно просматривал семинар, стало интересно про работу на бакалавра Марка. у него канал свой есть. было бы интересно послушать что это и где применяется икак работает.
@tilir
@tilir 6 ай бұрын
Канала у Марка нет. Дипломная работа у него была по улучшению работы с индуктивностями, патч залит в LLVM, пользуется ну хм... весь мир примерно . Но я боюсь если вы не эксперт по компиляторам то читать его диплом вам будет тяжеловато.
@kratodns9777
@kratodns9777 2 ай бұрын
А не подскажете , изучаю лекции Дербышевой Т.Н. из МФТИ, подойдут ли они к этому практикуму ?
@urbilya1
@urbilya1 7 ай бұрын
На слайде с суффиксами констант (на ~53:30) у "abc" указан тип const char[4] вместо char[4] (мы всё-таки в C, а не в C++ :))
@tilir
@tilir 7 ай бұрын
Фактически это readonly то есть const. То что по стандарту он трактуется как char[4] это забавный бюрократический выверт, не более того.
@antonpetrenko9176
@antonpetrenko9176 11 ай бұрын
Очень интересно и позновательно. Спасибо! Единственный негативный осадок остался от 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 11 ай бұрын
Да это известная проблема. Обычно если не хочется грязных хаков помогает просто пересборка GDB github.com/microsoft/WSL/issues/8516#issuecomment-1526257546 Или ещё проще установка из PPA: github.com/microsoft/WSL/issues/8516#issuecomment-1762849202
@alexmo6538
@alexmo6538 6 ай бұрын
Было бы вообще отлично, если бы все команды используемые для работы в VIM были записаны на отдельном слайде или в комментариях!
@tilir
@tilir 4 ай бұрын
Или в инструкции к виму? ))
@alexmo6538
@alexmo6538 4 ай бұрын
@@tilir Требовать невозможно, т.к. курс бесплатный. Просто лезть в интернет и искать инструкцию, когда засел проходить урок по видео только лишь сбивает с толку. П.С. Спасибо вам за уроки.
@antonzhurba865
@antonzhurba865 Жыл бұрын
После 10 слайда возник вопрос: когда всё таки правильно использовать abort() а не тот же exit(). И можно ли давать функциям возможность закрывать программу, в даном случае я бы возвращал код ошибки в read_inputs и в main вызывал abort() на основание кода.
@tilir
@tilir Жыл бұрын
Насчёт проблем abort я буду говорить когда буду говорить о разработке библиотек. Пока что заставлять обвешиваться лапшой ифов не гуманно: это просто один бинарник, ему некому прокидывать возврат. Выбор между abort, _Exit и exit надо бы проговорить, раньше в этом курсе не было. Я подумаю куда включить, спасибо за идею.
@DART2WADER
@DART2WADER Жыл бұрын
С++ Россия: назад к базовой базе)))
@tilir
@tilir Жыл бұрын
Это не курс по C++. Мы там будем дальше уходить в ассемблер и всё такое.
@DART2WADER
@DART2WADER Жыл бұрын
@@tilir ну и хорошо. Всё равно много всякого на PIC12, PIC16 и других "убогих" камнях делается, а там кроме с90-99 ничерта нет.
@stanislavstanislavius7618
@stanislavstanislavius7618 Жыл бұрын
Ждем ассемблер
@tilir
@tilir Жыл бұрын
Будет в этом курсе во втором семестре.
@stanislavstanislavius7618
@stanislavstanislavius7618 Жыл бұрын
@@tilir как подарок на Новый год!) Спасибо большое)
@b0ryakha
@b0ryakha Жыл бұрын
Видео супер! Планируется ли в будущем курс по библиотекам c++? например как правильно работать с QT?
@MVZ1983
@MVZ1983 7 ай бұрын
Получается, что не только % ведет себя иначе, но и / По Евклиду -8 / 6 = -2 с остатком 4 По си -8 / 6 = -1 c остатком -2
@tilir
@tilir 7 ай бұрын
Вы совершенно правы ))
@АндрейШерстобитов-в8д
@АндрейШерстобитов-в8д Жыл бұрын
Интересно стало, а Вы нарочно в gdb не пользуетесь словом start? Или вы хотели показать, что можно указывать имена функций при установке breakpoint?
@tilir
@tilir Жыл бұрын
Второе. Я хотел показать break. Объяснить потом что start = b main + r куда проще.
@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
@ypohut1673
@ypohut1673 10 ай бұрын
Ассемблер пожалуйста❤
@strtel3186
@strtel3186 Жыл бұрын
Константин Игоревич, скажите, пожалуйста, почему в функции "int gcd(int x, int y)" мы предполагаем, что второй аргумент не равен нулю? Ведь по определению: НОД(x,0) равен 0, если x
@tilir
@tilir Жыл бұрын
Это странное определение. Если x < 0 то НОД не нулевой, например НОД(-2, -4) = 2. Случай x = 0 я вычеркиваю для простоты. Для программиста 0 это не делитель ))
@strtel3186
@strtel3186 Жыл бұрын
Хорошо, спасибо!
@mychannel-m5e
@mychannel-m5e 5 ай бұрын
Здравствуйте! Домашние задания это внутренний ресурс только для студентов, или не-студентам тоже можно зарегистрироваться посмотреть?
@tilir
@tilir 5 ай бұрын
Открыто пока что для всех. Ссылка в описании.
@Андрей-с6у6ч
@Андрей-с6у6ч 4 ай бұрын
Такой вопрос, почему вы вызываете abort() при ошибки в функции ввода вместо кода возврата? Чтобы не возвращаться в main и сразу выйти из программы?
@tilir
@tilir 4 ай бұрын
Для простоты, это всё-таки первое занятие. Педагогическая стратегия такая: на первом занятии учим детей использовать abort, потом до конца магистратуры отучаем. Те, кого удаётся отучить, становятся программистами ))
@dmitrii-329d
@dmitrii-329d Жыл бұрын
База
@napalm20005
@napalm20005 Жыл бұрын
А cmake будет на этом практическом курсе?
@tilir
@tilir Жыл бұрын
Будет серия допсеминаров по консоли и сборке если студенты захотят. Если проведем тоже выложу ))
@napalm20005
@napalm20005 Жыл бұрын
@@tilir Большущее спасибо, что так оперативно отвечайте на вопросы в ютубе. Я даже себе представить не могу как вы на все это находите время. Дай бог, чтобы ваши студенты захотели. Еще вопрос, в МФТИ нету заочки или онлайн курсов по С/С++?
@darkeliphant1843
@darkeliphant1843 4 ай бұрын
А контесты доступны для всех, или только для студентов? Не могу разобраться как их найти.
@tilir
@tilir 4 ай бұрын
Пока что всем доступны. Ссылка в описании. Обратите внимание: http.
@АндрейШерстобитов-в8д
@АндрейШерстобитов-в8д Жыл бұрын
Константин, а какая мотивация пользоваться if & endif вместо комментария? И то и то насколько мне известно убирается препроцессором. Сам вижу возможный аргумент, что добавление/удаление комментария рушат историю в гите и засоряют блейм, а других аргументов привести не могу Спасибо за лекцию!
@tilir
@tilir Жыл бұрын
Комментарии созданы для комментирования. Для условного отключения коды созданы директивы условного отключения кода. Мы просто используем инструменты по назначению.
@fedorbabkin
@fedorbabkin Жыл бұрын
Если реализовывать алгоритм Евклида для очень больших чисел, то их сначала надо как-то научиться хранить? А в C это удобно делать?
@tilir
@tilir Жыл бұрын
Есть почти стандартные решения, такие как gmp.
@alexanderkuptsov6117
@alexanderkuptsov6117 6 ай бұрын
Здравствуйте, а люди с улицы могут присоединиться к контестам? Просто 43:45 как бы намекает )
@tilir
@tilir 6 ай бұрын
Пока что да. Если их закроют я что нибудь придумаю.
@alexanderkuptsov6117
@alexanderkuptsov6117 6 ай бұрын
@@tilir Ого, ничего себе! Вы не против, если я посдаю что-нибудь?
@nikitamalcev4954
@nikitamalcev4954 4 ай бұрын
Кажется, что платформа проверки контестов упала, уже пару дней как "Service is not available". Это конец или временные проблемы?
@tilir
@tilir 4 ай бұрын
Я это не контролирую. Но если что всё выложено тут: github.com/tilir/c-graduate/tree/master/coursework/contests Просто без удобного интерфейса. И я на последнем семинаре как раз кинул клич: кто может помочь поднять более стабильные контесты, welcome.
@StudyAndWork-n6p
@StudyAndWork-n6p 4 ай бұрын
Подскажите, где можно найти задачи? В контесте на eJudge пишут: server is not available. Есть ли возможность как то порешать контесты?)
@tilir
@tilir 4 ай бұрын
Я это не контролирую. Но если что всё выложено тут: github.com/tilir/c-graduate/tree/master/coursework/contests Просто без удобного интерфейса. И я на последнем семинаре как раз кинул клич: кто может помочь поднять более стабильные контесты, welcome.
@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)) слеши в другую сторону.
@АндрейПолетимов
@АндрейПолетимов Жыл бұрын
А как несколько кусков кода не связанных друг с другом убрать из компиляции? #if 0 #endif в нескольких местах компилятору не понравилось.
@tilir
@tilir Жыл бұрын
Сделайте минимальное вопроизведение на годболте я бы глянул.
@dimon_ksi
@dimon_ksi Жыл бұрын
Чему равен iabs() от INT_MIN ?
@tilir
@tilir Жыл бұрын
Да я упоминаю несимметриченость int. Но ещё раз -- пока рано обращать на это особое внимание. Мы пока что считаем что int это от -(2^n-1) до (2^n-1). Детали последуют в развитии курса.
@ДанилаМакляков-м4н
@ДанилаМакляков-м4н 5 ай бұрын
не подскажите как перейти к контесту, до этого начинал решать, а теперь не могу снова зайти
@tilir
@tilir 5 ай бұрын
Есть в описании видео: olymp1.vdi.mipt.ru/
@ДанилаМакляков-м4н
@ДанилаМакляков-м4н 5 ай бұрын
я понял в чем была проблема, переходя по ссылке у меня все равно открывался https, а не http, будьте внимательнее, если у кого то так же
@1sheix
@1sheix 7 ай бұрын
не слышно что отвечает зал:(
@bonjovi8610
@bonjovi8610 3 ай бұрын
Какой уровень, для кого семинар?
@cuniapapa5370
@cuniapapa5370 2 ай бұрын
Написано же: "Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики."
@Str3ps1ls
@Str3ps1ls 7 ай бұрын
увы, но доступ к задачнику отсутствует... по поиску аналогично - nothing found
@tilir
@tilir 7 ай бұрын
У вас в адресной строке https скорее всего. Сделайте http.
@Str3ps1ls
@Str3ps1ls 7 ай бұрын
@@tilir спасибо большое! Все верно, теперь можно и задачи порешать 😏
@ВладиславГришин-ш7ш
@ВладиславГришин-ш7ш 9 ай бұрын
откуда появилось foo ?
@wewsectos
@wewsectos 7 ай бұрын
Кто-нибудь дайте логин пасс, хочется делать дз(
@tilir
@tilir 7 ай бұрын
Регистрация открытая.
@DIY_PLC
@DIY_PLC Жыл бұрын
uint64_t красивее чем unsigned long long int
@tilir
@tilir Жыл бұрын
Пожалуйста не используйте типы с фиксированной длиной без точного обоснования их применения. Есть ситуации когда они нужны, но выбором по умолчанию должны быть обычные типы. Язык задуман и построен вокруг них.
@SeregaKai
@SeregaKai 10 ай бұрын
@@tilir В программирование под микроконтроллеры использование типов фиксированной длины довольно частая практика. Ну и кажется что для переносимости кода это тоже одно из правил.
@АндрейПолетимов
@АндрейПолетимов Жыл бұрын
А почему просто тупо при поиске НОД сразу не брать числа по модулю, а проверять только на 0? Меньше гимора.
@tilir
@tilir Жыл бұрын
Уточните пожалуйста в чём идея?
@АндрейПолетимов
@АндрейПолетимов Жыл бұрын
@@tilir идея в том, что при поиске наибольшего общего искать НОД не для введенных значений, а от их модулей. Ведь для его поиска знак не имеет значение. Останется только проверка на 0, что можно сделать типа if(x==0|y==0) return 1
@artemfediai7206
@artemfediai7206 7 ай бұрын
Последний студент так и сделал по факту. Но там есть неприятный момент в связи с тем, что тип инт маргинально несимметричный. И тогда будет ошибка. Но ее можно избежать одной проверкой.
@linuxgik-ru
@linuxgik-ru 4 ай бұрын
Прошу, произведите переезд на rutube. Да сдохнет ютуб!!!!!
@tilir
@tilir 4 ай бұрын
Вообще то мой канал есть на рутубе. Увы меня там не смотрят. Тот же самый бакалаврский курс который здесь набирает 100к там набирает типа 200 просмотров всего.
جبر  الخواطر علي الله☝️🤍
1:01
كابتن جيمي
Рет қаралды 27 М.
Миллионер | 3 - серия
36:09
Million Show
Рет қаралды 2 МЛН
風船をキャッチしろ!🎈 Balloon catch Challenges
00:57
はじめしゃちょー(hajime)
Рет қаралды 89 МЛН
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 5 МЛН
Зачем нужны указатели в C++?
8:14
С++ для начинающих
Рет қаралды 14 М.
07.02. Configuration, options and command line
1:27:53
Mihail Romanov
Рет қаралды 89
Миллионер | 3 - серия
36:09
Million Show
Рет қаралды 2 МЛН