sonyps4.ru

Стандартные процедуры функции модуля dos. Модульное программирование

Описание.

Редактор vi — один из первых редакторов, разработанных для операционных систем UNIX. Он и по сей день остается одним из самых мощных редакторов и стандартно поставляется практически с каждой операционной системой типа UNIX. В нем отсутствует меню, и все действия осуществляются с помощью клавиш и клавиатурных комбинаций.

Редактор vi работает в двух режимах —

командном

набора текстов

Сразу после запуска vi находится в командном режиме. В этом режиме нажатия клавиш интерпретируются как команды редактору, а не как текст, вводимый в документ.

Чтобы переключиться в режим ввода текста, необходимо нажать одну из клавиш:

означает

(присоединить). В этом режиме вводимый текст вставляется после символа, на котором находится курсор.

означает

(вставить). В этом режиме вводимый текст вставляется перед символом, на котором находится курсор.

И, наконец, клавиша

означает

(открыть). Это приводит к тому, что после строки, на которой находится курсор, в текст вставляется новая строка. Затем курсор перемещается на новую строку, и редактор переходит в режим insert, разрешая ввод текста на новой строке.

Имеется также несколько других команд для установки режима ввода текста, которые применяются не так часто. Это команда

Которая

добавляет пустую строку над текущей строкой

; и команда

Которая

начинает вставлять текст в конце текущей строки

Из режима ввода текста в командный режим можно вернуться нажатием клавиши

При переходе в командный режим редактор vi по умолчанию выдает звуковой сигнал.

Перемещение по тексту в редакторе vi.

Перемещаться по тексту в режиме ввода текста можно, как правило, с помощью курсорных клавиш, или клавиш

Page Up / Page Down

Однако на терминале это не всегда функционирует. Кроме того, на некоторых терминалах эти клавиши могут отсутствовать. На этот случай имеются другие клавиши, позволяющие перемещаться по документу в командном режиме.

Чтобы воспользоваться этими клавишами перемещения, нажмите клавишу Escape для перехода в командный режим. В этом режиме можно пользоваться клавишами

для перемещения курсора влево, вниз, вверх и вправо. Вот несколько советов, которые помогут запомнить их назначение:

l — крайняя справа и поэтому перемещает курсор вправо.

h — крайняя слева и перемещает курсор влево

j — немного похожа на стрелку, направленную вниз. Соответственно, она перемещает курсор вниз

k — перемещает курсор вверх.

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

Обратите внимание, что с каждой командой этой таблицы по умолчанию используется число 1. Клавиша j перемещает вниз на 1 строку, клавиша k перемещает его вверх на 1 строку, и так далее. Все эти команды можно модифицировать, вводя перед ними число. Так, следующая команда перемещает вниз не на одну строку, а на пять: 5j

Следующая команда перемещает курсор на 75-ю строку файла, редактируемого в данный момент:75G

А вот команда, которая перемещает курсор на пятую снизу строку экрана:5L

Данный синтаксис справедлив для всех команд из таблицы, за исключением команды

которая перемещает курсор к первому символу документа, не являющегося пробелом.

Прочие клавиши перемещения.

Помимо описанных выше клавиш перемещения курсора, имеется еще несколько клавиатурных комбинаций, выполняющих прокрутку текста на экране (см. ниже):

Команды редактирования текста.

В редакторе vi клавиши

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

Операции над файлами и выход из редактора vi

Это операции загрузки и сохранения файлов в редакторе vi.

— записать изменения в файл.

— загрузить файл для редактирования.

— выйти из редактора без сохранения.

Поиск в тексте и замена текста в редакторе vi.

начало шаблона прямого поиска в командном режиме. Например /ufs .

— начало шаблона обратного поиска в командном режиме.

— удаление строки.

— копирование текста во внутренний буфер.

— вставка текста из буфера.

Копирование, вырезание и вставка текста в редакторе vi:

Текст из буфера можно вставить на любое место документа, перемещая на требуемое место курсор и применяя команду р или Р. Команда

вставляет текст в документ после курсора. Команда

вставляет текст перед курсором. Текст продолжает оставаться в буфере и после того, как вы вставите его в документ. Поэтому можно снова использовать эти команды для вставки текста в документ в других местах.

Предостережение

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

