Zapisywanie warunkow


Witam!
Mam problem z dokładnym zrozumieniem warunku Case,ogólnie wiem o co chodzi,ale za mało.
Mam napisany taki o to warunek umiejscowiony jest w pętli głównej:

           If Godziny = G And Minuty = M And Sekundy < 2 And Poz_menu = 0 And Auto = 0 Then Flaga = 1       'flaga- wlaczenie ogrzewania
           If Auto = 1 And Tem_zew < Tem Then Flaga = 1
             If Godziny = G1 And Minuty = M1 And Auto = 0 Or U < 11 Or Tem_zew >= Tem Then Flaga = 0       'U-napiecie,
              If Flaga = 1 Then
             Reset Led1
 
              Else
              Set Led1
                End If

To działa poprawnie ,ale jakoś tak brzydko.Jak napisać to w Case?
Kombinuje ,czytam i nic z tego nie wychodzi.




Portret użytkownika mirley

Re: Case

Case nadaje się do sytuacji gdy jest jedna zmienna która może przyjmowac wiele wartości i wtedy robisz case od tej zmiennej. U Ciebie jest za duzo warunkow w tym ifie, nie ma sensu robić z tego na siłe case

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kaktus

Krótko mówiąc case to

Krótko mówiąc case to instrukcja "wyboru" dla jednej zmiennej jak przytoczył Mirley.

Umożliwia ona wykonanie różnych "działań" w zależności od przyjętej wartości tej jednej zmiennej.

W Twoim przytoczonym kodzie nic takiego nie ma miejsca. Masz instrukcję warunkową której działanie uzależnione jest od "kupy" zależnośći (zmiennych).

Co bym mógł powiedzieć to spróbowałbym zmienić ten skomplikowany warunek na zagnieżdżone instrukcje z pojedynczymi warunkami. Na pewno wygenerują mniej binarki. A być może udało by się to jeszcze jakoś zoptymalizować. Sprawa do przemyślenia.

Jeżeli zmienna flaga nie jest ustawiana dodatkowo w nie pokazanej części kodu jak dla mnie linia druga jest zbędna - zastąpił bym nią linię 4. Z układu wcięć domyślam się, iż program nie działa jak się tego spodziewasz, lub wcięcia są przypadkowe. (Wykonywanie linii 3 nie jest uzależnione od warunku w linii 2.)

kaktus

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".

Portret użytkownika gosc

Dzieki za zainteresowanie.No

Dzieki za zainteresowanie.No już wiem,ze case się do tego nie nadaje.
Te warunki działają jak powinny.Wielokrotnie to zmieniałem i myślałem nad tym.Wszystko działa poprawnie,tylko zapisywanie tylu warunków w jednej zmiennej nie podoba mi sie.Program musi sprawdzić kilka zmiennych i od tego zależy,czy uruchomi ogrzewanie ,czy nie.To jest ,tylko fragment kodu ,próbowałem to rozpisywać na pojedyncze warunki i nie wychodziło mi to poprawnie.Druga linijka ma za zadanie uruchamiać ogrzewanie gdy jest ustawiona funkcja automatycznego sterowania.Nie zależnie od innych ustawień.Moze trochę jeszcze posiedze nad tym i uda sie to trochę zmienić.