Закрепление навыков использования процедур и функций.

Практическая работа

Составление программ, в которых применяются процедуры и функции

Цель работы: Научиться работать с процедурами и функциями и использовать параметры-переменные в процедуре.

Пример:

Написать программу для нахождения значения функции Закрепление навыков использования процедур и функций. - student2.ru , где х изменяется от p/2 до 2p с шагом p/12. Вычисление у оформить в виде функции.

{ Вычисление значений у}

program prac9;

var x,y:real;

function f(x:real):real;

begin

f:=sin(x)-1;

end;

begin

writeln(' x y');

writeln('------------------------');

x:=pi/2;

repeat

y:=f(x);

writeln(x:6:2,y:15:6);

x:=x+pi/12;

until x>2*pi;

writeln('------------------------');

readln;

end.

Задание.

№1.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от p/2 до 2p с шагом p/12. Вычисление у оформить в виде функции.

ProgramFunc_1_1;

Const

pi=3.14;

Var

y,x:real;

Functionf(x:real):real;

Begin

f:= sin(x)/x;

end;

Begin

x:= pi/2;

Whilex < 2 * pi do

Begin

y:=f(x);

writeln('x = ', (x * 180)/pi:3:2, ' y=',y:3:2);

x:=x+pi/12;

end;

end.

x = 90.00 y=0.64

x = 105.00 y=0.53

x = 120.00 y=0.41

x = 135.00 y=0.30

2. Закрепление навыков использования процедур и функций. - student2.ru Написать программу и процедуру, вызываемую из основной программы для вычисления объема шара и площади его поверхности.

ProgramProc_1_2;

Const

pi=3.14;

Var

r,P,V:real;

ProcedureObS(r:real; var m,n:real);

Begin

m:= 4/3 *pi * sqr(r);

n := 4/3 * pi *power(r,3);

end;

Begin

write('Введите радиус r = ');

read (r);

Obs(r, p, v);

writeln('p = ',p:3:2, ' v =', v:3:2);

end.Введите радиус r = 5

p = 104.67 v =523.33

№2.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от p/2 до 2p с шагом p/12. Вычисление у оформить в виде функции.

ProgramFunc_2_1;

Const

pi=3.14;

Var

y,x:real;

Functionf(x:real):real;

Begin

f:= x * cos(x);

end;

Begin

x:= pi/2;

whilex <= 2 * pi do

Begin

y:=f(x);

writeln('x = ', (x * 180)/pi:3:2, ' y=',y:3:2);

x:=x+pi/12;

end;

end.

x = 90.00 y=0.00

x = 105.00 y=-0.47

x = 120.00 y=-1.04

x = 135.00 y=-1.66

x = 150.00 y=-2.26

2. Написать программу и процедуру, вызываемую из основной программы для вычисления объема параллелепипеда и площади его поверхности (V = abc, P = 2(ab + bc + ac)).

ProgramProc_2_2;

Var

a,b,c,v,p:real;

ProcedureObPl(x,y,z:real; varo,s:real);

Begin

o:= 2*(x*y + y* z + x* z);

s := x*y*z;

end;

Begin

writeln('Введите a,b,c');

read (a,b,c);

ObPl(a,b,c,p,v);

writeln('площадь параллепипеда p = ',p:3:2, ' объем параллепипеда v =', v:3:2);

end.

Введите a,b,c

2.1

3.3

6.4

площадь параллепипеда p = 82.98 объем параллепипеда v =44.35

№3.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от -1 до 3 с шагом 0,5. Вычисление у оформить в виде функции.

2. Написать программу и процедуру, вызываемую из основной программы для вычисления объема куба и площади его поверхности (V = a3 , P = 6a2 ).

Введите a = 4

площадь куба = 96.00 объем куба v =64.00

№4.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от -15 до 20 с шагом 5. Вычисление у оформить в виде функции.

Ответ:

x=-15 y=0.81

x=-10 y=0.71

