Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
230401_MU_-_Osnovy_algoritmizatsii_i_programmir...docx
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

21. Запрограммируйте команду «Табулировать».

Свойство Lines объекта типа Memo комплексное, то есть оно также является объектом со своими свойствами и методами. Ре­зультат работы данной программы - это таблица, которая состоит из нескольких строк. Чтобы добавить в поле Memol новую строку таблицы, надо поменять значения комплексного свойства Lines (строки) с помощью его метода Add (добавить) с одним аргумен­том - символьной строкой: Memol.Lines.Add('cTpoKaсимволов'). Щелкните на команде «Табулировать» из главного меню один раз. Появится заготовка к процедуре, которую заполните так:

procedureTforml.N2Click(Sender: TObject); var x, у, h, a, b : real;

cod : integer;

strl, str2 : string;

begin

{В объект Memol вставляем строку с подписями столбцов

значений аргумента и функции) Memo 1. Lines.Add(' X F(X)');

{Получаем числовое значение левой границы) Val(Editl.Text, a, cod);

{Получаем числовое значение правой границы)

Val(Edit2.Text, Ъ, cod);

{Получаем числовое значение шага)

Val(Edit3.Text, h, cod);

х:=а; {Табулируем функцию)

whilex<=b+h/2 do{пока аргумент х не превысит ) begin {правую границу с определенным запасом)

y:=sm(x)+l; {Вычисляем значения функции) {Формируем символьные строки из значений ) Str(x:8:2,strl); { аргумента и функции) Str(y:8:3, str2); ifCheckBoxl.Checkedthen

{Вставляем строку в поле Memol)

Memol.hmes.Add(strl+str2); x:=x+h; {Увеличиваем аргумент на величину шага) endend;

  1. Выполните программу и поупражняйтесь с разными значе­ниями левой, правой границы и шага аргумента. Закройте окно программы «Табулирование функции».

  2. Сохраните созданную программу в своей папке.

  3. Создайте ехе-файл программы.

  4. Закройте Delphi, запустите созданную программу и выпол­ните вычисления для различных входных данных.

  5. Продемонстрируйте созданную форму преподавателю. За­кончите работу.

Задача 3.1. Добавьте к контекстному меню команду «Выход» и запрограммируйте ее.

Задача 3.2. Создайте и запрограммируйте еще одно контекст­ное меню, содержащее команды "Убрать все флажки", "Вклю­чить все флажки", "Включить инверсивно". Такое меню должно появляться после щелчка правой клавишей мыши в любой точке панели с флажками. Не забудьте "привязать" это меню (PopupMenu2) к панели с флажками (см. пункт 19).

Задача 3.3. Модифицируйте программу, предусмотрев возмож­ность табулирования функции и ее производной. Выбор варианта (с производной или без неё) осуществить с помощью дополнитель­ного флажка.

Подсказка. Выполните такие действия: • вставьте в форму объект типа CheckBox (флажок), его свойству Caption присвойте значение «Производная», вы­берите для подписи кирилизованный шрифт 12-го разме­ра, выровняйте вставленный объект.

• поменяйте программный код кнопки «Табулировать», ис­пользовав в тексте процедуры ButtonlClick такие коман­ды:

{Объявите переменные strl, str2, str3 как string в начале процедуры}

ifCheckBox.Checkedthen{если флажок установлен} Memol.Lines.Add(' X F(X) F "(X)')

{Строка содержит подписи для столбцов значений аргумента, функции и ее производной} else{Иначе - если флажок не установлен} {Строка содержит лишь подписи для столбцов значений аргумента и функции} Memol. Lines.Add(' X F(X)');

• • •

{А в цикле задаем:}

y:=sin(x)+l; {Вычисляем значение функции}

yl:=cos(x); {Вычисляем значение производной}

if CheckBox.Checked then {Еслифлажокустановлен} begin

Str(x:8:2, strl); Str(y:8:2, str2); Str(yl:8:2, str3); str3 := strl + str2 + str3

end; {Формируем символьную строку из значений аргумента, функ­ции и ее производной, между которыми вставляем несколько пропус­ков}

else{Если флажок не установлен} begin

Str(x:8:2, strl); {Формируем символьную строку} Str(y:8:2, str2); {из значений аргумента и функции) str3 :== strl + str2 end;

• • •

Замечание. Номера объектов'в Вашей программе могут отли­чаться от приведённых выше.

Задача 3.4. Определите количество элементов массива больших 0,5 и меньших 1.

Задача 3.5. Предусмотрите в созданной программе дополни­тельную возможность для определения максимального и мини­мального значений функции.

Подсказка. В теле процедуры ButtonlClick, описывающей про­граммный код кнопки «Табулировать», воспользуйтесь такими командами:

{В начале процедуры:}

max:=sin(a)+l;

• • •

{Вцикле:}

if max<y then max:=y;

• • •

{Послецикла:}

Str(max:8:3, strl); Memol.LinesAdd( 'max=' + strl);

Задача 3.6. Поменяйте процедуру команды «Табулировать» так, чтобы для включенного флажка «В массив» вывод результа­тов выполнялся в одномерный массив.

Задача 3.7. Вставьте в форму объект ChartFX из закладки OCX для построения графика функции. Дважды щелкните на нем и на закладке Appearance из списка Gallery Туре выберите пиктограм­му нужного графика. На закладке 3DView уберите флажок 3D. На закладке DataValues задайте ожидаемые (ориентировочно) макси­мальное и минимальное значения функции. Создайте дополни­тельный пункт меню или вставьте кнопку «Нарисовать график» для получения графика. Запрограммируйте кнопку так, например:

procedureTForml.ButtonlClick(Sender: TObject); vari, n : integer;

x : real;

s : string;

begin

x:=0;

n:=10; {n- количествоточек} ChartFXl.OpenDataEx(COD_VALUES, 1, n); for i := 0 to n-1 do begin

ChartFXl.Value[i].:= sin(x)+l ; {Формируемлегендуоси OX} str(x:5:2,s);

ChartFX 1. Legend[i]:=s;

x:=x+0.5;

end;

ChartFXl .CloseData(COD_VALUES);

end;

Задача 3.8. Совместите процессы табулирования функции и построения графика.