观众老爷好,前几期都有提到程序是由算法和数据结构组成的,而算法其实就是数学里的加减乘除以及逻辑判断组成,数据结构是事物的特征和属性。那算法到底怎么实现的呢?请观众老爷拿好茶杯,取出零食饮料,跟小编一起再次向编程的世界走进一步。
在上一期说过面向对象分析思想非常重要,这里观众老爷跟小编一起来复习一下,面对事物和问题,我们首先第一步是分析,形状(圆,方,三角形),大小(长、宽、高),材质(金属,塑料,布料等),问题(条件,工具,解决办法),当我们进行初步判断后,就要进行验证(会动吗?吃什么?对我们有没威害?能不能吃?方法合不合理?),最终得出结论(确定事物是什么构成,能做什么,对我们的危害和益处,是否达到我们所期望的目的,问题是否得到了解决)。下面咱们一起用面对对象的方法进行事物的分析判断。
观众老爷应该都有解答过"把大象装进冰箱需要几步?"这个脑筋急转弯吧?当我们遇到问题是第一时间会考虑这个问题的合理性?当然正常情况这个问题是不合理的?那如何判定这个问题是不合理的呢?接下来我们用编程来进行求解?
首先我们把大象与冰箱的特征和属性进行数据建模(当然我们还是用伪代码描述):
Class Elephant { //简单的建立一个大象的特征数据结构,这里也可以用struct
//具体涉及到编程语言时再详细说明Class与struct的差别和相同之处。
String species = NULL; //大象的品种,先赋值为空
Int long =0;//大象体长(以厘米为默认单位也可以用浮点float来进行变量类型申明)
Int width = 0;//大象肩宽
Int high = 0;//大象高度
//大象因为不存在填充行为,这里不建立填充函数,在冰箱里进行建立。
//当然大象的吃喝等行为在这里不是必要的也就不再进行数据化
}
Class Icebox {
String brand = null;//冰箱的品牌,先赋值为空
Int long = 0;//冰箱长度(这里是冰箱内部的长宽高,观众老爷可以忽略部分不合理的地方)
Int width = 0;//冰箱宽度
Int high = 0;//冰箱高度
//这里可以建立冰箱一些行为与功能函数
Void OpenDoor (){
Print("打开冰箱门!"); //打开冰箱门函数
}
//当然在装填之前肯定需要判断这个物品能不能填进冰箱,下面进行实例化后再进行判断
Void Fill (){
Print("把物品装进去!"); //冰箱填装函数
}
Void CloseDoor () {
Print("关上冰箱门!"); //关闭冰箱门函数
}
}
Elephant ElephantOne; //实例化一个大象数据结构
ElephantOne.species = "Asian elephant";//这里是亚洲象,当然也可以用非洲象,具体这里不再一一列举
ElephantOne.long = 500;//体长五米
ElephantOne.width =68;//大象身体宽度
ElephantOne.high = 210;//亚洲象最低肩高2.1米
//台式电冰箱:高度为750~850mm,宽度为900~1 000mm,深度为450~500mm。这里全部采用最大值
Icebox IceboxOne;//实例化一个冰箱数据结构
IceboxOne.brand = "geli";//格力冰箱
IceboxOne.long = 100;//冰箱长度
IceboxOne.width = 50;//冰箱宽度
IceboxOne.high = 85;//冰箱高度
/*到了这里观众老爷应该心里有了判断这个大象肯定不能填进冰箱的,但是编程就是要每一步都要进行详细的描述出来,我们的判断依据是什么?没有比较之前都不能作准,尤其数据我们需要让计算机自己来比对,我们只需要提供数据就行。*/
Int step = 0;//建立一个整形变量,计算所需步骤
If ( IceboxOne.long > ElephantOne.long && IceboxOne.width > ElephantOne.width && IceboxOne.high > ElephantOne.high ) {
//先进行三个值比对,然后三个值进行与操作,三个全为真这个条件才为真
step=step+1;//如果物体能装进冰箱第一步
IceboxOne.OpenDoor;//打开门,在判断之前也可以打开冰箱,可以在冰箱类里加个条件判断冰箱是否已经打开
step=step+1;//如果物体能装进冰箱第二步
IceboxOne.Fill;//装进冰箱
step=step+1;//如果物体能装进冰箱第三步
IceboxOne.CloseDoor;//关上冰箱门
Print("大象装进冰箱需要/n步