Читайте также:
|
|
Способы передачи параметров
1) по значению,
2) по ссылке,
3) в виде процедур или функций.
Параметры-значения
ПП при выполнении использует копии переданных параметров-значений, а не сами параметры. Если в подпрограмме эти параметры изменяются, то изменяется их копия, сами же параметры сохраняют своё значение.
Примеры
procedure xyz(x,y:real;z:integer);
или
procedure xyz(x:real;y:real;z:integer);
Параметры-переменные (var)
При вызове ПП в ПП передается адрес параметра (параметр передаётся по ссылке). Изменение значения параметра внутри программы влечёт изменение фактического параметра.
procedure sum_pr(x,y:real; var S,P:real)
begin
S:=x+y;
P:=x*y
end;
Описание подпрограмм-функций отличается от описания процедур:
– в заголовке функции всегда указывается тип результата функции;
– в теле функции должен присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя функции;
– в теле функции имя функции не может присутствовать нигде, кроме левой части оператора присваивания.
При вызове ПП формальные параметры заменяются фактическими параметрами, и алгоритм ПП выполняется над фактическими параметрами. Фактические параметры должны иметь тот же тип, что и формальные.
Вызов процедуры – самостоятельный оператор, он имеет вид:
<имя процедуры>[(список фактических параметров)]
Вызов функции – указатель функции (один из элементов выражения):
<имя функции>[(список фактических параметров)]
Пример. Описать процедуру нахождения минимум и максимум двух чисел
procedure min_max(x,y:real;var min,max:real)
begin
if x>y then
begin max:=x;min:=y end
else
begin max:=y;min:x end
end;
Пример основной программы
var u,v,a,b:real;
begin
readln(a,b);
min_max(a,b,u,v);
writeln(‘max=’,u,’ min=’,v)
end.
При вызове подпрограммы фактические параметры разделяются запятой.
В качестве фактических параметров-значений можно передавать переменные, константы, выражения.
В качестве фактических параметров-переменных можно передавать только переменные.
Пример. Описать процедуру вычисления площади треугольника по формуле Герона, если заданы длины трёх сторон треугольника.
procedure Geron(a,b,c:real;var S:real);
var p:real;
begin
p:=(a+b+c)/2;
if p>0 then
S:=sqrt(p*(p-a)*(p-b)*(p-c));
else
S:=0
end;
var x,y,z,pl:real;
begin
writeln ('x,y,z…'); readln(x,y,z);
Geron(x,y,z,pl);
writeln('pl=',pl)
end.
Пример. Описать функцию вычисления площади треугольника по формуле Герона, если заданы длины трёх сторон треугольника.
function Geron(a,b,c:real):real;
var p:real;
begin
p:=(a+b+c)/2;
if p>0 then
Geron:=sqrt(p*(p-a)*(p-b)*(p-c));
else Geron:=0
end;
var x,y,z:real;
begin
writeln ('x,y,z…'); readln(x,y,z);
writeln Geron(x,y,z);
end.
1. Описать функцию вычисления f (x) по формуле
Используя эту функцию, для заданных чисел a, b, c вычислить значение функций f (a), f (b), f (c) и вывести их в порядке убывания.
2. Описать функцию вычисления f (x) по формуле
Используя эту функцию, для заданных чисел a, b, c вычислить значение функций f (a), f (b), f (c) и вывести их и найти наибольшее значение функции.
3. Описать логическую функцию проверки, является ли заданное целое число положительным и нечетным.
Для заданных чисел a, b, c найти сумму и произведение положительных нечетных чисел.
4. Описать функцию добавления к целому числу справа цифры со значением с.
К каждому из заданных чисел a, b, c добавить справа цифру (её значение вести с экрана) и вывести исходные числа и полученные числа.
5. Описать функцию проверки, имеет ли квадратное уравнение два вещественных различных корня.
Продемонстрировать выполнение процедуры.
6. Описать процедуру нахождения корней квадратного уравнения . Выходному параметру b присвоить значение true,если корни вещественные и false, если вещественных корней нет.
Продемонстрировать выполнение процедуры.
7. Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (x, y).
С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами.
8. Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (> 1) является простым числом, и False в противном случае (число, большее 1, называется простым, если оно не имеет положительных делителей, кроме 1 и самого себя). Дан набор из 10 целых чисел, больших 1.
С помощью функции IsPrime найти количество простых чисел в данном наборе.
9. Описать функцию DigitN(K, N) целого типа, возвращающую N -ю цифру целого положительного числа K (цифры в числе нумеруются справа налево). Если количество цифр в числе K меньше N, то функция возвращает −1. Для каждого из пяти данных целых положительных чисел K 1, K 2, …, K 5 вызвать функцию DigitN с параметром N, изменяющимся от 1 до 5.
10. Описать функцию Fact2(N) вещественного типа, вычисляющую двойной факториал:
N!! = 1·3·5·…· N, если N — нечетное; N!! = 2·4·6·…· N, если N — четное
(N > 0 — параметр целого типа; вещественное возвращаемое значение используется для того, чтобы избежать целочисленного переполнения при больших значениях N).
С помощью этой функции найти двойные факториалы пяти данных целых чисел.
11. Описать процедуру ShiftRight3(A, B, C), выполняющую правый циклический сдвиг: значение A переходит в B, значение B — в C, значение C — в A (A, B, C — вещественные параметры, являющиеся одновременно входными и выходными).
С помощью этой процедуры выполнить правый циклический сдвиг для двух данных наборов из трех чисел: (A 1, B 1, C 1) и (A 2, B 2, C 2).
12. Описать процедуру Mean(X, Y, AMean, GMean), вычисляющую среднее арифметическое AMean = (X + Y)/2 и среднее геометрическое
GMean = (X · Y)1/2 двух положительных чисел X и Y (X и Y — входные, AMean и GMean — выходные параметры вещественного типа).
С помощью этой процедуры найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), если даны A, B, C, D.
13. Описать процедуру AddLeftDigit(D, K), добавляющую к целому положительному числу K слева цифру D (D — входной параметр целого типа, лежащий в диапазоне 1–9, K — параметр целого типа, являющийся одновременно входным и выходным).
С помощью этой процедуры последовательно добавить к данному числу K слева данные цифры D 1 и D 2, выводя результат каждого добавления.
Дата добавления: 2015-07-26; просмотров: 331 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Примерные контрольные даты | | | ВВЕДЕНИЕ |