Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_лекций Информатика.doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
970.75 Кб
Скачать

2.4.4Вызов процедур и функций в основной программе

Вызов процедуры представляет в программе самостоятельную команду:

<Имя процедуры>(<Фактический параметр 1>, < Фактический параметр 2>?);

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

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

2.4.5Пример

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

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

program rgr;

type matrica=array[1..20,1..20] of real;

vector=array[1..20] of real;

const n=5;

var a:matrica;

x:vector;

function znak(k:integer):integer;

var i,z:integer;

begin

z:=1;

for i:=1 to k do z:=-z;

znak:=z;

end;

procedure part1(n: integer; var A:matrica);

var i,j:integer;

begin

for i:=1 to n do

for j:=1 to n do a[i,j]:=znak(i+j)*ln(i*j);

end;

procedure part2(n:integer; a:matrica; var x:vector);

var i,j:integer;

min:real;

begin

for i:=1 to n do

begin

min:=a[1,i];

for j:=1 to n do if min>a[j,i] then min:=a[j,i];

x[i]:=a[i,i]-min;

end;

end;

procedure part3(n:integer; var a:matrica);

var i,j,l,k:integer; c:real;

begin

for l:=1 to n do

for i:=1 to n-1 do

begin

k:=i;

for j:=i+1 to n do

if a[k,l]<a[i,l] then k:=j;

c:=a[k,l];

a[k,l]:=a[i,l];

a[i,l]:=c;

end;

end;

procedure print_m(n:integer; a:matrica);

var i,j:integer;

begin

writeln('MATRICA');

for i:=1 to n do

begin

for j:=1 to n-1 do write(a[i,j]:6:3);

writeln(a[i,n]:6:3);

end;

end;

procedure print_V(n:integer; x:vector);

var i:integer;

begin

writeln('VECTOR');

for i:=1 to n-1 do write(x[i]:6:3);

writeln(x[n]:6:3);

end;

begin

part1(n,a);

part2(n,a,x);

print_M(n,a);

print_V(n,x);

part3(n,a);

print_m(n,a);

readln;

end.

2.5Использование библиотек стандартных процедур в программах. Модуль Crt. Текстовые режимы использования экрана.

Язык программирования Паскаль содержит ряд предопределенных процедур, разделенных по темам на несколько библиотек (модулей). Файлы с библиотеками процедур имеют расширение tpu и хранятся в папке units основной директории tp. Подключение библиотек к программе производится сразу за заголовком программы. Для этого используется служебное слово uses. За ним перечисляются через запятую имена файлов библиотек. Модуль Crt содержит процедуры и функции, испльзующиеся для работы на текстовом экране. Примером процедуры этого модуля может служить очистка экрана clrscr. Процедуры этого модуля всегда работают в активном окне. Окном считается прямоугольная область, определяемая координатами верхнего левого и нижнего правого угла. По умолчанию активным окном является экран. Размеры экрана, по умолчанию, - 80x25 знакомест. Заданный по умолчанию режим экрана можно изменить, используюя процедуру textmode (<константа режима>). Константа 0 задает черно/белый режим с размером экрана 40x25. 1 - цветной режим 40x25 2 - черно/белый режим 80x25 3 - цветной режим 80x25 7 - черно/белый режим и монохромный дисплей 256 - загружаемый шрифт - 43 строки в EGA и 50 строк в VGA. Процедуры этого модуля могут обеспечивать работу со звуком. Частоту звука определяет процедура sound (<число герц>). Длительность звука регулируется процедурой delay (<длительность звука в мс.>) и процедурой nosound - отключение звука. Короткий звуковой сигнал можно обеспечить, используя символ #7 в списке вывода оператора write. В списке вывода также можно использовать еще 4 специальных символа: #8 - смещение курсора влево на одну позицию #10 - сдвиг курсора на одну строку вниз #13 - перемещение курсора на левую границу окна Комбинация #13#10 соответствует нажатию клавиши Enter. Для активирования нового окна следует определить его границы. Для этого используется процедура window (x1, y1, x2, y2). Координаты x1, y1, x2, y2 - абсолютные, все остальные координаты в окне - относительные, а точкой отсчета считается верхний левый угол окна. В пределах окна курсор можно переместить на овую позицию, используя процедуру gotoxy (x, y). Если x, y выходят за пределы окна, то процедура игнорируется. Для изменения цветовой гаммы окна используются следующие процедуры: textbackground (<…>) - изменяет цвет фона; в качестве аргументов выступают числа 0..7 textcolor (<…>) - изменяет цвет текста; в качестве аргументов выступают числа 0..15. Для организации