Практическая работа №5, ВАШ ВЕС
Постановка задачи
Пусть оптимальный вес человека определяется как рост минус 100см. Если фактический вес человека меньше оптимального, то будем считать его худым, если больше, то полным.
Создать программу, выполняющую следующие действия.
|
Новым в этой работе являются:
- использование типов переменных - целочисленного и действительного (Int и Float);
- преобразование строковых данных в числовой тип и числовые в строковые с помощью функций Convert.ToInt32, Convert.ToString(), Convert.ToDouble();
- использование процедуры MessageBox для вывода сообщения в отдельном окне.
План разработки программы
1. Откройте новый проект.
2. Разместите в форме экземпляры компонентов в соответствии с рис.12. В поле textBox1 будем вводить вес в килограммах, а в textBox2 – рост в сантиметрах.
3. Сохраните код программы и проект
4. Для сохранения результатов расчета введем переменные:
faktW – фактический вес, optW – оптимальный вес,
Rost – рост, Delta – разница между оптимальным весом и фактическим.
В начале будем считать, что все данные у нас целые числа.
Поскольку эти переменные нужны нам только для работы с одной кнопкой, то объявим их в блоки этой кнопки. Для этого в событие Click кнопки button1 объявим переменные:
Примечание: если бы переменные нужны были бы в нескольких функциях, то мы бы их объявили просто в классе, чтобы они были доступны для всех функций класса.
5. Выполните следующие действия:
Выделенный объект | Вкладка окна Свойство объектов | Имя свойства/ Имя события | Значение/Действие |
Label1 | Свойства | Text | Введите вес |
Label2 | Свойства | Text | Введите рост |
Label3 | Свойства | Text | Удалить название объекта |
Edit1 | Свойства | Text | Удалить название объекта |
События | KeyPress | if (e.KeyChar == (char)Keys.Enter) textBox2.Focus(); Комментарий Делает активным объект textbox2, т.е. после нажатие на Enter фокус перейдет в окно ввода textbox2. | |
Edit2 | Свойства | Text | Удалить название объекта |
События | KeyPress | if (e.KeyChar == (char)Keys.Enter) button1.Focus(); Комментарий Перемещает курсор на объект Button1. | |
Button1 | События | Click | factW = int.Parse(textBox1.Text); Rost = int.Parse(textBox2.Text); optW = Rost - 100; Delta = Math.Abs(factW - optW); if (optW == factW) label3.Text = "Ваш вес идеален"; else if (optW > factW) label3.Text = "Вам надо поправиться на " + Delta + " кг. "; else label3.Text = "Вам надо похудеть на " + Delta + " кг."; |
Комментарий
a) Компонента textbox содержит информацию строкового типа, поэтому нам необходимо для выполнения вычислений перевести ее в числовой вид. Но при этом компонент label может выводить числа и поэтому обратный перевод не обязателен.
Функция Convert.ToInt32() преобразует строку символов в целое число, функция Convert.ToString() выполняет обратное действие – целое число преобразует в строку символов.
6. Сохраните проект, запустите и протестируйте его.
7. Усовершенствуйте программу так, чтобы можно было вводить любые десятичные величины. Для этого необходимо использовать вещественный тип переменных float:
float factW, optW, Rost, Delta;
Примечание: для того чтобы перевести строковый тип обратно в числовой с плавающей запятой нeжна фунцкия Convert.ToDouble
Внесите соответствующие изменения в обработку события Click компонента Button1.
8. Сохраните проект окончательно, запустите и протестируйте его.
Задание для самостоятельного выполнения
1. Усовершенствуйте проект:
- сделайте к программе заголовок,
- сделайте шрифт выводимой реплики отличным от стандартного по виду, цвету и размеру,
- вставьте кнопку выхода из программы,
- предусмотрите возможность повторного запуска программы (см. Проект «Диалог»).
2. Сделайте так, чтобы в начале программы и после повторного запуска объект Button1 был не доступен и только после того, как будет введен вес, появлялась возможность нажать на кнопку «Расчет».
Подсказка. Изменение свойства доступности компонента для пользователя – Enabled. Если свойство имеет значение True, то компонент доступен, а если значение False, то – не доступен (см. проект «Диалог»).
3. Сделайте так, чтобы в начале программы и после повторного запуска объекты Label2 и textbox2 были не видны и появлялись на экране только после того, как будет введен вес.
Подсказка. Изменение свойства видимости компонента – Visible. Если свойство имеет значение True, то компонент виден, а если значение False, то – не виден.
4. Предусмотрите невозможность ввода отрицательных значений веса и роста.
Подсказка: Можно воспользоваться оператором if или оброботкой исключением try – catch. Для вывода сообщения воспользуйтесь MessageBox.Show
5. Измените алгоритм расчета с учетом Индекса массы тела.
Вес – X, Рост – Y.
Индекс массы тела – A, где A = X / Y2 (кг/м2)
Результат определяется по таблице:
№ п/п | Значение индекса | Результат (сообщение, которое надо вывести) |
1. | A < 18 | Большой недовес |
2. | 18 <= A < 20 | Маловато и небезопасно, можно получить истощение |
3. | 20 <= A <= 25 | Идеально |
4. | 26 <=A <=30 | Легкий недобор |
5. | 30 < A | Срочно нужно худеть |