Archiwa tagu: cpp

C++ kurs podstawy programowania. Pętla DO WHILE.

Pętla do … while to nic innego jak inny wariant pętli while. Różnica jest tylko taka, że pętla do … while sprawdza warunek na końcu pętli przez co musi się wykonać choćby raz mimo, że warunek nie będzie spełniony. Przykład wyświetlenia liczb od 1 do 10 za pomocą pętli do … while poniżej.

    do
    {
        cout << i << endl;
        i++;
    }
    while(i<=10);

Widzisz, że składnia się trochę różni. Na początku jest słówko do, później, pomiędzy nawiasami klamrowymi, mamy ciało pętli a dopiero na końcu słówko while i warunek. Wszystko kończymy znakiem średnika. Efekt uruchomienia powyższej pętli poniżej.
cpp c++ kurs programowania pętla do while

 


c++ kurs programowania obiektowego spis treści 

 

 

C++ kurs podstawy programowania. Pętla WHILE.

Pętla  WHILE
Drugą pętlą którą poznamy jest pętla while. Na początek zaznajomimy się ze składnią tej pętli.

    while(warunek)
    {
        // cialo petli while
        // instrukcja lub blok instrukcji
        // do wykonania gdy warunek spelniony
    }

W pętli while instrukcja (lub blok instrukcji) będzie się wykonywała tyle razy aż warunek nie będzie spełniony.  Należy pamiętać, żeby w ciele pętli należy zaprogramować taki mechanizm, żeby w jakiejś konkretnej sytuacji była możliwość zakończenia pętli w przeciwnym wypadku zapętlimy ją w nieskończoność.
Spróbujmy teraz zapisać z użyciem pętli while przykład, który oprogramowywaliśmy dla pętli for, czyli klasyczne wyświetlenie na ekranie liczb od 1 do 10.

    int i=1;
    while(i<=10)
    {
        cout << i << endl;
        i++;
    }

Na początku deklarujemy sobie zmienną i która w tym przypadku będzie potrzebna do sprawdzania warunku wyjścia z pętli. Następnie po słówku while definiujemy warunek który będzie sprawdzany przed uruchomieniem każdego obiegu pętli, czy jest spełniony. Jeżeli będzie spełniony (wartość TRUE) pętla się wykona, w przeciwnym wypadku (wartość FALSE) pętla w ogóle przestaje się wykonywać. Widzisz, że za każdym razem w pętli while wyświetlamy na ekranie wartość zmiennej i. Za każdym jednak razem jej wartość jest zwiększana o 1 poleceniem i++ . W momencie kiedy zmienna i osiągnie wartość 11 czyli warunek nie będzie już spełniony pętla przestaje się wykonywać. Jeżeli od początku warunek nie będzie spełniony pętla while nie wykona się ani razu. Efekt uruchomienia naszego kodu poniżej.
cpp c++ kurs programowania pętla while

 


c++ kurs programowania obiektowego spis treści 

 

 

C++ kurs podstawy programowania. Pętla FOR.

Pętla FOR
Jak już wspomniałem wcześniej pętle są wykorzystywane do cyklicznego wykonywania zadanego kodu. Jeżeli z góry wiemy ile razy chcemy wykonać dany zestaw instrukcji to pętla for jest idealna do tego zadania. Pętle tego typu nazywamy licznikowymi bądź iteracyjnymi, bo z reguły startujemy od jakiejś wartości początkowej, przy każdym obrocie (obiegu) pętli wartość licznika zwiększamy o jeden, do momentu kiedy pętla osiągnie górną granicę. Ale najlepiej objaśnię to na konkretnym przykładzie. Będzie to znowu klasyka gatunku, czyli wyświetlenie na ekranie liczb od 1 do 10.

    int i = 1;
    for( i; i <= 10 ; i++)
        cout << i << endl;

Przeanalizujmy teraz nasz kod. Na początku zadeklarowałem zmienną i = 1 o typie int. Będzie ona spełniała funkcję licznika dla pętli for. No i teraz sedno sprawy, czyli sama pętla. W Nawiasie po słówku for podajemy trzy argumenty. Pierwszy to warunek początkowy, czyli w naszym przypadku i. Tak jak pisałem wcześniej nasza zmienna i będzie spełniała funkcję licznika, czyli na początku licznik ustawiamy na 1. Drugi parametr to tzw. górna granica, czyli warunek dla którego pętla przestanie się wykonywać. W naszym przypadku pętla ma przestać się wykonywać kiedy wartość licznika i będzie mniejsza lub równa 10 i to mamy właśnie zapisane w drugim argumencie i <=10 . Jeżeli warunek będzie spełniony pętla się wykona, jeżeli nie to pętla stanie. W trzecim argumencie musimy powiedzieć kompilatorowi jak będzie zmieniał się nasz licznik. W naszym przypadku chcemy, żeby licznik zwiększał się o 1 przy każdym obiegu pętli, dlatego zastosowałem inkrementację zmiennej i w postaci składni i++ . To co znajduje się w następnej linii to instrukcja którą chcemy wykonać przy każdym obiegu pętli. Jeżeli tych instrukcji wyłoby więcej to umieszczamy je w nawiasach {}. My chcemy, przy każdym obiegu pętli, wyświetlić wartość licznika i. Możemy uzyskać ten efekt korzystając ze składni cout << i << endl; . Oczywiście endl na końcu oznacza, przy każdym obiegu pętli, przejście do następnej linii tak, żeby każda wartość wyświetliła się w osobnej linii. Wrzućmy nasz kod w startowy program i uruchomimy go.

#include <iostream>

using namespace std;

int main()
{
    int i = 1;
    for( i; i <= 10 ; i++)
        cout << i << endl;

    return 0;
}

