公司新聞
程序實例 | 1200用SCL語言實現十個數排序
發布時間: 2024-04-20 18:20 更新時間: 2024-12-27 09:10
在編程過程中經常會遇到需要將幾個數按從大到小或從小到大的順序排序,這時候我們會想到用“冒泡法”,其思路是將相鄰的數兩兩進行比較,如果符合要求則不變,不符合要求則交換,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;完整程序如下圖所示:
其他新聞
- 西門子S7-300/400系列多重調用FB塊如何監控? 2024-12-27
- 圖文詳解 | 西門子PLC控制步進驅動器 2024-12-27
- PLC數字信號和模擬信號輸入和控制是怎么回事? 2024-12-27
- 西門子PLC移位指令下如何實現電機順序啟動逆序停止? 2024-12-27
- 用電路控制和用PLC控制三相電機點動/自鎖有何區別呢? 2024-12-27
- 西門子1200與1500如何進行S7以太網通信 2024-12-27
- 使用西門子博途SCL編寫水處理行業電機啟動算法 2024-12-27
- 西門子1200博圖里面下載PLC時,下載不了或者報錯的幾種常見原因及對策詳解 2024-12-27
- 兩臺S7-200 smart Profinet通信案例,超詳細! 2024-12-27
- 西門子200SMART PLC順控指令詳解 2024-12-27
- 西門子200samrt-移位寄存器指令和移位指令詳解 2024-12-27
- 西門子200SMART PLC傳送指令詳解! 2024-12-27
- 兩臺西門子S7-200SMARTProfinet通信案例! 2024-12-27
- 兩臺西門子200Smart進行MODBUS TCP通信,附程序 2024-12-27
- 西門子S7-200 SMART如何回參考點(附程序) 2024-12-27
產品分類
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595