СТАНДАРТНЫЕ ФУНКЦИИ И ПОДПРОГРАММЫ



Для выполнения часто встречающихся вычислений и преобразований язык Delphi предоставляет программисту ряд стандартных функций.

Значение функции связано с ее именем. Поэтому функцию можно использовать в качестве операнда выражения, например в инструкции присваивания. Так, чтобы вычислить квадратный корень, достаточно записать k:=Sqrt(n), где Sqrt — функция вычисления квадратного корня, n — переменная, которая содержит число, квадратный корень которого надо вычислить.

Функция характеризуется типом значения и типом параметров. Тип переменной, которой присваивается значение функции, должен соответствовать типу функции. Точно так же тип фактического параметра функции, т.е. параметра, который указывается при обращении к функции, должен соответствовать типу формального параметра. Если это не так, компилятор выводит сообщение об ошибке.

 

Значение

Аbs (x) Абсолютное значение x
Sqrt (x) Квадратный корень из x
Sqr (x) Квадрат x
Sin (x) Синус x
Cos (x) Косинус x
Arctan (x) Арктангенс x
Ехр(x) Экспонента x
Ln(x) Натуральный логарифм x
Random(n) Случайное целое число в диапазоне от 0 до n- 1
Random Случайное вещественное число в диапазоне от 0 до 1
Exp(b*ln(a)) Возведение в степень ab

 

Trunc (x) Целое, полученное путем отбрасывания дробной части x
Frac(x) Вещественное, представляющее собой дробную частьвещественного x
Int (x) Вещественное, представляющее собой целую частьвещественного x

 

Dec(X,N) Процедура уменьшения значения числовой переменной Х на единицу, если нет второго параметра, или на N
Inc(X,N) Процедура увеличения значения числовой переменной Х на единицу, если нет второго параметра, или на N

 

Ramdomize Процедура инициализации датчика случайных чисел, которая позволяет получать каждый раз новую последовательность случайных чисел с помощью функции Random

ОПЕРАТОРЫ DELPHI

Оператор присваивания

В результате выполнения оператора присваивания значение переменной меняется – ей присваивается новое значение. В общем виде оператор присваивания выглядит так: Имя : = Выражение, где Имя — переменная, значение которой изменяется в результате выполнения оператора присваивания; : = — символы инструкции присваивания; Выражение — выражение, значение которого присваивается переменной, имя которой указано слева от символа инструкции присваивания.

Пример:

Y:=a*b/10; S:=’ Дом ’; F1:= False;

Результат вычисления выражения всегда приводится к типу имени переменной и только затем записывается в поле переменной.

Каждый оператор Delphi заканчивается точкой с запятой (;), что позволяет в одной строке программы записывать несколько операторов.

Оператор безусловной передачи управления

Оператор безусловной передачи управления имеет вид:

Goto метка;

Метка – это идентификатор, описанный в разделе меток – Label.

Например:

Label M1;

………

Goto M1;

………..

M1:y:=sin(x);

……………

Оператор Goto передает управление оператору с указанной меткой, в нашем случае M1. Оператор, следующий за Goto, обязательно должен иметь метку, иначе он никогда не получит управление. По возможности следует избегать использования оператора Goto, так как это приводит к созданию неэффективных программ. Перескок внутри программы приводит к тому, что нужно заново обновлять очередь команд, готовых к выполнению в процессоре, и перенастраивать его управляющие регистры. Чем меньше в программе операторов Goto, тем выше квалификация программиста.

Условный оператор if

Этот оператор разветвления if в общем случае имеет вид

If условие then оператор1 else оператор2;

В этой записи зарезервированные слова выделены жирным шрифтом, а то, что подчеркнуто, может отсутствовать. Работает он следующим образом: если условие имеет значение «истина», то выполняется оператор1, иначе – оператор2.

Например:

If a>b then y:=a-b else y:=b-a;

В этом примере «y» всегда будет принимать положительные значения, независимо от значений a и b.

Оператор разветвления Case

Этот оператор в общем случае может иметь вид

Case выражение of

знач11..знач12:оператор1;

знач21..знач22:оператор2;

………………………..

значK1..значK2:операторK

else оператор 0 ;

End ;

В зависимости от значения выражения выполняется тот или иной оператор. Если значение выражения не попадает ни в один из интервалов, то выполняется оператор0.

