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 9 cze 2025, o 19:55


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 1 cze 2017, o 16:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    Witam niejasność dotyczącą strony 75 w BB gdzie pisze cytuje

    Cytuj:
    Bardzo istotną i pozytywną cechą języka C jest to , że mamy możliwość definiowania zmiennych w locie.
    Cóż to oznacza ? Najpierw odwołam się do innych języków , być może miałeś możliwość poznania wcześniej niektórych .Okazuje się bowiem , że najczęściej w innych językach występuje konieczność definiowania zmiennych na początku bloku kodu programu lub bloku funkcji itp. Na szczęście w języku C nie ma takich ograniczeń, co oznacza , że możemy definiować zmienne w dowolnym miejscu kodu programu.


    1.Jednakże zdefiniować zmiennej lokalanej wewnątrz pętli nie możemy ponieważ trzeba zrobić to tuż przed dlaczego ?

    2.czy jeśli umieszczę w pętli niżej definicje zmiennej to czy z każdym powrotem do góry pętli będzie ona tworzona od nowa ?

    3.Co z widocznością takiej zmiennej w pętli pod pętlą, czy będzie ona widoczną skoro znajduje się w ciele pętli?

    czemu tak
    Kod:
     int main(void)
            {
                uint8_t  x, a = 11; // zdefiniowanie zmiennych w funkcji głównej main


                    while(1)
                       {
                         
                             x = a+5; // operacja dodania do siebie zmiennej a i liczby 5 , zapisanie do zmiennej x wyniku

                        }
             }


    a nie tak skoro z książki wynika co innego przynajmniej tak pisze na stronie 75.

    Kod:
      while(1)
         {
               uint8_t  x , a = 11; // zdefiniowanie zmiennych wewnątrz pętli

                           x= a+5; // operacja dodania do siebie zmiennej a i liczby 5 , zapisanie do zmiennej x wyniku
          }




    nie rozumiem dlatego proszę o objaśnienia klarujące moje myśli Dziękuje :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 cze 2017, o 17:28 
    Offline
    Moderator
    Avatar użytkownika

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

    procek87 napisał(a):
    1.Jednakże zdefiniować zmiennej lokalanej wewnątrz pętli nie możemy ponieważ trzeba zrobić to tuż przed dlaczego ?

    No podajesz cytat z książki a piszesz jakieś dziwne wnioski ? Że niby dlaczego nie możemy ? kto ci tak powiedział ? Pewnie że możemy wewnątrz pętli
    procek87 napisał(a):
    2.czy jeśli umieszczę w pętli niżej definicje zmiennej to czy z każdym powrotem do góry pętli będzie ona tworzona od nowa ?

    Tak
    procek87 napisał(a):
    3.Co z widocznością takiej zmiennej w pętli pod pętlą, czy będzie ona widoczną skoro znajduje się w ciele pętli?

    Pewnie że będzie widoczna pod pętlą - co to ma za znaczenie ? patrz na to liniowo

    UWAGA! czerwony kolor zarezerwowany jest dla moderatorów - proszę go nie używać w swoich postach

    _________________
    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: 1 cze 2017, o 18:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    czerwony aha ok będę pamiętał ;)

    dlaczego więc z każdym obiegiem pętli zmienna jest na nowo zapisywana tworzona i zapisywana jakąś wartością a jeśli ją utworzymy w ciele funkcji main to jest tworzona raz i koniec ,

    tworzę zmienną a inicjuje ją linijka niżej zwiększam ją o jeden gdzie kolejno pętla zawraca i tworzy na nowo zmienną a, już nie z zawartością 1 a 0,

    Kod:
    while(1){

         uint8_t a=0;
         a++;
    }


    gdzie w funkcji main sprawa wygląda inaczej bo tam kompilator raz utworzy zmienną i nie będzie ją tworzył kolejno od nowa bo przecież main to nie pętla nieskończona.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 cze 2017, o 18:37 
    Offline
    Moderator
    Avatar użytkownika

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

    procek87 napisał(a):
    dlaczego więc z każdym obiegiem pętli zmienna jest na nowo


    No weź sam pomyśl ;) masz w C wolną amerykankę, więc skoro tworzysz ją wewnątrz pętli to ZA KAŻDYM jej obiegiem musi zostać utworzona ... nie chcesz tego zjawiska? utwórz że ją przed pętlą główną albo za... pętlą główną ... w czym probliem ? ;)

    _________________
    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: 1 cze 2017, o 18:50 
    Offline
    Użytkownik
    Avatar użytkownika

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

    @procek87 :)
    procek87 napisał(a):
    tworzę zmienną a inicjuje ją linijka niżej zwiększam ją o jeden gdzie kolejno pętla zawraca i tworzy na nowo zmienną a, już nie z zawartością 1 a 0,

    Jeżeli chcesz by zmienna nie inicjowała się wewnątrz ciągle za każdym razem,
    to poczytaj o przedrostku static .
    Widzę że masz BB. ;) Są przykłady w przerwaniach.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 cze 2017, o 19:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    procek87 napisał(a):
    utwórz że ją przed pętlą główną albo za... pętlą główną ... w czym probliem ?


    Mirku napisałeś "przed pętlą główną" main rozumiem że miałeś na myśli zmienną globalną ?
    a pisząc za pętlą główną co miałeś na myśli?

    Dziekuję za tłumaczenie jestem początkujący ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 cze 2017, o 19:40 
    Offline
    Moderator
    Avatar użytkownika

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

    procek87 napisał(a):
    Mirku napisałeś "przed pętlą główną" main rozumiem że miałeś na myśli zmienną globalną ?


    Ja widzę że ty mylisz pojęcia, dla ciebie "pętla główna" to to samo co "funkcja main()" ? Z tego co piszesz wydaje się, że tak. A to błąd.

    Funkcja to funkcja ....

    natomiast w każdej funkcji może być pętla albo i wiele pętli ;) Przy czym mówi się, że w funkcji main() występuje tzw pętla nieskończona

    _________________
    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: 1 cze 2017, o 19:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    w każdej funkcji main() kryje się pętla nieskończona przecież taka pętla nigdy nie zawróci ? nie rozumiem dlaczego pętla nieskończona to się ni jak mam praktyki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 cze 2017, o 08:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    mirekk36 napisał(a):
    Przy czym mówi się, że w funkcji main() występuje tzw pętla nieskończona


    czy mówi się tak symbolicznie czy serio jest tak że main działa jak pętla w co wątpię ale pytam z ciekawości początkującego .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 cze 2017, o 08:45 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1173
    Lokalizacja: Kraków
    Pomógł: 94

    main() nie działa jak pętla. main() jest funkcją.
    Natomiast, w funkcji main() znajduje się pętla while(1){}, która wykonuje się w kółko tak długo, aż wartość w nawiasach (w tym przypadku "1") osiągnie zero. Ponieważ jest tam na stałe wpisana wartość 1, więc ta pętla będzie się wykonywała w nieskończoność.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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