logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Użycie Select Case dla grup wartości N w Bascom [Atmega8] [Bascom]

miroskop 05 Sie 2018 20:31 1110 9
REKLAMA
  • #1 17368377
    miroskop
    Poziom 23  
    Powiedzmy, że mam zmienną N, która może przyjmować wartości całkowite z przedziału od 1 do 20. Chciałbym żeby dla niektórych (rozmieszczonych przypadkowo) wartości wykonało się jedno polecenie a dla pozostałych drugie. Myślałem o instrukcji "Select Case" ale czy da się to zrobić w uproszczony sposób, czyli do jednego "Case" wstawiamy pierwszą grupę liczb, a do drugiego "Case" pozostałe liczby? Wpisywanie kolejno wszystkich przypadków jest trochę męczące a co będzie jak zmienna N zwiększy zakres do np. 100. Chyba, że jest lepszy sposób, którego nie znam, lub o nim zapomniałem. Proszę o pomoc.
  • REKLAMA
  • #2 17368461
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 17368572
    rajszym
    Poziom 21  
    nowyARM napisał:
    Switch-case akceptuje tylko jedna wartość, pomijając wyjątek default.
    Select-case akceptuje również grupy i zakresy.

    @miroskop Jeśli tych wartości nie uda się w żaden sposób posegregować wyrażeniem logicznym, to wyjściem może być utworzenie tablicy n-wymiarowej z kodami określającymi typ i sprawdzanie kodu dla każdej otrzymanej wartości.
  • REKLAMA
  • Pomocny post
    #4 17368578
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #5 17368581
    rajszym
    Poziom 21  
    nowyARM napisał:
    rajszym napisał:
    select-case akceptuje również grupy i zakresy.

    Fakt, można napisać:
    
    switch (wartosc & xxx)
    

    ale zasadniczo, case to jedna wartość.

    BASCOM: select-case, przykład:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #6 17368618
    miroskop
    Poziom 23  
    Dzięki koledzy za odzew. Jak wykorzystać Select-Case zgodnie z helpem Bascoma to wiem. Myślałem, że jest jakiś "myk" poza dokumentacją, który pozwoli pogrupować te liczby. Spróbuję wykorzystać instrukcję IF-THEN w taki sposób:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    Przetestuję na żywym organizmie to się dowiem czy zadziała.

    Edit:
    Jednak pozostałem przy Select-Case bo wpisywanie np. 20 operatorów "OR" w jednej funkcji IF-THEN jakoś do mnie nie przemawia. Trochę było pisania ale program działa tak jak chciałem.
  • #7 17369450
    Konto nie istnieje
    Konto nie istnieje  
  • #8 17369608
    miroskop
    Poziom 23  
    To co na pisałem jest bez sensu? Dlaczego? Zauważ jakie wartości wpisałem. Bo jak wykorzystać Twój sposób z przedziałami gdy trzeba wybrać np. wartości N: 1, 2, 5, 6, 8, 10, 11, 12, 15, 17, 18. Chyba jednak łatwiej zastosować Select-Case, co też uczyniłem.
  • REKLAMA
  • #9 17369631
    Konto nie istnieje
    Konto nie istnieje  
  • #10 17375466
    miroskop
    Poziom 23  
    Program działa, skorzystałem jednak z Select-Case.
REKLAMA