Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

uprościć zapis przyporządkowania

manius37 31 Mar 2012 10:36 914 8
  • #1 31 Mar 2012 10:36
    manius37
    Poziom 8  

    Witam
    jak takie przyporządkowanie zapisać prościej?

    IF xin1=1 THEN xout1:=1; END_IF
    IF xin1=2 THEN xout1:=2; END_IF
    IF xin1=3 THEN xout1:=3;END_IF
    IF xin1=4 THEN xout1:=4;END_IF
    IF xin1=5 THEN xout1:=5;END_IF
    IF xin1=6 THEN xout1:=6;END_IF
    IF xin1=7 THEN xout1:=7;END_IF
    IF xin1=8 THEN xout1:=8;END_IF
    IF xin1=9 THEN xout1:=9;END_IF
    IF xin1=10 THEN xout1:=10;END_IF
    IF xin1=11 THEN xout1:=11;END_IF
    IF xin1=12 THEN xout1:=12;END_IF
    IF xin1=13 THEN xout1:=1;END_IF
    IF xin1=14 THEN xout1:=2;END_IF
    IF xin1=15 THEN xout1:=3;END_IF
    IF xin1=16 THEN xout1:=4;END_IF
    IF xin1=17 THEN xout1:=5;END_IF
    IF xin1=18 THEN xout1:=6;END_IF
    IF xin1=19 THEN xout1:=7;END_IF
    IF xin1=20 THEN xout1:=8;END_IF
    IF xin1=21 THEN xout1:=9;END_IF
    IF xin1=22 THEN xout1:=10;END_IF
    IF xin1=23 THEN xout1:=11;END_IF
    IF xin1=24 THEN xout1:=12;END_IF

    Pozdrawiam

    0 8
  • #3 31 Mar 2012 20:30
    Defice
    Poziom 25  

    W większości języków/kompilatorów można zastąpić instrukcje if. Są one nieeleganckie i mało optymalne w takiej ilości jak. Podaj cały kod, może da się skrócić zapis lub jakoś zoptymalizować ewentualnie zastosować jak pisze Dżyszla dać jakiegoś switcha

    0
  • #4 31 Mar 2012 21:37
    manius37
    Poziom 8  

    Sprawa ma się następująco:
    program codesys, ten kod to blok funkcyjny w języku ST, który zmienia 24-godzinny tryb na 12, generalnie działa. Chce w wizualizacji zrobić zegar analogowy, dlatego muszę przyporządkować 24-godzinny tryb na 12. Jeżeli chce żeby wskazówka godzinowa przesuwała się płynnie to podobnie muszę zrobić dla minut i sekund tylko że tam będę miał do zrobienia 60 takich if-ów i dodatkowo będę musiał podzielić 1/60 i wpisywać np: IF xin3=1 THEN xout3:=0.016; END_IF, trochę z tym schodzi.

    0
  • Pomocny post
    #5 31 Mar 2012 22:10
    walek33
    Poziom 28  

    Nie znam tego programu, ale...
    patrząc na Twój kod można uprościć go do dwóch a nawet jednej linijki, jeżeli If posiada Else.
    I tak dwa wiersze:

    Code:
    IF xin1<=12 THEN xout1:=xin1; END_IF
    
    IF xin1>=13 THEN xout1:=xin1 - 12; END_IF

    Mam nadzieję, że <= i >= u Ciebie działa. :D
    jeden wiersz:
    Code:
    IF xin1<=12 THEN xout1:=xin1; ELSE xout1:=xin1 - 12; END_IF

    Wydaje mi się, że wybór warunkowy powinien mieć coś w rodzaju ELSE. Języki, które znam to mają.

    0
  • #7 01 Kwi 2012 10:20
    Tommy82
    Poziom 39  

    Dżyszla no Tak i Nie. Tak bo masz racje, nie bo autor chyba popełnił błąd, modulo da Ci w którymś momencie jednak 0 a w tych ifach u autora nie występuje, choć powinno ;)

    0
  • #9 01 Kwi 2012 16:46
    manius37
    Poziom 8  

    Dziękuje wszystkim za pomoc. Wasze sposoby działają :D
    Pozdrawiam

    0