Ахахахах, при чем, большиснтво ожидавших - зрители курса по C++)
@Rinatanski8 ай бұрын
@@napalm20005 такой курс уже есть
@СергейМ-в9е10 ай бұрын
Искренняя благодарность Константину Игоревичу за великолепные лекции! Смотрю на одном дыхании.
@АндрейШевелёв-г2щ Жыл бұрын
Трехкратное "УРА" в честь выхода курса по Сям🥳🥳🥳. Огромное спасибо автору
@ЮрийМедведев-у1ш8 ай бұрын
Отличный препод! 1. Врубается в тему. 2. Норм относится к своим ученикам. 3. Умеет донести до своих учеников знания. Спасибо! 🙏
@nmg_prm Жыл бұрын
Константин Игоревич, большое спасибо за то что делитесь знаниями, с обычными зрителями из глубинки!
@Alex_LinuxTommy Жыл бұрын
Так мало курсов по чистому С, огромное спасибо! С первых минут видео ясно, что курс будет стоящий!
@ill43749 ай бұрын
Спасибо за то, что снимаете!
@profprogrammer9003 Жыл бұрын
Контента такого уровня на ютубе нет . Спасибо .
@kamsikamsa Жыл бұрын
От души!!! Я не верил, что такое может быть) но надеялся) спасибо!🎉😂
@mikhail_dudek Жыл бұрын
Константин Игоревич, спасибо, было интересно и познавательно!
@requ1em9398 ай бұрын
Спасибо огромное за то, что выкладываете подобные семинары. Очень приятно и поучительно Вас слушать.
@makaedg Жыл бұрын
Я ждал этого курса все лето, ураа!!)
@SlavaVy0Ай бұрын
Константину больше спасибо, это очень интересный алгоритм Евклида, когда сначала пеберм два числа, получаем 3е (например справа), делаем сдвиг и повторяем, когда визуализируешь этот алгос - очень интересно. Вообще такие лекции, от разработчика такого уровня на русском языке - это прям национальное достояние, без шуток.
@user-jj7xq3lf1l Жыл бұрын
Безумно рад новым видео на канале! Спасибо!
@rrrrr5042 Жыл бұрын
спасибо вам большое, пожалуйста, не останавливайтесь
@honeycatcher95657 күн бұрын
Топовый преподаватель!
@назовименятаккакпосчитаешьнужн Жыл бұрын
реально курс по C? это сон? лучший подарок на др, спасибо
@BublerkinАй бұрын
Отдельное уважение за использование светлой темы в Vim. После 2010 года среди юных маминых кодеров пошла мода на эти ужасные тёмные темы 😵💫
@vacsaАй бұрын
темные берут потому что глаза горят от белого фона
@BublerkinАй бұрын
@@vacsa Значит, в комнате плохое освещение. Как у девочки с ютуба, которая свой 3d-движок пишет - сидит в потёмках как сыч 😆А люстра должна быть ярче, чем монитор, и будет всё хоккей.
@anatagenki2056Ай бұрын
Главное чтобы код человек писал хороший, а это - дело вкуса
@РусланКарнеенко3 ай бұрын
Действительно, очень познавательно и подача супер. Спасибо
@anton_sosnitzkij Жыл бұрын
Спасибо большое за видеозаписи с курса! 14:51 слайд 8 сначала указатель назван p, а затем используется pa
@vanhelsing4214 Жыл бұрын
Еее! А вот и классика подъехала)
@moshamiracle Жыл бұрын
родная сишечка, как же я ждала
@flow7f Жыл бұрын
51:30, опечатка на слайде 29 диапазон целых знаковых типов от -2^{x-1} до 2^{x-1} - 1, а не от -(2^{x-1} -1) - т.е. отрицательных значений на одно больше чем положительных. Позже (1:21:10) кстати упоминается что инт ассиметричен. Вспомнился в какой-то книжке по ассемблеру пример кода (которым автор очень гордился), который вычислял abs за две x86 команды - изменить знак (neg) и условный переход на предыдущую команду если результат предыдущей команды отрицателен (вроде js, но могу и ошибаться за давностью лет). Разумеется на минимальных числах он зацикливался, потому что там neg всегда возвращал отрицательный результат.
@tilir Жыл бұрын
Да всё так. Я убрал с этого слайда асимметричность целых для простоты. Но она действительно есть. У нас будет (не скоро) занятие где мы будем специально говорить о кодировках для int, float и других типов и о трюках с этими кодировками вроде быстрого приближённого логарифма и т.п.
@OstretsovArtem9 ай бұрын
часто в последнее время залезаю в исходники PostgreSQL и решил все-таки почитать про C и вот тут такой полезный плейлист! спасибо автору, очень выразительно, точно и компактно излагает материал.
@yaroslaveremenko4900 Жыл бұрын
Круто!
@alexeytrukhachev8 ай бұрын
Спасибо за курс!
@999poll9 ай бұрын
Ютуб в последнее время рекомендует хорошие вещи 😮
@marktsyst Жыл бұрын
Класс, супер лектор
@babichfx Жыл бұрын
Миллион тысяч лайков!
@hatiko8227 Жыл бұрын
Сразу же к указателям и ассертам :) Я так понял курс для тех, кто уже знаком с программированием. Интересно было послушать. Хочется еще придраться что вывод не на stderr)
@tilir Жыл бұрын
Я пока не объяснял файловый вывод, это будет позже.
@Evedol-Race2 ай бұрын
Очень круто) даже порешал контест на 97 балов:)
@slonbeskonechen83108 ай бұрын
как же не хватало подобных лекций лет 20 назад....
@tilir6 ай бұрын
И мне ))
@alexanderspeshilov839 Жыл бұрын
50:00 слайд 29: диапазоны знаковых типов разве такие? Нижняя граница же -(2^n) - чётное число.
@TurboGamasek2283 ай бұрын
он приветствуется, а я уже многое понял
@BARABUMBS Жыл бұрын
Добрый день! Спасибо за лекции. Кажется алгоритм на 39:42 некоторые случаи не учитывает. Если b
@maxs4535 Жыл бұрын
Ой йой йой, как здорово! Курс по С это шикарно, спасибо вам большое! Интересно, а к лекционной части будет доступ на KZbin?
@tilir Жыл бұрын
Увы лекции читаю не я. Не знаю пишутся ли они, вероятно нет. Я рекомендую заменять лекционную часть Керниганом и Ричи. По тем вопросам которых там нет я запланировал несколько похожих на лекции допсеминаров.
@MisterX-hu3pt Жыл бұрын
Спасибо.
@ДенисКолчев-щ4с Жыл бұрын
Смотреть уроки с "Базового курса по С++" не так кофортно, ибо присутствует чувство, что что-то прошло мимо тебя (но эти студенты в видео понимают о чём речь). Так что да здравствует consistency!
@ode287710 ай бұрын
С таким преподом я бы точно не прогуливал пары
@mister-ace Жыл бұрын
Большое спасибо за то, что Вы делаете. Подскажите, пожалуйста, какие разделы математики необходимо изучить , чтобы понимать и математические кейсы в курсе?
@exx-ns4tt5 ай бұрын
Константин Игоревич, Вы будете где-либо дублировать семинары в случае блокировки\тотального замедления youtyb'а?
@tilir5 ай бұрын
У себя в тг всё написал: t.me/cpp_lects_rus/185
@yaroshchenko_creative Жыл бұрын
Можно больше сделать уроков по чистому си. ANSI C, если я не потаю...
@f9ka975Ай бұрын
Благодарю за видео , но у меня возник вопрос , почему нам просто изначально не взять абсолютные значения чисел и не найти для них нод? 39:18
@tilirАй бұрын
Потеряете знак.
@urbilya19 ай бұрын
На слайде с суффиксами констант (на ~53:30) у "abc" указан тип const char[4] вместо char[4] (мы всё-таки в C, а не в C++ :))
@tilir9 ай бұрын
Фактически это readonly то есть const. То что по стандарту он трактуется как char[4] это забавный бюрократический выверт, не более того.
@elkiaora Жыл бұрын
Я правильно понимаю, что на 16:29 ошибка на доске с перенаправлением стрелки? *pa = b должно быть pa = &b, и тогда уже *pa = 3 запишет 3 в b
@tilir Жыл бұрын
На доске для студентов было правильно, я при подготовке видео ошибся. Спасибо, добавлю в errata.
@playskin Жыл бұрын
@@tilirещё на 14:33 в коментариях фигурирует *pa == 1 и *pa == 2, хотя определялся только указатель int *p = &a;
@tilir Жыл бұрын
@@playskin да должно быть pa
@anatoly_endeavour10 сағат бұрын
похоже, вы решили сразу на 14ой минуте отсеять зерна от плевел, взявшись за указатели
@weFromRussia Жыл бұрын
минута 51 - должно быть - начало отрицательного диапазона для int-а -(2^(x-1)) , на видео -(2^(x-1) - 1). Длина отрицательного диапазона числа равна длине положительного плюс ноль (то есть длиннее чем чисто положительного)
@tilir Жыл бұрын
Да спасибо в комментах уже обсуждали. Пока что это сознательное упрощение. Мы дойдём до тонкостей и последствий кодировки целых и плавающих чисел довольно скоро.
@johntrucena4947 Жыл бұрын
там в функции gcd должен не сам y возвращаться, а iabs(y) при вводе 14 -2 выдаёт -2
@MVZ19839 ай бұрын
Переменную q в скобках for можно объявлять. Это локальная для блока for переменная, и после цикла она не действительна
@insane_tux Жыл бұрын
Спасибо Константин за ваши видео, хотелось бы узнать все ли семинары по Практике языка С будут публиковатся на вашем канале ?
@tilir Жыл бұрын
Надеюсь все если с продакшном справимся.
@user-apostataАй бұрын
Добрый день. Может я чего то то не дочитал, или не так понял. Прошу пояснить, контест Problem RL. нам дают рекурсию (я так понимаю с корректным кодом), и надо её превратить в цикл. В исходном коде используется unsigned long long, НО на вход тест подаёт отрицательное значение. т.е. верным становится решение long long. Спасибо, что тест сообщает при каких значениях мы получили WA.
@tilirАй бұрын
Изначально это было ошибка (я неправильно записал программу в условии). Но мне так понравился педагогический эффект этой ошибки, когда студент с первым же заданием понимает, что информация, которая ему сообщена может быть неполна или неверна и рассчитывать надо только на фидбек от конкретных тестов, что я решил так всё и оставить.
@АндрейШерстобитов-в8д Жыл бұрын
Интересно стало, а Вы нарочно в gdb не пользуетесь словом start? Или вы хотели показать, что можно указывать имена функций при установке breakpoint?
@tilir Жыл бұрын
Второе. Я хотел показать break. Объяснить потом что start = b main + r куда проще.
@antonzhurba865 Жыл бұрын
После 10 слайда возник вопрос: когда всё таки правильно использовать abort() а не тот же exit(). И можно ли давать функциям возможность закрывать программу, в даном случае я бы возвращал код ошибки в read_inputs и в main вызывал abort() на основание кода.
@tilir Жыл бұрын
Насчёт проблем abort я буду говорить когда буду говорить о разработке библиотек. Пока что заставлять обвешиваться лапшой ифов не гуманно: это просто один бинарник, ему некому прокидывать возврат. Выбор между abort, _Exit и exit надо бы проговорить, раньше в этом курсе не было. Я подумаю куда включить, спасибо за идею.
@antonpetrenko9176 Жыл бұрын
Очень интересно и позновательно. Спасибо! Единственный негативный осадок остался от 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 Жыл бұрын
Да это известная проблема. Обычно если не хочется грязных хаков помогает просто пересборка GDB github.com/microsoft/WSL/issues/8516#issuecomment-1526257546 Или ещё проще установка из PPA: github.com/microsoft/WSL/issues/8516#issuecomment-1762849202
@holl_tv293Ай бұрын
полез углюбится в С++ но пришлось учить заново С
@MVZ19839 ай бұрын
Получается, что не только % ведет себя иначе, но и / По Евклиду -8 / 6 = -2 с остатком 4 По си -8 / 6 = -1 c остатком -2
@tilir9 ай бұрын
Вы совершенно правы ))
@alexanderkuptsov61179 ай бұрын
Здравствуйте, а люди с улицы могут присоединиться к контестам? Просто 43:45 как бы намекает )
@tilir9 ай бұрын
Пока что да. Если их закроют я что нибудь придумаю.
@alexanderkuptsov61179 ай бұрын
@@tilir Ого, ничего себе! Вы не против, если я посдаю что-нибудь?
@hatiko8227Ай бұрын
Нашел вот такой комментарий на стак оверфлоу, видимо когда b == INT_MIN и мы берем его со знаком минус, то оно становится положительным, а положительных чисел на 1 меньше чем отрицательных, т.к. ноль считается положительным, но вот во втором примере не могу понять почему UB нет. int modulo_Euclidean(int a, int b) { int m = a % b; if (m < 0) { // m += (b < 0) ? -b : b; // avoid this form: it is UB when b == INT_MIN m = (b < 0) ? m - b : m + b; } return m; }
@tilirАй бұрын
На этом занятии ещё не вводится понятие ub, оно будет куда дальше по курсу. Мы ещё не говорили о представлениях целых чисел, это будет ещё дальше. А вы необоснованно умничаете.
@MikhailGoncharov-tl4cr9 ай бұрын
недавно просматривал семинар, стало интересно про работу на бакалавра Марка. у него канал свой есть. было бы интересно послушать что это и где применяется икак работает.
@tilir9 ай бұрын
Канала у Марка нет. Дипломная работа у него была по улучшению работы с индуктивностями, патч залит в LLVM, пользуется ну хм... весь мир примерно . Но я боюсь если вы не эксперт по компиляторам то читать его диплом вам будет тяжеловато.
@strtel3186 Жыл бұрын
Константин Игоревич, скажите, пожалуйста, почему в функции "int gcd(int x, int y)" мы предполагаем, что второй аргумент не равен нулю? Ведь по определению: НОД(x,0) равен 0, если x
@tilir Жыл бұрын
Это странное определение. Если x < 0 то НОД не нулевой, например НОД(-2, -4) = 2. Случай x = 0 я вычеркиваю для простоты. Для программиста 0 это не делитель ))
@strtel3186 Жыл бұрын
Хорошо, спасибо!
@АндрейШерстобитов-в8д Жыл бұрын
Константин, а какая мотивация пользоваться if & endif вместо комментария? И то и то насколько мне известно убирается препроцессором. Сам вижу возможный аргумент, что добавление/удаление комментария рушат историю в гите и засоряют блейм, а других аргументов привести не могу Спасибо за лекцию!
@tilir Жыл бұрын
Комментарии созданы для комментирования. Для условного отключения коды созданы директивы условного отключения кода. Мы просто используем инструменты по назначению.
@kratodns97774 ай бұрын
А не подскажете , изучаю лекции Дербышевой Т.Н. из МФТИ, подойдут ли они к этому практикуму ?
@tilir24 күн бұрын
У Дербышевой не лекции у неё такие же семинары, но подача попроще. Вполне норм смотреть вместе.
@mychannel-m5e7 ай бұрын
Здравствуйте! Домашние задания это внутренний ресурс только для студентов, или не-студентам тоже можно зарегистрироваться посмотреть?
@tilir7 ай бұрын
Открыто пока что для всех. Ссылка в описании.
@Андрей-с6у6ч6 ай бұрын
Такой вопрос, почему вы вызываете abort() при ошибки в функции ввода вместо кода возврата? Чтобы не возвращаться в main и сразу выйти из программы?
@tilir6 ай бұрын
Для простоты, это всё-таки первое занятие. Педагогическая стратегия такая: на первом занятии учим детей использовать abort, потом до конца магистратуры отучаем. Те, кого удаётся отучить, становятся программистами ))
@ypohut1673 Жыл бұрын
Ассемблер пожалуйста❤
@b0ryakha Жыл бұрын
Видео супер! Планируется ли в будущем курс по библиотекам c++? например как правильно работать с QT?
@alexmo65388 ай бұрын
Было бы вообще отлично, если бы все команды используемые для работы в VIM были записаны на отдельном слайде или в комментариях!
@tilir6 ай бұрын
Или в инструкции к виму? ))
@alexmo65386 ай бұрын
@@tilir Требовать невозможно, т.к. курс бесплатный. Просто лезть в интернет и искать инструкцию, когда засел проходить урок по видео только лишь сбивает с толку. П.С. Спасибо вам за уроки.
@ДенисТюльков-ш2и9 ай бұрын
Эх, Константин Игоревич. Если бы мне в своё время Вячеслав Юрьевич так же доходчиво объяснял бы специфику указателей в Си. Я, конечно, потом всё уяснил. Но так не хватало лекций подобного плана.
@tilir9 ай бұрын
Вячеслав Юрьевич это, если не секрет, кто?
@ДенисТюльков-ш2и5 ай бұрын
Да не суть важно. Мне бы оказаться на ваших лекциях 20 лет назад...
@napalm20005 Жыл бұрын
А cmake будет на этом практическом курсе?
@tilir Жыл бұрын
Будет серия допсеминаров по консоли и сборке если студенты захотят. Если проведем тоже выложу ))
@napalm20005 Жыл бұрын
@@tilir Большущее спасибо, что так оперативно отвечайте на вопросы в ютубе. Я даже себе представить не могу как вы на все это находите время. Дай бог, чтобы ваши студенты захотели. Еще вопрос, в МФТИ нету заочки или онлайн курсов по С/С++?
@fedorbabkin Жыл бұрын
Если реализовывать алгоритм Евклида для очень больших чисел, то их сначала надо как-то научиться хранить? А в C это удобно делать?
@tilir Жыл бұрын
Есть почти стандартные решения, такие как gmp.
@StudyAndWork-n6p6 ай бұрын
Подскажите, где можно найти задачи? В контесте на eJudge пишут: server is not available. Есть ли возможность как то порешать контесты?)
@tilir6 ай бұрын
Я это не контролирую. Но если что всё выложено тут: github.com/tilir/c-graduate/tree/master/coursework/contests Просто без удобного интерфейса. И я на последнем семинаре как раз кинул клич: кто может помочь поднять более стабильные контесты, welcome.
@АндрейПолетимов Жыл бұрын
А как несколько кусков кода не связанных друг с другом убрать из компиляции? #if 0 #endif в нескольких местах компилятору не понравилось.
@tilir Жыл бұрын
Сделайте минимальное вопроизведение на годболте я бы глянул.
@paschendale191724 күн бұрын
Потерялся на 35 минуте. Откуда же новичок будет знать и понимать, что такое рекурсия?
@tilir24 күн бұрын
Загуглите.
@darkeliphant18437 ай бұрын
А контесты доступны для всех, или только для студентов? Не могу разобраться как их найти.
@tilir7 ай бұрын
Пока что всем доступны. Ссылка в описании. Обратите внимание: http.
@alexanderkristoffel8757Ай бұрын
А зачем отсекать 0 абортом при поиске общего делителя? Ведь любое число является делителем нуля (кроме самого нуля, в этом случае дробь неопределена). Т. е. по идее, gcd(x, 0) = gcd(0, x) = x
@tilirАй бұрын
Да, может быть следовало так и сделать.
@antonzhurba865 Жыл бұрын
На 14 слайде, утверджений a = max(n | (n/x)∧(n/y)) верно ли оно? Мы же ищем наибольший общий целый делитель что делит x и y ( max(n | (x/n)∧(y/n)) ?
@tilir Жыл бұрын
Запись n \ x читается как "n делит x" и на 14-м слайде max(n | (n\x)∧(n\y)) слеши в другую сторону.
@DART2WADER Жыл бұрын
С++ Россия: назад к базовой базе)))
@tilir Жыл бұрын
Это не курс по C++. Мы там будем дальше уходить в ассемблер и всё такое.
@DART2WADER Жыл бұрын
@@tilir ну и хорошо. Всё равно много всякого на PIC12, PIC16 и других "убогих" камнях делается, а там кроме с90-99 ничерта нет.
@stanislavstanislavius7618 Жыл бұрын
Ждем ассемблер
@tilir Жыл бұрын
Будет в этом курсе во втором семестре.
@stanislavstanislavius7618 Жыл бұрын
@@tilir как подарок на Новый год!) Спасибо большое)
@1sheix9 ай бұрын
не слышно что отвечает зал:(
@Str3ps1ls10 ай бұрын
увы, но доступ к задачнику отсутствует... по поиску аналогично - nothing found
@tilir10 ай бұрын
У вас в адресной строке https скорее всего. Сделайте http.
@Str3ps1ls10 ай бұрын
@@tilir спасибо большое! Все верно, теперь можно и задачи порешать 😏
@ДанилаМакляков-м4н7 ай бұрын
не подскажите как перейти к контесту, до этого начинал решать, а теперь не могу снова зайти
@tilir7 ай бұрын
Есть в описании видео: olymp1.vdi.mipt.ru/
@ДанилаМакляков-м4н7 ай бұрын
я понял в чем была проблема, переходя по ссылке у меня все равно открывался https, а не http, будьте внимательнее, если у кого то так же
@dimon_ksi Жыл бұрын
Чему равен iabs() от INT_MIN ?
@tilir Жыл бұрын
Да я упоминаю несимметриченость int. Но ещё раз -- пока рано обращать на это особое внимание. Мы пока что считаем что int это от -(2^n-1) до (2^n-1). Детали последуют в развитии курса.
@bonjovi86106 ай бұрын
Какой уровень, для кого семинар?
@cuniapapa53705 ай бұрын
Написано же: "Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики."
@dmitrii-329d Жыл бұрын
База
@АндрейПолетимов Жыл бұрын
А почему просто тупо при поиске НОД сразу не брать числа по модулю, а проверять только на 0? Меньше гимора.
@tilir Жыл бұрын
Уточните пожалуйста в чём идея?
@АндрейПолетимов Жыл бұрын
@@tilir идея в том, что при поиске наибольшего общего искать НОД не для введенных значений, а от их модулей. Ведь для его поиска знак не имеет значение. Останется только проверка на 0, что можно сделать типа if(x==0|y==0) return 1
@artemfediai72069 ай бұрын
Последний студент так и сделал по факту. Но там есть неприятный момент в связи с тем, что тип инт маргинально несимметричный. И тогда будет ошибка. Но ее можно избежать одной проверкой.
@wewsectos9 ай бұрын
Кто-нибудь дайте логин пасс, хочется делать дз(
@tilir9 ай бұрын
Регистрация открытая.
@ВладиславГришин-ш7ш Жыл бұрын
откуда появилось foo ?
@DIY_PLC Жыл бұрын
uint64_t красивее чем unsigned long long int
@tilir Жыл бұрын
Пожалуйста не используйте типы с фиксированной длиной без точного обоснования их применения. Есть ситуации когда они нужны, но выбором по умолчанию должны быть обычные типы. Язык задуман и построен вокруг них.
@SeregaKai Жыл бұрын
@@tilir В программирование под микроконтроллеры использование типов фиксированной длины довольно частая практика. Ну и кажется что для переносимости кода это тоже одно из правил.
@linuxgik-ru6 ай бұрын
Прошу, произведите переезд на rutube. Да сдохнет ютуб!!!!!
@tilir6 ай бұрын
Вообще то мой канал есть на рутубе. Увы меня там не смотрят. Тот же самый бакалаврский курс который здесь набирает 100к там набирает типа 200 просмотров всего.
@lasash52967 күн бұрын
Вот бы на фпми тоже сям учили в первом семестре, а не плюсам 😫