Название: Информатика и программирование - Лабораторный практикум (М.Г. Зайцев)

Жанр: Информатика

Просмотров: 1176


Т е м а:  строки object pascal

 

Цель

 

Сформировать практические навыки: организации процессов обработки данных с помощью строк Object Pascal, использования стандартных подпрограмм и операций, определенных на строках; построение однооконных интерфейсов с помощью визуального ком-понента окно (класс TForm) и визуальных компонентов панели инструментов Standart: метка (класс TLabel), редактор (класс TEdit), кнопка (класс TButton), ниспадающего меню (TmainMenu).

 

Задание

 

1. В соответствии с вариантами задания и приведенной ниже спецификацией реализуйте приложение под Windows.

2. Разработайте тестовые задания, и оттестируйте программу одним из методов тестирования.

 

Спецификация приложения

 

Приложение обеспечивает пользователя следующими возможностями:

1)  выбор одной из следующих категорий действий:

  ·  стандартной функции из следующего набора функций,

     определенных для строкового типа: Length, Pos, Copy,

     Concat;

  · стандартной процедуры из следующего набора проце-

     дур, определенных для строкового типа: Insert, Delete,

     Val;

  · подпрограммы из набора подпрограмм, определенных

     в задании;

 · операции отношения из следующего набора операций,

    определенных для строкового типа: =, <>, >, <,>=,<=;

2) ввод исходных данных для выбранного действия;

3) вычисление и вывод результата.

 

Рекомендации к выполнению

 

1. Для организации пользовательского интерфейса используйте следующие элементы управления: «форма» (класс Tform), «кнопка» (класс TButton), «метка» (класс TLabel), «однострочный ре-дактор» (класс TEdit), «ниспадающее меню» (класс TMainMenu). Ввод данных и вывод результатов осуществляйте в элементы управления «однострочный редактор». Подписи к редакторам сделайте с помощью элементов «метка» (класс TLabel). Выбор операции, процедуры или функции реализуйте с помощью элемента управления «ниспадающее меню». Вычисление результата свяжите с нажатием на элементе управления «кнопка» левой клавиши мыши.

2. Визуальный компонент, в который выводится результат, должен быть доступен только для чтения, чтобы пользователь не мог редактировать его содержимое.

3. Установите удобный для пользователя порядок перемещения фокуса по компонентам с помощью клавиши Tab.

4. Чтобы компонент был доступен только для чтения, необходимо в его свойство ReadOnly занести значение True.

5. Чтобы на компонент нельзя было установить фокус ввода с помощью клавиши Tab, занесите в его свойство TabStop значение False.

6. Разработанные приложения сохраняйте в отдельной папке.

 

Варианты заданий

 

Реализуйте следующие подпрограммы.

1. Функцию для перестановки символов строки в обратном порядке. Функция получает строку через параметр и возвращает строку, полученную из исходной, путем перестановки в ней символов в обратном порядке.

 

Пример

 

Исходная строка:   QWERTY

Результирующая строка:   YTREWQ.

2. Процедуру для поиска и замены в строке S подстроки SubS1 на SubS2.

 

Пример

 

Исходная строка:   QWERTYQWuytQW

Подстрока SubS1:  QW

Подстрока SubS2:               WQ

Результирующая строка:  WQERTYWQuytWQ.

3. Процедуру для удаления начальных и конечных пробелов.

 

Пример

 

Исходная строка:   ‘ QWERTY  ’

Результирующая строка:  ‘ QWERTY ’.

 

Пример

 

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

 

 

 

Ей соответствует модуль, текст которого приведен ниже.

unit UStrOpns;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Menus;

 

type

  TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    N4: TMenuItem;

    Equel: TMenuItem;

    NonEquel: TMenuItem;

    Graeter: TMenuItem;

    Smaller: TMenuItem;

    GrOrEq: TMenuItem;

    SmOrEq: TMenuItem;

    Edit1: TEdit;

    Edit2: TEdit;

    Button1: TButton;

    Edit3: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Add: TMenuItem;

    procedure EquelClick(Sender: TObject);

    procedure NonEquelClick(Sender: TObject);

    procedure GraeterClick(Sender: TObject);

    procedure SmallerClick(Sender: TObject);

    procedure GrOrEqClick(Sender: TObject);

    procedure SmOrEqClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure AddClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

  TOperation = (Eq,Noneq,Gt,St,GorE,SorE,AddStr);

