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:
#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:
#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.
#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.