文章目录
一、基本语法符号
基本语法符号是构成程序的基础,也是使一个程序正常编译识别和更加方便阅读的关键。理解和记住每种语法,能大大提高编程效率。
1.标识符
标识符是编程时用到的各种“名字”,包括。函数名、变量名。语法结构中的关键字等。arduino语言中标识符分为以下几类;
- 关键字:属于编程语法结构范畴的标识符,如if,while、int、void、include、等:
- 预定义表示符:系统预先定义能在编程中直接使用的函数名、类库名、变量名等、
- 如loop、digitalWrite、serial、high等;
- 用户标识符:编程者在编程过程张自定义的函数名、类库名、变量名等。
- 标识符格式标注如下:
- 由英文字母(大写A~Z和小写a ~ z),数字(0 ~ 9 )、下划线“_”等组成,且首位字符不是数字,如大小写错误会导致编译报错;
- 大小写敏感,如果大小写错误会导致编译器报错;
- 长度在255个字符以内,一般不定义过长的标识符。标识符作为标识,自定义时注意“见符识意”
1.2分隔符
分隔符用于代码与代码之间的间隔,合理使用分隔符,会使代码更加容易阅读和维护。在arduino语言种,分隔符有一下几种。
- 分号“;”分隔每句代码,代码段语法不需要使用该分隔符;
- 大括号对“{}”:分隔函数代码段或条件执行代码段区域:
- 逗号“,”:分隔函数参数小括号内各参数:
- 空格“ ”:用于语法需要的分隔符或符合规范的代码美观划分隔。
其中,空格可以用制表符代替(制表符实际为4 ~ 8个空格,值4~8可以在IDE中具体设置),即空格分隔一般无空格个数要求。
换行不视为分隔符,一般用于代码语句与句、段与段之间的划分,是代码更加美观易读,部分语法中还可替代或结合空格使用。
以上间隔均为半角符号。
1.3注释符
注释符用于在代码中加入非编程语句备忘、提示等注释,注释内容在程序编译时不加入编译工作,因此不会干扰程序的运行。
arduino语言中有单行注释和多行注释,单行注释为//,用于标记非8跨行注释。而,/和/组合使用的注释符为多行注释,常用于标记跨行注释。
1.4运算符
运算符是程序中用于对变量、常量等,进行运算、转换操作的符号。运算符识程序中最重要的语法符号之一。
在arduino语言中,运算符可分为以下类别;
- 算术运算符:用于完成基本的数字运算:
- 比较运算符:用于变量进行比较运算;
- 布尔运算符:用于布尔值真、假的比较;
- 位运算符:对变量值进行二进制下的运算操作;
- 符合运算符:“一气呵成”的算术运算符;
- 指针运算符:特殊的运算符,用于变量低级操作。
1.算术运算符
算术运算符是编程中最接近数学思想的语法符号,在编程中用于数据处理,包括一下几种符号。
- “=”:赋值, 用于变量定义。
- “+”加运算,
- “-”减运算,
- “*”:乘运算。
- “/”除运算。
- “%”:取余运算
2.比较运算符
比较运算符多用于条件语句。比较运算符对两个值进行比较运算,比较运算结果值只有两种:真(True)和假(False)。比较运算符有如下几种。
“==”:等于;
“!=”:不等于;
“<”; 大于;
“>”;小于;
“<=” 小于等于;
“>=”;大于等于;
3.布尔运算符
布尔运算符用于对布尔值进行运算,输出运算结果为新布尔值。布尔运算符有以下3种。
- “&&”:逻辑与,前与后均为真,既为真;
- “||”:逻辑或,前真或后真,即为真;
- “!”:逻辑非,对布尔真假互换。
- “^”;按位异或;
- “~”'按位取反;
- “<<”;左移位。
- “>>”右移位。
4.位运算符
单片机中的数据是以位(BIt)为单位处理的,而常用的每个字节(byte)都是由8个位数据组成的。每个位数据只可能是两种值——既二进制的0和1.处理这些类型的数据,就需要使用位操作符。
arduino语言中有如下位操作符。
- “&”:按位与,
-“|”;按位或;
- “^”;按位异或;
- “~”'按位取反;
- “<<”;左移位。
- “>>”右移位。
5.符合运算符
1.5 数据类型
变量是编程中重要的一部分,他可以作为重要的数据工具来使用。在单片机中,程序运行需要处理、使用的数据需要储存在RAM,既随机存储器,可以随时读写,速度快,是程序的临时数据存储媒介中。数据在RAM中会以变量的形式存储。每个变量在RAM中,都具有变量指针和变量值。
在编程时,每个变量通过变量名访问。arduino语言对数据类型控制较为严格,变量的数据类型为变量类型。(除void外所有数据类型),合理使用不同的变量类型可以满足不同长 度的数据储存需求,并且可以让储存空间得到更合理的应用。
设定内容居中、居左、居右
类型 | 关键字 | 说明 | 数据长度 |
---|---|---|---|
布尔型 | boolean | 只能储存布尔值Ture(真)和False(假) | 1字节 |
字符型 | char | 以ASCII 编码器储存字符,取值范围为-128~127 | 每个字符占用1字节 |
无符号字符型 | unsigned char | 同字符型,但该类型取值范围0~255,能够支持ASCII扩展编码部分的字符储存 | 每个字符占用1字节 |
字节型 | byte | 以一个字节储存无符号数,范围0~255 | 一字节 |
整数型 | int | 以两个字节储存数值,取值范围为-32768~32767(既能储存整数范围) | 2字节 |
无符号整数型 | unsigned int | 同整数型,但该类型取值范围为0~65535 | 2字节 |
单词型 | word | 以两个字节储存无符号数,范围0~65535 | 2字节 |
长整数型 | long | 以四个字节存储数值,取值范围为-2147483648~2147483647 | 4字节 |
无符号长整数型 | unsigned long | 同整数型,但该类型取值范围为0~4294967295 | 4字节 |
浮点型 | float | 以1个符号位,8个指数位,23个尾数位储存浮点数,取值范围为-34E38~34E38,精度8位 | 4 字节 |
双精度浮点型 | double | AVR arduino同float | 4字节 |
数组 | 无 | 数组及以上任意数据类型配合特定语法组成数据组 | —— |
字符串 | string | 类似于字符型数组,以String类为基础,提供更高级的数据操作工具 | —— |
1.6常量
熟记常量并掌握其使用是重要的编程技巧。常量是系统预定义或用户定义,在程序运行过程中不能被改变的量。
普通常量
作用 | 常量 | 说明 |
---|---|---|
逻辑定义 | false | 表示逻辑假。另外0值也被认为false |
逻辑定义 | trun | 表示逻辑真。另外除0外也被认为trun |
引脚电平定义 | HIGH | 表示高电平 |
引脚电平定义 | LOW | 表示低电平 |
数字引脚状态 | INPUT | 高抗组状态,用于读取外部电平 |
数字引脚状态 | OUTPUT | 抵抗阻状态,用于输出电平给外部 |
指示灯引脚 | LED_BUILTIN | 不同开发板LED指示灯的引脚号不同,该常量在不同开发板均指代指示灯所在引脚位置 |
进制基数参数 | BIN | 用于整数按指定基数转换为字符串,常用于String()和print() |
进制基数参数 | OCT | 用于将整数按指定基数转换为字符串 |
进制基数参数 | DEC | 用于将整数按指定基数转换为字符串 |
进制基数参数 | HEX | 用于将整数按指定基数转换为字符串 |
条件语句
在通过编程处理一些流程逻辑性的问题时,就需要用到条件语句。条件语句的作用是通过逻辑判断来运行不同代码,以实现“流程任务”。条件语句有多种,分别用于实现不同流程的处理需求。
2.1 if语句
if语句对于一个表达式进行运算,根据运算结果的布尔值判断:当值为真时运行语句或代码段,当值为假时跳过代码段。其语法格式为:
if(表达式)
{
代码段
}
其中表达式可以是一个值,不等价(任何数据类型)与布尔值false的值均判断为真。代码段指不限数量程序语句的集合,仅有一句代码时可以去掉大括号。
一下为if语句使用示例:
if (brightness) == 0 || brightness == 255 //判断brightness值是否为0或255
{
fadeAmount = -fadeAmount; //表达式为真时执行该语句
}
if常用于程序的条件执行做判断,单一的代码段选择判断只是其中的一个功能,结合else关键字还能满足更多的程序流程需求。例如下面例子中,当条件表达式非真时会执行另一段代码:
if(buttonState == HIGH) //判断buttonState电平是否为高
{
digitalWrite(ledpin,HIGH); //当表达式为真时执行该语句
}
else
{
digitalWrite(ledpin,low); //否者执行该语句
}
else关键字还能格外再进行表达式判断,以实现多种条件判断功能7.例如对下面两个表达式进行判断,当均为非真值时将执行最后一个else关键字后面的代码选段:
if (sensorV)