Czy w instrukcji warunkowej "if" może być druga instrukcja "if"

2013-05-28 20:36
bajos_notlogged
0

Witam wszystkich.

Mam pytanie, czy w instrukcji warunkowej if jako jej instrukcja może być kolejna instrukcja warunkowa if.
Coś takiego:


if(warunek)
{
    if(warunek)
    {
        (instrukcja)
    }
}
edytowany 2x, ostatnio: furious programming, 2016-12-13 18:26
srsly tak trudno to sprawdzić? o_O - Shalom 2013-05-28 20:55

Pozostało 580 znaków

2013-05-28 20:37
1

Jak najbardziej i w każdym języku ... no prawie ... przynajmniej w każdym C podobnym.
Należy też pamiętać iż:

if(warunek1)
  {
    if(warunek2)
     {
      instrukcja;
     }
  }

Jest tożsame z:

if(warunek1 && warunek2)
  {
   instrukcja;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2013-05-28 20:40

Pozostało 580 znaków

2013-05-28 20:38
1

Może. Może być ich jeszcze wiele. Zawsze pamiętaj jednak, że zbytnie zagnieżdżanie tych instrukcji powoduje spadek czytelności i wzrost skomplikowania kodu - należy robić to rozsądnie.


"(...) otherwise, the behavior is undefined".

Pozostało 580 znaków

2013-05-28 20:55
bajos
0

_13th_Dragon wiem, że znaczy to samo, ale ja chcę to wykorzystać do wklepywania szyfru i ten kod ma być do sterowania mikrokontrolerem AVR więc jak by taki warunek był jak pokazałeś to można by w jednym czasie wszystkie klawisze wcisnąć i by zadziałało.Znacie może jakiś sposób na sprawdzanie po kolei warunków i dopiero w ostatnim wykonanie instrukcji [jestem bardzo początkujący :E] ?

Tak jak opisałeś to przynajmniej ja nie rozumiem, podejrzewam że inni też. Jeżeli u ciebie mogą wszystkie naraz wystąpić to to co napisałeś zadziała dokładnie tak samo. Dla sprawdzenia kilku warunków pod rząd służy switch() - _13th_Dragon 2013-05-28 21:00

Pozostało 580 znaków

2013-05-28 21:05
1

więc jak by taki warunek był jak pokazałeś to można by w jednym czasie wszystkie klawisze wcisnąć i by zadziałało

Istnieje 99% szans, że ten kod tak czy siak zostanie zoptymalizowany do formy if (foo && bar), bo one są identyczne w działaniu (nie zapominaj dodatkowo o short-circuit evaluation oraz tym podobnych).

Znacie może jakiś sposób na sprawdzanie po kolei warunków i dopiero w ostatnim wykonanie instrukcji

if (a && b && c && d)
 do_somethin'();

?


edytowany 1x, ostatnio: Patryk27, 2013-05-28 21:05

Pozostało 580 znaków

2013-05-28 21:11
1

Czy przypadkiem nie próbujesz wyważyć otwartych drzwi?
http://edap.pl/artykuly/obsluga-przyciskow-w-avr


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-05-28 21:13
bajos
0

I tam wpisuje w tym if warunki ile chce tylko muszą być oddzielane " && " i w do_somethin'(); wpisuje instrukcje i ona wykona się jak po kolei warunki zostaną spełnione czy w dowolnej kolejności?Ja chcę uzyskać efekt żeby były w kolejności i, że mogą być spełnione nawet przez chwilę każdy?

Pozostało 580 znaków

2013-05-28 21:14
1

Wait, wait.
Chcesz zrobić coś takiego, że jak którykolwiek z warunków jest spełniony (operator ||), czy jak wszystkie na raz są spełnione (operator &&)?


Pozostało 580 znaków

2013-05-28 21:17
bajos
0

Ja chce coś takiego:
-sprawdza czy kliknięty przycisk 1 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 2 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 3 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 4 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 5 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 6 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 7 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 8 (nawet przez chwilę)
-sprawdza czy kliknięty przycisk 9 (nawet przez chwilę)
-wykonuje instrukcję

Musi być zachowana kolejność sprawdzania przycisków.Nie chodzi mi o komendy do przycisków tylko o wzór jak to mam napisać.

Pozostało 580 znaków

2013-05-28 21:20
1
int x=0; // w x ustawiono zero bitów
if(a) x|=1; // w x ustawiono pierwszy bit
if(b) x|=2; // w x ustawiono drugi bit
if(c) x|=4; // w x ustawiono trzeci bit
if(d) x|=8; // w x ustawiono czwarty bit
if(!(x&(x-1))) // czy w x ustawiono nie więcej niż jeden bit
  {
   if(a)      ...; // spełniony tylko warunek a
   else if(b) ...; // spełniony tylko warunek b
   else if(c) ...; // spełniony tylko warunek c
   else if(d) ...; // spełniony tylko warunek d
   else ...; // żaden warunek nie jest spełniony
  }
else ...;// kilka warunków spełnione

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2013-05-28 21:47
“Programs must be written for people to read, and only incidentally for machines to execute.” - Patryk27 2013-05-28 21:23
Czyżby próbujesz uwłaszczyć ludzkiej inteligencji? ;> - _13th_Dragon 2013-05-28 21:37
Nope - twierdzę jedynie, że gdy patrzę na kod i muszę się zastanawiać dłużej niż parę(naście) sekund co on robi, to jest źle ;) Coś jak ta linijka p&v;g;p&m;o;&v();k; z mojego kodu https://github.com/Piterolex/[...]mpiler/syntax/do_not_read.pas ;D - Patryk27 2013-05-28 21:44
Nie przesadzaj, nie ma nawet porównania. Poza tym na tą linijkę wystarczyło kilka sekund do zauważenia że wyżej to przez define podmienione, czyżby wg ciebie ten kod co podałeś jest czytelny? ;P - _13th_Dragon 2013-05-28 21:52
Dążę do tego, że dla newbie zarówno mój kod, jak i twój będą równo (nie)czytelne ;P Chociaż oczywiście Twoje podejście jest w ogólnym przypadku ok. - Patryk27 2013-05-28 21:53
Dla newbie to nawet a=b=0; nie czytelne, więc nie bierz newbie pod uwagę. - _13th_Dragon 2013-05-28 21:55

Pozostało 580 znaków

2013-05-28 21:26
bajos
0

Mógłbyś skomentować każdą linijkę co oznacza bo nie rozumiem tego kodu.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0