Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
187
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

3.5 Модули в Паскале

____________________________________________________________________

Другой способ – это добавить путь к модулю в файле fpc.cfg. Файл на-

ходится в папке \lazarus\fpc\2.2.4\bin\i386-win32 в Windows или в папке /etc в Linux. Найдите в этом файле строку

# searchpath for units and other system dependent things

И добавьте запись вида:

-Fuпуть к модулю (именно без пробела!), например

-Fuс:\my-projects\my-units\ (Windows)

-Fu/home/user/my-projects/my-units (Linux)

Но этот файл системный, "лезть" в него без особой необходимости не ре-

комендую.

В предложенном мною способе "ничего не надо делать"! Надо просто ско-

пировать папку my-units в системный каталог. Путь к нему уже прописан в файле fpc.cfg. Только чтобы не "замусоривать" системный каталог, вам нужно все свои модули, сколько бы их ни было, помещать только в одну папку, в на-

шем случае мы будем размещать все наши общие модули в папку my-units.

3.5.2 Системные модули

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

ров. Рассмотрим вкратце некоторые системные модули:

System – содержит стандартные функции и процедуры "классического"

Паскаля, например, вычисления функции cos, sin, ln, exp и др. Модуль

218

Глава 3 Более сложные элементы языка

____________________________________________________________________

System автоматически доступен всем программам. Фактически мы широко пользовались этим модулем.

DOS- содержит процедуры и функции, позволяющие использовать средст-

ва операционной системы MS-DOS.

CRT – набор процедур для работы с экраном и клавиатурой.

Graph – содержит обширный набор программ, который позволяет исполь-

зовать графические возможности компьютера.

В настоящее время этот модуль устарел и практически не используется.

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

Для использования модуля достаточно в программе после строки заголов-

ка вставить строку:

uses имя модуля;

Если используется несколько модулей, то пишется так:

uses имя модуля 1 , имя модуля 2, ….., имя модуля N;

Просмотреть тот или иной системный модуль можно, нажав клавишу

Ctrl и одновременно подведя указатель мыши к имени модуля. Когда имя мо-

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

В частности, если вы посмотрите модули SysUtils, FileUtil,

LCLProc и др., то увидите там объявления и реализации тех функций и проце-

дур, которыми мы широко пользовались.

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

219

3.5 Модули в Паскале

____________________________________________________________________

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

3.5.2.1. Модуль CRT

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

Рассмотрим экран компьютера в текстовом режиме. Обычно на нем раз-

мещается 25 строк текста и 80 символов в каждой строке. Для того чтобы пол-

ностью владеть экраном, нужно знать координаты курсора, менять цвет симво-

лов, текста и фона. Для этого существуют следующие процедуры:

GoToXY(i,j)- позиционирует курсор в i строку и j столбец экрана.

write(s)- выводит строку s начиная с текущей позиции курсора.

процедура TextColor(Color)- устанавливает цвет выводимого текста.

Существуют следующие константы цветов:

Black - черный;

Blue - синий;

Green - зеленый;

Cyan - бирюзовый;

Red - красный;

Magenta - малиновый;

Brown - коричневый;

LightGray - светло-серый;

DarkGray - темно-серый;

LightBlue - ярко-голубой;

LightGreen - ярко-зеленый;

220

Глава 3 Более сложные элементы языка

____________________________________________________________________

LightCyan -ярко-бирюзовый;

LightRed - ярко-красный;

LightMagenta - ярко-малиновый;

Yellow - желтый;

White - белый;

Blink - мерцание (мигание);

Процедура TextBackGround(Color)- устанавливает цвет фона.

Процедура ClrScr - очищает экран, одновременно окрашивая его в цвет установленного фона.

Процедура Window(x1, y1, x2, y2)- определяет на экране окно,

где x1, y1- координаты левого верхнего угла, а x2, y2- координаты пра-

вого нижнего угла окна

Функция KeyPressed - возвращает значение true, если клавиша нажата и false – в противном случае.

Функция readkey – считывает символ с клавиатуры.

Пример.

Написать программу, которая очищает экран и устанавливает синий фон.

Затем выводит текст желтым цветом.

program project1;

uses

CRT, FileUtil;

begin

TextBackGround(Blue);

ClrScr;

GoToXY(6, 6);

TextColor(Yellow);

221

3.5 Модули в Паскале

____________________________________________________________________

writeln(UTF8ToConsole('Привет, Вася!'));

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Дальнейшие "игры" с цветами и окнами предоставляю вам самому, ува-

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

Пример.

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

честве проданных компьютеров каждым менеджером за месяц. Написать про-

грамму, которая выводит таблицу, в которой следующие графы: фамилия, ко-

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

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

Стоимость компьютера принять равной 1000$, размер премии за каждый проданный компьютер 25$

program manager; uses

CRT, FileUtil, SysUtils; var

name: array of string[18]; kol: array of integer;

sum, cost, prem, i, k, n: integer; progprem: integer;

begin

writeln(UTF8ToConsole('Введите количество менеджеров'));

readln(n);

SetLength(name, n);

222

Глава 3 Более сложные элементы языка

____________________________________________________________________

SetLength(kol, n);

for k:= 0 to n - 1 do

begin

writeln(UTF8ToConsole('Введите фамилию'));

readln(name[k]);

writeln(UTF8ToConsole('Введите количество компьютеров'));

readln(kol[k]);

end;

ClrScr;

GoToXY(6,1);

write(UTF8ToConsole('Сведения о реализации компьютеров'));

GoToXY(14,2);

write(UTF8ToConsole('за январь 2010 г.'));

GoToXY(1,3);

 

write('------------------------------------------------

');

GoToXY(1,4);

 

write(UTF8ToConsole('Фамилия

Количество Выручка Премия'));

GoToXY(1,5);

 

write('------------------------------------------------

');

cost:= 1000;

 

progprem:= 25;

 

for k:= 0 to n - 1 do

 

begin

 

sum:= cost * kol[k];

 

prem:= progprem * kol[k];

 

writeln;

 

writeln(name[k]);

 

GoToXY(24, k + 6);

 

write(kol[k]);

 

223

3.5 Модули в Паскале

____________________________________________________________________

GoToXY(32, k + 6);

 

write(sum);

 

GoToXY(40, k + 6);

 

write(prem);

 

end;

 

sum:= 0;

 

i:= 0;

 

for k:= 0 to n - 1 do

 

begin

 

i:= i + kol[k];

 

sum:= i * cost; {Сумма выручки}

 

prem:=i * progprem;

 

end;

 

GoToXY(1, n + 6);

 

write('------------------------------------------------

');

GoToXY(17, n + 7);

 

writeln(UTF8ToConsole('Итого:'));

 

GoToXY(24, n + 7);

 

write(i);

 

GoToXY(32, n + 7);

 

write(sum);

 

GoToXY(40, n + 7);

 

write(prem);

 

GoToXY(1, n + 9);

 

write(UTF8ToConsole('Нажмите любую клавишу')); readkey;

end.

224

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]