Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 04:14


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
    Autor Wiadomość
    PostNapisane: 29 kwi 2019, o 16:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 582
    Pomógł: 0

    Witam mam pewien problem ze zrozumieniem działania pewnych zapisów języka C.
    Posłużę się przykładem zasięgniętym z lekcji z zielonej książki L17_PetitFS_WRITE:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Rozumiem że zmienna int0_flag raz na tyknięcię przerwania INT jest ustawiana na 1 dzięki temu jednorazowo jest spełniony warunek if ( int0_flag )
    nie wiem czy do końca rozumem dalszy zapis:

    if( ++s_cnt==60 ) s_cnt=0; --- czy zmienna s_cnt za każdym razem jak pętla wraca od początku zwiększa się 0 cnt+1 , a jak przeleci 60 razy to się ma wyzerować czy tak czy zwiększenie
    dokonuje się inaczej?

    A co znaczy zapis % w kolejnych warunkach:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Ostatnio edytowano 29 kwi 2019, o 16:56 przez AKSELINEK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2019, o 16:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 13 cze 2016
    Posty: 66
    Lokalizacja: Katowice
    Pomógł: 1

    % to dzielenie modulo :) -> Bluebook

    1%3=1
    2%3=2
    3%3=0
    4%3=1
    ...
    Czyli po prostu reszta z dzielenia.

    Wysłane z mojego POCOPHONE F1 przy użyciu Tapatalka


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2019, o 17:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 582
    Pomógł: 0

    Faktycznie jest to dzielenie dzięki wydaje się to takie proste , ale czy zrozumiałem dobrze że jest to podobne do zapisu:

    warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    wykonuje się dla 0,3,6,9,12,15 itd
    warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    wykonuje się dla 1,4,7,10,13,16 itd
    warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    wykonuje się dla 2,5,8,11,14,17

    czy tak?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2019, o 20:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2015
    Posty: 1448
    Lokalizacja: okolice Warszawa
    Pomógł: 149

    AKSELINEK napisał(a):
    if( ++s_cnt==60 ) s_cnt=0; --- czy zmienna s_cnt za każdym razem jak pętla wraca od początku zwiększa się 0 cnt+1 , a jak przeleci 60 razy to się ma wyzerować czy...

    mniej więcej...
    jeżeli program wejdzie w tego ifa, to najpierw zinkrementuje zmienną 's_cnt', potem sprawdzi czy nie jest czasem równa 60, - jeżeli jest, to wykona wpis '.. =0'.
    czyli jeżeli wejdzie z wartością '0', to najpierw zmieni na '1', a jeżeli wejdzie z wartością '59', to zmieni na 60 i porównując będzie zmuszona do wykonania ifa.(wyzerowania).
    AKSELINEK napisał(a):
    ...nuje się dla 2,5,8,11,14,17

    czy tak?

    dokladnie tak.
    widzę po kodzie że masz podlączony wyświetlacz.
    możesz sprawdzić wypisując resztę z dzielenia różnych liczb przez różne liczby i wyświetlając na ekranie w sąsiedniej pozycji. ;)
    pozdrawiam.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO