Warunek sterujący cd.


Ciąg dalszy podstaw programowania związanych z warunkiem sterującym – operatory.
Operatory są bardzo popularne i naprawdę przydanym elementem języka programowania – dzięki nim jesteśmy w stanie na przykład połączyć dwa warunki w jeden większy czy negować warunki jeśli jest taka konieczność.

Lista operatorów:
Operatory porównania:

  • == (równy)
  • != (nie równy)
  • < (większy od)
  • > (mniejszy od)
  • <= (większy lub równy)
  • >= (mniejszy lub równy)

Operatory logiczne

  • && (AND)
  • || (OR)
  • ! (not)Są to podstawowe operatory z jakich możemy skorzystać pracując nad naszym projektem. Poniżej przedstawiamy przykłady zastosowania wraz z opisem i komentarzem.[pastacode lang=”cpp” manual=”if%20(temperatura%20%3D%3D%20100)%0A%7B%0A%09%2F%2F%20wy%C5%9Bwietlamy%20informacj%C4%99%20%C5%BCe%20woda%20si%C4%99%20zagotowa%C5%82a%0A%7D” message=”” highlight=”” provider=”manual”/]

    W pierwszym przykładzie, najbardziej popularnym sprawdzamy kiedy jakiś parametr (temperatura wody) osiągnął konkretną wartość (np 100 stopni).

    [pastacode lang=”markup” manual=”if%20(pr%C4%99dko%C5%9B%C4%87%20!%3D%20pr%C4%99dko%C5%9B%C4%87_maksymalna)%0A%7B%0A%09%2F%2Fprzyspieszamy%20nasz%20pojazd%0A%7D” message=”” highlight=”” provider=”manual”/] Kolejny przykład, tym razem sprawdzamy jednak czy prędkość obecna nie jest równa prędkości maksymalnej – jeśli nie możemy przyspieszyć.Inny przykład łatwy do zapamiętania.[pastacode lang=”cpp” manual=”true%20%3D%3D%20!false%3B” message=”” highlight=”” provider=”manual”/]

    Poruszając się pojazdem musimy jednak pamiętać by nie przekroczyć prędkości maksymalnej, do przykładu drugiego warto więc dopisać jeszcze jeden warunek:

    [pastacode lang=”cpp” manual=”if%20(pr%C4%99dko%C5%9B%C4%87%20%3E%20pr%C4%99dko%C5%9B%C4%87%20maksymalna)%0A%7B%0A%09%2F%2Fhamujemy%20nasz%20pojazd%0A%7D” message=”” highlight=”” provider=”manual”/]

    Analogicznie możemy skorzystać z drugiego operatora porównania (mniejsze lub większe) :

    [pastacode lang=”cpp” manual=”if%20(pr%C4%99dko%C5%9B%C4%87%20*%202%20%3C%20pr%C4%99dko%C5%9B%C4%87%20maksymalna)%0A%7B%0A%09%2F%2F%20gaz%20do%20dechy%20%0A%7D” message=”” highlight=”” provider=”manual”/]

    Jeżeli prędkość obecna podwojona nadal jest mniejsza niż prędkość maksymalna, mocno dodajmy gazu.

    Wszystkie te nasze operacje możemy jednak zapisać dużo prościej korzystając z kolejnego operatora:

    [pastacode lang=”cpp” manual=”if%20(pr%C4%99dko%C5%9B%C4%87%20%3E%3D%20pr%C4%99dko%C5%9B%C4%87_maksymalna)%0A%7B%0A%09%2F%2F%20hamujemy%0A%7D%0Aelse%0A%7B%0A%09%2F%2F%20mo%C5%BCemy%20delikatnie%20przyspieszy%C4%87%20%0A%7D” message=”” highlight=”” provider=”manual”/] lub[pastacode lang=”cpp” manual=”if%20(pr%C4%99dkos%C4%87%20%3D%3C%20pedko%C5%9B%C4%87%20maksylana)%0A%7B%0A%09%2F%2F%20utrzymujemy%20t%C4%85%20pr%C4%99dko%C5%9B%C4%87%0A%7D%0Aelse%0A%7B%0A%09%2F%2Fhamujemy%20%0A%7D” message=”” highlight=”” provider=”manual”/]

    Operatory logiczne

     

    [pastacode lang=”cpp” manual=”if%20(pr%C4%99dko%C5%9B%C4%87%20%3C%20pr%C4%99dko%C5%9B%C4%87_maksymalna%20%26%26%20dodajemy_gazu)%0A%7B%0A%09%2F%2F%20pojazd%20przyspiesza%20%0A%7D” message=”” highlight=”” provider=”manual”/]

    Operator && (AND) czyli najprostszy operator łączący dwa warunki.
    “Jeśli prędkość obecna jest mniejsza niż prędkość maksymalna i kierowca dodaje gazu – zwiększamy prędkość pojazdu”

    [pastacode lang=”cpp” manual=”if(pr%C4%99dko%C5%9B%C4%87%20*%202%20%3C%20pr%C4%99dko%C5%9B%C4%87_maksymalna%20%7C%7C%20pr%C4%99dko%C5%9B%C4%87%20%3D%3D%200)%0A%7B%0A%09%2F%2F%20ruszamy%20z%20piskiem%20opon%20%0A%7D” message=”” highlight=”” provider=”manual”/]

    Operator || (OR) co w skrócie oznacz po prostu “lub”.
    “Jeśli dwu krotność prędkości obecnej jest mniejsza od prędkości maksymalnej lub prędkość obecna jest równa zero – ruszamy z piskiem opon”

    Opis programu:

    W przykładzie skorzystamy z funkcji connect() jest to wymyślona prze kogoś funkcja. Nie znamy jej budowy ani sposobu działania wiemy jednak że w przypadku nawiązania połączenia zwraca true w innym wypadku zwraca false (czyli błąd połączenia).

    [pastacode lang=”cpp” manual=”if(!(connect())%0A%7B%0A%09%2F%2F%20wy%C5%9Bwietlamy%20komunikat%20o%20b%C5%82%C4%99dzie%0A%7D” message=”” highlight=”” provider=”manual”/]

    W przypadku powodzenia funkcja zwraca true co jest negowane prze operator na falsa w związku z czym warunek się nie wykona. Natomiast jeśli z połączeniem jest problem, funkcja zwraca false co zamieniamy na true – warunek się wykona i możemy wyświetlić komunikat o błędzie.


    Budowa switch i case – warunek wielokrotnego wyboru

    [pastacode lang=”cpp” manual=”if%20(warto%C5%9B%C4%87%20%3D%3D%200)%0A%7B%0A%0A%7D%0A%0Aelse%20if%20(warto%C5%9B%C4%87%20%3D%3D%201)%0A%7B%0A%0A%7D%0A%0Aelse%20if%20(warto%C5%9B%C4%87%20%3D%3D%202)%0A%7B%0A%0A%7D%0A%0Aelse%20if%20(warto%C5%9B%C4%87%20%3D%3D%203)%0A%7B%0A%0A%7D%0A%0Aelse%20if%20(warto%C5%9B%C4%87%20%3D%3D%204)%0A%7B%0A%0A%7D%0A%0Aelse%20%0A%7B%0A%0A%7D” message=”” highlight=”” provider=”manual”/]

Pisząc własny program czasami musimy sprawdzić czy jakiś parametr nie osiąga ważnych dla nas wartości. Oczywiście możemy zrobić to tak jak przedstawia przykład – tworzymy dużą i skomplikowana drabinkę warunków sterujących. Istniej jednak lepszy i bardziej wydajny oraz łatwiejszy w organizacji zapis.

[pastacode lang=”cpp” manual=”%0A%09switch%20(parametr)%0A%09%7B%0A%09case%20warunek_1%3A%0A%09%7B%0A%09%09%2F%2Fkod%201%0A%09%09break%3B%0A%09%7D%0A%09case%20warunek_2%3A%0A%09%7B%0A%09%09%2F%2Fkod%202%0A%09%09break%3B%0A%09%7D%0A%0A%09default%3A%0A%09%7B%0A%09%09%2F%2F%20je%C5%9Bli%20parametr%20nie%20spe%C5%82nia%20%C5%BCadnego%20z%20powy%C5%BCszych%20warunk%C3%B3w%0A%09%7D%0A%09%7D” message=”” highlight=”” provider=”manual”/]

 

switch(parametr){warunki} – w nawiasie zwykłym podajemy parametr w celu sprawdzenia, w klamrach umieszczamy natomiast warunki.

case warunek: { break;} – podstawowa budowa warunku, w przypadku warunku wielokrotnego wyboru jako warunek rozumiemy konkretną wartość jaka parametr może osiągnąć – użyci operatorów wywoła błąd. Kod warunku zapisujemy w klamrach i kończymy zwrotem break;* (przerwanie) – dzięki czemu przerywamy działanie warunku wielokrotnego wyboru.

*Więcej informacji i przykładów na temat break; można znaleźć w dzielę o pętlach i funkcjach.

default: { break; } – warunek ten wykona się jeżeli żaden z poprzednich warunków nie został spełniony lub jeśli działanie warunku wielokrotnego wyboru nie zostało przerwane.

Przykłady ( opis został zawarty w komentarzach):

[pastacode lang=”cpp” manual=”switch%20(parametr)%20%2F%2F%20podajemy%20parametr%0A%09%7B%0A%09case%200%3A%0A%09%7B%0A%09%09%2F%2F%20brak%20czujnika%20czujnik%0A%09%09break%3B%0A%09%7D%0A%0A%09case%201%3A%0A%09%7B%0A%09%09%2F%2F%20jeden%20czujnik%0A%09%09break%3B%0A%09%7D%0A%0A%09case%202%3A%0A%09%7B%0A%09%09%2F%2F%20dwa%20czujniki%20%0A%09%09break%3B%0A%09%7D%0A%0A%09case%203%3A%0A%09%7B%0A%09%09%2F%2Ftrzy%20czujniki%0A%09%09break%3B%0A%09%7D%0A%0A%09default%3A%0A%09%7B%0A%09%09%2F%2F%20program%20nie%20jest%20wstanie%20obs%C5%82u%C5%BCy%C4%87%20wi%C4%99cej%20czujnik%C3%B3w%20lub%20zosta%C5%82%20wykryty%20inny%20b%C5%82%C4%85d%20%0A%09%09break%3B%0A%09%7D%0A%09%7D” message=”” highlight=”” provider=”manual”/]

Poprzednia informacja Warunek sterujący
Kolejna informacja Klony Arduino - czyli jak zainstalować sterownik CH340

Brak komentarzy

Zostaw odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *