首页 理论教育 掌握C/C++语言基础知识

掌握C/C++语言基础知识

时间:2023-06-27 理论教育 版权反馈
【摘要】:C/C++语言(C是C++的基础,C++语言和C语言在很多方面是兼容的。绝大多数硬件开发工作均使用C/C++语言进行,Arduino也不例外。使用Arduino需要有一定的C/C++基础,由于篇幅有限,本书仅对C/C++语言基础进行简单的介绍。表5-1常见的C/C++运算符通过运算符将运算对象连接起来的式子称之为表达式。

掌握C/C++语言基础知识

C/C++语言(C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的)是国际上广泛流行的计算机高级语言[176-177]。绝大多数硬件开发工作均使用C/C++语言进行,Arduino也不例外。使用Arduino需要有一定的C/C++基础,由于篇幅有限,本书仅对C/C++语言基础进行简单的介绍。此后章节中还会穿插介绍一些特殊用法及编程技巧。

1.数据类型

在C/C++语言程序中,对所有的数据都必须指定其数据类型。数据有常量和变量之分。需要注意的是,在Genuino 101与AVR作为核心的Arduino中,其部分数据类型所占用的空间和取值范围有所不同[178]

2.变量

在程序中数值可变的量称为变量,其定义方法如下:

类型变量名;

例如,定义一个整型变量i:

int

人们可以在定义时为其赋值,也可以定义后再对其赋值,例如:

int i;

i=95;和int i=95;

两者是等效的。

3.常量

在程序运行过程中,其值不能改变的量称之为常量。常量可以是字符,也可以是数字,通常使用语句“const类型常量名=常量值”来定义常量。还可以用宏定义来达到相同的目的,语句如下:

#define 宏名 值

如在Arduino核心库中已定义的常数PI,即:

#define PI 3.1415926535897932384626433832795

4.整型

整型即整数类型。

5.浮点

浮点数也就是常说的实数。在Arduino中有float和double两种浮点类型,在Genuino 101中,float类型占用4个字节(32位)内存空间,double类型占用8个字节(64位)内存空间。

浮点型数据的运算速度较慢且可能会有精度丢失。通常人们会把浮点型转换为整型来处理相关运算。例如,人们通常会把9.8 cm换算为98 mm来计算。

6.字符型

字符型即char类型,也是一种整型,占用一个字节内存空间,常用于存储字符变量。存储字符时,字符需要用单引号引用,如

char col='C';

字符都是以整数形式储存在char类型变量中的,数值与字符的对应关系请参照相关ASCII码表

7.布尔型

布尔型变量即boolean。它的值只有两个,即:false(假)和true(真)。boolean会占用1个字节的内存空间。

8.运算符与表达式

C/C++语言中有多种类型的运算符,常见运算符见表5-1。

表5-1 常见的C/C++运算符

通过运算符将运算对象连接起来的式子称之为表达式。如数组是由一组相同数据类型的数据构成的集合。数组概念的引入使得在处理多个相同类型的数据时,程序更加清晰和简洁,其定义方式如下:

数据类型 数组名称[数组元素个数];

如,定义一个有5个int型元素的数组:

int a[5];

如果要访问一个数组中的某一元素,需要将数组a中的第1个元素赋值为1(需要注意的是数组下标是从0开始编号的):你可以使用以上方法对数组赋值,也可以在数组定义时对数组进行赋值。

9.字符串

字符串的定义方式有两种:一种是以字符型数组方式定义,另一种是使用string类型定义。如

char字符串名称[字符个数];

使用字符型数组的方式定义,其使用方法和数组一致,有多少个字符便占用多少个字节的存储空间。大多数情况下,人们使用string类型来定义字符串,该类型中提供一些操作字符串的成员函数,使得字符串使用起来更为灵活。

如string字符串名称;

stringabc;

即可定义一个名为abc的字符串。你可以在定义时为其赋值,或在定义后为其赋值,如

stringabc="Genuino101"

相较于数组形式的定义方法,使用string类型定义字符串会占用更多的存储空间。

10.注释

/*与*/之间的内容,及//之后的内容均为程序注释,使用它可以更好地管理代码。注释不会被编译到程序中,不影响程序的运行。

为程序添加注释的方法有两种:

(1)单行注释:

//注释内容

(2)多行注释:

/*

注释内容1

注释内容2

……(www.xing528.com)

*/

11.用流程图来表示你的程序

流程图是用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。特别是对于初学者来说,使用流程图能帮助更好地理清思路,从而顺利编写出相应的程序[179-181]。一些常用的流程图符号如图5-19所示。

图5-19 Arduino里面用到的流程图符号

(1)顺序结构。

它是最基本、最简单的程序组织结构。在顺序结构中程序按语句先后顺序依次执行。一个程序或者一个函数整体上是一个顺序结构,它是由一系列的语句控制结构组成,这些语句与结构都按先后顺序运行。如图5-20所示,虚线框内是一个顺序结构,其中A、B两个框是顺序执行的。即在执行完A框中的操作后,接着会执行B框中的操作。顺序结构如图5-20所示。

(2)选择结构。

选择结构又称选取结构或分支结构。在编程中,经常需要根据当前数据做出判断,决定下一步的操作。例如,Arduino可以通过温度传感器检测出环境温度,在程序中对温度做出判断。如果过高,就发出警报信号,这时便会用到选择结构。如图5-21所示,虚线框中是选择结构。该结构中包含一个判断框。根据判断框中的条件p是否成立,而选择执行A框或者B框里的操作。执行完A框或者B框里的操作后,都会经过b点,脱离该选择结构。

图5-20 顺序结构

图5-21 选择结构

12.if语句

if语句是最常用的选择结构实现方式,当给定表达式为真时,就会运行其后的语句,其有三种结构:

(1)简单分支结构。

(2)双分支结构。

双分支结构增加了一个else语句,当给定表达式结果为假时,便运行else后的语句。

(3)多分支结构。

使用多个if语句,可以形成多分支结构,用以判断多种不同的情况。

13.switch…case语句

处理比较复杂的问题时可能会存在有很多选择分支的情况,如果还使用if…else的结构来编写程序,会使程序显得冗长,且可读性差。此时可以使用switch(其表达式可见图5-22),其一般形式为:

图5-22 switch语句表达式

需要注意的是,switch后的表达式结果只能是整型或字符型。如果要使用其他类型,则必须使用if语句。switch结构会将switch语句后的表达式与case后的常量表达式进行比较,如果符合就运行常量表达式所对应的语句;如果都不相符,则会运行default后的语句,如果不存在default部分,程序将直接退出switch结构。在进入case判断,并执行完相应程序后,一般要使用break退出switch结构。如果没有使用break语句,程序则会一直执行到有break的位置退出或运行switch结构退出。

循环结构又称重复结构,即反复执行某一部分的操作。循环结构有两类,一类是当型循环结构,该循环结构会先判断给定条件,当给定条件p1不成立时,即从b点退出该结构;当p1成立时,执行A框操作,执行完A框操作后,再次判断条件p1是否成立,如此反复。一类是直到型循环结构,该循环结构会先执行A框操作,然后判断给定的条件p2是否成立,成立即从b点退出循环;不成立则返回该结构起始位置a点,重新执行A框操作,如此反复。循环结构如图5-23表示。

图5-23 循环结构(包括当型和直到型循环结构)

14.while循环

while循环是一种当型循环。当满足一定条件后,才会执行循环中的语句,其一般形式为:

在某些Arduino应用中,可能需要建立一个死循环(无限循环)。当while后的表达式永远为真或者为1时,便是一个死循环。

15.do…while循环

do…while与while循环不同,是一种直到循环,它会一直循环到给定条件不成立时为止。它会先执行一次do语句后的循环体,再判断是否进行下一次循环。

16.for循环

比较而言,for循环比while循环更灵活,且应用广泛,它不仅适用于循环次数确定的情况,也适用于循环次数不确定的情况。while和do…while都可以替换为for循环。一般形式为:

图5-24 for循环流 程图

通常情况下,表达式1为for循环初始化语句,表达式2为判断语句,表达式3为增量语句。如

for(i=0;i<5;i++){ }

表示初始值i为0,当i小于5时运行循环体中的语句,每循环完一次,i自动加1,因此这个循环5次。for循环流程图如图5-24所示。

在循环结构中,都有一个表达式用于判断是否进入循环。通常情况下,当该表达式结果为false(假)时,会结束循环。有时候需要提前结束循环,或是已经达到了一定条件,可以跳过本次循环余下的语句,那么可以使用循环控制语句break和continue。break语句只能用于switch多分支选择结构和循环结构中,使用它可以终止当前的选择结构或者循环结构,使程序转到后续语句运行。break一般会搭配if语句使用。一般形式为:

continue语句用于跳过本次循环中剩下的语句,并判断是否开始下一次循环。同样,continue一般搭配if语句使用,一般形式为:

在编写程序前,可以先画出流程图,帮助理清思路。用流程图可表示为图5-25所示形式。

图5-25 实现LED灯交替闪烁的流程图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