Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
Kurs C++

Słowa kluczowe continue, break

[lekcja] Rozdział 29. Omówienie słów kluczowych
continue
 i
break
 w kontekście pętli for, while oraz do ... while.

Ostatnie kilka rozdziałów niniejszego kursu poświęciłem na omówienie narzędzia do pracy z tekstem, które jest dostępne w standardzie C++, a konkretniej klasę std::string. Choć znajomość standardowych narzędzi dostępnych w każdym języku programowania jest bardzo ważna, to na chwilę obecną są ważniejsze cele do których powinieneś dążyć. Jednym z celów jaki obecnie powinieneś mieć to lepsze poznanie składni języka C++ i tym rozdziale się na tym skupimy. Tym razem będą to słowa kluczowe
continue
 oraz
break
. Znaczenie wspomnianych słów kluczowych będzie omawiane w kontekście pętli for, while oraz do ... while.

Do czego służą słowa kluczowe continue oraz break

Zacznijmy od podstaw, czyli do czego tak na dobrą sprawę są nam potrzebne słowa kluczowe
continue
 oraz
break
. Słowa kluczowe
continue
 oraz
break
 umożliwiają nam zmianę standardowego zachowania działania pętli. Przykładowo: jeżeli utworzysz pętlę for, która załóżmy ma za zadanie wczytać określoną liczbę cyfr, a ponadto wiesz, że chcesz przerwać wczytywanie danych gdy wystąpi jakikolwiek błąd - to wówczas z pewnością będziesz chciał zmodyfikować standardowe zachowanie działania pętli po to, by nie tworzyć złożonego warunku kończącego pętlę. W innym z kolei przypadku możesz mieć potrzebę 'pomijania' tych cyfr, których nie udało się wczytać. Jeżeli 'nie czujesz' problemu, który przedstawiłem w powyższym opisie - poświęć chwilę czasu i spróbuj napisać program realizujący jedno z opisanych założeń, wykorzystując przy tym tylko i wyłącznie wiedzę, którą posiadasz na chwilę obecną - mówiąc wprost: nie korzystając ze słów kluczowych
continue
 oraz
break
.

Jeżeli podjąłeś próbę realizacji wyżej opisanych zadań to zapewne zauważyłeś, że napisanie pętli for takiej, która spełniałaby nasze założenia nie było wcale takie proste. Choć kod można pisać spontanicznie i niekoniecznie elegancko to warto jednak poświęcać czas na zastanowienie się, czy nie da się tego samego napisać 'ładniej'. Choć nie wszystko się od razu wie i do większości rzeczy dochodzi się sukcesywnie to każdą porcję zdobytej wiedzy trzeba sobie cenić, niezależnie od tego czy mamy zamiar z tego korzystać czy nie.

Pętla, a słowo kluczowe break

Skoro zapoznałeś się z przydługawym wstępem, jaki dla Ciebie przygotowałem to teraz postaram się omówić przystępnym językiem znaczenie słowa kluczowego
break
. Słowo kluczowe
break
 przerywa aktualnie wykonywaną pętlę. Innymi słowy: jeżeli w pętli dowolnego typu zostanie wywołane słowo kluczowe
break
 to program 'wie', że pętla ma się natychmiast zakończyć. Kolejną instrukcją, jaka będzie wykonana po wyjściu z pętli za pomocą słowa kluczowego
break
 będzie ta, która znajduje się bezpośrednio poza przerwaną pętlą. Przykład:
C/C++
#include <iostream>

int main()
{
    for( int x = 0; x < 10; x++ )
    {
        if( x == 7 )
        {
            std::cout << "Teraz 'x' wynosi " << x << "." << std::endl;
            std::cout << "Przerywam petle!" << std::endl;
            break;
        }
        std::cout << "x = " << x << std::endl;
    }
    std::cout << "Teraz jestem tu :)" << std::endl;
    return 0;
}
Standardowe wyjście programu:
x = 0
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
Teraz 'x' wynosi 7.
Przerywam petle!
Teraz jestem tu :)

Pętla, a słowo kluczowe continue

Skoro już wiesz jak działa słowo kluczowe
break
 użyte wewnątrz pętli, to teraz skupimy się na słowie kluczowym
continue
. Słowo kluczowe
continue
 wykorzystuje się wtedy, gdy chcemy pominąć wykonywanie kodu znajdującego się w pętli - od miejsca wystąpienia słowa kluczowego
continue
 aż do samego końca pętli. Mówiąc prościej: jeżeli w danym kroku pętli zostanie wywołane słowo kluczowe
continue
 to krok aktualnie wykonywany zostanie zakończony, a następnie pętla przejdzie do wykonywania kolejnego kroku. Analiza poniższego kodu powinna Ci pomóc zrozumieć zasadę działania słowa kluczowego
continue
. Oto kod:
C/C++
#include <iostream>

int main()
{
    for( int x = 0; x < 8; x++ )
    {
        std::cout << "x = " << x << std::endl;
        if( x == 2 || x == 3 || x == 5 )
        {
            std::cout << "Teraz 'x' wynosi " << x;
            std::cout << " - wywoluje continue!" << std::endl;
            continue;
        }
        std::cout << "KONIEC kroku x = " << x << std::endl;
    }
    return 0;
}
Standardowe wyjście programu:
x = 0
KONIEC kroku x = 0
x = 1
KONIEC kroku x = 1
x = 2
Teraz 'x' wynosi 2 - wywoluje continue!
x = 3
Teraz 'x' wynosi 3 - wywoluje continue!
x = 4
KONIEC kroku x = 4
x = 5
Teraz 'x' wynosi 5 - wywoluje continue!
x = 6
KONIEC kroku x = 6
x = 7
KONIEC kroku x = 7

Przykład zastosowania słowa kluczowego continue

Załóżmy, że chcemy napisać funkcję, która ma zsumować wszystkie liczby znajdujące się w tablicy i jednocześnie chcemy, aby wypisała na ekran liczby parzyste znajdujące się w tablicy. Ponadto chcemy, aby funkcja ta obliczyła nam sumę tych liczb, które zostały wypisane na ekran. Funkcję opisaną powyżej możemy napisać bez używania słowa kluczowego
continue
, jednak warto zastanowić się jak taki kod będzie wyglądał wykorzystując przy tym nowo zdobytą wiedzę. Poniżej zamieszczam przykładowe rozwiązanie opisanego zadania. Twoim natomiast zadaniem jest przeanalizowanie zamieszczonego rozwiązania.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void wypisz( int tablica[], int rozmiar )
{
    std::cout << "Liczby w tablicy: " << std::endl;
    for( int i = 0; i < rozmiar; ++i )
         std::cout << tablica[ i ] << ", ";
   
    std::cout << std::endl;
}

void wykonajZadanie( int tablica[], int rozmiar )
{
    std::cout << "Wykonaj zadanie: " << std::endl;
    int iSumaWszystkich = 0;
    int iSumaWypisanych = 0;
    for( int i = 0; i < rozmiar; ++i )
    {
        iSumaWszystkich += tablica[ i ];
        if( tablica[ i ] % 2 != 0 )
             continue;
       
        std::cout << tablica[ i ] << ", ";
        iSumaWypisanych += tablica[ i ];
    }
    std::cout << std::endl;
    std::cout << "Suma wszystkich: " << iSumaWszystkich << std::endl;
    std::cout << "Suma wypisanych: " << iSumaWypisanych << std::endl;
}

int main()
{
    srand( time( 0 ) );
    int tab[ 10 ];
    for( int i = 0; i < 10; ++i )
         tab[ i ] = rand() % 100;
   
    wypisz( tab, 10 );
    wykonajZadanie( tab, 10 );
    return 0;
}
Przykładowe standardowe wyjście programu:
Liczby w tablicy:
19, 40, 84, 85, 31, 33, 45, 13, 39, 3,
Wykonaj zadanie:
40, 84,
Suma wszystkich: 392
Suma wypisanych: 124

Podsumowanie

Żeby pisać 'ładny' kod (choć piękno to pojęcie względne) trzeba być stale otwartym na zdobywanie nowej wiedzy oraz poświęcać czas na analizowanie pisanego przez siebie kodu. Dla każdego programisty kluczową umiejętnością (nad którą trzeba systematycznie pracować) jest nauka pisania kodu krótkiego i jednocześnie czytelnego. Po to właśnie istnieją różne instrukcje w każdym języku programowania - w tym również w omawianym języku C++.

Zadanie domowe

1. Przeanalizuj przykłady występujące w niniejszym rozdziale, przepisz je i sprawdź jak działają. Spróbuj zmodyfikować wybrane przez siebie programy. Upewnij się, że rozumiesz dlaczego na ekranie pojawiają się określone wyniki.
2. Zmodyfikuj przykładowe programy z niniejszego rozdziału tak, aby nie używały słów kluczowych
continue
 oraz
break
. Zmodyfikowane programy muszą działać tak samo, tj. wykonywać te same obliczenia i wypisywać takie same wyniki na ekranie.
Poprzedni dokument Następny dokument
Modyfikowanie tekstu i sprawdzanie jego długości Zagnieżdżanie pętli