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

[Rozwiązano] Bascom "Select Case" [Atmega8] [Bascom]

05 Sie 2018 20:31 411 9
  • Poziom 22  
    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.
  • Użytkownik usunął konto  
  • Poziom 20  
    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.
  • Pomocny post
    Użytkownik usunął konto  
  • Pomocny post
    Poziom 20  
    nowyARM napisał:
    rajszym napisał:
    select-case akceptuje również grupy i zakresy.

    Fakt, można napisać:
    Code:

    switch (wartosc & xxx)

    ale zasadniczo, case to jedna wartość.

    BASCOM: select-case, przykład:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 22  
    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: vbnet
    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.
  • Użytkownik usunął konto  
  • Poziom 22  
    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.
  • Użytkownik usunął konto  
  • Poziom 22  
    Program działa, skorzystałem jednak z Select-Case.