Вычислите оставшееся время занятий, затем измените входные значения и предскажите вывод. На том же примере разберитесь, когда указывать тип явно и когда добавлять mut.
Установите Топаз и пройдите раздел Первая программа, прежде чем начать это занятие.
Вычислите оставшееся время
Сохраните код в файле values-functions.tpz в своей рабочей папке.
function осталосьМинут(всего: int, потрачено: int) -> int {
всего - потрачено
}
let тема = "Topaz basics"
let всего: int = 45
let потрачено = 20
let mut занятия = 0
занятия = занятия + 1
print("{тема}: {осталосьМинут(всего, потрачено)} minutes left")
print("sessions: {занятия}")В той же папке проверьте и запустите файл.
topaz check values-functions.tpz
topaz run values-functions.tpzПроверка завершается с кодом 0. Программа выводит две строки.
Topaz basics: 25 minutes left
sessions: 1Проследите вычисление
Вызов осталосьМинут(45, 20) возвращает 25, которое появляется в первой строке вывода. Функция получает два числа через параметры всего и потрачено.
Запись : int у каждого параметра означает, что он принимает целое число. Запись -> int задаёт целочисленный результат функции. Последнее выражение всего - потрачено даёт этот результат. Для досрочного выхода из функции используйте return. Проверка типов сопоставляет возвращаемые значения с объявленным типом результата.
Выберите типы и разрешите присваивание
Вывод типов позволяет Топазу определить тип по начальному значению. Здесь тема имеет тип string, а потрачено имеет тип int. Запись всего: int указывает тип явно, хотя его можно определить и по числу 45.
Привязка даёт значению имя. Имя, объявленное через let, можно использовать, но присвоить ему другое значение нельзя. Для повторного присваивания нужен let mut. Счётчик занятия начинается с 0 и становится равным 1, когда следующая строка прибавляет единицу.
| Что нужно | Что написать |
|---|---|
| Локальное значение с понятным начальным типом | let потрачено = 20 |
| Явный тип для читателя объявления | let всего: int = 45 |
| Счётчик с повторным присваиванием | let mut занятия = 0 |
| Имена и типы параметров, тип результата | (всего: int, потрачено: int) -> int |
При ошибке типов сравните значение с типом рядом с именем. Передавайте в осталосьМинут целое число 20, а не строку "20".
Попробуйте
Измените начальные значения всего и потрачено на 60 и 15. Оставьте код счётчика прежним. Предскажите обе строки вывода, затем снова проверьте и запустите файл.
Показать ответ
Первая строка станет Topaz basics: 45 minutes left, поскольку 60 - 15 равно 45. Вторая останется sessions: 1, поскольку счётчик по-прежнему увеличивается один раз.
Переходите к следующему занятию
Можно продолжать, когда вы умеете менять входные значения и находить вычитание и обновление счётчика, которые объясняют вывод.
Перейдите к разделу Данные и управление, чтобы хранить несколько учебных задач. Подробный синтаксис описан в разделах Типы и Функции и обобщения. К обобщениям можно вернуться, когда они понадобятся в следующих примерах.