
- •4.5 Контрольные вопросы
- •5.Алгоритмы повторений
- •5.1 Цель работы
- •5.2 Задание
- •5.3 Теоретические сведения Операторы повторений
- •Счётный оператор цикла For
- •Оператор цикла с предусловием While .. Do
- •О ператор цикла с постусловием Repeat .. Until
- •Массивы
- •Одномерные массивы
- •Операции с массивами
- •Пример 1. Формирование массива
- •Пример 2. Формирование массива значений функции
- •Открытые параметры-массивы процедур
- •Пример 3. Открытые параметры
- •Динамические массивы
- •Пример 4. Динамические массивы
- •Содержание отчета
- •Контрольные вопросы
Пример 4. Динамические массивы
Предыдущую задачу формирования массивов Mx и My: решим для случая задания размерности массива в процессе выполнения программы.
Постановка задачи.
тип массива объявим динамическим, type T_Mxy = array of Real;
количество элементов массива m объявим переменной, var m: Integer;
контроль ввода переменных и преобразование их в числа, в программе не приведены (см. аналогичные задачи в работах 3 и 4);
освобождение динамической памяти свяжем с событием OnDeactivate – закрытие формы.
type T_Mxy = array of Real; //тип - динамический массив, размер не указан
var dX, n: Real; //приращение X, показатель степени
Mx, My: T_Mxy;
m: Integer; //кол. элементов динамического массива
procedure Cr_Mx(Str_X, Str_d : string; Var MM: array of Real);
{Текст процедуры не изменён (см. пример 3}
end;
procedure Cr_My(Mx: array of Real; var My: array of Real; n: real );
{Текст процедуры не изменён (см. пример 3}
end;
procedure TForm1.Button1Click(Sender: TObject);
{Преобразование переменных в числа выполнены}
SetLength(Mx, m); //выделение памяти массиву Mx
SetLength(My, m); //выделение памяти массиву My
Label3.Caption:= ''; //очистка метки вывода результатов
Cr_Mx(LabeledEdit1.Text, LabeledEdit2.Text, Mx); //формирует массив Mx
Cr_My(Mx, My, n); //формирует массив My
For i :=0 to m-1 do //вывод
Label3.Caption:=Label3.Caption+IntToStr(i+1)+#9+ //номер
FloatToStrF(Mx[i], ffGeneral, 5, 3)+ #9+ //Mx[i] элемент
FloatToStrF(My[i], ffGeneral, 5, 3)+ #13; //My[i] элемент
end;
procedure TForm1.FormDeactivate(Sender: TObject); //событие закрытие формы
begin
Finalize(Mx); //очистка динамической памяти
Finalize(My);
end;
Содержание отчета
Задание.
Листинг модуля с подробными комментариями.
Для каждой из пользовательских процедур дайте обоснование назначенного типа параметра (параметр-значение или параметр переменная).
Схемы алгоритмов всех нелинейных процедур.
Условия тестирования и ожидаемый результат.
Перечень ситуаций, при которых возможно аварийное завершение Вашей программы.
Контрольные вопросы
Каков синтаксис оператора For?
Каков синтаксис оператора While?
Каков синтаксис оператора Repeat?