Контрольная работа по предмету "Информатика"


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

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


На тему: «Знакомство с компонентами
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. Разместите на форме компонент RadioGroup
1
из палитры 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 (составной оператор) и сохраните проект Calculator
2,
а модуль – mainCalc
2.


Задание 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


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


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
(
Edit
1.
Text
);
{определить число символов}


Label
2.
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);


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


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


End
;


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



Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :