c++ - Arduino - 基于 Arduino 的数学计算器的优化?
问题描述
如何优化我的代码?
#include <Keypad.h>
const byte ROWS = 4;
const byte COLM = 4;
char keys[ROWS][COLM] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 12, 11, 10};
byte colmPins[COLM] = {9, 8, 7, 6};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colmPins, ROWS, COLM);
int arrayj[2];
int i;
long result;
void setup ()
{
Serial.begin(9600);
}
void loop ()
{
char customKey = keypad.getKey();
if (customKey != NO_KEY && i <= 1)
{
arrayj[i] = (translate(customKey));
Serial.println(arrayj[i]);
i++;
}
}
int translate (int x) {
int y = x - '0';
return y;
}
int addition(int x, int y)
{
result = x + y
return result;
}
到目前为止,它可以存储来自键盘的两个值,但想法是加、减、乘和除;有没有人对这个项目有任何见解。
感谢任何帮助表示赞赏!:)
解决方案
好的,所以您的代码可以通过多种方式进行优化。对已经内置于 C++ 的运算符使用方法并不是非常理想的。此外,与返回整数的方法相比,返回 long、double 或 float 会更好。
这是您的优化代码
#include <Keypad.h>
const byte ROWS = 4;
const byte COLM = 4;
char keys[ROWS][COLM] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 12, 11, 10};
byte colmPins[COLM] = {9, 8, 7, 6};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colmPins, ROWS, COLM);
int num_array[2];
int iteration;
void setup ()
{
Serial.begin(9600);
}
void loop ()
{
char customKey = keypad.getKey();
if (customKey != NO_KEY && iteration <= 1)
{
num_array[iteration] = (translate(customKey));
Serial.println(num_array[iteration]);
iteration ++;
}
}
int translate (int x)
{
return x - '0';
}
变化:
我返回了这些值,而不是创建一个全新的变量来存储方法的结果。我还更改了一些变量名称以使它们更易于维护。
推荐阅读
- r - 如何更改数据框中列的顺序,然后按降序排列另一列?
- firebase - 数据功能不起作用反应本机 Firestore
- tkinter - 如何以 .png 格式保存画布屏幕(tkinter)?
- javascript - WKWebView,使用javascript提交表单
- project - 如何重用 Qbs 项目的属性?
- css - 如何轻松匹配多个子类名称?
- wpf - 从 Windows Form/WPF 访问 PowerShell 的 office 365 身份验证弹出窗口
- mysql - 匹配两组数字是否相等
- javascript - 如何重复使用 cookie,以便网站知道我已经接受了这些条款?
- amazon-web-services - 来自 EC2 和 Lambda 的 AWS S3 访问被拒绝