Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.

Поділитися
Вставка
  • Опубліковано 13 чер 2024
  • Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
    На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.
    Семинарист: Константин Владимиров.
    Дата: 15 декабря 2023 года.
    Съёмка: Марк Гончаров.
    Звук: Юлий Тарасов.
    Предыдущий семинар: • Практика языка C (МФТИ...
    Следующий семинар: • Практика языка C (МФТИ...
    Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
    Примеры кода: github.com/tilir/c-graduate
    Задачник: olymp1.vdi.mipt.ru/
    Timeline
    00:00 Хеш-таблицы.
    15:10 Алгоритм Рабина-Карпа.
    22:30 Range-based queries и снова о деревьях.
    29:42 Многомодульные программы.
    36:30 Структуры данных.
    42:40 Литература и задачи.
    44:45 Демонстрация многомодульных программ.
    Errata:
    * Пока пусто

КОМЕНТАРІ • 18

  • @andrewkot5212
    @andrewkot5212 4 місяці тому +3

    Обожаю ваши лекции, они вдохновляют )

  • @myrrrca
    @myrrrca 4 місяці тому

    хотелось бы узнать будет ли выкладываться продолжение курса, и если да, то где именно. спасибо!

    • @tilir
      @tilir  4 місяці тому +3

      Так сейчас каникулы. Начнутся занятия и снова начну выкладывать ))

  • @Konstantin_Evdokimov
    @Konstantin_Evdokimov 3 місяці тому

    По идее static и для функции и для переменной обозначают одно и то же - ограничение области видимости глобальной переменной или функции, но поскольку функцию нельзя определять внутри другой функции то у неё остаётся только один вариант - ограничение области видимости модулем, а для переменной эта область может быть ограничена ещё видимостью только внутри функции.

    • @tilir
      @tilir  3 місяці тому

      Вы смешиваете область видимости и класс линковки.

    • @Konstantin_Evdokimov
      @Konstantin_Evdokimov 3 місяці тому

      @@tilir запомнить проще.

  • @myrrrca
    @myrrrca 5 місяців тому

    Константин Игоревич, ваш задачник закрыт для входа, так и должно быть?

    • @tilir
      @tilir  5 місяців тому +1

      Там довольно простая регистрация. Я верю вы разберётесь.

    • @myrrrca
      @myrrrca 5 місяців тому

      @@tilir имел ввиду, что теперь ссылка под вашими роликами перенаправляет на портал вуза, а не на задачник. ссылка не рабочая

    • @tilir
      @tilir  5 місяців тому +1

      Она рабочая. Просто она http, а ваш браузер её незаметно для вас меняет на https. А вот https уже ведёт куда попало.

    • @myrrrca
      @myrrrca 5 місяців тому

      @@tilir спасибо! понял

  • @user-nt1re9ym4i
    @user-nt1re9ym4i 5 місяців тому +4

    Константин Игоревич, подскажите пожалуйста, почему на 11:25 вы используете сдвиг? Т.е. ранее вы приводили в пример хеш-функцию, использующую остаток от деления многочлена на простое число по модулю мощности хеша, ну т.е. в реализации я ожидал увидеть всё то же деление на простое число (к слову, деление на константу, что довольно эффективно), а также наложение маски вида ((1

    • @bw7123
      @bw7123 5 місяців тому

      Тоже не понял этот момент, ожидал увидеть маску. Выглядит как косяк.
      Например m=2, w=64, a=1, b=0, тогда все x до 2^62+1 будут попадать в первый бакет?

    • @SuperDenWolf
      @SuperDenWolf 4 місяці тому

      Здесь должно быть 2 сдвига - сначала на (w - M) влево, затем на (w- M) вправо - вместо одного как на слайде (думаю, просто опечатка).
      ((a * x + b) > (w - M).
      Например, w = 32, M = 20:
      ((a * x + b) > 12
      Т.е. мы сначала сдвигаем влево. "стирая" 12 старших ("левых") бит (заодно заполняя младшие/"правые" 12 бит нулями), а затем сдвигом вправо (обратно) возвращаем значащие биты в исходную позицию, имея "слева" 12 нулей.
      Это будет аналогично делению по модулю на 2 в степени (w - M) или битового "И" с маской из М единиц "справа"

    • @SeriousMan212
      @SeriousMan212 2 місяці тому

      @@bw7123 m -- желаемая мощность. В вашем примере вы выбрали мощность хэша 2 -- не удивительно что все попадают в один или два бакета =)

  • @xaoc3932
    @xaoc3932 5 місяців тому

    У вас си, а у нас по орг зачёт щас будет(( почему не прога( или математика(((

    • @tilir
      @tilir  5 місяців тому

      Что такое орг? ))

    • @xaoc3932
      @xaoc3932 5 місяців тому

      Основы российской государственности. До сих пор сижу жду пока очередь дойдёт до меня. Делать нечего(( грустно и скучно