Программирование с использованием процедур

 

Общий вид процедуры следующий:

 

procedure f (var g1:t1; g2:t2; …);

Раздел описаний

Begin

Раздел операторов

End;

здесь f – имя процедуры; gi - формальные параметры (g1 – формальный параметр-переменная, записывается со служебным словом var; g2 – формальный параметр-значение); t - типы формальных параметров.

Особенности использования процедуры:

– процедура помещается в главной программе после раздела var и перед разделом begin основной программы;

– вызов процедуры: f (b1, b2, … ); здесь bi- фактические параметры;

– возврат из процедуры происходит на оператор, следующий за вызовом;

– формальные и фактические параметры должны соответствовать по количеству, порядку следования и типу;

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

– параметры–переменные записываются со служебным словом var в заголовке процедуры. Параметры-переменные выполняют роль как входных, так и выходных параметров процедуры. Они могут получать значения фактических параметров, изменять их в процедуре и возвращать новые значения фактическим параметрам;

– тип массива, передаваемого в процедуру, должен быть описан в разделе type основной программы.

 

Пример 1. В символьном массиве А(10) заменить все * на : , а в массиве В(15) – все . на !.

Type

cm=array [1..15] of char;

 

Var

a, b: cm;

a1, a2, b1, b2 : char;

i: integer;

 

 

procedure Zam (var x:cm; n: integer; x1, x2: char);

Begin

WriteLn (‘Исходный массив’);

for i := 1 to n do

Write(x[i]);

WriteLn;

for i := 1 to n do

if x[i] = x1 then

x[i] := x2;

WriteLn (‘Новый массив’);

for i := 1 to n do

Write (x[i]);

WriteLn;

End;

 

{Основная программа}

Begin

WriteLn (‘Введите а(10)’);

for i := 1 to 10 do

ReadLn (a[i]);

WriteLn (‘Введите в(15)’);

for i := 1 to 15 do

ReadLn (b[i]);

Zam (a, 10, ‘*’, ‘:’);

Zam (b, 15, ‘.’, ‘!’);

ReadLn;

End.

 

Пример 2. Второй вариант первого примера. Ввод, вывод массивов, замену символов оформить как процедуры.

 

Type

cm =array [1..15] of char;

 

Var

a, b:cm;

a1, a2, b1, b2:char;

ka, kb, i:integer;

 

procedure Vvod (var x:cm, n:integer; im: char);

Begin

WriteLn (‘Введите массив’, im);

Write (‘Количество элементов’, n);

for i := 1 to n do

ReadLn (x[i]);

End;

 

procedure Vivod (x:cm; n:integer; im: char);

Begin

WriteLn (‘массив’,im);

for i := 1 to n do

Write (x[i],’_’);

WriteLn;

End;

 

procedure Zam (var x:cm; i: integer; x1, x2 :char);

Begin

for i := 1 to n do

if x[i] = x1 then

x[i] := x2;

End;

 

{Основная программа}

Begin

WriteLn (‘Введите количество элементов в массиве а=>’);

ReadLn (ka);

Vvod (a, ka, ‘a’);

Write (‘введите количество элементов в=>’);

ReadLn(kb);

Vvod (b, kb, ‘b’);

Vivod (a, ka, ‘a’);

Zam (a, ka, ‘*’, ‘:’);

Vivod (a, ka, ‘a’);

Vivod (b, kb, ‘b’);

Zam (b, kb, ‘.’, ‘!’);

Vivod (b, kb, ‘b’);

ReadLn;

End.

 

Пример 3. В символьных матрицах А(3,3) и D (4,4) определить номер строки и номер столбца, где больше всего *.

 

Type

cmatr=array [1..4, 1..4] of char;

 

Var

a, d: cmatr;

c: char;

i, j: integer; k, max : integer;

as, at, ds, dt: integer;

 

procedure Pz (b: cmatr; n: integer;c1: char; var bs, bt :

integer);

Begin

WriteLn (‘Матрица’,c1);

for i := 1 to n do

Begin

for j := 1 to n do

Write (b[i, j]);

WriteLn ;

end;

max := 0;

bs := 0;

for i := 1 to n do

Begin

k := 0;

for j := 1 to n do

if b[i, j] = ’*’ then k := k+1;

if max < k then max := k;

bt := j;

end;

End;

 

{Основная программа}

begin

WriteLn (‘Введите а(3, 3)’);

for i := 1 to 3 do

for j := 1 to 3 do

ReadLn (a[i, j]);

Pz (a, 3, ‘a’, as, at );

WriteLn (‘В матрице а строка =’as,’ столбец =’ at);

WriteLn (‘Введите d(4, 4)’);

for i := 1 to 4 do

for j := 1 to 4 do

ReadLn (d[i, j]);

Pz (d, 4, ‘d’, ds, dt);

WriteLn (‘в матрице d строка =’ds,’ столбец =’, dt);

End.

 








Дата добавления: 2017-01-29; просмотров: 554;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.025 сек.