Концепция приложения: Калькулятор математических или физических формул.
Состав приложения:
- Надпись,
- Горизонтальное расположение ,
- Кнопки ,
- Выбор из списка ,
- Ввод текста
Иногда требуется иметь под рукой калькулятор математических или физических формул, вместо того, чтобы каждый раз искать в интернете. Для этого можно написать приложение для себя, с любым количеством формул.
Сделаем оговорку, что App Inventor интегралы и производные не считает, но школьный курс математики вполне себе возможно реализовать. Для примера создадим приложение, которое будет калькулятором для четырех формул:
- Вычисление n-ного члена арифметической прогрессии.
- Решение квадратного уравнения.
- Возведения числа в степень.
- Вычисление площади круга.
Настройки приложения
Название приложения — Шпаргалка или как угодно. можно подобрать какую-нибудь картинку для иконки. Остальные настройки можно оставить по умолчанию.
Дизайн-макет
Поскольку основная задача — сделать калькулятор, особыми украшательствами заниматься не будем. Поэтому внешний вид будет скромный.
Структура приложения:
Формулу мы будем выбирать с помощью компонента «Выбор из Списка», поэтому другие экраны нам не понадобятся. Настроим Экран:
- Выравнивание по горизонтали — Центр.
- Отключить показ статус-бара и названия.
- Остальные настройки можно оставить по умолчанию.
Добавим компонент «Выбор из списка«. Визуальные настройки (цвет, размер, начертание текста) можно сделать любые, особое внимание стоит уделить содержимому:
- Текст: «Выбрать формулу» (он будет отображаться на кнопке).
- Элементы Из Цепочки — добавим через запятую четыре названия формул: Арифметическая прогрессия, Квадратное уравнение, Степень, Площадь круга.
Добавим Надпись под кнопку выбора. Она будет отображать выбранную формулу. Переименуем компонент в «Формула», настройки можно сделать любые, заполнять текст надписи не нужно.
Под надпись добавим 3 горизонтальных расположения.
У всех трех расположений одинаковые настройки:
- Выравнивание по Вертикали — Центр.
- Ширина — Наполнить Родительский.
- Остальные настройки по умолчанию.
В каждое расположение нужно добавить по одной надписи и по одному полю для ввода текста. Постарайтесь сделать так, чтобы группы «расположение-надпись-ввод текста» имели похожие обозначения внутри себя (нужно для того, чтобы проще было потом программировать). Для примера, внутри Расположения 1 будут располагаться Надпись 1 и Текст 1, внутри Расположения 2 будут располагаться Надпись 2 и Текст 2.
Надписи настраивать не обязательно. Можете сделать это по желанию.
Визуальное оформление блока ввода текста тоже делать не обязательно. Главное, в настройках установить галочку «Только цифры», тем самым обезопасив себя от ошибок приложения, если вдруг пользователь захочет ввести буквы вместо цифр.
Добавим Кнопку. компонент переименуем в «Решить», и текст кнопки тоже сделаем «Решить!», остальные настройки можно оставить по умолчанию или сделать свои.
Добавим еще одно горизонтальное расположение. Его настройки:
- Выравнивание по горизонтали и вертикали — Центр.
- Ширина — Наполнить родительский.
- Высота — Автоматически.
Внутрь расположения поместим Надпись. Её настраивать не обязательно. Только переименовать компонент в Ответ. Уточню, что последнее горизонтальное расположение носит чисто утилитарный характер, его удобнее скрывать вместе с надписью (нам же не требуется в самом начале выводить пустое поле).
И еще одно уточнение. Вы заметили, что полей для ввода три, а в наших формулах будет использоваться разное количество вводимых данных? Так вот три поля для ввода — это необходимый минимум полей, назначения которых мы будем менять, а ненужные скрывать.
Перейдем к программированию.
Программирование
Первым делом нам нужно создать переменную, куда будет записываться ответ. Так и назовем её — Ответ. И зададим начальное значение 0.
Далее, при старте приложения мы должны скрыть ненужные пока блоки, а это все поля для ввода, надписи к ним, и ответ. Удобнее всего скрывать не по одиночке, а их родительский элемент — расположения.
Если родительский родительский элемент невидим, то и всего его дочерние элементы будут невидимы.
Плюс к этому скроем блок с формулой — зачем нам показывать пустой блок. Получим при инициализации экрана следующее:
Теперь мы должны описать, что будет происходить, когда была выбрана формула. Для этого используем блок «После выбора».
Поскольку вариантов у нас несколько, будем использовать условный оператор ЕСЛИ с разветвлением. Добавим 3 условия ИНАЧЕ ЕСЛИ и в конце ИНАЧЕ.
Почему столько? У нас 4 формулы, а это одно ЕСЛИ и три дополнительных разветвления ИНАЧЕ ЕСЛИ, да еще нужно указать, что делать, когда ничего не выбрано, для этого будем использовать ИНАЧЕ.
Первая формула в списке — формула n-ного члена арифметической прогрессии. Выглядит она следующим образом:
An = A1 + d(n — 1)
То есть нам понадобятся 3 параметра для ввода: A1, d и n. Поэтому мы изменим три надписей и покажем их и поля для ввода.
Мы присваиваем тексты надписям, чтобы было понятно пользователю, куда какой параметр вводить. И делаем видимыми горизонтальные расположения, чтобы стали видны надписи и поля для ввода, расположенные внутри них.
Также нам нужно показать формулу пользователю, для этого мы в надписи Формула прописываем формулу и показываем её:
С нижними индексами в App Inventor беда, поэтому придется писать их просто в одну строку.
Итого мы получим такой блок условия:
Обратите внимание, что текст из условия (т.е. «Арифметическая прогрессия») должен побуквенно совпадать с тем, что написано у вас в настройках компонента «Выбор из списка», если будет хотя бы одно несоответствие, условие срабатывать не будет.
Далее у нас решение квадратного уравнения.
ax2 + bx + c = 0
Также понадобятся три параметра, a, b, c, и показ трех расположений.
Также выведем формулу самого уравнения.
И с верхними индексами в надписях беда 🙂 Поэтому степень пишем через ^. Итого получается блок условия:
Дальше идет возведение в степень:
an = a * a * …. *a (n раз)
Здесь у нас два параметра — a и n. Поэтому понадобятся только 2 надписи и 2 поля для ввода. Третье расположение мы на всякий случай пропишем, чтобы скрывалось. Так как при переключении выбора лишнее поле должно пропадать.
И покажем формулу:
Итоговое условие:
И последняя формула — площадь круга.
S = πR2
Тут нужен один параметр — R, остальные скрываем.
И покажем формулу:
Все вместе будет выглядеть так:
Теперь запрограммируем, что делать, когда ничего не выбрано, т.е. условие ИНАЧЕ. А когда ничего не выбрано, нам нужно просто скрыть все блоки.
Визуальную часть запрограммировали. Теперь при выборе из списка будут показываться поля и формулы. Осталось самое сложное — вычисления.
Формула должна просчитываться при нажатии кнопки «Решить». Поэтому побудем использовать блок Когда Решить Щелчок, в него же поместим блок условия, где будет 3 ИНАЧЕ ЕСЛИ и ИНАЧЕ.
Первая формула — n-ый член арифметической прогрессии. Вспомним, что вычисляется она следующим образом:
An = A1 + d(n — 1)
Потребуется несколько математических блоков.
В App Inventor вложенность математических блоков должна быть такая же, как и в формуле
Первое действие выполняется в скобках, затем умножение и только потом сложение. В такой же последовательности нужно собирать блоки, вкладывая их друг в друга.
В итоге получится такая комбинация, вычисления которой будет записываться в переменную Ответ.:
Не забывайте, что название формулы в условии должно побуквенно совпадать с названием из списка.
Второе — квадратное уравнение, с ним не все так просто, ибо оно может иметь три варианта решений:
- два корня,
- один корень,
- нет решений вовсе.
В таком случае нам понадобиться еще блок с условиями, чтобы это все описать.
Вспомним, как решается квадратное уравнение ax2 + bx + c = 0:
D = b2 — 4ac
Если:
- D > 0, то два корня:
- D = 0, то один корень:
- D < 0, то корней нет.
В таком порядке и пойдем. Первое условие, если дискриминант больше нуля.
То будем показывать сразу два ответа, предварительно вычислив их и соединив в переменной Ответ.
Если дискриминант равен нулю,
то решение будет только одно:
Ну и во всех остальных случаях (т.е. когда D <0), у нас не будет решений, так и запишем:
Все условие целиком:
С корнями разобрались, переходим к степеням. Тут все просто, так как в App Inventor есть математический блок, позволяющий возводить любое число в любую степень. получим такое условие:
С площадью круга тоже никаких проблем быть не должно. Для упрощения примем π = 3,14.
В App Inventor дробные числа пишутся через точку.
И в конце напишем, что делать, если кнопку щелкнули, но не выбрали никакой формулы из списка:
Посчитать посчитали, в переменную значение записали. теперь нужно это значение показать. Для этого тексту надписи присваиваем значение переменной и показываем надпись.
Настройка блока при клике кнопки Решить окончена, как и все программирование.
Подытожим, алгоритм действий:
- Выбираем из списка формулу,
- показываем формулу и необходимые поля,
- вводим значения,
- нажимаем кнопку Решить,
- вычисляем формулу и показываем ответ.
Самостоятельная работа
Попробуйте самостоятельно добавить еще одну формулу для вычисления.