Лабораторные работы. 2 семестр
.pdfПрактическая работа № 17 «Вычисление процентов»
Цель работы - создать программу, выполняющую следующие действия: 1. После запуска программы в окне изображается три текстовых поля.
Рис. 37.
2.В первое поле вводится число. Во второе поле – проценты. При нажатии кнопки «Рассчитать» в третье поле выводятся вычисленные проценты от числа.
Рис. 38.
3.При нажатии кнопки «Очистить» очищаются значения полей. Далее вводятся новые значения в поля.
4.Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
Описание плана разработки программы
1.Открыть новый проект.
2.Разместить на форме экземпляры компонентов: командная кнопка Button, надпись Label, текстовое поле Edit.
3.Выполнить следующие действия:
|
|
|
Таблица 19. |
|
Выделенный |
Вкладка окна |
Имя свойства/ |
Действие |
|
объект |
Object Inspector |
имя события |
||
|
||||
Form1 |
Properties |
Caption |
Установка имени формы «Вычисление |
|
|
|
|
процентов» |
|
Label1 |
Properties |
Caption |
Введите название «Считаем проценты!» |
|
|
|
|
|
|
Edit1 |
Properties |
Text |
Очистить значение свойства |
|
|
|
|
|
|
Edit2 |
Properties |
Text |
Очистить значение свойства |
|
|
|
|
|
|
Edit3 |
Properties |
Text |
Очистить значение свойства |
|
|
|
|
|
|
Button1 |
Properties |
Caption |
Введите название «Рассчитать» |
|
|
|
|
|
|
|
Events |
OnClick |
Описать локальные Number, Procent, Prn |
|
|
|
|
|
53
|
|
|
Продолжение таблицы 19. |
|
Выделенный |
Вкладка окна |
Имя свойства/ |
Действие |
|
объект |
Object Inspector |
имя события |
||
|
||||
Button2 |
Properties |
Caption |
Введите название «Очистить» |
|
|
|
|
|
|
|
Events |
OnClick |
Edit1.Text:=''; |
|
|
|
|
Edit2.Text:=''; |
|
|
|
|
Edit3.Text:=''; |
4. Сохраните проект, запустите и протестируйте его.
Фрагмент программы
var
Number, Procent, Prn: Real;
procedure TForm1.Button1Click(Sender: TObject); begin
Number:=StrToFloat(Edit1.Text);
Procent:= StrToFloat(Edit2.Text); PrN:=0.01*Procent*Number; Edit3.Text:=FloatToStr(PrN);
end;
procedure TForm1.Button2Click(Sender: TObject); begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
end;
54
Практическая работа № 18 «Головоломка №1»
Цель работы - создать компьютерную версию одной из головоломок Самуэля Ллойда: из заданного набора чисел надо выбрать те, сумма которых составит 50. Числа, которые избрал Ллойд для своей головоломки: 25, 27, 3, 12, 6, 15, 9, 30, 21, 19.
Рис. 39.
Выполнить следующие действия:
1.После запуска программы в окне изображается список чисел Ллойда.
2.Выбираем с помощью флажков числа и помещаем в правое окно.
3.Сумма выбранных чисел представлена в виде надписи.
4.Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
Описание плана разработки программы
1.Открыть новый проект.
2.Разместить на форме экземпляры компонентов: список флажков CheckListBox, надпись Label, список ListBox.
3.Выполнить следующие действия:
Таблица 20.
Выделенный объект |
Вкладка окна |
Имя свойства/ |
Действие |
Object Inspector |
имя события |
||
Form1 |
Properties |
Caption |
Установка имени формы |
|
|
|
«Головоломка» |
|
|
BorderStyle |
Задайте значение bsSingle |
CheckListBox1 |
Properties |
Items |
Задаем состав списка. Щелкнуть на |
(Вкладка Additional ) |
|
|
кнопке построителя. Откроется окно |
|
|
|
String List editor (Редактор списка |
|
|
|
строк). Введите в список заданные |
|
|
|
числа через Enter. Нажмите кнопку OK. |
|
|
Height |
Подобрать значение так, что все числа |
|
|
|
поместились в список (без полос |
|
|
|
прокруток). |
|
Events |
OnClickCheck |
Описать очистку списка. Проверить, |
|
|
|
установлен флажок или нет. После |
|
|
|
обновления списка необходимо |
|
|
|
подсчитать сумму выбранных чисел. |
|
|
|
Элементы списка выглядят как числа, |
|
|
|
но являются текстовыми строками |
|
|
|
(воспользоваться функцией StrToInt). |
55
|
|
|
Продолжение таблицы 20. |
Выделенный объект |
Вкладка окна |
Имя свойства/ |
Действие |
Object Inspector |
имя события |
||
ListBox1 |
Properties |
Height |
Подобрать значение так, что все числа |
(Вкладка Standard) |
|
|
поместились в список (без полос |
|
|
|
прокруток). Первоначально список |
|
|
|
пуст. Заполняться он будет при работе |
|
|
|
программы. |
Label1 |
Properties |
Caption |
Введите текст: «Сумма: 0» |
(Вкладка Standard) |
|
Autosize |
Задайте значение False |
|
|
Alignment |
Задайте значение taCenter |
4. Сохраните проект, запустите и протестируйте его.
Листинг подпрограммы
procedure TForm1.CheckListBox1ClickCheck (Sender: TObject); var i, s: Integer;
begin
ListBox1.Clear;
for i: = 0 to CheckListBox1.Items.Count-1 do if CheckListBox1.Checked[i] then
ListBox1.Items.Add (CheckListBox1.Items[i]); s := 0;
for i := 0 to ListBox1.Items.Count -1 do s := s + StrToInt(ListBox1.Items[i]);
Label1.Caption := ‘Сумма: ’ + IntToStr(s); if s = 50 then
begin
Label1.Caption := ‘Сумма:’ + IntToStr (s); CheckListBox1.Enabled := False; ListBox1.Enabled := False;
end;
end;
56
Практическая работа № 19 «Головоломка № 2»
Цель работы - создать компьютерную версию головоломки: из изображенных пяти сброшенных флажков установить все. Но при выборе одного флажка меняется состояние двух следующих.
Рис. 40.
Создать программу, выполняющую следующие действия:
1.После запуска программы в окне изображаются пять сброшенных флажков.
2.Щелкать разрешено только на сброшенных флажках. Щелчок на установленном флажке не действует.
3.При установке какого-то флажка меняется состояние двух следующих флажков. При этом сброшенные флажки устанавливаются, а установленные - сбрасываются.
4.Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
Описание плана разработки программы
1.Открыть новый проект.
2.Разместить на форме экземпляры компонентов: список флажков CheckBox, надпись Label.
3.Выполнить следующие действия:
|
|
|
Таблица 21. |
Выделенный объект |
Вкладка окна |
Имя свойства/ |
Действие |
Object Inspector |
имя события |
||
Form1 |
Properties |
Caption |
Установка имени формы «Все пять» |
|
Events |
OnCreate |
Создать глобальную логическую |
|
|
|
переменную s. В то время, когда идет |
|
|
|
обработка события, переменная имеет |
|
|
|
значение True (да). |
CheckBox1 |
Properties |
Caption |
Задать значение «1». |
(Вкладка Standard) |
Events |
OnClick |
Необходимо работать с флажками, как с |
|
|
|
массивом. Форма является контейнером |
|
|
|
для флажков. У объектов-контейнеров |
|
|
|
имеется свойство Controls (Элементы |
|
|
|
управления) – массив элементов |
|
|
|
управления, находящихся в данном |
|
|
|
контейнере: Controls [i] as TCheckBox. |
Для создания еще пяти флажков можно использовать метод копирования через буфер обмена. |
|||
CheckBox2 |
Properties |
Caption |
Задать значение «2». |
CheckBox3 |
Properties |
Caption |
Задать значение «3». |
CheckBox4 |
Properties |
Caption |
Задать значение «4». |
CheckBox5 |
Properties |
Caption |
Задать значение «5». |
57
|
|
|
Продолжение таблицы 21. |
Выделенный объект |
Вкладка окна |
Имя свойства/ |
Действие |
Object Inspector |
имя события |
||
Label1 |
Properties |
Caption |
Введите текст: «Сумма: 0» |
(Вкладка Standard) |
|
Autosize |
Задайте значение False |
|
|
Alignment |
Задайте значение taCenter |
4. Сохраните проект, запустите и протестируйте его.
Листинг подпрограммы
procedure TForm1.FormCreate (Sender: TObject); begin
s := False; end;
procedure TForm1.CheckBox1Click (Sender: TObject); var Index, i, num : Integer;
e: Boolean; begin
if s then Exit; {Если программа снова вызовет процедуру обработки, будет выполнен оператор Exit – немедленный выход из процедуры}
s := True;
for Index: = 0 to 4 do {Оператор break прерывает выполнение цикла}
if Sender = Controls[i] then break; {Определяется, какой флажок был переключен} {Когда выполнение цикла завершается, значение переменной Index соответствует переключенному флажку}
{Если значение свойства Checked (Установлен) равно False (Нет), флажок сброшен, а если True (Да) – установлен. Номер флажка в массиве определяется переменной Index}
if not (Controls[Index] as TCheckBox).Checked
then (Controls[Index] as TCheckBox).Checked := True {Условие выполнено, если флажок сейчас сброшен, т.е. до щелчка он был установлен}
else {Программирование изменения состояния «дополнительных флажков». Текущий флажок уже переключен}
begin
num := Index + 1; {Переключение двух следующих флажков}
if Index = 4 then num := 0; {Изменение состояния нулевого флажка} {Состояние флажка надо поменять на противоположное}
(Controls[num] as TCheckBox).Checked := not (Controls[num] as CheckBox).Checked; {Выполнение проверки на выход за пределы массива}
num := num + 1; if Index = 3 then num := 0;
(Controls[num] as TCheckBox).Checked := not (Controls[num] as CheckBox).Checked; end;
e := True; {Головоломка решена, если установлены все пять флажков} for i := 0 to 4 do
e := e and (Controls[i] as TCheckBox).Checked;
{После цикла значение останется равным True, если все флажки установлены} if e then {Головоломка решена}
for i := 0 to 4 do begin
(Controls[i] as TCheckBox).Caption := ‘Победа!’;
(Controls[i] as TCheckBox).Enabled := False; {Отключение флажков} end;
s := False; end;
58
Практическая работа № 20 «Обычный калькулятор»
Цель работы - создать программу, выполняющую действия обычного калькулятора.
Описание плана разработки программы
1.Открыть новый проект.
2.Разместить на форме экземпляры компонентов: Label, Edit, Button.
Рис. 41.
3. Сохраните проект, запустите и протестируйте его.
Листинг подпрограммы
procedure TForm1.FormCreate(Sender: TObject); begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := ''; end;
procedure TForm1.Button5Click(Sender: TObject); begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := ''; end;
procedure TForm1.Button6Click(Sender: TObject); begin
close; end;
procedure TForm1.Button1Click(Sender: TObject); begin
a := StrToFloat (Edit1.Text);
b := StrToFloat (Edit2.Text); c := a + b;
Edit3.Text := FloatToStr (c); end;
procedure TForm1.Button2Click(Sender: TObject);
59
begin
a := StrToFloat (Edit1.Text); b := StrToFloat (Edit2.Text); c := a - b;
Edit3.Text := FloatToStr (c); end;
procedure TForm1.Button3Click(Sender: TObject); begin
a := StrToFloat (Edit1.Text);
b := StrToFloat (Edit2.Text); c := a * b;
Edit3.Text := FloatToStr (c); end;
procedure TForm1.Button4Click(Sender: TObject); begin
a := StrToFloat (Edit1.Text);
b := StrToFloat (Edit2.Text);
if b = 0 then Edit3.Text := 'division by zero' else
begin
c := a / b;
Edit3.Text := FloatToStr (c); end;
end;
Задание для самостоятельного выполнения
1.Создать программу, выполняющую действия простого инженерного калькулятора.
Рис. 42.
Фрагмент подпрограммы (для вычисления функции Cos(x)) if Edit1.Text <> '' then
begin
a := StrToFloat (Edit1.Text); c := cos (a);
end;
if Edit2.Text <> '' then
60
begin
b := StrToFloat (Edit2.Text); c := cos (b);
end; Edit3.Text := FloatToStr (c);
Добавить на форму кнопки для вычисления функций Tg(x), Log ab.
2.Создать программу, выполняющую перевод чисел из десятичной системы счисления в двоичную систему и обратно.
Рис. 43.
61
Практическая работа № 21 «Строковый калькулятор»
Цель работы - создать программу, выполняющую действия строкового калькулятора.
Рис. 44.
Описание плана разработки программы
1.Открыть новый проект.
2.Разместить на форме экземпляры компонентов: Edit, Label, Button.
Фрагмент программы
procedure TForm1.Button2Click(Sender: TObject); begin
s:=Edit1.Text;
k:=StrToInt(Edit2.Text);
t:=StrToInt(Edit3.text);
Delete(s,k,t);
Edit10.Text:=s;
end;
procedure TForm1.Button3Click(Sender: TObject); begin
s:=Edit1.Text;
q:=StrToInt(Edit4.Text);
w:=Edit5.Text;
Insert(w,s,q);
edit11.Text:=s;
end;
procedure TForm1.Button4Click(Sender: TObject); begin
s:=Edit1.Text;
p:=StrToInt(Edit6.Text);
l:=StrToInt(Edit7.Text);
62