Programowanie i jezyk C Wyklad 02 Instrukcje

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 x 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ść

0 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) (for, while, do ... while),

instrukcje warunkowe (if, if ... else ...),

instrukcję wyboru (switch),

instrukcje sterujące, (np. break, continue, return, goto).

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

for, while 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-warunkowe1, wyrażenie-warunkowe2 muszą być typu skalarnego,
instrukcja1, instrukcja2, instrukcja3 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 x 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 i 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 x będzie typu

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

1. Sprawdzamy (bezpośrednio),

czy p jest niezerowe, tzn. „czy

p

wskazuje na poprawny

obiekt”.

if (p)

// instrukcja

2. Porównujemy p 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

W

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

p lub P 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();


Wyszukiwarka

Podobne podstrony:
Programowanie i jezyk C Wyklad 01 Typy danych
Programowanie i jezyk C Wyklad 05 Funkcje
Programowanie i jezyk C Wyklad 04 Tablice i wskazniki
Programowanie i jezyk C Lab 02
Wykład 02 - analiza instrumentalna - dodatkowe materiały, Analiza instrumentalna
Język polski SP kl5 SzU sprawdzian 02 instrukcja
WYKŁAD 02 SterowCyfrowe
logika wyklad 02
ETP wyklad 5 optyka w instrumentach geodezyjnych
pdf wykład 02 budowa materii, podstawowe prawa chemiczne 2014
013 HISTORIA SZTUKI WCZESNOCHRZEŚCIJAŃSKIEJ I BIZANTYJSKIEJ, WYKŁAD,# 02 10
Młoda Polska WYKŁAD (02 04 2014)
wykład 02 2013
pmp wykład 02 15
wykład& 02 2013

więcej podobnych podstron