Редактор Vi - универсальный полноэкранный текстовый редактор в среде UNIX . Редактор Vi присутствует в любой системе Linux (даже минимальной конфигурации) и обязательно запустится из командной строки Linux в самой катастрофической ситуации. У пользователя, таким образом, всегда сохранится возможность отредактировать конфигурационные файлы для приведения системы в рабочее состояние. Поэтому каждому пользователю Linux необходимы хотя бы основные навыки работы в Vi .

Основные понятия

В любой момент при работе в редакторе Vi вы находитесь в одном из трёх режимов редактора:

  • командный режим (command mode );
  • режим ввода (insert mode );
  • режим последней строки (last line mode ).

При запуске редактора Vi вы оказываетесь в командном режиме . В этом режиме можно давать команды для редактирования файлов или перейти в другой режим. Например, вводя x в командном режиме мы удаляем символ, на который указывает курсор. Клавиши-стрелки перемещают курсор по редактируемому файлу. Как правило, команды, используемые в командном режиме, состоят из одного или двух символов.

Основной ввод и редактирование текста осуществляется в режиме ввода . При использовании редактора Vi основное время, скорее всего, будет проводиться именно в этом режиме. Переход в режим ввода из командного режима осуществляется командой i (сокращение от insert ). Находясь в режиме ввода, можно вводить текст в то место, куда указывает курсор. Выход из режима ввода в командный режим осуществляется клавишей Esc .

Режим последней строки - специальный режим, в котором редактору даются сложные команды. При вводе этих команд они отображаются в последней строке экрана (отсюда пошло название режима). Например, если ввести в командном режиме команду: , то осуществится переход в режим последней строки, и можно будет вводить такие команды, как wq (записать файл и покинуть редактор Vi ) или q! (выйти из редактора Vi без сохранения изменений). В режиме последней строки обычно вводятся команды, название которых состоит из нескольких символов. В этом режиме в последнюю строку вводится команда, после чего нажимается клавиша Enter , и команда исполняется.

Запуск редактора Vi

Для уяснения всех концепций редактора Vi запустим его и создадим новый файл по имени test :

$ vi test ~ ~ ~ ~ ~ ~ "test"

Колонка символов ~ обозначает пустые строки, курсор находится в начале первой строки.

Ввод текста

Редактор Vi сейчас находится в командном режиме. Нажмём клавишу i , и редактор перейдёт в режим ввода текста. Теперь вводим, например, следующий текст:

Многие пользователи предпочитают наделенный сказками редактор Emacs. ~ ~ ~ ~ ~

Введите любое количество строк, после каждой нажимая клавишу Enter . Исправлять опечатки можно с помощью клавиши Backspace . Для выхода из режима ввода и возвращения в командный режим нажмём клавишу Esc .

В командном режиме для движения по файлу можно использовать клавиши-стрелки. Если в файле всего одна строка, то при попытке нажать клавишу со стрелкой вверх либо вниз редактор, возможно, будет подавать звуковой сигнал.

Помимо команды i , есть ещё несколько способов вставить текст. Так, команда a начинает вставлять текст после текущего положения курсора, а не прямо в текущую. В связи с тем, что текст был набран с опечаткой приведём с помощью клавиш-стрелок курсор к пробелу, разделяющему слова наделенный и сказками . Теперь нажмем клавишу a (редактор перейдёт в режим ввода) и введём под, после чего нажмём клавишу Esc и вернёмся в командный режим. На экране будет следующее:

Для введения текста со следующей строки, используем команду o . Нажмём эту клавишу и введём одну-две строки текста:

Многие пользователи предпочитают наделенный подсказками редактор Emacs. Выбор текстового редактора обычно является вопросом индивидуального вкуса. ~ ~ ~ ~

Удаление текста

В командном режиме каждое нажатие клавиши x удаляет символ, на который указывает курсор.

Можно удалять целые строки командой dd (т. е. нажав клавишу d два раза подряд). Если курсор стоит на второй строке, и вы введёте команду dd , на экране останется следующее:

Многие пользователи предпочитают наделенный подсказками редактор Emacs. ~ ~ ~ ~ ~

Для удаления слова, на которое показывает курсор, можно использовать команду dw . Подведите курсор к слову наделенный и введите dw , затем к слову подсказками и снова введите dw . Результат будет следующим:

Многие пользователи предпочитают редактор Emacs. ~ ~ ~ ~ ~

