控制的哲学思考

1 控制的哲学思考

控制一词在“在线新华字典”的解释是“(1)掌握住不使任意活动或越出范围,比如控制范围;(2)使处于自己的占有、管理或影响之下,比知殖民地的经济为宗主国所控制、102高地已完全控制在我军手中ㄧ制高点的火力~了整片开阔地。”

控制(control),当今世界科学技术发展的主要地标志性技术。学习控制的原理与设计,有助于我们运用控制的基本思想和方法来解决现实生活中遇到的各类问题,提交升和发展我们的逻辑思维品质。无论是个人和组成,无论是工作、学习、生活都离不开控制。

控制是根据要达到的目的,通过一定的手段使事物沿着某一确定方向发展的行为和过程。控制的构成要素是控制对象、控制目的、控制手段。控制的应用在各个领域都有,如数字机床控制、电灯开关控制、计算机的控制等。控制技术的广泛应用,提高了产品质量、降低了生成成本、提高了劳动生产率,使人们从繁重的体力劳动和复复的手工操作中解放出来。

物质、信息和能量是构成自然界的基本要素。技术是人类在不断实践的基础上发现其科学原理,并利用这些科学原理创造出来的用于改造自然的方法和手段。对应于人类技术性活动的三个要素是材料、控制和动力,分别对应于物质、信息、能量。人利用一定的动力,借助工具加工材料使之变为有用的物品,在这一过程中必须有相应的控制手段。在不同的历史时期,活动的三要素表出出不同的形式。

活动要素

古代

近代

现代

材料

自然存在的石、铜、铁

金属材料(如钢)

复合的人工材料

动力

人力、畜力、风力、火

蒸汽、电力

电力(一分可利用能源)w

控制

人工

机械、机电

电子、信息

我们在认识控制时,一定要将动力、材料、工具放在一起来讨论。控制是动力材料、工具的中介。控制的主要工作是在什么时间、按什么顺序、将动力分配给什么样的工具,让这个工具对什么材料进行处理,如果处理没有达到标准,又需要采取响应措施,最终达到目的。所以控制又和时序、关系、状态有关。控制=动力+材料+工具+时序+关系+状态。

1.1 控制论的定义

控制的理论基础是控制论。自从1948 年诺伯特·维纳发表了著名的《控制论——关于在动物和机中控制和通讯的科学》一书以来,控制论的思想和方法已经渗透到了几乎有的自然科学和社会科学领域。维纳把控控制论制论看作是一门研究机器、生命社会中控制和通讯的一般规律的科学,是研究动态系统在变的环境条件下如何保持平衡状态或稳定状态的科学。他特意创造“Cybernetics”这个英语新词来命名这门科学。“控制论”一同最初来源希腊文“mberuhhtz”,原意为“操舵术”,就是掌舵的方法和技术的思。在柏拉图(古希腊哲学家)的著作中,经常用它来表示管理人的艺术。

在控制论中,“控制”的定义是:为了“改善”某个或某些受控对象的功能或发展,需要获得并使用信息,以这种信息为基础而选出的、于该对象上的作用,就叫作控制。由此可见,控制的基础是信息,一切信息传递都是为了控制,进而任何控制又都有赖于信息反馈来实现。信息反馈是控制论的一个极其重要的概念。通俗地说,信息反馈就是指由控制系统把信息输送出去,又把其作用结果返送回来,并对信息的再输出发生影响,起到制约的作用,以达到预定的目的。控制论在科学体系中的地位与研究物质结构和能量转换的传统科学不同﹐控制论研究系统的信息变换和控制过程。尽管一般系统具有质料﹑能量和信息三个要素﹐但控制论只把质料和能量看作系统工作的必要前提﹐并不追究系统是用什么质料构造的﹐能量是如何转换的﹐而是着眼于信息方面﹐研究系统的行为方式。控制论的另一位创始人﹑英国生理医学家W.R.阿什贝认为﹐控制论也是一种“机器理论”﹐但它所关注的不是物件而是动作方式。可以进一步说﹐控制论是以现实的(电子的﹑机械的﹑神经的或经济的)机器为原型﹐研究“一切可能的机器”──一切物质动态系统的功能﹐揭示它们在行为方式方面的一般规律。因此﹐与那些只研究特定的物态系统﹐揭示某一领域具体规律的专门科学相比较﹐控制论是一门带有普遍性的横断科学。

1.2 控制论的三大基础

控制论是以信息论、自动控制系统理论和电子计算机理论作为其理论的组成

部分。

(1) 信息论:主要是关于各种通路(包括机器、生物机体)中信息的加工传递和贮存的统计理论。

(2) 自动控制系统的理论:主要是反馈论,包括从功能的观点对机器和物体中(神经系统、内分泌及其他系统)的调节和控制的一般规律的研究。

(3) 电子计算机的理论:即与人类思维过程相似的自动组织逻辑过程的理论。

1.3 控制论的主要特征

(1) 第一个特征:要有一个预定的稳定状态或平衡状态。例如在上述的速度控制系统中,速度的给定值就是预定的稳定状态。

