1. Используя свойство строковой переменной как массива символов, напишите программу, которая считывает текст исходной строки с клавиатуры и выводит ее на экран в обратном порядке. Программу сохраните в файле "Primer13.pas".
2. Используя свойство строковой переменной как массива символов, напишите программу, которая находит количество вхождений подстроки Sub в строку Stroka. Исходная строка и подстрока вводится с клавиатуры. Программу сохраните в файле "Primer14.pas".
2.7.6. Описание функции
Как мы уже говорили - любая задача может быть, и, как правило, должна быть сведена к решению более простых задач. Используя этот подход, мы определили понятие процедуры как некоторой подпрограммы, которая описывает действия для выполнения (решения) подзадачи основной задачи (программы). При рассмотрении операций со строковыми переменными Вы познакомились со стандартными процедурами и функциями. Функции, также как и процедуры, служат для декомпозиции (разделения) задачи на подзадачи. Ниже приведена структура функции на языке Pascal:
Function Имя (список формальных параметров): Тип результата;
{блок описания локальных меток,
констант,
типов,
переменных,
процедур,
функций}
begin
{тело функции, в теле функции обязательно должен присутствовать хотя бы один оператор, который присваивает переменной с именем функции значение результата}
end;
Обратите внимание на то, что структура функции и процедуры очень похожи между собой. Описание функции начинается с зарезервированного слова Function, после которого, через пробел указывается идентификатор (имя) функции с формальными параметрами, которые заключены в круглые скобки. Заголовок функции завершается указанием типа возвращаемого значения и точкой с запятой в конце. Указание типа возвращаемого значения у функции связано с тем, что функция возвращает, как правило, конкретное значение. Вспомните применение функций length (s:String). Значением этой функции является длина строковой переменной.
Затем, идет блок описания локальных меток, констант, типов, переменных, процедур, функций. Все о чем говорилось для аналогичного блока при описании подпрограммы, относится и к этому блоку, данные, описанные в этом блоке, являются локальными, то есть их действие ограничено рамками данной функции.
Далее после зарезервированного слова begin помещается текст операторов функции. Текст операторов функции заканчивается словом end, после которого стоит точка с запятой. Обращение к функции из тела программы осуществляется указанием идентификатора (имени) данной функции с передачей ей фактических параметров. Отличием функции от процедуры заключается и в том, что в теле функции обязательно идентификатору функции присваивается то значение, для вычисления которого и предназначена данная функция. Функция, в отличие от процедуры, может быть операндом математического и логического выражения. Приведем пример написания и использования функции написанной пользователем. Напишем программу с использованием функции определения длины строковой переменной, которая аналогична стандартной функции length (), и дадим ей имя length1 (). Для контроля правильности результата определим длину строки с использованием стандартной функции length ():
program Primer_15;
|
var
|
Stroka : string;
|
k,k1 :byte;
|
|
function length1(s:string):byte;
|
begin
|
length1:= Ord(Stroka[0]));
|
end;
|
|
procedure init;
|
begin
|
readln(Stroka);
|
end;
|
|
procedure work;
|
begin
|
k:=length(Stroka);
|
k1:=length1(Stroka);
|
end;
|
|
procedure exi;
|
begin
|
writeln(k, ' ',k1);
|
end;
|
|
begin
|
init;
|
work;
|
exi;
|
end.
|
Посмотрим еще один пример использования функции написанной пользователем. Программа представленная ниже предназначена для нахождения суммы ряда натуральных чисел от 1 до некоторого числа N, которое вводится с клавиатуры.
program Primer_16;
|
var n, rezultat :integer;
|
|
function sumn (n:integer):integer;
|
var
|
i,s:integer;
|
begin
|
s:=0;
|
for i:=1 to n do
|
s:=s+i;
|
sumn:=s;
|
end;
|
|
procedure init;
|
begin
|
readln (n);
|
end;
|
|
procedure work;
|
begin
|
rezultat:=sumn(n);
|
end;
|
|
procedure exi;
|
begin
|
writeln (rezultat);
|
end;
|
|
begin
|
init;
|
work;
|
exi;
|
end.
|
Глобальными переменными являются переменные с именами n и rezultat. В качестве фактического параметра функции sumn (функция нахождения суммы первых n натуральных чисел) передается значение переменной n. В самой функции, для вычисления значения функции, используются локальные переменные i и s.
Достарыңызбен бөлісу: |