Знакомство с компонентами RadioGroup и CheckBox, обработка строк типа String в среде Delphi

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 15.07.2009
Размер файла 21,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

На тему: «Знакомство с компонентами RadioGroup и CheckBox, обработка строк типа String в среде Delphi»

Задание 1. (Калькулятор). Создайте приложение, обеспечивающее ввод двух целых чисел и выполнение над ними арифметических операций сложения, умножения и вещественного деления. Для выбора операций используйте переключатели, вывод сообщения об ошибке при вводе делителя, равного нулю, выполните в отдельном окне сообщений.

Решение:

1. Сохраните проект в отдельной папке «Калькулятор». Проект назовите Calculator, а файл модуля - mainCalc.pas.

2. Задайте для свойства Form1. Caption значение «Калькулятор». Разместите на форме компоненты (см. рис. 3.1) Edit1,2,3 и Label1,2,3. Задайте свойства Caption для компонентов Label - «операнд1», «операнд2», «Результат». Удалите текст Edit1,2,3 в соответствующих компонентах (используйте свойство Text). Разместите на форме компонент Button1. Кнопку назовите «Вычислить».

3. Разместите на форме компонент RadioGroup1 из палитры Standard. Задайте для свойства Caption значение «Операция». Затем выберите свойство Items (это свойство задает количество переключателей в группе и надписи около них). В окне String List Editor введите список элементов - символов арифметических операций в столбик: +, -, *, /. Щелкните мышкой по кнопке ОК, завершите формирование списка арифметических операций.

4. В окне Инспектора объектов задайте для свойства RadioGroup. ItemIndex значение 0, чтобы сделать первую кнопку (сложение) выбранной по умолчанию. Задайте размер символов этого компонента, установив значение 14 пунктов.

Примечание: определить во время выполнения, какая кнопка выбрана в данный момент, можно по индексу ItemIndex (0 означает первую кнопку, -1 - ни одна кнопка не выбрана).

Форма будет иметь следующий вид:

Рис. 3.1 Пример формы приложения «Калькулятор»

1. Создайте код обработки события щелчка на кнопке с надписью «Вычислить». Для решения задачи вычисления арифметических операций введите в текст процедуры TForm1. Button1Click следующее описание:

Var a, b: integer; c: real;

Так как в процедуре обработки нажатия кнопки должно быть 4 варианта реализации, по одному для каждой арифметической операции, то следует записать выбор вычисления с помощью оператора Case.

В основном теле процедуры обработки события введите текст остальных операторов следующим образом:

Begin

A:=StrToInt (Edit1. Text);

B:=StrToInt (Edit2. Text);

Edit3. Text:=' `; {очистить от результата предыдущих вычислений}

Case RadioGroup1. ItemIndex of

0: c:= a + b;

1: c:= a - b;

2: c:= a * b;

3: if b=0 then ShowMessage (`На ноль делить нельзя!')

Else c:= a / b;

End;

If RadioGroup. ItemIndex <> 3 then Edit3. Text:= FloatToStrF (c, ffGeneral, 10, 4)

Else if b <> 0 then Edit3. Text:= FloatToStrF (c, ffGeneral, 10, 4);

End;

6. Сохраните и запустите приложение на выполнение.

7*. Самостоятельно исправьте код программы модуля, используя другой вариант оператора Case (составной оператор) и сохраните проект Calculator2, а модуль - mainCalc2.

Задание 2. Отредактируйте текст модуля приложения Calculator таким образом, чтобы перед выполнением вычислений выполнялась проверка: а) заданы ли значения операндов, если значения операндов не заданы, то следует вывести сообщения об этом в отдельном окне; б) запретить ввод любых символов, кроме цифр от 0 до 9 и знаков «-», «+».

Решение (а):

Поместите перед оператором присваивания A:=StrToInt (Edit1. Text); строку:

If (Edit1. Text <> `') and (Edit2. Text <> `') then begin

которая проверяет значения свойств Edit1.text и Edit2.text. Если эти значения не пусты, то выполняется вычисление арифметической операции, в противном случае управление передается на следующий фрагмент программы, который нужно вставить перед последним оператором end;

