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
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ą.
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;
}
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.
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
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
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.
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
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.
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
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.
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
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.
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
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.
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
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
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.
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 }
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
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
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++);
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
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
}