Új hozzászólás Aktív témák

  • KB.Pifu

    tag

    sziasztok!

    Írtam, hogy szeretném kiválasztani a móduszt egy rendezett adatsorból, sajnos nem volt időm még megcsinálni, nem nagyon akar összejönni, azt a bizonyos növekvő értékű adatsort ez szolgáltatja (siemens oldalon találtam)

    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1


    VAR_INPUT
    Data_DB : BLOCK_DB ;
    DB_length : WORD ;
    END_VAR
    VAR_TEMP
    Sort_done : BOOL ;
    Temp : WORD ;
    Count : WORD ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =Sort a Data Block using the bubble sort method
    //Data Block will be sorted in ascending order.
    //
    OPN #Data_DB; //Open Data Block
    M002: LAR1 P#DBX 0.0;
    SET ; //LET #Sort_done = TRUE
    S #Sort_done;
    L #DB_length;
    L 1;
    -I ;
    Loop: T #Count; //FOR INDEX = Count TO DB_length
    L W [AR1,P#0.0]; //IF M(INDEX) > M(INDEX+1) THEN
    L W [AR1,P#2.0];
    <=I ;
    JC M003;
    // change M(INDEX+1) for M(INDEX)
    L W [AR1,P#0.0]; //LET TEMP = M(INDEX)
    T #Temp;
    L W [AR1,P#2.0]; //LET M(INDEX) = M(INDEX+1)
    T W [AR1,P#0.0];
    L #Temp; //LET M(INDEX+1) = TEMP
    T W [AR1,P#2.0];
    SET ; // ??
    R #Sort_done; //LET #Sort_done = FALSE ??
    M003: TAR1 ;
    L 16; //NEXT INDEX
    +D ;
    LAR1 ;
    L #Count;
    LOOP Loop; //End of sorting pass
    AN #Sort_done; //If sorting is not done
    JC M002; //Jump Conditionally to M002
    BE ;


    END_FUNCTION

    stl-ben még nem vagyok profi, de azért ha magyaráznak megértem, szóval amit belinkeltem az nem egy black-box, szürkének mondanám.

    szóval nem sikerült megérteni teljes tökéletességgel hogyan működik a Sort_Done bool változó használata
    a dupla kérdőjeles sorokra volnék kíváncsi, miért kell SET-be állítani az RLO-t?

    azért büszkén mondom, hogy magamtól rájöttem, m003 után az AR-t egyszerűbben is lehet növelni :DD

    szóval akinek van ideje ne kíméljen, szeretnék melót találni ahhoz meg manapság kevés a papír, a tudás kell!

Új hozzászólás Aktív témák