Informatyka dla klasy IIK

Język C++: instrukcja warunkowa if

Wyrażenia logiczne

W logice występują jedynie dwie wartości: prawda i fałsz. W języku C++ zdefiniowane są specjalne stałe do reprezentowania wartości logicznych:

 

prawda = true = 1
fałsz = false = 0

 

// Wartości logiczne 
// (C)2017 mgr Jerzy Wałaszek
// I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "false = " << false << endl
         << "true  = " << true  << endl;

    return 0;
}

 

Oczywiście zamiast true można stosować 1, a zamiast false 0 - jednakże posługiwanie się tymi stałymi zwiększa znacznie czytelność programu.

Wyrażenie logiczne (ang. logical expresion) jest wyrażeniem, które może przyjmować tylko wartości logiczne true lub false. Tego typu wyrażenia powstają z operatorami porównań.

 

Operator Nazwa Przykład
== równe a == 15
!= różne a != b
< mniejsze a < 15
<= mniejsze lub równe b + 5 <= a
> większe a + 15 > c
>= większe lub równe a >= b + c

 

// Operatory porównań
// (C)2017 I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    int a = 4;

    cout << (a == 4) << endl
         << (a == 3) << endl;

    return 0;
}
// Operatory porównań
// (C)2017 I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    int a = 4;

    cout << (a != 4) << endl
         << (a != 3) << endl;

    return 0;
}
// Operatory porównań
// (C)2017 I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    int a = 4;

    cout << (a < 5) << endl
         << (a < 3) << endl;

    return 0;
}
// Operatory porównań
// (C)2017 I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    int a = 4;

    cout << (a >= 5) << endl
         << (a >= 3) << endl;

    return 0;
}

 

Instrukcja warunkowa

Instrukcja warunkowa pozwala wykonywać instrukcje programu w zależności od określonego warunku logicznego. Posiada ona następującą składnię:

 

if(warunek) instrukcja1; else instrukcja2;

 

if - jest słowem kluczowym języka C++ oznaczającym instrukcję warunkową

warunek - jest wyrażeniem logicznym lub arytmetycznym, które zostaje obliczone przez instrukcję if i którego wartość decyduje o sposobie wykonania następnych instrukcji.

instrukcja1 - jest dowolną instrukcją języka C++, która zostanie wykonana przez program tylko wtedy, gdy warunek będzie miał wartość logiczną true (lub różną od zera). Jeśli warunek ma wartość false (lub zerową), to instrukcja1 zostanie całkowicie pominięta.

else - słowo kluczowe języka C++, składnik instrukcji warunkowej if.

instrukcja2 - jest dowolną instrukcją języka C++, która zostanie wykonana tylko wtedy, gdy warunek będzie miał wartość false (lub zero). Jeśli warunek ma wartość true (lub różną od zera), to instrukcja2 zostanie całkowicie pominięta.

 

Zwróć uwagę, że zawsze wykonywana jest tylko jedna z instrukcji zawartych w instrukcji warunkowej if. Ta własność pozwala komputerowi działać logicznie, dostosowywać operację do zastanych warunków. To dzięki niej programy są "inteligentne".

 

// Znajdowanie większej z dwóch liczb
// (C)2017 I LO w Tarnowie
//-----------------------------------

#include <iostream>

using namespace std;

int main()
{
    int a,b;

    cin >> a >> b;

    cout << "Z dwóch liczb "
         << a << " i " << b
         << " większą jest liczba ";

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

    cout << endl;    

    return 0;
}
// Badanie parzystości liczby
// (C)2017 I LO w Tarnowie
//---------------------------

#include <iostream>

using namespace std;

int main()
{
    int a;

    cin >> a;

    cout << "Liczba " << a << " jest ";

    if(a % 2) cout << "nieparzysta\n";
    else      cout << "parzysta\n";
 
   return 0;
}
// Badanie znaku liczby
// (C)2017 I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
    int a;

    cin >> a;

    cout << "Liczba " << a << " jest ";

    if(a > 0)        cout << "dodatnia\n";
    else if (a == 0) cout << "równa zero\n";
         else        cout << "ujemna\n";
 
   return 0;
}

 

Często zdarza się tak, iż w instrukcji warunkowej potrzebna nam jest tylko instrukcja1. W takim przypadku fragment z else można pominąć.

 

if(warunek) instrukcja;

 

instrukcja jest wykonywana tylko wtedy, gdy warunek jest prawdziwy. Gdy warunek ma wartość false, to instrukcja zostaje pominięta.

 

// Obliczanie wartości bezwzględnej
// (C)2013 I LO w Tarnowie
//---------------------------------

#include <iostream>

using namespace std;

int main()
{
    int a;

    cin >> a;

    if(a < 0) a = -a;

    cout << a << endl;    

    return 0;
}
// Wyszukiwanie największej liczby z trzech
// (C)2013 I LO w Tarnowie
//-----------------------------------------

#include <iostream>

using namespace std;

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

    cin >> a >> b >> c;

    x = a;

    if(b > x) x = b;

    if(c > x) x = c;

    cout << x << endl;
    
    return 0;
}

 

Jeśli w ramach instrukcji warunkowej if chcemy wykonać nie pojedynczą instrukcję ale kilka instrukcji, to stosujemy tzw. instrukcję blokową - dowolny ciąg instrukcji ujęty w klamerki. Po klamerkach nie musimy już wstawiać średników:

 

if(warunek)
{
    ciąg instrukcji wykonywany, gdy warunek ma wartość true
}
else
{
    ciąg instrukcji wykonywanych, gdy warunek ma wartość false
}

 

 

Przykładowy program wykorzystuje prosty algorytm zamieniający nawzajem zawartości dwóch zmiennych. Operacje takie są wykonywane przy porządkowaniu różnych zbiorów. Wymagają one dodatkowej zmiennej pomocniczej, w której umieszczamy chwilowo zawartość jednej ze zmiennych. Postaraj się zrozumieć i zapamiętać ten schemat, ponieważ będziesz go wielokrotnie wykorzystywał w przyszłości:

Operacja zamiany zawartości składa się z trzech instrukcji przypisania:

X = A;  // Zapamiętujemy zawartość zmiennej A w X
A = B;  // Do A przepisujemy zawartość zmiennej B
B = X;  // Do B przepisujemy zapamiętaną w X zawartość zmiennej A


 

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

#include <iostream>

using namespace std;

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

    cin >> a >> b;
    if(a > b)
    {
      x = a;
      a = b;
      b = x;
    }
    cout << a << " " << b << endl;    

    return 0;
}

 

 



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.