Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч1.doc
Скачиваний:
7
Добавлен:
02.11.2018
Размер:
2.38 Mб
Скачать

Табулирование значений функций

Одной из достаточно распространенных задач, в которых используются циклы, является задача табулирования значений некоторой функции. Суть задачи заключается в том, что необходимо изменять аргумент функции от некоторого начального значения до конечного значения с некоторым шагом и для полученных значений аргумента вычислять значения функции. Эту задачу можно решать с помощью цикла whiledo, в котором параметр цикла будет последовательно увеличиваться на величину шага. Однако такой подход считается не совсем правильным. Обычно аргументы функций – вещественные числа, которые в памяти машины записываются с некоторой погрешностью. При многократном суммировании таких чисел погрешность накапливается и может стать заметной при большом количестве циклов. Поэтому при табулировании функций удобнее использовать цикл for, в котором параметром является целочисленный номер строки таблицы. Строки таблицы удобно считать пронумерованным с 0, тогда приращение аргумента на каждом шаге можно определять путем умножения шага на номер строки. Ошибка при этом не накапливается.

Ниже приведен фрагмент программы табулирования функции sin(x)

// Обьявляем внутренние переменные процедуры

var x0, x, xMax : real; // Начальное (х0), текущее (х) и конечное (xMax)

// значения аргумента

y : real; // Текущее значение функции

k : integer; // Номер последней строки в таблице

i : integer; // Параметр цикла ( номер текущей строки в таблице)

s : string; // Строка таблицы

begin

k:= round((xMax-x0)/step); // Округляем число строк до целого значения

for i:=0 to k do

begin

x := x0 + step * i; // Очередное значение х

y := sin(x);

s := ‘x=’ + floatToStr(x) + ‘ y =’ + floatToStr(y)

memo1.Lines.Append(s);

end;

end;

Форматирование результатов при выводе таблиц

При выводе таблиц на экран или на печать желательно добиться, чтобы столбцы были ровными, десятичные разделители были в одной позиции. Для этого, прежде всего таблицы целесообразно выводить шрифтом Courier new, в котором все символы имеют одинаковую ширину. Но этого мало. Строки таблицы следует формировать с помощью функции format().

В общем виде обращение к функции выглядит так:

format(<строка форматов>,<список объектов форматирования>)

Cтрока форматов состоит из фрагментов текста и спецификаторов. Спецификаторы указывают, что в данном месте строки должен быть вставлен объект из списка объектов форматирования. Признаком спецификатора формата является символ процента (%). После этого символа располагаются числа и буквы, указывающие, как форматировать данный объект.

Список объектов форматирования может состоять из констант, переменных или выражений, разделенных запятыми. Весь список заключается в квадратные скобки.

Подробное описание функции можно найти в справочной системе Delphi. Здесь мы рассмотрим только несколько примеров.

Таблица 6.3 – Примеры использования функции format()

Обращение к функции

Значения объектов форматирования

Возвращаемое значение

format(‘Результат = %1.3f’, [x])

x=23.45678

Результат =23.457

format(‘%1d+%1d=%1d’,[a, b, a+b]

a=12. b=13

12+13=25

format(‘%1s= %1.3f’, [r, x])

r=’Результат’. x=23.4

Результат =23.400

В первом примере спецификатор имеет значение %1.3f и относится он к переменной х. Символ f указывает на то, что форматироваться будет вещественное число, но в форме с фиксированной точкой. Число 3 после точки указывает на то, что для дробной части числа выделяется три позиции. Поэтому результат был округлен до трех знаков после точки. Число 1 перед точкой указывает на то, что общее число позиций для вывода объекта равно 1. Этого явно мало, поэтому функция выделяет столько позиций, сколько требуется. В данном случае требуется 6 позиций (две на целую часть, одна на точку, и три на дробную часть). Если бы перед точкой стояло число большее чем 6, например 9, то слева было бы добавлено три пробела.

Во втором примере форматируются целые числа, поэтому для определения типа используется символ d. Числом задается требуемое количество позиций.

В третьем примере одним из объектов форматирования является строка символов, поэтому в качестве символа для определения типа используется буква s.