- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

Лабораторные работы № 10 – 11



Тема. Процедуры и функции пользователя в языке Delphi

Цель работы: приобретение навыков написания программ с подпрограммами пользователя на языке Delphi

Теоретическая часть

В языке Delphi имеется два вида подпрограмм – процедуры и функции.

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

Все процедуры в языке Delphi делятся на 2 вида: встроенные и пользовательские.

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

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

Вызов пользовательских процедур и функций осуществляется по имени.

Описание процедуры:

 

 


Рисунок 9 - Синтаксическая диаграмма описания процедуры

 

Описание функции:

 


Рисунок 10 - Синтаксическая диаграмма описания функции

 

Пример 10.1. Рассчитать значение y(x) по формуле

Для расчета значения tg(x) используется подпрограмма-функция tg(а) с одним параметром.

 

Program Project1;

var x,y:real;

function tg(a:real):real;

begin

tg:=cos(a)/sin(a);

end;

 

begin

write('x='); readln(x);

y:=sqr(tg(x+1))+tg(x+0.5)+7*tg(x);

writeln('y=',y:6:2);

readln;

end.

 

Пример 10.2. Условие из предыдущего примера. В программе для расчета значения tg(x) используется подпрограмма-процедура tg(a,b) с двумя параметрами.

 

Program Project2;

var x,y:real; x1,x2,x3:real;

 

procedure tg(a:real; var b:real);

begin

b:=cos(a)/sin(a);

end;

 

begin

write('x='); readln(x);

tg(x+1,x1); tg(x+0.5,x2); tg(x,x3);

y:=sqr(x1)+x2+7*x3;

writeln('y=',y:6:2);

readln;

end.

Пример 10.3. Рассчитать периметр ( в м) и площадь прямоугольника (в м2). Длины сторон (x, y) вводятся с клавиатуры в см. В программе используется подпрограмма-процедура parametr(a, b, p, s).

 

Program Project3;

var x,y:integer; s1,p1:real;

 

procedure parametr(a,b:integer; var p,s:real);

begin

p:=2*(a+b)/100;

s:=a*b/10000;

end;

 

begin

x:=30; y:=40;

parametr(x,y,p1,s1);

writeln('p1=',p1:6:2, ' s1=',s1:6:2);

readln;

end.

 

Пример 10.4. Условие из предыдущего примера. В программе используются две подпрограммы-функции.

 

Program Project4;

var x,y:integer; s1,p1:real;

 

function p(a,b:integer):real;

begin

p:=2*(a+b)/100;

end;

 

function s(a,b:integer):real;

begin

s:=a*b/10000;

end;

 

begin

x:=30; y:=40;

p1:=p(x,y);

s1:=s(x,y);

writeln('p1=',p1:6:2, ' s1=',s1:6:2);

readln;

end.

 

Пример 10.5. Условие из предыдущего примера. В программе используется процедура parametr без параметров.

 

Program Project5;

var a,b:integer; p,s:real;

procedure parametr;

begin

p:=2*(a+b)/100;

s:=(a*b)/10000;

end;

begin

write('a='); readln(a); write('b='); readln(b);

parametr;

writeln('p=',p:6:2, ' s=',s:6:2);

a:=50; b:=80;

parametr;

writeln('p=',p:6:2, ' s=',s:6:2);

readln;

end.

 

Пример 10.6. Условие из предыдущего примера. В программе используются две функции (s и p) без параметров.

 

Program Project6;

var a,b:integer; p1,s1:real;

function p:real;

begin

p:=2*(a+b)/100;

end;

 

function s:real;

begin

s:=a*b/10000;

end;

 

begin

a:=30; b:=40;

p1:=p;

s1:=s;

writeln('p1=',p1:6:2, ' s1=',s1:6:2);

readln;

end.

 

Варианты заданий (2 задания)

Задание 1. Написать программу с подпрограммой-функцией.

Задание 2. Написать программу с подпрограммой-процедурой (с параметром или параметрами).

 

1. Даны действительные s и t. Рассчитать f(t,-2s,1.17)+f(2.2,t,s-t), где

подпрограмма.

2. Даны действительные а, b, с. Получить

, где max(x,y) подпрограмма.

3. Даны действительные числа S и t. Рассчитать

f(t,-3*s,2.5-t)+f( 5.2,3*t,s-t), где

подпрограмма.

4. Даны действительные числа S и t. Рассчитать

f(1.5*t,2*s)+f(t,3-s)-f(2*s-3,t+s), где

подпрограмма.

5. Даны действительные числа S и t. Рассчитать

h(s,t)+h(h2 (s-t,s*t),h4 (s-t,s+t))+h(1,1), где

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

6. Даны действительные числа a, b. Рассчитать Y=min(a,b), Y1=min(min(a*b,a+b), min(a2 –b*a,b3-3*a)), Y2=min(Y12+Y,5.25),

где min(x,x1) подпрограмма.

7. Даны действительные числа S и t. Рассчитать

f(t,4*s,2.5*t)+f( 5,2*t,s+t),

где подпрограмма.

8. Даны действительные числа S и t. Рассчитать

h(s,t)+h3 (s-t,s*t)+h2 (s-t,s+t)+h(1,1), где

подпрограмма.

9. Даны действительные числа a, b, c. Рассчитать

, где max(x,x1) описать как подпрограмму.

10. Вычислить К = (x + y + z) / 3, где x – наибольшее значение из параметров х1, х2, y - из y1, y2, z – из z1, z2. Использовать подпрограмму для нахождения наибольшего значения из двух параметров.

11. В порт в среднем приходят 3 корабля в день. Какова вероятность того, что в день придет 2 корабля, 4 корабля? Вероятность вычислять по формуле

Р = 3 * е - 3 / к!. Использовать подпрограмму для расчета к!.

12. Вычислить Z = (v1 + v2 + v3) / 3, где v1,v2,v3 – объемы шаров с радиусами r1, r2, r3 соответственно. Использовать подпрограмму для расчета объёмов шаров. Объем шара вычислять по формуле V = 4 / 3*Пi*R3.

13. Определить число сочетаний из n по m (n>m), по формуле С=n!/m!(n-m). Использовать одну подпрограмму для расчета n! и m!.

14. Вычислить Z = (n + m) / 2, где n – наименьшее значение из параметров n1, n2, m – из m1, m2. Использовать подпрограмму для нахождения наименьшего значения из двух параметров.

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

S = x2 + y2 + sin(2 * x2 * y2) + x + z + sin(2 * x * z) + y2 + z2 + sin(2 * y2 * z2) , используя подпрограмму для расчета a + b + sin(2 * a * b).