background image

1

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

DR  INŻ.  

M

AŁGORZATA 

J

ANKOWSKA

2

WYRAŻENIA

Wyrażenie – wartość lub kombinacja wartości, operatorów i znaków przestankowych 

określających sposób wykonania danego obliczenia.

lub według innej definicji ...

Wyrażenie – ewaluowana (wartościowana) zgodnie z regułami określonymi 

w danym języku kombinacja wartości, zmiennych, operatorów i funkcji,
która zwraca inną wartość.

UWAGA

W języku C++ 

każde wyrażenie ma swoją wartość. Mówimy, że wyrażenie 

ewaluuje się do tej wartości.

PRZYKŁADY

10 + 50

Wyrażenie składające się z dwóch wartości oraz operatora dodawania.
Wartość wyrażenia równa jest 

60.

x = 35

W języku C++ wartość wyrażenia z przypisaniem definiowana jest jako wartość
lewego argumentu. Tak więc wartość wyrażenia równa jest 

35.

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

background image

3

PRZYKŁADY  – CIĄG DALSZY

x = 21 + (y = 5);

Wyrażenie przypisania ma wartość (zob. pkt. 2). Tak więc wyrażenie 

y = 5 ma 

wartość równą

5. Ostatecznie zmienna przyjmie wartość 26.

x = y = z = 0;

W powyższy sposób możemy w szybki sposób przypisać kilku zmiennym tę samą
wartość.

Zgodnie z priorytetem operatora 

(operacja przypisania jest łączona od strony 

prawej do lewej) wartość

zostanie najpierw przypisane do zmiennej z, następnie 

do zmiennej 

y, a na końcu do zmiennej x.

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

4

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE

Instrukcja – samodzielny element języka programowania umożliwiający zapis 

algorytmu oraz, co za tym idzie, sterowanie przebiegiem programu. 

Do instrukcji języka C++ zaliczamy:

instrukcję pustą,

instrukcje iteracyjne (pętle) (forwhiledo ... while),

instrukcje warunkowe (ifif ... else ...),

instrukcję wyboru (switch),

instrukcje sterujące, (np. breakcontinuereturngoto).

INSTRUKCJA  PUSTA

Instrukcja pusta umieszczona w kodzie źródłowym nie powoduje wykonania 
ż

adnych czynności. 

W języku C/C++ instrukcję taką zapisuje się w postaci średnika, którego nie poprze-
dzamy żadnym słowem kluczowym, ani wyrażeniem. Dobrym nawykiem jest 
umieszczanie instrukcji pustej w oddzielnym wierszu programu. Np.

for (int i=0; i<=10; i++)

;

Może się zdarzyć, że w trakcie pisania programu składnia języka wymaga podania 
w danym miejscu kodu wyrażenia lub instrukcji, podczas gdy implementowany 
algorytm nie wykonuje tam jakiejkolwiek czynności. W takiej sytuacji wystarczy 
umieścić w danym miejscu programu instrukcję pustą.

UWAGA

background image

5

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE

Instrukcje iteracyjne (inaczej instrukcje powtórzeń, pętle) umożliwiają

wielokrotne wykonywanie określonych czynności tak długo, jak jest 
spełniony pewien warunek.

Do instrukcji iteracyjnych języka C/C++ zaliczamy:

instrukcję „dla” (for),

instrukcje „dopóki” (while),

instrukcje „wykonuj ... dopóki” (do ... while).

1.  Instrukcja „dla” (for)
Ogólna postać instrukcji w języku C/C++ przedstawia się następująco:

for (wyrażenie-inicjujące; wyrażenie-warunkowe; wyrażenie-aktualizujące)

instrukcja1

gdzie

wyrażenie-inicjujące może być dowolnego rodzaju jednak najczęściej jest ono

wyrażeniem wyliczeniowym, które zawiera listę inicjacji liczników pętli. W języku 
C++ wyrażenie inicjujące może być połączone z deklaracją zmiennych;

wyrażenie-warunkowe musi być typu skalarnego;

wyrażenie-aktualizujące może być dowolnym wyrażeniem języka C/C++;

instrukcja może być dowolną instrukcją języka C/C++ (w tym instrukcją

grupującą).

6

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE – CIĄG DALSZY

Kolejne kroki wykonywane w trakcie 

działania pętli:

1. Obliczamy wyrażenia-inicjujących

i inicjujemy liczniki pętli (w przykładzie 
inicjujemy jeden licznik k wartością 1).

for (k = 1; k<=5; k++)
{

a[k] = k;

}

PRZYKŁAD 

2. Obliczamy wyrażenie-warunkowe. Jeżeli jego wartość jest niezerowa (true) 

wówczas wykonywane są instrukcje związane z pętlą

for (w przykładzie 

wykonane zostanie podstawienie a[k] = k).

3. Obliczamy wyrażenia-aktualizujące. W wyniku otrzymujemy zwiększenie lub 

zmniejszenie wartości liczników pętli (w przykładzie wartość licznika k będzie 
równa 2).

4. Ponownie obliczamy wyrażenie-warunkowe, a następnie jeżeli jego wartość

jest niezerowa powtarzamy czynności począwszy od punktu 2.

background image

7

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE – CIĄG DALSZY

 Dozwolone jest pominiecie każdego z wyrażeń występujących w instrukcji for.

 Jeżeli usuniemy wszystkie wyrażenia występujące w instrukcji for otrzymamy 

puste wyrażenie warunkowe, które ma wartość logiczną prawda.

UWAGI

PRZYKŁAD 

for (;;)
{

// instrukcje

}

for (;1;)
{

// instrukcje

}

Powyższe pętle są sobie 

równoważne.

Będą one wykonywane do momentu 
napotkania instrukcji sterujących 

break

return lub goto, które przeniosą
wykonywanie programu poza obszar pętli.

8

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE – CIĄG DALSZY

2.  Instrukcja „dopóki” (while)
Ogólna postać instrukcji w języku C/C++ przedstawia się następująco:

while (wyrażenie-warunkowe)

instrukcja

gdzie

wyrażenie-warunkowe – musi być typu skalarnego;

instrukcja – może być dowolną instrukcją języka C/C++ (w tym instrukcją

grupującą).

Sposób działania instrukcji while:
• Sprawdzamy, czy 

wyrażenie-warunkowe ma wartość niezerową (true).

Jeżeli tak, wówczas wykonujemy 

instrukcję związaną z pętlą while.

• Kontynuujemy wykonywanie 

instrukcji dopóki wyrażenie-warunkowe ma 

wartość niezerową (true).

• Przyjęcie przez 

wyrażenie-warunkowe wartości równej 0 (false) powoduje 

przeniesienie wykonywania programu poza pętlę

while.

background image

9

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE – CIĄG DALSZY

3.  Instrukcja „wykonuj ... dopóki” (do ... while)
Ogólna postać instrukcji w języku C/C++ przedstawia się następująco:

do 

instrukcja

while (wyrażenie-warunkowe);

gdzie

wyrażenie-warunkowe – musi być typu skalarnego;

instrukcja – może być dowolną instrukcją języka C/C++ (w tym instrukcją

grupującą).

Sposób działania instrukcji do ... while:
• Wykonujemy 

instrukcje. (Uwaga: Instrukcje zostaną wykonane co najmniej raz,  

gdyż

wyrażenie-warunkowe sprawdzane jest po zakończeniu pierwszej iteracji). 

• Sprawdzamy, czy 

wyrażenie-warunkowe ma wartość niezerową (true).

Jeżeli tak, wówczas wykonujemy 

instrukcje po raz kolejny.

• Kontynuujemy wykonywanie 

instrukcji dopóki wyrażenie-warunkowe ma 

wartość niezerową (true).

• Przyjęcie przez 

wyrażenie-warunkowe wartości równej 0 (false) powoduje 

przeniesienie wykonywania programu poza pętlę

do ... while.

10

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  ITERACYJNE – PORÓWNANIE

for (i=0; i<=4; i++)

a[i] = i;

1. Pętla for

i = 0;
while (i<=4)
{

a[i] = i;
i++;

}

2. Pętla while

i = 0;
do
{

a[i] = i;
i++;

} while (i<5);

3. Pętla do ... while

 Licznik i w pętli for jest inicjowany w pętli 

przed rozpoczęciem wykonywania  
instrukcji.

 Pętle while oraz do ... while wymagają

inicjacji licznika przed rozpoczęciem 
instrukcji w pętli.

UWAGI

Przykład pokazuje jak przy 
pomocy trzech różnych pętli 
iteracyjnych 

forwhile oraz do ... 

while wykonać to samo zadanie.

background image

11

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  WARUNKOWE

Instrukcje warunkowe umożliwiają sprawdzenie, czy spełniony jest określony 

warunek i na tej podstawie wykonanie (lub zaniechanie 
wykonania) określonych czynności.

Do instrukcji warunkowych języka C/C++ zaliczamy:

instrukcję „jeżeli” (if),

instrukcję „jeżeli ... w przeciwnym przypadku” (if ... else).

1.  Instrukcja „jeżeli” (if)
Ogólna postać instrukcji w języku C/C++ przedstawia się następująco:

if (wyrażenie-warunkowe)

instrukcja

gdzie

wyrażenie-warunkowe musi być typu skalarnego,
instrukcja może być dowolną instrukcją (w tym instrukcją grupującą).

12

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  WARUNKOWE – CIĄG DALSZY

2.  Instrukcja „jeżeli ... w przeciwnym przypadku” (if ... else)
Ogólna postać instrukcji w języku C/C++ przedstawia się następująco:

if (wyrażenie-warunkowe1)

instrukcja1

else if (wyrażenie-warunkowe2)

instrukcja2

...

else

instrukcja3

gdzie

wyrażenie-warunkowe1wyrażenie-warunkowe2 muszą być typu skalarnego,
instrukcja1instrukcja2instrukcja3 mogą być dowolnymi instrukcjami 

(w tym instrukcjami grupującymi). 

UWAGI

 Instrukcja if jest wykonywana, gdy wyrażenie-warunkowe jest niezerowe (lub  

wartość logiczna true). W przeciwnym razie (tj. gdy jest ono równe zero, lub ma 
wartość logiczną false) jest wykonywana druga instrukcja (lub sprawdzane 
kolejne 

wyrażenie-warunkowe).

 W miejsce wyrażenia-warunkowego możemy użyć dowolnego wyrażenia 

arytmetycznego lub wskaźnikowego.

background image

13

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  WARUNKOWE – CIĄG DALSZY

Niech będzie typu 

logicznego.  Wówczas 
następujące instrukcje 
są sobie równoważne:

1.

if (x)

// instrukcja

2.

if (x == true)

// instrukcja

3.

if (x != false)

// instrukcja

PRZYKŁAD  1

Niech będzie typu 

całkowitego. Wówczas 
następujące instrukcje 
są sobie równoważne:

1.

if (i)

// instrukcja

2.

if (i > 0)

// instrukcja

3.

if (i != 0)

// instrukcja

PRZYKŁAD  2

Niech będzie typu 

wskaźnikowego. Wówczas 
następujące instrukcje 
są sobie równoważne:

1. Sprawdzamy (bezpośrednio), 

czy jest niezerowe, tzn. „czy 

p

wskazuje na poprawny 

obiekt”.

if (p)

// instrukcja

2. Porównujemy z wartością 0, 

o której wiemy, że nie  
wskazuje na żaden obiekt. 
Sprawdzamy przez to 
(pośrednio), podobnie jak 
w pkt. 1, „czy p wskazuje na 
poprawny obiekt”.

if (p != 0)

// instrukcja

PRZYKŁAD  3

UWAGI

wyrażeniach-warunkowych często używa się:

 operatorów porównania (==, !=, <, >, <=, >=), 