x= -5 y=0.46

x= 0 y=2.00

x= 5 y=1.62

x= 10 y=1.31

x= 15 y=1.20

2. Написать программу и процедуру, вызываемую из основной программы для вычисления объема кругового цилиндра и площади его боковой поверхности (V = pR2 h, S = 2pRh).

Ответ:

Введите радиус r = 5

Введите высоту h = 10

площадь кругового цилиндра s = 314.00 объем кругового цилиндра v =785.00

№5.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от -p до p с шагом p/12. Вычисление у оформить в виде функции.

Ответ:

x=-3.14 y=0.00

x=-2.88 y=-0.29

x=-2.62 y=-0.57

и т.д.

2. Написать программу и процедуру, вызываемую из основной программы для вычисления объема кругового конуса и площади его боковой поверхности Закрепление навыков использования процедур и функций. - student2.ru

№6.

1. Написать программу для нахождения значения функции

y = sin x + sin 2x + sin 3x

х изменяется от -2p до 2p с шагом p/8. Вычисление у оформить в виде функции.

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

№7.

1. Написать программу для нахождения значения функции

Закрепление навыков использования процедур и функций. - student2.ru

х изменяется от 1 до 5 с шагом 0,5. Вычисление у оформить в виде функции.

2. Написать программу и процедуру для перевода введенного значения фунтов в унции и килограммы

(1 фут = 16 унций = 0,454 кг).

№8.

1. Написать программу для нахождения значения функции

y = x2 – 2x + 3

х изменяется от -3 до 3 с шагом 0,5. Вычисление у оформить в виде функции.

2. Написать программу и процедуру для вычисления сопротивления цепи из четырех сопротивлений при последовательном и параллельном соединении.

№ 9.

1. Написать программу для нахождения значения функции

y = x3 – 0.8x + 2

х изменяется от -2 до 4 с шагом 0,5. Вычисление у оформить в виде функции.

2. Написать программу и процедуру для вычисления скоростей шаров массами m1 и m2 после удара, скорость первого шара – v1, второй шар до удара покоился Закрепление навыков использования процедур и функций. - student2.ru

№10.

1. Написать программу для нахождения значения функции

y = (x + 1)2 – 2(x +5)

х изменяется от -3 до 3 с шагом 0,5. Вычисление у оформить в виде функции.

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

Оформление отчета:

В отчете должны быть представлены:

1. Номер и название работы.

2. Цель работы.

3. Задание.

4. Для каждого задания должен быть записан текст программы.

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

1. Что такое процедура?

2. Как объявляется процедура?

3. Как вызывается процедура?

4. Чем отличается параметр-переменная от простого параметра?

5. Какие переменные называются локальными?

6. Какие переменные называются глобальными?

7. Что такое функция?

8. Как объявляется функция-программиста?

9. Как происходит вызов функции?

Практическая работа №10.

Закрепление навыков использования процедур и функций.

Цель работы: Научиться использовать процедуры и функции при работе с массивами.

Теоретическая справка

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

type новое_имя_типа [диапазон массива] of тип_массива;

Например:

type mas [1..10] of integer;

это означает, что создан новый тип mas, для одномерных массивов размерности 10, состоящих из целых чисел. Если необходимо будет передать такой массив с именем В в процедуру input, заголовок которой выглядит так:

procedure input(a:mas);

то обращение к процедуре будет выглядеть:

input(B) ;

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

Пример:

Написать программу для ввода двух массивов С и D, вывести эти массивы в виде матриц, найти минимальные элементы, а также суммы этих массивов. Выполнить перестановки: в массиве С переставить последнюю и предпоследнюю строки, в массиве D переставить 1 и 2 строки. Все повторяющиеся действия оформить в виде процедур или функций.

Программа выглядит следующим образом:

program massiv;

uses crt;

const n=3;

m=3;

type mas=array[1..n,1..m] of real;

var C,D:mas;

i,j:integer;

