Поиск минимального (максимального) элемента массива
Будем искать минимальный элемент в целочисленном массиве. Для этого немного изменим обработчик события OnClick для кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;//номер элемента, сравниваемого с минимальным
a:array[1..10] of integer;
min:integer;//номер минимального элемента
begin
//Введем массив
for i:=1 to 10 do
//Преобразуем полученные подстроки в числа
a[i]:=StrToInt(GetSubStr(Edit1.text,' ',i));//используем пробел в качестве разделителя
//Найдем минимальный элемент
min:=1; //пусть номер минимального элемента = 1
for i:= 2 to 10 do // начнем искать со следующего
if a[i]
Form1.caption:=IntToStr(a[min]); // выводим в заголовок
формы минимальный элемент
end;
В этом примере a[min] минимальный элемент массива, а min - номер минимального элемента. Алгоритм очень простой: сравниваем каждый следующий элемент с минимальным, если он меньше минимального, то запоминаем его номер в переменной min, и продолжаем сравнивать уже с ним.
Чтобы найти максимальный элемент, нужно изменить всего одну строку:
>>>
if a[i] Надо заменить на:
if a[i] > a[min] then min:=i;
Только теперь a[min] - максимальный элемент, а min - номер максимального элемента.
Поиск заданного элемента в массиве
Поступим методом простого перебора. Для этого будем перебирать все элементы массива, пока не встретим искомый элемент, или пока не дойдем до конца массива.
Элемент, совпадение с которым нам надо найти будем хранить в текстовом поле Edit2. Обработчик события OnClick нашей кнопки будет иметь такой вид:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
a:array[1..10] of integer;
n:integer;//образец
found:boolean;
begin
//Введем массив
for i:=1 to 10 do
//Преобразуем полученные подстроки в числа
a[i]:=StrToInt(GetSubStr(Edit1.text,' ',i));//используем пробел в качестве разделителя
n:=StrToInt(Edit2.text);
found:=false;
i:=1;
REPEAT
if a[i] = n then found:=true
else i:=i+1;
UNTIL (i > 10) or (found = true);
if found then showmessage('Совпадение с элементом номер '+IntToStr(i));
end;
Сортировка массива
Под сортировкой массива подразумевается процесс перестановки элементов массива, целью которого является размещение элементов массива в определенном порядке. Например, если имеется массив целых чисел а, то после выполнения сортировки по возрастанию должно выполняться условие:
а[1]
где SIZE — верхняя граница индекса массива.
Примечание
Задача сортировки распространена в информационных системах и используется как предварительный этап задачи поиска, т. к. поиск в упорядоченном (отсортированном) массиве проводится намного быстрее, чем в неупорядоченном (см. рассмотренный ранее метод бинарного поиска).
Существует много методов (алгоритмов) сортировки массивов.
Рассмотрим два из них:
-
метод прямого выбора;
-
метод прямого обмена.
Сортировка методом прямого выбора
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.
Ниже представлена программа сортировки массива целых чисел по возрастанию, диалоговое окно которой изображено на рис. 5.15.
Рис. 5.15. Диалоговое окно программы сортировки массива простым выбором
Процедура сортировки, текст которой приведен в листинге 5.9, запускается нажатием кнопки Сортировка (Button1). Значения элементов массива вводятся из ячеек компонента StringGrid1. После выполнения очередного цикла поиска минимального элемента в части массива процедура выводит массив в поле метки (Label2).
Листинг 5.9. Сортировка массива простым выбором
procedure TForm1.ButtonlClick(Sender: TObject);
const
SIZE=10;
var
a:array[1..SIZE] of integer;
min:integer; { номер минимального элемента в части
массива от i до верхней границы массива }
j:integer; { номер элемента, сравниваемого с минимальным }
buf:integer; { буфер, используемый при обмене элементов массива }
i,k:integer;
begin
// ввод массива
for i:=l to SIZE do
a[i]:=StrToInt(StringGridl.Cells[i-1,0]) ; Iabel2.caption:='';
for i:=l to SIZE-1 do begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]} min:=i;
for j:=i+l to SIZE do if a[j]
then min:=j;
{ поменяем местами a [min] и a[i] }
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
{ вывод массива }
for k:=l to SIZE do
Label2.caption:=label2.caption+' '+IntTostr(a[k]);
Label2.caption:=label2.caption+#13; end;
Label2.caption:=label2.caption+#13+'MaccMB отсортирован.';
end;
На рис. 5.16 приведено диалоговое окно программы после завершения процесса сортировки.
Рис. 5.16. Диалоговое окно программы Сортировка массива
Сортировка методом обмена
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом "пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.
На рис. 5.17 цифрой 1 обозначено исходное состояние массива и перестановки на первом проходе, цифрой 2 — состояние после перестановок на первом проходе и перестановки на втором проходе, и т. д.
Рис. 5.17. Процесс сортировки массива
Рис. 5.18. Диалоговое окно программы Сортировка методом обмена
На рис. 5.18 приведено диалоговое окно программы сортировки массива методом обмена.
Процедура сортировки, текст которой приведен в листинге 5.10, запускается нажатием кнопки Сортировка (Button1). Значения элементов массива вводятся из ячеек компонента stringGrid1. Во время сортировки, после выполнения очередного цикла обменов элементов массива, программа выводит массив в поле метки Label2.
Листинг 5.10. Сортировка массива методом обмена
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5;
var
a:array[1..SIZE] of integer;
k:integer; // текущий элемент массива
i:integer; // индекс для ввода и вывода массива
changed:boolean; // TRUE, если в текущем цикле были обмены
buf:integer; // буфер для обмена элементами массива
begin
// ввод массива
for i:=1 to SIZE do
a[i] := StrToInt(StringGrid1.Cells[i-1, 0] );
label2.caption:='';
// сортировка массива repeat
Changed:=FALSE; // пусть в текущем цикле нет обменов
for k:=l to SIZE-1 do
if a[k] > a[k+l] then
begin // обменяем k-й и k+1-й элементы
buf := a[k]; a[k] := a[k+l]; a[k+l] := buf;
changed := TRUE;
end;
// вывод массива
for i:=l to SIZE do
Label2.caption:=label2.caption+' '+IntTostr(a[i]);
Label2.caption:=label2.caption+#13;
until not changed; // если не было обменов, значит
// массив отсортирован
Label2.caption:=label2.caption
+#13+'Maccив отсортирован.';
end;
Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один. Вместе с тем возможно, что массив реально будет упорядочен за меньшее число циклов. Например, последовательность чисел 5 1 2 3 4, если ее рассматривать как представление массива, будет упорядочена за один цикл, и выполнение оставшихся трех циклов не будет иметь смысла.
Поэтому в программу введена логическая переменная changed, которой перед выполнением очередного цикла присваивается значение FALSE. Процесс сортировки (цикл repeat) завершается, если после выполнения очередного цикла проверки соседних элементов массива (цикл for) ни один элемент массива не был обменен с соседним, и, следовательно, массив уже упорядочен.
Рис. 5.19. Пример работы программы сортировки массива методом обмена
На рис. 5.19 приведено диалоговое окно программы сортировки массива методом обмена после завершения процесса сортировки.
Задания для самостоятельной работы
-
Создайте одномерный массив, заполните его случайноым образом и отсортируйте по убыванию методом"пузырька". Форма должна содержать компоненты для отображения исходного и отсортированного массива, а также компонент для ввода количества элементов.
-
Задана целочисленная матрица А размером NxM, Получить массив B, присвоив его к-му элементу значения 0, если все элементы к-го столбца матрицы -нулевые, и значение в 1 противном случае (k=1,2,...,M).
Лабораторная работа №8
Тема: Процедуры и функции
Цель: Сформировать практические навыки описания и применения подпрограмм Object Pascal для обработки данных; построение однооконных интерфейсов с помощью визуального компонента «окно» (класс TForm) и визуальных компонентов панели инструментов Standard: «метка» (класс TLabel), «однострочный редактор» (класс TEdit), «кнопка» (класс TButton), «многострочный редактор текста» (TMemo).
Задание
1. В соответствии с вариантами задания и приведенной ниже спецификацией реализуйте приложение под Windows.
2. Разработайте тестовые задания, и оттестируйте программу одним из методов тестирования.
Спецификация приложения
1. В соответствии с приведенными вариантами заданий реализуйте приложение под Windows, используя для организации пользовательского интерфейса следующие элементы управления: «форма» (класс TForm), «кнопка» (класс TButton), «метка» (класс TLabel), «однострочный редактор» (класс TEdit). Ввод данных и вывод результатов осуществляйте в элементы управления «однострочный редактор». Подписи к однострочным редакторам выполните с помощью элементов «метка». Вычисление результата свяжите с нажатием на элементе управления «кнопка» левой клавиши мыши.
2. Организуйте контроль содержимого строки, вводимой в элемент «однострочный редактор». Если вводимая строка не соответствует заданному формату, то необходимо предусмотреть следующее: в окне сообщений вывести сообщение об ошибке, очистить строку, введенную в «однострочный редактор».
3. Визуальный компонент, в который выводится результат, должен быть доступен только для чтения, чтобы пользователь не мог редактировать его содержимое.
4. Установите удобный для пользователя порядок перемещения фокуса по компонентам с помощью клавиши Tab.
Рекомендации к выполнению
1. Для выполнения заданий используйте результаты предыдущих лабораторных работ. Для этого предварительно создайте новую папку, куда скопируйте все файлы подходящего приложения, после чего откройте его в Delphi и внесите необходимые изменения.
2. Описания разрабатываемых в работе подпрограмм помещайте в разделе реализации (раздел модуля, который начинается после зарезервированного слова implementation) модуля формы вашего приложения.
Варианты заданий
1. Разработайте функцию, которая получает через параметры два вещественных значения и возвращает наименьшее из них.
2. Разработайте функцию, которая получает через параметры целое значение, соответствующее 16-ичной цифре, и возвращает символ, изображающий эту цифру.
3. Разработайте функцию, которая получает через параметры символ, изображающий 16-ичную цифру, и возвращает целое значение, соответствующее этой цифре.
4. Разработайте функцию, которая получает через параметры длины трех сторон треугольника a, b, c, вычисляет и возвращает в качестве своего результата его площадь s. Площадь треугольника вычисляйте по формуле Герона:
5. Разработайте функцию, которая получает три вещественных параметра, возвращает в качестве своего результата булевское значение True, если полученные значения могут быть сторонами треугольника, False – в противном случае.
6. Разработайте функцию, которая получает три вещественных параметра R, r, l, вычисляет и возвращает в качестве своего результата площадь s усеченного конуса:
7. Разработайте функцию, которая получает три вещественных параметра R, r, h, вычисляет и возвращает в качестве своего результата объем v усеченного конуса:
8. Разработайте функцию, которая получает через параметры два вещественных значения x1, x2, вычисляет и возвращает в качестве своего результата вещественное значение y в соответствии со следующей формулой:
9. Разработайте функцию, которая вычисляет и возвращает в качестве своего результата заданный разряд целого числа. Целое число и номер разряда функция получает через параметры. Разряды нумеруйте справа налево, начиная с единицы. Для решения используйте операции mod, div.
10. Разработайте функцию, которая вычисляет и возвращает в качестве своего результата значение заданного разряда дробной части вещественного числа. Вещественное число и номер разряда функция получает через параметры. Разряды нумеруйте от десятичной точки направо, начиная с единицы. Для решения используйте функции Int, Frac.
11. Выполните приведенные выше варианты заданий, описывая процесс обработки данных в форме процедуры Object Pascal.
12. Разработайте процедуру, которая получает через параметры две вещественные переменные x, y и обменивает переменные их значениями. Например, до вызова процедуры переменные имеют значения: x = 5, y = 8. После вызова процедуры переменные имеют значения: x = 8, y = 5.
Пример
Пусть требуется написать функцию, которая получает через параметр (тип Char) литеру, определяет к какому из приведенных ниже подмножеств она принадлежит:
• латиница;
• цифра;
• кириллица;
• другая;
и возвращает строку (значение типа String), содержащую имя этого подмножества.
Для решения этой задачи можно построить приложение, состоящее из одной формы следующего вида (рис. 7):
Рис. 7
Ей соответствует модуль, текст которого приведен ниже.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function Litera(Ch: Char):String;// Описание функции
begin
if ((Ch>='A') and (Ch='a') and (ChLitera:='Латиница'
else if ((Ch>='А') and (Ch='а') and (Ch
Litera:='Кириллица'
else if ((Ch>='0') and (Ch
Litera:='Цифра'
else Litera:='Другой'
end;
procedure Litera_(Ch: Char;var Res: String);// Описание процедуры
begin
if ((Ch>='A') and (Ch='a') and (ChRes:='Латиница'
else if ((Ch>='А') and (Ch='а') and (Ch
Res:='Кириллица'
else if ((Ch>='0') and (Ch
Res:='Цифра'
else Res:='Другой'
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var s: String;
begin
Litera_(Key,s); //вызов процедуры
Edit2.Text:= s;
//Edit2.Text:= Litera(Key); //Вызов функции
Edit1.Clear
end;
end.
Содержание отчета
1. Задание.
2. Текст программы на Object Pascal 2.0.
3. Тестовые наборы данных для тестирования приложения.
Контрольные вопросы
1. Назовите синтаксические правила, описания функции.
2. Назовите синтаксические правила, написания вызова функции.
3. Назовите синтаксические правила, описания процедуры.
4. Назовите синтаксические правила, написания оператора процедуры.
5. В чем отличие процедуры от функции?
6. Что такое локальные переменные подпрограммы?
7. Что такое глобальные переменные?
8. Что такое формальные параметры подпрограммы и для чего они предназначены?
9. Что такое фактические параметры подпрограммы и для чего они предназначены?
10. Как должны соотносится между собой фактические и формальные параметры подпрограммы при ее вызове?
11. Перечислите, какие виды формальных параметров используются в подпрограммах, укажите их назначение и особенности применения.
Лабораторная работа №9
Тема: Графические возможности Delphi.
Цель: Отработка практических навыков создания DELPHI-приложения с использованием компонентов TImage, TChart.
Задание 1.
Создать проект, позволяющий просматривать и редактировать рисунки, а также просматривать простейшие геометрические фигуры
Примерный вид формы:
Shape1
OpenPictureDialog1
SavePictureDialog1
Image1
MainMenu1
ColorBox1
ComboBox1
Выполнение задания:
1. Разместите на форме указанные компоненты.
2. Установите следующие свойства компонентов
-
Компонент
|
Свойство
|
Значение
|
ComboBox1
|
Items
|
квадрат
круг
|
Image1
|
AutoSuze
Stretch
|
true
false
|
3. Создайте главное меню формы
4. Запрограммируйте выбор пункта меню открыть
procedure TForm1.N2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
5. Запрограммируйте выбор пункта меню сохранить:
procedure TForm1.N3Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
6. Запрограммируйте выбор цвета для рисования с помощью компонента ColorBox1:
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=ColorBox1.Selected;
end;
7. Запрограммируйте установку графического указателя при нажатии клавиши мыши в пределах компонента Image1:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Canvas.MoveTo(X,Y);
end;
8. Запрограммируйте рисование линии при нажатии левой клавиши мыши и ее перемещении по компоненту Image1:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then Image1.Canvas.LineTo(X,Y);
end;
9. Запрограммируйте выбор простой геометрической фигуры с помощью компонента ComboBox1:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: Shape1.Shape:=stSquare;
1: Shape1.Shape:=stCircle;
end;
end;
10. Сохраните проект и проверьте его работу.
Задание для самостоятельной работы
Доработайте проект следующим образом:
-
добавьте в список ComboBox1 новые пункты: прямоугольник и эллипс и предусмотрите возможность изображения этих фигур;
-
запрограммируйте закраску фигуры Shape1 цветом, выбранном в компоненте ColorBox1;
-
добавьте на форму две кнопки Button1 и Button2. При щелчке мышью по Button1 размеры компонента Shape1 увеличиваются вдвое, а при щелчке по Button2 – уменьшаются вдвое.
Форма представления отчета:
Отчет о выполненной самостоятельной работе должен содержать:
-
тему лабораторной работы;
-
условие задачи;
-
листинг программы;
-
результаты ее тестирования.
Компонент Chart
Компонент Chart позволяет строить графики, диаграммы различных видов. Компонент Chart расположен на палитре Additional.
Круговая диаграмма
-
Создайте форму следующего вида
-
Label2
Chart1
Edit1
ColorDialog1
Button1
StringGrid1
Edit1
Label1
2. Присвойте компонентам следующие значения
-
Компонент
|
Свойство
|
Значение
|
Label1
|
Caption
|
Пролив
|
Label2
|
Caption
|
Длина
|
Edit1
|
Text
|
|
Edit2
|
Text
|
|
Button1
|
Caption
|
Ввод
|
SrtingGrid1
|
ColCount
RowCount
FixedCols
|
2
10
0
|
3. Дважды щелкните по объекту Chart и в появившемся окне добавьте элемент Series (Add) и выберите тип Pie
4. Выделите объект Form1 в диспетчере объектов и перейдите на закладку Events в Object Inspector и дважды щелкните в поле справа от события OnCreate
5. Запрограммируйте событие создания формы.
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Пролив';
StringGrid1.Cells[1,0]:='Длина';
Chart1.Title.Text.Clear;
Chart1.Title.Text.Add('Диаграмма');
Series1.Clear;
Series1.Marks.Visible:=false;
end;
6. Запрограммируйте событие onClick для button1
procedure TForm1.Button1Click(Sender: TObject);
var A,A1:integer;
begin
A:=Edit1.tag;
inc(A);
Edit1.tag:=A;
StringGrid1.Cells[0,A]:=Edit1.Text;
StringGrid1.Cells[1,A]:=Edit2.Text;
A1:=StrToInt(Edit2.Text);
if ColorDialog1.Execute then Series1.Add(A1,Edit1.text, ColorDialog1.Color)
else Series1.Add(A1,Edit1.text, clYellow);
end;
7. Запустите программу на исполнение. Помните в поле Edit2 нужно вводить только числа
Построение графиков функций
1. Создайте форму следующего вида
Chart1
CheckBox1
Button1
2. Присвойте компонентам следующие значения
-
Компонент
|
Свойство
|
Значение
|
CheckBox1
|
Caption
|
3D
|
3. Дважды щелкните по объекту Chart и в появившемся окне добавьте элемент Series (Add) и выберите тип Line
4. Запрограммируйте событие onClick для button1
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
Series1.Clear;
Chart1.View3D:=false;
Series1.Title:='Sin';
for i := 0 to 100 do
begin
Series1.AddXY(0.02 * Pi * i, sin(0.02 * Pi * i), '', clRed);
end;
end;
Задания для самостоятельной работы
1. Добавьте еще один элемент Series и постройте график функции Sin, программа должна выглядеть так
2. Настройте вывод графиков в зависимости от выключателя 3D в двухмерном или трехмерном варианте. Изменения должны также происходить и при включении и выключении 3D/
Форма представления отчета:
Отчет о выполненной самостоятельной работе должен содержать:
-
тему лабораторной работы;
-
условие задачи;
-
листинг программы;
-
результаты ее тестирования.
Построение графиков функций в декартовых координатах
Пример 1.
Создать в среде DELPHI проект, позволяющий построить график функции
у = х2 - 2, x[-10 ; 10].
Для перехода от естественных координат к экранным воспользуемся формулами:
х1 = Ox + Мx*х.
у1 = Oy - Мy*у ,
где х , у - естественные координаты, х1 , у1 - экранные координаты, (Ox, Oy) – экранная точка, выбранная в качестве начала координат, Mx , My - масштаб, т.е. длина единичных отрезков в пикселях.
Разработка проекта:
1. Разместить на форме компоненты PaintBox1, Label1, Label2, Edit1, Edit2, Button1, Button2 следующим образом:
Button2
Button1
Edit2
Label2
Edit1
Label1
PaintBox1
2. Создать процедуру для построения графика функции (двойной щелчок мышкой по Button1)
procedure TForm1.Button1Click(Sender: TObject);
var
x1, y1, ox, oy, mx, my, i : integer;
x, y: real;
begin
paintbox1.Canvas.Pen.Color:=clblue; {устанавливаем синий цвет пера}
ox:=paintbox1.Width div 2; {начало координат размещаем в центре
oy:=paintbox1.Height div 2; компонента paintbox1}
mx:=StrToInt(Edit1.Text); {масштаб по оси x}
my:=StrToInt(Edit2.Text); {масштаб по оси x}
paintbox1.Canvas.moveto(0, oy); {строим оси координат}
paintbox1.Canvas.LineTo(640, oy);
paintbox1.Canvas.moveto(ox, 0);
paintbox1.Canvas.LineTo(ox, 480);
for i:= -10 to 10 do begin {разметка оси ox}
x1:=ox+mx*i;
paintbox1.Canvas.moveto(trunc(x1), oy-5);
paintbox1.Canvas.LineTo(trunc(x1), oy+5);
end;
for i:= -10 to 10 do begin { разметка оси oy }
y1:=oy-my*i;
paintbox1.Canvas.moveto(ox-5, trunc(y1));
paintbox1.Canvas.LineTo(ox+5, trunc(y1));
end;
paintbox1.Canvas.Pen.Color:=clred; {устанавливаем красный цвет пера}
x:= -10; y:=sqr(x)-2; {вычисляем координаты начальной точки графика}
x1:= trunc(ox+mx*x); y1:= trunc(oy-my*y); {перевод в экранные координаты}
paintbox1.Canvas.moveto(x1, y1); {перемещаем перо в эту точку}
while x{ построение графика функции}
begin
y:=sqr(x)-2; x1:= trunc(ox+mx*x); y1:= trunc(oy-my*y);
paintbox1.Canvas.LineTo(x1, y1);
x:=x+0.1;
end;
end;
3. Создать процедуру для очистки изображения графика (двойной щелчок мышкой по Button2)
procedure TForm1.Button2Click(Sender: TObject);
begin
paintbox1.Canvas.Pen.Color:=clblack;
paintbox1.Canvas.Brush.Color:=clwhite;
paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
end;
4. Запустить проект на исполнение и проверить его работу, задавая различный масштаб.
Задание для самостоятельной работы
Доработать данный проект следующим образом:
а) разместить на форме компонент RadioGroup , позволяющий выбирать для построения графика одну из функций у = х2 – 2, y=sin x, y = sin(ex). y= ecos x ;
б) разместить на форме кнопку Выход, при щелчке по которой проект завершает работу.
Форма представления отчета:
Отчет о выполненной самостоятельной работе должен содержать:
-
тему лабораторной работы;
-
условие задачи;
-
листинг программы;
-
результаты ее тестирования.
Лабораторная работа №10
Тема: Мультимедиа возможности Delphi.
Цель: Отработка практических навыков создания DELPHI-приложения с использованием компонентов TImage, TChart, TMediaPlayer.
|