Witam! 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.
|
|||
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.
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.".
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ć.