Таблица 5

Операция

Фрагмент программы

Ввод элементов массива

for i:=1 to m do

for j:=1 to n do

  read(A[i, j]);

Вывод элементов массива

for i:=1 to m do

begin

  for j:=1 to n do

  write(A[i, j]);

  writeln;

end;

Замена элементов массива на величину z

for i:=1 to m do

for j:=1 to n do

  A[i, j]:=z;

Увеличение элементов массива на величину z

(аналогично уменьшение, умножение, деление)

for i:=1 to m do

for j:=1 to n do

  A[i, j]:=A[i, j]+z;

Вычисление элементов массива B прибавлением к элементам массива A величины z

(аналогично вычитанием, умножением, делением)

for i:=1 to m do

for j:=1 to n do

  B[i, j]:=A[i, j]+z;

Вычисление индексов максимального элемента imax, jmax

(аналогично минимального)

max:=A[1,1];

imax:=1;

jmax:=1;

for i:=1 to m do

for j:=1 to n do

  if A[i, j]>max then

  begin

  max:=A[i, j];

  imax:=i;

  jmax:=j;

  end;

Вычисление суммы элементов 1-й строки

s:=0;

for j:=1 to n do

s:=s+A[1,j];

Вычисление суммы элементов 1-го столбца

s:=0;

for i:=1 to m do

s:=s+A[i,1];

Особенности элементов квадратных матриц

Двумерный массив называется квадратной матрицей, если у него количество строк равно количеству столбцов
().

Рассмотрим квадратную матрицу:

.

Элементы aij этого массива имеют такие особенности:

Элементы находятся на главной диагонали, если . Элементы находятся выше главной диагонали, если . Элементы находятся ниже главной диагонали, если . Элементы находятся вне главной диагонали, если . Элементы находятся на побочной диагонали, если . Элементы находятся выше побочной диагонали, если . Элементы находятся ниже побочной диагонали, если . Элементы находятся вне побочной диагонали, если .

10.3. Перестановка и сортировка элементов массива

Рассмотрим фрагменты программ в таблице 6.

НЕ нашли? Не то? Что вы ищете?

Таблица 6

Операция

Фрагмент программы

Перестановка элементов 1-й и 2-й строк двумерного массива

for j:=1 to n do

begin

  c:=A[1,j];

  A[1,j]:=A[2,j];

  A[2,j]:=c;

end;

Перестановка элементов 1-го и 2-го столбцов двумерного массива

for i:=1 to m do

begin

  c:=A[i,1];

  A[i,1]:=A[i,2];

  A[i,2]:=c;

end;

Сортировка элементов одномерного массива по возрастанию

(аналогично по убыванию)

for k:=1 to n-1 do

begin

  min:=A[k];

  imin:=k;

  for i:=k+1 to n do

  if A[i]<min then

  begin

  min:=A[i];

  imin:=i;

  end;

  c:=A[k];

  A[k]:=A[imin];

  A[imin]:=c;

end;

Сортировка строк двумерного массива по возрастанию первых элементов строк

(аналогично по убыванию)

for k:=1 to m-1 do

begin

  min:=A[k,1];

  imin:=k;

  for i:=k+1 to m do

  if A[i,1]<min then

  begin

  min:=A[i,1];

  imin:=i;

  end;

  for j:=1 to n do

  begin

  c:=A[k, j];

  A[k, j]:=A[imin, j];

  A[imin, j]:=c;

  end;

end;

Сортировка столбцов двумерного массива по возрастанию первых элементов столбцов

(аналогично по убыванию)

for k:=1 to n-1 do

begin

  min:=A[1,k];

  jmin:=k;

  for j:=k+1 to n do

  if A[1,j]<min then

  begin

  min:=A[1,j];

  jmin:=j;

  end;

  for i:=1 to m do

  begin

  c:=A[i, k];

  A[i, k]:=A[i, jmin];

  A[i, jmin]:=c;

  end;

end;


Тема № 11. Программирование подпрограмм и структурных типов данных

11.1. Подпрограммы

Подпрограмма – именованный блок операторов, отдельно выделенный в составе программы.

Подпрограммы бывают 2-х видов:

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

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

Описание подпрограммы, включающее:

а) Заголовок.

б) Разделы описаний.

в) Тело подпрограммы (begin…end;).

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

Заголовок подпрограммы и её вызов включают:

Имя подпрограммы (идентификатор функции или процедуры). Список параметров (аргументов, атрибутов).

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

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

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

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

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

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

Локальные переменные – переменные, используемые только внутри подпрограммы.

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

11.2. Программирование задач с функциями

Заголовок описания функции имеет вид:

function Func ( SFP1 : T1 ; … ; SFPN : TN ) : T ;

где  function  – функция,  Func  – имя функции,  SFP1  – список формальных параметров 1-й, SFPN  – список формальных параметров N-й, T1  – тип параметров в 1-м списке, TN  – тип параметров в N-м списке, T  – тип значения, возвращаемого функцией.

Это означает, что задаётся подпрограмма-функция с именем  Func, зависящая от формальных параметров из списка  SFP1 типа  T1 ,  … из списка  SFPN типа  TN,  а также вычисляющая значение типа  T.

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

Func ( SFP )

где  Func  – имя функции,  SFP – список фактических параметров.

Это означает, что вычисляется значение функции  Func, зависящей от фактических параметров из списка  SFP, причём вызов функции может осуществляться в составе выражения.

Задача 1.

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

Программа.

Program z1;

Var

A:array[0..100] of real;

B, C,x:real;

i, n:integer;

Function Step(a, b:real):real;

begin

  Step:=exp(b*ln(a));

end;

Begin

read(n, x);

for i:=0 to n do

  read(A[i]);

B:=Step(2.1,5)+Step(7,0.3);

C:=0;

for i:=0 to n do

  C:=C+A[i]*Step(x, i);

writeln(B, C);

End.


11.3. Программирование задач с процедурами

Заголовок описания процедуры имеет вид:

procedure Proc ( SFP1 : T1 ; … ; SFPN : TN ) ;

где  procedure  – процедура,  Proc  – имя процедуры,  SFP1  – список формальных параметров 1-й, SFPN  – список формальных параметров N-й, T1  – тип параметров в 1-м списке, TN  – тип параметров в N-м списке.

Это означает, что задаётся подпрограмма-процедура с именем  Proc, зависящая от формальных параметров из списка  SFP1 типа  T1 ,  … из списка  SFPN типа  TN,  а также выполняющая какие-либо действия.

Вызов процедуры из другой части программы имеет вид:

Proc ( SFP );

где  Proc  – имя процедуры,  SFP – список фактических параметров.

Это означает, что выполняются действия в теле процедуры  Proc, зависящей от фактических параметров из списка  SFP, причём вызов процедуры не может осуществляться в составе выражения.

Задача 2.

Условие задачи. В двумерном массиве A из 3 строк и 4 столбцов вычислить сумму и произведение отрицательных элементов с использованием подпрограммы-процедуры, именованных констант и типов данных.

Программа.

Program z2;

Const m=3; n=4;

Type TT=array [1..m,1..n] of real;

Var A:TT; i, j:integer; s, p:real;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13