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



Teraz jest 22 lut 2025, o 21:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 12 lip 2015, o 00:05 
Offline
Nowy

Dołączył(a): 04 cze 2015
Posty: 11
Pomógł: 0

Witam!

Jak w temacie - mam pewne problemy ze zrozumieniem tego rozdziału.
Chodzi mi konkretnie o zmienną "idx". Nie wiem czy jej wartość zależy jedynie od tego jaką zmienną jej przypiszemy, czy nie. Myli mnie ta część książki:

"enum t_dzien {pon, wto, sro, czw, pia, sob, nie};
(...)
enum t_dzien dzien = sro;
(...)
switch(dzien)
{
case sro:
instrukcja1;
instrukcja2;
break;
case pia:
instrukcja3;
instrukcja4;
break;
case nie:
instrukcja5;
}
(...)"


Patrząc na tą linijkę programu "enum t_dzien dzien = sro;" z czego ja rozumiem zmiennej "dzien" przypisujemy liczbę 3. Jednak patrząc na dalszą część kodu musi dochodzić do zmian jej wartości.
Bardzo byłbym wdzięczny za rozjaśnienie mi tej kwestii.
Pozdrawiam! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2015, o 02:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

ferre111 napisał(a):
(...)Chodzi mi konkretnie o zmienną "idx". Nie wiem czy jej wartość zależy jedynie od tego jaką zmienną jej przypiszemy, czy nie. (...)
To trochę nie tak.
Pomiędzy nawiasami { i } podane są zmienne (jest siedem tych zmiennych), którym kompilator automatycznie przypisał wartości licząc od zera, CHYBA że przypiszemy jakiejś zmiennej inną wartość. Jest to napisane w książce Pana Mirka mniej/więcej w połowie strony.
Zmienną jest zmienna tablicowa "dzien".


Wróćmy do Twoich pytań:
ferre111 napisał(a):
(...)Patrząc na tą linijkę programu "enum t_dzien dzien = sro;" z czego ja rozumiem zmiennej "dzien" przypisujemy liczbę 3.(...)
sro jest zaindeksowana w tablicy dzien jako 2-ga (bo numerujemy od zera), czyli w tym wypadku zmiennej dzien przypisujemy liczbę 2, ponieważ sro = 2.


ferre111 napisał(a):
(...)Jednak patrząc na dalszą część kodu musi dochodzić do zmian jej wartości.

Nie ma żadnej zmiany wartości, bo w instrukcji switch "odpytujemy" "co siedzi" pod zmienną dzien a nie co siedzi pod zmienną np. wto ;) .
Switch sprawdza, który z warunków (które są po "case") spełnia zmienna dzien. To wszystko. Mam nadzieję, że jakoś pomogłem. ;)

Pozdrawiam! j23 Jarek


Autor postu otrzymał pochwałę

_________________
"O sygnałach bez całek" Czesław Frąc



Ostatnio edytowano 14 lip 2015, o 00:21 przez j23, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2015, o 23:41 
Offline
Nowy

Dołączył(a): 04 cze 2015
Posty: 11
Pomógł: 0

Bardzo dziękuję za objaśnienie! :)
Zmyliła mnie właśnie ta instrukcja switch. Czy występowanie jej w takiej aplikacji nie jest bezsensu? Skoro zmienna (stała?) "dzien" się nie zmienia to po co tworzyć taką instrukcję?

Jak teraz zerknąłem jeszcze raz do książki to kod z użyciem tej instrukcji jest poprzedzony linijką:

if (dzien == pia) instrukcja; (z czego ja rozumiem instrukcja nie zostanie w tym przypadku wykonana)

A dopiero po niej jest podana opcja z użyciem instrukcji switch. Ale czy nie lepiej było by ją streścić do takiej wersji:

switch(dzien)
{
case sro:
instruckja1;
instrukcja2;
}


Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lip 2015, o 07:17 
Offline
Moderator
Avatar użytkownika

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

Proponuję ci skupić się na tym czym jest enum a nie na tym czy lepiej stosować IF() czy SWITCH() ... bo to całkiem inna sprawa i wcale nie taka oczywista, przy okazji dodam że zdecydowanie w niektórych przypadkach jest lepiej użyć IF'a .. Nie mówię o tym prostym przypadku bo tu jest to KOMPLETNIE bez znaczenia - a pokazałem to tylko na przykładzie IF'a


Autor postu otrzymał pochwałę

