- Видео 58
- Просмотров 45 825
Maxim Yakovlev
Россия
Добавлен 17 окт 2012
Я доцент механико-математического факультета МГУ имени М.В. Ломоносова Яковлев Максим Яковлевич. В канал выкладываю видео:
1) практических занятий по курсу "Работа на ЭВМ и программирование" для 1-2 курсов мехмата;
2) лекций по курсу "Компьютерный практикум на ЭВМ" для студентов 6 курса кафедры вычислительной механики;
3) выступлений на различных конференциях и семинарах с научными и научно-практическими докладами.
1) практических занятий по курсу "Работа на ЭВМ и программирование" для 1-2 курсов мехмата;
2) лекций по курсу "Компьютерный практикум на ЭВМ" для студентов 6 курса кафедры вычислительной механики;
3) выступлений на различных конференциях и семинарах с научными и научно-практическими докладами.
Яковлев М.Я., мехмат МГУ. Компьютерный практикум: 1D и 2D уравнения теплопроводности, неустойчивость
0:00 Введение
0:27 Отличие уравнения теплопроводности от волнового уравнения
5:25 Система УрЧП - динамическая задача теплопроводности в 1D случае
11:03 Явная разностная схема для 1D задачи о распространении тепла
13:50 Условие устойчивости явной схемы для 1D задачи теплопроводности
16:20 Программа для решения задачи теплопроводности в 1D случае
26:38 Моделирование распространения тепла в 1D случае
30:40 Лирическое отступление о явных и неявных схемах и об аспирантуре
33:57 Система УрЧП - динамическая задача теплопроводности в 2D случае
36:23 Конечно-разностная сетка для 2D задачи теплопроводности
39:33 Условие устойчивости явной схемы для 2D задачи теплопроводности
40:13 Примеры неустойчивости для 1...
0:27 Отличие уравнения теплопроводности от волнового уравнения
5:25 Система УрЧП - динамическая задача теплопроводности в 1D случае
11:03 Явная разностная схема для 1D задачи о распространении тепла
13:50 Условие устойчивости явной схемы для 1D задачи теплопроводности
16:20 Программа для решения задачи теплопроводности в 1D случае
26:38 Моделирование распространения тепла в 1D случае
30:40 Лирическое отступление о явных и неявных схемах и об аспирантуре
33:57 Система УрЧП - динамическая задача теплопроводности в 2D случае
36:23 Конечно-разностная сетка для 2D задачи теплопроводности
39:33 Условие устойчивости явной схемы для 2D задачи теплопроводности
40:13 Примеры неустойчивости для 1...
Просмотров: 87
Видео
Яковлев М.Я., мехмат МГУ. Компьютерный практикум: 1D и 2D уравнения упругости, метод установления
Просмотров 12521 час назад
0:00 Введение 0:22 Система УрЧП - динамическая задача упругости в 1D случае 8:15 Программа для решения динамической задачи упругости в 1D случае 15:46 Моделирование упругой волны в 1D случае 22:10 Система УрЧП - динамическая задача упругости в 2D случае 32:00 О шаровой части и девиаторе тензора напряжений 36:20 Программа для решения динамической задачи упругости в 2D случае 42:20 Разнесённая се...
Яковлев М.Я., мехмат МГУ. Компьютерный практикум: метод Эйлера, 1D уравнение акустики, явная схема
Просмотров 8514 дней назад
0:00 Введение 0:50 ОДУ для одной точки, метод Эйлера 14:25 ОДУ в 1D случае, метод Эйлера 27:42 Система УрЧП - уравнения акустики в 1D случае, явная схема 52:17 Система УрЧП - уравнения упругости в 1D случае, явная схема 1:04:30 Заключение
Яковлев М.Я., мехмат МГУ. "Умные" указатели: деструктор списка с ними, снова о weak_ptr
Просмотров 161Месяц назад
0:00 Деструктор списка, реализованного с помощью "умных" указателей 4:38 Оператор вывода для списка 7:00 Ещё пара слов о weak_ptr и методе lock
Яковлев М.Я., мехмат МГУ. "Умные" указатели: shared_ptr, weak_ptr, реализация списка с ними
Просмотров 199Месяц назад
0:00 Введение, ещё пара слов о unique_ptr 7:08 Указатель shared_ptr: один объект - несколько владельцев 9:06 Размер указателей unique_ptr и shared_ptr 16:30 Объект и управляющий блок в shared_ptr 18:12 Преимущества функции make_shared 24:07 Пара слов о shared_ptr и многопоточности 25:55 Функции get и reset 27:20 Указатель weak_ptr и циклические зависимости 33:06 К реализации двунаправленного сп...
Яковлев М.Я., мехмат МГУ. "Умные" указатели: unique_ptr и реализация списка с его использованием
Просмотров 240Месяц назад
0:00 Введение, зачем нужны "умные" указатели 1:33 Указатель auto_ptr - почему его не надо использовать? 4:03 Указатель unique_ptr 8:40 К реализации односвязного списка при помощи unique_ptr 10:40 Пишем include guard 12:45 Задаём тип данных 13:32 Определение класса SinglyLinkedList 14:25 Чем отличаются структуры и классы в C 16:42 Объявление конструктора explicit 19:32 Поля класса SinglyLinkedLi...
Яковлев М.Я., мехмат МГУ. Типы переменных в языке C, сравнение чисел с плавающей точкой
Просмотров 2682 месяца назад
0:00 Введение 0:37 Целочисленные типы в языке C: char 9:25 Целочисленные типы: short, int, long, long long 23:10 Вещественные типы: float, double, long double - машинный эпсилон 42:06 Сравнение вещественных чисел с плавающей точкой 49:33 Функции fabs и fmax 51:52 Заключение
М.Я. Яковлев, мехмат МГУ. О применении машинного обучения в механике (доклад на RusCongrMech2023)
Просмотров 1806 месяцев назад
М.Я. Яковлев, мехмат МГУ. О применении машинного обучения в механике (доклад на RusCongrMech2023)
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XX. Структуры данных, списки
Просмотров 4,9 тыс.6 месяцев назад
0:00 Введение, что значит "уметь программировать" 1:52 Массив как структура данных, его плюсы и минусы 8:00 Список как структура данных, его плюсы и минусы по сравнению с массивом 12:00 Реализация структуры для узла однонаправленного списка 16:15 Реализация класса для всего однонаправленного списка 26:16 Двунаправленный список 32:44 Реализация конструктора списка 42:05 Статический полиморфизм 4...
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XIX. Повторение основ C++
Просмотров 1,8 тыс.6 месяцев назад
0:00 Введение 0:43 Пример простейшей программы "Hello,world!" на С 2:16 Ссылки в C и пример простейшей программы, использующей их 11:26 Ввод из консоли в C 12:48 Дополнительное пояснение по ссылкам 15:24 Работа с файлами в C 22:51 Пример класса 25:13 Спецификаторы доступа в классах и структурах 28:08 Инкапсуляция 32:52 Конструкторы класса 39:28 Создание объекта класса 40:11 Динамическое выделен...
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XVIII. Введение в C++
Просмотров 1,5 тыс.7 месяцев назад
0:00 Введение 1:15 Простейшая программа "Hello,world!" на C 4:50 Ввод-вывод в C 8:52 Работа с текстовыми файлами 13:52 Пример структуры в C 16:42 Отличия классов и структур 21:07 Понятие инкапсуляции 22:28 Создание объекта класса 24:06 Конструктор класса 26:16 Понятие inline-функций 29:15 Пример определения конструктора 33:27 Заключение (фальстарт) 35:00 Разбор условия первой задачи на C 36:29 ...
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XVII. Введение в Python
Просмотров 1,4 тыс.8 месяцев назад
0:00 Введение 0:11 Простейшая программа "Hello, world!" на Python 4:02 Переменные в Python, динамическая типизация 9:56 Считывание данных из командной строки 16:32 Простейшая программа по работе с последовательностями из файла 22:24 Служебные слова и аналогия с "I say again" 27:07 Исключения в Python и их обработка 39:56 Массивы в Python и дополнительные модули 45:42 Списки в Python 49:25 Корте...
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XVII. Введение в Python (тизер)
Просмотров 9678 месяцев назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие XVII. Введение в Python (тизер)
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XVI. Структуры в C на примере двумерных массивов
Просмотров 1,3 тыс.9 месяцев назад
0:00 Введение 0:08 Массивы массивов переменной длины 3:42 Пример структуры в C - матрица со строками переменной длины 7:36 Создание объекта структуры и работа с ним, выделение памяти 20:44 Работа с указателями на структуры 31:37 Освобождение памяти для массива массивов переменной длины 34:35 Считывание матрицы со строками переменной длины из файла 37:19 Лирическое отступление об идеологии std::...
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XV. Строки
Просмотров 4749 месяцев назад
0:00 Введение 0:54 Что такое строка? Способы объявления строк 4:50 Функция strlen определения длины строки 6:40 Функции ввода-вывода слов: scanf/fscanf, printf/fprintf 12:10 Функции ввода-вывода строк: gets/fgets, puts/fputs 17:08 Функция sscanf считывания данных из строки 24:17 Функции strlen (снова), strcpy, strcmp 31:50 Функция strcat 35:32 Функция strtok 40:22 Заключение
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XIV. Продолжение двумерных массивов
Просмотров 8759 месяцев назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие XIV. Продолжение двумерных массивов
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XIII. Двумерные массивы
Просмотров 8269 месяцев назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие XIII. Двумерные массивы
Яковлев М.Я., мехмат МГУ. Как правильно сдавать автоматизированный зачёт?
Просмотров 1,5 тыс.11 месяцев назад
Яковлев М.Я., мехмат МГУ. Как правильно сдавать автоматизированный зачёт?
Яковлев М.Я., мехмат МГУ. Как правильно сдавать автоматизированный зачёт? (тизер)
Просмотров 1,7 тыс.11 месяцев назад
Яковлев М.Я., мехмат МГУ. Как правильно сдавать автоматизированный зачёт? (тизер)
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XII. Сортировки: QuickSort, Merge Sort, Heap Sort
Просмотров 57311 месяцев назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие XII. Сортировки: QuickSort, Merge Sort, Heap Sort
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие XI. Сортировка массивов, пузырьковый метод
Просмотров 775Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие XI. Сортировка массивов, пузырьковый метод
Выступление д.ф.-м.н. А.А. Осадчиева в ДК МГУ на праздновании 60-летия СУНЦ МГУ
Просмотров 356Год назад
Выступление д.ф.-м.н. А.А. Осадчиева в ДК МГУ на праздновании 60-летия СУНЦ МГУ
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие X. Разбор стандартных ошибок при работе с памятью
Просмотров 1,6 тыс.Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие X. Разбор стандартных ошибок при работе с памятью
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие IX. Битовые операции
Просмотров 927Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие IX. Битовые операции
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие VIII. Понятие алгоритмической сложности и realloc
Просмотров 1,2 тыс.Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие VIII. Понятие алгоритмической сложности и realloc
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие VII. Автотесты и пример их написания
Просмотров 743Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие VII. Автотесты и пример их написания
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие VI. Makefile и решение задачи из списка у доски
Просмотров 896Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие VI. Makefile и решение задачи из списка у доски
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие V. Указатели, массивы, сравнение double, Makefile
Просмотров 712Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие V. Указатели, массивы, сравнение double, Makefile
М.Я. Яковлев, мехмат МГУ. Доклад на НИС вычмеха о XIII Съезде по механике и конференции "Мезо 2023"
Просмотров 847Год назад
М.Я. Яковлев, мехмат МГУ. Доклад на НИС вычмеха о XIII Съезде по механике и конференции "Мезо 2023"
Яковлев М.Я., мехмат МГУ. C/C++/Python, занятие IV. Повторение: последовательности, функции, сборка
Просмотров 322Год назад
Яковлев М.Я., мехмат МГУ. C/C /Python, занятие IV. Повторение: последовательности, функции, сборка
А это не оверкил использовать shared_ptr для двусвязного списка? Ведь можно unique_ptr для next, а raw pointer для previous🤔
Строго говоря, на практике почти никому и не придётся руками реализовывать список - а если кому и придётся, то почти наверняка с помощью "сырых" указателей и ручного выделения/освобождения памяти. Но цель этих задач, которые мы даём студентам - чтобы они изучили "умные" указатели, причём все три. Поэтому я о таком и рассказываю.
@@m.ya.yakovlev Это понятно. Но имхо в учебных целях есть более интересная задача использования shared_ptr и weak_ptr для кэширования без вытеснения. Внутри функции или класса храним unordered_map (для функции как static), где value - это weak_ptr. Если входной ключ не найден в этом map, то создаëм shared_ptr на кэшируемое value и вставляем с этим ключом в map, но возвращаем shared_ptr. А если ключ найден, то достаëм weak_ptr, делаем lock() и возвращаем shared_ptr.
@@kunak1197 Это что-то сложное, я сам до конца не понял условие вашей задачи - и не стал бы давать такое студентам. После списков у них будет отдельная задача на деревья поиска, а потом ещё одна - на хеш-таблицы.
Во такой вопрос: проектор выгорает больше когда на экране черный или когда белый?
Честно говоря, не знаю. И не очень мне нравится сама идея, что преподаватель на занятии должен думать ещё и о том, как экономить ресурс проектора - вместо того, чтобы сосредоточиться на предмете и на студентах.
Первый
Главный довод в пользу использования make_shared не актуален, начиная c C++17.
Надо поизучать. У нас в компьютерных классах, по-моему, установлен компилятор стандарта С++14.
У вас очень крутые лекции!!😍
Спасибо на добром слове!
когда же видео-уроки записаны и преподователь не будет одно и тоже ученикам говорить. А лекция хорошая
Спасибо на добром слове! Нет, я из года в год примерно одно и то же рассказываю: мало кто из студентов будет смотреть видео прошлых лет.
больше спасибо за видео
Могли бы моменты ожиданий и паузы раздумий подрезать из ролика, тогда ролик смотрелся бы более динамично и занимал бы меньше времени.
Это да, но времени совсем не было. Нужно было выложить этот ролик для моих студентов до окончания семестра.
Классно, все понятно и быстро 👍 но он объясняет, будто сам студент) при чем троечник, да, много неточностей, методы почти не помнит, но зато очень просто и доступно ✊удивилась, что в этой группе такие глупые слушатели, ни на один вопрос ответить не могут… они точно учатся в МГУ?
У меня какие-то противоречивые ощущения - непонятно: то ли благодарить за добрые слова, то ли сердиться в ответ на не очень хорошие слова! 😀 Точно и правильно объясняет лектор на лекциях, а у меня практические занятия в компьютерном классе - поэтому и рассказываю с практическим уклоном. По этой же причине и студенты молчат: они в это время сосредоточены на написании программ по уже пройденному ранее материалу, чтобы поскорее их мне сдать.
Где можно посмотреть полную версию?
Спасибо за видео !! Прекрасная лекция !! Какой курс у вас это слушает ? Я хоть и самоучка, не умеющий толком ничего, но ответил на большую часть ваших вопросов. А в аудитории тишина...
Спасибо на добром слове! Это не лекция, а практическое занятие у первокурсников. Они молчат, потому что активно пишут программы по уже ранее рассказанному материалу, чтобы поскорее сдать их мне.
МГУ на доске проги учат? это что? кадры из фильма?
Спасибо большое за ваши семинары, очень помогли
спасибо на добром слове!
Спасибо!
Спасибо, мне тоже очень нравится программировать на доске и тетрадных листах
да хоть на салфетке, было бы чем писать
Класс. Благодарю.
39:10 проверять выделилась ли память не нужно. Если не выделилось то по стандарту должно быть сгенерировано исключение bad_alloc
Проверять нужно (хотя бы ловить эти самые исключения). Другое дело что не совсем так как показал преподаватель. В его примере у new следует задавать параметр (std::nothrow).
Я тоже люблю программировать на доске, спасибо!
может вам скинуть на комп? а то все на доске и доске
Кому -то не дано преподавать! Ужасная подача материала!
До сих пор мелом по доске? И это МГУ?
50 минута 20 секунда. Я думаю, что весьма важно обратить внимание на некоторую особенность или,казус, связанный с возможностью использования в кортежах разных типов данных. Если вы , скажем в вашем примере, последним элементом укажете список, а не строку, например (1, 2.5, [7, 8, 9]), то несмотря на то, что мы имеем кортеж, вроде как неизменяемый, внутри последнего элемента, являющегося списком, можно менять данные этого списка. Таким образом некоторая специфическая возможность изменения данных в кортеже всё же имеется.
Да, это интересная лазейка
@@m.ya.yakovlev спасибо за материал, который выкладываете. Если бы он был и в рутубе, то стало бы спокойней, учитывая события последних лет.)))
@@jorafomka3770 Я думаю о том, чтобы загрузить видео в группу ВКонтакте
@@m.ya.yakovlev это прекрасная идея! А плюс в том, что и обратная связь там в наличии по умолчанию.
А зачем? И в какой ситуации это может понадобиться? Для того и нужен кортеж, чтобы не изменять. Преобразуйте в список и меняйте, сколько хотите
16:20 Замечание по стилю изложения. В лекциях довольно часто происходит: спрашиваете у аудитории то, что хотите рассказать. Сбивает ритм изложения. И довольно сложно выдать то, что еще не известно. ps я не студент.
Наверное это метод разбудить спящих и вовлечь неспящих. Но аудитория "не втыкает": ответ знают 1-2 человека, или только они не спят. Видимо нужно спрашивать что-то попроще. Похожим образом работает проф. на гарвардском CS50. Но аудитория у них на "1500" человек, и он проговаривает ответ из зала, чтобы услышали все.
@@ctpcad Это ведь не лекции, а практические занятия. Я рассказываю - а некоторые студенты пишут свои программы и меня не слушают. Это метод привлечь их внимание. Что должно быть в аргументе malloc - это не 1-2 человека должны знать, а вся группа. Тут важно понимание, память какого размера выделяется, о какой структуре вообще идёт речь. Я понял, что Вы не студент. Мы, видимо, коллеги: я разработкой CAE занимаюсь на работе.
28:31 т.к. количество единиц на 3-ей от начала клетке уже равно увеличению массива, второй бегунок можно оставить на месте (забыть), но нужен счетчик встреченных единичек.
В принципе, да - можно
И это мехмат МГУ? Мрак!
Спасибо за познавательные видео. Планируете ли Вы выкладывать записи 4 семестра, которые, как понимаю, в прошлом году оборвались из-за карантина по кори?
Спасибо на добром слове! А я тогда во время карантина уже ничего нового не рассказывал, только задачи принимал.
Откуда он говорит?!! Где его рот!?!!! 😱
Мне кажется через питоновские задания бессмысленны 😅
40:00 Да во всех. Джава, Голанг, Питон...
О том, что они в Питоне есть - я не знал!
Классное видео, сам сдал ОПиА на C на отлично, все случаи прямо подробно разобрали действий с файлами и заполением динамических массивов. Единственное что хотел сказать, правильно надо писать "Both files are openED" вы же написали без окончания es в Present Simple Passive
Я не особенно силён в английском, но вроде и так и так пишут. В C++ в std::fstream вообще есть метод is_open().
А зачем О два раза подчеркивать?
Чтобы при письменной записи отличить O-большое от o-малого (последнее подчёркивается двумя чертами сверху).
Спокойный, уравновешенный лектор
Классное видео. Сам пишу на языках высокого уровня и сначала не понял, почему не составили массив во время подсчета количества символов в файле, потом понял что в C нужно выделять память под это) Также странно для меня было, что разбивка посимвольно, а не по разделительному знаку И постоянно прям хочется все повторяющиеся и логические блоки (например чтение и проверку файлов) в отдельные функции выносить в реальном проекте я бы создал отдельный класс который будет иметь метод добавления функций в массив (который внутри класса) и метод завершения программы в main инициализируем класс и по мере выполнения кода добавляем функции которые нужно выполнить при закрытии программы (например открываем файл и в класс добавляем функцию закрытия программы), ну а в случае если нужно завершить программу с кодом то возвращаем результат метода класса который отвечает за закрытия программы (метод перебирает массив и выполняет все функции в нем, и возвращает код который был передан в аргументы метода) но это так, прост мысли)
Благодарю за подробные комментарии! Тут не только архитектура программы неидеальна, но и алгоритм тоже: два раза проходить по каждому файлу - неоптимально. На языке C++ я бы первым делом использовал для этого std::vector, что позволило бы пройтись по файлу один раз и считать все данные без перевыделения памяти на каждом шаге. А какая разбивка посимвольно? Там числа в файлах разделены пробелами. Насчёт всего остального - это ведь советы первокурснику, который изучал язык C всего полгода, как правильно написать программу на автоматизированном зачёте за ограниченное время (полтора часа) в условиях естественного зачётного стресса, без среды разработки, пользуясь казённой (не самой новой и качественной) клавиатурой. И то я говорил на видео, что эту предварительную часть они должны писать за 10-15 минут - а в реальности даже лучшие мои студенты вчера на автоматизированном зачёте тратили на это по 30-40 минут.
@@m.ya.yakovlev понял, просто мне не понятно было как C++ получает значения которые нужно интерпретировать как числа (из-за непонимания как работает fscanf). для меня файл это строка, а значит что бы достать оттуда некие значения мне нужно разбить строку по разделителю и преобразовать кусочки в определенный тип данных и далее с ними работать. а из кода мне не понятно что за разделитель. из своего опыта могу сказать что единственное когда мне нужно было читать файл и парсить его, это когда я csv преобразовывал в sql и формировал дамп, но я делал не оптимизировано через регулярные выражения )
Спасибо большое за информативное видео.
А нет ли полного видео? А то некоторым группам не так повезло с преподавателем и всех этих важных вещей не рассказывают
Поддерживаю вас
Спасибо на добром слове! Полное видео я выложу чуть попозже. Вообще мне представлялось, что первокурсники к зимней сессии и так должны знать все эти важные вещи - просто по итогам первого семестра.
У Heapify линейная сложность. Но после того как выкидываем максимум в конец нам уже не надо делать Heapify, достаточно siftdown
Вот когда пирамида составлена - это я понимаю, что после перекидывания максимума в конец спуск корневого элемента вниз делается с логарифмической сложностью. Почему у heapify сложность линейная - не понимаю. Допустим, мы в процессе heapify рассматриваем элемент и его двух потомков, и элемент оказывается очень маленьким. Его же нужно не просто поменять местами с одним из его потомков (сложность этого константная, это понятно). Его придётся спускать до самого низа, до "листочков" - а у этого уже сложность логарифмическая. Поэтому мне видится, что сложность heapify - O(N * log N). Но, может, я в чём-то не прав.
Спасибо за ваши прекрасные лекции!
спасибо на добром слове!
Я не кодил с окончания физфака. А это 10 лет как. А еще все помню. хорошо) Когда писали программы на курсе по Си и программы по матмодам часто приходилось динамически выделять память под массивы с нужными размерами и потом освобождать их. Например, при обработке заранее неизвестного массива символов. А вот о нюансах работы почти и не задумывался) У нас, кстати, было много очень продыбанных программеров. Кто-то еще в школе кодил, а в универе на первом-третьем курсе выдавали прикольные результаты: кто чат для универской сети под дос напишет, кто прогу для моделирования какого-нить процесса
Быть властелином 100млн-го массива это круто :) Грокаем алгоритмы, господа !
Интересная прическа)) вместе учились
Можно отказаться от использования realloc, но при этом по прежнему иметь возможность увеличить размер массива и не занимать под себя всю память со старта. Трюк в том, что когда система выделяет память программе, она выделяет виртуальную память и это происходит мгновенно, потому что физическая никак еще не задействована. Система начинает добавлять настоящие физические страницы памяти при первой записи. Поэтому если просто выделить массив в 100 раз больше чем нужно, ничего не произойдет и программа по прежнему будет использовать ровно столько памяти сколько она успела задействовать/записать. Трюк не прокатывает (сложен) в С++, потому что там по умолчанию память будет проинициализирована записью 0. Так же можно почитать про CoW (copy on write).
Раз уж пошла такая пьянка с маллоками и фри, то вопрос - как фри узнает сколько памяти нужно освободить? (на подумать)
29:40 Непонятно почему для случая расширения двумя символами "идем с конца двумя бегунками" - можно же и с начала так же идти.
Если записываем новые данные в тот же массив - нельзя, иначе затирать будем ещё не переписанную информацию.
@@m.ya.yakovlev понятно, я думал старый массив еще не удален на тот момент. Т.е. это вариант для случая когда свободное место в массиве/строке еще есть и нужно произвести замену "in place" без создания нового массива. Возможно стоит это явно указать в курсе, потому что на доске в этот момент нарисованы старый и новый массивы одновременно.
Программировать хоть умеет Яковлев Максим Яковлевич?
Изначальная версия комментария была более красноречивой!
@@m.ya.yakovlev Вы когда стучите мелом по доске рассказывая о программировании, то студентам заснуть хочется. По клавиатуре надо стучать.
Чепуха что-то предъявить хотела?
@@AlexMarkin-w6cдык, найдите любой туториал в интернете и стучите себе на здоровье. К преподавателю какие вопросы?
6:45 Буфер не обязателен. Если на собесе просят поменять без 3ей переменной хотят не услышать про ф-цию swap, а что-то типа такого a = a + b; b = a - b; a = a - b; Можно то же самое делать операцией xor a = a ^ b; b = b ^ a; a = a ^ b; тут будет работать для большего диапазона чисел, так как не будет переполнения при арифметических операциях.
53:03 - оператор && ленивый. Если упадет первый тест остальные запускаться не будут.
Да, это я уже потом заметил, после занятия. Когда у доски выступаешь - хуже соображаешь.
27:11 утечка файлового дескриптора, если память не удалось выделить 29:22 не обрабатываем ошибки считывания из файла. В массиве может остаться мусор 33:27 вечный цикл, если size будет больше int
Повезло студентам 122 и 222 группы, что у них такие клёвые семинары по ЭВМ)
Спасибо на добром слове! Но написание и отладка программы прямо в аудитории, перед группой - это, скорее, отрицательный опыт.
Кхм... Зачем загружать в Мозги, Если есть Железо?) Вы едите?) 1:08
49:54 59:08 1 бит под знак, не байт.
Оговорочка, значит, вышла