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ą.
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;
}
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
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
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.
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 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.
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
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
wyborem odbywa si
break;
ę wartością
case wartość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:
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.
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')
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
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.
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
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.
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 }
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 suma=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.
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
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;
przykład
cout<<i<<endl;
}