unit wtest;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit; // поле ввода веса
Edit2: TEdit; // поле ввода роста
Button1: TButton; // кнопка "Вычислить"
Label3: TLabel; // поле вывода сообщения - рез-та работы программыprocedure Button1Click(Sender: TObject);
private{ Private declarations }public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
w: real; { вес }
h: real; { рост }
opt: real; { оптимальный вес }
d: real; { отклонение от оптимального веса }begin
w := StrToFloat(Edit1.text);
h := StrToInt(Edit2.Text);
opt := h - 100;
if w = opt
then
Label3.caption := 'Ваш вес оптимален !'
elseif w < opt
thenbegin
d := opt - w;
Label3.caption := 'Вам надо поправиться, на '
+ FloatTostr(d) + 'кг.';
endelsebegin
d := w - opt;
Label3.caption := 'Надо немного похудеть, на '
+ FloatTostr(d) + ' кг.';
end;
end;
end.
Программа с пользовательским интерфейсом!
Вот разбивка того, что код делает:
Программа имеет форму с двумя текстовыми полями (Edit1 и Edit2) для ввода веса и роста соответственно.
Есть также кнопка (Button1) которая запускает расчет при клике.
Когда кнопка нажата, программа рассчитывает идеальный вес на основе введенного пользователем роста (минус 100, что похоже на произвольное значение).
Затем программа сравнивает рассчитанный идеальный вес с введенным пользователем весом и отображает сообщение в Label3, указывая, является ли вес оптимальным, слишком низким или слишком высоким.
Вот некоторые предложения по улучшению:
Обработка ошибок: В настоящее время, если пользователь вводит недопустимые данные (например, нечисловые значения), программа будет крашиться. Рекомендуется добавить обработку ошибок для таких случаев.
Конверсии единиц измерения: Расчет использует сантиметры как единицу измерения роста. Возможно, вам хотелось бы позволить пользователям вводить свой рост в футах или метрах и внутренне конвертировать его.
Более информативные сообщения: вместо простого сообщения "Вам надо поправиться", вы могли бы предоставить более контекстное описание рекомендованного диапазона веса (например, на основе индекса массы тела).
Организация кода: процедура Button1Click является слишком длинной и выполняет несколько задач. Рекомендуется разбить ее на отдельные процедуры для каждого задания (например, расчет идеального веса, сравнение с введенным пользователем, отображение результатов).
Типирование: в Delphi вы можете использовать типирование для улучшения читаемости кода. Например, вместо w: real вы могли бы написать w: Float или w: Single.
Вот обновленная версия с некоторыми из этих предложений реализованными:
procedureTForm1.Button1Click(Sender:TObject);varw:Float;h:Float;idealWeight:Float;deviation:Float;beginw:=StrToFloat(Edit1.Text);h:=StrToInt(Edit2.Text);// Calculate ideal weight (assuming cm for height)idealWeight:=h-100;ifw=idealWeightthenLabel3.Caption:='Your weight is optimal!'elseifw<idealWeightthenbegindeviation:=idealWeight-w;Label3.Caption:='You need to gain weight by '+FloatToStr(deviation)+' kg.';endelsebegindeviation:=w-idealWeight;Label3.Caption:='You should lose weight by '+FloatToStr(deviation)+' kg.';end;end;
Если у вас есть вопросы или вам нужна дополнительная помощь, пожалуйста, не стесняйтесь задать их!
Статья описывает программу на языке Паскаль, которая рассчитывает оптимальный вес человека в зависимости от его роста и выводит результат сравнения с фактическим весом.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.