Cтраница 1
Обработка конца файла программируется вслед за предложением PERFORM MAIN-ROUTINE. Таким образом, читателю явно показана логика работы программы и условия выполнения отдельных предложений. Дополнительные затраты машинного времени на структуризацию связаны только с выполнением лишнего предложения ЕСЛИ. [1]
Для обработки конца файла в примере, приведенном в разд. [2]
Такой способ обработки конца файла слегка отличается от рассмотренного нами раньше. Это естественно, так как псевдокод не определен строго, и просто нужно писать так, чтобы быть как можно ближе к выбранному языку программирования. Поэтому естественно включить в наш текст реакцию на прерывание по концу файла, хотя в других языках, отличных от ПЛ / 1, ее может и не быть. [3]
Есть и другой способ обработки конца файла, при котором можно обойтись без этого лишнего ЕСЛИ. Он заключается в чтении одной записи еще при осуществлении начальных действий. Тогда основной цикл состоит из обработки прочитанной записи, за которой следует программа чтения следующей записи. Цикл по-прежнему управляется индикатором конца файла. Поскольку предложение ЧИТАТЬ: - л ершает цикл, а конструкция В КОНЦЕ включает индикатор, он будет проверяться до обработки очередной записи в предложении ВЫПОЛНИТЬ... [4]
![]() |
Псевдокод - программа анализа температуры. [5] |
На рис. 4.4 снова приведена программа анализа температуры, с отступами, мнемоническими именами данных, ВСЕ-ЕСЛИ, присваиванием начальных значений и структурной обработкой конца файла. [6]
Следующий пример подобен предыдущему. Однако здесь вводится индикатор с противоположным смыслом и обработка конца файла происходит за пределами цикла. [7]
Если один из отрезков является последним в файле, перейти к обработке конца файла. [8]
Рассмотрим теперь примеры, показывающие, как пользоваться структурами в типичных ситуациях. Традиционно для этого применяется конструкция В КОНЦЕ предложения ЧИТАТЬ, в которой указан переход к программе обработки конца файла. При структурном программировании это следует переписать так, чтобы управление передавалось только вперед и параграф, содержащий ЧИТАТЬ, имел только один выход. Таким образом, даже при окончании файла управление должно передаваться следующему предложению. Поэтому нужен индикатор конца файла. [9]
Как известно, наилучший путь достижения этого состоит в таком писании программы, при котором ее части как можно более разобщены с тем, чтобы изменение в одной не влияло на другие. Мы пытаемся ввести в отдельные модули те детали, которые делают программу менее общей, и передавать детали некоторым операторам специфического вида. Например, в программах GETC и PUTC скрыты все детали набора символов, строк, записей, назначения файлов и обработки конца файла; это - основная причина, по которой мы используем их вместо непосредственного вызова READ и WRITE. Аналогично этому программа DETAB организована так, чтобы основная программа не имела отношения к представлению позиций табуляции, а была предназначена только для подсчета колонок. [10]