Пример:

Var c:char; s:String;

…………………….

Case c of

’0’..’9’:s:=’ Цифра ’;

’A’..’z’:s:=’Латинская буква’;

..’А’..’я’:s:=’Русская буква’

else s:=’Специальный символ’

end ;

Составной оператор

Этот оператор еще называют операторными скобками, он начинается ключевым словом Begin и заканчивается словом End. Между этими словами можно записывать любое число операторов, но чисто внешне он воспринимается как один оператор.

Пример:

If a>b then Begin

Y:=a-b;

Z:=a*b;

End else Begin

Y:=b-a ;

Z:=a /b;

End ;

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

Для лучшей читаемости программы рекомендуется после каждого оператора Begin все последующие строки программы сдвигать на две позиции вправо, а после оператора End – на две позиции влево. Это позволит легко отследить вложенность блоков Begin – End.

ОПЕРАТОРЫ ЦИКЛОВ

Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.

Хотя циклы можно легко организовывать с помощью оператора if, в Delphi есть три специальных оператора для организации циклов.

Оператор цикла For

Этот оператор в общем случае имеет вид

For пер.цикла:= нач.знач. кон.знач. Do оператор⎭⎬⎫⎩⎨⎧DowntoTo1;

Его следует понимать следующим образом. Для переменной цикла от начального значения до конечного значения выполнять оператор1. В фигурных скобках показаны два варианта наращивания переменной цикла: To – соответствует шагу увеличения 1, а Downto – шагу -1. Переменная цикла, начальное и конечное значения обязательно должны быть целыми величинами. Переменная цикла должна быть внутренней переменной подпрограммы. Схему работы этого оператора можно изобразить следующим образом:

Правила использования оператора For:

 

1. Если начальное значение переменной цикла больше конечного, то цикл не выполняется ни разу.

 

2. Циклы можно вкладывать друг в друга, но не пересекать.

 

3. Можно передавать управление из цикла вовне его, но извне передать управление внутрь цикла нельзя.

 

4. Можно передать управление из цикла вовне его с последующим входом в этот же цикл.

 

5. Внутри цикла нельзя самим изменять значения переменной цикла.

 

6. После окончания цикла переменная цикла становится не определенной и ее значение уже нельзя использовать.

 

7. Если внутри цикла встречается оператор Break, то происходит принудительный выход из этого цикла.

 

8. Если внутри цикла встречается оператор Continue, то происходит переход к следующей итерации цикла.

Оператор цикла Repeat

Он имеет вид

Repeat тело цикла Until логическое выражение;

Выполнение цикла будет повторяться до тех пор, пока логическое выражение не примет значение «истина». Тело этого цикла в любом случае будет выполнено хотя бы один раз, так как проверка на окончание цикла здесь выполняется после выполнения операторов тела цикла. Внутри тела цикла обязательно должна изменяться какая–либо переменная, которая входит в логическое выражение и определяет условие выхода из цикла. В противном случае есть большая вероятность, что может получиться бесконечный цикл, т.е. программа зациклится.

Оператор цикла While

Он имеет вид

While логическое выражение Do оператор1;

Пока логическое выражение принимает значение «истина», будет повторяться оператор 1. В этом цикле проверка на окончание цикла производится до выполнения оператора1 и, если логическое выражение примет значение ложно, цикл заканчивает свою работу. В остальном – этот оператор похож на оператор Repeat.

РАБОТА С МАССИВАМИ

Массив – это пронумерованный набор однотипных данных. Тип массива определяется в разделе типов и в общем случае имеет вид

Type имя массива=Array [список индексов и диапазоны их изменения] of тип элемента массива;

Пример объявления массивов:

Type Ta=array[1..10] of integer;

Tb=array[1..5,1..10] of extended;

Var a:Ta; b:Tb;

…………………

a[1]:=25; b[5,10]:=-1.5;

Здесь объявлены: одномерный массив a целого типа, в котором элементы пронумерованы от 1 до 10, и двухмерный массив b вещественного типа, в котором первый индекс может изменяться в пределах от 1 до 5, а второй индекс – от 1 до 10. Индексы для элементов массивов могут быть любыми выражениями целого типа.


Дата добавления: 2019-02-26; просмотров: 126; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!