Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi.doc
Скачиваний:
29
Добавлен:
28.04.2019
Размер:
407.55 Кб
Скачать

Практическая работа Delphi_10

Цель: Создать программу, выполняющую следующие действия: вводится ваш рост и фактический вес, а после нажатия кнопки «Расчет», вы можете определить, худой вы или полный и на сколько вам надо поправиться или похудеть.

План разработки программы

Пусть оптимальный вес человека определяется как рост минус 100 см. Если фактический вес человека меньше оптимального, то будем считать его худым, если больше, то полным. Новым в этой работе является: использование типов переменных — целочисленного и действительного (integer и real); преобразование строковых данных в числовые и числовых в строковые: с помощью функций StrToInt; StrToFloat; IntToStr; FloatToStr; Format(); обработка исключительных ситуаций с помощью оператора Try — except — end; использование процедуры ShowMessage для вывода сообщения в отдельном окне.

1. Открыть новый проект.

2. Разместить на форме экземпляры компонентов, которые сочтете нужными для решения задачи. В одном поле надо вводить вес в килограммах, а в другом — рост в сантиметрах.

3. Сохранить код программы и проект под именами, например, unit5.pas и pr5.dpr.

4. Ввести в раздел VAR переменные для сохранения значений: фактического веса (faktW), оптимального веса (optW), роста (Rost),разницы между оптимальным весом и фактическим (Delta). Вначале будем считать, что все данные у нас целые числа: var factW, optW, Rost, Delta : integer;

5. Создать процедуру, реагирующую на щелчок на кнопке Button1, и заполнить ее следующим кодом:

Выделенный объект

Вкладка окна Object Inspector

Имя

события

Действие

Button1

Events

OnClick

factW := StrToInt(Edit1.text);

Rost := StrToInt(Edit2.Text);

OptW :=Rost - 100;

Delta := abs(factW - optW);

if optW = factW

then Label3.Caption:= 'Ваш вес идеален!'

else

if optW > factW

then Label3.Caption:=

'Вам надо поправиться на '+IntToStr(Delta)+' кг.'

else Label3.Caption := 'Вам надо

похудеть на '+IntToStr(Delta)+' кг.'

Пояснение. Функция StrToInt преобразует строку в целое число, функция IntToStr выполняет обратное действие — целое число преобразует в строку.

6. Сохранить код программы и проект под именами, например, pr_5.pas и pr_5.dpr.

7. Усовершенствовать программу так, чтобы можно было вводить любые десятичные величины. Для этого необходимо использовать вещественный тип переменных Real: var factW, optW, Rost, Delta : real;

Преобразование действительных чисел в строки и строк в действительные числа выполняется с помощью функций FloatToStr и StrToFloat. Внести соответствующие изменения в обработку события OnClick компонента Button1.

8. Сохранить проект, запустить и протестировать его.

Задание для самостоятельного выполнения

1. Для форматирования и преобразования действительных чисел вместо функции FloatToStr() применить функцию Format(' %f ' .[переменная]). Например: Format(' %f ', [Delta]).

2. Для форматирования и преобразования применить эту же функцию в виде: Format(' Строка %f '.[переменная]).

Например: Format(' Вам надо похудеть %f ',[Delta]) .

3. Усовершенствовать проект:

а) сделать к программе заголовок;

б) сделать шрифт выводимой реплики отличным от стандартного по виду, цвету и размеру;

в) вставить кнопку выхода из программы;

г) предусмотреть возможность повторного запуска программы.

4. Сделать так, чтобы в начале программы объекты Label2 и Edit2 были не видны и появлялись бы на экране только после того, как будет введен вес.

Подсказка. Свойству Visible нужно присвоить значение False.

5. В случае преобразования строкового типа в числовой может возникнуть ошибка, если ввести недопустимые символы. Если функции StrToInt или StrToFloat обнаруживают ошибку в записи числа, они инициируют так называемую исключительную ситуацию (исключение), которая обычно приводит к аварийному завершению работы программы.

Обработчик исключений строится в виде таких конструкций:

try

<защищенный блок операторов>

except

<обработка исключений>

end;

Если при выполнении операторов из защищенного блока возникнет исключение, управление будет передано в блок операторов, располагающийся между операторами except и end, но, если ошибка не возникает, блок обработки исключений игнорируется и управление передается оператору, следующему за оператором end.

Пример использования обработки исключений для процедуры Edit1Key Pressed может выглядеть так:

try

FactW:= StrToInt(Editl.Text) ;

except

ShowMessage('Ошибочная запись числа: ' + Edit1.Text);

Edit1.SetFocus ;

Exit;

end;

В результате выполнения оператора FactW:=StrToInt (Edit1.Text) на экране появляется окно с текстовым сообщением и кнопкой ОК. После этого работа программы приостанавливается в ожидании реакции пользователя. При вызове стандартной процедуры Exit активизируется редактор для исправления ранее введенного ошибочного текста.

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

Примечание. При работе в среде Delphi эксперименты с исключениями плохо прослеживаются, так как при каждом исключении среда «перехватывает» управление программой. Для отмены этого необходимо, выбрав команду Tools, Debegger Options, Language Exceptions, снять флажок Stop on Delphi Exceptions.

6. Изменить алгоритм расчета с учетом индекса массы тела.

Вес: X;

Pост: Y;

индекс массы тела: А = X/Y2 (кг/м2).

Результат определяется по таблице:

Значение индекса

Результат (сообщение, которое надо вывести)

1

А < 18

Большой недовес

2

18  А < 20

Маловато и небезопасно, можно получить истощение

3

20  А  25

Идеально

4

26  А  30

Легкий перебор

5

30 < А

Срочно нужно худеть

7. Сохранить и оттестировать программу и затем записать текст программы Unit1.pas в тетрадь.