(2) 第二个特征:从外部环境到系统内部有一种信息的传递。例如,在速度控制系统中,转速的变化引起的离心力的变化,就是一种从外部传递到系统内部的信息。

(3) 第三个特征:这种系统具有一种专门设计用来校正行动的装置。例如速度控制系统中通过调速器旋转杆张开的角度控制蒸汽机的进汽阀门升降装置。

(4) 第四个特征:这种系统为了在不断变化的环境中维持自身的稳定,内部都具有自动调节的机制,换言之,控制系统都是一种动态系统。

2 程序中控制的认识

程序中的控制有三种形式,即顺序、分支和循环。这三种形式是在结构化程序设计时就已经提出的。按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合: 顺序结构、选择结构和循环结构来实现。

我们现在都知道程序的基本逻辑是顺序、分支与循环。那么,“为什么顺序、分支与循环是基本逻辑呢”?“作为基本逻辑,它们充备吗?” 。对于这些问题,大师Edsgar Wybe Dijkstra(戴克斯特拉/迪杰斯特拉)就为此写了篇“札 记”。他是怎么论证的呢?他说计算机可以理解的人的思想方式有三种,分别是枚举、归纳与演绎。Dijkstra进一步的说明,分支是计算机实现枚举的方法、循环是实现归纳的方法、继承是实现演绎的方法。因为所谓的“面向对象程序设计”,其根基就是“结构化程序设计 + 在结构上更高层次的抽象”。而这“更高层次的抽象”,就是“对象”。所以面向对象的程序设计=控制对象设计+应用对象设计。

2.1 顺序

简单来说,就是一个程序的执行按照书写代码的顺序依次往下执行,每条语句只能执行一次,从入口到出口执行完后,程序结束。在程序的中间不能有再返回到某一语句的情况,或者重复执行一个块的情况。

顺序是特性是不可逆。在现实生活中,有很多是不可逆的,出生先于死亡、打开先于关闭。无论是分支还是循环,都是以顺序为基础的。顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。例如;a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三部曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

顺序语句的组成有赋值语句、输入输出语句、函数语句等组成。其中赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。

2.2 分支

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。

2.2.1 基本的分支形式

(1) 单一分支体:

  if(条件)   {   分支体   }   

这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;

(2) 双分支体

  if(条件)   {分支1}   

else   {分支2}   

这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根   分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:   d=b*b-4*a*c;   if(d>=0)   {x1=(-b+sqrt(d))/2a;   x1=(-b-sqrt(d))/2a;   printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);   }   else   {r=-b/(2*a);   i =sqrt(-d)/(2*a);   printf(“x1=%8.4f+%8.4fi\n”r, i);   printf(“x2=%8.4f-%8.4fi\n”r,i)   }

(3) 嵌套分支语句

  其语句格式为:   if(条件1) {分支1};   else if(条件2) {分支2}   else if(条件3) {分支3}   ……   else if(条件n) {分支n}   else {分支n+1}   嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。

(4) switch开关语句

该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。

2.2.2 基本的分支条件

条件语句由关系表达式语句和逻辑表达式语句组成。

(1) 关系表达式

用关系运算符将两个表达式连接起来的式子,称关系表达式。关系表达式的值是逻辑值“真”或“假”。但是C语言没有逻辑型变量和逻辑型常量,也没有专门的逻辑值,故以“非0”代表“真”,以“0”代表“假”。在关系表达式求解时,以“1”代表“真”,以“0”代表假。当关系表达式成立时,表达式的值为1,否则表达式的值为0。

(2) 逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。逻辑表达式的值是一个逻辑值,即“true”或“flase”。C语言编译系统在给出逻辑运算结果时,以数字1表示“真”,以数字0表示“假”,但在判断一个量是否为“真”时,以非0表示“真”,以0表示“假”。

2.3 循环

循环结构可以看成是一个条件判断语句和一个向回转向语句的组合。另外,循环结构的三个要素:循环变量、循环体和循环终止条件. ,循环结构在程序框图中是利用判断框来表示,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时所执行的不同指令,其中一个要指向循环体,然后再从循环体回到判断框的入口处.

2.3.1 基本的循环形式

(1) while循环

while(<条件>) {<语句;>} 循环中可以使用continue结束当前循环,回到循环开始处开始下一次循环。也可以用break跳出整个循环。

(2) do –while循环

do {<语句;>} while(<条件>); do-while最少会被执行一次。循环中可以使用continue结束当前循环,回到循环开始处开始下一次循环。也可以用break跳出整个循环。

(3) for循环

for循环是开界的。它的一般形式为: for(<初始化>; <条件表达式>; <增量>) 语句; 初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化。这三个部分之间用";"分开。 例如: for(i=1; i<=10; i++) 语句; 上例中先给 " i " 赋初值1, 判断 " i " 是否小于等于10, 若是则执行语句, 之后值增 加1。再重新判断, 直到条件为假, 即i>10时, 结束循环。

2.3.2 基本的循环变量

同分支条件一样,分为关系表达式和逻辑表达式。

2.3.3 基本的循环控制

(1) Break

退出本层的循环

(2) Continue

转入当前循环的下一步

(3) Return

退出函数中的所有过程及循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值