• PL
  • EN

Instrukcje warunkowe w c++.

Instrukcje warunkowe w programowaniu pozwalają w dowolnym momencie kodu stworzyć co najmniej dwie alternatywne drogi, które pozwalają na rozgałęzienie programu i wyświetlenie innych treści w zależności od tego czy warunek postawiony w instrukcji będzie spełniony czy nie. Poniżej widać schemat ideowy instrukcji warunkowej.

To wyrwany fragment algorytmu - zakładamy, że pod nim jest dalsza liniowa część programu, ale nic nie stoi na przeszkodzie aby później pojawiły się kolejne rozgałęzienia.

Jak stworzyć warunek?

Wiadomo już, że dzięki wyrażeniom warunkowym program można rozgałęzić i sprawić, by reagował inaczej na to co zrobi uzytkownik. Aby to zrobić trzeba umiejętnie zastosować kombinacje operatorów logicznych oraz operatorów porównania.
Zapytać można o wszystko, np. czy wprowadzona przez użytkownika liczbajest większa od zera? Jeśli tak, program napisze, liczba jest dodatnia. W przeciwnym razie napisze, że liczba nie jest dodatnia. To oczywiście tylko przykład.

double x;

int main() {
cout << "Wpisz dowolną liczbę.";
cin >> x;
if (x > 0){
   cout << "Liczba jest dodatnia.";
   }
else{
   cout << "Liczba nie jest dodatnia.";
   }
}

Jedyną kwestią dyskusyjną jest fakt, czy zero należy do liczb dodatnich, ujemnych czy jest jeszcze inną kategorią cyfr.

Jak stworzyć warunek złożony z dwóch zapytań?

Załóżmy, że tylko spełnienie dwóch wymagań jednocześnie spowoduje wyświetlenie komunikatu pozytywnego, w przeciwnym razie pojawi się komunikat negatywny.
Takim przykładem może być podanie poprawnego loginu i hasła.

int id, pin;

int main() {
cout << "Podaj swój identyfikator.";
cin >> id;
cout << "Wpisz swój PIN.";
cin >> pin;
if ((id==007) && (pin==1234)){
   cout << "Witaj tajny agencie 007!";
   }
else{
   cout << "Logowanie niepowiodło się. Autodestrukcja nastąpi za 3..2..1..!";
   }
}

Jeden LUB drugi warunek spełniony.

Czasami wystarczy, że spełniony zostanie tylko jeden z warunków. Wtedy należy skorzystać z innego operatora logicznego.
Niech za przykład posłuży aplikacja edukacyjna, w której zdobycie odpowiedniej ilości punktów pozwala przejść na wyższy poziom. Równie dobrze można zdać test, który wpuści użytkownika do kolejnego etapu wcześniej.

int points, test3;

int main() {
// ukryta część algorytmu

if ((points>100) || (test3==1)){
   cout << "Gratulacje! Wchodzisz na poziom 4!";
   }
else{
   cout << "Witaj, jesteś na poziomie 3!";
   }
}

Zagnieżdżona instrukcja warunkowa.

Bywa tak, że dwie drogi są niewystarczające dla realizacji założeń algorytmu. Z pomocą przychodzi możliwość zagnieżdżania instrukcji wewnątrz innej instrukcji. Pozwala na to polecenie ELSE IF
Mówiąc językiem ludzkim, stawiam warunek "co jeśli...", w kolejnym kroku "w przeciwnym razie, co jeśli", a w ostatnim kroku sprawdzam co w pozostałych przypadkach. Graficzny opis tej sytuacji znajduje się poniżej.

Jak wyglądałby przykładowy program w języku c++ zbudowany na podstawie tego schematu blokowego?

int cyfra;

int main() {
cin >> cyfra;
if (cyfra==0){
   cout << "Wpisana cyfra to 0";
   }
else if (cyfra>0){
   cout << "Wpisana cyfra jest większa od zera";
   }
else {
   cout << "Wpisana cyfra jest mniejsza od zera";
   }
}

Instrukcje warunkowe w c++.

Conditional instructions in programming allow you to create at least two alternative paths at any point in your code, which allow the program to branch and display different content depending on whether the condition set in the instruction will be met or not. Below you can see the conceptual diagram of a conditional instruction

This is a fragment of the algorithm - we assume that under it there is a further linear part of the program, but there is nothing prevents further branches from appearing later..

How to create a condition in a statement?

It is already known that with conditional statements you can branch the program and have it respond differently to what the user does. To do this you need to skillfully use combinations of logical operators and compare operators. You can ask about anything, such as if the number you entered is greater than zero? If yes, The program writes, the number is positive. Otherwise, it writes that the number is not positive. This, of course, is just an example.

double x;

int main() {
cout << "Enter any number.";
cin >> x;
if (x > 0){
   cout << "This is a number greater than zero.";
   }
else{
   cout << "This is a number less than zero.";
   }
}

The only issue is the question of whether zero belongs to positive numbers, negative numbers, or is yet another category of digits.

How to create a condition with two queries?

Assume that only satisfying two requirements simultaneously will result in a positive message, otherwise a negative message will appear.
Such an example would be providing a valid login and password.

int id, pin;

int main() {
cout << "Enter your ID.";
cin >> id;
cout << "Enter your PIN.";
cin >> pin;
if ((id==007) && (pin==1234)){
   cout << "Hello secret agent 007!";
   }
else{
   cout << "Login failed. Self-destruction will happen!";
   }
}

One or the second condition true.

Let's assume that only meeting two requirements at the same time will result in a positive message, otherwise a negative message will appear.
Such an example could be providing a valid login and password.

int id, pin;

int main() {
cout << "Enter your ID.";
cin >> id;
cout << "Enter your PIN.";
cin >> pin;
if ((id==007) && (pin==1234)){
   cout << "Hello secret agent 007!";
   }
else{
   cout << "Login failed. There will be a self-destruct in 3..2..1...!";
   }
}

One OR the second condition true.

Sometimes only one of the conditions needs to be met. Then you must use a different logical operator than before.
Let's take as an example an educational app where earning enough points allows you to enter the next level. You might as well pass a test that lets you into the next stage earlier.

int points, test3;

int main() {
// the hidden part of the algorithm

if ((points>100) || (test3==1)){
   cout << "Congratulations! Welcome to the fourth level!";
   }
else{
   cout << "Hello, you are at level 3!";
   }
}

Nested statements.

There are times when two paths are insufficient to meet the objectives of the algorithm. What comes in handy is the ability to nest a statement inside another statement. This can be done with the ELSE IF command
In human terms, I put the condition "what if...", in the next step "otherwise, what if", and in the last step I check what in the else cases. A graphical description of this situation is below.

What would an example c++ program built from this block diagram look like?

int number;

int main() { cin >> number;
if (number==0){
   cout << "The number you entered is 0.";
   }
else if (number>0){
   cout << "The digit entered is greater than zero.";
   }
else {
   cout << "The digit entered is less than zero.";
   }
}