程序的核心之一,计算机表达逻辑的实现
---程序=数据结构+算法. 这是关于"计算机编程到底是在做什么"最经典的描述.
但对于一个想用白话快速理解程序作用的人,一个初学者来说,有些过于高大上了.
---程序是逻辑的语言 这是较为"亲近"的说法
---逻辑是什么?逻辑是因果关系
---注意:逻辑本身并不分"正确"或者"错误"的逻辑, 所谓正确或者错误是程序员自己定义的.
程序运用"函数"来表达逻辑,更进一步说:用数据的变化来表示逻辑.
"函数"一词来自数学里的定义.y=f(x).其中x是自变量,y是因变量. 程序引用了这个概念.
---逻辑是怎样实现的?
程序通过编写函数(或者类方法)和调用函数(或者类方法)来实现逻辑.
所以,函数是程序的实体.
函数是计算机表达逻辑的实现
"我想做一件事"
int add_int(int x, int y){
return x+y;
}
说明:这是一个函数,想做的是以下的事情:
一个整数加法,输入两个整数,得到一个整数结果.
返回值类型 函数名(形参类型1 形参, 形参类型2 形参......){
调用其他函数; //调用自己--递归;
语句;
return 返回值变量
}
如果没有返回值, 则需要用void替代,即
void 函数名(形参类型1 形参, 形参类型2 形参......){
调用其他函数; //调用自己--递归;
语句;
}
你想做一件事,你想表达一种因果关系. 其中"因"在形参当中,"果"在返回值当中.
如果没有返回值,那么数据的变化应该出现在函数语句中.
总之,函数会引起数据变化,并且用数据变化表达逻辑
此外,函数内部使用数据,涉及到数据可见性的问题.
函数内可以使用的数据包括传入的形参,全局数据,局部变量,静态局部变量这几种.
函数也可以调用其他函数,或者调用自己(递归)
所以,函数是非常灵活的程序组织方式.
问题:如果写函数--想做一件事,追求的结果相同,但是给的条件不同,传入的形参不一样,又该如何解决呢?
在面向过程的语言中,例如C语言,是无法解决的,只能定义多个函数,以不同的函数名相区分,调用函数时程序员做选择.显然这有些不方便.
在面向对象的语言中,例如C++,有两种解决方案,虚方法和函数重载
一.虚方法是非常重要的概念,他是接口的核心所在.虚方法将抽象和实现分离.对外调用虚方法,对内单独实现.
二.函数重载.
函数名相同,参数不同(形参顺序和形参个数不一致都算不同)可以直接定义,调用函数时自动查询并调用对应函数.