Instrukcje warunkowe w języku C++

Instrukcja warunkowa (ang. conditional instruction) służy do tworzenia rozgałęzień w programach. 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).

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
}

 

Instrukcja wyboru służy do warunkowego wykonywania operacji w zależności od wartości pewnego wyrażenia. Składnia jest następująca:

switch(wyrażenie)
{
  case w_1: inst;
            inst;
            ...;
  case w_2: inst;
            inst;
            ...;
  ...
  ...
  ...
  case w_n: inst;
            inst;
            ...;
  defaultinst;
            inst;
            ...;
}

wyrażenie  -  jest wyrażeniem dającym w wyniku liczbę całkowitą
w_i  - liczby całkowite, etykiety, które mogą być wartością wyrażenia
inst;  - instrukcje wykonywane wewnątrz instrukcji switch.

Instrukcja switch działa w sposób następujący:

Komputer oblicza wartość wyrażenia umieszczonego w nawiasach instrukcji switch. Następnie sprawdza, któraś z opcji case w_i posiada etykietę w_i o takiej wartości. Jeśli tak, to następuje wykonanie instrukcji umieszczonych za dwukropkiem etykiety. Jeśli żadna z etykiet nie odpowiada wartości wyrażenia, to zostają wykonane instrukcje umieszczone za dwukropkiem opcji default.

Instrukcje wewnątrz switch są wykonywane jedna za drugą. Na końcu zwykle umieszcza się instrukcję break, która powoduje przerwanie wykonywania instrukcji w swich - jeśli tego nie zrobimy, to wykonanie przejdzie do kolejnego bloku case (czasem jest to potrzebne).

Tworzenie funkcji

W języku C++ funkcję definiujemy następująco:

typ_wyniku nazwa_funkcji(lista_parametrów)
{
   treść funkcji;
}

typ_wyniku - określa rodzaj zwracanej przez funkcję wartości. Może to być int, double itd. Jeśli funkcja nie zwraca żadnej wartości, to stosujemy typ void.
nazwa_funkcji - nazwa, poprzez którą będziemy wywoływać funkcję. Zasady tworzenia nazw funkcji są identyczne jak dla zmiennych.
lista_parametrów - funkcja może wymagać dodatkowych danych, które przekazuje jej wywołujący program. Dane są przekazywane w parametrach funkcji. Parametry definiuje się podobnie do zmiennych:

typ nazwa, typ nazwa...

treść funkcji - definicje zmiennych oraz instrukcje, które są w ramach funkcji wykonywane
Do zwracania wyniku funkcji używamy na końcu funkcji instrukcji return, za którą umieszczamy wyrażenie. Wyrażenie jest obliczane i jego wynik zostaje zwrócony przez funkcję.

Przykład:

Funkcja z dwoma parametrami zwracająca liczbę całkowitą - instrukcja return jest konieczna.

    int suma(int a,int b)
    {
       return a + b;
    }

Funkcja bezargumentowa, nie zwracająca żadnego wyniku - instrukcja return nie jest konieczna

void przywitanie()
    {
      cout << "Witaj w naszym programie.\n"
              "-------------------------\n\n";

    }

Pierwszą funkcję wywołujemy na przykład tak:

    ...
    cout << suma(5,25) << endl;
    ...

Drugą funkcję wywołujemy tak:
    ...
    przywitanie();
    ...

Rysowanie kostki do gry

Napiszemy prosty program, który rysuje kostkę do gry. W tym celu wykonajmy prostą analizę:

Liczba oczek  1       2       3       4       5       6

1 wiersz    -----   -----   -----   -----   -----   -----
2 wiersz   |     | |    o| |    o| |o   o| |o   o| |o   o|
3 wiersz   |  o  | |     | |  o  | |     | |  o  | |o   o|
4 wiersz   |     | |o    | |o    | |o   o| |o   o| |o   o|
5 wiersz    -----   -----   -----   -----   -----   -----

Wiersz nr 1 i 5 jest we wszystkich kostkach taki sam: -----.

Pozostałe wiersze zależą od liczby oczek n:

wiersz 2:

|     | - 1      n == 1
|    o| - 2 3    n < 4
|o   o| - 4 5 6  w pozostałych przypadkach

wiersz 3:

|o   o| - 6      n == 6
|     | - 2 4    n % 2 == 0
|  o  | - 1 3 5  w pozostałych przypadkach
 

wiersz 4:

|     | - 1      n == 1
|o    | - 2 3    n < 4
|o   o| - 4 5 6  w pozostałych przypadkach

Z rozważań tych wynika następujący program rysowania kostki:

// Program rysowania kostki do gry
// (C)2008 Koło informatyczne w I LO w Tarnowie
// Kurs programowania w C++ dla początkujących
//--------------------------------------------

#include <iostream>

using namespace std;

// Funkcja rysuje kostkę o zadanej liczbie oczek
//----------------------------------------------

void kostka(int n)
{
  cout << " ----- \n";
  
// wiersz nr 2
  
  if(n == 1)     cout << "|     |\n";
  else if(n < 4) cout << "|    o|\n";
  else           cout << "|o   o|\n";
  
// wiersz nr 3

  if(n == 6)          cout << "|o   o|\n";
  else if(n % 2 == 0) cout << "|     |\n";
  else                cout << "|  o  |\n";
  
// wiersz nr 4
  
  if(n == 1)     cout << "|     |\n";
  else if(n < 4) cout << "|o    |\n";
  else           cout << "|o   o|\n";
  
  cout << " ----- \n";
}

int main()
{
  int n;
  
  cout << "Ile oczek? "; cin >> n; kostka(n);
  cout << endl << endl;
  system("pause");
  return 0;
}
Ile oczek? 5
 -----
|o   o|
|  o  |
|o   o|
 -----


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