Изменение текста

Отдельные части текста можно заменять на другие; для этого используется команда R . Подведите курсор к первому символу в слове Emacs , нажмите клавишу R и введите слово vi :

Многие пользователи предпочитают редактор vi. ~ ~ ~ ~ ~

Действие команды R напоминает действие команд i и a , однако при команде R новый текст не вставляется, а стирает старый.

Команда r заменяет один символ, а именно тот, на который указывает курсор.

С помощью команды ~ можно поменять регистр буквы, на которую указывает курсор (с верхнего на нижний и наоборот). Подведем курсор к первому символу в слове vi и дадим команду ~ :

Многие пользователи предпочитают редактор Vi. ~ ~ ~ ~ ~

Команды для движения курсора

Помимо клавиш-стрелок для движения курсора можно использовать клавиши h , j , k и l . Они будут сдвигать курсор соответственно влево, вниз, вверх и вправо. Этими командами можно воспользоваться, если (по какой-либо причине) клавиши-стрелки действуют неправильно. Команда w перемещает курсор на начало следующего слова; команда b перемещает курсор на начало предыдущего слова.

Команда (клавиша ноль) перемещает курсор на начало текущей строки, а команда $ перемещает курсор в её конец.

При редактировании больших файлов для „ перелистывания “ целых экранов вперёд (т. е. вниз) и назад (вверх) используются команды соответственно C trl-F и Ctrl-B .

Для перемещения курсора в конец файла, используется команда G , а команда 10G , например, поместит курсор на строку с номером 10 . Для того, чтобы переместить курсор в начало файла, можно использовать команду 1G .

Команды движения курсора можно совмещать с другими командами, например, с командами удаления текста. Например, команда d$ удалит все, что находится между текущим положением курсора и концом строки; команда dG удалит все, что находится между текущим положением курсора и концом файла и т. д.

Сохранение изменений и выход из редактора Vi

Для выхода из редактора Vi без сохранения изменений, сделанных в файле, используется команда:q! .

Для выхода из редактора Vi с сохранением сделанных изменений используется команда:wq .

Переключение между файлами

Для того, чтобы приступить к редактированию другого файла, используется команда:e , которую следует вводитьтолько после сохранения сделанных изменений командой:w , в противном случае Vi откажется приступить к редактирования следующего файла.

Вставка содержимого других файлов

Включить в текущий файл содержимое другого файла можно командой:r . Например, команда:r foo.txt вставит содержимое файла foo.txt в текст начиная с текущего положения курсора.

Помощь в работе с редактором Vi

Как и в случае с любой программой в системе Linux в первую очередь следует обратиться к экранной документации программы Vi . Обычно (кроме режимов восстановления после системных сбоев) доступна более современная и улучшенная версия Vi - Vim , имеющий аналогичный Vi интерфейс и массу дополнительных возможностей. Подробное руководство по Vim можно получить, запустив этот редактор и отдав команду:help .

Тот самый Turbo Pascal, с которого многие начинали.

Язык программирования Pascal был создан Никлаусом Виртом. Назван в честь французского философа и математика XVII века Блеза Паскаля. В то время Вирт был профессором информатики в Федеральном техническом университете в Швейцарии и нуждался в языке, с помощью которого можно было обучать студентов навыкам программирования. Концепция Паскаля была разработана Н. Виртом примерно в 1970 году и Паскаль быстро получил широкое распространение благодаря легкости его изучения, наглядности составленных на нем текстов программ. Поскольку Паскаль послужил основой для разработки других языков программирования, таких как Ада и Модула-2, и поскольку многие языки содержат аналогичные Паскалю структуры, знание Паскаля является солидной базой для изучения других языков программирования. В середине 70-х годов была создана попытка разработать международный стандарт на Паскаль. В результате в 1982 году появился стандарт ISO 7185. Язык Паскаль стараниями Андерса Хейлсберга превратился в мощную профессиональную систему программирования Turbo Pascal. Появление инструментальных средств Borlаnd Pascal with Objects и Delphi для разработки программ в среде Windows лишний раз показала, какие неисчерпаемые возможности таит в себе Паскаль. Borland Pascal и используемый в Delphi язык Object Pascal основываются на Turbo Pascal и развивают его идеи. Delphi - компилятор языка Pascal. Delphi 1 был первым инструментарием разработки Windows приложений, объединившим в себе оптимизирующий компилятор, визуальную среду программирования и мощные возможности работы с базами данных. Годом позже Delphi 2 предложил все то же, но на новом уровне современной 32-битной операционной системы Windows 95 и Windows NT. Кроме того, Delphi 2 предоставил программисту 32-битовый компилятор, создававший более быстрые и эффективные приложения, мощные библиотеки объектов. Продолжительная работа команды разработчиков Delphi привела к появлению в третьей версии продукта расширенного набора инструментов для создания приложений, возможности использования технологий COM для разработки приложений WWW и многих других современных технологий программирования. Delphi 4 является очередным шагом в эволюции компиляторов Паскаля с тех времен, когда более 16 лет назад Андерс Хейлсберг создал первый компилятор Turbo Pascal.

