Instrukcje programowe
Jest to najprostszą i najczęściej używana instrukcja. Przypisuje wartość wyrażenia znajdującego się po prawej stronie znaku równości (=) do zmiennej znajdującej się po lewej stronie.
Przykłady:
Instrukcja break może wystąpić tylko wewnątrz pętli do-while, while i for lub w instrukcji switch. Powoduje wyjście z najbardziej zagnieżdżonej pętli lub przerwanie wykonywania instrukcji switch.
Składnia:
Przykłady:
Wykorzystanie instrukcji break do przerwania instrukcji switch do wyświetlenia ilości dni w miesiącu:
char miesiac;
...
switch (miesiac) {
case 4 :
case 6 :
case 9 :
case 11 : printf("Miesiąc ma 30 dni\n"); break;
case 2 : printf("Miesiąc ma 28 lub 29 dni\n"); break;
default : printf("Miesiąc ma 31 dni\n");
}
Przerwanie pętli do-while, gdy użytkownik wprowadzi wartość -1 lub >20:
int i;
do {
scanf("%d", &i);
if (i == 0 || i > 20) break;
printf("%d! = %d\n", i, silnia(i));
} while (1);
Instrukcja continue, podobnie jak break, używana jest tylko wewnątrz pętli do-while, while i for. Pomija ona resztę ciała pętli, powodując natychmiastowe rozpoczęcie kolejnego cyklu pętli. Zwróć uwagę na różnicę w stosunku do break, które całkowicie wyskakuje z pętli.
Składnia:
Przykład:
Pętla oblicza pierwiastki wprowadzonych liczb. Jeżeli użytkownik poda liczbę ujemną, to jest ona ignorowana:
int i;
float j;
for (i = 0; i < 10; i ++) {
scanf("%f", &j);
if (j < 0) continue;
printf("Pierwiastek z %f = %f\n", l, sqrt(j));
}
Pętla do-while jest bardzo podobna do while. Różnica polega na tym, że pętla while może w ogóle się nie wykonać, jeśli warunek nie będzie spełniony, natomiast pętla do-while wykona się przynajmniej raz, bo warunek sprawdzany jest dopiero na jej końcu.
Składnia wygląda następująco:
do
{
instrukcje do wykonania
} while(warunek);
Pętla ta działa na podstawie następującego algorytmu:
Przykład:
#include <stdio.h>
void main(void)
{ int i = 0;
printf("Początek pętli\n");
do
{ printf("Licznik pętli = %d\n", i);
i++;
} while(i < 10);
printf("Koniec pętli\n");
}
Porównaj ten przykład z przykładem zamieszczonym przy pętli while.
Najbardziej rozbudowaną instrukcją języka C++ jest pętla for. Składnia wygląda następująco:
Pętla ta działa na podstawie następującego algorytmu:
for(;;)
{
instrukcje do wykonania
}
Taka konstrukcja jest pętlą nieskończona - będzie wykonywała się aż do momentu, gdy użytkownik zresetuje komputer (bądź zakończy program przy pomocy odpowiedniego polecenia systemu operacyjnego) lub gdy program napotka instrukcję break.
Przykład:
#include <stdio.h>
void main(void)
{ int i;
printf("Początek pętli\n");
for(i = 0; i < 10; i++)
{ printf("Licznik pętli = %d\n", i);
}
printf("Koniec pętli\n");
}
W części inicjalizacyjnej dokonujemy ustawienia zmiennej i na 10. Mogliśmy to zrobić wcześniej (np. przy deklaracji) i część tą zostawić pustą. Następnie jest warunek wyjścia z pętli. Zmniejszenia licznika nie dokonujemy wewnątrz pętli, lecz w części inkrementacja. Możemy to robić wewnątrz pętli, a tą cześć pozostawić pustą, ale zostało to zapisane w ten sposób, aby zaprezentować sposób użycia.
Części inicjalizacja i inkrementacja mogą zawierać po kilka instrukcji: oddzielamy je wtedy przecinkami. Żeby to zobaczyć zmodyfikujemy poprzedni program dodając jeszcze jedną zmienna, która jest podwajana przy każdym przejściem pętli:
#include <stdio.h>
void main(void)
{ int i, n;
printf("Początek pętli\n");
for(i=0, n=1; i < 10; i++, n*=2)
{ printf("Licznik pętli = %d\n", i);
printf("Zmienna n = %d\n", n);
}
printf("Koniec pętli\n");
}
Instrukcja if służy do warunkowego wykonania innej instrukcji.
Składnia:
Przykłady:
#include <stdio.h>
void main(void)
{ unsigned int i=7;
if (i) printf("Warunek jest prawdziwy");
...
if (i % 2 == 0) printf("Liczba %d jest parzyste", i);
else printf("Liczba %d jest nieparzyste", i);
...
if (i >= 100) printf("Liczba %d jest co najmniej trzycyfrowa", i);
else if (i >= 10) printf("Liczba %d jest dwucyfrowa", i);
else printf("Liczba %d jest jednocyfrowa", i);
}
Pierwsza instrukcja if wyświetli napis Warunek jest prawdziwy, ponieważ 7 jest różne od 0, co oznacza prawdę..
Instrukcja pusta jest pustym ciągiem znaków zakończonym średnikiem (;). Korzystamy z niej w instrukcjach pętli lub warunkowych, gdy wymagane jest użycie chociaż jednej instrukcji, a my nie chcemy niczego robić.
Instrukcja return kończy wykonanie funkcji i powoduje powrót do miejsca jej wywołania. Użycie instrukcji return w funkcji main powoduje zakończenie programu.
Składnia:
Przykład:
#include <stdio.h>
float kwadrat(float x)
{ return (x * x); }
void main(void)
{ float i;
i = kwadrat( 1.25);
printf("Kwadrat 1.25 = %f\n", i);
return;
}
Pierwsza instrukcja return (użyta w funkcji kwadrat) zwraca iloczyn liczb typu float, co jest zgodne z typem zadeklarowanej funkcji.
W funkcji main instrukcja return niczego nie zwraca, gdyż funkcję zadeklarowaliśmy jako void.
Kombinacja instrukcji if...else, w przypadku głębokiego zagnieżdżenia są mało efektywne w wykonaniu i nieczytelne w kodzie programu. Alternatywnym rozwiązaniem jest użycie instrukcji switch, która pozwala na wyszczególnienie dowolnej liczby wartości.
Tak wygląda składnia instrukcji:
switch(liczba) {
case 1 :
case 2 :
case 3 :
case 4 : printf("Liczba jest między 1 a 4"); break;
default : printf("Liczba spoza zakresu");
}
Spowoduje to wyświetlenie komunikatu Liczba jest mniejsza od 5, jeżeli liczba będzie równa 1, 2, 3 lub 4.
Przykład:
#include <stdio.h>
void main(void)
{ int X;
...
switch(X) {
case 4 : printf("Zmienna X jest równa cztery.\n"); break;
case 5 :
case 6 : printf("Zmienna X jest równa pięć lub sześć.\n"); break;
default: printf("Zmienna X jest nie jest równa ani cztery, ani pięć, ani sześć.\n");
}
}
Składnia wygląda następująco:
Przykład:
#include <stdio.h>
void main(void)
{ int i = 0;
printf("Początek pętli\n");
while(i < 10)
{ printf("Licznik pętli = %d\n", i);
i++;
}
printf("Koniec pętli\n");
}
Algorytm działania tego programu wygląda następująco:
Instrukcja złożona składa się z nawiasu klamrowego otwierającego, dowolnych instrukcji (mogą być również kolejne zagnieżdżone instrukcje złożone) i nawiasu klamrowego zamykającego. Instrukcja złożona jest jedyną instrukcją w języku C++ która nie kończy się średnikiem. Konstrukcje taką stosuje się wszędzie tam, gdzie składnia języka przewiduje jedną instrukcję, a chcemy wykonać więcej niż jedną instrukcję.
Przykład:
{
siuma = 0;
for ( x=0 ; x!=10 ; x++ )
{ if (x % 2 ==0) { printf ("%d jest liczba parzystą\n", x); }
else { printf ("%d jest liczba nieparzystą\n", x); }
}
}