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

Модуль как автономно компилируемая программная единица, включающая в себя типы, константы, процедуры и функции инициирующей части. Наличие модулей в Turbo Pascal. Сущность и структура модуля. Стандартные модули в Паскаль: модуль Crt и модуль Graph.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 31.03.2011
Размер файла 57,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Модули

1.1 Общие сведения о модулях

1.2 Структура модулей

1.3 Заголовок модулей и связь модулей друг с другом

1.4 Интерфейсная часть

1.5 Исполняемая часть

1.6 Инициирующая часть

1.7 Компиляция модулей

1.8 Доступ к объявленным в модуле объектам

1.9 Стандартные модули

2. Стандартные модули в Паскаль

2.1 Модуль Crt

2.2 Модуль Graph

Заключение

Список используемых источников

Приложение А

модуль паскаль

Введение

В 1992 году фирма Borland International выпустила два пакета программирования на использовании языка Паскаль, - Borland Pascal 7.0 и Turbo Pascal 7.0. Пакет Borland Pascal 7.0 учитывает многие новейшие достижения в программировании и практике создания программ и включает в себя три режима работы: в обычном режиме операционной системы MS DOS, в защищенном режиме MS DOS и в среде Windows. Обладая расширенными возможностями, пакет Borland Pascal 7.0 тем не менее требует для использования всех своих возможностей довольно большую память - примерно 30 Мбайт на жестком диске и не менее 2 Мбайт оперативной памяти.

Пакет Turbo Pascal 7.0 обладает ограниченными возможностями и позволяет работать только в обычном режиме MS DOS. Начинающему программисту, по-видимому, целесообразно начать изучение языка и среды именно с этого пакета.

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

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

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

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

Паскаль - гибкий и развитый в отношении типов данных язык.

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

1. Модули

1.1 Общие сведения о модулях

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

Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей, практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.

Модуль содержит описания типов данных, переменных и других объектов,

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

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

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

Модули представляют собой прекрасный инструмент для разработки

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

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

Доступ к описаниям, функциям и процедурам модуля обеспечивает

оператор использования Uses, в котором указывается имя модуля. Этот

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

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

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

Модуль начинается заголовком

unit unit_name;

где unit_name - имя модуля, которое выбирается в соответствии с

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

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

Итак, сам модуль выглядит следующим образом.

{$N+}

unit hyp_fun;

interface

type

Float = Extended;

function sinh(x: Float): Float;

function cosh(x: Float): Float;

function tanh(x: float): Float;

implementation

var

t: Float;

function sinh(x: Float): Float;

begin

t := Exp(x);

sinh := 0.5*(t - 1.0/t);

end;

function cosh(x: Float): Float;

begin

t := Exp(x);

cosh := 0.5*(t + 1.0/t);

end;

function tanh(x: Float): Float;

begin

t := Exp(2.0*x);

tanh := (t - 1.0) / (t + 1.0);

end;

end.

Зарезервированные слова interface и implementation здесь играют важную роль. Каждый модуль имеет части (секции), озаглавленные этими словами. Секция interface (она называется интерфейсной секцией) содержит описания констант, типов, переменных и процедур, доступных из вызывающей программы или модуля. Секция implementation (секция реализации) содержит исходный код программы. Она может также содержать локальные описания, такие как var t: Real; из нашего примера.

Каждый модуль начинается с зарезервированного слова unit и заканчивается словом end, за котором следует точка. Для этого end не требуется соответствующего слова begin, хотя можно и поставить его непосредственно перед end. Оператор type в начале нашего модуля определяет тип Float, который в данном случае эквивалентен типу Extended. Указав, справа от знака равенства любой другой эквивалентный тип, можно изменить точность вычисления гиперболических функций.

1.2 Структура модулей

Модуль имеет следующую структуру:

|Unit module_name |

|Interface |

|Интерфейсная секция |

|Implementation |

|Секция реализации |

|Секция инициализации |Рис. 1. Структура модуля

Здесь Unit (зарезервированное слово (единица), начинает заголовок модуля; name (имя модуля (правильный идентификатор). Interface -интерфейсная секция - содержит те описания типов, переменных и других объектов данных, которые можно использовать в других программах или модулях. Секция реализации начинается с зарезервированного слова implementation. Все описания, содержащиеся в секции реализации, являются локальными, их область действия - данный модуль. Здесь же содержаться полные описания функций и процедур модуля. Последняя часть модуля - секция инициализации. Она может быть пустой и содержать только зарезервированное слово end или включать в себя исполняемые операторы, выполняющие необходимые действия по инициализации (например, по присваиванию начальных значений переменным) модуля.

В качестве примера рассмотрим модуль func1 /см. приложение А/, расширяющий вычислительные возможности Турбо Паскаля, так как он содержит функции, отсутствующие в стандартных модулях системы. Среди «стандартных» функций - синус (Sin), косинус (Cos), арктангенс (ArcTan), экспонента (Exp), натуральный логарифм (Ln), квадрат числа (Sqr) и квадратный корень из него (Sqrt). В модуле func1 имеются тангенс (Tan), арксинус (ArcSin) и арккосинус (ArcCos), функции перевода градусной меры в радианную наоборот (Degrees_to_Radians, Radians_to_Degrees), набор гиперболических функций (Sinh, Cosh, Tanh), а также десятичный логарифм (Log10) и произвольная степень числа (Power).

Напомню математическое определение гиперболических функций:

[pic]

[pic]

[pic]

В нашем примере интерфейсная секция содержит описания вещественного типа float, а также константу Infinity - «бесконечно большое значение».

Бесконечность здесь понимается, разумеется, в смысл машинной арифметики, как значение, близкое к максимально допустимому для типа Extended.

Далее следуют заголовки функций модуля.

Секция реализации содержит константы, используемые в подпрограммах-функциях. Затем идут полные описания функций. Вычисление тангенса использует «классическое» определение этой функции как отношение синуса к косинусу. Учтено также приближение значения тангенса к бесконечности при определенных значениях аргумента. В этом случае функция возвращает «машинную бесконечность».

При программировании арксинуса и арккосинуса следует учитывать то, что эти функции - многозначные. В нашем случае вычисляется «главное значение», лежащее в интервале [-(/2, (/2] (для арксинуса) или [0, (] (для арккосинуса) радиан. Для этого используются формулы, известные из курса элементарной математики.

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

1.3 Заголовок модулей и связь модулей друг с другом

Заголовок модуля состоит из зарезервированного слова Unit (следующего за ним имени модуля.

Для правильной работы среды Турбо Паскаля и возможности подключения средств, облегчающих разработку крупных программ, это имя должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если, например, имеем заголовок Unit Global; то исходный текст соответствующего модуля должен размещаться в дисковом файле GLOBAL.PAS.

Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением Uses <сп.модулей>

Здесь Uses - зарезервированное слово (использует);

<сп.модулей> - список модулей, с которыми устанавливается связь;

элементами списка являются имена модулей, отделяемые друг от друга

запятыми, например:

Uses CRT, Graph, Global:

Если объявление Uses. используется, оно должно открывать раздел описаний основной программы. Модули могут использовать другие - модули.

Предложение Uses в модулях может следовать либо сразу за зарезервированным словом Interface, либо сразу за словом Implementation.

1.4 Интерфейсная часть

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

Интерфейсная часть открывается зарезервированным словом Interface. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, например:

Unit Cmplx;

Interface

type

complex = record

re, Im : real

end;

Procedure AddC (x, у : complex; var z : complex);

Procedure MulC (x, у : complex; var z : complex);

Если теперь в основной программе написать предложение Uses Cmplx;

то в программе станут доступными тип Complex и две процедуры ( AddC и МulC из модуля Cmplx.

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

Следует учесть, что все константы и переменные, объявленные интерфейсной части модуля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт). Порядок появления различных разделов объявлений и их количество может быть произвольным. Если в интерфейсной части объявляются внешние подпрограммы или подпрограммы в машинных кодах, их тела (т.е. зарезервированное слово External, в первом случае, и машинные коды вместе со словом Inline (во втором) должны следовать сразу за их заголовками в исполняемой части модуля (не интерфейсной). В интерфейсной части модулей нельзя использовать опережающее описание.

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

1.5 Исполняемая часть

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

Исполняемая часть начинается зарезервированным словом Implementation и содержит описания подпрограмм, объявленных в интерфейсной части.

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

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

Unit Cmplx;

Interface

type

complex = record;

re, im: Real;

end;

Procedure AddC (x, у : complex; var r : complex);

Implementation

Procedure AddC;

begin

z.re := x.re + y.re;

z,im := x.Im * y.im;

end;

end.

Локальные переменные и константы, а также все программные коды,

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

В отличие от интерфейсов модулей в исполнительных частях модулей

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

1.6 Инициирующая часть

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

Необходимые действия можно выполнить в секции инициализации модуля.

Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем помещается слово end. (с точкой), например:

begin

Assign (F1, ` FILE1.DAT `);

end.

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

Unit FileText;

Interface

Procedure Prlnt (t : string);

Implementation

var f: Text;

const

name = ' OUTPUT. TXT ';

Procedure Print;

begin

WriteLn (f, s);

end;

{Начало инициирующей части:}

begin

Assign (f, name);

Rewrite (f);

{Конец инициирующей части:}

end.

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

Если инициализация модуля не нужна, то в секции помещается лишь слово end.

1.7 Компиляция модулей

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

В частности, определены три режима компиляции: COMPILE, МАКЕ и BUILD. Режимы отличаются только способом связи, компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES.

При компиляции модуля или основной программы в режиме COMPILE все упоминающиеся в предложении USES модули должны быть предварительно откомпилированы, и результаты компиляции помещены в одноименные файлы с расширением .TPU.

Например, если в программе (модуле) имеется предложение Uses Global;

то на диске в каталоге, объявленном опцией UNIT DIRECTORIES, уже должен находиться файл GLOBAL.TPU. Файл с расширением TPU (от англ. Turbo Pascal Unit) создается в результате компиляции модуля.

В режиме МАКЕ компилятор проверяет наличие TPU-файлов для каждого

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

Кроме того, в этом режиме система следит за возможными изменениями исходного текста любого используемого модуля. Если в PAS-файл (исходный текст модуля) внесены какие-либо изменения, то независимо от того, есть ли уже в каталоге соответствующий TPU-файл или нет, система осуществляет его компиляцию перед компиляцией основной программы. Более того, если изменения внесены в интерфейсную часть модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему. Режим МАКЕ, таким образом, существенно облегчает процесс разработки крупных программ с множеством модулей:

программист избавляется от необходимости следить за соответствием

существующих TPU-файлов их исходному тексту, так как система делает это автоматически.

В режиме BUILD существующие TPU-файлы игнорируются, и система пытается отыскать (и компилировать) соответствующий PAS-файл для каждого объявленного в предложении USES модуля.

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

Подключение модулей к основной программе и их возможная компиляция осуществляются в порядке их объявления в предложении USES.

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

Например, недопустимы следующие объявления:

Unit A Unit B;

Interface Interface

Uses S Uses A;

Implementation Implementation

end.

еnd.

Это ограничение можно обойти, если «спрятать» предложение USES в

исполняемые части зависимых модулей:

Unit A; Unit B;

Interface Interface

Implementation Implementation

Uses B; Uses A;

end.

end.

Дело в том, что Турбо Паскаль разрешает ссылки на частично откомпилированные модули, что приблизительно соответствует опережающему описанию подпрограммы. Если интерфейсные части любых двух модулей независимы (это непременное условие!), Турбо Паскаль сможет идентифицировать все глобальные идентификаторы в каждом из модулей, после чего откомпилирует тела модулей обычным способом.

1.8 Доступ к объявленным в модуле объектам

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

{UNIT Cmplx};

INTERFACE

{.............................................}

type

complex = record;

re, Im : real;

end

Procedure AddC (x, у : complex: var z:

complex);

Procedure SubC (x, у : complex; var z:

complex);

Procedure MulC (x, у : complex; var z:

complex);

Procedure DIvC (x, у : complex; var z:

complex);

const

с : complex = (re : 0.1; Im : -1);

IMPLEMENTATION

{..........-- . -- .......... -- -- -- ----...... }

PROCEDURE AddC;

begin

z.re := x.re + y.re;

z. Im := x . im + у. Im;

end {AddC};

PROCEDURE SubC;

begin

z .re := x.re - y.re;

z . im := x.Im - y. Im;

end {SubC};

PROCEDURE MulC;

begin

z.re := .re * y.re - x.im *

y.im;

z.lm := x.re * y.im + x.im *

y.re;

end {MulC};

POCEDURE DivC;

var zz : real;

begin

zz :=sqr(y.re) + sqr(y.im);

z.re := (x.re * y.re + x.im *

y.im) / zz;

z.lm := (x.re * y.im - x.lm *

y.re) / zz;

end {DIvC}:

END

Текст этого модуля следует поместить в файл CMPLX.PAS.

Его можно откомпилировать, создав TPU-файл, после чего программе станут доступны процедуры из новой библиотеки.

1.9 Стандартные модули

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

Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3 и GRAPHS. Модули GRAPH, TURBOS и GRAPHS содержатся в одноименных ТPU-файлах, остальные входят в состав библиотечного файла TURBO.TPL.

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

Ниже приводится краткая характеристика стандартных модулей.

Модуль SYSTEM ( в него входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции Турбо Паскаля, которые не вошли в другие стандартные модули (например, INC, DEC, GETDIR и т.п.). Как уже отмечалось, модуль SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные и подпрограммы считаются встроенными в Турбо Паскаль.

Модуль PRINTER делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа TEXT, которая связывается с логическим устройством PRN. После подключения модуля может быть выполнена, например, такая программа:

Uses Printer;

begin

WriteLn (LST, 'Турбо Паскаль');

end.

Модуль CRT.

В нем сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана.

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

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

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

Модуль DOS.

В модуле собраны процедуры и функции, открывающие доступ программам к средствам дисковой операционной системы MS DOS.

Модуль OVERLAY.

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

Для большинства IBM-совместимых ПК доступная программе память составляет около 580 Кбайт (без инструментальных оболочек типа Norton

Commander и без самой системы Турбо Паскаль). Память такого размера достаточна для большинства применений, тем не менее, использование программ с перекрытиями снимает это ограничение. Два библиотечных модуля TURBO3 и GRAPH3 введены для совместимости с ранней версией 3.0 системы Турбо Паскаль.

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

2.1Модуль Crt

Модуль предназначен для организации эффективной работы с экраном, клавиатурой и встроенным динамиком. При подключении модуля Crt выводимая информация посылается в базовую систему ввода-вывода (ВIОS) или непосредственно в видеопамять.

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

Под каждый символ отводится два байта: один байт занимает ASCII-код символа, другой байт хранит атрибуты символа: его цвет, цвет фона и признак мерцания. Можно получить восемь различных цветов фона и 16 цветов символов.

Модуль Crt позволяет:

выполнять вывод в заданное место экрана заданным цветом символа и фона;

открывать на экране окна прямоугольной формы и выполнять вывод в пределах этих окон;

очищать экран, окно, строку и ее часть;

обрабатывать ввод с клавиатуры;

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

Работа с экраном

Текущие цвета символа и фона задаются с помощью процедур TextColor и TextBackGround и действуют на следующие за ними процедуры вывода. Вывод выполняется в текущую позицию курсора. Для ее изменения служит процедура GotoXY.

Окно определяется с помощью процедуры Window. Оно задается координатами левого верхнего и правого нижнего угла.

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

Работа с клавиатурой

Модуль Crt позволяет работать с управляющими клавишами и комбинациями клавиш. Нажатие каждой клавиши преобразуется либо в ее ASCII-код, либо в так называемый расширенный код (scan-код) и записывается в буфер клавиатуры, из которого затем и выбирается процедурами ввода. Под каждый код отводится два байта. Если нажатие клавиш соответствует символу из набора ASCII, в первый байт заносится код символа. Если нажата, к примеру, клавиша курсора, функциональная клавиша или комбинация клавиш с CTRL или ALT, то первый байт равен нулю, а во втором находится расширенный код, соответствующий этой комбинации.

Для работы с клавиатурой модуль Crt содержит функции ReadKey и KeyPressed.

2.2Модуль Graph

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

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

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

Модуль Graph обеспечивает:

вывод линий и геометрических фигур заданным цветом и стилем;

закрашивание областей заданным цветом и шаблоном;

вывод текста различным шрифтом, заданного размера и направления;

определение окон и отсечение по их границе;

использование графических спрайтов и работу с графическими страницами.

В отличие от текстового режима, в графическом курсор невидим.

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

Эти параметры устанавливаются с помощью соответствующих процедур. Возможные значения параметров определены в модуле Graph в виде многочисленных констант.

Структура графической программы

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

подключение модуля Graph;

перевод экрана в графический режим;

установку параметров изображения;

вывод изображения;

возврат в текстовый режим.

Графическая библиотека подключается в операторе 1. В графический режим экран переводится в операторе 2 вызовом процедуры InitGraph. Ей надо передать три параметра: номер графического драйвера (grDriver), его режим grMode и путь к каталогу, в котором находятся драйверы.

Если параметр grDriver равен константе Detect, заданной в модуле Graph, выбор режима выполняется автоматически.

Если графический режим выбирался автоматически, для позиционирования изображений на экране необходимо получить доступное количество точек по X и по Y с помощью функций GetMaxX и GetMaxY (оператор 4). В данной программе с помощью этих функций формируются координаты центра экрана.

В цикле (оператор 5) выводится серия линий с небольшой задержкой. Цвет линий изменяется случайным образом через каждые 10 итераций.

Следующий фрагмент программы демонстрирует работу с графическими спрайтами, которые применяются для вывода движущихся изображений. Для увеличения скорости отрисовки изображение формируется один раз, после чего заносится в память с помощью процедуры GetImage (оператор 9). Объем памяти, необходимый для размещения спрайта, определяется с помощью процедуры ImageSize, выделение памяти выполняет процедура GetMem (оператор 8).

При формировании изображения использована процедура установки стиля закраски SetFillStyle (оператор 6). Он используется процедурой рисования закрашенного эллипса FillEllipse. Стиль линии, задающий повышенную толщину линии, устанавливается процедурой SetLineStyle (оператор 7). Этот стиль действует при выводе отрезка (Line) и дуги (Arc).

Для вывода спрайта используется процедура PutImage. Ее четвертый параметр задает способ сочетания выводимого изображения и фона. Операция исключающего ИЛИ (она задается константой XorPut), примененная дважды, позволяет оставить неизменным фон, по которому движется изображение (цикл 10).

Перед выводом текста устанавливается его стиль (оператор 11). Стиль текста состоит из имени шрифта, его расположения (горизонтальное или вертикальное) и масштаба. В модуле Graph имеется один растровый шрифт и несколько векторных. Каждый символ растрового шрифта определяется точечной матрицей 8 х 8, символ векторного шрифта задается набором кривых.

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

Заключение

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

Турбо Паскаль - достаточно «старый» программный продукт. Следует заметить, однако, что Паскаль - это живой язык. Известны, используются или находятся в стадии разработки компиляторы и среды разработки программ на Паскале для различных операционных систем, в том числе и бурно развивающейся операционной системы Linux. Эти системы иногда частично, а иногда и в значительной мере совместимы с Турбо Паскалем, а следовательно, накопленный опыт может быть использован и для серьезной, профессиональной работы по разработке программ.

Список используемых источников

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык

Паскаль. - М.: Наука, 1988. - 320 с.

2. Абрамов С.А., Зима Е.В. Начала программирования на языке

Паскаль. - М.: Наука, 1987. - 112 с.

3. Вирт Н. Алгоритмы и структуры данных./Пер. с англ. М.: Мир,

1989. - 360 с.

4. Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982.

- 382 с.

5. Дантеманн Дж., Мишел Дж., Тейлор Д. Программирование в среде

Delphi: Пер. с англ. - Киев: НИПФ «ДиаСофтЛтд.», 1995. - 608 с.

6. Епанешников А., Епанешников В. Программирование в среде Турбо

Паскаль 7.0. - М.: ДИАЛОГ-МИФИ, 1993. - 288 с.

7. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и

описание языка: Пер. с англ. - М.: Финансы и статистика, 1982.

- 151 с.

8. Матчо Дж., Фолкнер Д.Р. Delphi: Пер.с англ.- М.: БИНОМ, 1995. -

464 с.

9. Орлик С.В. Секреты Delphi на примерах: - М.: БИНОМ. - 316 с.

10. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и

связь, 1988. - 224 с.

11. Пильшиков В.Н. Сборник упражнений по языку Паскаль: Учеб.

пособие для вузов. - М.: Наука, 1989. - 160 с.

12. Прайс Д. Программирование на языке Паскаль: Практ. руководство.

- М.: Мир, 1987. - 232 с.

13. Рубенкинг Н. Турбо Паскаль для Windows: В 2 т.; Пер. с англ. -

М.: Мир, 1993. - 536 с.

14. Фаронов В.В. Турбо Паскаль. В 3-х книгах. Книга 1. Основы Турбо

Паскаля. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1992. - 304с.

15. Фаронов В.В. Паскаль и Windows. - М.: Учеб.-инж.центр МВТУ-

ФЕСТО ДИДАКТИК, 1994. - 539 с.

16. Фаронов В.В. Практика Windows-программирования. М.:

Информпечать, 1996. - 247 с.

17. Федоров А., Рогаткин Д. Borland Pascal в среде Windows. - Киев:

Диалектика, 1993. - 656 с.

18. Форсайт Р. Паскаль для всех: Пер. с англ.- М.: Машиностроение,

1986. - 288 с.

Приложение А

(обязательное)

{$N+}

unit func1;

interface

type

float = Extended;

const

Infinity = 1.0E+4932;

function Tan(x : float) : float;

function ArcSin(x : float) : float;

function ArcCos(x : float) : float;

function Degrees_to_Radians(Degrees : float) : float;

function Radians_to_Degrees(Radians : float) : float;

function Sinh(x : float) : float;

function Cosh(x : float) : float;

function Tanh(x : float) : float;

function Log10(x : float) : float;

function Power(x, Exponent : float) : float;

implementation

const

Radians_Per_Degree = Pi / 180;

Degrees_Per_Radian = 180 / Pi;

Ln10 = 2.3025850930;

MaxValue = 88.029619;

function Tan(x : float) : Float;

var

Consine, Tangent : float;

begin

Consine := Cos(x);

if Cosine := 0.0 then

if Sin(x)>=0 then

Tan := Infinity

else

Tan := -Infinity

else

begin

Tangent := Sin(x) / Cosine;

if Tangent > Infinity then

Tan := Infinity

else

if Tangent < -Infinity then

Tan := -Infinity

else

Tan := Tangent;

end;

end;

function ArcSin(x : float) : float;

begin

if Abs(x) = 1.0 then

ArcSin := Pi / 2.0

else

ArcSin := ArcTan(x / Sqrt(1 - x * x));

end;

function ArcCos(x : float) : float;

var

Result : float;

begin

if x = 0.0 then

ArcCos := Pi / 2.0

else

begin

Result := ArcTan(sqrt(1 - x * x) / x);

if x < 0.0 then

ArcCos := Result + Pi

else

ArcCos := Result;

end;

end;

function Degrees_to_Radians(Degrees : float) : float;

begin

Degrees_to_Radians := Degrees * Radians_Per_Degree;

end;

function Radians_to_Degrees(Radians : float) : float;

begin

Radians_to_Degrees := Radians * Degrees_Per_Radian;

end;

function Sinh(x : float) : float;

var

t : float;

begin

if x > MaxValue then

Sinh := Ifinity

else

if x < -MaxValue then

Sinh := -Infinity

else

begin

t := Exp(x);

Sinh := 0.5 * (t - 1 / t);

end;

end;

function Cosh(x : float) : float;

var

t : float;

begin

if Abs(x) > MaxValue then

Cosh := Infinity

else

begin

t := Exp(x);

Cosh := 0.5 * (t + 1 / t);

end;

end;

function Tanh(x : float) : float;

begin

Tanh := Sinh(x) / Cosh(x);

end;

function Log10(x : float) : float;

begin

Log10 := Ln(x) / Ln10;

end;

function Power(x, Exponent : float) : float;

begin

if x > 0.0 then

Power := Exp(Exponent * Ln(x))

else if x = 0.0 then

Power := 0.0

else

WriteLn ( ` Основание степени отрицательно! ' );

end;

begin

end.

Размещено на Allbest.ru


Подобные документы

  • Файлы BGI и содержимое модуля Graph, инициализация и закрытие графических режимов, их классификация, анализ и управление. Рисование графических примитивов и фигур, управление цветами и шаблонами, вывод текста, выбор шрифта и стиля, сжатия изображения.

    реферат [65,3 K], добавлен 31.05.2010

  • Использование графических возможностей Турбо Паскаля, подключение графического модуля Graph. Графические функции и процедуры. Общая структура графической программы. Построение фигур, определение цветов и стилей, работа с текстом, сообщения об ошибках.

    реферат [109,3 K], добавлен 28.04.2010

  • Современные модули памяти. Контроллер памяти некоторых чипсетов. Общая разрядность модуля. Варианты модуля 1 Гб PC2100 Registered DDR SDRAM. Двухканальный режим работы. Увеличение пропускной способности. Отличие модулей DDR2 от DDR. Корпуса BGA.

    презентация [1,9 M], добавлен 11.12.2013

  • Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.

    курсовая работа [37,3 K], добавлен 28.06.2008

  • Характеристика модульного программирования: процедуры и функции, модули и их структура, открытые массивы и строки, нетипизированные параметры. Способы передачи параметров в подпрограммы в Borland Pascal. Объектно-ориентированное программирование.

    контрольная работа [28,9 K], добавлен 28.04.2009

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

    лекция [55,7 K], добавлен 21.05.2009

  • Анализ методики использования многомерных массивов в среде Delphi. Общее понятие массивов, их реализация, достоинства, недостатки. Массивы в Object Pascal. Описание функциональной структуры приложения: модуль MatrixOperations, модуль fileIO, модуль form.

    курсовая работа [1,3 M], добавлен 28.09.2010

  • Этапы подготовки и решения задач на компьютере. Способы предоставления алгоритмов. Простые типы данных и их обработка. Основы работы с графикой и графическими операторами в Visual Basic. Организация линейной программы. Процедуры и функции в языке Паскаль.

    дипломная работа [1,9 M], добавлен 25.10.2015

  • Разработка граф-схемы алгоритма раскраски на языке Object Pascal. Формат файла для хранения графов. Выбор удобочитаемых идентификаторов. Переменные, константы, типы, компоненты, процедуры и функции модулей uMain, uInputk, uFiling, uColoring, uHelp.

    курсовая работа [1,3 M], добавлен 22.11.2013

  • Анализ графического модуля "graphics.h". Анализ функции модуля, констант, типов и его глобальных переменных. Реализация пользовательской библиотеки "mouse.h". Особенности работы с мышкой в графическом и обычном режимах, разработка программного кода.

    курсовая работа [36,5 K], добавлен 02.12.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.