Четвёртый уровень CS50, надо сказать, совсем не простой! Зато очень интересный и насыщенный. Из девятой и десятой видеолекции вы узнаете очень важные для понимания компьютерных наук понятия.

Девятая лекция и дополнительные материалы:

  • Чтобы понимать рекурсию, надо понимать рекурсию. Именно ей, великой и ужасной, будет посвящено начало девятой лекции CS50. Дэвид сравнит циклический и рекурсивный алгоритмы на примере одной и той же задачи.
  • А ещё — расскажет, как менять переменные местами с помощью дополнительного параметра, без него, а также с применением загадочного оператора XOR.
  • ..и продемонстрирует, как нужно отлаживать программку на примере CS50 IDE. Скорее всего, вы уже игрались с GDB в «Виртуальной лаборатории» на прошлой неделе, и уже знаете, насколько отладка ускоряет процесс разработки.
  • Вы получите ещё немного полезной информации о стеке памяти и локальных переменных.
  • Вот мы дошли и до них. Сила и слабость Си, мощнейший инструмент, который в руках новичка или злоумышленника может превратиться в ядерную бомбу. Указатели или как в Си общаться с памятью напрямую.

Десятая лекция и дополнительные материалы:

  • Как кодируется изображение. Слово bitmap станет родным и понятным.
  • Вы узнаете, как понять (с точки зрения компьютера), что перед вами именно JPEG-файл и какую роль в этом играет комбинация битов 244 216 255.
  • Вспомните (или изучите) 16-ричные числа. Запись 0хff станет столь же очевидной, как 255 а десятичной системе.
  • Что такое struct в Си? Собственные типы данных в Си.
  • Сравнение содержимого строк в Си (strcmp) и другие средства работы со строками.
  • Адресная арифметика.
  • char* t = malloc((strlen(s) + 1) * sizeof(char)) — как вам такая строчка кода? После лекции вы будете понимать, что к чему, и сами сможете писать нечто подобное =).
  • Немного синтаксического сахара =).
  • Как писать swap с указателями и зачем.