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



Teraz jest 28 lut 2025, o 17:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 7 kwi 2016, o 18:24 
Offline
Użytkownik

Dołączył(a): 27 sty 2016
Posty: 192
Pomógł: 2

Witam Was,
Mam proste pytanie: czy w C można używać warunków wewnątrz warunków? Dla przykładu taka konstrukcja (wzięta z powietrza, bez zastanowienia):

while
if
else
else continue
if
else
else
else
if



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2016, o 19:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Z takich konstrukcji wyjętych z kapelusza niewiele się dowiesz. Najlepiej napisz sobie jakiś kod i testuj. Można takich warunków pisać krocie, tylko jeśli już musisz to raz że ważne są klamry w odpowiednich miejscach a dwa to że łatwo się w takich pętlach zapętlić ....a stosik rośnie ;)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2016, o 19:06 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

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


tak wymyślone z głowy :) W języku C to tylko pizzy nie da się zamówić :)


Autor postu otrzymał pochwałę

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2016, o 19:20 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1085
Pomógł: 73

matekogon napisał(a):
tak wymyślone z głowy W języku C to tylko pizzy nie da się zamówić

jak nie? :D
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: 7 kwi 2016, o 19:26 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Jarecki napisał(a):
matekogon napisał(a):
tak wymyślone z głowy W języku C to tylko pizzy nie da się zamówić

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


Kolego podeślij całą bibliotekę :lol:

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2016, o 19:55 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1085
Pomógł: 73

matekogon napisał(a):
Jarecki napisał(a):
matekogon napisał(a):
tak wymyślone z głowy W języku C to tylko pizzy nie da się zamówić

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


Kolego podeślij całą bibliotekę :lol:


Jak pójdę do kuchni to spakuję i wyślę :lol:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2016, o 06:34 
Offline
Użytkownik

Dołączył(a): 27 sty 2016
Posty: 192
Pomógł: 2

Dziękuję Wam bardzo. Gimnastykowałem się z tym już jakiś czas i w Arduino IDE mi nie wychodziło. Myślałem, że nie da się i stąd mój romans z C. Chciałem się upewnić, że moje próby nie są skazane z góry na niepowodzenie. A ten projekt to: uC podaje określoną ilość impulsów na sterownik silnika krokowego, aby ten obrócił się dokładnie o 90 stopni. Każdy krok jest zliczany aż do 4000 i wyświetlany na wyświetlaczu LCD 1x6. Potem następuje zatrzymanie cyklu aż do wyzerowania. Poza tym po każdym ćwierćobrocie uC steruje dwoma siłownikami pneumatycznymi. (do tego miejsca w Arduino mi wszystko działało) I dodatkowo ma być przycisk "pauza", który zatrzyma działanie mechanizmu w przypadku odejścia od maszyny jeszcze przed limitem 4000szt. I z tą pauzą w Arduino sobie nie radziłem, bo zamierzałem dać przycisk, po wciśnięciu którego załączana byłaby instrukcja CONTINUE i program wpadałby w "martwą" pętlę, w której nic by się nie działo. Tak to sobie wykombinowałem. Pewnie można to zrobić bardziej elegancko, ale moje umiejętności NA RAZIE na to nie pozwalają.
m.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2016, o 08:27 
Offline
Użytkownik

Dołączył(a): 20 lip 2015
Posty: 83
Pomógł: 6

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


akurat to nie ma prawo działać, bo skoro spełnisz warunek a==5, a potem sprawdzisz czy a==6 to nigdy nie będzie prawdą :) prędzej coś w stylu

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


lub można pomyśleć czy nie da się zastosować jakiegoś switch-case ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2016, o 09:44 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 57
Pomógł: 5

Może ja dodam 3 grosze od siebie.
Zagnieżdżanie IFów jest jak najbardziej poprawne, jeżeli dotyczą one rożnych aspektów.
Należny jednak pamiętać, aby pisane warunki były poprawne logicznie i w odpowiedni sposób zoptymalizowane.
Czasami zamiast zagnieżdżać IFy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


No i najważniejsze czytelność kodu, jak zagnieździsz sobie 8 IFów to czy za pół roku, jak trzeba będzie coś poprawić na szybko będziesz w stanie to sprawnie ogarnąć? najczęściej stosuje się zagnieżdżenie do 2 poziomu IFów, a resztę opakowuje się w jakąś metodę w której znajdują się dalsze poziomy.
Przy zawodowym pisaniu oprogramowania należy pamiętać, że kodu nie pisze tylko się dla siebie. Ktoś za jakiś czas spojrzy w twój kod w celu jego modyfikacji/naprawy bugu i nie ma on tracić całego dnia na zrozumienie logiki i "co autor miał na myśli". Kod ma byc napisany w sposób czytelny i przejrzysty.



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