Четвёртый уровень 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
с указателями и зачем.