C/C++
instrukcje:
grupowa
warunkowa „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ą.
C/C++ - instrukcje
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ą
wykonywane.
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
Przykład 2. Wyznaczenie modułu liczby całkowitej (wartości bezwzglę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 pełne oraz opuszczone zostały nawiasy klamrowe (występują
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 if (Wn) In
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<10) cout<<”jednostki”;
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
dokonać wyboru jednej z wielu
sekwencji instrukcji. Sterowanie
wyborem odbywa się wartością
(zmiennej lub wyrażenia W).
Instrukcje po klauzuli default
wykonywane są w przypadku, kiedy
wartość wyrażenia W nie jest równa
ż
adnej z wartości wymienionych po
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.
switch (W){
case wartość1:
instrukcje
break;
case wartość2:
instrukcje
break;
...
default:
instrukcje
}
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:
while(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”.
char c;
cout<<"
podawaj znaki, \'q\' ko
ń
czy
wprowadzanie\n
";
c=getch();
while (c!='q')
{
cout<<c;
c=getch();
}
cout<<"\
nkoniec wprowadzania\n
";
przykład
przykład. szukanie liczby w wektorze
zauważmy, że pierwszym
wczytanym znakiem może
być ‘q’
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ólna postać instrukcji jest następująca:
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. Losowe wyświetlanie znaków na konsoli do momentu
naciśnięcia klawisza.
unsigned char c;
do{
c=rand();
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ć
pozostałe, co najwyżej tracąc na przejrzystości programu.
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 (liczba różna od zera) realizowany jest blok instrukcji I, a po nim
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;
int suma=0;
for(int i=1;i<=N;i++)
{
suma+=i;
}
cout<< suma;
const int N=15;
int suma=0;
int i=1;
while (i<=N)
{
suma+=i;
i++;
}
cout<< suma;
przykład
C/C++ - instrukcje
Instrukcja pętli „for” c.d.
Przykład 9. Wypełnienie tablicy dwuwymiarowej liczbami całkowitymi
wypełnianie,losowanie, wyświetlanie tablic
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;
}
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.
Uzasadnione (?) użycie instrukcji break może nastąpić w pętli nieskończonej 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++ )
{
if (i%2!=0) continue;
cout<<i<<endl;
}
Przykład 11. Wyświetlanie liczb
parzystych z przedziału [1,99].
przykład