| var a,b:longint; Begin read(a); repeat b:=a mod 10; writeln(b); a:=a div 10; until a=0; End. |
2 способ:
| var a,b:longint; Begin read(a); while a<>0 do begin b:=a mod 10; write(b:3); a:=a div 10; end; End. |
3. Цикл с параметром.
Лекция 6. Процедуры и функции.
Процедуры и функции используются в тех случаях, когда:
Функции пользователя.
Работа с функцией в Паскаль-программе состоит из двух частей: объявление функции и обращение к функции. Объявление функции производится в специальном разделе декларационной части Паскаль-программы непосредственно перед разделом операторов. Начинается объявление с заголовка функции. В общем виде заголовок имеет следующие разделы:
function <имя функции> (<список параметров>): <тип возвращаемого результата>, где function - зарезервированное слово.
В качестве имени функции может использоваться любой допустимый идентификатор.
Список параметров содержит перечисление всех формальных аргументов с указанием их типа. Однотипные аргумент можно перечислить списком.
Тип возвращаемого результата - один из стандартных типов языка Паскаль.
Пример:
function factorial (n:integer):real;
function mm (a, b:real; c:byte; d:char):integer;
При обращении к функции из раздела операторов Паскаль-программы указывается имя функции и список фактических параметров.
Обращение к функциям возможно из оператора вывода.
В качестве фактических параметров могут использоваться как значения, так и ссылки на другие переменные. В любом случае количество фактических и формальных параметров одинаково и передача значений происходит в порядке записи.
Пример:
F:=factorial(5);
T:=factorial(2)-7;
M:=factorial(n);
P:=mm(d,c,b,a);
Задача 1: вычислить факториалы первых 10 натуральных чисел:
var i: byte;
f: real;
function factorial (n: byte): real;
var i: byte;
f: real;
begin
f:=1;
for i:=1 to n do
f:=f * i;
factorial:=f;
end;
begin
for i:=1 to 10 do
begin
f:=factorial(i);
writeln(f);
end;
end.
Задача 2: вычислить 10 натуральных степеней для каждого из первых 10 натуральных чисел:
var i, j : byte;
p: real;
function stepen (b: integer; n: byte): real;
var i: byte;
a: real;
begin
a:=1;
for i:=1 to n do
a:=a * b;
stepen:=a;
end;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
p:=stepen (i, j);
write (p);
end;
end.
Процедуры пользователя.
Функции являются частным случаем, т.е. подвидом процедур. Следовательно, все свойства функций справедливы для процедур.
Объявляются процедуры в описательной части программы, в одном разделе с функциями. Порядок объявления независимых друг от друга процедур и функций не важен, если процедура использует в себе обращение к функции или другой процедуре, то последнии обязательно объявляются раньше.
Объявление процедур начинается с заголовка:
procedure <имя процедуры> (<список параметров>);, где procedure - зарезервированное слово.
Список параметров процедур содержит формальные параметры двух видов. Те, значения которых не возвращаются в программу, и параметры с возвращаемыми значениями.
Последние в списке отмечаются зарезервированным словом var.
Пример:
procedure xxx(a: byte; var b: byte; c,d: real; var j: char);
Для обращения к процедуре в тексте программы указывается имя процедуры и, в скобках, список фактических параметров. В этом списке параметрам с возвращаемыми значениями обязательно соответствуют переменные.
Пример:
xxx (5, b, c, 8, i);
Задача 1: вычислить факториалы первых 10 натуральных чисел:
var i: byte;
f: real;
procedure factorial (n: byte; var f: real);
var i: byte;
begin
f:=1;
for i:=1 to n do
f:=f * i;
end;
begin
for i:=1 to 10 do
begin
factorial(i, f);
writeln(f);
end;
end.
Задача 2: вычислить 10 натуральных степеней для каждого из первых 10 натуральных чисел:
var i, j : byte;
p: real;
procedure stepen (b: integer; n: byte; var f: real);
var i: byte;
begin
f:=1;
for i:=1 to n do
f:=f * b;
stepen:=a;
end;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
stepen (i, j, p);
write (p);
end;
end.
Использование функций в приближенных вычислениях.
Числовым рядом называется выражение вида U1+U2+…+Un+…, где U1, U2,…, Un - элементы ряда. Этот ряд можно записать в виде
2 способ: заменим сторону CD криволинейной трапеции на отрезок, параллельный стороне AB и проходящий через одну из вершин C или D.