日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

西門子結(jié)構(gòu)化編程實現(xiàn)數(shù)組排序

 工控庫吧 2021-12-08

【導(dǎo)讀】通過冒泡法升序或降序模式排序數(shù)組。該例程已在博途V15.1環(huán)境下測試通過!

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

升降序排列時,冒泡排序算法的運作如下:

  • 比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。

  • 對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。

  • 針對所有的元素重復(fù)以上的步驟,除了最后一個。

  • 持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。

(2)OB1中子程序調(diào)用,如下圖所示:

(3)子程序變量聲明表,如下圖所示:

(4)模式為1為升序,其運行結(jié)果,如下圖所示:

(5)模式為0為降序,其運行結(jié)果,如下圖所示:

(6)SCL代碼,如下圖所示:

(7)SCL代碼(復(fù)制可用)

IF #Enable THEN

    //獲取數(shù)組上限

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

    //獲取數(shù)組下限

    #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)程序編制注意事項:

  • 數(shù)組上限自動獲取函數(shù)的使用

  • 數(shù)組下限自動獲取函數(shù)的使用

  • FOR循環(huán)的嵌套使用

  • FOR循環(huán)的循環(huán)變量和數(shù)組上下限的配合

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多