Program z2;

Var

a, b,c, R,V, F:real;

Begin

read(b, c,R);

a:=sqrt(sqr(c)-sqr(b));

V:=4/3*pi*R*R*R;

F:=(exp(0.2*ln(V))+c)/a;

writeln(F);

End.

7.6. Программирование разветвлений

Для реализации алгоритма разветвляющейся структуры в языке Pascal используются следующие операторы.

Оператор безусловного перехода имеет вид:

goto M

Это означает, что надо перейти к строке с  меткой M.

Метка – обозначение закладки в программе (метка обычно отделяется от остального текста программы двоеточием).

Оператор условного перехода  (условный оператор) имеет вид:

if U then Op1 else Op2

Это означает, что если условие U истинное, то выполнять оператор Op1, иначе выполнять оператор Op2.

Условие – логическое выражение, которое может принимать одно из 2-х значений: «истина» или «ложь».

Оператор варианта (оператор выбора) имеет вид:

case S of

  Z1 : Op1;

  …

  ZN : OpN

  else Op0

end

Это означает, что в случае, если селектор S принимает значение из списка Z1, то выполнять оператор Op1, … если селектор S принимает значение из списка ZN, то выполнять оператор OpN, иначе выполнять оператор Op0.

Селектор – выражение порядкового типа, которое может принимать одно из многих значений (селектор может быть целым числом и не может быть дробным числом).

Задача 3.

Условие задачи. Вычислить величину

Блок-схема.

Программа.

Program z3;

Var

a, b,c:real;

Begin

read(a, b);

if a>b

  then c:=a+b

  else c:=a-b;

writeln(c);

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

End.

7.7. Программирование циклов

Для реализации алгоритма циклической структуры в языке Pascal используются следующие операторы.

Оператор цикла с предусловием имеет вид:

while U do Op

Это означает, что пока условие U истинное, повторять оператор Op в цикле; как только условие станет ложным, выйти из цикла.

Оператор цикла с постусловием имеет вид:

repeat

Op1;

  …

OpN

until U

Это означает, что надо повторять операторы Op1, … OpN в цикле до тех пор, пока условие U не станет истинным; как только условие станет истинным, выйти из цикла.

Оператор цикла с параметром:

а) При увеличении параметра имеет вид:

for Par := Nz to Kz do Op

Это означает, что для параметра Par, увеличивающегося от начального значения Nz до конечного значения Kz с шагом 1, повторять оператор Op в цикле.

б) При уменьшении параметра имеет вид:

for Par := Nz downto Kz do Op

Это означает, что для параметра Par, уменьшающегося от начального значения Nz до конечного значения Kz с шагом (-1), повторять оператор Op в цикле.

Параметр цикла (счётчик циклов) – переменная порядкового типа, изменяющаяся в цикле от начального до конечного значения с каким-либо шагом (параметр цикла может быть целым числом и не может быть дробным числом).

Задача 4.

Условие задачи. Вычислить значения функции при x, увеличивающемся от xн до xк с шагом Δx

(Введём обозначения: xн → xn ;  xк → xk ;  Δx → dx ).

Блок-схема.

Программа.

Program z4;

Var

x, y,xn, xk, dx:real;

Begin

read(xn, xk, dx);

x:=xn;

while x<=xk do

  begin

  y:=sin(x)/cos(x);

  writeln('при x=',x:10:3,'  y=',y:7:2);

  x:=x+dx;

  end;

End.

7.8. Одномерные массивы

Одномерный массив (вектор) – массив, элементы которого имеют один неповторяющийся номер.

Индекс одномерного массива – порядковый номер элемента в одномерном массиве.

Описание одномерного массива в разделе описания переменных (Var) на языке Pascal имеет вид:

Mas : array [ IMin.. IMax ] of T ;

Это означает, что переменная Mas является массивом, который может иметь индексы от IMin до IMax у элементов типа T.

Пример.

Var A : array [1..100] of real;

Это означает, что переменная A – массив, который может содержать от 1 до 100 элементов вещественного типа.

Доступ к элементу одномерного массива на языке Pascal имеет вид:

Mas [ Ind ]

Это означает доступ к элементу массива Mas с индексом Ind.

Пример.

A[1]

b[3]

c[i]

d[n]

f[k+1]

Это означает 1-й элемент массива A и т. д.

Задача 5.

Условие задачи. Дан массив A, состоящий из n элементов (n ≤ 100). Найти сумму элементов массива:

.

Блок-схема.


Программа.

Program z5;

