Практическая работа «Простые вычисления»
Задание 1. Ввести с клавиатуры координаты двух точек (A и B) на плоскости (вещественные числа). Вычислить длину отрезка AB. Пример:
Введите координаты точки A:
5.5 3.5
Введите координаты точки B:
1.5 2
Длина отрезка AB = 4.272
Общий вид проекта
[pic]
Примечание
Необходимо преобразовать строковый тип (те, данные которые вводим в поля edit) в действительное число.
При выводе данных в поле edit необходимо выполнить обратное преобразование действительного числа в строковый тип.
Количество знаков после запятой можно изменять, используя следующую запись: FormatFloat('0.0',x);где х – вычисляемая величина
Прописать событие для кнопки Очистить (при нажатии на кнопку Очистить поля edit очищаются от данных и можно произвести расчет повторно). Очистить – Clear (очищаем поля edit!!!).
При закрытии формы должно выходить сообщение: Вы собираетесь закрыть программу! Присутствуют кнопки: Yes, NO,Cancel.
[pic]
Контрольные вопросы
Какие объекты используются в проекте?
Преобразование строкового типа в число и обратное преобразование.
Каким образом изменить количество знаков после запятой (запишите строку из программы)
Как прописать событие для кнопки Очистить?
Какой тип переменных используется в программе? Почему?
Задание 2. Получить случайное трехзначное число и вывести через запятую его отдельные цифры. Пример:
Получено число 872.
Его цифры 8, 7, 2.
Общий вид проекта [pic]
План работы над проектом:
Создать новый проект и сохранить его в отдельной папке.
Разместить на форме необходимые компоненты.
Прописать код для события (кнопка Расчет):
вызов датчика случайных чисел random(x)
например, random(900) генерирует случайное число от 0 до 899. Если прибавить к нему 100, то получится диапазон от 100 до 999 включительно, т. е. данный интервал будет охватывать все трехзначные числа.
Необходимо преобразовать действительное число (трехзначное случайное число) в строковый тип.
Получить цифры числа:
Чтобы извлечь из числа цифру сотен надо его разделить нацело на 100.
Для получения цифры десятка можно сначала разделить нацело на 10, а затем найти остаток от деления на 10.
Единицы извлекаются путем нахождения остатка от деления числа на 10.
При выводе данных (цифр числа) в поля edit необходимо выполнить преобразование действительного числа в строковый тип.
На форме присутствует кнопка Закрыть - объект BitBtn1(вкладка Additional). Данный объект (кнопку) можно запрограммировать на выход из программы, используя свойство Kind.
Контрольные вопросы
Какие объекты используются в проекте?
В проекте используется целый (integer) тип переменных. Почему нельзя использовать вещественный (real) тип?
Почему необходимо преобразовать действительное число (трехзначное случайное число) в строковый тип? И при выводе данных (цифр числа) в поля edit также необходимо выполнить преобразование действительного числа в строковый тип?
В чем отличие объекта BitBtn от объекта Button?
Сравните решение задач в программной среде ПаскальАВС с решением задач в программной среде Lazarus. Сделайте вывод: в какой среде удобнее, нагляднее, легче… работать над созданием программы.
Источники: Информатика. Углубленный уровень: учебник для 10 (11)11 класса: в 2 ч./К. Ю. Поляков, Е. А. Еремин. – М. БИНОМ. Лаборатория знаний, 2013.
[link] Программный код задачи № 1.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
x1,x2,y1,y2, ab: real;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
x1:= StrToFloat(Edit1.text);
x2:= StrToFloat(Edit2.text);
y1:= StrToFloat(Edit3.text);
y2:=StrToFloat(Edit4.text);
ab:=( sqrt((sqr(x1-x2)) + (sqr(y1-y2))));
edit5.caption := FloatToStrF(ab,ffFixed,4,3);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
end;
end.
Программный код задачи № 2.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
a: integer;
b,c,d:integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=random(900)+100;
edit1.caption:= IntToStr(a);
b:=a div 100;
c:=(a div 10)mod 10;
d:= a mod 10;
edit2.caption:=IntToStr (d);
edit3.caption:=IntToStr (c);
edit4.caption:=IntToStr (b);
end;
end.