Instrukcje C++

Instrukcja switch pozwala dokonywać wielotorowych wyborów. Składnia jest następująca:

 

switch(wyrażenie)
{
    case w1  : ciąg instrukcji;
    case w2  : ciąg instrukcji;
    case w3  : ciąg instrukcji;
    ...
    case wn  : ciąg instrukcji;
    default:   ciag instrukcji;
}

 

Instrukcja switch działa następująco: najpierw komputer wylicza wartość wyrażenia. Następnie wynik ten porównuje z kolejnymi wartościami (etykietami) w1, w2, w3 ..., wn  umieszczonymi za słowem kluczowym case (ang. przypadek). Jeśli wyrażenie będzie równe jednej z tych wartości, to komputer rozpocznie wykonanie ciągu instrukcji umieszczonych za dwukropkiem w odpowiednim przypadku case. Wykonanie jest kontynuowane w dół do następnych przypadków, chyba że programista umieści na końcu tego ciągu instrukcję break, która powoduje natychmiastowe wyjście z instrukcji switch. Jeśli wyrażenie nie będzie równe żadnej z wartości case, to zostanie wykonany ciąg instrukcji za słowem default (ang. standardowo).

 

Instrukcję switch można wykorzystywać do tworzenia prostych menu:

 

// (C)2010 Koło Informatyczne I LO
//
// Proste menu
//--------------------------------

#include <iostream>

using namespace std;

int main()
{
    int opcja;

    cout << "Menu\n"
            "----\n\n"
            "[ 1 ] - opcja nr 1\n"
            "[ 2 ] - opcja nr 2\n"
            "[ 3 ] - opcja nr 3\n\n"
            "Twoj wybor : ";

    cin >> opcja;

    cout << "\n\n";

    switch(opcja)
    {
        case 1 : cout << "OD KASZY MNIE NIKT NIE ODSTRASZY\n\n";
                 break;
        case 2 : cout << "CO DWIE GLOWY TO NIE JEDNA\n\n";
                 break;
        case 3 : cout << "LEPIEJ SZYBKO NIZ WCALE\n\n";
                 break;
        default: cout << "NIE WYBRALES 1, 2 ANI 3!!!\n\n";
                 break;
    }

    return 0;
}

 

// (C)2010 Koło Informatyczne I LO
//
// Kostka do gry
//--------------------------------

#include <iostream>

using namespace std;

int main()
{
    int n;

    cout << "PODAJ LICZBE OCZEK KOSTKI : ";

    cin >> n;

    cout << " -----\n";

    switch(n)
    {
      case 1 : cout << "|     |\n"
                       "|  o  |\n"
                       "|     |\n";
               break;
      case 2 : cout << "|    o|\n"
                       "|     |\n"
                       "|o    |\n";
               break;
      case 3 : cout << "|    o|\n"
                       "|  o  |\n"
                       "|o    |\n";
               break;
      case 4 : cout << "|o   o|\n"
                       "|     |\n"
                       "|o   o|\n";
               break;
      case 5 : cout << "|o   o|\n"
                       "|  o  |\n"
                       "|o   o|\n";
               break;
      case 6 : cout << "|o   o|\n"
                       "|o   o|\n"
                       "|o   o|\n";
               break;
    }

    cout << " -----\n\n";

    return 0;
}

 


 

Instrukcja if (ang. - jeśli) pozwala tworzyć rozgałęzienia w programie:

 

if(warunek) instrukcja1; else instrukcja2;

 

Jeśli warunek  jest prawdziwy (ma wartość różną od zera), to wykonana zostanie instrukcja1, w przeciwnym razie zostanie wykonana instrukcja2.

Wersja skrócona:

 

if(warunek) instrukcja;

 

Człon else można pominąć. Jeśli warunek  jest spełniony, to zostanie wykonana instrukcja. Jeśli warunek  jest fałszywy, to program przechodzi do wykonania następnych operacji pomijając wykonanie tej instrukcji.

Wersja z instrukcjami blokowymi:

 

if(warunek)
{
        dowolny ciąg instrukcji wykonywanych, gdy warunek ma wartość różną od zera

}
else
{
        dowolny ciąg instrukcji wykonywanych, gdy warunek ma wartość równą zero

}
 

Każdą pojedynczą instrukcję w języku C++ możemy zastąpić instrukcją blokową, czyli ciągiem dowolnych instrukcji ujętych w klamerki. Za klamrą zamykającą nie wstawiamy średnika.

 

Program rysujący kostkę możemy uprościć. Kostka składa się z pięciu wierszy tekstu. W pierwszym i ostatnim wierszu wypisujemy zawsze ten sam tekst - " -----". Pozostałe trzy wiersze tworzą obraz oczek:

 wiersz 1 : 

   -----   

   -----   

   -----   

   -----   

   -----   

   -----   

 wiersz 2 :
 wiersz 3 :
 wiersz 4 :

|     |
|  o  |
|     |

|    o|
|     |
|o    |

|    o|
|  o  |
|o    |

|o   o|
|     |
|o   o|

|o   o|
|  o  |
|o   o|

|o   o|
|o   o|
|o   o|

 wiersz 5 :

-----

-----

-----

-----

-----

-----

 

n = 1

n = 2

n = 3

n = 4

n = 5

n = 6

W wierszu 2 piszemy:

|     | dla n = 1
|    o| dla n = 2,3
|o   o| dla n = 4,5,6

W wierszu 3 piszemy:

|  o  | dla n = 1,3,5
|     | dla n = 2,4
|o   o| dla n = 6

W wierszu 4 piszemy:

|     | dla n = 1
|o    | dla n = 2,3
|o   o| dla n = 4,5,6
 

// (C)2010 Koło Informatyczne I LO
//
// Kostka do gry
//--------------------------------

#include <iostream>

using namespace std;

int main()
{
    int n;

    cout << "PODAJ LICZBE OCZEK KOSTKI : ";

    cin >> 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) cout << "|  o  |\n";
    else           cout << "|     |\n";

    // Wiersz nr 4:

    if(n == 1)     cout << "|     |\n";
    else if(n < 4) cout << "|o    |\n";
    else           cout << "|o   o|\n";

    cout << " -----\n\n";

    return 0;
}

 


 

Instrukcja for pozwala tworzyć pętle iteracyjne - wykonujące się określoną ilość razy. Pętla iteracyjna zlicza wykonane obiegi - musi zatem posiadać tzw. licznik pętli, czyli zmienną, w której pamięta liczbę wykonanych obiegów. Pętla for posiada następującą składnię:

 

for(przygotowanie; kontynuacja; koniec_obiegu) instrukcja;

lub z instrukcją blokową:

for(przygotowanie; kontynuacja; koniec_obiegu)
{
    ciąg instrukcji powtarzanych w pętli
}

 

przygotowanie  - tutaj najczęściej umieszczamy instrukcję, która inicjuje licznik obiegów pętli:

for(i = 1; ...
 

kontynuacja  - to wyrażenie, które jest obliczane przed wykonaniem każdego obiegu. Jeśli wartość wyrażenia jest różna od zera, to obieg zostanie wykonany. Jeśli wyrażenie przyjmie wartość zero, pętla zostanie zakończona. Tutaj najczęściej umieszczamy wyrażenie, które jest prawdziwe, gdy licznik obiegów nie przekroczył wartości końcowej, dzieki czemu petla wykona zadaną liczbę obiegów:

for(i = 1; i <= 10;...

 

koniec_obiegu  - to instrukcja, którą pętla wykonuje na końcu każdego obiegu. Zwykle umieszczamy tutaj instrukcję modyfikującą odpowiednio licznik pętli - np. zwiększającą jego stan o 1:

for(i = 1; i <= 10; i++) ...

 

instrukcja  - część wykonawcza pętli - zawiera pojedynczą instrukcję lub instrukcję blokową, która przez tę pętlę będzie powtarzana:

for(i = 1; i <= 10; i++) cout << i << endl;  // pętla wypisuje kolejne liczby od 1 do 10

 

// (C)2010 Koło Informatyczne I LO
//
// Kostka do gry
//--------------------------------

#include <iostream>

using namespace std;

int main()
{
    int n;

    cout << "KOSTKA DO GRY\n";

    for(n = 1; n <= 6; n++)
    {
        cout << " -----\n";

        if(n == 1)     cout << "|     |\n";
        else if(n < 4) cout << "|    o|\n";
        else           cout << "|o   o|\n";

        if(n == 6)     cout << "|o   o|\n";
        else if(n % 2) cout << "|  o  |\n";
        else           cout << "|     |\n";

        if(n == 1)     cout << "|     |\n";
        else if(n < 4) cout << "|o    |\n";
        else           cout << "|o   o|\n";

        cout << " -----\n";
    }

    return 0;
}

 

Teraz zaprogramujemy prostą grę w 13. Zasady gry są następujące:

 

W grze uczestniczy 2 graczy oraz 13 bierek. Gracze na zmianę biorą od 1 do 3 bierek - ruch jest obowiązkowy. Przegrywa ten gracz, który musi wsiąść ostatnią bierkę. Pierwszy rozpoczyna człowiek.

 

Strategia komputera jest bardzo prosta - uzupełnia on liczbę bierek wziętych przez człowieka do 4. W każdym obiegu znika zatem 4 bierki - po trzech obiegach pozostanie 1 bierka, którą musi wsiąść człowiek. W grze nie sprawdzamy poprawności ruchów człowieka.

 

// (C)2010 Koło Informatyczne I LO
//
// Gra w 13 bierek
//--------------------------------

#include <iostream>

using namespace std;

int main()
{
    int b,i,r;

    cout << "GRA W 13 BIEREK\n"
            "---------------\n\n";

    for(b = 13; b > 1; b -= 4)
    {
        cout << "BIERKI: ";

        for(i = 1; i <= b; i++) cout << "/";
 
        cout << "\n\n"
                "TWOJ RUCH. ILE BIEREK? : ";
        cin  >> r;
        cout << " MOJ RUCH. JA BIORE " << 4 - r << "\n\n";
    }
    cout << "BIERKI: /   - OSTATNIA BIERKA DLA CIEBIE. PRZEGRALES!!!\n\n";

    return 0;
}

 


   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