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



Teraz jest 28 mar 2024, o 18:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
 Tytuł: Ach te if'y
PostNapisane: 8 sie 2019, o 16:04 
Offline
Nowy

Dołączył(a): 28 kwi 2012
Posty: 18
Lokalizacja: Wrocław
Pomógł: 0

Witam.

Mam pytanie, dlaczego te dwa wyrażenia z if-ami nie działają tak samo w realu?

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


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


Bo myślałem, że są to dwa równoważne zapisy. Ale hardware mówi inaczej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 16:15 
Offline
Moderator
Avatar użytkownika

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

dobra zagadka ;) może ktoś podpowie - jeśli nie to później postaram się ja podpowiedzieć

_________________
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  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 17:27 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Cześć,
jak zachowa się else przy fałszu drugiego if w obydwu przypadkach?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 18:44 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

jerrylu napisał(a):
jak zachowa się else przy fałszu drugiego if w obydwu przypadkach?

Else wykona się tylko przy fałszu pierwszego ifa, drugi if niema alternatywy.

Więc powyższe warunki nie są ze sobą zgodne, bo jedyna szansa na ustawienie bitu na 1 nastąpi tylko wtedy kiedy w pierwszym warunku jest fałsz.
Natomiast drugi przypadek ustawi bit na 1 kiedy conajmniej jeden z warunków będzie miał fałsz.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 18:55 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Harry napisał(a):
Else wykona się tylko przy fałszu pierwszego ifa

Czy w drugim przypadku także pierwszy if (człon)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

musi być fałszem?



Ostatnio edytowano 8 sie 2019, o 18:57 przez jerrylu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 18:56 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Tak

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 18:58 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

ok, a co jeśli jest prawdziwy, a drugi jest fałszem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 18:59 
Offline
Nowy

Dołączył(a): 28 kwi 2012
Posty: 18
Lokalizacja: Wrocław
Pomógł: 0

Aha, chyba już widzę dlaczego w drugim przypadku mamy "generator" gdy przycisk jest wciśnięty na stałe (pierwsza połowa drugiego if'a jest spełniona).

A w pierwszej wersji nie ma tego efektu bo else się nie wykona gdy przycisk jest wciśnięty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 19:02 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Muszą być oba prawdą żeby się wykonał if(ustawienie bitu na 0), jeżeli będzie jeden albo oba fałszem to wtedy wykona się instrukcja Else.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 19:19 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

OK. Aby w obydwu wypadkach wykonał się else (kod działał tak samo) rzeczywiście pierwsza część musi być fałszem.
Różnica w działaniu wynika z faktu, że pierwsza część jest prawdziwa, a druga nie.
Czyli else wykonuje się tylko w drugim przypadku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 19:32 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Dokładnie tak :)
Blok Else się wykonuje tylko wtedy kiedy warunek jest nie spełniony, jeżeli jest spełniony wtedy wykonuje kod wewnątrz tego ifa, pomijając instrukcję else.
Oczywiście jeżeli mówimy tu o warunkach AND w ifie.
Jeżeli zastosujemy konstrukcję z OR, czyli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to żeby wykonało się nasze Else musiałyby byś oba warunki nie spełnione, jeżeli conajmniej jeden warunek będzie spełniony wtedy blok się wykona.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 8 sie 2019, o 19:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

Ciekawe pytanie, wielokrotnie sam sobie je zadawałem, a odpowiedź jest banalna.
W jednym przypadku sprawdzasz w pierwszej fazie 2 warunki, a w drugim 3 warunki. W tym drugim przypadku sprawdzanie jest "silniejsze" - wymaga dużo więcej "na wejście", zatem nie ma się co dziwić, że wynik może być zupełnie inny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 9 sie 2019, o 11:22 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Jak dla mnie, jeżeli założymy że niema drgań styków, to przy jednokrotnym naciśnięciu klawisza, lub jego przytrzymaniu:
- w pierwszym przypadku dioda zmieni stan raz
- w drugim, dioda będzie zmieniać stan co drugie przejście pętli (zakładam że to jest w pętli i podczas jednego naciśnięcia dioda kilka razy mignie).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Ach te if'y
PostNapisane: 9 sie 2019, o 14:06 
Offline
Nowy

Dołączył(a): 28 kwi 2012
Posty: 18
Lokalizacja: Wrocław
Pomógł: 0

ciamciak napisał(a):
Jak dla mnie, jeżeli założymy że niema drgań styków, to przy jednokrotnym naciśnięciu klawisza, lub jego przytrzymaniu:
- w pierwszym przypadku dioda zmieni stan raz
- w drugim, dioda będzie zmieniać stan co drugie przejście pętli (zakładam że to jest w pętli i podczas jednego naciśnięcia dioda kilka razy mignie).

Jest dokładnie tak jak piszesz. Nawet widać jak dioda przygasa. Ale co ważniejsze teraz już rozumiem czemu tak się układ zachowuje.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO