Foreword
写了几天关于编程应用类的文章,最后的物联网的实现效果想先过一两天再做。今天想写个关于编程语言入门的基础,帮助那些刚刚入门的同学们理解“程序”的概念。但是真正想稳扎稳打地学好基础的话还是需要自己下来之后买本书,从头慢慢看。本篇文章主要是帮助入门的同学对此有个基本的框架概念。今天主要以两种语言(C和Python)来介绍其中的概念以及通过对比来加深理解。
PS: 其中对于 Python 面向对象编程暂不做讨论,将在后面的文章单独分析。
今天要介绍的有两种语言,一种为大家所耳熟能详的C语言,另一种则是近来由于深度学习等发展而迅速流行的Python。在这里我们不对这两种语言的用途以及发展做比较,也不比较他们自身的优劣,同时也不会对编程的用法做出说明。仅仅从组成上来分析如何利用这些计算机语言来构建一个程序。
“程序” 即为计算机的语言,而语言则是由一字一句所组成的,因此程序也是有一个又一个基础部分所组成的,程序基本的组成我用下面的一张图展示给大家,我们全文要探讨的也将是围绕着这张图来解释,如果途中遗忘了的同学,请回到这幅图中理清我们讲述的思路。
Structure of a program.
变量
我们可以认为程序中的基本单位为 变量(Variable),正如它的名字一样,变量在程序运行时是可变的。在C语言中,要使用一个变量之前我们需要首先对其进行声明(Declare),让程序明白从这里开始我创建了一个变量。创建完变量之后才可以对变量进行赋值或定义(define)。当然,变量的类型多种多样,从整型(integer)、单精度浮点型(float)、双精度浮点型(double)再到更加复杂的指针(pointer)、结构体(structure)。这些各种各样的类型都属于变量。但是在Python中,情况却有些不同,Python中变量的定义之前并不需要声明,当你冷不丁的来一句(即前面没有任何类似于“string myname”等声明语句):
myname = "supgb"
时,程序是十分正确的。这是因为Python在编译时会自动地帮助你选择合适的变量类型。
运算
运算,可以认为是程序的目的。程序设计出来本身就是用来做运算的,运算的类型也是相当地丰富。像简单的数值运算+、-、*、/(分别对应于加减乘除)等,和
基本的逻辑运算&&(and)、(or)、==(==)、!=(!=)【对应于 且、或、等于;圆括号内的为Python中的表达】。数值运算得到的结果自然是一个数值,像1+1得到的自然是2;对于逻辑运算的话就有所不同,逻辑运算中得到的结果是一个布尔值(bool),即对(Ture/ture),或错(False/false)。
判断(选择)
Conditional statements
判断,或条件选择,也是程序中的一大组成部分。通过一个逻辑计算来判断是否满足条件,如果满足条件,即逻辑运算的结果为对(ture/Ture)执行程序块1,不满足条件,即逻辑运算结果为错(false/False)的话执行程序块2,在C中实现的格式如下:
if(逻辑运算==ture){
程序块1; // 满足条件时
}
else{
程序块2; // 不满足条件时
}
对比一下在Python中的实现:
if 逻辑运算==Ture:
程序块1
else:
程序块2
很明显,大家可以看出C语言与Python中语法上的不同,但是对于C与Python实现中语法的不同之处,不是我们这篇推文的重点,所以也不做解释,有兴趣的同学可以下来之后从书中好好学习,或是期待一下以后推文。以上是简单的判断,当然也不止止这些,对于复杂的条件判断,我们一般会使用switch,对于复杂的判断它的好处是可以明朗的把代码展现出来,也就是使代码简洁,可读性强。下面只是一个简单的示例,有兴趣的同学可以自行上网查询。
switch(...){
case 1:break;
case 2:break;
...
default:break;
}
循环
A loop
接下来是程序中另一个重要的组成:循环。循环顾名思义就是重复地执行一段程序,完整地说是在某一条件下,循环某一程序块。条件是由逻辑计算所支持的,我们以下面的伪代码来说明。
for 循环:
for( 变量声明;变量逻辑运算 ;变量的动作 ;){
程序块;
}
while 循环:
while (条件){
程序块;
}
do{
程序块;
}while(条件);
上面就是一些我们比较经常看到的循环语句,大体的思想都是一致的,都是在满足某一个条件下不断地循环花括号内的程序块。这里花点时间讲解一下for中两个分号处的不同之处。第一个分号前一般是声明一个临时变量,并给该变量初始化(用于参与第二个分号前的逻辑计算),第二个分号前为一个逻辑计算,可以是>、
for(int i = 0; i < 10; i++){
printf("%d", i);
}
再看一下Python中的循环结构,python中常见的循环结构如下所示:
while 条件:
程序块
或
for 条件:
程序块
除了语法上的不同外,代码的具体含义与C中并无大异。
函数
其实,到此为止我们已经能够利用上面的四个组成部分写出非常棒的代码了,变量、计算、判断(选择)、循环足以通过嵌套各个部分形成复杂的程序,从这里足以见得编程并不难,但是提高编程的效率以及程序的性能却远远不足,需要我们在日常的练习以及工作中不断地学习,不断地提升。接下来我们要介绍的便是一个可以提高编程效率的“组件”——函数(function)。
函数的思想主要在于简化程序,函数是由前面的四个部分所组成的。函数分为两类,简单说就是一类为——别人写的、另一类自然就是自己写的。在详细介绍之前,我们要说一下使用以及编写函数时的重要思想——黑箱(BlackBox),即函数的使用者应该能在只看函数的说明注释后很好地使用这个函数,而不用看函数内部的代码。
black box
这样做的好处在于提高开发人员的效率,并且也给代码的维护大大降低了难度。那么,什么时候需要把代码包装到函数中呢?当你发现有一段代码你需要反复地使用的时候,这时候就有必要把这部分程序包装成一个函数,在下次你需要实现这个功能时,只需调用这个函数就可以了,同样的,如果这个功能出现了问题的话,修改程序也只需要修改这个函数,这便对应了前面我说的提高效率与易于维护。
在C语言中,定义一个函数有如定义一个变量,函数也有数据类型(void、int、float……),所谓的函数数据类型指的是函数返回的数据的类型。调用一个函数有两种目的,一种是执行某项功能不需要返回数据,比如说显示函数,我使用它的目的很简单——显示数据到屏幕上;再比如说我编写一个计算所有同学身高平均值得函数,我使用它的目的首先是计算出所有的这个平均值,然后需要函数把这个平均值返回给我,以便我在接下来的程序中继续使用。所以按此我们可以分成返回值(可以是整型、浮点型等)与无返回值(void)两种函数。同时,值得记住的是,在C语言中像我们在使用变量之前,必须对变量进行声明与定义,对于函数而言也不例外。(以无返回值)函数的声明(declaration)和定义(definition)分别如下所示:
返回值类型 函数名(参数列表);
返回值类型 函数名(参数列表){
程序块;
}
由于Python在语法上与C有较大的不同当然实现的形式也就不同了:
def 函数名(参数列表):
程序块
从其中可以明显的看出了Python中函数的定义比起C而言简洁了许多,这也是为什么Python可以流行得如此之快的原因。
结语
到处为止,我们介绍完了程序中最基本的几种元素,同时也是一种指南,学习时掌握了这几方面的知识后我们便可以码出一定的代码了,就可以加以应用了,学会编程不是我们的最终目标,我们的目的是用它来解决实际问题,大可以在解决问题的过程中边用边丰富我们的编程技能,可以满足许多同学想要快速入门的目的。
当然,掌握语言中其他技能可以提高我们编程的效率以及提高代码的性能,这部分也需要同学们深入学习,在以后的推文中,我会在应用地同时穿插地介绍编程语言的使用。
END
领取专属 10元无门槛券
私享最新 技术干货