S,buf,min:real;

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

procedure vvod(var a:mas);

var i,j:integer;

begin

for i:=1 to n do

for j:=1 to m do

begin

write(i,',',j,'->');

readln(a[i,j]);

end;

end;

{Ввывод элементов массива в виде матрицы}

procedure vivod(a:mas);

var i,j:integer;

begin

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:10:2);

writeln;

end;

end;

{Перестановка в массиве k-той и l-той строк}

procedure perest(var a:mas;k,l:integer);

var buf:real;

i,j:integer;

begin

for j:=1 to m do

begin

buf:=a[k,j];

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

a[l,j]:=buf;

end;

end;

{Поиск минимального элемента массива}

function min_mas(a:mas):real;

var min:real;

i,j:integer;

begin

min:=a[1,1];

for i:=1 to n do

for j:=1 to m do

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

min_mas:=min;

end;

{Поиск суммы элементов массива}

function sum_mas(a:mas):real;

var S:real;

i,j:integer;

begin

S:=0;

for i:=1 to n do

for j:=1 to m do

S:=S+a[i,j];

sum_mas:=S;

end;

begin

clrscr;

writeln('Введите элементы массива С:');

vvod(C);

writeln;

writeln('Введите элементы массива D:');

vvod(D);

clrscr;

writeln('Массив С:');

vivod(C);

perest(C,n,n-1);

writeln('Массив С после перестановки:');

vivod(C);

S:=sum_mas(C);

min:=min_mas(C);

writeln('Сумма элементов массива С->',S:5:2);

writeln('Минимальный элемент массива С->',min:5:2);

writeln

writeln('Массив D:');

vivod(D);

perest(D,1,2);

writeln('Массив D после перестановки:');

vivod(D);

S:=sum_mas(D);

min:=min_mas(D);

writeln('Сумма элементов массива D->',S:5:2);

writeln('Минимальный элемент массива D->',min:5:2);

readln;

end.

Задание

№1.

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

№2.

Написать программу: объявить два двумерных массива, заполнить эти массивы данными, вывести на экран в виде матриц, найти количество отрицательных элементов в массивах, переставить местами первый и последний столбики, вывести новые массивы. Все действия с массивами оформить в виде процедур или функций.

№3.

Написать программу: объявить два двумерных массива, заполнить эти массивы данными, вывести на экран в виде матриц, найти максимальные элементы массивов, переставить местами первую и вторую строки, вывести новые массивы. Все действия с массивами оформить в виде процедур или функций.

№4.

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

№5.

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

№6.

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

№7.

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

№8.

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

№9.

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

№10.

Написать программу: объявить два двумерных массива, заполнить эти массивы данными, вывести на экран в виде матриц, найти количество четных элементов в массивах, переставить местами первый и последний столбики, вывести новые массивы. Все действия с массивами оформить в виде процедур или функций.

№11.

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

№12.

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

№13.

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

№14.

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

№15.

Написать программу: объявить два двумерных массива, заполнить эти массивы данными, вывести на экран в виде матриц, найти произведение элементов, стоящих на главной диагонали этих массивов, переставить местами первый и предпоследний столбики, вывести новые массивы. Все действия с массивами оформить в виде процедур или функций.

№16.

Написать программу: объявить два двумерных массива, заполнить эти массивы данными, вывести на экран в виде матриц, найти сумму элементов больше 10 в этих массивах, переставить местами вторую и последнюю строки, вывести новые массивы. Все действия с массивами оформить в виде процедур или функций.

Оформление отчета:

В отчете должны быть представлены:

1. Номер и название работы.

2. Цель работы.

3. Задание.

4. Для каждого задания должен быть записан текст программы.

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

1. Как происходит передача массива в процедуру или функцию?

2. В каком случае применяется процедура, а в каком функция?

3. Где описывается новый, объявляемый пользователем тип?

4. Чем отличается обращение к процедуре от обращения к функции?

Наши рекомендации