Procedure Edit1KeyPress(Sender: TObject; var Key: Char);

Лабораторная работа №13

Задание: Создайте приложение, которое предлагает пользователю задать размер линейного размера, заполняет этот массив случайными целыми числами, выводит список элементов массива, а затем по выбору пользователя определяет минимальный и максимальный элементы массива, сумму всех элементов и количество положительных элементов.

 

Окно приложения создания и обработки линейного массива

 

 

Алгоритм выполнения работы.

1. Создайте форму, для свойства Caption задайте значение «Создание и обработка массива».

 

2. На форме разместите компоненты Edit1 (число элементов массива) и Edit2 (исходный массив), кнопку Button1 (Создать массив), для свойства Caption кнопки задайте значение «Создать массив».

 

3. Разместите на форме панель GroupBox1, для свойства Caption которой задайте значение «Определить».

 

ПРИМЕЧАНИЕ

Панель GroupBox — это контейнер с рамкой и надписью, объединяющий группу связанных органов управления, таких как переключатели RadioButton, флажки CheckBox и т. д. GroupBox имеет встроенную рамку с надписью, которая обычно используется для выделения на форме группы функционально объединенных компонентов.

 

4. В панели GroupBox1 разместите компоненты CheckBox1, CheckBox2, CheckBox3 и CheckBox4, для свойств Caption которых задайте значения: «Минимальный элемент», «Максимальный элемент», «Сумма всех элементов», «Число положительных элементов», соответственно.

 

5. Напротив них разместите компоненты Edit3, Edit4, Edit5 и Edit6. Если компоненты CheckBox1, CheckBox2, СпескВохЗ, CheckBox4 окажутся размещенными под панелью GroupBox1 и не будут отображаться, то следует выделить панель GroupBox1 и выбрать в контекстном меню команду Control ► Send to Back (Порядок ► На задний план).

 

6. В нижней части формы разместите кнопку Button2 и задайте значение свойства Button2.Caption — «Вычислить».

 

7. Удалите текст Edit1, Edit2, Edit3, Edit4, Edit5, Edit6 из соответствующих компонентов.

 

8. Выровняйте компоненты на форме, как показано на рис.6.1. Зафиксируйте положение компонентов на форме, выбрав в меню Delphi команду Вид ► Зафиксировать.

 

9. Сохраните файл проекта и программного модуля.

 

10. Прежде чем создавать обработчики событий щелчка мышью по кнопкам Button1 и Button2, в разделе описания переменных опишите переменные целого типа N и I, где N — размер массива, а I — порядковый номер элемента массива, а также М - динамический массив целых чисел.

 

Создание и обработка линейного массива

Var

Form1: TForm1;

N,I: integer;

М: array of integer; {описание динамического массива целых чисел}

 

Рис. 6.1. Окно формы с компонентами

 

11. Для предупреждения ввода в окно Edit1 нечислового значения реализуем обработку события нажатия на клавишу в окне Edit1, чтобы запретить ввод любых символов, кроме цифр от 0 до 9.

 

Для создания процедуры обработчика события нажатия на клавишу в окне Edit1 выберите в окне Инспектора объ­ектов компонент Edit1 и на странице События дважды щелкните левой кнопкой мыши на пустом поле списка в событии On Key Press. После этого окно Редактора кода немедленно получит фокус и в разделе interface появится запись процедуры обработчика события:

Procedure Edit1KeyPress(Sender: TObject; var Key:Char);

 

а в разделе implementation — текст заготовки этой процедуры:

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

Begin

end;

Вставьте в тело процедуры следующий оператор:

if not (Key in ['0'..'9']) then Key:=#0;

 

