Приложение «Шпаргалка» — математический калькулятор

Концепция приложения: Калькулятор математических или физических формул.

Состав приложения:

Иногда требуется иметь под рукой калькулятор математических или физических формул, вместо того, чтобы каждый раз искать в интернете. Для этого можно написать приложение для себя, с любым количеством формул.

Сделаем оговорку, что 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 дробные числа пишутся через точку.

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

Посчитать посчитали, в переменную значение записали. теперь нужно это значение показать. Для этого тексту надписи присваиваем значение переменной и показываем надпись.

Настройка блока при клике кнопки Решить окончена, как и все программирование.

Подытожим, алгоритм действий:

  1. Выбираем из списка формулу,
  2. показываем формулу и необходимые поля,
  3. вводим значения,
  4. нажимаем кнопку Решить,
  5. вычисляем формулу и показываем ответ.

Самостоятельная работа

Попробуйте самостоятельно добавить еще одну формулу для вычисления.