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? 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 5 cze 2025, o 21:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 21 sty 2017, o 16:12 
    Offline
    Użytkownik

    Dołączył(a): 06 sty 2012
    Posty: 25
    Lokalizacja: Wejherowo
    Pomógł: 0

    Cześć. Czy zmienna czas musi być static aby wyświetlić się 0 1 2 3 4?
    Czy tak będzie działało?

    [ a kolega jest z nami od 2012 roku i nie wie jak się wstawia kod źródłowy na forum ? bardzo proszę poprawić zgodnie z instrukcją: topic7402.html i pamiętać o tym na przyszłość - mirekk36 ]

    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 22 sty 2017, o 20:41 przez peikman, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2017, o 16:42 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    Załóżmy że masz to w pętli while(1). Przeanalizujmy co się dzieje bez "static".

    Pierwszy obieg pętli while:
    -Inicjalizujemy zmienną "licznik" liczbą 0
    -Sprawdzamy czy "licznik" jest mniejsze od 5 (aktualnie ma wartość 0)
    -Inicjalizujemy zmienną "czas" liczbą 0
    -Wyświetlamy zmienną "czas" (aktualnie ma wartość 0)
    -Inkrementujemy zmienną czas
    -Inkrementujemy zmienną licznik

    Drugi obieg pętli:
    -Inicjalizujemy zmienną "licznik" liczbą 0
    -Sprawdzamy czy "licznik" jest mniejsze od 5 (aktualnie ma wartość 0)
    -Inicjalizujemy zmienną "czas" liczbą 0
    -Wyświetlamy zmienną "czas" (aktualnie ma wartość 0)
    -Inkrementujemy zmienną czas
    -Inkrementujemy zmienną licznik

    Widzisz w czym problem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2017, o 17:04 
    Offline
    Użytkownik

    Dołączył(a): 06 sty 2012
    Posty: 25
    Lokalizacja: Wejherowo
    Pomógł: 0

    Myślę, że program nie wyjdzie z pętli if do czasu gdy licznik nie wzrośnie do 5.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2017, o 17:07 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    If to nie pętla, tylko instrukcja warunkowa. While to pętla.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2017, o 17:13 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2015
    Posty: 269
    Pomógł: 34

    dobra to tak musi być static aby się tak wyświetlała. Zobacz na ten program
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    teraz zmienna licznik nie ma static i za każdym obiegiem pętli będzie się tworzyć na nowo czyli ostatecznie zawsze na początku pętli będzie miała wartość 0 niezależnie ile razy pętla się wykona
    a teraz ze słówkiem static.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    zmienna licznik tylko raz zostanie stworzona i do niej będzie przypisana liczba 0 tylko raz niezależnie ile razy pętla się obiegnie . W tym programie za każdym obiegnięciem pętli będzie się zwiększać o 1 zmienna licznik. za drugim obiegiem pętli zmienna licznik nie utworzy się na nowo jest zrobiona tylko raz i działa już do końca ;) .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2017, o 19:23 
    Offline
    Użytkownik

    Dołączył(a): 06 sty 2012
    Posty: 25
    Lokalizacja: Wejherowo
    Pomógł: 0

    Jeśli chodzi o kod to napisałem trochę bez przemyśleń. Nie do końca o to mi chodziło. Jeszcze raz :)

    Czy zmienna czas w przypadku gdy jest zmienną automatyczną to będzie tworzona od nowa po każdym sprawdzaniu warunku w pętli while?
    Czyli czy zmienna czas musi być static? Czy nie aby wyświetlić 0 1 2 3 4.


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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2017, o 19:32 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    peikman napisał(a):
    OK. Już się poprawiam

    chodzi o EDYCJĘ pierwszego postu w wątku (na górze) to ten edytuj i popraw

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sty 2017, o 10:09 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    Właśnie po to jest "static" aby zachować wartość zmiennej. W przeciwnym wypadku będzie zawsze inicjalizowana, w tym przypadku, liczbą 0.



    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: 8 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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