C语言函数的起源 c语言的来源和历史
C语言的命令为什么叫"函数"?
在C语言程序设计里,C 标准函数(C Standard library)是所有目前符合标准的头文件(head file)的集合,以及常用的函数库实现程序,例如 I/O 输入输出和字符串控制。
专注于为中小企业提供成都网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业屏边免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
C/C++历史介绍 C和C++名称由来
C/C++发展历史简单介绍
C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子的第一个字母是B;
当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,所以就叫C++,也成立了C++标准委员会;
刚诞生的C++和现在我们使用的版本是有很大区别的,首先还没有一个真正的C++编译器,早期的C++代码都是先转化为C代码,然后用C编译器直接编译的;而且,那时的C++没有继承,没有private, protected, public这些关键字,没有虚函数;虚函数是最后才被加入C++的主要特性;就这样经过了N次演变,每次逐步增加一些新的关键字和新特性,最后才变成现在的样子;
还有就是STL,它是C++自C语言发展以来,唯一一个凭空诞生的部分,之前没有任何类似于STL的代码,编译器没有模板,在实际的使用中也没有这样的呼声;那完全得宜于STL的倡导者对C++标准委员会的游说,他的高瞻远瞩,令现在的无数人收益;是他在没有任何基础与实践的前提下,提出要将模板加入C++的标准,并增加模板类库;在该C++标准发布时,世面上没有一个支持该标准的C++编译器,它完全不是实践经验的总结,而是凭空的想象;
函数的发展历程?
函数概念的发展历史1.早期函数概念——几何观念下的函数
十七世纪伽俐略(G.Galileo,意,1564-1642)在《两门新科学》一书中,几乎全部包含函数或称为变量关系的这一概念,用文字和比例的语言表达函数的关系。1673年前后笛卡尔(Descartes,法,1596-1650)在他的解析几何中,已注意到一个变量对另一个变量的依赖关系,但因当时尚未意识到要提炼函数概念,因此直到17世纪后期牛顿、莱布尼兹建立微积分时还没有人明确函数的一般意义,大部分函数是被当作曲线来研究的。
1673年,莱布尼兹首次使用“function” (函数)表示“幂”,后来他用该词表示曲线上点的横坐标、纵坐标、切线长等曲线上点的有关几何量。与此同时,牛顿在微积分的讨论中,使用 “流量”来表示变量间的关系。
2.十八世纪函数概念──代数观念下的函数
1718年约翰�6�1贝努利(Bernoulli Johann,瑞,1667-1748)在莱布尼兹函数概念的基础上对函数概念进行了定义:“由任一变量和常数的任一形式所构成的量。”他的意思是凡变量x和常量构成的式子都叫做x的函数,并强调函数要用公式来表示。
1755,欧拉(L.Euler,瑞士,1707-1783) 把函数定义为“如果某些变量,以某一种方式依赖于另一些变量,即当后面这些变量变化时,前面这些变量也随着变化,我们把前面的变量称为后面变量的函数。”
18世纪中叶欧拉(L.Euler,瑞,1707-1783)给出了定义:“一个变量的函数是由这个变量和一些数即常数以任何方式组成的解析表达式。”他把约翰�6�1贝努利给出的函数定义称为解析函数,并进一步把它区分为代数函数和超越函数,还考虑了“随意函数”。不难看出,欧拉给出的函数定义比约翰�6�1贝努利的定义更普遍、更具有广泛意义。
3.十九世纪函数概念──对应关系下的函数
1821年,柯西(Cauchy,法,1789-1857) 从定义变量起给出了定义:“在某些变数间存在着一定的关系,当一经给定其中某一变数的值,其他变数的值可随着而确定时,则将最初的变数叫自变量,其他各变数叫做函数。”在柯西的定义中,首先出现了自变量一词,同时指出对函数来说不一定要有解析表达式。不过他仍然认为函数关系可以用多个解析式来表示,这是一个很大的局限。
1822年傅里叶(Fourier,法国,1768——1830)发现某些函数也已用曲线表示,也可以用一个式子表示,或用多个式子表示,从而结束了函数概念是否以唯一一个式子表示的争论,把对函数的认识又推进了一个新层次。
1837年狄利克雷(Dirichlet,德,1805-1859) 突破了这一局限,认为怎样去建立x与y之间的关系无关紧要,他拓广了函数概念,指出:“对于在某区间上的每一个确定的x值,y都有一个或多个确定的值,那么y叫做x的函数。”这个定义避免了函数定义中对依赖关系的描述,以清晰的方式被所有数学家接受。这就是人们常说的经典函数定义。
等到康托(Cantor,德,1845-1918)创立的集合论在数学中占有重要地位之后,维布伦(Veblen,美,1880-1960)用“集合”和“对应”的概念给出了近代函数定义,通过集合概念把函数的对应关系、定义域及值域进一步具体化了,且打破了“变量是数”的极限,变量可以是数,也可以是其它对象。
4.现代函数概念──集合论下的函数
1914年豪斯道夫(F.Hausdorff)在《集合论纲要》中用不明确的概念“序偶”来定义函数,其避开了意义不明确的“变量”、“对应”概念。库拉托夫斯基(Kuratowski)于1921年用集合概念来定义“序偶”使豪斯道夫的定义很严谨了。
1930 年新的现代函数定义为“若对集合M的任意元素x,总有集合N确定的元素y与之对应,则称在集合M上定义一个函数,记为y=f(x)。元素x称为自变元,元素y称为因变元。”
术语函数,映射,对应,变换通常都有同一个意思。
但函数只表示数与数之间的对应关系,映射还可表示点与点之间,图形之间等的对应关系。可以说函数包含于映射。当然,映射也只是一部分。 [编辑本段]幂函数幂函数的一般形式为y=x^a。
如果a取非零的有理数是比较容易理解的,不过初学者对于a取无理数,则不太容易理解,在我们的课程里,不要求掌握如何理解指数为无理数的问题,因为这涉及到实数连续统的极为深刻的知识。因此我们只要接受它作为一个已知事实即可。
对于a的取值为非零有理数,有必要分成几种情况来讨论各自的特性:
首先我们知道如果a=p/q,q和p都是整数,则x^(p/q)=q次根号(x的p次方),如果q是奇数,函数的定义域是R,如果q是偶数,函数的定义域是[0,+∞)。当指数n是负整数时,设a=-k,则x=1/(x^k),显然x≠0,函数的定义域是(-∞,0)∪(0,+∞).因此可以看到x所受到的限制来源于两点,一是有可能作为分母而不能是0,一是有可能在偶数次的根号下而不能为负数,那么我们就可以知道:
排除了为0与负数两种可能,即对于x0,则a可以是任意实数;
排除了为0这种可能,即对于x0和x0的所有实数,q不能是偶数;
排除了为负数这种可能,即对于x为大于且等于0的所有实数,a就不能是负数。
总结起来,就可以得到当a为不同的数值时,幂函数的定义域的不同情况如下:
如果a为任意实数,则函数的定义域为大于0的所有实数;
如果a为负数,则x肯定不能为0,不过这时函数的定义域还必须根据q的奇偶性来确定,即如果同时q为偶数,则x不能小于0,这时函数的定义域为大于0的所有实数;如果同时q为奇数,则函数的定义域为不等于0 的所有实数。
在x大于0时,函数的值域总是大于0的实数。
在x小于0时,则只有同时q为奇数,函数的值域为非零的实数。
而只有a为正数,0才进入函数的值域。
由于x大于0是对a的任意取值都有意义的,因此下面给出幂函数在第一象限的各自情况.
可以看到:
(1)所有的图形都通过(1,1)这点。
(2)当a大于0时,幂函数为单调递增的,而a小于0时,幂函数为单调递减函数。
(3)当a大于1时,幂函数图形下凹;当a小于1大于0时,幂函数图形上凸。
(4)当a小于0时,a越小,图形倾斜程度越大。
(5)a大于0,函数过(0,0);a小于0,函数不过(0,0)点。
(6)显然幂函数无界。 [编辑本段]高斯函数设x∈R , 用 [x]或int(x)表示不超过x 的最大整数,并用表示x的非负纯小数,则 y= [x] 称为高斯(Guass)函数,也叫取整函数。
任意一个实数都能写成整数与非负纯小数之和,即:x= [x] + (0≤1) [编辑本段]复变函数复变函数是定义域为复数集合的函数。
复数的概念起源于求方程的根,在二次、三次代数方程的求根中就出现了负数开平方的情况。在很长时间里,人们对这类数不能理解。但随着数学的发展,这类数的重要性就日益显现出来。复数的一般形式是:a+bi,其中i是虚数单位。
以复数作为自变量的函数就叫做复变函数,而与之相关的理论就是复变函数论。解析函数是复变函数中一类具有解析性质的函数,复变函数论主要就研究复数域上的解析函数,因此通常也称复变函数论为解析函数论。
复变函数论的发展简况
复变函数论产生于十八世纪。1774年,欧拉在他的一篇论文中考虑了由复变函数的积分导出的两个方程。而比他更早时,法国数学家达朗贝尔在他的关于流体力学的论文中,就已经得到了它们。因此,后来人们提到这两个方程,把它们叫做“达朗贝尔-欧拉方程”。到了十九世纪,上述两个方程在柯西和黎曼研究流体力学时,作了更详细的研究,所以这两个方程也被叫做“柯西-黎曼条件”。
复变函数论的全面发展是在十九世纪,就像微积分的直接扩展统治了十八世纪的数学那样,复变函数这个新的分支统治了十九世纪的数学。当时的数学家公认复变函数论是最丰饶的数学分支,并且称为这个世纪的数学享受,也有人称赞它是抽象科学中最和谐的理论之一。
为复变函数论的创建做了最早期工作的是欧拉、达朗贝尔,法国的拉普拉斯也随后研究过复变函数的积分,他们都是创建这门学科的先驱。
后来为这门学科的发展作了大量奠基工作的要算是柯西、黎曼和德国数学家维尔斯特拉斯。二十世纪初,复变函数论又有了很大的进展,维尔斯特拉斯的学生,瑞典数学家列夫勒、法国数学家彭加勒、阿达玛等都作了大量的研究工作,开拓了复变函数论更广阔的研究领域,为这门学科的发展做出了贡献。
复变函数论在应用方面,涉及的面很广,有很多复杂的计算都是用它来解决的。比如物理学上有很多不同的稳定平面场,所谓场就是每点对应有物理量的一个区域,对它们的计算就是通过复变函数来解决的。
比如俄国的茹柯夫斯基在设计飞机的时候,就用复变函数论解决了飞机机翼的结构问题,他在运用复变函数论解决流体力学和航空力学方面的问题上也做出了贡献。
复变函数论不但在其他学科得到了广泛的应用,而且在数学领域的许多分支也都应用了它的理论。它已经深入到微分方程、积分方程、概率论和数论等学科,对它们的发展很有影响。
复变函数论的内容
复变函数论主要包括单值解析函数理论、黎曼曲面理论、几何函数论、留数理论、广义解析函数等方面的内容。
如果当函数的变量取某一定值的时候,函数就有一个唯一确定的值,那么这个函数解就叫做单值解析函数,多项式就是这样的函数。
复变函数也研究多值函数,黎曼曲面理论是研究多值函数的主要工具。由许多层面安放在一起而构成的一种曲面叫做黎曼曲面。利用这种曲面,可以使多值函数的单值枝和枝点概念在几何上有非常直观的表示和说明。对于某一个多值函数,如果能作出它的黎曼曲面,那么,函数在离曼曲面上就变成单值函数。
黎曼曲面理论是复变函数域和几何间的一座桥梁,能够使我们把比较深奥的函数的解析性质和几何联系起来。近来,关于黎曼曲面的研究还对另一门数学分支拓扑学有比较大的影响,逐渐地趋向于讨论它的拓扑性质。
复变函数论中用几何方法来说明、解决问题的内容,一般叫做几何函数论,复变函数可以通过共形映象理论为它的性质提供几何说明。导数处处不是零的解析函数所实现的映像就都是共形映象,共形映像也叫做保角变换。共形映象在流体力学、空气动力学、弹性理论、静电场理论等方面都得到了广泛的应用。
留数理论是复变函数论中一个重要的理论。留数也叫做残数,它的定义比较复杂。应用留数理论对于复变函数积分的计算比起线积分计算方便。计算实变函数定积分,可以化为复变函数沿闭回路曲线的积分后,再用留数基本定理化为被积分函数在闭合回路曲线内部孤立奇点上求留数的计算,当奇点是极点的时候,计算更加简洁。
把单值解析函数的一些条件适当地改变和补充,以满足实际研究工作的需要,这种经过改变的解析函数叫做广义解析函数。广义解析函数所代表的几何图形的变化叫做拟保角变换。解析函数的一些基本性质,只要稍加改变后,同样适用于广义解析函数。
广义解析函数的应用范围很广泛,不但应用在流体力学的研究方面,而且象薄壳理论这样的固体力学部门也在应用。因此,近年来这方面的理论发展十分迅速。
从柯西算起,复变函数论已有170多年的历史了。它以其完美的理论与精湛的技巧成为数学的一个重要组成部分。它曾经推动过一些学科的发展,并且常常作为一个有力的工具被应用在实际问题中,它的基础内容已成为理工科很多专业的必修课程。现在,复变函数论中仍然有不少尚待研究的课题,所以它将继续向前发展,并将取得更多应用。
upcase 字符型 使小写英文字母变为大写 字符型
downcase 字符型 使大写英文字母变为小写 字符型 [编辑本段]阶梯函数形如阶梯的具有无穷多个跳跃间断点的函数. [编辑本段]反比例函数表达式为 y=k/x(k为常数且k≠0) 的函数,叫做反比例函数。
反比例函数的其他形式:y=k/x=k·1/x=kx-1
反比例函数的特点:y=k/x→xy=k
自变量x的取值范围是不等于0的一切实数。
反比例函数图像性质:
反比例函数的图像为双曲线。
反比例函数关于原点中心对称,关于坐标轴角平分线轴对称,另外,从反比例函数的解析式可以得出,在反比例函数的图像上任取一点,向两个坐标轴作垂线,这点、两个垂足及原点所围成的矩形面积是定值,为∣k∣,即k的绝对值。
如图,上面给出了k分别为正和负(2和-2)时的函数图像。
当 k 0时,反比例函数图像经过一,三象限,因为在同一支反比例函数图像上,y随x的增大而减小所以又称为减函数
当k 0时,反比例函数图像经过二,四象限,因为在同一支反比例函数图像上,y随x的增大而增大所以又称为增函数
倘若不在同一象限,则刚好相反。
由于反比例函数的自变量和因变量都不能为0,所以图像只能无限向坐标轴靠近,无法和坐标轴相交。
知识点:
1.过反比例函数图象上任意一点作两坐标轴的垂线段,这两条垂线段与坐标轴围成的矩形的面积为| k |。
2.对于双曲线y= k/x,若在分母上加减任意一个实数m (即 y=k/x(x±m)m为常数),就相当于将双曲线图象向左或右平移m个单位。(加一个数时向左平移,减一个数时向右平移) [编辑本段]程序设计中的函数许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。比如在C语言中:
int max(int x,int y)
{
return(xy?x:y;);
}
就是一段比较两数大小的函数,函数有参数与返回值。C++程序设计中的函数可以分为两类:带参数的函数和不带参数的函数。这两种参数的声明、定义也不一样。
带有(一个)参数的函数的声明:
类型名标示符+函数名+(类型标示符+参数)
{
}
不带参数的函数的声明:
void+函数名()
{
}
花括号内为函数体。
带参数的函数有返回值,不带参数的没有返回值。
C++中函数的调用:函数必须声明后才可以被调用。调用格式为:函数名(实参)
调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。
有返回值的函数可以进行计算,也可以做为右值进行赋值。
#include iostream
using namespace std;
int f1(int x, inty)
{int z;brreturn x+y;br}
void main()
{coutf1(50,660)endlbr}
C语言中的部分函数
main(主函数)
max(求最大数的函数)
scanf(输入函数)
printf(输出函数)
C语言函数原型?
1、c语言中我们通常把函数的声明叫做函数的原型。
2、c语言中把函数的定义叫做函数的实现。
3、函数是C/C++程序的基本模块。可将一些功能相对独立的或经常使用的操作或运算抽象出来,定义为函数。使用时只要考虑其功能和使用接口即可。在结构化程序设计中,函数是将任务进行模块划分的基本单位。在面向对象的程序设计中,类中所封装的操作是用函数进行描述的,因此函数在C++程序中具有非常重要的意义。
C语言函数的特点及其定义?
C语言中一个函数(function)是一个可以从程序其它地方调用执行的语句块。
1、通过使用函数(functions)我们可以把我们的程序以更模块化的形式组织起来,从而利用C语言所支持的结构化程序设计。
2、从数学角度,函数即集合A和集合B之间的映射关系。实际上计算机中的函数概念也是源于此,因此,一般函数,都有形参和返回值。
3、从计算机组成原理的角度来看,函数即是一个小型的计算机系统,依据冯诺伊曼的“存储程序原理”,每一个计算机系统包含:输入系统、输出系统、运算器以及控制器,实际上对于C语言中的函数来说,它是“存储程序原理”的软实现,其中形参、实参这是输入系统,返回值是输出系统,函数体中的运算符,比如+、-、*、/四则运算即为运算器,而逻辑运算符以及if、while等控制语句便是一个控制器。
历史上,c语言调用函数的思想是怎么想出来的,后来对象化又是怎么一回事
C还没有影子的时候,高级语言BASIC就有GOSUB调用子程序语句,这实际上就是调用一个比较完整的功能模块,而C语言的函数一词正是从function(功能,函数)翻译过来的;高级语言还连影子都没有的时候,汇编语言就有一系列跳转和返回指令,就已经具备了跳出主程序流程完成某种功能后返回主流程继续执行的操作。所以在下认为函数调用操作并不是C的发明创造,在C的研发一开始,这种思想已经很成熟了(在CPU的研发指令安排中已经具备了这种思想),只是C把程序结构完全函数化了。再说,C的初衷是替代汇编语言的,汇编语言已经具备了这种思想,C没有这种功能就很难达到初衷了。后来互相影响,一些高级语言也都模块化升级,像BASIC的子程序调用已经与C的不差上下了。个人管见,只供参考。
名称栏目:C语言函数的起源 c语言的来源和历史
地址分享:http://myzitong.com/article/dodegep.html