Po uruchomieniu na ekranie zobaczymy.
 cpp c++ course kurs programowania pętla for loop for
Właśnie o taki efekt nam chodziło, więc program zaliczamy do działających prawidłowo. Zwróć uwagę, że pętla for sprawdza warunek przed wykonaniem kodu w pętli. Jeżeli wiec nie będzie on spełniony kod się nie wykona. Jeżeli od początku warunek nie będzie spełniony pętla for nie wykona się ani razu.

 


c++ kurs programowania obiektowego spis treści 

 

 

C++ kurs podstawy programowania. Instrukcja warunkowa switch case.

Instrukcja SWITCH…CASE
Innym pomysłem na rozwiązanie problemu obsługi warunków jest instrukcja switch…case (czasami nazywana instrukcją wielokrotnego wyboru). Poniżej definicja i zaraz zabieram się do objaśniania kodu.

switch(zmienna)
{
case wartosc_1:
    // jeżeli zmienna = wartość_1 to wykonaj kod który znajduje się tutaj
    break;
   
case wartosc_2:
    // jeżeli zmienna = wartość_2 to wykonaj kod który znajduje się tutaj
    break;
   
    //...
case wartosc_n:
    // jeżeli zmienna = wartość_n to wykonaj kod który znajduje się tutaj
    break;
   
default:
// kod który wykona się w momencie kiedy wartość zmiennej zmienna
   //     nie będzie oprogramowana w żadnym z powyższych przypadków
    break;
}

Na początku widzisz słówko switch i parametr w nawiasie. Tym parametrem jest wartość zmiennej i w zależności od tej wartości switch zachowa się tak jak to mu oprogramujemy. Po słówku case oprogramowujemy konkretne przypadki, co komputer ma zrobić w zależności od wartości zmiennej zdefiniowanej w parametrze instrukcji switch. Słówko break przerywa działanie instrukcji switch. Wykonamy teraz małe ćwiczenie napiszemy program który zapyta użytkownika o liczbę z przedziału od 1 do 5. Pobierzemy tą liczbę do zmiennej i w zależności od wybranej liczby wyświetlimy komunikat „Wpisales liczbe n, wiec wykonuje kod z czesci case:n”, gdzie pod n będziemy podstawiali liczbę podaną przez użytkownika. No to do dzieła.

#include <iostream>

using namespace std;

int main()
{
    int liczba;
    cout << "Podaj liczbe 1-5 : ";
    cin >> liczba;
    switch(liczba)
    {
    case 1: 
        cout << "Wpisales liczbe 1, wiec wykonuje kod z czesci case:1"; 
        break;
    case 2: 
        cout << "wpisales liczbe 2, wiec wykonuje kod z czesci case:2"; 
        break;
    case 3: 
        cout << "wpisales liczbe 3, wiec wykonuje kod z czesci case:3"; 
        break;
    case 4: 
        cout << "wpisales liczbe 4, wiec wykonuje kod z czesci case:4"; 
        break;
    case 5: 
        cout << "wpisales liczbe 5, wiec wykonuje kod z czesci case:5"; 
        break;
    
    }

    return 0;
}

Przetestujmy nasz program podając liczbę 2 (zrzut poniżej).

 cpp c++ loops switch
Widzimy, że wszystko poszło zgodnie z planem i wykonała się instrukcja dla wartości zmiennej liczba = 2.
A co się stanie jeżeli użytkownik podałby liczbę spoza zakresu np. 6 ? Przetestujmy.
 cpp c++ loops switch
Widzimy, że nic tragicznego się nie stało. Program „poszedł” dalej i nie wyświetlił żadnej instrukcji bo wartość 6 dla zmiennej liczba nie była oprogramowana w switch-u, więc kompilator nie wiedział co ma zrobić. Czasami jednak potrzebujemy oprogramować taką sytuację kiedy chcemy wykonać jakiś kod lub wyświetlić jakiś komunikat dla przypadku który jest inny niż oprogramowaliśmy w switch-u, jak np. u nas kiedy użytkownik podał liczbę 6. Do tego celu służy instrukcja default. Definiujemy ją identycznie jak w przypadku instrukcji case.

default:
   cout << "liczba nie z przedzialu 1-5, wiec nie wykonam zadnego kodu";
   break;

 Stosując instrukcję default mówimy kompilatorowi, że jeżeli nie znajdzie wartości z warunku oprogramowanej w instrukcji case to ma wykonać kod z części default. Dopiszmy tą część kodu do naszego programu i przetestujmy go.

#include <iostream>

using namespace std;

int main()
{
    int liczba;
    cout << "Podaj liczbe 1-5 : ";
    cin >> liczba;
    switch(liczba)
    {
    case 1:
        cout << "Wpisales liczbe 1, wiec wykonuje kod z czesci case:1";
        break;
    case 2:
        cout << "wpisales liczbe 2, wiec wykonuje kod z czesci case:2";
        break;
    case 3:
        cout << "wpisales liczbe 3, wiec wykonuje kod z czesci case:3";
        break;
    case 4:
        cout << "wpisales liczbe 4, wiec wykonuje kod z czesci case:4";
        break;
    case 5:
        cout << "wpisales liczbe 5, wiec wykonuje kod z czesci case:5";
        break;
    default:
        cout << "liczba nie z przedzialu 1-5, wiec nie wykonam zadnego kodu";
        break;
    }
    cout << endl;



    return 0;
}

Uruchamiamy program i wprowadzamy wartość 6.
 cpp c++ loops switch
Widzimy na ekranie komunikat który oprogramowaliśmy dla  warunku default, więc wszystko działa jak należy.

 


c++ kurs programowania obiektowego spis treści