孝感市西门子中国(授权)一级代理商-西门子选型-西门子技术支持-西门子维修服务
| 更新时间 2025-01-19 09:10:00 价格 请来电询价 变频器 西门子代理商 触摸屏 西门子一级代理 伺服电机 西门子一级总代理 联系电话 18126392341 联系手机 15267534595 联系人 梁涛 立即询价 |
详细介绍
在编程过程中经常会遇到需要将几个数按从大到小或从小到大的顺序排序,这时候我们会想到用“冒泡法”,其思路是将相邻的数两两进行比较,如果符合要求则不变,不符合要求则交换,10个数就要比较9次,我们称为一轮,经过一轮比较后,只是相邻大小识别出来了,并没有真正实现排序,我们需要从头开始再比一轮,这样经过9轮比较才真正完成了排序,也就是需要比9*9=81次。这时我们就可以使用循环指令重复执行,程序就变得非常简洁了。1200梯形图没有FOR循环指令,但是我们可以用SCL语言进行编写,这样就使用FOR循环指令了。编程步骤如下:首先创建两个包含10个INT元素的数组,数组1为排序前,数组2为排序后。
“下标”为数组变量,当下标为0时,数组2[下标]表示数组2[0],为1时表示数组2[1]以此类推。循环记录1和循环记录2为FOR循环要使用的变量,记录当前循环到第几次。交换中转用于交换时临时存储中转数据。程序编写如下:黑色字体为程序部分,//后红色字体部分为注释。#数组2 := #数组1;// 将数组1赋值给数组2,用数组2去进行排序,这样可以保留数组1中数据的完整性。FOR #循环记录1 := 0 TO 8 DO//与Zui下面END_FOR配对,表示从第0次开始到第8次结束,总共循环9次。 FOR #循环记录2 := 0 TO 8 DO//与倒数第二个END_FOR配对,表示从第0次开始到第8次结束,总共循环9次。 IF #数组2[#下标] < #数组2[#下标 + 1] THEN//如果前一个数小于后一个则交换。 #交换中转 := #数组2[#下标];//先将数组2[下标]赋值给交换中转变量。 #数组2[#下标]:=#数组2[#下标 + 1];//再将数组2[下标+1]赋值给数组2[#下标] #数组2[#下标 + 1] := #交换中转; //再将交换中转赋值给数组2[#下标+1],这样就实现了数组2[下标]与数组2[下标+1]交换。 END_IF; #下标 := #下标 + 1;//将下标偏移一位,实现下一组比较 END_FOR; #下标 :=0;//比完一轮后跳出内循环,将下标清零重头再来下一轮比较END_FOR;完整程序如下图所示:
“下标”为数组变量,当下标为0时,数组2[下标]表示数组2[0],为1时表示数组2[1]以此类推。循环记录1和循环记录2为FOR循环要使用的变量,记录当前循环到第几次。交换中转用于交换时临时存储中转数据。程序编写如下:黑色字体为程序部分,//后红色字体部分为注释。#数组2 := #数组1;// 将数组1赋值给数组2,用数组2去进行排序,这样可以保留数组1中数据的完整性。FOR #循环记录1 := 0 TO 8 DO//与Zui下面END_FOR配对,表示从第0次开始到第8次结束,总共循环9次。 FOR #循环记录2 := 0 TO 8 DO//与倒数第二个END_FOR配对,表示从第0次开始到第8次结束,总共循环9次。 IF #数组2[#下标] < #数组2[#下标 + 1] THEN//如果前一个数小于后一个则交换。 #交换中转 := #数组2[#下标];//先将数组2[下标]赋值给交换中转变量。 #数组2[#下标]:=#数组2[#下标 + 1];//再将数组2[下标+1]赋值给数组2[#下标] #数组2[#下标 + 1] := #交换中转; //再将交换中转赋值给数组2[#下标+1],这样就实现了数组2[下标]与数组2[下标+1]交换。 END_IF; #下标 := #下标 + 1;//将下标偏移一位,实现下一组比较 END_FOR; #下标 :=0;//比完一轮后跳出内循环,将下标清零重头再来下一轮比较END_FOR;完整程序如下图所示:
相关产品
产品分类
联系方式
- 电 话:18126392341
- 联系人:梁涛
- 手 机:15267534595
- 微 信:15267534595