Добавлено--

про "Error 200".

RTL выпуска до 1994-го года ещё не содержала в модуле CRT этой ошибки.
Она появилась после обновления RTL 1994-го года и позднее.

Если использовать даже непропатченную оригинальную RTL 1994-го года с этим багом, но в программе не подключать юнит CRT, то никакой "Error 200" в программе не будет.

И наоборот, стоит только написать в программе "uses crt;", как файл окажется неработоспособен на быстрых машинах, потому что ошибка в том модуле CRT проявлялась уже во время автоматической инициализации библиотеки CRT при старте программы.

Чтобы использовать в программе величины, описанные в интерфейсной части модуля, имя модуля следует указать в разделе uses . Можно записать несколько имен модулей через запятую, например:

program example; uses Average, Graph, Crt;

После этого все описания, расположенные в интерфейсных секциях модулей, становятся известными в программе, и ими можно пользоваться точно так же, как и величинами, определенными в ней непосредственно. Поиск модулей выполняется сначала в библиотеке исполняющей системы, затем в текущем каталоге, а после этого - в каталогах, заданных в диалоговом окне Options (Directories .

Если в программе описана величина с тем же именем, что и в модуле, для обращения к величине из модуля требуется перед ее именем указать через точку имя модуля.

ПРИМЕЧАНИЕ К любой программе автоматически подключается стандартный модуль System , который содержит библиотеку исполняющей системы Паскаля.

Пример использования модуля из пример 4.6 приведен в пример 4.7 . Программа находит разность средних арифметических значений двух вещественных массивов.

Program dif_average; uses Average; var a, b: mas; i: integer; dif, av_a, av_b: real; begin for i:= 1 to n do read(a[i]); for i:= 1 to n do read(b[i]); average(a, av_a); average(b, av_b); dif:= av_a – av_b; writeln("Разность значений ", dif:6:2); end. Листинг 4.7. Разность средних арифметических значений массивов (модуль)

Стандартные модули Паскаля

В Паскале имеется ряд стандартных модулей, в которых описано большое количество встроенных констант, типов, переменных и подпрограмм. Каждый модуль содержит связанные между собой ресурсы. Ниже приводится краткая характеристика модулей Паскаля.

Модуль System

Модуль System содержит базовые средства языка, которые поддерживают ввод-вывод, работу со строками, операции с плавающей точкой и динамическое распределение памяти. Этот модуль автоматически используется во всех программах, его не требуется указывать в операторе uses . Он содержит все стандартные и встроенные процедуры, функции, константы и переменные Паскаля.

Модуль Crt

Program luck; uses crt; const max = 10; var i, k, n: integer; begin clrscr; { очистить экран } randomize; i:= random(max); { загадать число } window(20, 5, 60, 20); { определить окно } TextBackGround(Blue); { цвет фона – синий } clrscr; { залить окно фоном } TextColor(LightGray); { цвет символов – серый } k:= –1; { счетчик попыток } GotoXY(12, 5); writeln(" Введите число: "); repeat { цикл ввода ответа } GotoXY(20, 9); { установить курсор } readln(n); { ввести число } inc(k); until i = n; window(20, 22, 60, 24); { определить окно результата } TextAttr:= 2 shl 4 + 14; { желтые символы за зеленом фоне } clrscr; { залить окно фоном } GotoXY(6, 2); { установить курсор } writeln(" Коэффициент невезучести: ", k / max:5:1); readkey; { ждать нажатия любой клавиши } TextAttr:= 15; { белые символы на черном фоне } clrscr; { очистить после себя экран } end. Листинг 4.8. Пример использования модуля Crt

Генератор случайных чисел формирует число, находящееся в диапазоне от нуля до max – 1 . Пользователь вводит числа в одну и ту же позицию на экране до тех пор, пока не угадает это число. При угадывании с первого раза коэффициент невезучести равен нулю.

Модули Dos и WinDos

Модули Dos и WinDos содержат подпрограммы, реализующие возможности операционной системы MS-DOS, такие как переименование, поиск и удаление файлов, получение и установка системного времени, выполнение программных прерываний и т. д. Эти подпрограммы в стандартном Паскале не определены. Для поддержки подпрограмм в модулях определены константы и типы данных.

Модуль Dos использует строки Паскаля, а WinDos - строки с завершающим нулем.

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек - пикселов (pixel, сокращение от picture element ). Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали (разрешение экрана ) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы - графического драйвера .

В состав оболочки входят несколько драйверов, каждый из которых может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом. Самый "мощный" режим, поддерживаемый модулем Graph , - 640 480 точек, 16 цветов. Модуль Graph обеспечивает:

Модуль Strings

Модуль Strings предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Этот вид строк введен в Паскаль специально для работы с длинными строками и программирования под Windows. Модуль Strings содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string , поиска подстрок и символов.

Модули.

Описание модулей.

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

Модуль состоит из заголовка, интерфейсной части , исполнительной части и секции инициализации .

Заголовок модуля похож на заголовок программы, однако вместо слова program ставится зарезервированное слово unit.

Модуль должен находится в файле, имя которого совпадает с именем в заголовке, файл должен иметь расширение .pas .

Интерфейсная часть служит для взаимодействия основной программы с модулем. Она начинается с зарезервированного слова interface. В ней должны быть указаны константы, типы данных, переменные, процедуры и функции, которые может использовать основная программа, вызывающая этот модуль. Если модуль использует еще какие-то модули, то они должны быть указаны в интерфейсной части следующим образом: пишется зарезервированное слово uses, затем перечисляются необходимые модули (заметим, что так же обозначаются и модули в разделе описания основной программы). Цепочка используемых модулей может быть сколь угодно длинной, однако она не может содержать циклы. Например, допустима цепочка:

А цепочка

недопустима, поскольку она содержит цикл A uses B uses A.

Процедуры и функции тоже объявляются в интерфейсной части модуля, но при этом разрешено лишь перечислять их заголовки, подобно предварительному объявлению с директивой forward.

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

Иногда при вызове модуля следует произвести некоторые действия, например инициализировать какие-либо переменные, установить какие-либо связи и т.д. Все эти действия указываются в секции инициализации , которая выглядит, как обычное тело программы: между словами begin и end с точкой находятся операторы. Если при вызове модуля никаких подобных действий производить не нужно, то секция инициализации состоит лишь из слова end с точкой.

Чтобы использовать процедуры, функции и другие объекты модуля в основной программе, необходимо написать зарезервированное слово uses, затем имя модуля. После этого объекты модуля можно использовать так, как если бы они были описаны в основной программе.

Рассмотрим теперь модули, которые поставляются в стандартном комплексе Turbo Pascal, но функции и процедуры которых не являются стандартными.

Модуль CRT.

Модуль Crt содержит процедуры, функции и константы для работы с экраном в текстовом режиме, работы с клавиатурой и генерации звука.

Подпрограммы этого модуля позволяют управлять текстовыми режимами экрана, использованием цветов и окнами, яркостью свечения символов, а также расширенными кодами клавиатуры и звуком.

В текстовом режиме весь экран разбивается на строки (их, как правило, 25), а каждая строка - на отдельные позиции (их обычно по 80 в каждой строке) находится в левом верхнем углу экрана.

Модуль DOS.

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

Модуль GRAPH.

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

Запустить программу, использующую модуль GRAPH, без графического драйвера (одного или нескольких - это файла с расширением.BGI) не удастся. Указанные драйверы не входят в состав модуля, но поставляются с Turbo Pascal (они содержаться в каталоге BGI). А если в программе используются векторные шрифты, в дополнение е драйверам потребуются также файлы шрифтов (файлы с расширением.CHR).



Загрузка...