Написанную с помощью экранного редактора программу нужно затем скомпилировать — преобразовать исходный текст к виду, доступному для вычислительной машины (получить машинный код, состоящий из двоичных данных и инструкций процессора), и объединить в одно целое части программы. Здесь же к программе добавляются подпрограммы из стандартных модулей. В результате компиляции будет получена либо программа, находящаяся в оперативной памяти машины, либо программа, размещенная в файле на диске. Файл будет иметь то же имя, что и файл с исходным текстом программы, но с расширением .ЕХЕ. Исключением являются файлы модулей, которые после компиляции получают расширение .TPU.
Компиляция простейших программ, состоящих из одного файла, осуществляется с помощью команды меню Compile| Compile (см. п. 17.5.5) или комбинации клавиш Alt+F9. В этом случае компилируется программа, находящаяся в актив-ном окне редактирования. Эти программы могут включать также файлы типа Include, присоединяемые ключом компилятора ($1 ).
Работа с Файлами в Pascal
Место размещения скомпилированной программы — в оперативной памяти или на диске — зависит от выбранного параметра, задаваемого командой меню Compile I Destination. Первоначально желательно компилировать программу в оперативную память, т. к. это ускоряет процесс компиляции. Окончательно целесообразно скомпилировать программу на диск с тем, чтобы можно было в дальнейшем запускать ее не из интегрированной среды. Компиляция на диск может потребоваться и в том случае, когда программа слишком велика и не помещается в оперативной памяти.
Сложные программы, использующие модули, компилируются либо с помощью команды меню Compile | Make (этой команде эквивалентна клавиша F9), либо с помощью команды меню Compile | Build. Перед использованиеми этих программ следует предварительно задать имя основного файла, с которого начнется компиляция, с помощью команды меню Compile|Primary file (см. п. 17.5.5).
При использовании команды Compile | Make наряду с компиляцией основного файла компилируются и все другие файлы, которые используются основным файлом и у которых к моменту компиляции был изменен текст. Если же у такого используемого и уже скомпилированного файла не было изменений в тексте с момента его последней компиляции, то он не перекомпилируется.
При компиляции с помощью данной команды совсем не обязательно, чтобы основной файл находился в активном окне, более того, он вообще может быть не вызван ни в одно из окон редактирования. Это замечание касается и любого используемого файла. Все эти файлы в этом случае автоматически по мере необходимости вызываются в оперативную память.
Если в каком-либо из них во время компиляции будет обнаружена синтаксическая ошибка, этот файл будет отображен на экране дисплея в активном окне редактирования. Будет одновременно указано курсором место ошибки в тексте и выведено сообщение о ней. В какое конкретно окно (старое активное или новое) будет отображен файл, зависит от установленного параметра в селективном списке Source tracking, вызываемого командой меню Options I Environment! Preferences (см. п. 17.5.8).
Pascal ABC. Структура программы
Использование команды меню Compile | Build отличается от предыдущего случая только тем, что все используемые файлы перекомпилируются безусловно.
Компилятор выявляет ошибки, связанные с нарушением правил написания предложений языка (синтаксические ошибки). При этом компиляция прекращается, выводится сообщение об ошибке, а курсор указывает место в тексте программы, где находится ошибка. Если обнаружена ошибка, объектный файл не создается, ошибку следует устранить, а затем вновь скомпилировать программу.
Если компиляция завершилась успешно, на экран выдается соответствующее сообщение.
-
— переключающий ключ (задает формирование «дальней» адресации);
— ключ параметра (подключение объектного файла);
— ключ условной компиляции («Если происходит отладка. «).
17.7.1. Переключающие ключи
Эти ключи задают (знак +) или запрещают (знак -) тот или иной режим компиляции. По диапазону действия эти ключи могут быть глобальными, когда их действие распространяется на всю программу, и локальными, действие которых распространяется только на часть программы. Глобальные ключи могут стоять только в самом начале программы или модуля (перед ними может быть только заголовок, комментарий или другие ключи). Локальные ключи могут располагаться в любом месте программы там, где это необходимо.
Переключающие ключи можно задавать в одну строку, перечисляя их через запятую, но без пробелов, например,
Далее для каждого ключа этой категории приведено краткое описание, его значение по умолчанию, тип, эквивалент среди команд меню.
— выравнивание по границе машинного слова Если используется ключ , данные размером больше одного байта записываются в память начиная с четного адреса. Такое размещение немного увеличивает объем требуемой памяти, но ускоряет процесс работы с данными. При ключе данные располагаются начиная с первого свободного адреса. Ключ является глобальным.
Более того, если в программе используется несколько файлов, во всех файлах должны быть одинаковые ключи. По умолчанию используется ключ . Эквивалент меню — Options| Compiler| Word align data.
— полное вычисление логических выражений Если используется ключ , происходит полное вычисление логических выражений (см. п. 4.4.2). В противном случае (когда используется ключ ) производится укороченное вычисление. Ключ является локальным. По умолчанию используется ключ . Эквивалент меню — Options| Compiler| Complete boolean eval,
— отладочная информация Если используется ключ , фиксируется связь отдельных строк программы с адресами соответствующих кодов скомпилированной программы. Это позво-ляет фиксировать место обнаружения ошибки, использовать возможности интегрированного отладчика (задавать точки останова, выполнять программу по шагам и т. д.). Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню — Options | Compiler (Debug infirmation.
— эмуляция сопроцессора Если используется ключ , в процессе компоновки программы используется библиотека, позволяющая реализовать функции сопроцессора программным образом, если он отсутствует. Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню — Options|Compiler|Emulation.
— формирование «дальних» или «ближних» адресов Если используется ключ , для подпрограмм формируются «дальние» адреса, состоящие из адреса сегмента и смещения. Если ключ — формируются «ближние» адреса, представляющие собой только смещения. Ключ эквивалентен директиве far, а ключ — директиве near (см. п. 10.5.2). Ключ является локальным. По умолчанию используется ключ . Эквивалент меню — Options I Compiler | Force far calls.
— формирование команд для процессора 80286 Если используется ключ , компилятор включает при необходимости инструкции процессора 80286 и эти программы не могут выполняться на процессорах 8086 и 8088. Если используется ключ , скомпилированная программа может выполняться на любом процессоре семейства 80×86. Ключ является локальным. По умолчанию используется ключ . Эквивалент меню -Options I Compiler 1286 instructions.
— проверка результата ввода-вывода Если используется ключ , при возникновении ошибки ввода-вывода программа прекращает работу. В случае ключа при возникновении ошибки ввода-вывода программа не выбрасывается, а код ошибки можно получить с помощью функции IOResult. Ключ является локальным. По умолчанию используется ключ . Эквивалент меню — Options|Compiler| I/O checking.
— включение информации о локальных параметрах модулей Если используется ключ , включается информация о локальных параметрах модулей (параметрах исполнительной части модулей). Это позволяет анализировать значения таких параметров и даже модифицировать их при отладке. Действует только совместно с ключом . Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню Options I Compiler | Local symbols.
— использование сопроцессора Если используется ключ , при компиляции формируются инструкции для сопроцессора 8087/80287. В противном случае операции, выполняемые сопроцессором, реализуются программным путем (не следует путать с эмуляцией сопроцессора — см. ключ , когда инструкции сопроцессора реализуются программным образом). Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню — Options | CompilerI8087/80287.
— использование оверлейных структур Применяется в модулях, которые могут использоваться как оверлейные (перезагружаемые). Если используется ключ , модуль можно затем использовать как оверлейный, подключая к основной программе ключом (см. п. 17.7.2). Ключ следует использовать совместно с ключом для формирования «дальних» адресов подпрограмм. Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню -Options | Compiler| Overlays allowed.
— использование в качестве параметров массивов открытого типа Эквивалент меню — Options | Compiler | Open parameters.
— проверка переполнения при арифметических операциях Эквивалент меню — Options | Compiler | Overflow checking.
— проверка диапазонов Если используется ключ , проверяется допустимость значений переменных порядкового типа, в том числе индексы элементов массивов и строк. Ключ является локальным. По умолчанию используется ключ . Эквивалент меню, — Options | Compiler | Range checking.
— проверка стека. Если используется ключ , при каждом обращении к подпрограмме проверяется наличие достаточного места в стеке для локальных параметров. Если такого места нет, программа прекращает работу и выдается сообщение об ошибке. В случае ключа эта ситуация приведет к фатальной ошибке в работе системы. Ключ является локальным.
По умолчанию используется ключ . Эквивалент меню — Options | Compiler | Stack checking.
— проверка строковых параметров Если используется ключ , при обращении к подпрограмме и передаче ей параметра типа string фактический и формальный параметры должны быть идентичными (см. пп. 9.1 и 10.3). Если же используется ключ , формальный и фактический параметры могут быть строками разного типа, в том числе и разной длины. Ключ является локальным. По умолчанию используется ключ . Эквивалент меню — Options | Compiler| Strict var-strings.
— использование расширенного синтаксиса Если используется ключ , можно обращаться к подпрограмме-функции как к подпрограмме-процедуре. Этот ключ не действует на функции модуля System. Кроме этого наличие ключа позволяет рассматривать переменные типа PChar (см. п. 6.3) как ASCIIZ-строки. Если используется ключ , попытка использовать подпрограмму-функцию как процедуру приведет к ошибке.
Переменные типа PChar в этом случае являются указателями на первый (нулевой) символ строки (см. п. 6.3). Ключ является глобальным. По умолчанию используется ключ . Эквивалент меню — Options | Compiler | Extended syntax.
Набор указанных выше ключей может меняться в зависимости от этапа создания программы. На этапе компиляции и отладки целесообразно по возможности включить все проверки, что позволит проще выявить многие ошибки программы. Однако после отладки ряд проверок следует отключить, т. к. многие из них приводят к увеличению размера программы и уменьшению быстродействия.
17.7.2. Ключи параметров
Эти ключи позволяют задавать компилятору те или иные параметры (имена файлов, численные значения).
— включение файла По этому ключу текст из файла с именем filename вставляется в то место программы, где находится этот ключ. Допустимая глубина вложенности — до 15. Если у файла не указано расширение, ищется файл с расширением .PAS. Если в имени файла не указан путь, то он сначала ищется в текущем каталоге, а затем в каталогах, заданных командой меню Options | Directories | Include directories.
Этот ключ нельзя использовать внутри любого составного оператора. Ключ является локальным.
— компоновка объектного файла По этому ключу компонуется объектный файл с именем filename к основному файлу. В файле filename находятся подпрограммы, написанные на языке ассемблера и объявленные в основном файле с директивой external. Если у файла не указано расширение, ищется файл с расширением .OBJ. Если в имени файла не указан путь, то он сначала ищется в текущем каталоге, а затем в каталогах, заданных командой меню Options | Directories I Object directories. Ключ является локальным.
— задание размеров памяти С помощью этого ключа задаются размеры элементов памяти: stacksize размер стека (от 1024 до 65520 байт), heapmin минимальный размер динамической памяти (от 0 до 655360 байт), heapmax — максимальный размер динамической памяти (от heapmin до 655360 байт). По умолчанию задаются размеры: . Ключ является глобальным и эквивалентен команде меню Options | Memory sizes.
— компоновка оверлейного модуля По этому ключу подпрограммы оверлейного модуля с именем unitname компонуются к основной программе. Модуль должен быть скомпилирован с ключом . Ключ является локальным и должен стоять в основной программе непосредственно за разделом uses.
17.7.3. Ключи условной компиляции
-
VER70 — используется Turbo Pascal 7.0;
MSDOS — используется стандартный режим операционной системы MS DOS;
CPU86 — используется процессор семейства 80×86;
CPU87 — используется сопроцессор семейства 80×87.
Ключи условной компиляции можно вкладывать друг в друга, максимальное число уровней вложенности — 16.
— определение идентификатора для условной компиляции По этому ключу задается идентификатор name, который затем можно использовать в ключе условной компиляции или .
— прекращение действия идентификатора для условной компиляции По этому ключу прекращается действие идентификатора name, используемого в ключах и .
— компиляция при определенном идентификаторе name По этому ключу осуществляется компиляция последующих операторов программы до ключа или , если перед этим был определен идентификатор name ключом . Этот ключ похож на оператор IF, но выполняется во время компиляции, а не во время работы программы.
— компиляция при неопределенном идентификаторе name По этому ключу осуществляется компиляция последующих операторов программы вплоть до ключа или , если не был определен идентификатор name ключом .
— компиляция при задании ключа switch По этому ключу осуществляется компиляция последующего фрагмента программы вплоть до ключа или , если задан ключ switch; switch задает имя ключа и его состояние (+ или -).
— алтернативная секция ключам , , По этому ключу осуществляется компиляция последующего фрагмента программы вплоть до ключа , если не выполняется условие предыдущего ключа , или . Ключу должен обязательно предшествовать один из этих операторов. Этот ключ похож на секцию ELSE оператора IF, но выполнение происходит во время компиляции, а не во время работы программы.
— завершение условной компиляции Этот ключ устанавливает нижнюю границу действия любого условного ключа.
Пример. Пример использования ключей условной компиляции.
В этом примере для этапа отладки задаются ключи, с помощью которых можно осуществить различные проверки, после отладки проверки отключаются, что уменьшает объем программы и увеличивает быстродействие. Следует иметь в виду, что и в первом, и во втором случае ряд не перечисленных ключей (например, при отладке или после отладки) используются по умолчанию.
Заказать строительство быстровозводимых металлоконструкции можно на сайте компании «ПК ПТМ». |
Источник: 5byte.ru
Учебник по программированию.
§18. Сведения, необходимые для программирования под ОС DOS.
Прежде чем начать изучать модуль CRT и начать программировать по ОС DOS необходимо разобрать ряд следующих понятий.
Консольное приложение. Исполняемый файл.
До сих пор результат работы программы мы видели только в «Окне вывода». На самом деле все написанные нами программы – это программы под операционную систему DOS. Т.е. они могут работать самостоятельно в этой системе. Возникает уместный вопрос – т.к. наша программа может работать самостоятельно, то можно ли её запустить не в среде разработки, и если да, то где она находится. На самом деле если вы ничего не меняли в окне «Настройки» во вкладке «Опции компиляции», то ваши программы ни где не находятся, а существуют только в исходных текстах с расширением PAS.
Дело в том, что когда мы запускаем команду «Выполнить», происходит компиляция программы и автоматический её запуск. Компиляция – это создание исполняемого файла с расширением EXE. Именно исполняемый файл это и есть наша «самостоятельная» программа, которую можно запустить не в среде разработки и на другом компьютере. После выполнения программы этот исполняемый файл автоматически удаляется.
Что бы этот файл не удалялся, необходимо убрать галочку в пункте «Удалять EXE файл после выполнения», который находится в окне «Настройки» во вкладке «Опции компиляции». С окном «Настройки» вы уже знакомы. С выбранной вкладкой «Опции компиляции» оно выглядит следующим образом:
Здесь же можно выбрать место, где должен создаваться исполняемый файл, поставив галочку в пункте «Выходные файлы генерировать в папку». Если галочка не стоит, то файлы будут создаваться в папке, которая указана блеклым цветом в поле ниже данного пункта. В том случае если исходный код вашей программы уже сохранен в файле с расширением PAS, то исполняемый файл будет создаваться в той же папке, что исходный код не зависимо от настроек.
Что бы создать исполняемый файл можно или запустить программу на выполнение или просто откомпилировать её командой «Компилировать».
Если вы запустите исполняемый EXE файл в операционной системе Windows, то появится специальное окно для вывода «Досовских» программ. Выглядит оно следующим образом:
Это окно называется консолью. Отсюда появилось следующее название «Консольное приложение». Поэтому все наши программы, написанные под DOS, называются консольными приложениями. Это окно можно развернуть на весь экран с помощью сочетания клавиш «Alt+Enter». В этом случае на экране будет всё то же самое, что и в операционной системе DOS.
Для того, что бы увидеть свою программу в консольном окне, необязательно создавать EXE файл. Можно запустить команду «Выполнить без связи с оболочкой» из меню «Программа». Или нажать сочетание клавиш «Shift+F9». В этом случае наша программа будет выглядеть так:
Особых различий в способе запуска нет. Суть работы программы от этого не изменится. Однако вы должны знать один нюанс. Если вы запустили программу без связи с оболочкой из среды программирования, то по завершению работы программы автоматически выводится строчка «Программа завершена, нажмите любую клавишу…», при этом программа ждёт, когда вы нажмёте любую клавишу, и только после этого консольное окно закрывается.
Если вы запустите исполняемый файл, то такой строчки автоматически выведено не будет, и консольное окно, не успев открыться, закроется. Дело в том, что при завершении работы программы, закрывается и консольное окно. И все результаты работы программы так же исчезают вместе с ним.
Для того, что бы программа завершалась по нажатию клавиши, добавьте в конец программы процедуру readln. В таком случае программа не завершит свою работу до тех пор, пока не будет выполнена данная процедура, т.е. до тех пор, пока вы не нажмёте клавишу «Enter».
В одном из предыдущих параграфов мы изучали файлы, и среди представленных процедур и функций для работы с файлами была функция, возвращающая текущий каталог. Теперь, когда мы знаем, что такое исполняемый файл, мы можем говорить о том, что такое текущий каталог более подробно. Текущий каталог для программы – это тот каталог, в котором находится исполняемый файл этой программы. Это определение действует до тех пор, пока вы намеренно его не смените.
Особенность работы с текущим каталогом заключается в том, что если вы укажете только имя файла без пути, то этот файл будет найден именно в текущем каталоге. Если вы пишете программу, работающую с файлом, то достаточно указывать только его имя. При этом, когда вы будете переносить программу на другой компьютер или в другое место, следите за тем, что бы данный файл находился в том же каталоге, что и исполняемый.
В отличии от TurboPascal, в справке PascalABC.NET почему то нет описания данного модуля. Как можно его изучить без справки? Для этого можно просто открыть его в любом текстовом редакторе или в редакторе кода PascalABC.NET, а затем просмотреть раздел интерфейса. Находится этот модуль в папке LibSource, там же где и PascalABC.NET.
Открыв модуль, вы увидите, что в нём практически всё подписано с помощью комментариев. Т.к. все комментарии на русском языке, то вам должно быть понятно, то что вам нужно на данный момент, а именно что делает та или иная процедура или функция.
Стоит сразу заметить, что при использовании данного модуля необходимо запускать программу на выполнение без связи с оболочкой, с помощью комбинации клавиш «Shift+F9».
Процедуры и функции для работы с курсором.
Курсор – это мигающая полоска, которая располагается в том месте, куда в данный момент можно вывести символ. В операционной системе Windows курсор представляет из себя вертикальную мигающую полоску, которая может находиться между символами. В операционной системе DOS – это горизонтальная полоска, которая располагается под символами. Соответственно и в консольном окне курсор тоже находится под символом.
Что такое консольное окно мы узнали в одном из предыдущих параграфов. Плюсом к тому, что уже было сказано об этом окне, необходимо сказать, что в консольном окне помещается 25 строк по 80 символов в каждой. Шире консольное окно быть не может, однако если появилось более 25 строк, то в нём появляется полоса прокрутки и его можно прокручивать. Если окно не развёрнуто на весь экран, то можно увеличить его вертикальный размер, при этом в него будет помещаться более 25 строк.
Теперь, объединяя информацию из последних двух абзацев, можно сказать следующее: положение курсора на экране выражается координатами Х и Y. Координата X означает, на сколько символов от левого края отступает курсор. Координата Y означает, в какой строчке сверху находится курсор.
Далее приведены подпрограммы, с помощью которых можно управлять курсором:
function WhereX : integer; – возвращает Х-координату курсора.
function WhereY : integer; – возвращает Y-координату курсора.
procedure GotoXY (x, y: integer); – переводит курсор в координаты (x,y). x – порядковый номер символа в строке, y – номер строки. Если будут указаны координаты превышающие допустимые значения, то команда будет игнорироваться и выполняться не будет.
procedure ShowCursor ; – показывает курсор если он скрыт.
procedure HideCursor ; – скрывает курсор.
Примеры использования данных подпрограмм приводить не буду. У вас должно быть уже достаточно опыта, что бы самим опробовать их.
Функции для работы с клавиатурой.
function KeyPressed : boolean; – возвращает true если была нажата клавиша. В PascalABC.NET данная функция не определяет нажатия клавиш Shift, Alt и Ctr, а так же PAUSE, PRTSC и INS.
function ReadKey : char; – возвращает символ нажатой клавиши. Данной функцией можно определить какая клавиша была нажата.
Далее в таблице указаны порядковые номера возвращаемых символов, при нажатии некоторых клавиш, которые не являются символами:
Источник: www.dvkuklin.ru
Модули
Паскаль обеспечивает доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Их количество велико, однако, в своей программе мы редко используете их все сразу. Поэтому они разделены на связанные группы, называемые модулями. В этом случае Вы можете использовать только те модули, которые необходимы в программе.
Модуль представляет собой набор констант, типов данных, переменных, процедур и функций. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском Вашей программы и осуществляет необходимую инициализацию. Таким образом, модуль представляет собой библиотеку описаний, которую можно вставить в свою программу и которая позволит разбить программу на части, компилируемые отдельно.
Структура модуля
Модуль обеспечивает набор средств благодаря процедурам и функциям при поддержке констант, типов данных и переменных, однако действительная реализация этих средств скрыта в силу того, что модуль разделен на две секции: интерфейса и реализации. Если программа использует модуль, то все описания модуля становятся доступными этой программе, как если бы они были определены в ней самой.
Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Например, рассмотрим модуль:
unit идентификатор; interface uses список модулей; implementation begin end.
Следующим элементом в модуле является ключевое слово interface. Обозначает начало секции интерфейса модуля — секции, видимой всем другим модулям или программам, в которых модуль используется.
Модуль может подключать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface.
Отметим, что здесь выполняется общее правило использования предложения uses: если модуль, имя которого указано в предложении uses, использует другие модули, то имена этих модулей также должны быть указаны в предложении uses, причем до того, как они будут использованы.
Стандартные модули Turbo Pascal
CRT | обеспечивает набор специфичных для РС описаний констант, переменных и программ для операций ввода/вывода. Последние можно использовать для работы с экраном (задание окон, непосредственное управление курсором, цвет текста и фона). Кроме того, Вы можете осуществлять «необработанный» ввод с клавиатуры и управлять платой генерации звукового сигнала персонального компьютера. Этот модуль обеспечивает множество подпрограмм, которые были стандартными в версии 3.0 |
Printer | Используемые пакеты: Crt В модуле Printer дано описание переменной текстового файла Lst, которая связывается с драйвером устройства, позволяющим направлять стандартный для Паскаля вывод на печатающее устройство с помощью Write и Writeln. Например, включив Printer в свою программу, Вы можете сделать следующее: Write(Lst,’Сумма ‘,A:4,’ и ‘,B:4,’ равна ‘); C:=A + B; Writeln(Lst,C:8); |
Overlay | Overlay — содержит инструменты для создания оверлейных программ. Программа OVERKAY — программа, которая загружается не вся , а по частям. |
Graph | Используемые пакеты: Crt Graph обеспечивает набор быстродействующих, эффективных графических подпрограмм, которые позволяют использовать в полной мере графические возможности Вашего персонального компьютера. Этот модуль реализует независимый от устройства графический драйвер фирмы «Борланд», позволяющий поддерживать графические адаптеры типа СGА, ЕGА, Hercules, АТТ 400, МСGА, 3270 РС и VGА. |
Turbo3 | Используемые пакеты: Crt Этот модуль содержит две переменные и несколько процедур, которые больше не поддерживаются Турбо-Паскалем. Они включают встроенную файловую переменную Кbd, булеву переменную CBreak и первоначальные целочисленные версии MemAvail и MaxAvail (которые возвращают размер свободной памяти в параграфах, а не в байтах, как это делают настоящие версии). |
Graph3 | Используемые пакеты: Crt Graph3 поддерживает полный набор графических подпрограмм для версии 3.0 — для обычной, расширенной графики и графики, использующей относительные команды. Они идентичны по имени, параметрами функции подпрограммам версии 3.0. |
Dos | DOS определяет многочисленные паскалевские процедуры и функции, которые эквивалентны наиболее часто используемым вызовам DOS, как например, GetТime, SetТime, DiskSize и так далее. Кроме того, он определяет две программы низкого уровня МsDos и Intr, которые позволяют активизировать любой вызов MS-DOS или системное прерывание. Registers представляет собой тип данных для параметра в МsDos и Intr. Кроме того, определяются некоторые другие константы и типы данных. |
System | System содержит все стандартные и встроенные процедуры и функции Турбо-Паскаля. Любая подпрограмма Турбо-Паскаля, не являющаяся частью стандартного Паскаля и не находящаяся ни в каком другом модуле, содержится в System. Этот модуль присоединяется ко всем программам. |
Turbo | Файл TURBO.TPL содержит все стандартные пакеты, кроме Graph и пакетов совместимости (Graph3 и Turbo3): System, Overlay, Crt, Dos и Printer. Эти пакеты загружаются в память вместе с Турбо-Паскалем и всегда вам доступны. Обычно файл TURBO.TPL хранят в одном каталоге с TURBO.EXE (или TPC.EXE). Вы можете хранить его и в другом каталоге, если он описан как каталог Турбо-Паскаля. Для этого необходимо с помощью TINST.EXE установить этот каталог в файле TURBO.EXE. |
Стандартные модули Free Pascal
CRT | Подпрограммы для работы с вводом-выводом в текстовом режиме |
DateUtils | Подпрограммы для работы с датой и временем |
Dos | Подпрограммы для работы с функциями DOS |
Graph | Подпрограммы для работы в графическом режиме |
KeyBoard | Подпрограммы для работы с клавиатурой |
Math | Математические функции |
Mouse | Подпрограммы для работы с мышью |
Printer | Подпрограммы для работы с принтером |
Strings | Подпрограммы для работы со строками |
StrUtils | Подпрограммы для работы со строками |
System | Основные подпрограммы общего назначения. Этот модуль не нужно подключать к вашей программе, так как он подключается автоматически. |
SysUtils | Дополнительные подпрограммы общего назначения. |
Video | Подпрограммы для работы с экраном в текстовом режиме |
WinCRT | Подпрограммы ввода-вывода |
x86 | Работа с портами ввода-вывода |
Написание собственных модулей Turbo Pascal
Предположим мы написали модуль IntLib, записали его в файл с именем Int.pas и оттранслировали на диск; получившийся в результате код находится в файле INTLIВ.ТРU. Для использования этого модуля в программе необходимо включить в нее оператор uses, указывающий компилятору, какой модуль используется. Наша программа может выглядеть следующим образом:
program MyProg; uses IntLib;
Отметим, что Паскаль предполагает, что файл, в котором находится модуль, имеет такое же имя, что и сам модуль. Если имя Вашего модуля МyUtilities, то Паскаль будет искать файл с именем МYUTILIТ.PAS.
Компиляция модуля в Turbo Pascal
Модуль компилируется точно так же, как компилируется программа: он создается с помощью редактора, а затем вызывается команда Соmpile/Соmpile (Компилировать/ Компилировать) (или нажимаются клавиши Аlt-С). Однако, вместо файла с расширением .ЕХЕ Турбо-Паскаль создает файл с расширением .ТРU (Turbо Раscal Unit — модуль Турбо-Паскаля). После этого Вы можете оставить этот файл как есть или же вставить его в ТURВО.TPL с помощью TPUMOVER.ЕХЕ.
В любом случае имеет смысл переслать файлы с расширением *.ТРU (вместе с исходными файлами) в каталог модулей, который определен с помощью команды О/D/Unit directories (Каталоги модулей). В одном исходном файле может находиться только один модуль, поскольку компиляция прекращается, как только обнаружен завершающий оператор end.
Напишем небольшой модуль. Назовем его IntLib и вставим в него две простые подпрограммы для целых чисел — процедуру и функцию:
unit IntLib; interface procedure ISwap(var I,J: integer); function IMax(I,J: integer): integer; implementation procedure ISwap; var Temp: integer; begin Temp:=I; I:=J; J:=Temp end; function IMax; begin if I > J then IMax:=I else IMax:=J end; end.
Введем эту подпрограмму, запишем ее в файл INTLIВ.PAS, а затем оттранслируем на диск. В результате получим код модуля в файле INTLIВ.ТРU. Перешлем его в каталог модулей. Следующая программа использует модуль IntLib:
program IntTest; uses IntLib; var A,B: integer; begin Write(‘Введите два целочисленных значения: ‘); Readln(A,B); ISwap(A,B); Writeln(‘A=’,A,’ B=’,B); Writeln(‘Максимальное значение равно ‘,IMax(A,B)); end.
Все описания внутри модуля связаны друг с другом. Например, модуль Crt содержит все описания, необходимые для подпрограмм работы с экраном на Вашем персональном компьютере.
Компиляция модуля в Free Pascal
Компиляция модуля выполняется почти также, как и компиляция программы. Отличие заключается только в том, что при компиляции модуля не вызывается компоновщик. Для компиляции модуля, который находится (например) в файле foo.pp, просто напечатайте:
fpc foo
Если всё правильно, то вы получите два файла модуля:
- foo.ppu – это файл с описанием откомпилированного вами модуля.
- foo.o – это файл, содержащий актуальный код модуля. Этот файл и является конечным продуктом компиляции.
Оба файла необходимы, если вы планируете использовать модуль в нескольких программах. Если вам нужен модуль для распространения, вы должны предоставлять оба файла – .ppu и .o.
Похожие записи/страницы:
- Глоссарий — Алгоритмические языки
- Программа на языке Pascal(Паскаль)
- Константы
- Типы данных
- В последовательности действительных чисел а1, а2. аn, есть только положительные и отрицательные элементы. Вычислить…
- Множества
- Процедуры
- Дан массив а — массив комплексных чисел. получить массив с, элементами котоРого будут модули сумм Рядом стоящих…
Источник: retrolib.ru