C/C++

instrukcje:

grupowa

war

w

un

u k

n owa

ow „if”

wyboru „switch”

pętla „while”

pętla „do while”

pętla „for”

break

continue

C/C++ - instrukcje

Instrukcja przypisania

W instrukcji przypisania następuje przypisanie wartości wyrażenia zmiennej postaci:

wynik=c/(i+f)*d-sin(x)+0.5;

Możliwe jest przypisanie wielokrotne postaci:

a=b=c=0;

wykorzystywane np. do zerowania zmiennych względnie ich

inicjalizacji tą samą wartością.

C/C++ - instrukcje

Instrukcja grupowa

Instrukcja grupowa (blok instrukcji) jest ciągiem instrukcji ujętych w nawiasy klamrowe.

Instrukcja grupowa jest traktowana jak instrukcja elementarna, jeśli dochodzi do wejścia do bloku to wszystkie instrukcje składowe w niej zawarte są wyk

y onyw

y an

a e.

e

Przykład:

{

x=1;

y=3;

z=x+y;

}

C/C++ - instrukcje

Instrukcja warunkowa

Instrukcja warunkowa (alternatywy) jest instrukcją pozwalającą na alternatywną realizację dwóch bloków instrukcji. Sterowanie wyborem jest realizowane wartością wyrażenia logicznego.

Postać ogólna instrukcji warunkowej:

if(W) I1 else I2

Jeżeli wartością wyrażenia logicznego W jest true (różna od zera) to realizowana jest instrukcja (grupowa) I1, w przeciwnym wypadku (else) instrukcja I2.

C/C++ - instrukcje

Instrukcja warunkowa c.d.

Przykład 1. Sprawdzenie parzystości liczby całkowitej

unsigned int x;

cin>>x;

if (x%2==0)

{

cout<<”Liczba ”<<x<< ”jest parzysta”;

}

else

{

cout<<”Liczba ”<<x<< ”jest nieparzysta”;

}

Uwaga: Jeśli w bloku występuje jedna instrukcja nawiasy klamrowe (programowe) można pominąć.

if (x%2==0)

cout<<”Liczba ”<<x<< ”jest parzysta”; else

cout<<”Liczba ”<<x<< ”jest nieparzysta”; przykład

C/C++ - instrukcje

Instrukcja warunkowa niepełna

W przypadku gdy nie ma żadnych instrukcji do wykonania po słowie kluczowym else, mówimy o niepełnej instrukcji warunkowej. W takiej sytuacji słowo kluczowe else nie występuje, a instrukcja ma postać:

if (W) I

Pr

P zykład 2.

d W

y

W znaczenie m

oduł

m

u liczby c

ałkowi

kow tej (

wa

w rtośc

ś i be

zwz

w ględnej).

int x,y;

cin>>x;

y=x;

if (x<0) y=-x;

cout<<”\nModuł liczby ”<<x<<”jest równy ”<<y;

// rozwiązanie z wykorzystaniem wyrażenia

//warunkowego

y= x>=0 ? x:-x;

przykład

C/C++ - instrukcje

Instrukcja warunkowa c.d.

Zagnieżdżanie instrukcji warunkowych.

Instrukcje warunkowe można zagnieżdżać, czyli po słowie kluczowym if lub else może wystąpić kolejna instrukcja warunkowa, a w tej z kolei kolejna itd. W przypadku kiedy mamy do czynienia z zagnieżdżonymi instrukcjami warunkowymi, wśród których występują instrukcje niepełne i

i p

eł

e n

ł e

e o

raz

a

z o

puszc

z z

c o

z ne

e z

o

z sta

t ł

a y

ł

y n

aw

a ia

i s

a y

y k

la

l m

a r

m owe

e (

wys

y tę

t p

ę ują

ą

pojedyncze instrukcje), teoretycznie może nie być jednoznaczne przyporządkowanie słowa else do jednego w wcześniejszych wystąpień słowa kluczowego if.

W C++ problem jednak nie występuje, gdyż w takim przypadku else przynależy do najbliższego (wcześniejszego) wystąpienia słowa if.

C/C++ - instrukcje

Instrukcja warunkowa c.d.

Zagnieżdżanie instrukcji warunkowych.

Przykład 3.

if (a+b>c)

if(a+c>b)

if(b+c>a)

cout<<”to jest trójkąt”;

else

{

cout<<”ten komunikat zobaczymy tylko w przypadku”; cout<<” niespełnienia warunku (b+c>a) a spełnienia”; cout<<”pozostałych”;

}

przykład

C/C++ - instrukcje

Instrukcja warunkowa – stopniowanie „if-else-if”

W języku C++ możliwe jest stosowanie następującej postaci instrukcji warunkowej:

if (W1) I1

else if (W2) I2

...

else i

f (

Wn)

Wn I

n

I

else In+1

W instrukcji powyższej sprawdzane są warunki od W1 do Wn i w sytuacji spełnienia któregoś (wartość logiczna true) następuje wykonanie odpowiedniego bloku instrukcji, a następnie zakończenie całego bloku.

Instrukcja In+1 jest wykonywana jeśli nie został spełniony żaden z warunków.

C/C++ - instrukcje

Instrukcja warunkowa – stopniowanie if-else-if

Przykład 4. Sprawdzenie czy liczba należy do rzędu jednostek, dziesiątek , setek, tysięcy lub większego rzędu.

if (x

if

<10

(x

)

<10

) cou

t<

cou

<”j

t<

ed

<”j

n

ed ost

n

ki

ost

”;

ki

else if (x<100) cout<<”dziesiątki”;

else if (x<1000) cout<<”setki”;

else if (x<10000) cout<<”jednostki tysięcy”;

else cout<<”rząd większy niż jednostki tysięcy ”;

przykład

C/C++ - instrukcje

Instrukcja wyboru jeden z wielu

„switch”

„switch” jest instrukcją, która pozwala

switch (W){

dokonać wyboru jednej z wielu

case wartość1:

sekwencji instrukcji. Sterowanie

instrukcje

wy

w borem

m odby

wa

w s

i

break;

się w

a

w rtośc

ś ią

ca

c se

s w

arto

t ść

ś 2

ć :

(zmiennej lub wyrażenia W).

instrukcje

Instrukcje po klauzuli default

break;

wykonywane są w przypadku, kiedy

...

wartość wyrażenia W nie jest równa

default:

żadnej z wartości wymienionych po

instrukcje

słowie case. Klauzula default jest

}

opcjonalna, gdy nie występuje i wartość

wyrażenia W nie jest równa żadnej z

wartości wymienionych po słowie case,

nie jest podejmowana żadna akcja.

C/C++ - instrukcje

Instrukcja „switch”

Przykład 5. Szkielet menu programu

int co;

printf(" MENU PROGRAMU \n\n\n" ); printf(" 1 -- dane \n"); printf(" 2 -- obliczenia\n" ); printf(" 3 -- wykres \n\n" ); printf(" wybierz opcje - " );

scanf("%d",&co);

switch (co) {

case 1: printf(" Tu nalezaloby podac dane " ); break;

case 2: printf(" Tu wykonywane bylyby obliczenia " ); break;

case 3: printf(" Tu bylby rysowany wykres " ); break;

default:printf(" niewłasciwy numer polecenia " );

}

przykład

C/C++ - instrukcje

Instrukcja „while”

Instrukcja while jest instrukcją pętli, w której blok instrukcji realizowany cyklicznie w przypadku gdy wartość logiczna wyrażenia sterującego pętlą wynosi true (jest różna od zera).

Ogólna postać instrukcji jest następująca:

wh

w i

h le(W) I

gdzie W jest wyrażeniem logicznym, a I jest instrukcją grupową.

W celu uniknięcia niekontrolowanego wystąpienia pętli nieskończonej należy zadbać o to, aby w sekwencji instrukcji realizowanej we wnętrzu pętli następowała modyfikacja zmiennych występujących w wyrażeniu logicznym W.

C/C++ - instrukcje

Instrukcja „while”

Przykład 6. Wczytywanie znaków z klawiatury i wyświetlanie ich na ekranie. Wczytywanie kończy znak „q” (nie jest wyświetlany).

char c;

cout<<"podawaj znaki, \'q\' kończy

wprowadzanie\n";

c=getch();

while (c!='q')

zauważmy, że pierwszym

{

wczytanym znakiem może

cout<<c;

być ‘q’

c=getch();

}

cout<<"\nkoniec wprowadzania\n";

przykład

przykład. szukanie liczby w wektorze(lampka)

szukanie liczby

C/C++ - instrukcje

Instrukcja „do while”

Instrukcja do while jest instrukcją pętli, w której została zmieniona kolejność bloków w stosunku do pętli while. W instrukcji do while najpierw następuje wykonanie bloku instrukcji a dopiero po nim sprawdzany jest warunek (wyrażenie logiczne) i jeśli jest spełniony (wartość true) następuje kolejne wykonanie bloku operacji.

Ogóln

l a

a p

osta

t ć

a

ć i

n

i str

t ukcj

c i

j

i j

es

e t

t n

as

a tę

t p

ę ując

ą a

c :

a

do I while (W);

gdzie W jest wyrażeniem logicznym, a I jest instrukcją grupową.

Podobnie jak pętli while, w celu uniknięcia niekontrolowanego wystąpienia pętli nieskończonej należy zadbać o to, aby w sekwencji instrukcji realizowanej we wnętrzu pętli następowała modyfikacja zmiennych występujących w wyrażeniu logicznym W.

C/C++ - instrukcje

Instrukcja „do while”

Przykład 7. Wczytywanie znaków z klawiatury i wyświetlanie ich na ekranie. Wczytywanie kończy znak „q” ( jest wyświetlany).

char c;

cout<<"podawaj znaki, \'q\' kończy

wprowadzanie\n";

do{

c=getch();

cout<<c;

}while (c!='q');

cout<<"\nkoniec wprowadzania\n";

przykład

C/C++ - instrukcje

Instrukcja „ do while”

Przykład 7a. Losowe wyświetlanie znaków na konsoli do momentu naciśnięcia klawisza.

unsigned char c;

do{

c=

c r

= a

r n

a d

n (

d )

( ;

)

putchar(c);

}while (!kbhit());

cout<<"koniec wyświetlania";

//putchar(c)- wyświetla znak o podanym kodzie

//kbhit() – zwraca true jeśli naciśnięto klawisz

przykład

przykład. pełne menu

C/C++ - instrukcje

Instrukcja pętli „for”

W większości języków programowania konstrukcja pętli for zakłada, że liczba powtórzeń pętli jest sterowana specjalnie do tego celu użytą zmienną oraz to, że liczba powtórzeń pętli jest z góry znana (lub można ją wyznaczyć). Są to dwie cechy odróżniające pętlę for od pętli while lub do while.

Stąd też bardzo częstym zastosowaniem pętli for są operacje na tablicach.

W języku C++ konstrukcja pętli for jest bardziej elastyczna, w zasadzie można nią zastąpić pozost

os ałe, c

o na

o

jwy

w żej t

racąc na

pr

zejrzyst

s ośc

ś i pr

ogramu.

m

Ogólna postać instrukcji for jest następująca:

for (W1;W2;W3) I

gdzie:

W1 – ustawienie początkowych wartości (inicjalizacja)

zmiennej lub zmiennych sterujących pętlą;

W2 - warunek pozostania w pętli;

W3- instrukcja lub instrukcje modyfikacji zmiennych sterujących; I – blok instrukcji realizowany w ramach pętli.

C/C++ - instrukcje

Instrukcja pętli „for” c.d.

for (W1;W2;W3) I

Pętla for jest realizowana w następujący sposób. W pierwszej kolejności wykonywane są instrukcje inicjalizujące zmienne sterujące pętlą W1, jeśli jest ich więcej niż jedna to są separowane przecinkiem.Ta czynność realizowana jest tylko raz.

Następnie cyklicznie: sprawdzana jest wartość wyrażenia logicznego W2, jeśli wynosi true

u

(liczba r

óż

ó na od

zera) r

ealizowa

ow ny j

est

s bl

ok i

ok nst

ns rukcji I

, a

po ni

po m

m

wykonywane są instrukcje modyfikacji zmiennej sterującej ( lub zmiennych, wówczas instrukcje separuje się przecinkiem) W3.

Instrukcję for można przedstawić posługując się instrukcją while w następujący sposób: W1 while (W2) { I W3 }

C/C++ - instrukcje

Instrukcja pętli „for” c.d.

W1 while (W2) {I W3}

Przykład 8. Obliczenie sumy N początkowych liczb naturalnych const int N=15;

const int N=15;

int suma=0;

int s

int

uma

s

=0

uma

;

=0

int i=1;

for(int i=1;i<=N;i++)

while (i<=N)

{

{

suma+=i;

suma+=i;

}

i++;

cout<< suma;

}

cout<< suma;

przykład

C/C++ - instrukcje

Instrukcja pętli „for” c.d.

Przykład 9. Wypełnienie tablicy dwuwymiarowej liczbami całkowitymi const int N=2,M=3;

int tab[N][M],p;

cout<<"podawaj elementy tablicy "<<N<<'x'<<M<<endl; for ( int i=0;i<N;i++)

for (int j=0;j<M;j++)

{

cout<<'('<<i<<','<<j<<”)=”; cin>>p;

tab[i][j]=p;

}

wypełnianie,losowanie, wyświetlanie tablic

C/C++ - instrukcje

Instrukcja pętli „for” c.d.

for (W1;W2;W3) I

Elementy składowe pętli W1,W2,W3 są opcjonalne, w skrajnym przypadku pętla pozbawiona wszystkich tych elementów jest pętlą nieskończoną:

for ( ; ; ) cout<<”pętla nieskończona\n”;

Inną odmianą pętli for jest pętla opóźniająca, gdzie blok operacji jest pusty:

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

C/C++ - instrukcje

Instrukcja break

Instrukcja break umieszczona w pętli while, do while lub for powoduje wyjście z pętli. W instrukcji switch, zastosowana na zakończenie sekwencji case, powoduje zakończenie instrukcji switch.

Należy pamiętać o tym, aby nie nadużywać instrukcji break i jeśli jest to możliwe zastąpić odpowiednio zmodyfikowaną instrukcją pętli.

Uz

U asa

s dnione (

?) u

ż

u ycie i

nst

ns rukcji b

r

b e

r ak mo

m ż

o e na

st

s ąpić w

w pę

p tli ni

esko

s

ńc

ń zonej do

jej

opuszczenie o ile zajdą do tego okoliczności (przykład poniżej).

Przykład 10. Nieskończona pętla for przerywana przez naciśnięcie przycisku na klawiaturze.

for ( ; ; )

{

if (kbhit()) break;

}

przykład

C/C++ - instrukcje

Instrukcja continue

Instrukcja continue umieszczona w pętli while, do while lub for powoduje:

- w pętli for zakończenie realizacji bieżącej iteracji i przejście do modyfikacji zmiennej sterującej,

-w pętlach while i do while pominięcie dalszych instrukcji w bloku i przejście do sprawdzenia warunku.

Należy pamiętać o tym, że nadużywanie instrukcji continue może spowodować pogorszenie czytelności programu i jeśli jest to możliwe zastąpić instrukcję continue instrukcją warunkową.

for (int i=1;i<100 ;i++ )

Przykład 11. Wyświetlanie liczb

parzystych z przedziału [1,99].

{

if (i%2!=0) continue;

cout<<i<<endl;

przykład

}