Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) ( 91 ) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (91)

ветствии с фактическим положением программы в памяти. Информацию для перемещения обеспечивает транслятор. Наконец, для локализации в программе логических ощибок потребуются средства отладки.

Перечисленные выще программы, по существу, помогают эффективно использовать ЭВМ и сокращают сроки разработки прикладных программ. В мини-ЭВМ и системах проектирования микро-ЭВМ они хранятся в накопителях на магнитных дисках и работают под управлением программы-монитора. Для некоторых микро-ЭВМ данные программы поставляются на перфоленте.

РЕДАКТОР ТЕКСТА

Системная программа, предназначенная для создания и модификации исходных программ (текстовых файлов), называется редактором текста. Текстовой файл представляет собой последовательность записей (строк), состоящих из буквенно-цифровых и управляющих символов. В качестве разделителей строк обычно используется комбинация символов возврата каретки CR (ВК) и перевода строки LF (ПС), а окончание файла идентифицируется символом конца файла EOF.

Собственно редактирование осуществляется пользователем с помощью приказов (команд), вводимых с системной консоли, например электрифицированной пишущей машинки. Во всех редакторах текста имеются приказы манипуляций строками и символами, а более сложные редакторы могут манипулировать целыми файлами, например объединять несколько файлов в один. Размер редактора текста зависит от его возможностей и варьируется в пределах 1К- 8Кбайт. .

Редактируемый текст размещается в области оперативной памяти, которая называется буфером текста. Размер буфера текста не фиксируется (кроме естественного максимума) и изменяется в зависимости от реальной длины текста. Для локализации текущей позиции в буфере текста используется переменная, называемая указателем буфера BUFPTR или просто указателем PTR. Указатель напоминает метку на экране символьного дисплея, но в позицио нировании его имеется одна особенность. Метка идентифицирует символьную позицию, в которую с клавиатуры или из ЭВМ будет вводиться очередной символ, а указатель буфера адресует позицию между двумя соседними символами. Символ вводится в позицию, непосредственно предшествую-



щую указателю буфера. С помощью специальных приказов допускается позиционирование указателя в любую точку внутри буфера текста, а передвижение его вне границ начала и конца буфера блокируется. В некоторых редакторах текста вводится еще одна переменная (маркер), которая используется для запоминания положения указателя буфера.

Вызов редактора текста из внешней памяти осуществляется приказом EDIT, а готовность его к работе определяется выводом стимулирующего символа, например звездочки. Редактор текста может вводиться также с перфоленты.

Редактор выполняет несколько функций, из которых основными являются модификация ранее созданного файла, а также создание и редактирование нового текстового файла. В обоих случаях приказ EDIT как аргумент содержит имена соответствующих файлов. Рассмотрим типичные приказы редактора, идентифицируемые символьными мнемониками.

С помощью приказа I (insert) осуществляется ввод данных в буфер текста с системной консоли. После распознавания буквы I редактор идентифицирует последующие вводимые символы, как текст, до восприятия символа EOF или изменения режима управляющей клавишей. При нажатии клавиши CR редактор автоматически добавляет к тексту символ LF и переходит к восприятию следующей строки.

Приказ печати Т (type) используется для проверки правильности текста, содержащегося в буфере. Для указания объема выводимого текста приказ Т имеет префиксный аргумент п, представляющий собой десятичное целое со знаком. Если п>0, на консоли печатается текст от текущего полон<ения указателя буфера до п-го символа возврата каретки (печать п строк вперед). Когда же п<0, печатаются п строк, находящиеся перед текущей строкой до достижения указателя буфера (печать п строк назад). При п=0 печатается текст от начала текущей строки до указателя буфера. По умолчанию (аргумент отсутствует) принимается значение п=1, что вызывает печать текста от указателя буфера до конца текущей строки.

С помощью нескольких приказов осуществляется позиционирование указателя буфера. Приказ В (beginning) передвигает указатель на начало буфера текста и используется для задания начальной точки при подсчете строк текста и поиске определенного фрагмента текста, а также распечатке содержимого всего буфера. Приказ Z перемещает указатель на конец буфера текста и применяется для добав-



ления в буфер нового текста. Приказ L(line) передвигает указатель на задаваемое префиксным аргументом п число строк вперед (п>0) или назад (п<0) относительно текущей строки и помещает его в начало соответствующей строки. Если п = 0, указатель буфера передвигается иа начало текущей строки. Приказ С (character) имеет такую же семантику, что и приказ L, но его аргумент п определяет число символов, причем по умолчанию принимается значение п=1, а аргумент п=0 не влияет на положение указателя. Приказ С удобно использовать для перемещения указателя в пределах текущей строки.

Еще одну группу образуют приказы удаления текста. Приказ К (kill) стирания строк имеет префиксный аргумент п. Если п>0, производится стирание текста впереди от текущего положения указателя буфера до п-го символа перевода строки, а при п<:0 стирается текст, включающий в себя п строк, сзади от текущего положения указателя буфера. Когда п=0, удаляется часть текущей строки от начала ее до указателя буфера. По умолчанию предполагается значение п=1 и удаляется часть текущей строки от указателя до ее конца. Приказ D (delete) удаления символов также имеет префиксный аргумент п. Его семантика аналогична семантике приказа К, но он оперирует символами, а не строками. По умолчанию принимается значение п=1, а приказ 0D оказывается пустым.

Приказы поиска предназначены для отыскания в буфере заданных символьных цепочек. Приказ поиска F (find) с последующей цепочкой, максимальная длина которой зависит от возможностей редактора, инициирует поиск первого появления в буфере заданной цепочки. Поиск начинается от текущего положения указателя буфера и заканчивается при достижении конца буфера или при успещном поиске. В последнем случае указатель буфера размещается за последним символом найденной цепочки и выводится стимулирующий символ, запрашивающий ввод следующего приказа. Рекомендуется проверить правильность поиска с помощью приказа печати, поскольку отыскиваемая цепочка может встретиться в нескольких местах текста. Например, при поиске метки MULT поиск заканчивается успешно, если первой встретится цепочка MULT88. Если при достижении конца буфера поиск оказался безуспешным, редактор выводит стандартное сообщение и возвращает указатель на начало буфера.

Приказ S (substitute) отыскивает заданную в нем символьную цепочку и заменяет ее новой цепочкой, также оп-



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) ( 91 ) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)