sizeof (sizeof) wrote,
sizeof
sizeof

Category:

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

Summary

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

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

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

- strlen
- strncpy
- strncat
- strstr
- strtok

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

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

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

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

***

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

Удачи, и May the Source be with you! :)
Tags: Технотрек
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments