16835

Компиляция и подключение модулей

Лекция

Информатика, кибернетика и программирование

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

Русский

2013-06-26

294 KB

4 чел.

Лекция 8

Компиляция и подключение модулей

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

В директории Options\Directories\EXE&TPU directory должны быть:

  1.  пустая строка, если TPU-файл надо поместить в текущий каталог;

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

Например: F:\TURBO\TP.

Если TPU-файлы помещены не в текущем каталоге, то для их использования в меню Options\Directories\Unit directories должна быть их директория, например: F:\TURBO\TP.

В Паскале имеется 3 режима (и 3 команды) компиляции: Compile, Make, Build. Они отличаются только отношением компилятора к модулям, указанным в Uses.

Если с помощью Compile компилируется текст программы или модуль, расположенный в редакторе, и в них используется оператор Uses, то все модули, указанные в Uses, должны быть предварительно откомпилированы и результаты их компиляции должны быть помещены в TPU-файлы на МД. Например, если в программе (модуле) имеется Uses FileText;, то на МД в текущем каталоге или в каталоге, определенном опцией Unit directories, должен быть файл FileText.tpu.

Для получения этого файла из файла FileText.pas надо:

  1.  установить опцию компилятора Compile/Destination в состояние Disk
    (для    версий,    меньших    7.0)    и    имя    каталога    в    опцию    
    Options/
    Directories/EXE&TPU directory;
  2.  откомпилировать   файл   FileText.pas    с   помощью   команд   Compile
    (Alt-F9)
    или Make (F9).

В результате компиляции с помощью команды Make компилятор сам проверяет наличие требуемых TPU-файлов для каждого модуля, указанного в Uses. Кроме того, компилятор проверяет даты и время создания PAS-файлов и соответствующих им TPU-файлов модулей. И если обнаружено, что в найденный PAS-файл были внесены изменения со времени создания соответствующего ему TPU-файла, то Паскаль автоматически транслирует PAS-файл и создает из него новый TPU-файл. Таким образом, команда Make следит за соответствием TPU-файлов их PAS-файлам, при необходимости обновляя все TPU-файлы, используемые в программе.

Команда Build всегда заново перекомпилирует все модули, используемые основной программой. Если PAS-файлы не найдены, то используются их имеющиеся TPU-файлы.

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

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

Классификация стандартных модулей

Паскаль содержит стандартные модули SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY. Модуль GRAPH содержится в одноименном TPU-файле, остальные входят в состав библиотечного файла TURBO.TPL.

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

Uses   Printer,   Crt,   Graph;

Модуль SYSTEM подключается к программе автоматически, без указания его имени в Uses.

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

Процедуры и функции модуля DOS выполняют ряд действий, в том числе:

обслуживание прерываний;

проверку состояния диска;

обработку файлов (поиск в каталоге, выдачу и установку атрибутов файлов);

управление процессом выполнения программ;

управление операционной средой.

Например, с помощью процедуры DiskFree ( d : word ) ; можно получить количество свободных байт на заданном диске; при d = 1 определяется диск А, при d = 2 - диск В и т. д. Процедуры SetDate и SetTime устанавливают в ОС текущую дату и время. С помощью GetData и GetTime можно получить текущую дату и время.

В последующих разделах данной части рассмотрим назначение некоторых процедур и функций модулей CRT и GRAPH

Работа с модулем CRT

Назначение и состав модуля CRT

Модуль CRT (Cathode-Ray Tube - электронно-лучевая трубка) входит в библиотечный файл Turbo.TPL. Для использования модуля CRT в программе должен быть оператор Uses CRT;.

Процедуры и функции модуля CRT предназначены для:

  1.  управления клавиатурой, в том числе считывания кода символа нажатой
    клавиши с высвечиванием символа на экране и без высвечивания;
  2.  управления текстовым экраном, в том числе:

а) определения активного окна;

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

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

  1.  управления принтером,  в том числе выбором шрифтов и перемещением
    бумаги;
  2.  управления звуковым сигналом.

Рассмотрим некоторые возможности модуля CRT.

Управление клавиатурой

Средства управления клавиатурой с помощью модуля CRT рассмотрим на примерах:

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

ввода текстов с их высвечиванием на экране (процедуры Read и Readln);

ввода символа без его высвечивания на экране (процедура ReadKey);

определения нажатия на любую клавишу (процедура KeyPressed).

При нажатии на каждую клавишу схемно вырабатывается уникальный код - код сканирования (скан-код). В программах он не используется. Код сканирования программно преобразуется в другой код, который и используется в программах. Для наиболее широко применимых кодов разработаны стандарты. Например, для кодировки символов используется код ASCII -American Standard Code for Information Interchange. Это 7-битовый код. С его помощью можно закодировать всего 128 символов с кодами 0..127. Примеры этих кодов приведены в табл. 1. Символы с кодами 0..31 - служебные. При выводе они представляются пробелами. Некоторые из них могут иметь самостоятельное значение, например, 7 - звонок.

Таблица 1.  Примеры кодов ASCII

Код 

Символ 

Код 

Символ 

Код 

Символ 

Код 

Символ 

0 

NUL 

38 

& 

65 

А 

97 

а 

7 

Звук 

40 

( 

66 

В 

98 

b 

8 

Возврат(BS) 

41 

) 

67 

С 

99 

с 

10 

Новая строка(LF) 

42 

* 

68 

D 

100 

d 

13 

Enter (CR) 

43 

+ 

69 

Е 

101 

е 

26 

EOF 

48 

0 

70 

F 

102 

f 

27 

ESC 

49 

1 

71 

G 

103 

g 

32 

Пробел 

50 

2 

72 

Н 

104 

h 

35 

# 

51 

3 

73 

I 

105 

i 

36 

$

52 

4 

74 

J 

106 

J 

37 

%

 

53 

5 

75 

К 

107 

k 

Каждый символ в памяти занимает 1 байт (8 бит). С помощью байта можно закодировать 256 символов с кодами 0..255. Символы с кодами 128..255 не ограничены стандартами. С их помощью можно кодировать национальные алфавиты и специальные символы псевдографики. Один из вариантов кодировки символов кодами 128..255 дан в табл. 2. Как видно из табл. 2, коды символов русского алфавита упорядочены в порядке возрастания.

В листинге 13 приведен текст программы, с помощью которой можно вывести значения символов, имеющих значения кодов, заданные с помощью переменной i. Значение символа по i-коду определяется с помощью функции chr(i). Результаты выводятся по 6 значений в строке.

Листинг 13. Вывод значений символов, заданных кодами.

Uses   CRT;

var

i : integer;

begin  ClrScr;

for i:=0 to 255 do begin {- перебор i-значений кодов }

write ('i=',i,':',chr(i)); {- вывод символов на экран}

if imod6=0 then Writeln; {- переход на следующую строку}

end 

end.

Определить коды заданных символов, например символов русского алфавита, можно с помощью программы, текст которой дан в листинге 14. Код а[1]-символа определяется с помощью функции ord(a[i] ).

Листинг 14. Вывод кодов символов русского алфавита.

const    a   :   array   [1..62]   of  char =

'абвгдежзийклмнопрстуфхцчшщьъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ';

var  i:integer;

begin 

for i:=1 to 62 do {- перебор i-номеров символов массива

                  'а'}

writeln ('кодa[',i,']=', a[i],'=',ord(a[i])); end.

Воспроизвести символ большинства кодов на экране можно, нажав соответствующую ему клавишу. Но этого нельзя сделать, например, для кодов псевдографики. Любой из символов, имеющих коды 1..255, можно воспроизвести на экране, дополнительно используя клавишу Alt. Для этого в среде Паскаль надо установить режим работы с цифровой клавиатурой (правая часть клавиатуры), нажав клавишу Num Lock, что фиксируется индикатором Num Lock. Затем надо нажать клавишу Alt и, не отпуская ее, на цифровой клавиатуре набрать код символа, после чего отпустить клавишу Alt. На экране воспроизведется символ, код которого был набран.

Процедуры Read и Readln модуля System осуществляют ввод данных, в том числе с помощью клавиатуры. Причем они приостанавливают выполнение программы до тех пор, пока не будет нажата клавиша Enter. Для этого сначала значение набирается с помощью клавиатуры, запоминается в буфере и высвечивается на экране, и после нажатия клавиши Enter данные из буфера передаются в область ОП переменных программы. Ввод с помощью процедур Read и Readln имеет следующие недостатки:

  1.  с их помощью невозможно опознать нажатие на клавиши управления кур
    сором (↑, ↓,→
     , ←) и на функциональные клавиши;
  2.  ввод символов сопровождается их воспроизведением (эхо-повтором) на

экране;

  1.  обращение к этим процедурам приостанавливает программу до  нажатия
    клавиши
    Enter.

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

Функция ReadKey без параметров. Она возвращает значение типа CHAR -код нажатой клавиши. С ее помощью можно считать и опознать нажатие на любую клавишу, кроме клавиш управления положением курсора и клавиш-переключателей (Alt, Shift, Ctrl, Caps Lock). Эта функция приостанавливает работу программы до тех пор, пока не будет нажата клавиша. Считанный символ не отображается на экране, т. е. функция ReadKey вводит символ без высвечивания его на экране (без эхо-повтора). Это дает возможность для разработки удобных интерактивных программ, управление которыми сводится в основном к нажатию функциональных клавиш.

С помощью ReadKey можно считать коды основных клавиш (табл. 1) и расширенные коды ПК (табл. 2). Расширенные коды - это коды верхнего ряда клавиш, коды правой части клавиатуры и коды комбинаций клавиш Alt, Ctrl, Shift с другими клавишами. В случае считывания расширенных кодов при первом обращении функция ReadKey возвращает код О, а при втором - код расширенного набора кодов. Примеры расширенных кодов даны в табл. 2. В листинге 15 приведена программа, которая считывает и выводит код нажатой клавиши, в том числе клавиши, имеющей расширенный код. Завершается программа нажатием Ctrl+2.

Таблица 2.  Примеры расширенных кодов

Код 

Клавиша 

Код 

Комбинация клавиш 

59..6S 

F1..F10 

84. .93 

SHIFT-F1 .. SHIFT-F10 

71 

НОМЕ 

94 .. 103 

CTRL-F1 .. CTRL-F10 

72 

Курсор вверх ↑

104 .. ИЗ 

ALT-F1 .. ALT-F10 

73 

PGUP 

114 

CTRL-PRTSCR 

75 

Курсор влево

115 

CTRL-Kypcop влево 

77 

Курсор вправо →

116 

CTRL-Kypcop вправо 

79 

END 

117 

CTRL-END 

80 

Курсор вниз

118 

CTRL-PGDN 

81 

PGDN 

119 

CTRL-HOME 

82 

INS 

120 .. 131 

ALT-1 .. АЕТ-(верхний ряд клавиш) 

83 

DEL 

132 

CTRL 

Листинг 15. Считывание кодов с помощью ReadKey и вывод их на экран.

uses  Crt;

var

C1,C2,:char;{ - переменные для считанных символов }

begin    ClrScr; { - очистка экрана }

repeat { - начало цикла }

Cl := ReadKey; { - считывание первой половины кода }

if C1 = #0 { - анализ значения первой половины кода }

then C2 := ReadKey; {- считывание второй половины кода }

if C1=#0 then writeln ('C1 = #0', ord(C1):5, ord(C2):5)

else Writeln ('C1 <> #0', ord(C1):5);

