Технотрек: Занятие 02: Указатели тоже бросаются вызовами

Sep 27, 2017 00:39

Summary

На лекции мы разобрали типичные случаи, трудные для тех, кто раньше не писал на Си. В Си есть явное понятие адреса; это прекрасно, но есть и сложности. Главный инструмент для понимания того, что происходит - рисовать детальную структуру памяти, с обозначением на ней всех массивов, переменных и их адресов. Не ленитесь рисовать! Абсолютно все при этом станет понятно, и код?кот станет белым и пушистым.

Домашнее задание

1. Реализуйте "с нуля" эквиваленты стандартных функций:

- strlen
- strncpy
- strncat
- strstr
- strtok

2. [Сортировка Евгения Онегина.] А.С. Пушкин так хорошо описал быт и нравы современной ему жизни в поэме "Евгений Онегин", что В. Г. Белинский назвал ее "энциклопедией русской жизни". Но в энциклопедии все должно быть отсортировано по алфавиту; гуманитарий Пушкин этого не знал. Помогите великому поэту сделать из поэмы настоящую энциклопедию, напишите эффективную по времени и памяти программу, которая читает стихотворные строчки из файла, сортирует их (игнорируя знаки препинания) и выводит в другой файл. В случае проблем с русским языком, используйте пьесы Шекспира. Пусть ему тоже мало не покажется.

3. [В помощь начинающему поэту.] Отсортируйте строки, как в задаче 4, но сравнивайте, начиная с концов строк - получится словарь рифм. Постарайтесь обойтись вообще без strlen(), в данном случае это возможно.

4. Объедините задачи 4 и 5, выведите сначала в один файл оригинальный текст поэмы, в другой - отсортированный текст, в третий - словарь рифм.

5*. [Бредогенератор.] Используя словарь рифм и случайно комбинируя рифмующиеся строки, напишите бредогенератор на основе "Евгения Онегина" или пьес Шекспира. Учтите, что разные строки одной строфы имеют разное чередование слогов. Пример работы такого бредогенератора см. здесь.

***

Спасибо за фидбек! "Байки" никуда не денешь - это форма передачи опыта. Можно просто сказать, "не пиши в указатель, равный нулю", но это забудется, а можно упомянуть, как перед комиссией с грохотом упала программа и что после этого было. :) Про объяснение легких вопросов - буду уменьшать, но состав у нас очень разнородный, что для одного легко, для другого пока сложно. Но будем выравниваться, конечно. По ревью кода - выстраивайтесь в очередь, плиз, исходя из приоритетов кому пораньше / кому попозже+поподробней.

Удачи, и May the Source be with you! :)

Технотрек

Previous post Next post
Up