Лабораторная работа №26
Тема: «Разработка программ обработки массивов с использованием компонентов страницы Standart». Цель работы: получение навыков составления программ с использованием компонентов страницы Standart.
ЗАДАНИЕ Создайте приложение, которое предлагает пользователю задать размер линейного массива, заполняет этот массив случайными целыми числами, выводит список элементов массива, а затем по выбору пользователя определяет минимальный и максимальный элементы массива, сумму всех элементов и количество положительных элементов. Создайте форму, для свойства Caption задайте значение «Создание и обработка массива». На форме разместите компоненты Edit1 и Edit2, кнопку Button1, для свойства Caption кнопки задайте значение «Создать массив». Разместите на форме панель GroupBox1, для свойства Caption которой задайте значение «Определить». В панели GroupBox1 разместить компоненты CheckBox1, CheckBox2, CheckBox3 и CheckBox4, для свойства Caption которых задайте значения: «Минимальный элемент», «Максимальный элемент», «Сумма всех элементов», «Число положительных элементов», соответственно. Напротив них разместите компоненты Edit3, Edit4, Edit5, Edit6. Если компоненты CheckBox1, CheckBox2, CheckBox3 и CheckBox4 окажутся размещенными под панелью GroupBox1 и выбрать в контекстном меню команду Controlà Send to Back (Порядокà На задний план). В нижней чвсти формы разместить кнопку Button1 и задайте значение свойства Button1. Caption – «Вычислить». Удалите текст Edit1, Edit2, Edit3, Edit4, Edit5, Edit6 из соответствующих компонентов. Выровняйте компоненты на форме, как показано ниже на рисунке 18. Зафиксируйте положение компонентов на форме, выбрав в меню Delphi команду Edità Lock Controls.
рис. 18
Сохраните файл проекта и программного модуля.
Прежде чем создавать обработчики событий щелчка мышью по кнопкам Button1 и Button2, в разделе описания переменных опишите переменные целого типа N и I, где N – размер массива, а I – порядковый номер элемента массива, а также М – динамический массив целых чисел. Var Form1: TForm1; N, I: integer; M: array of integer; {описание динамического массива целых чисел} Для предупреждения ввода в окно Edit1 нечислового значения реализуем обработку события нажатия на клавишу в окне Edit1, чтобы запретить ввод любых символов, кроме цифр от 0 до 9. Для создания процедуры обработчика события нажатия на клавишу в окне Edit1 выберите в окне Инспектора объектов компонент Edit1 и на странице Events (События) дважды щелкните левой кнопкой мыши на пустом поле списка в событии OnKeyPress. После этого окно Редактора кода немедленно получит фокус и в разделе 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’]. Если символ нажатой клавиши не входит в это множество, то Кеу присваивается значение нулевого символа (#0). Таким образом, в окне Edit1 будет отображаться текст, состоящий только из цифр. Создание массива целых чисел опишите в процедуре обработчика события щелчком мышью на кнопке Button1. Для создания процедуры обработчика событий выберете в окне Инспектора объектов объект Button1, затем на странице События сделайте двойной щелчок на пустом поле списка в событии OnClick. После этого отредактируйте заготовку процедуры обработчика события procedure TForm1. Button1Click (Sender: TObject); в окне Редактора кода следующим образом: Procedure TForm1. ButtonClick (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; Обработку массива опишите в процедуре обработчика события щелчка мышью на кнопке 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.Button2Click (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-1 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; Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение. Задавая различные значения числа элементов массива и щелкая мышью на кнопке Создать массив, убедитесь в правильной работе процедуры защиты от ввода нечисловых данных в Edit1 и генерации массива случайных целых чисел. Выбирая варианты обработки массива установкой соответствующих флажков CheckBox, как показано на рисунке ниже, и щелкая мышью на кнопке Вычислить, убедитесь в правильности работы процедуры обработки массива. Закройте окно приложения, (рис. 19).
Рис. 19
|