Действие этого оператора сводится к сравнению значения переменной Key с множеством значений ['0'..'9']. Если символ нажатой клавиши не входит в это множество, то Key присваивается значение нулевого символа (#0).

 

12. Таким образом, в окне Edit2 будет отображаться текст, состоящий только из цифр.

 

13. Создание массива целых чисел опишите в процедуре обработчика события щелчка мышью на кнопке Button1. Для создания процедуры обработчика события выберите в окне Инспектора объектов объект Button1, затем на странице События сделайте двойной щелчок на пустом поле списка в событии OnClick. После этого отредактируйте заготовку процедуры обработчика события procedure TForm1.Button1Click(Sender: TObject); в окне Редактора кода следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

Begin

Randomize;

N:=StrToInt(Edit1.Text); {число элементов массива}

SetLength( M, N);    {задать массиву М длину N}

Edit2.Text:=' ';    {очистить окно Edit2}

for I:= 0 to N-1 do {заполнить массив случайными значениями целых чисел}

Begin

M[I]:= Round(Sin(Random(100))*100);

{присвоить элементу массива случайное значение}

Edit2.Text:=Edit2.Text+' '+IntToStr(M[I]);

{вывести элементы массива}

End;

end;

ПРИМЕЧАНИЕ

Оператор Randomize; задает случайное начальное значение для функции Random.

 

14. Обработку массива опишите в процедуре обработчика события щелчка мышью на кнопке Button2. Для этого выберите в окне Инспектора объектов объект Button2, затем на странице События сделайте двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода в заготовку процедуры обработчика события procedure TForm1.Button2Click(Sender: TObject); в раздел описания локальных переменных поместите следующее.описание:

Var

Max, Min, Sum, CountPlus: integer; {результаты обработки массива}

где Мах — максимальный элемент массива,

Min — минимальный элемент массива,

Sum — сумма всех элементов массива,

CountPlus — количество положительных элементов массива.

 

Обработку массива можно реализовать с помощью цикла For, в котором вы­числение значения каждой из этих переменных записывается при помощи оператора if then, проверяющим условие CheckBox.Checked. Если свойство Checked имеет значение True, то выполняется вычисление соответствующей переменной. В заключительной части процедуры можно разместить вывод результатов обработки массива. Текст процедуры обработки массива может быть записан следующим образом:

 

procedure TForm1. Button2 Click( Sender: TObject); {обработка массива} var

Max, Min, Sum, CountPlus: integer; {результаты обработки массива}

Begin

if CheckBox1.Checked then Min:=M[0]; {пусть 0-й элемент - Min}

Edit3.Text:=' ';

if CheckBox2.Checked then Max:=M[0]; {пусть 0-й элемент - Max}

Edit4.Text:=' ';

Sum:=0;                              {обнулить значения Sum}

Edit5.Text:=' ';

CountPlus:=0; {обнулить значения суммы положительных элементов}

Edit6.Text:=' ';

for I:=0 to N-l do

Begin

if CheckBox1.Checked then {определить минимальный элемент массива}

if Min>M[I] then Min:=M[I];

if CheckBox2. Checked then {определить максимальный элемент массива}

if Max<M[I] then Max:=M[I];

if CheckBox3.Checked then {суммировать элементы массива}

Sum:=Sum+M[I];

if CheckBox4.Checked then {суммировать положительные

          элементы массива}

if M[I]>0 then CountPlus:=CountPlus+1;

end;

{вывести результаты обработки массива}

if CheckBox1.Checked then Edit3.Text:=IntToStr(Min);

if CheckBox2.Checked then Edit4.Text:=IntToStr(Max);

if CheckBox3.Checked then Edit5.Text:=IntToStr(Sum);

if CheckBox4.Checked then Edit6.Text:=IntToStr(CountPlus);

end;

 

15. Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение.

 

16. Задавая различные значения числа элементов массива и щелкая мышью на кнопке Создать массив, убедитесь в правильной работе процедуры защиты от ввода нечисловых данных в Edit1 и генерации массива случайных целых чисел.

 

17. Выбирая варианты обработки массива установкой соответствующих флажков CheckBox, как показано на рис. 6.1, и щелкая мышью на кнопке Вычислить, убедитесь в правильности работы процедуры обработки массива.

 

18. Закройте окно приложения.

 

Рис. 6.1. Окно приложения создания и обработки линейного массива

 


Дата добавления: 2020-11-15; просмотров: 57; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!