Else ShowMessage (`Не заданы значения');

Решение (б): Для реализации второй части задания необходимо создать обработчики событий OnKeyPress для компонентов Edit1, Edit2.

Примечание: параметр Key в обработчике этого события соответствует символу нажатой клавиши. При этом различаются символы в верхнем и нижнем регистрах и символы кириллицы латиницы. Клавиши, не имеющие соответствующих им кодов ASCII (Shift, Alt, Ctrl и функциональные клавиши), не вызывают этого события. Поэтому нажатие таких комбинаций клавиш, как, например, Shift+A, генерирует только одно событие OnKeyPress, при котором параметр Key равен «А». Для того чтобы распознавать подобные комбинации клавиш, следует использовать обработчики событий OnKeyDown, OnKeyUp.

1. Выделите на форме объект Edit1 и выберите в окне Инспектора объектов на странице Events (События) событие OnKeyPress. Дважды щелкните левой кнопкой мыши на пустом поле списка этого события. После этого курсор переместиться в окно Редактора кода и в разделе interface появится запись процедуры обработчика события:

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

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

If not (Key in [`0'.'9', `+', `- `]) then Key:= #0;

Действие оператора сводится к сравнению значения переменной Key с множеством значений от 0 до 9 и символов «+» и «-». Если символ нажатой клавиши не входит во множество, то Key присваивается значение нулевого символа (#0). Таким образом, в окне Edit1 будет отображаться текст, состоящий из цифр и знаков «+, -».

3. Аналогичным образом создайте процедуру обработки события компонента Edit2.

4. Сохраните приложение и запустите его на выполнение. Проверьте результат работы программы.

Текст модуля приложения имеет следующий вид:

unit mainCalc;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Edit3: TEdit;

Label3: TLabel;

RadioGroup1: TRadioGroup;

procedure Button1Click (Sender: TObject);

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

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

private {Private declarations}

public {Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1. Button1Click (Sender: TObject);

var a, b: integer; c: real;

begin

if (Edit1. Text<>'') and (Edit2. Text<>'') then begin

a:=StrToInt (Edit1. Text);

b:=StrToInt (Edit2. Text);

Edit3. Text:='';

case RadioGroup1. ItemIndex of

0: c:=a+b;

1: c:=a-b;

2: c:=a*b;

3: if b=0 then ShowMessage ('На ноль делить нельзя') else c:=a/b;

end;

if RadioGroup1. ItemIndex <> 3 then

Edit3. Text:=FloatToStrF (c, ffGeneral, 10,4) else if b<>0 then

Edit3. Text:=FloatToStrF (c, ffGeneral, 10,4); end

else ShowMessage ('Не заданы значения');

end;

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

begin

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

end;

procedure TForm1. Edit2KeyPress (Sender: TObject; var Key: Char);

begin

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

end; end.

Задание 3. Создайте приложение, предлагающее пользователю ввести строку, определяющее количество символов в ней и выводящее результат, согласуя окончание слова «символов» с числом символов.

Решение:

1. Создайте папку «Количество символов» и сохраните в ней проект «simvol».

2. Разместите на форме компоненты: Edit1, Label1,2, Button1, как показано на рис. 3.2. Задайте значения свойств Label1. Caption - «Введите текст», Label2. Caption - «В тексте», Button1. Caption - «Вычислить». Удалите текст Edit1 из соответствующего компонента.

Рис. 3.2 Пример формы проекта «Количество символов»

3. Для вычисления количества символов во введенной строке и вывода результата создайте процедуру обработчика события щелчка мышью на кнопке «Вычислить».

4. Введите в текст процедуры следующее описание переменных:

Var

N: integer;

S: string;

5. Введите текст тела процедуры обработки события:

Begin

N:= Length (Edit1. Text); {определить число символов}

Label2. Caption:= `В тексте';

If N>20 then N:=N mod 10; {выделить последнюю цифру}

Case N of

1: S:= `символ';

2..4: S:= `символа';

0, 5..20: S:= `символов';

End;

Label2. Caption:= Label2. Caption + IntToStr (Length(Edit1. Text)) + S;

End;

Примечание: функция Length - это функция обработки String переменных, определяет количество символов вводимой строки (см. раздел 1).

6. Сохраните проект и запустите программу на выполнение. Просмотрите результат программы, задавая текст с разным количеством символов и проверяя правильность вывода результатов работы.

Задание 4. Создайте приложение, которое предлагает ввести текст, а затем заменить символы «а» на «б» в тексте и подсчитать количество замен.

Решение:

1. Создайте папку «Замена символов» и сохраните в ней проект под названием «zamena», файл модуля сохраните как zmain.pas.

2. Форму приложения назовите «Подсчет и замена символов». На форме расположите три компонента Edit, три компонента Label, один компонент Button и два компонента CheckBox, как показано на рис. 3.3.

3. Задайте значения свойств: Label1. Caption - «Исходный текст на русском языке», Label2. Caption - «Измененный текст», Label3. Caption - «Число замен», Button1. Caption - «Выполнить», CheckBox1. Caption - «Подсчитать число замен», CheckBox2. Caption - «Заменить «а» на «б»». Удалите текст Edit1,2,3 из соответствующих компонентов.

Рис. 3.3 Пример формы проекта «Замена символов»

4. Для замены и подсчета символов запишите процедуру обработки события OnClick для кнопки «Выполнить». Введите следующее описание переменных:

Var

S: string;

N: byte;

Примечание: для поиска символа в строке используйте функцию Pos. Для программирования варианта замены символов используйте значение свойства Checked компонента CheckBox.

5. Тело процедуры может быть записано следующим образом:

Begin

N:= 0;

Edit3. Text:= `';

Edit2. Text:= `';

S:= Edit1. Text;

If CheckBox2. Checked then {если включен флажок}

While Pos (`a', S) > 0 do {если в строке найдена буква «а»}

Begin

N:= N + 1;

S [Pos (`a', S)]:= `б'; {заменить букву «а» на букву «б»}

End;

If CheckBox1. Checked then Edit3. Text:= IntToStr(N);

{вывод числа замен}

Edit2. Text:= S; {вывод измененного текста}

End;

6. Сохраните проект и запустите на выполнение.


Подобные документы

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

    лабораторная работа [13,3 K], добавлен 15.07.2009

  • Основные типы модулей, использующиеся в среде программирования Delphi 6. Концепция объектно-ориентированного программирования. Разработка эскизного и технического проектов программы. Алгоритм выполнения операций сложения, вычитания и умножения матриц.

    курсовая работа [559,1 K], добавлен 03.01.2011

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

    лабораторная работа [19,0 K], добавлен 15.07.2009

  • Создание приложения, создающего текстовый файл text1.txt и записывающего в него текст. Разработка приложения, открывающего текстовый файл для чтения и считывающего из него текст в окно Memo. Создание приложения, открывающего текстовый файл дополнения.

    лабораторная работа [15,8 K], добавлен 15.07.2009

  • Создание программы ввода с клавиатуры двух чисел в 9-ричной системе счисления размером с слово, выполнение над ними деления и вывода результата в исходной системе счисления. Программа предусматривает контроль вводимой информации и результат операции.

    лабораторная работа [11,3 K], добавлен 13.02.2009

  • Выполнение операции деления в ЭВМ. Умножение чисел, представленных в форме с плавающей запятой. Методы ускорения операции умножения. Матричный метод умножения. Деление чисел в машинах с плавающей запятой. Деление чисел с восстановлением остатков.

    реферат [49,4 K], добавлен 18.01.2011

  • Изучение инструментальной графической среды программирования промышленных контроллеров и языка программирования FBD. Разработка приложения, реализующего вычисление арифметических и логических выражений. Проверка работы приложения программой "Maple".

    контрольная работа [2,2 M], добавлен 26.05.2015

  • Разработка в среде Delphi приложения "Записная книжка" для ввода и корректировки информации, поиска данных. Выбор состава технических и программных средств. Текст программы, ее описание и тестирование. Основные условия программы, требования к компьютеру.

    курсовая работа [565,7 K], добавлен 08.12.2011

  • Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.

    курсовая работа [2,4 M], добавлен 27.08.2012

  • Изучение основ программирования и создание полноценного приложения в среде программирования Delphi. Разработка эскизного и технического проектов программы. Внедрение выполнения программы. Разработка рабочего проекта, спецификация и текст программы.

    курсовая работа [560,1 K], добавлен 18.07.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.