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

Скачать

Тема: Процедуры и функции. (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. Площадь треугольника вычисляйте по формуле Герона:

image

5. Разработайте функцию, которая получает три вещественных параметра, возвращает в качестве своего результата булевское значение True, если полученные значения могут быть сторонами треугольника, False – в противном случае.

6. Разработайте функцию, которая получает три вещественных параметра R, r, l, вычисляет и возвращает в качестве своего результата площадь s усеченного конуса:

image

7. Разработайте функцию, которая получает три вещественных параметра R, r, h, вычисляет и возвращает в качестве своего результата объем v усеченного конуса:

image

8. Разработайте функцию, которая получает через параметры два вещественных значения x1, x2, вычисляет и возвращает в качестве своего результата вещественное значение y в соответствии со следующей формулой:

image

9. Разработайте функцию, которая вычисляет и возвращает в качестве своего результата заданный разряд целого числа. Целое число и номер разряда функция получает через параметры. Разряды нумеруйте справа налево, начиная с единицы. Для решения используйте операции mod, div.

10. Разработайте функцию, которая вычисляет и возвращает в качестве своего результата значение заданного разряда дробной части вещественного числа. Вещественное число и номер разряда функция получает через параметры. Разряды нумеруйте от десятичной точки направо, начиная с единицы. Для решения используйте функции Int, Frac.

11. Выполните приведенные выше варианты заданий, описывая процесс обработки данных в форме процедуры Object Pascal.

12. Разработайте процедуру, которая получает через параметры две вещественные переменные x, y и обменивает переменные их значениями. Например, до вызова процедуры переменные имеют значения: x = 5, y = 8. После вызова процедуры переменные имеют значения: x = 8, y = 5.

Пример

Пусть требуется написать функцию, которая получает через параметр (тип Char) литеру, определяет к какому из приведенных ниже подмножеств она принадлежит:

• латиница;

• цифра;

• кириллица;

• другая;

и возвращает строку (значение типа String), содержащую имя этого подмножества.

Для решения этой задачи можно построить приложение, состоящее из одной формы следующего вида (рис. 7):

 

image

 

Рис. 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. Тестовые наборы данных для тестирования приложения.

 


Скачать


zharar.kz