ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 70
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Дополнительное задание
-
Сделать кнопки "Да" и "Нет" доступными только после ввода имени и нажатия клавиши Enter. Подсказка. Значение свойства Enabled кнопок "Да" и "Нет" установить равным False, а в процедуру Edit1KeyPress включить код
Button1.Enabled:=true;
Button2.Enabled:=true;
-
Удалить имена объектов Edit1, Label2, Label3 для обеспечения возможности повторить диалог. Подсказка. Разместить на форме еще одну кнопку BitBtn. Установить значение bkRetry свойства Kind и значение "Повторить" свойства Caption. Ввести программно по нажатию кнопки "Повторить" пустые строки вместо надписей и имен кнопок:
Label2.Caption:=' ';
Label3.Caption:=' ';
Edit1.Text:=' ';
-
Сделать так, чтобы при повторении диалога строка ввода была снова активной. Подсказка. Ввести команду
Form1.ActiveControl:=Edit1;
Практическая работа 4. Разработка проекта «Ваш вес»
П остановка задачи. Пусть оптимальный вес человека определяется как рост минус 100 см. Если фактический вес человека меньше оптимального, то будем считать его худым, если больше, то полным.
Создать программу, выполняющую следующие действия.
Введя свой рост и фактический вес и нажав кнопку «Расчет», учащийся может определить, худой он или полный и на сколько надо поправиться или похудеть (рис. 12).
Пояснение. Новым в этой работе является:
использование типов переменных — целочисленного и действительного (integer и real);
преобразование строковых данных в числовые и числовых в строковые: с помощью функцийStrToInt; StrToFloat; IntToStr FloatToStr ; Format();
обработка исключительных ситуаций с помощью оператора Try - except - end;
использование процедуры ShowMessage для вывода сообщения в отдельном окне.
План разработки программы
Открыть новый проект.
Разместить на форме экземпляры компонентов в соответствии с рис. 13. В поле Editl будем вводить вес в килограммах, а в Edit2 - рост в сантиметрах.
Сохранить код программы и проект под именами, например, unit5.pas и pr5.dpr.
Ввести в раздел VAR переменные для сохранения значений:
фактического веса (faktW), оптимального веса (optW),
роста (Rost),
разницы между оптимальным весом и фактическим (Delta). Вначале будем считать, что все данные у нас целые числа:
var
factW, optW, Rost, Delta : integer;
Создать процедуру, реагирующую на щелчок на кнопке Buttonl, и заполнить ее следующим кодом:
Выделенный объект | Вкладка окна Object Inspector | Имя события | Действие |
Buttonl | Events | OnClick | factW := StrToInt (Editl. 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выполняет обратное действие — целое число преобразует в строку,
-
Сохранить код программы и проект под именами, например, pr-5.pas и pr-5.dpr. -
Усовершенствовать программу так, чтобы можно было вводить любые десятичные величины. Для этого необходимо использовать вещественный тип переменных Real:
var
factW, optW, Rost, Delta : real;
Преобразование действительных чисел в строки и строк в действительные числа выполняется с помощью функций FloatToStrи StrToFloat. Внести соответствующие изменения в обработку события OnClick компонента Buttonl.
8. Сохранить проект, запустить и протестировать его.
Задание для самостоятельного выполнения
1. Для форматирования и преобразования действительных чисел вместо функции FloatToStr() применить функцию Format('%f'.[переменная]).
Например: Format('%f ', [Delta]).
2. Для форматирования и преобразования применить эту же функцию в виде: Format('Строка %f, [переменная]).
Например: Format('Baм надо похудеть %f',[Delta]) .
3. Усовершенствовать проект:
а) сделать к программе заголовок;
б) сделать шрифт выводимой реплики отличным от стандартного по виду, цвету и размеру;
в) вставить кнопку выхода из программы;
г) предусмотреть возможность повторного запуска программы (см. проект «Диалог»),
4. Сделать так, чтобы в начале программы объекты Label2 и Edit2 были не видны и появлялись бы на экране только после того, как будет введен вес.
Подсказка. Свойству Visible нужно присвоить значение False.
-
В случае преобразования строкового типа в числовой может возникнуть ошибка, если ввести недопустимые символы. Если функции StrToIntили StrToFloatобнаруживают ошибку в записи числа, они инициируют так называемую исключительную ситуацию (исключение), которая обычно приводит к аварийному завершению работы программы.
Обработчик исключений строится в виде таких конструкций:
try
<защищенный блок операторов> except
<обработка исключений> end;
Если при выполнении операторов из защищенного блока возникнет исключение, управление будет передано в блок операторов, располагающийся между операторами
except и end, но, если ошибка не возникает, блок обработки исключений игнорируется и управление передается оператору, следующему за оператором end.
Пример использования обработки исключений для процедуры EditlKeyPressedможет выглядеть так:
Try
FactW:=StrToInt(Edit1.text);
Except
ShowMessage(‘ Ошибочная запись числа:’+ edit1.text);
Edit1.SetFocus;
Edit;
End;
В результате выполнения оператора FactW: =StrToInt (Editl.Text) на экране появляется окно с текстовым сообщением и кнопкой ОК. После этого работа программы приостанавливается в ожидании реакции пользователя. При вызове стандартной процедуры Exitактивизируется редактор для исправления ранее введенного ошибочного текста.
Внести необходимые изменения для обработки исключительных ситуаций, возникающих при вводе чисел.
Примечание. При работе в среде Delphi эксперименты с исключениями плохо прослеживаются, так как при каждом исключении среда «перехватывает» управление программой. Для отмены этого необходимо, выбрав команду Tools, Debegger Options, Language Exceptions, снять флажок Stop on Delphi Exceptions.
-
Изменить алгоритм расчета с учетом индекса массы тела.
Вес: X;
рост: У;
индекс массы тела: А = Х/У2 (кг/м2). Результат определяется по таблице:
№п/п | Значение индекса | Результат (сообщение, которое надо вывести) |
1 | А<18 | Большой недовес |
2 | 18 < А < 20 | Маловато и небезопасно, можно получить истощение |
3 | 20 < А < 25 | Идеально |
4 | 26 < А < 30 | Легкий перебор |
5 | 30 < А | Срочно нужно худеть |
Листинг программы
unit Unit5; interface
private
{ Private declarations } public
{ Public declarations }
end; var
Forml: TForml; implementation {$R *.DFM)
procedure TForml. ButtonlClick (Sender: TObject); var
A, factW,optW, Rost, Delta :Real; begin try
factW : =StrToFloat (Editl . Text) ; except
ShowMessage {'Ошибочная запись числа: ' +Editl . Text) ; Editl.
end; try
Rost : =StrToFloat (Edit2 . Text) ; except
ShowMessage (' Ошибочная запись числа: ' +Edit2 . Text) ;
Edit2.SetFocus;
Exit; end;
OptW:=Rost-100; Delta:=abs(factW-OptW) ; if OptW=factW then
Label3. Caption :=' Ваш вес идеален' else if optW>FactW then
Label3.Caption:=Format{' Вам надо поправиться на %f кг.' , [Delta]) else
Label3. Caption :=Format (' Вам надо похудеть на %f кг .', [Delta] );
A:-(factW*10000)/(Rost*Rost) ;
if A<18 then ShowMessage (' Жуткий недовес') else
if (A>=18) and (A<20) then ShowMessage ( ' Маловато и небезопасно,
можно получить истощение') else
if (A>=20) and (A<=25) then ShowMessage (' Идеально ') else
if (A>=25) and (A<=30) then ShowMessage ('Легкий перебор' ) else _ ••
if (A>30) then ShowMessage ('Срочно нужно худеть'); end;
procedure TForml. BitBtn2Click (Sender: TObject); begin
Edit2.Text:=" ;
Editl. SetFocus;
Label3 . Caption : =' ' ;
Label2 . Visible : =false ;
Edit2 .Visible : «false ; end;
procedure TForml. EditlChange (Sender: TObject); begin .
Edit2 . Visible : =true ;
Label2. Visible : =true ; end; end.
Практическая работа 5. Разработка проекта «Тест по физике»
Постановка задачи. Создать программу, выполняющую следующие действия.
П осле запуска программы появляется изображение, аналогичное рис. Пользователь, перемещаясь с помощью клавиш-стрелок по списку «Физическая величина», выбирает любое слово, нажав клавишу Enter