//тип применяемой операции

var

  Form1: TForm1;

  Operation:TOperation;//переменная для хранения выбранной операции

 

implementation

 

{$R *.dfm}

procedure SetEnvironment(Op: String);

//настраивает визуальные компоненты формы на выбранную операцию

begin

  with Form1 do begin

    Label1.Caption:= 'Левая строка А';

    Label2.Caption:= 'Правая строка B';

    Label3.Caption:= 'А ' + Op + ' B';

    Edit1.Text:= '';

    Edit2.Text:= '';

    Edit3.Text:= '';

    Edit1.Visible:= True;

    Edit2.Visible:= True;

    Edit3.Visible:= True;

    Button1.Visible:= True;

  end;

end;

 

procedure TForm1.EquelClick(Sender: TObject);

begin

  SetEnvironment('=');//настроить компоненты

  Operation:= Eq;     //выполнить операцию

end;

 

procedure TForm1.NonEquelClick(Sender: TObject);

begin

  SetEnvironment('<>');//настроить компоненты

  Operation:= NonEq;   //выполнить операцию

end;

 

procedure TForm1.GraeterClick(Sender: TObject);

begin

  SetEnvironment('>');//настроить компоненты

  Operation:= Gt;     //выполнить операцию

end;

procedure TForm1.SmallerClick(Sender: TObject);

begin

  SetEnvironment('<');//настроить компоненты

  Operation:= St;     //выполнить операцию

end;

 

procedure TForm1.GrOrEqClick(Sender: TObject);

begin

  SetEnvironment('>=');//настроить компоненты

  Operation:= GorE;    //выполнить операцию

end;

 

procedure TForm1.SmOrEqClick(Sender: TObject);

begin

  SetEnvironment('<=');//настроить компоненты

  Operation:= SorE;    //выполнить операцию

end;

 

procedure TForm1.AddClick(Sender: TObject);

begin

  SetEnvironment('+');//настроить компоненты

  Operation:= AddStr;    //выполнить операцию

end;

 

procedure TForm1.FormCreate(Sender: TObject);

//скрыть компоненты формы

begin

  Label1.Caption:= '';

  Label2.Caption:= '';

  Label3.Caption:= '';

  Edit1.Visible:= False;

  Edit2.Visible:= False;

  Edit3.Visible:= False;

  Button1.Visible:= False;

end;

 

function OpRun(sL,Sr: String;Operation:TOperation):String;

//выполняет выбранную операцию и формирует строку результата

var b: Boolean;

begin

  case Operation of

    Eq:     b:= sl =  sr;

    NonEq:  b:= sl <> sr;

    Gt:     b:= sl >  sr;

    St:     b:= sl <  sr;

    GorE:   b:= sl >= sr;

    SorE:   b:= sl <= sr;

    AddStr: Result:= sl + sr;

  end;

  if Operation<> AddStr then if b then Result:= 'True' else Result:= 'False';

end;

procedure TForm1.Button1Click(Sender: TObject);

var sL,Sr,sRes: String;

begin

  sl:= Edit1.Text;//копировать значение левого операнда

  sr:= Edit2.Text;//копировать значение правого операнда

  Edit3.Text:= OpRun(sl,sr,Operation);//выполнить операцию и отобразить результаты

end;

 

end.

 

Содержание отчета

 

1. Задание.

2. Текст программы на Object Pascal.

3. Тестовые наборы данных для тестирования типа данных.

 

Контрольные вопросы

 

1. Дайте характеристику типу String.

2. Дайте характеристику типу ShortString.

3. Дайте характеристику типу AnsiString.

4. Назначение и особенности применения функции Length.

5. Назначение и особенности применения функции Copy.

6. Назначение и особенности применения функции Pos.

7. Назначение и особенности применения функции Concat.

8. Назначение и особенности применения процедуры Delete.

9. Назначение  и особенности применения процедуры Insert.

 10. Назначение  и  особенности применения процедуры Str.

 11. Назначение  и  особенности  применения процедуры Val.

 12. Назначение  и  особенности  применения  операций  на

строках.

 

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

 

Множества