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:

obrazek

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:

obrazek

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:

obrazek

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ść:

a  ≤ b

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ść a  ≤ b

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: x  ← b
K04: b  ← a
K05: a  ← x
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:

obrazek

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 . . .

 


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

©2024 mgr Jerzy Wałaszek

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

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe