Резюме
На данном этапе мы обсудили то, что можно бы назвать традиционным ядром языка "C". Имея эту горсть строительных блоков, можно писать полезные программы весьма значительного размера, и было бы вероятно неплохой идеей, если бы вы задержались здесь на какое-то время и поступили таким образом: следующие ниже упражнения предлагают вам ряд программ несколько большей сложности, чем те, которые были приведены в этой лекции.
После того как вы овладеете этой частью "C", приступайте к чтению следующих нескольких лекций. Усилия, которые вы при этом затратите, полностью окупятся, потому что в этих лекциях обсуждаются именно те стороны "C", где мощь и выразительность языка начинает становиться очевидной.
Упражнение 1-19
Напишите программу detab, которая заменяет табуляции во вводе на нужное число пробелов так, чтобы промежуток достигал следующей табуляционной остановки. Предположите фиксированный набор табуляционных остановок, например, через каждые n позиций.
Упражнение 1-20
Напишите программу entab, которая заменяет строки пробелов минимальным числом табуляций и пробелов, достигая при этом тех же самых промежутков. Используйте те же табуляционные остановки, как и в detab.
Упражнение 1-21
Напишите программу для "сгибания" длинных вводимых строк после последнего отличного от пробела символа, стоящего до столбца n ввода, где n - параметр. убедитесь, что ваша программа делает что-то разумное с очень длинными строками и в случае, когда перед указанным столбцом нет ни табуляций, ни пробелов.
Упражнение 1-22
Напишите программу удаления из "C"-программы всех комментариев. Не забывайте аккуратно обращаться с "закавыченными" строками и символьными константами.
Упражнение 1-23
Напишите программу проверки "C"-программы на элементарные синтаксические ошибки, такие как несоответствие круглых, квадратных и фигурных скобок. Не забудьте о кавычках, как одиночных, так и двойных, и о комментариях. (Эта программа весьма сложна, если вы будете писать ее для самого общего случая).