【SCL】博图——先入先出排序法

使用博图SCL语言来实现先入先出排序



前言

使用SCL完成一个先入先出排序

具体要求:最先输入的一个数值,最先输出出来,下面的数自动向前填充;

注:这里可能有两种理解:一是第一个输入的第一个出来,二是最后一个输入的第一个出来;

这里我们都来实现一下。



 数组变量建立

【SCL】博图——先入先出排序法_第1张图片

 记得在主程序调用函数块 

【SCL】博图——先入先出排序法_第2张图片





编写实现 

1.我们先要获取输入进来的值,然后存放到一个数组中;

首先判断输入的值是否大于0,然后进入for循环(这里以0..5为例),在for循环中判断数组中哪一个为0,找到后将输入值放在为0的数组中,然后清零退出循环。 

第1步存放输入值就完成了。 

IF  #输入值 > 0 THEN
    FOR #N := 0 TO 5 DO
        IF #SC[#N] = 0 THEN
            #SC[#N] := #输入值;
            #输入值 := 0;
            EXIT;
        END_IF;
        
    END_FOR;
END_IF;

2.第1个存进来的数第1个出来

 输出按钮控制通断,for循环来遍历数组,如果找到数组不等于0(那么就是为真的),就将里面的值存放在一个变量中,然后将数组的值和按钮清零退出循环;

这里我们就找到了第一个存进来的数值。

IF #输出按钮 THEN
    FOR #S := 0 TO 5  DO
        IF #SC[#S] <> 0 THEN
            #输出值 := #SC[#S];
            #SC[#S] := 0;
            #输出按钮 := 0;
            EXIT;
        END_IF;
    END_FOR;
END_IF;

 3.下面数组自动向前填充

 我们输出过之后,数组中就为0了,那怎么才能补上去呢?

这里我们用for循环进行一个判断,判断里面是否有一个为0,如果为0就将下一个数组的数补充上去,以此类推,直至填充完成。

注:这里I+1会导致数组越界,所以上面的数组数量要再加1才可以) 

FOR #I := 0 TO 5 DO
    IF #SC[#I] = 0  & #SC[#I+1]<>0  THEN
        #SC[#I] := #SC[#I + 1];
        #SC[#I + 1] := 0;
    END_IF;
END_FOR;

4.触摸屏演示

【SCL】博图——先入先出排序法_第3张图片



5.这里我们在看一下第2种理解,最后输入的最先输出 

 这里我们只要将输出时的循环顺序修改为逆序就可以了,S从5到1,来开始循环。

【SCL】博图——先入先出排序法_第4张图片

 以上就是先入先出排序法的全部内容了。




你可能感兴趣的:(SCL算法,算法,排序算法,经验分享,windows)