until (C1=#0) and (C2 = #3 ); { - это код Ctrl+2 } end.

Функция KeyPressed без параметров. Она возвращает значение типа Boolean: значение TRUE, если была нажата какая-либо клавиша, и значение FALSE, если ни одна клавиша не была нажата. Функция не приостанавливает выполнение программы. В листинге 16 дан текст программы, которая выводит символы 'Хх' до тех пор, пока не будет нажата какая-либо клавиша. Цикл repeat в программе бесконечный, и программа может завершиться только с помощью процедуры Exit, которая выполнится после нажатия какой-либо клавиши.

Листинг 16. Работа функции KeyPressed.

Uses  Crt;

begin    ClrScr; { - очистка экрана }

repeat { - начало бесконечного цикла }

if KeyPressed then Exit; { - выход из цикла }

Write ('Xx');  Delay (100); { - вывод 'Xx' и задержка на 100 мс }

until False; { - бесконечный цикл }

end.

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

VAR С : CHAR; ... WHILE KeyPressed DO С := ReadKey; ...

Как только будет нажата клавиша, символ из буфера считывается с помощью функции ReadKey в переменную С, очищая буфер.

Управление текстовым экраном

С помощью средств модуля CRT можно реализовать следующие функции управления текстовым экраном:

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

устанавливать цвет фона и символов текста;

выводить текст в заданное место экрана;

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

Например, с помощью CRT можно формировать меню, контролировать и управлять процессом его использования.

Для вывода на экран текстов используются процедуры Write и Writeln модуля SYSTEM. При выводе символов на экран они размещаются начиная с той позиции, в которой находился курсор. После вывода символа курсор смещается вправо. Если курсор был у правой границы окна (экрана), он перемещается в начало следующей строки, а если строка последняя, организуется "прокрутка": подъем вверх всех строк и установка курсора в крайнюю левую позицию нижней строки.

В списке данных процедур вывода Write и Writeln можно использовать коды любых символов в виде #код. Это могут быть, например, числа от 0 до 31 - коды служебных функций (см. табл. 1);.например:

#7 - для выдачи короткого звукового сигнала;

#8 - для перемещения курсора влево на один символ; если курсор уже находился на левой границе окна или экрана, символ #8 игнорируется;

#10 - для перемещения курсора на одну строку вниз при той же горизонтальной позиции; если курсор к этому моменту уже находился на нижней строке окна (экрана), содержимое экрана "прокручивается" (поднимается) вверх на одну строку;

#13 - для перемещения курсора в начало этой же строки.

Пример использования специальных символов при выводе данных на экран дан в листинге 17.

Листинг 17. Использование специалыных символов.

USES   CRT;

VAR  I:BYTE;

BEGIN WRITELN ('Нажимайте клавишу ВВОД для продолжения');

READLN;{ - приостановка до нажатия клавиши Enter }

WRITELN ('Эффект от кода 7 - короткий звук', #7 );

READLN;{ - приостановка до нажатия клавиши Enter }

WRITELN ('Демонстрация кода возврата на одну позицию влево #8' );
FOR I := 1 ТО 40 DO WRITE ('/'); { - вывод 40 штук '/' }

FOR I := 1 ТО 40 DO BEGIN

DELAY ( 100 ); { - задержка на 100 мс }

WRITE (#8,'V,#8);  { - сдвиг курсора на 1 символ влево

в той же строке, замена символа '/' строки на '\' и снова сдвиг влево }

END;

WRITELN: READLN;  { - переход на следующую строку; ожидание ввода }

WRITELN ('Демонстрация кода разрыва строки -', ' #10 (LF) ');

WRITELN ; READLN;   { - приостановка до нажатия клавиши Enter }

WRITE('Эта'#10'строка'#10'разорвана'#10'кодами #10 '); WRITELN ( #10 );

READLN;{ - приостановка до нажатия клавиши Enter }

WRIIELN('Работа с кодом "возврата каретки" - #13');
FOR I:=1 ТО 40 DO WRITE ('/');{ - вывод 40 штук '/' }

WRITE ( #13 );       { - перевод курсора в начало этой же строки }

FOR I := 1 ТО 40 DO BEGIN

DELAY ( 100 ); { - задержка на 100 мс }

WRITE ( '\' );  END;    { - вывод 40 штук 'V в позициях '/' }

WRITELN; READLN; { - приостановка до нажатия клавиши Enter }

END.

Для выбора цвета фона и символов на экране используются следующие константы цветов:

Const

Black =0; { черный }

Blue =1; { синий  }

Green =2; { зеленый }

Cyan =3; { голубой }

Red =4; { красный }

Magenta =5; { фиолетовый }

Brown = 6; { коричневый }

LightGray =7; { светло-серый }

DarkGray =8; { темно-серый }

LightBlue = 9; { ярко-синий }

LightGreen =10; { ярко-зеленый }

LightCyan =11; { ярко-голубой }

LightRed =12; { розовый }

LightMagenta =13; { малиновый }

Yellow =14; { желтый }

White =15; { белый }

Blink = 128; { мерцание символа }

Процедура TextColor устанавливает цвет символов, выводимых в окне с помощью оператора Write. Обращение к процедуре TextColor:

TextColor   (   цвет   :   byte   ) ;

где     цвет - это выражение целого типа; результат его должен быть равен от 0 до 15, в соответствии со значениями констант цветов; в качестве значения цвета можно использовать имя константы или соответствующее ему значение константы цвета.

Например:

TextColor   (Green   +   128);   TextColor   (    2   +   128    );  задают зеленый мерцающий (от + 128) цвет символов.

Пример программы для установки цвета символов дан в листинге 18. Для установки цвета надо ввести значение константы цвета, а для выхода из программы - константу больше 15.

Листинг 18. Установка цвета символов.

Program ColorSim;

Uses   CRT;

VAR COLOR:byte; { - для  цветов текста } BEGIN

WHILE  COLOR < 16   DO BEGIN

Readln (COLOR); { - ввод  константы цвета }

TextColor  (COLOR); { - установка цвета }

Writeln ('Цвет= ',COLOR); {-  вывод  текста }

END;

END.

Процедура TextBackGround устанавливает цвет фона экрана или окна, в которое будут выводиться символы текстов. Формат обращения к процедуре

TextBackGround:

/

TextBackGround   (   цвет   :   byte   );

где     цвет определяет цвет фона экрана; значениями цвета могут быть выражения целого типа, результатом которого могут быть числа от 0 до 7, соответствующие одной из восьми первых цветовых констант. Например: TextBackGround   (   3   ) ; дает голубой цвет фона.

Для начала формирования окон или вывода текста надо установить курсор в требуемое место экрана. Это можно сделать с помощью процедуры GotoXY. Обращение к процедуре GotoXY:

GotoXY   (  X, Y  );

где     X, Y - выражения целого типа:

X - горизонтальная координата, номер позиции строки; X =  1   . .   80; Y - вертикальная координата, номер строки экрана; Y =  1   . .   25.

Верхний левый угол экрана имеет координаты 1,1; нижний правый угол -координаты 80, 25 (X = 80, Y = 25). Например: GotoXY (1,1);.

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

Обращение к процедуре Window:

Window   (X1,Y1,X2,Y2);

где     X1, Yl - координаты верхнего левого угла окна на экране; Х2, Y2 - координаты нижнего правого угла окна на экране.

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

Window   (   2,      3,      4,      5   ); Window   (   1,   24,   80,   25   );

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

Пример рисования окон случайным образом до нажатия любой клавиши дан в листинге 19.

Листинг 19. Рисование окон случайным образом.

Program Ris; Uses CRT;

CONST  MaxX =80; { - максимальная координата Х }

MaxY =25; { - максимальная координата Y }

MaxColor = 8;

VAR X1, Y1, X2, Y2 : byte; BEGIN

Repeat

X1 := Random (MaxX);  Y1 := Random (MaxY); X2 := XI + Random(MaxX);

IF X2 > MaxX Then X2 := MaxX;

Y2 := Yl + Random(MaxY);

IF Y2 > MaxY Then Y2:=MaxY;

TextBackGround (Random(MaxColor - 1 )); Window (X1, Y1, X2, Y2);

ClrScr;  Delay (100);

Until KeyPressed;

END.

С помощью процедур WhereX и WhereY можно определить положение курсора на экране: его горизонтальную и вертикальную координаты. Результат имеет тип BYTE.

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

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

После формирования окна с помощью процедуры Window процедуры TextColor, TextBackGround, ClrScr, ClrEol, GotoXY, DelLine и InsLine относятся к активному (текущему) окну. Например, процедура GotoXY (1,1); будет позиционировать курсор в левый верхний угол текущего окна.

Процедуры LowVideo, NormVideo и HighVideo устанавливают соответственно пониженную, нормальную и повышенную яркость символов текста. При переходе от NormVideo к HighVideo цвета 0 .. 7 заменяются цветами 8 .. 15. Пример программы, изменяющей яркость символов, дан в листинге 20.

Листинг 20. Изменение яркости символов.

PROGRAM  SVET;

Uses   CRT;

BEGIN    TextBackGround (1);     ClrScr;

LowVideo;  Writeln (' Пониженная яркость ');

NormVideo; Writeln (' Нормальная яркость ');

HighVideo; Writeln (' Повышенная яркость ');

END.

Управление принтером

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

Assign ( Output, 'PRN');

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

В табл. 4 имена ESC, SO, SI и т. д. - общеприняты для различных типов принтеров. Их значения даны для EPSON-совместимых принтеров. Для EPSON-несовместимых принтеров значения ESC, SO, SI и другие можно задать в разделе CONST. В листинге 21 приведен пример программы, иллюстрирующий шрифтовые возможности принтера: вывод текста широким, узким, утолщенным шрифтами, двойную печать, печать с подчеркиванием и вывод индексов и показателей степени.

Таблица 4. Символы управления шрифтами и перемещением бумаги

Последовательность управления 

Значения их кодов 

Назначение последовательности управляющих кодов принтеров 

SO 

#14 

Выбор широкого шрифта 

DC4 

#20 

Отказ от широкого шрифта 

SI 

#15 

Выбор узкого шрифта 

DC2 

#18 

Отказ от узкого шрифта 

ESC.'E' 

#27, #69 

Выбор утолщенного шрифта 

ESC.'F 

#27, #70 

Отказ от утолщенного шрифта 

ESC/G' 

#27, #71 

Двукратная печать одной строки 

ESC.'H' 

#27, #72 

Отказ от двойной печати 

ESC,'S',CHR(0) 

#27, #83, #0 

Печать верхних индексов 

ESC,'S',CHR(1) 

#27, #83, #1 

Печать нижних индексов 

ESC.T 

#27, #84 

Отказ от печати индексов 

ESC.'-'.CHRd) 

#27, #35, #1 

Печать с подчеркиванием 

ESC.'-'.CHRCO) 

#27, #35, #0 

Отказ от подчеркивания 

esc;o' 

#27, #48 

Интервал продвижения бумаги 1/8 дюйма 

ESC,'C,CHR(N) 

#27, #67, #N 

Количество строк на странице; N=1..127; 

ESC,'N',CHR(N) 

#27, #78, #N 

Пропустить N строк в конце страницы 

ESC/81 

#27, #56 

Включение контроля за концом бумаги 

ESC/9' 

#27, #57 

Отключение контроля за концом бумаги 

Листинг 21. Возможности управления принтером.

PROGRAM TYPEDEMO;

CONST  ESC=#27; SO=#14; DC4=#20; SI=#15; DC2=#18; BEGIN

ASSIGN (OUTPUT, 'PRN'); REWRITE (OUTPUT);

WRITELN ('демонстрация шрифтовых возможностей принтера'); WRITELN (SO,'это широкий шрифт,',DC4,', а это - стандартный');

WRITELN (SI,'это узкий шрифт', DC2);

WRITELN (ESC, 'E', 'это утолщенный шрифт', ESC, 'F'); WRITELN (ESC, 'G', 'двойная печать', ESC, 'H');

WRITELN (ESC, '-', #1, 'печать с. подчеркиванием', SI, ESC, '-', #0);

WRITELN (' печать индексов: (H', ESC, 'S', #1, SI, '2', DC2, ESC, 'Т', 'SO', ESC, 'S', #1, SI, '4',

DC2, ESC, 'Т', ')',  ESC, 'S', #0, SI, '3',

DC2, ESC, 'T');  CLOSE (OUTPUT);

END.

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

Управление звуковым устройством

В ПК есть одноканальный звукогенератор, вырабатывающий электромагнитные колебания заданной звуковой частоты, которые подаются на встроенный динамик. Для управления динамиком используются процедуры SOUND, NOSOUND И DELAY.

Процедура SOUND позволяет выдать звук заданной частоты. Обращение к процедуре:

SOUND(частота);

где     частота - выражение типа Word, определяющее частоту звука в герцах; частота может быть F  =  20   ..   10000.

Процедура NOSOUND выключает динамик.

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

DELAY (время);

где     время - выражение  типа WORD задающее интервал времени в миллисекундах.

Например:

SOUND (554);  { включение звука }

DELAY (200);  { задержка }

NOSOUND;      { выключение звука }

Короткий звуковой сигнал можно выдать с помощью процедуры

Write   (#7);

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

Листинг 22. Исполнение простой музыкальной гаммы.

PROGRAM  SoundDemo; Uses  CRT;

Const F:ARRAY[1..3] of Word =

(330,349,370,392,415,440,466,494,523,554,588,622,660);

VAR i,j:byte;

BEGIN   For j := 1 TO 2  DO { - перебор октав }

For i := 1 TO 13 DO { - перебор частот }

Begin    SOUND (j * F[i]);    { - выдача звука }

DELAY (100) ; NOSOUND { - задержка и }

End; { - отключение звука }

For j := 2 DownTO 1  DO { - перебор октав и }

For i := 13 DownTO 1 DO { частот в обратном }

Begin    SOUND (j * F[i] );      { направлении }

DELAY (100) ; { - задержка }

NOSOUND { - отключение звука }

End;

END.

Работа с модулем GRAPH

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

Основные сведения о графическом режиме

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

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

Наиболее важные электронные компоненты видеодисплея: контроллер (схема управления), электронно-лучевая трубка, программируемые порты ввода-вывода, матричное постоянное запоминающее устройство с таблицей знакогенератора и буферная видеопамять. Все схемы названных компонентов размещаются на одной печатной плате, которая называется дисплейным адаптером. Фирма IBM разработала и выпускает несколько вариантов плат дисплейного адаптера. В том числе графический адаптер CGA (от англ. Color Grafi.cs Adapter - цветной графический адаптер). Он позволяет формировать изображение из 160 х 100 пикселей. В более совершенных адаптерах EGA (от Enchanced Graphics Adapter - улучшенный графический адаптер) и VGA (video Gate Array - видеографическая матрица) объем видеопамяти увеличен, что позволяет разместить на экране 640 х 350 пикселей. Для формирования цветных изображений дисплей должен быть оснащен цветной электронно-лучевой трубкой. Средства модуля GRAPH позволяют получить на экране изображение, содержащее до 256 цветов одновременно.

Настройка графических процедур модуля GRAPH на работу с конкретным адаптером достигается путем подключения соответствующего драйвера. Драйвер - это специальная программа, осуществляющая управление техническими средствами ПК. Графический драйвер управляет графическим адаптером. Каждый драйвер работает с определенным типом адаптера. Графические драйверы разработаны фирмой Borland практически для всех типов адаптеров. Обычно они располагаются на диске в отдельном каталоге BGI в виде файлов с расширением .BGI (от англ. Borland Graphics Interface - графический интерфейс фирмы Borland).

Рис. 3

Координаты графического экрана аля EGA (УСА)-адаптера в режиме высокого разрешения

Для адаптеров EGA и VGA координаты графического экрана могут изменяться по оси X от 0 до 639 и по оси Y от 0 до 349. Таким образом, всего по вертикали 350 точек, а по горизонтали 640 точек. Схематично координаты графического экрана представлены на рис. 3.

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

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

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

Переход в графический режим и обратно

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

Процедура INITGRAPH инициирует графическую систему и графический режим аппаратуры. Формат обращения к процедуре INITGRAPH:

INITGRAPH ( драйвер, режим, путь );

где     драйвер - параметр-переменная типа INTEGER, определяющая тип графического драйвера и адаптера;

режим - параметр-переменная типа INTEGER, определяющая режим работы графического адаптера;

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

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

Для указания типа драйвера в модуле GRAPH предопределен ряд констант. Например:

CONST   Detect=0; { Режим автоопределения типа драйвера }

CGA = 1;

MCGA = 2;

EGA = 3;   . . .

VGA = 9;

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

VAR  Ga, Gm : INTEGER;

...  Ga : = Detect; INITGRAPH (Ga,Gm, '' );

... INITGRAPH ( Ga, Gm, 'D:\BP\BGI' };

где    Ga - тип драйвера;

Gm - тип режима, результат, возвращаемый INITGRAPH.

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

CONST CGACO=0; {32Ох200,1 страница,4 цвета,палитра 0:

черный, ярко-зеленый, ярко-красный, желтый }

CGAC1=1; {320х200,1 страница, 4 цвета, палитра 1:
черный, ярко-голубой, малиновый, белый }

. . .

EGALo = 0; {640 х 200,4 страницы, 16 цветов }

EGAHi = 1; {640 х 350,2 страницы, 16 цветов }

VGALo =0; { 640 х 200,4 страницы, 16 цветов }

VGAMed = 1; {640 х 350,2 страницы, 16 цветов }

VGAHi = 2; {640 х 480,1 страница, 16 цветов }

РС3270Н1 = 5;{720 х 350, 1 страница, 1 цвет }

IBM8514LO = 0; {640 х 480, 256 цветов }

IBM8514Hi = 1; {1024х 768, 256 цветов }

Функция GraphResult возвращает значение типа INTEGER, в котором содержится код ошибки (успешности) выполнения инициализации графического режима с помощью процедуры INITGRAPH. Значение GraphResult = 0 (или GrOk) определяет успешную инициализацию графического режима. После обращения к функции GraphResult значение кода ошибки сбрасывается. Для многократного использования его надо переслать в переменную целого типа.

После обращения к процедуре INITGRAPH необходим анализ успеха инициализации. Процедуры и функции графического режима надо выполнять только в случае значения GraphResult = 0.

Функция GraphErrorMsg возвращает значение типа String, в котором по указанному коду ошибки выдается соответствующее текстовое сообщение об ошибке. Формат обращения:

GraphErrorMsg ( код ) ;

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

Например, с помощью операторов:

Error := GraphResult;

Writeln ( GraphErrorMsg (Error) ) ; - МОЖНО отпечатать:

'Device driver not found'  (не найден драйвер устройства ) вместо:  'error code -3'  (код ошибки -3),- без этих операторов.

Чаще всего причиной ошибки при обращении к процедуре INITGRAPH является неправильное указание места файла graph.tpu, содержащего библиотеку графических подпрограмм, или файла с драйвером графического адаптера, например файла egavga.bgi для адаптера VGA. Настройку на местоположение драйвера можно выполнить, указав путь в качестве фактического параметра процедуры INITGRAPH или разместив драйвер в текущей директории. Чтобы компилятор Паскаля нашел эти файлы, надо соответствующим образом настроить среду Паскаля. Для этого в режиме Options\Directories\Unit directories надо указать каталог, в котором размещены эти файлы. Например:

D:\BP\UNITS;D:\BP\BGI

Процедура CLOSEGRAPH прекращает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана.

Вывод текста

Модуль GRAPH имеет 5 процедур и функций для вывода текста различными шрифтами, в горизонтальном или вертикальном направлении, с изменением размеров выводимых символов и т. д. С их помощью можно вывести любые тексты, в том числе на русском языке. Для использования русского шрифта из модуля GRAPH нужен либо в файле autoexec.bat путь к файлу загрузки русского шрифта, например vgaga.exe, и его запуск во время загрузки системы, либо предварительный запуск этого файла из среды DOS.

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

Процедура OutText выводит текст начиная с текущего положения указателя. Обращение к процедуре OutText:

OutText ( текст );

где     текст - выражение типа String, определяющее выводимый текст. Текст выводится в соответствии с установленным стилем. Например:

OutText(' Русский шрифт ');

Процедура OutTextXY выводит текст начиная с заданного места на экране. Обращение к процедуре OutTextXY:

OutTextXY   (X,Y,текст);

где     X, Y - выражения типа Integer, определяющие координаты точки начала вывода в пикселях; текст - выражение типа String.

Процедура SetTextStyle устанавливает стиль вывода текста на графический экран. Обращение к процедуре:

SetTextStyle  (шрифт,направление,размер);

где     шрифт, направление и размер - выражения типа Word.

Для указания шрифта можно использовать следующие предварительно определенные константы:

CONST  DefaultFont=0; { стандартный шрифт 8x8}

TriplexFont =1; { шрифт типа триплекс }

SmallFont =2;   { уменьшенный шрифт }

SansSerifFont =3; { прямой шрифт }

GothicFont = 4; { готический шрифт }

Для задания направления выдачи текста используют константы:

CONST  HorizDir =0; { слева направо,горизонтально } VertDir  =1; { снизу вверх, вертикально }

Для каждого шрифта можно изменять его размеры; параметр размера может быть от 1 до 10, а для стандартного шрифта - от 0 до 31. Примеры вывода текста приведены в листингах 23, 24 и 25. В листинге 23 приведен пример программы для вывода текста русским шрифтом при работе в графическом режиме. Для вывода русского шрифта можно использовать только шрифт 0, горизонтальное и вертикальное направление вывода и размеры шрифта от 0 до 31.

Листинг 23. Вывод текста русским шрифтом во время работы в графическом режиме.

program RUSKOD;

Uses Graph, Crt;

var  Driver, Regim, Error : integer; begin

Driver := Detect; InitGraph(Driver, Regim, 'D:\BP\BGI'); Error  := GraphResult;    if Error <> grOk then

begin write (GraphErrorMsg (Error)); Exit end;
SetTextStyle ( 0, 0, 5); OutText ('
Русский шрифт');
SetTextStyle (0,1,2); { -
вертикальный вывод текста }

OutTextXY (200, 115, 'Для продолжения работы');

SetTextStyle (0, 0, 2); { - горизонтальный вывод текста } OutTextXY (210, 95, 'нажмите клавишу Enter ');

Readln;  CloseGraph { - завершение работы в графическом режиме }

end.

Процедура SetTextJustify предназначена для выравнивания текста по горизонтали и вертикали. Оращение к процедуре:

SetTextJustify (Horiz, Vert : Word );

где  Horiz, Vert - параметры выравнивания текста по горизонтали и вертикали.

Значениями параметров могут быть константы выравнивания:

Lef tText = 0 - влево - по горизонтали;

CenterText = 1 - по центру - по горизонтали;

RightText = 2 - вправо - по горизонтали;

BottomText = 3 - вниз - по вертикали;

TopText = 4 - вверх - по вертикали.

Рисование линий и точек

Рассмотрим несколько процедур для рисования линий и точек. С их помощью можно выводить на экран, например, оси координат (процедурой Line) и кривые изменения переменных (процедурой PutPixel).

Процедура Line вычерчивает линию с указанными координатами ее начала и конца. Обращение к процедуре Line:

Line   (   XI,   Yl,   X2,   Y2   );

где     XI, Yl - выражения типа Integer, задающие координаты на чала линии (в пикселях);

Х2, Y2 - выражения типа Integer, задающие координаты конца линии (в пикселях).

Процедура LineTo вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами. Обращение к процедуре LineTo:

LineTo (X,Y);

где     X, Y - выражения типа Integer, которые определяют координаты нового положения указателя (в пикселях).

Процедура LineRel вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат. Обращение к процедуре LineRel:

LineRel (DX, DY)  ;

где     DX, DY - выражения типа Integer, задающие приращения координат для получения нового положения указателя (в пикселях).

Линии вычерчиваются текущим стилем и текущим цветом (установленными в последний раз) с помощью процедуры SetLineStyle.

Процедура SetLineStyle устанавливает новый стиль вычерчивания линий. Она влияет на все линии, вычерчиваемые процедурами Line, LineTo, DrawPoly и др. Формат обращения к процедуре SetLineStyle:

SetLineStyle ( вид, образец, толщина );

где     все параметры - выражения типа Word; вид - вид линии; образец - образец линии; толщина - толщина линии.

Вид линии определяется следующими значениями констант:

CONST   SolidLn  =0; { сплошная линия }

DottedLn =1; { точечная линия }

CenterLn =2; { штрихпунктирная линия }

DashedLn =3; { пунктирная линия }

UserBitLn =4;{вид линии определяется пользователем}

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

Параметр толщина линий может принимать одно из двух значений:

CONST  NormWidth =1; {толщина в 1 пиксель: нормальная } ThickWidth =3; { толщина в 3 пикселя: жирная }

Установленный процедурой SetLineStyle стиль линий используется также при построении многоугольников.

Процедура PutPixel выводит на экран заданным цветом пиксель (точку) по указанным координатам. Формат обращения к процедуре PutPixel:

PutPixel (X,Y,цвет);

где     X, Y - выражения типа Integer, определяющие координаты (в пикселях); цвет - выражение типа Word, определяющее цвет точки.

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

Пример вычерчивания кривых (синусоиды и косинусоиды) процедурой PutPixel дан в листинге 24.

Листинг 24. Рисование кривых процедурой PutPixel.

PROGRAM  RIS;

USES   GRAPH,CRT;

VAR  Ga,Gm,Errror:INTEGER;

I,X,Y:REAL;

BEGIN Ga:=DETECT; Gm:=DETECT; INITGRAPH(Ga,Gm,''); Error:=GraphResult;

IF Error 0 GrOK THEN BEGIN  WRITELN ( GraphErrorMsg (Error));

Halt(1) END; X :=-2*PI;

SetColor (4);

Line(0, 175, 640, 175); { - горизонтальная ось }

Line (320, 0, 320, 350); { - вертикальная ось }

WHILE X < 2 * PI DO

BEGIN  Y:=Sin(X);  { - формирование ординаты Sin(X) }

PutPixel(Round(X*50)+320, Round(Y*80)+175, 2); { - вывод точки }

Y := Cos(X);       { - формирование ординаты Cos(X) }

PutPixel(Round(X*50)+320, Round(Y*80)+175, 3); { - вывод точки }

X := X + 0.1;

END;  {Установка цвета и стиля текста:} SetColor(5);  SetTextStyle(1, 0, 5) ;

OutTextXY(20, 20, 'TURBO PASCAL 5.5 (GRAPH) '); { - вывод текста }

SetTextStyle(3, 0,  3);  { - установка стиля текста }

OutTextXY(20, 60, 'TURBO PASCAL 5.5 (GRAPH). '); { - вывод текста }

READLN;{ - приостановка до нажатия клавиши Enter }

CLOSEGRAPH; { - закрыть графический режим }

END.

Процедура SetColor устанавливает текущий цвет выводимых линий и символов. Формат обращения к процедуре SetColor:

SetColor ( цвет ) ;

где     цвет - выражение типа Word, задающее текущий цвет.

Значения цветов могут быть от 0 до 15 и приведены ранее. Пример рисования линий случайным образом со случайным выбором их цвета дан в листинге 25.

Листинг 25. Рисование линий случайным образом.

program RNDLINE;

Uses  Graph,   Crt;

var  Driver, Regim, Error : integer;

begin

Driver := Detect;     InitGraph(Driver, Regim, ''); Error  := GraphResult;    if Error <> grOk then

begin write ( GraphErrorMsg ( Error ) ); Exit end; Randomize;      SetTextStyle (1, 0, 5 );

OutTextXY (0, 0, 'СЛУЧАЙНЫЕ ЛИНИИ');

repeat    SetColor ( Random (16) );

LineTo ( Random (GetMaxX), 60 + Random ( GetMaxY ) );
Delay(100); { -
задержка программы }

until KeyPressed;{- выполнять до нажатия любой клавиши }
CloseGraph { - закрыть графический режим }

end.

Рисование многоугольников

С помощью средств модуля GRAPH можно:

-  вычертить прямоугольник (процедура RectAngle);

вычертить трехмерное изображение параллелепипеда (процедура BAR3D);

вычертить ломаную линию, заданную координатами точек излома (проце
дура
DrawPoly);

штриховать прямоугольники и многоугольники разными типами и цветами
штриховки.

Рассмотрим процедуру DrawPoly. С ее помощью можно вывести на экран кривую изменения переменной в осях X, Y. Формат обращения:

DrawPoly ( N, координаты );

где     N - выражение типа Word, задающее количество пар точек излома, включая крайние точки;

координаты - массив значений, содержащий координаты точек излома кривой (в пикселях).

Координаты точек излома можно задать массивом записей типа PointType, определенного в модуле Graph:

Type PointType = record X, Y : Word   End;

Вместо массива типа PointType межно задать точки, например, в виде матрицы из двух столбцов и требуемого количества строк: в каждой строке координаты X и Y типа Word или Integer.

В листинге 26 приведен пример программы для рисования графика изменения переменной (синусоиды) в виде ломаной линии процедурой DrawPoly.

Листинг 26. Рисование синусоиды процедурой DrawPoly.

Program Poly_Sinus;

Uses Graph; ~Label MK;  Const  N = 100;

Var   h, d, r, e : integer;

m : array [ O..N ] of PointType;
i: word;

BEGIN    d := Detect;     InitGraph ( d, r, '' ) ;
e := GraphResult; if e <> grOk then begin

writeln ( GraphErrorMsg ( e ) ); Exit;    end;

for i := 0 to N do    with m [ i ] do begin

x := trunc ( i * GetMaxX / N / 2 ) + 150;

у := trunc (GetMaxY *(-sin (2*Pi*i/N)+1)/4) + 80 end;

SetColor ( 1 ); SetLineStyle ( 0, 0, 3 );

DrawPoly ( N + 1 , m ); { Рисование кривой }

{ Рисование осей, стрелочек на них и вывод надписей}

SetColor ( 2 ); SetLineStyle ( 0, 0, 1 );

Line (150, 170, 520, 170 ); Line (520, 170, 510, 172 );

Line (520, 170, 510, 168 ); Line ( 150, 50, 150, 280 );

Line ( 150, 50, 148, 60 ); Line ( 150, 50, 152, 60 );

OutTextXY (510, 180, 'X'); OutTextXY (130,55, 'Y');
{  
Черточки по оси X }

h': = 150;     While h < 510 do begin

Line (h,168,h,172); h := h + 40 end;
{
Черточки по оси Y --}

h := 80;      While h < 305 do begin

Line ( 148, h, 152, h ); h := h + 45 end;

SetColor (5); OutTextXY (350, 100 , 'Y = SIN ( X ) ' );

SetColor ( 4 );    OutTextXY ( 110, 75, '1' );
{  
Оцифровка оси Y - - }

OutTextXY ( 110,120,' 1/2' ); OutTextXY (110,165,'0' );

OutTextXY (110,210,'-1/2') ; OutTextXY (110,255,'-');
{  
Оцифровка оси X  }

OutTextXY ( 185, 180 , 'Pi   Pi  '3Pi   ' );

OutTextXY ( 185, 185 , '—   –    –' );

OutTextXY ( 190, 192 , '4    2    4   ' );

OutTextXY ( 340, 140 , '5Pi  3Pi  7Pi  ' ) ;

OutTextXY ( 308,, 145 , 'Pi   –    –   2Pi ' );

OutTextXY ( 348, 152 , '4    2    4   ' );

Readln;      CloseGraph;

MK:  END.

Подсказки о подпрограммах стандартных модулей

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

  1.  с помощью подменю Help основного меню;
  2.  с помощью команды Ctrl+Fl.

В подменю Help можно выбрать пункт Functions and Procedures или Units.

Если выбрать пункт Functions and Procedures, появится список всех подпрограмм стандартных модулей. Из него можно выбрать имя требуемой подпрограммы. Появится подсказка по ней: описание оператора ее вызова и пример ее использования. Этот пример можно скопировать в окно редактора и выполнить.

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

Для того чтобы вызвать подсказку по конкретной подпрограмме, имя которой имеется в тексте программы, надо подвести курсор под любой символ этого имени и ввести команду Ctrl+Fl. Появится подсказка по подпрограмме и пример ее использования.

Контрольные вопросы

  1.  Что такое модульное программирование?
  2.  Какие типы подпрограмм можно использовать в языке Паскаль?
  3.  Что такое процедура? Поясните ее структуру.
  4.  Что такое функция? Поясните ее структуру.
  5.  Как вызвать для выполнения процедуру, функцию?
  6.  Назовите типы параметров подпрограмм. Что такое формальные и фактические параметры?
  7.  Что такое параметр-значение? Когда его можно использовать? Что может быть
    фактическим параметром для различных типов данных: скалярных, массивов, записей?
  8.  Что такое параметр-переменная?  Когда ее надо использовать? Что может быть фактическим параметром параметра-переменной?
  9.  Что такое параметр-константа, бестиповый параметр, массивы и строки открытого типа?
  10.  Что такое процедурный параметр? Как его объявить и в каких случаях надо использовать?
  11.  Что такое рекурсия? Поясните структуру рекурсивной подпрограммы.
  12.  Что такое модуль? Поясните его структуру, назначение интерфейсной, исполняемой и инициирующей части.
  13.  Как сформировать и подключить модуль для использования?
  14.  Назовите основные стандартные модули языка Паскаль.
  15.  Назовите основные подпрограммы модуля CRT и правила их использования.
  16.  Назовите основные возможности стандартного модуля GRAPH.
  17.  Как перейти в графический режим и обратно в текстовый?
  18.  Назовите основные подпрограммы и правила их использования для вывода текста в графическом режиме.
  19.  Назовите основные подпрограммы и правила их использования для вывода линий, точек и многоугольников.
  20.  Как вызвать подсказки о подпрограммах стандартных модулей?


 

А также другие работы, которые могут Вас заинтересовать

653. Теоретические основы конструирования, технологии и надежности РЭС 334.5 KB
  Принцип работы ЦАП. Импульсный источник питания. Выходной выпрямитель и стабилизатор. Определение основных параметров четырехполюсника. Расчет допусков на входное и выходное сопротивление и коэффициент передачи четырехполюсника.
654. Расчет погонной массы груза, тягового органа и движущих частей конвейера 136 KB
  Нормативные значения расчетных величин. Основные параметры рабочего органа. Расчет погонной массы груза, тягового органа и движущих частей конвейера. Расчет тягового органа на прочность. Основные размеры тягового органа. Кинематический расчет. Выбор элемента передач.
655. Философия жизни и феноменология 130.5 KB
  Иррационализм А. Шопенгауэра. Мир как воля и представление. Философия жизни Ф. Ницше. Понятие жизнь и воля к власти. Иррационализм Ницше в теории познания. Представление о сверхчеловеке. Критика Ницше христианства. Интуитивизм и творческая эволюция А. Бергсона. Феноменология Э. Гуссерля. Разработка Гуссерлем онтологической и гносеологической проблематики. Понятие жизненного мира.
656. Статистическая проверка непараметрических гипотез 78 KB
  Нулевой непараметрической гипотезой называется гипотеза относительно общего вида функции распределения. К первой группе относятся критерии согласия, с помощью которых проверяются нулевые гипотезы относительно общего вида функции распределения.
657. Исследование линейной цепи с обратной связью 39 KB
  Экспериментально исследовать влияние обратной связи на частотные характеристики линейной цепи, а также устойчивость линейной цепи с обратной связью.
658. Проектирование широкополосного усилительного устройства 643.5 KB
  Структурная схема усилителя. Выбор рабочей точки и расчет параметров транзистора. Расчет входного усилительного каскада. Методы исследования, расчета и проектирования широкополосных усилителей гармонических сигналов и импульсных сигналов
659. Товароведная характеристика и экспертиза качества питьевого молока вырабатываемого и реализуемого ГУСП ПЗ Тополя предприятия Московский Тюменского района 410.5 KB
  Состав и потребительские свойства молока. Упаковка, маркировка, хранение и транспортирование питьевого молока. Изучение ассортимента молочных продуктов, вырабатываемых ГУСП ПЗ Тополя. Результаты токсиколого-гигиенических исследований качества молока. Обеспеченность предприятия основными средствами производства и трудовыми ресурсами.
660. Психология развития, возрастная психология 113.5 KB
  Предмет задачи и методы психологий развития. Психология обучения и развития. Психология дошкольного возраста. Методика исследования типологических особенностей личности (К. Юнг). Психология подросткового возраста. Методика исследования агрессивного поведения подростков (А. Бас и А. Даки.).
661. Теория макроэкономического равновесия 125 KB
  Макроэкономическое равновесие: совокупный спрос и совокупное предложение. Идеальная модель. Классическая и кейнсианская модели макроэкономического равновесия. Нисходящая кривая совокупного спроса объясняется другими факторами: (ценовые факторы).