русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Копирование файлов


Дата добавления: 2015-06-12; просмотров: 568; Нарушение авторских прав


 

Типичная операция над файлами копирует один файл в другой. Программа 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. Комментарий для всей программы должен описывать ее поведение доступное извне и не вдаваться в детали реализации, посколько он предназначен для того, кто планирует использовать программу а не разбираться как она работает. Далее комментарии освещают детали реализации. Этот обобщается в принципе написания комментариев:

 

Используйт е имена переменных в комментариях только после того как они были объявлены.

 

Соблюдающий это правило автоматически размещает информацию о том как работает программа за комментариями, предназначенными для того чтобы рассказать что она делает.

 

Частичная таблица выполнения показывает содержимое файлов во время выполнения.

 

 

После выполнения Условие INPUT OUTPUT Chars Ch
REWRITE(Chars) READ(INPUT, Ch) WHILE Ch <> ‘#’ BEGIN WRITE(Chars, Ch) READ(INPUT, Ch) END WHILE Ch <> ‘#’ BEGIN WRITE(Chars, Ch) READ(INPUT, Ch) END WHILE Ch <> ‘#’ WRITELN(Chars, '#') RESET(Chars) READ(Chars, Ch); WHILE Ch <> ‘#’ DO BEGIN WRITE(OUTPUT, Ch) READ(Chars, Ch) END WHILE Ch <> ‘#’ DO BEGIN WRITE(OUTPUT, Ch) READ(Chars, Ch) END WHILE Ch <> ‘#’ WRITELN(OUTPUT) END.     TRUE     TRUE     FALSE   TRUE   TRUE   FALSE AB# AB# AB# AB# AB# AB# AB# AB# AB# AB# AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB# _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A_ A_ A_ A_ A_ A_ AB_ AB_ AB_ AB_ AB/_ AB _ _ _ _ A_ A_ A_ A_ A_ AB_ AB_ AB_ AB_ AB#/_ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/ AB#/   ? A A A A B B B B B # # # # # A A A A A B B B B B B # # # #  

 



<== предыдущая лекция | следующая лекция ==>
Синтаксис и семантика файлов. | Разделение файлов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.103 сек.