Var

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

i, n:integer;

s:real;

Begin

read(n);

s:=0;

for i:=1 to n do

  begin

  read(A[i]);

  s:=s+A[i];

  end;

writeln(s);

End.

7.9. Фрагменты вычисления характеристик одномерного массива

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

Таблица 4

Характеристика

Для всех элементов 

Для части элементов

Сумма

s

s:=0;

for i:=1 to n do

s:=s+A[i];

s:=0;

for i:=1 to n do

if A[i]>z then

  s:=s+A[i];

Количество

k

k:=n;

k:=0;

for i:=1 to n do

if A[i]>z then

  k:=k+1;

Произведение

p

p:=1;

for i:=1 to n do

p:=p*A[i];

p:=1;

for i:=1 to n do

if A[i]>z then

  p:=p*A[i];

Максимальное значение

max

max:=A[1];

for i:=2 to n do

if A[i]>max then

  max:=A[i];

max:=-1E10;

for i:=1 to n do

if (A[i]>max) and (A[i]>z) then

  max:=A[i];

Минимальное значение

min

min:=A[1];

for i:=2 to n do

if A[i]<min then

  min:=A[i];

min:=1E10;

for i:=1 to n do

if (A[i]<min) and (A[i]>z) then

  min:=A[i];

Среднее значение

sr

s:=0;

for i:=1 to n do

s:=s+A[i];

sr:=s/n;

s:=0;

k:=0;

for i:=1 to n do

if A[i]>z then

  begin

  s:=s+A[i];

  k:=k+1;

  end;

sr:=s/k;

7.10. Фрагменты операций с одномерными массивами

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

Таблица 5

Операция

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

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

for i:=1 to n do

read(A[i]);

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

for i:=1 to n do

writeln(A[i]);

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

for i:=1 to n do

A[i]:=z;

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

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

for i:=1 to n do

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

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

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

for i:=1 to n do

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

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

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

max:=A[1];

imax:=1;

for i:=2 to n do

if A[i]>max then

  begin

  max:=A[i];

  imax:=i;

  end;

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

for i:=1 to n do

if A[i]>z then

  writeln(i);

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

c:=A[1];

A[1]:=A[2];

A[2]:=c;

7.11. Двумерные массивы

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

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

Описание двумерного массива в разделе описания переменных (Var) на языке Pascal имеет вид:

Mas : array [ IMin.. IMax, JMin.. JMax ] of T ;

Это означает, что переменная Mas является массивом, который может иметь индексы строк от IMin до IMax, индексы столбцов от JMin до JMax  у элементов типа T.

Пример.  Var A : array [1..10,1..15] of real;

Это означает, что переменная A – массив, который может содержать от 1 до 10 строк, от 1 до 15 столбцов из элементов вещественного типа.

Доступ к элементу двумерного массива на языке Pascal имеет вид:

Mas [ Ind1 , Ind2 ]

где  Mas  – имя массива,  Ind1  – индекс строки,  Ind2  – индекс столбца.

Это означает доступ к элементу массива Mas, находящемуся в строке с индексом Ind1 и в столбце с индексом Ind2 .

Пример.  A[1,1];  b[i, j]

Это означает элемент массива A в 1-й строке и 1-м столбце, и т. д.

Задача 6.

Условие задачи. Дан двумерный массив A из m строк и n столбцов (m ≤ 10; n ≤ 15). Найти сумму положительных элементов в массиве A.

Блок-схема.

Программа.

Program z6;

Var

A:array[1..10,1..15] of real;

i, j,m, n:integer;

s:real;

Begin

read(m, n);

s:=0;

for i:=1 to m do

  for j:=1 to n do

  begin

  read(A[i, j]);

  if A[i, j]>0 then s:=s+A[i, j];

  end;

writeln(s);

End.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Func ( SFP )

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

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

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

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

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

Proc ( SFP )

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

Задача 7.

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

Программа.

Program z7;

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.

Задача 8.

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

Программа.

Program z8;

Const m=3; n=4;

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

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

Procedure SumPro(B:TT; m, n:integer; var s, p:real);

var i, j:integer;

begin

  s:=0; p:=1;

  for i:=1 to m do

  for j:=1 to n do

  if B[i, j]<0 then

  begin

  s:=s+B[i, j];

  p:=p*B[i, j];

  end;

end;

Begin

for i:=1 to m do

  for j:=1 to n do

  read(A[i, j]);

SumPro(A,3,4,s, p);

writeln(s, p);

End.


Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4