Instrukcja warunkowa w języku C++

Instrukcja warunkowa (ang. conditional instruction) służy do tworzenia rozgałęzień w programach - dzięki niej komputer może podejmować decyzje, zatem będzie działał w sposób "rozumny", nie mechaniczny. Instrukcja ta posiada następującą składnię:

if(warunek) instrukcja1; else instrukcja2;

warunek  -  jest wyrażeniem, które może przyjmować wartość 0 - wtedy jest traktowane jako niespełnione, fałszywe, albo wartość różną od 0 - wtedy jest traktowane jako spełnione, prawdziwe. W warunkach często stosuje się operatory porównań:

<    <=    ==    >=    >

!=  - różny

Operatory porównań zwracają wartość 0, jeśli porównanie jest negatywne, lub wartość 1, jeśli porównanie jest pozytywne. Wartości 0 i 1 w języku C++ mogą być reprezentowane stałymi false (0) i true (1). Mówimy o nich, że są to wartości logiczne fałszu i prawdy.

Przykłady:

a < 10;     // 0, jeśli a nie spełnia nierówności, 1 jeśli spełnia
b != c;     // 0, jeśli b = c i 1, jeśli b ≠ c
c == b - 5; // 0, jeśli c ≠ b - 5 i 1 w przypadku przeciwnym

instrukcja1  - instrukcja wykonywana, gdy warunek ma wartość różną od 0, czyli gdy jest prawdziwy (true)
instrukcja2  - instrukcja wykonywana, gdy warunek ma wartość równą 0, czyli gdy jest fałszywy (false). Człon z else może być pominięty, jeśli nasz algorytm nie przewiduje wykonania żadnej operacji przy fałszywym warunku. Wtedy instrukcja warunkowa upraszcza się do postaci:

if(warunek) instrukcja;

Jeśli w instrukcji warunkowej if musimy wykonać więcej niż jedną operację, to stosujemy tzw. instrukcję złożoną, czyli grupę instrukcji objętych klamrami:

{
    inst1;
    inst2;
    ...;
}

Składnia instrukcji if będzie następująca:

if(warunek)
{
    instrukcje wykonywane, gdy warunek jest różny od zera
}
else
{
    instrukcje wykonywane, gdy warunek jest równy zero
}

Poniżej przedstawiamy kilka prostych przykładów użycia instrukcji warunkowej. Są to tzw. cegiełki, z których buduje się większe algorytmy, dlatego należy je dokładnie poznać i zrozumieć.

Wybór większej z dwóch liczb

Dane wejściowe:

a, b - dwie dowolne liczby całkowite

Dane wyjściowe:

większa z liczb a i b

Lista kroków:

K01: Czytaj a,b
K02: Jeśli a > b, pisz a, inaczej pisz b
K03: Zakończ

Schemat blokowy:

Program w języku C++

// Większa z dwóch liczb
// (C) I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
  int a,b;

  cout << "Wyszukiwanie wiekszej z dwoch liczb\n"
          "-----------------------------------\n\n";

// odczytujemy liczby a i b

  cout << "a = "; cin >> a;
  cout << "b = "; cin >> b;
  cout << endl;

// na wyjście wyprowadzamy większą liczbę

  cout << "Wieksze jest ";

  if(a > b) cout << "a = " << a;
  else      cout << "b = " << b;

  cout << endl << endl;

  system("pause");
  return 0;
}
Wyszukiwanie wiekszej z dwoch liczb
-----------------------------------

a = 3
b = 10

Wieksze jest b = 10

Aby kontynuować, naciśnij dowolny klawisz . . .

Badanie znaku liczby

Dane wejściowe:

a - dowolna liczba całkowita

Dane wyjściowe:

jeden z napisów: a < 0, a = 0 lub a > 0 w zależności od wartości a

Lista kroków:

K01: Czytaj a
K02: Jeśli a = 0, pisz "a = 0" i zakończ
K03: Jeśli a < 0, pisz "a < 0", inaczej pisz "a > 0"
K04: Zakończ

Schemat blokowy:

Program w języku C++

// Badanie znaku liczby
// (C) I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
  int a;

  cout << "Badanie znaku liczby calkowitej\n"
          "-------------------------------\n\n";

// odczytujemy liczbę a

  cout << "a = "; cin >> a;
  cout << endl;

// badamy znak liczby a

  if(a == 0)     cout << "a = 0";
  else if(a < 0) cout << "a < 0";
  else           cout << "a > 0";

  cout << endl << endl;
 
  system("pause");
  return 0;
}
Badanie znaku liczby calkowitej
-------------------------------

a = -13421

a < 0

Aby kontynuować, naciśnij dowolny klawisz . . .

Porządkowanie dwóch liczb

Wymiana zawartości dwóch zmiennych a i b polega na tym, iż po operacji w zmiennej a znajdzie się to, co było w zmiennej b i na odwrót, w zmiennej b będzie to, co zawierała zmienna a.

Operacja wymaga trzech kroków i dodatkowej zmiennej pomocniczej. Można to zrobić tak:

Operację wymiany zawartości zmiennej oznaczamy na liście kroków i na schemacie blokowym za pomocą symbolu ↔:

a ↔ b  →   x ← b
b ← a
a ← x

Wykorzystamy ten prosty algorytm do uporządkowania dwóch liczb. Na wejściu mamy dwie dowolne liczby a i b. Na wyjściu liczby a i b muszą spełniać nierówność:

ab

czyli muszą być uporządkowane rosnąco.

Dane wejściowe:

a, b - dowolne liczby

Dane wyjściowe:

liczby a i b spełniające nierówność ab

Dane pomocnicze:

x - zmienna do chwilowego przechowania liczby b

Lista kroków:

Wersja pełna Wersja skrócona
K01: Czytaj a,b
K02: Jeśli a ≤ 0, to idź do K06
K03: xb
K04: ba
K05: ax
K06: Pisz a,b
K07: Zakończ
K01: Czytaj a,b
K02: Jeśli a > b, to a b
K03: Pisz a,b
K04: Zakończ

Schemat blokowy:

Program w języku C++

// Porządkowanie dwóch liczb
// (C) I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
  int a,b,x;

  cout << "Porzadkowanie dwoch liczb\n"
          "-------------------------\n\n";

// odczytujemy liczby a i b

  cout << "Wpisz dwie dowolne liczby\n\n";
  cin >> a >> b;
  cout << endl;

// Jeśli liczby a i b są w złej kolejności, zamieniamy je

  if(a > b)
  {
     x = b;
     b = a;
     a = x;
  }
  cout << a << " " << b << endl << endl;
 
  system("pause");
  return 0;
}
Porzadkowanie dwoch liczb
-------------------------

Wpisz dwie dowolne liczby

32 18

18 32

Aby kontynuować, naciśnij dowolny klawisz . . .

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.