Skocz do zawartości

Dylemat z użyciem else/if


Mikolajkie

Pomocna odpowiedź

Witam, założyłem wcześniej wątek, o tym. Dziękuję @farmaceuta @ethanak @SOYER i innym za tłumaczenie, o co chodziło z else/if'ami, ale nadal nie wiem, kiedy ich użyć. Czy ktoś dałby mi jakieś przykłady, czy coś innego. Nadal nie wiem, w jakich przypadkach ich użyć. Bardzo proszę o wytłumaczenie.

Link do komentarza
Share on other sites

(edytowany)

@AntekBezak Konkretnie chodzi o Arduino. Ja już się poddaję, bo naprawdę nie wiem, kiedy to wykorzystać 😞

Edytowano przez Mikolajkie
Link do komentarza
Share on other sites

(edytowany)

Pytasz o rzeczy , których nie rozumiesz... gorzej - ty nie rozumiesz rzeczy, które są konieczne do zrozumienia rzeczy o jakie pytasz. Kolega pyta się o język programowania, Ty odpowiadasz o platformie/frameworku. Myślę że musisz się pouczyć, bo odpowiedź na pytanie nie sprawi że zaczniesz wszystko rozumieć. Spróbuję odpowiedzieć: if(warunek logiczny) then wykonaj else zrób coś innego...

Instrukcja powinna zawierać warunek logiczny i nie tylko logiczny, ale taki, który nie jest na przykład stałą i zawsze da to ten sam wynik.

To czy będziesz używał if-then-else, czy skonstruujesz to samymi ifami nie jest aż tak istotne - istotna jest logika i wiedza(zrozumienie/wyobrażenie) , jaką ścieżką warunków podąży program/procesor".

Po twoich postach widać, że albo powinieneś się poddać, albo solidnie douczyć.

Pozdrawiam.

edit:

Jeszcze chciałbym zwrócić uwagę, że wielopoziomowe ify są bardziej czytelne i prostsze do zrozumienia niż zagnieżdżone warunki - przykład:

 

if((X<7) && (X>32)) { y = 0;}

Może i to ładnie wygląda że to w jednej linii, ale dla mnie o wiele łatwiej zrozumieć to samo zapisane w taki sposób:

if(X<7){

  if(X>32){

    y=0;

 }

}

 

Kod działa tak samo i kompilator generuje ten sam kod, ale czytelność i prostota się zwiększa. A w prostocie siła 🙂 (Jak w algorytmie Brasenhama).

 

Edytowano przez virtualny
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

6 minut temu, Mikolajkie napisał:

@AntekBezak Konkretnie chodzi o Arduino. Ja już się poddaję, bo naprawdę nie wiem, kiedy to wykorzystać 😞

Źle do tego podchodzisz...nie ma "sztywnych" zasad co do stosowania else/if...stosujesz je wtedy kiedy są dla ciebie wygodne i czytelne...jeden kod można napisać na  tysiąc sposobów,oczywiście jeśli w danej sytuacji użycie else/if jest najkorzystniejsze to ten sposób powinieneś wykorzystać, choć nie ma przymusu...ciężko przytoczyć konkretne przykłady bo każdy logikę kodu układa troszkę inaczej...

Link do komentarza
Share on other sites

@farmaceuta Dzięki! Jestem osobą anankastyczną (nie jestem pewien, czy tak to się nazywa) i tak mam czasami, że byle jakich rzeczy muszę mieć jakieś sztywne warunki, nawet jeśli nie chcę się nich trzymać 🙂

Link do komentarza
Share on other sites

@virtualny Dzięki, nie robiłem nic przy Arduino od roku, ale kiedy ostatnio programowałem Arduino to nie byłem mistrzem, a raczej początkującym. Mimo to dzięki, za opisanie wszystkiego 😄

Link do komentarza
Share on other sites

@farmaceuta @virtualny Czyli rozumiem już, że mogę to wykorzystywać, kiedy jest to dla mnie wygodne i ważne, żebym zrozumiał cały kod. Z tego, co wiem liczy się też robienie wielu testów 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

@Mikolajkie o tak...im więcej testów będziesz robił tym szybciej wszystko zalapiesz, ja na początku to non stop siedziałem i klepałem to co mi do głowy przyszło i jakoś pomału wchodziło do głowy😉

Link do komentarza
Share on other sites

8 minut temu, Mikolajkie napisał:

Czyli rozumiem już, że mogę to wykorzystywać, kiedy jest to dla mnie wygodne i ważne, żebym zrozumiał cały kod. Z tego, co wiem liczy się też robienie wielu testów 🙂

Zobacz przykład if'a jak podałem, może Ci coś pomoże...

Link do komentarza
Share on other sites

Ja zwykle potrafię załapać niektóre rzeczy podczas pisania kodu, ale warto robić testy dla pewności, że wszystko będzie działać.

Link do komentarza
Share on other sites

@virtualny Jeśli robię bardziej skomplikowany kod, to używam czegoś takiego, żeby się rozczytać. Całkiem fajnie i praktyczne rozwiązanie 😄

Link do komentarza
Share on other sites

Przygotowałem coś bardzo łopatologicznego.

Mamy zmienną dana i chcemy sprawdzić w którym z czterech przedziałów znajduje się jej wartość:

  • < 10
  • od 10 do 20
  • od 20 do 30
  • powyżej 30.

Wyglądałoby to tak:

int dana = 25;

if (dana <= 10)                                         // sprawdzamy pierwszy zakres
{
  Serial.println("Wartość w pierwszym zakresie");       // tak, jest w pierwszym zakresie - drukujemy komunikat i przechodzzimy na koniec
} else {
  if ((dana > 10) && (dana <= 20))                      // nie jest w zakresie pierwszym, sprawdzamy w drugim
  {
    Serial.println("Wartość w drugim zakresie");        // tak, jest w drugim zakresie - drukujemy komunikat i przechodzzimy na koniec
  } else {
    if ((dana > 20) && (dana <= 30))                    // nie jest w zakresie pierwszym, ani w drugim, sprawdzamy w trzecim
    {
      Serial.println("Wartość w trzecim zakresie");     // tak, jest w trzecim zakresie - drukujemy komunikat i przechodzzimy na koniec
    } else {
      Serial.println("Wartość w czwartym zakresie");    // nie jest w żadnym z poprzednich zakresów, a więc jest w czwartym zakresie
    }
  }
}
  • Lubię! 1
Link do komentarza
Share on other sites

@virtualny weź może zweryfikuj ten przykład, który podałeś bo wydaje mis się, że:

 

if ((X < 7) && (X > 32)) { y = 0; }

// to nie to samo co: 

if (X < 7) {

  if (X > 32) {

    y = 0;
  }
}

 

Link do komentarza
Share on other sites

(edytowany)

@jand Wolę zapis

int dana = 25;

if (dana <= 10) { Serial.println("Wartość w pierwszym zakresie");  }
else if (dana <= 20) { Serial.println("Wartość w drugim zakresie"); } 	// gdy nie jest w pierwszym to sprawdzam w drugim itd
else if (dana <= 30) { Serial.println("Wartość w trzecim zakresie"); }
else {  Serial.println("Wartość w czwartym zakresie"); }

 

Edytowano przez bjrk
  • Lubię! 2
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.