które dają w wyniku wartości logiczne (true, false),

 operatory logiczne (&&, ||, !).

14

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJE  WARUNKOWE – CIĄG DALSZY

Niektóre proste instrukcje 

if mogą być zastąpione wygodniejszą formą, w której 

użyjemy 

operatora warunkowego ?: . Przykładowo następującą instrukcję:

if (a >= b)

max_value = a;

else

max_value = b;

możemy zapisać równoważnie w postaci:

max_value = a >= b ? a : b

lub dodatkowo ujmując warunek w nawiasy (przez co zwiększamy czytelność kodu) 
w postaci:

max_value = (a >= b) ? a : b

UWAGA

background image

15

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

Ogólna postać instrukcji 

switch w języku C/C++ przedstawia się następująco:

INSTRUKCJA  WYBORU

Instrukcja wyboru (switch) służy do testowania pewnej wartości względem danego 

zbioru stałych oraz podjęcia określonych działań
w przypadku, gdy wartość ta należy do tego zbioru.

switch (wyrażenie-sterujące)
{

case wyrażenie-stałe1:

instrukcja1
break;

case wyrażenie-stałe2:

instrukcja2
break;

default:

instrukcja3
break;

}

gdzie 

wyrażenie-sterujące 

musi być typu całkowitego, a 
instrukcja1, ... ,instrukcja3
mogą być dowolnymi instrukcjami 
(w tym instrukcjami grupującymi). 

UWAGA

 Wykonanie instrukcji wyboru rozpoczyna się

od obliczenia wartości 

wyrażenia-sterującego.

 Program jest wykonywany począwszy od 

pierwszej instrukcji należącej do „gałęzi”, dla 
której wartość

wyrażenia-sterującego równa 

jest wartości 

wyrażenia-stałego.

 W przypadku, gdy żadne z wyrażeń-stałych nie 

jest równe wartości 

wyrażenia-sterującego

wówczas program wykonuje instrukcje 
począwszy od domyślnej etykiety 

default, lub 

jeżeli jej nie ma, kończy wykonywanie instrukcji 
switch.

16

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJA  WYBORU – CIĄG DALSZY

W przypadku, gdy założeniem programisty jest wykonanie danego zadania jedynie 
w obrębie danej gałęzi, wówczas każda z nich musi być w jakiś sposób zakończona. 
Najczęściej wykorzystuje się do tego celu instrukcje 

break lub return.

UWAGA

// ... //
switch (klawisz)
{

case ’p’:
case ’P’:

PoleProstokata();
break;

case ’t’:
case ’T’:

PoleTrojkata();
break;

default:

cout << ”Nie wybrano zadnej opcji” << endl; 

}

PRZYKŁAD 

W przypadku, gdy zmienna klawisz 
typu char będzie odpowiadała   
znakowi litery 

lub wówczas 

program wywoła funkcję obliczającą
pole prostokąta.

„Gałąź” rozpoczynająca się od 
etykiety wyboru 

case ’p’

nie została zakończona
Oznacza to, że 

będzie ona 

kontynuowana aż do instrukcji 
break, która kończy „gałąź”
następującą po niej.

background image

17

M

.  

J

ANKOWSKA  –

W

YKŁAD

2 I

NSTRUKCJE JĘZYKA 

C

++

INSTRUKCJA  WYBORU – CIĄG DALSZY

Instrukcję

switch możemy zastąpić zbiorem instrukcji if.

Działanie ich będzie takie samo, lecz preferuje się pierwszą z nich ze względu na 
możliwość jawnego wyrażenia właściwej natury operacji testowania wartości 
względem pewnego zbioru, przez co zapis staje się bardziej czytelny.

UWAGA

PRZYKŁAD 

switch (wybor)
{

case 1:

Opcja1();
break;

case 2:

Opcja2();
break;

case 3:

Opcja3();
break;

default:

Opcja4();

}

if (wybor == 1)

Opcja1();

else if (wybor == 2)

Opcja2();

else if (wybor == 3)

Opcja3();

else

Opcja4();