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



Teraz jest 16 lis 2024, o 16:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 22 gru 2012, o 21:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 gru 2012
Posty: 530
Lokalizacja: Bydgoszcz
Pomógł: 8

Witam!

Dalej ćwiczę sobie pisanie programików i mam bzdurny problem. Napisałem programik, który w pętli for odlicza liczby od 9 do 0 i prezentuje je na 1 wyświetlaczy 7-segmentowym. Proste jak smok, a jednak nie działa :P

Pierwsza pętla się wykonuje, wszystko się wyświetla, najpierw 9, sekunda przerwy, 8 sekunda przerwy aż do zera. Potem na wyświetlaczu mam same krzaki i nie wiem dlaczego?

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



_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 21:39 
Offline
Moderator
Avatar użytkownika

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

proponuję ci maleńką, maluteńką, maciupeńką - prawie niewidoczną zmianę w kodzie ;) ponieważ krótki a ty mocno startujesz to przeanalizowałem cały kod ;) na szczęście krótki ;)

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


spróbuj dostrzec tę różnicę, spróbuj zrozumieć dlaczego ona pomaga - a zaskoczysz kilka ważnych rzeczy w C jeśli chodzi o typy zmiennych .... ale nie obawiaj się w razie czego zadać dalszych pytań - chętnie dalej pomogę ;)

_________________
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: 22 gru 2012, o 21:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 gru 2012
Posty: 530
Lokalizacja: Bydgoszcz
Pomógł: 8

Hmm... faktycznie, po zmianie typu zmiennej działa tak jak powinno, ale dlaczego, to nie wiem... Przecież uint8_t odpowiada za zakres od 0 do 255 a int8_t ld -127 do 127. Różnicy nie widzę, możesz zdradzić o co tu chodzi? :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 21:53 
Offline
Moderator
Avatar użytkownika

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

spróbuj sobie przeanalizować co ci się dzieje ze zmienną cyferka w KAŻDYM kroku pętli, żeby było łatwiej załóżmy że zaczyna się nie od 9 tylko np od 2 ;) (gdy mamy typ ze znakiem int8_t)

wchodzimy w pętlę cyferka = 2, wyświetla nam się 2
cyferka zmniejszana jest o 1 i teraz = 1
wracamy na początek pętli - sprawdzany jest warunek czy cyferka >= 0 - zgadza się ;)
wyświetlamy cyferkę 1
zmniejszamy cyferkę o 1 i już jest = 0
wracamy na początek pętli - sprawdzamy czy jest >= 0 - no przecież JEST ;) = 0
więc wyświetlamy cyferkę 0
zmniejszamy cyferkę o jeden i teraz = -1 ;)
wracamy na początek pętli i sprawdzamy czy jest >=0 - OOOP !!! sorki nie jest - więc QNIEC PĘTLI ;)


a teraz to samo tylko że cyferka ma typ uint8_t - rozpatrzymy to od miejsca:

....
wyświetlamy cyferkę 1
zmniejszamy cyferkę o 1 i już jest = 0
wracamy na początek pętli - sprawdzamy czy jest >= 0 - no przecież JEST ;) = 0
więc wyświetlamy cyferkę 0

zmniejszamy cyferkę o jeden i teraz !!!!!! ACHTUNG MINEN !!!! ;) ... jeśli masz liczbę bez znaku o wartości = 0 i odejmiesz jeden to ile będzie równa wg ciebie ta zmienna ???? pewnie się nad tym nie zastanowiłeś - a będzie równa 255 ;) (licznik się przekręci) więc ????
wracamy na początek pętli i sprawdzamy czy jest >=0 - MNIAM no nadal jest większa od zero !!! więc QNIEC dalej wyświetlamy cyferkę ale o kodzie 255 ;) a masz taki znak zdefiniowany w swoim generatorze znaków ??? ;) oooj chyba nie - więc pętla będzie biegała tak caaaaaaaaaałe życie programu aż do resetu albo zabrania zasilania

_________________
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: 22 gru 2012, o 22:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 gru 2012
Posty: 530
Lokalizacja: Bydgoszcz
Pomógł: 8

Obrazek

No przecież to jest oczywiste... I pomyśleć, że na studiach programuję w C++, w pracy używam SQL, a na coś takiego nie wpadłem...

Mirek, na Ciebie to można zawsze liczyć! :)

Dzięki! Pzdr!

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 22:21 
Offline
Moderator
Avatar użytkownika

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

kila napisał(a):
No przecież to jest oczywiste... I pomyśleć, że na studiach programuję w C++, w pracy używam SQL, a na coś takiego nie wpadłem...


No to 10 pompek za karę ;)

_________________
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: 22 gru 2012, o 22:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 maja 2012
Posty: 256
Pomógł: 3

Mirek wszystkich zamiast na politechniki to na AWF chce wysłać :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 23:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

ajek napisał(a):
Mirek wszystkich zamiast na politechniki to na AWF chce wysłać :D

Bo trochę ruchu każdemu się przyda. Jak ciało się dotleni to i umysł jaśniejszy się stanie :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 23:17 
Offline
Moderator
Avatar użytkownika

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

to taka forumowa kara - przed zesłaniem do lochów - najpierw po prostu pompki ;)

_________________
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 gru 2012, o 01:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Widzę że Mirek zaczął stosować moją metodę - " W zdrowym Ciele zdrowy duch :D "



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2012, o 01:27 
Offline
Moderator
Avatar użytkownika

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

taaaak to zdaje się kolega kidcowboy zapoczątkował tę zdrową tradycję na naszym forum ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

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