_________________
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: 14 lip 2015, o 00:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

ferre111 napisał(a):
Czy występowanie jej w takiej aplikacji nie jest bezsensu? Skoro zmienna (stała?) "dzien" się nie zmienia to po co tworzyć taką instrukcję?
Nie pisz tak proszę Kolego Ferre111, że coś jest "bezsensu", albo "poco to w ogóle" itp. :?
Panu Mirkowi może się zwyczajnie zrobić przykro, a włożył on sporo trudu w napisanie tej książki i bardzo dobrze ją napisał. Przykłady, które podał - przetestował. Mogły trafić się literówki, lub coś jest niedopisane, ale pamiętaj:
"errare humanum est" - co Pan Mirek niejednokrotnie podkreślał. Zresztą większość spraw, które były nie do końca jasno opisane wytłumaczył on w swoich filmach-poradnikach na YouTube, które powinieneś obejrzeć.

Rozumiem, że Ci się spieszy, więc wracając do Twojego pytania: Mówiąc najkrócej jak można switch'a i enum stosujemy po to, żeby kod który piszemy (także i dla nas samych) stał się bardziej czytelny, a czasami także i bardziej optymalny jeśli chodzi o zasoby czasowe i pojemnościowe MCU. W tym konkretnym przypadku switch i enum skracają kod w pliku *.c i sprawiają, że jest bardziej czytelny, a to się przydaje, gdy projektujesz menu wielopoziomowe dla MCU, o czym właśnie między innymi tam w książce pisze - tylko, że pisze dalej w przykładach. ;)
Reszta jest w książce Pana Mirka i w jego poradnikach ;)

Pozdrawiam! j23 Jarek


Autor postu otrzymał pochwałę

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lip 2015, o 12:52 
Offline
Nowy

Dołączył(a): 04 cze 2015
Posty: 11
Pomógł: 0

Och w żadnym wypadku nie chciałem moim postem podważać tego co jest napisane w książce ani zdolności Pana Mirka w przekazywaniu wiedzy! Powiem nawet więcej - Bluebook jest jak dotąd najlepszą książką stricte naukową jaką miałem przyjemność czytać. Więc jeśli moje słowa zostały tak zinterpretowane to bardzo przepraszam, nie miałem tego na celu, a słowo "bezsensu" proszę tu traktować w formie pytania, a nie stwierdzenia :)
Dziękuję za poświęcony czas! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2015, o 19:18 
Offline
Nowy

Dołączył(a): 19 maja 2015
Posty: 2
Pomógł: 0

Nie rozumiem pewnej kwestii z książki Pana Kardasia jeżeli chodzi o
Cytuj:
enum t_dzien {pon, wto, sro, czw, pia, sob, nie};
enum t_dzien dzien = sro;

a dokładniej sensu drugiej linijki. Jeżeli dobrze zrozumiałem Pana Kardasia, to pierwsza linijka przyporządkowuje kolejno liczby od 0 do 6 dla zmiennych pon, wto, itd.. Jeżeli więc w pierwszej linijce jest ustalone, że zmienna sro = 2; to dlaczego w drugiej jest "enum t_dzien dzien = sro;". Nie wystarczyło by naspisać "dzien = sro;"? Potrafi mi ktoś jasno wytłumaczyć czym się to różni?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2015, o 19:30 
Offline
Moderator
Avatar użytkownika

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

rupert1990 napisał(a):
Nie wystarczyło by naspisać "dzien = sro;"? Potrafi mi ktoś jasno wytłumaczyć czym się to różni?

przecież w książce masz to napisane. Druga linijka nie jest po to żeby przypisać zmiennej dzień wartość sro, tylko pokazuję w drugiej linijce jak można sobie definiować zmienne typu wyliczeniowego.

_________________
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: 28 wrz 2015, o 18:58 
Offline
Nowy

Dołączył(a): 19 maja 2015
Posty: 2
Pomógł: 0

mirekk36 napisał(a):
Druga linijka nie jest po to żeby przypisać zmiennej dzień wartość sro, tylko pokazuję w drugiej linijce jak można sobie definiować zmienne typu wyliczeniowego.

Musiałem się nad tym dłuższą chwile zastanowić, żeby to zrozumieć, ale dzięki tej celnej uwadze szybko pozbyłem się wszelkich wątpliwości. Dziękuję :)
Po za tym jest jeszcze mała podpowiedź na końcu rozdziału "3.7. Tablice" na 148 str.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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