分享

西门子结构化编程实现数组排序

 工控库吧 2021-12-08

【导读】通过冒泡法升序或降序模式排序数组。该例程已在博途V15.1环境下测试通过!

(1)升降序排序算法说明:

升降序排列时,冒泡排序算法的运作如下:

  • 比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

  • 针对所有的元素重复以上的步骤,除了最后一个。

  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

(2)OB1中子程序调用,如下图所示:

(3)子程序变量声明表,如下图所示:

(4)模式为1为升序,其运行结果,如下图所示:

(5)模式为0为降序,其运行结果,如下图所示:

(6)SCL代码,如下图所示:

(7)SCL代码(复制可用)

IF #Enable THEN

    //获取数组上限

    #L := LOWER_BOUND(ARR := #Array, DIM := 1);

    //获取数组下限

    #H := UPPER_BOUND(ARR := #Array, DIM := 1);

    //冒泡法排序

    FOR #i := #L TO #H-1 DO

        FOR #j := #L TO #H-1-#i DO

            IF #Mode THEN

                //升序排列

                IF #Array[#j] > #Array[#j + 1] THEN

                    #temp1 := #Array[#j];

                    #Array[#j] := #Array[#j + 1];

                    #Array[#j + 1] := #temp1;

                END_IF;

            ELSE

                //降序排列

                IF #Array[#j] < #Array[#j + 1] THEN

                    #temp1 := #Array[#j];

                    #Array[#j] := #Array[#j + 1];

                    #Array[#j + 1] := #temp1;

                END_IF;

            END_IF;

        END_FOR;

    END_FOR;

END_IF;

(8)程序编制注意事项:

  • 数组上限自动获取函数的使用

  • 数组下限自动获取函数的使用

  • FOR循环的嵌套使用

  • FOR循环的循环变量和数组上下限的配合

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多