Тема: Процедуры и функции. (6 часов)
Цель: Сформировать практические навыки описания и применения подпрограмм 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):
Ей соответствует модуль, текст которого приведен ниже.
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<= 'Z')) or ((Ch>='a') and (Ch<= 'z')) then
Litera:='Латиница'
else if ((Ch>='А') and (Ch<= 'Я')) or ((Ch>='а') and (Ch<= 'я')) then
Litera:='Кириллица'
else if ((Ch>='0') and (Ch<= '9')) then
Litera:='Цифра'
else Litera:='Другой'
end;
procedure Litera_(Ch: Char;var Res: String);// Описание процедуры
begin
if ((Ch>='A') and (Ch<= 'Z')) or ((Ch>='a') and (Ch<= 'z')) then
Res:='Латиница'
else if ((Ch>='А') and (Ch<= 'Я')) or ((Ch>='а') and (Ch<= 'я')) then
Res:='Кириллица'
else if ((Ch>='0') and (Ch<= '9')) then
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. Тестовые наборы данных для тестирования приложения.