Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Копирование файлов
Типичная операция над файлами копирует один файл в другой. Программа CopyTwice копирует INPUT в OUTPUT через промежуточный рабочий файл Chars. Первый шаг – копирование INPUT в Chars, второй шаг – копирование Chars в OUTPUT.
DP 1 PROGRAM CopyTwice (INPUT, OUTPUT); {Копирует символы, предшествующие # из INPUT в OUTPUT Программа выдаст ошибку, если в INPUT отсутствует #} VAR Ch: CHAR; Chars: TEXT; {Рабочий файл} BEGIN {CopyTwice} {Копировать INPUT в Chars} {Копировать Chars в OUTPUT} END. {CopyTwice}
DP 1.1 BEGIN {Копировать INPUT в Chars} REWRITE(Chars); {Готовим Chars для записи} READ(INPUT, Ch); WHILE Ch < > ‘#’ DO BEGIN WRITE(Chars, Ch); READ(INPUT, Ch) END; WRITELN(Chars, ‘#’) {Закрыть Chars маркером конца строки} END
DP 1.2 BEGIN {Копировать Chars в OUTPUT} RESET(Chars); {Готовим Chars для чтения} READ(Chars, Ch); WHILE Ch < > ‘#’ DO BEGIN WRITE(OUTPUT, Ch); READ(Chars, Ch) END; WRITELN(OUTPUT) END
Без маркера конца входной последовательности, который DP 1.1 помещает в конец промежуточного файла, DP 1.2 не сможет остановить свое выполнение.
Собираем разделы проекта.
DP 1A PROGRAM CopyTwice (INPUT, OUTPUT); {Копирует символы, предшествующие # из INPUT в OUTPUT} VAR Ch: CHAR; Chars: TEXT; {Рабочий файл} BEGIN {CopyTwice} BEGIN {Копировать INPUT в Chars} REWRITE(Chars); {Готовим Chars для записи} READ(INPUT, Ch); WHILE Ch < > '#' DO BEGIN WRITE(Chars, Ch); READ(INPUT, Ch) END; WRITELN(Chars, '#') {Закрыть Chars маркером конца строки} END BEGIN {Копировать Chars в OUTPUT} RESET(Chars); {Готовим Chars для чтения} READ(Chars, Ch); WHILE Ch < > '#' DO BEGIN WRITE(OUTPUT, Ch); READ(Chars, Ch) END; WRITELN(OUTPUT) END END. {CopyTwice}
Выполнение: INPUT: ABCD# OUTPUT: ABCD
INPUT: 1#ABCD OUTPUT: 1
INPUT: Four score and seven years ago# OUTPUT: Four score and seven years ago
[восемьдесят семь лет назад]
Комментарий, описывающий поведение программы CopyTwice {Копирует символы, предшествующие # из INPUT в OUTPUT Программа выдаст ошибку, если в INPUT отсутствует #} ничего не говорит о файлах типа CHAR. Комментарий для всей программы должен описывать ее поведение доступное извне и не вдаваться в детали реализации, посколько он предназначен для того, кто планирует использовать программу а не разбираться как она работает. Далее комментарии освещают детали реализации. Этот обобщается в принципе написания комментариев:
Используйт е имена переменных в комментариях только после того как они были объявлены.
Соблюдающий это правило автоматически размещает информацию о том как работает программа за комментариями, предназначенными для того чтобы рассказать что она делает.
Частичная таблица выполнения показывает содержимое файлов во время выполнения.
|