- •Введение
- •1Алгоритм. Разработка алгоритмов. Блок-схемы
- •3Операторы языка Delphi
- •3.1Оператор присваивания
- •3.2Оператор ввода-вывода
- •3.3Составные операторы
- •3.4Условный оператор
- •3.7Цикл с параметром (счетчик)
- •3.8Массивы
- •3.5Цикл с предусловием
- •3.6 Цикл с постусловием
- •3.9Строки
- •3.10Записи
- •3.11Множества
- •4Отладчик программы Debugger
- •5Среда Delphi
- •6Создание интерфейса приложения
- •7Подпрограммы
- •7.1Процедуры
- •7.2Функции
- •7.3Параметры и аргументы
- •8Особенности объектно-ориентированного программирования
- •9Работа с кнопкой
- •10Работа с текстом
- •10.1Работа с надписью
- •10.2Функции преобразования числа в строку и строки в число
- •10.3Работа в однострочном редакторе (Edit, LabeledEdit)
- •10.4Работа с многострочным редактором Memo
- •11Диалоги, сообщения
- •11.1Процедура ShowMessage
- •11.2Процедура MessageDlg
- •11.3Процедура InputBox
- •11.4Процедура InputQuery
- •11.5Стандартные диалоги
- •12Работа с компонентом StringGrid
- •13Построение графика функции
- •14Файлы
- •15Работа со списками и переключателями
- •15.1 Компонент ChekBox
- •15.2Компонент RadioButton
- •16Исключительные ситуации
- •17Работа с несколькими модулями
- •18Работа с формой
- •Содержание
- •Список использованных источников
7.2Функции
Функции состоят из заголовка и блока. Заголовок содержит ключевое слово function, имя функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип значения, возвращаемого функцией.Возвращаемое значение может иметь любой тип, кроме файлового.
Блок функции аналогичен блоку процедур. В теле функции необходим хотя бы один оператор присваивания, в левой части которого стоит имя функции (лучше использовать вместо имени функции переменную Result).
Вызов функции осуществляется по ее имени с указанием в круглых скобках списка аргументов, которого может и не быть. Если аргументы имеются, то они должны быть указаны строго в том же порядке и иметь тот тип, что и блоке заголовка функции.
7.3Параметры и аргументы
Параметры являются элементами подпрограммы и используются при описании ее алгоритма. Аргументы указываются при вызове подпрограммы и замещают параметры при выполнении подпрограммы. Параметры могут быть любого типа, включая структурированный. Существуют следующие виды параметров [4]:
Значение
Константа
Переменная
Нетипизированная константа и переменная
Группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var или const и за которыми следует указание их типа, называются параметрами-значениями. В подпрограмме значения таких параметров можно изменять, но эти изменения не влияют на значение соответствующих им аргументов, которые были подставлены вместо фактических параметров-значений [4]. Например
Procedure Print(K:array of integer);
Заметим, что если в качестве параметра передается массив, то указывается только тип элементов, без указания размера.
Обратите внимание! Если в качестве параметра используется массив, то внутри подпрограммы нумерация его элементов всегда начинается с нуля, поэтому рекомендуется объявлять глобальный массив размерностью с нуля. Для передачи двумерного массива лучше объявить cпециальный тип и передавать в качестве параметра переменную созданного типа.
Type
MyType=array [0..Nmax,0..Nmax] of ….;
var
A:MyType;
Группа параметров, перед которыми в заголовке подпрограммы стоит слово const и за которыми следует описание их типа, называют параметрами-константами. В теле подпрограммы значение параметра-константы изменить нельзя [4].
Группа параметров, перед которыми в заголовке подпрограммы стоит слово var и за которыми следует описание их типа, называют параметрами-переменными. Они используются в тех случаях, когда значение должно быть передано из подпрограммы в вызывающий блок. В этом случае при вызове подпрограммы параметр-переменная замещается аргументом, и любые изменения формального параметра отражаются на аргументе [4]. Таким способом можно вернуть результаты из подпрограммы по окончанию ее работы. Например
function Tan(a:real;var d:boolean):real;
Для параметров-констант и параметров-переменных можно не указывать их тип, в этом случае они считаются нетипизированными. Подставляемые на их место аргументы могут быть любого типа, и программист должен самостоятельно интерпретировать типы параметров в теле подпрограммы.
Группы параметров в описании подпрограммы разделяются точкой с запятой.
Пример 8.
Возведение вещественного числа в целую степень. (Использование функции)
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
Function Stepen(x:real;n:integer):Real;
begin
if x=0 then Result:=0
else
begin
result:=exp(n*ln(abs(x)));
if (x<0) and (n mod 2 <>0) then
Result:=Result*(-1);
end;
end;
var
x,y:real;
n:integer;
begin
Writeln('Vuchislenie stepeni');
Write('vvedite chislo ');
readln(x);
Write('vvedite stepen ');
readln(n);
y:=Stepen(x,n);
Write('Otvet ',y:5:5);
Readln;
end.
