P008 - Kostka do gry
Program uruchomiono w środowisku Bloodshed Dev-C++ 4.9.9.2
// I Liceum Ogólnokształcące
// im. K. Brodzińskiego
// w Tarnowie
//--------------------------
// Koło informatyczne 2006/7
//--------------------------
// Program: P008
//--------------------------

#include <iostream>

using namespace std;

void Kostka(int oczka)
{
  cout << " ----- \n";
  for(int i = 1; i <= 9; i++)
  {
    switch(i)
    {
      case 1:
      case 4:
      case 7: cout << "| ";         
    }        
    switch(i)
    {
      case 1:
      case 9: if(oczka > 1) cout << "O"; else cout << " ";
              break;
      case 2:
      case 8: cout << " "; break;
      case 3:
      case 7: if(oczka > 3) cout << "O"; else cout << " ";
              break;
      case 4:
      case 6: if(oczka == 6) cout << "O"; else cout << " ";
              break;
      case 5: if(oczka % 2) cout << "O"; else cout << " ";
              break;
    }
    switch(i)
    {
      case 3:
      case 6:
      case 9: cout << " |\n";
    }                
  }
  cout << " ----- \n";  
}

main()
{
  for(int i = 1; i <= 6; i++) Kostka(i);
  cout << endl;
  system("pause");
}

 

Widok okienka konsoli w uruchomionym programie
 -----
|     |
|  O  |
|     |
 -----
 -----
| O   |
|     |
|   O |
 -----
 -----
| O   |
|  O  |
|   O |
 -----
 -----
| O O |
|     |
| O O |
 -----
 -----
| O O |
|  O  |
| O O |
 -----
 -----
| O O |
| O O |
| O O |
 -----

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

       Wyjaśnienie

Program na na celu głównie demonstrację użycia instrukcji warunkowej if oraz instrukcji wyboru switch. Instrukcje te w języku C++ posiadają następującą składnię:

if(warunek) inst1; else inst2

Warunek jest dowolnym wyrażeniem arytmetycznym lub logicznym. Jeśli daje w wyniku wartość różną od 0, to zostaje wykonana instrukcja inst1. Jeśli warunek daje w wyniku 0, to będzie wykonana instrukcja inst2.

Jeśli musimy wykonać więcej niż jedną instrukcję w przypadku spełnienia bądź niespełnienia warunku, to stosujemy blok, czyli grupę instrukcji ujętą w klamerki:

if(warunek)
{
    inst;
    inst;
    ...
}
else
{
    inst;
    inst;
    ...
}


switch(wyrażenie)
{
    case etykieta1 : inst; inst;...; break;
    case etykieta2 : inst; inst;...; break;
    ...
    default: inst; inst; break;
}

Instrukcja switch oblicza wartość podanego wyrażenia, a następnie wykonuje instrukcje umieszczone w bloku case, w którym etykieta ma wartość równą temu wyrażeniu. Instrukcji może być dowolna ilość. Na końcu umieszczamy zwykle instrukcję break, która powoduje wyjście z switch. Jeśli break nie zostanie umieszczone, to będą wykonane instrukcje z kolejnego bloku case - czasem jest to pożądane.

    switch(i)
    {
        case 1:
        case 9: if(oczka > 1) cout << "O"; else cout << " ";
                break;
        ...

W tym przykładzie instrukcje w bloku case 9 będą wykonane dla i = 1 lub i = 9. Można potraktować pierwszą etykietę case 1 jako blok pusty. Ponieważ nie zawiera on instrukcji break, to wykonanie automatycznie przeniesie się do bloku case 9.


   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