- •Глава 4. Компоненты 30
- •Глава 5. Основы программирования 37
- •Часть I. Delphi и работа в Интегрированной Среде
- •Глава 1. Объектно-ориентированное программирование
- •1.1. Основные понятия и определения
- •1.2. Визуальное программирование интерфейса
- •1.3. Общие вопросы построения программ
- •Глава 2. Проекты Delphi
- •2.1.Файлы проекта
- •2.2.Структура файла головной программы
- •2.3. Окно Интегрированной Среды Разработки Delphi
- •2.4. Панель главного меню и всплывающие меню
- •2.5. Форма и компоненты
- •2.5.1.Окно формы
- •2.5.2. Окно Редактора Кода
- •2.5.3. Инспектор Объектов
- •2.6. Структура модуля приложения
- •Глава 3. Элементы языка Delphi
- •3.1.Типы данных
- •3.1.1. Целый тип
- •3.1.2.Вещественный тип
- •3.1.3. Символьный тип
- •3.1.4. Строковый тип
- •3.1.5. Логический тип
- •3.2. Переменная
- •3.3. Константы
- •3.3.1.Числовые константы
- •3.3.2. Строковые и символьные константы
- •3.3.3. Логические и именованные константы
- •3.4. Инструкция присваивания
- •3.5. Стандартные функции
- •3.5.1.Математические функции
- •Глава 4. Компоненты
- •4.1. Форма и компоненты на форме
- •4.2. Событие и процедура обработки событий
- •Глава 5. Основы программирования
- •5.1. Сохранение проекта, его повторное открывание
- •5.2. Стиль программирования
- •5.3. Порядок разработки проекта
- •5.4. Управляющие структуры языка Delphi
- •5.4.1. Инструкция if
- •5.4.2. Инструкция case
- •5.5. Циклы
- •5.5.1. Инструкция for
- •5.5.2. Инструкция while
- •5.5.3. Инструкция repeat
- •5.5.4. Инструкция goto
- •5.6. Процедуры и функции
- •5.6.1. Структура функции
- •5.6.2. Структура процедуры
- •5.6.3. Ввод и вывод данных в диалоговых окнах
- •5.6.4. Запись инструкций программы
- •5.6.5. Отладка программы
- •5.7. Операции со строками
- •5.7.1. Стандартные функции и процедуры работы со строками
- •5.7.2. Использование операций со строками
- •5.8. Массивы
- •5.8.1. Объявление массива
- •5.8.2. Операции с массивами
- •5.8.3. Стандартные функции обработки массивов
- •5.8.4. Многомерные массивы
5.8.3. Стандартные функции обработки массивов
Для числовых массивов определены функции (табл. 5.16). Эти функции определены в модуле math и этот модуль должен подключаться оператором uses, чтобы компилятор их понимал [1].
Таблица 5.16
Функции для числовых массивов
Функция |
Тип аргумента |
Тип результата |
Описание |
MaxIntValue
|
array of integer |
integer |
Возвращает максимальное значение элемента массива целых чисел. |
MinIntValue
|
array of integer |
integer |
Возвращает минимальное значение элемента массива целых чисел. |
MaxValue
|
array of double |
double |
Возвращает максимальное значение элемента числового массива. |
MinValue |
array of double |
double |
Возвращает минимальное значение элемента числового массива. |
Sum
|
array of double |
extended |
Возвращает сумму элементов массива. |
В качестве примера использования стандартных функций модуля Math показано диалоговое окно приложения (рис. 5.24).
Рис. 5.24. Диалоговое окно приложения
Фрагмент программы с используемыми процедурами:
var
Form1: TForm1;
a:array[1..6] of Double = (1,3,45,6,8,-7);
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer; //индексы
MA:double;
begin
Label1.Caption:='';
// ввод модифицированных значений в массив иначе
// работа будет со старыми значениями
for i := 1 to 6 do
a[i]:= StrToFloat(StringGrid1.Cells[i,1]);
// выбор вычисляемой функции
if RadioGroup1.ItemIndex = 0{'максимальный элемент'} then
begin
Ma:= MaxValue(a);
Label1.Caption:='максимальный элемент = '+
floatToStr(Ma);
end;
if RadioGroup1.ItemIndex = 1{'минимальный элемент'}
then
begin
Ma:= MinValue(a);
Label1.Caption:='минимальный элемент = '+
floatToStr(Ma);
end;
if RadioGroup1.ItemIndex = 2{('сумма')}
then
begin
Ma:= Sum(a);
Label1.Caption:='сумма элементов = '+ floatToStr(Ma);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j: Integer;
begin
for j := 1 to 6 do
//запись номеров столбцов
StringGrid1.Cells[j,0]:=IntToStr(j);
//заполнение начальных значений массива в таблицу
for i := 1 to 6 do
StringGrid1.Cells[i,1]:= FloatToStr(a[i]);
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9':;
#13:
//если курсор находится не в последней ячейке,
if StringGrid1.Col< StringGrid1.ColCount-1
//то переход курсора в следующую ячейку
then StringGrid1.Col:= StringGrid1.ColCount+1;
'-':
//минус можно ввести только первым символом,
// т.е. когда ячейка пустая
begin
if Length(StringGrid1.Cells[stringGrid1.Col,
stringGrid1.Row])<>0
then Key:=Chr(0)
end;
else Key:= Chr(0);
end;
end;
end.