Języki programowania C++ Pętle i instrukcje warunkowe Mgr Inż. Michał Żyjewski mzyjewski@wsiz.wroc.pl
Typy Liczbowe int a; int b=3; float c; float d=-2.5; int - liczba całkowita, dozwolone dla niej modyfikatory to long (długa), short (krótka), signed (ze znakiem) i unsigned (bez znaku). Zależnie od architektury komputera i naszej wersji C, typ ten może zająć 2, 4 lub więcej bajtów pamięci. float - liczba rzeczywista, zmiennoprzecinkowa, służy do reprezentacji liczb niecałkowitych, możliwe jest zastosowanie modyfikatora long, zajmuje 4 bajty pamięci. double - liczba rzeczywista podwójnej precyzji, nie wdając się w szczegóły, można za pomocą takich liczb przedstawić wartości o wiele większe (rzędu 104000) lub bliższe zeru (mniejsze - rzędu 10-4000) niż w przypadku float int a; int b=3; float c; float d=-2.5;
Konwertowanie c = (float)b; /* to samo, co c = b */ Generalnie, najczęściej w operacjach matematycznych będziemy używali zmiennych typu int (liczby całkowite) i float (liczby rzeczywiste) zmienne temożemy między sobą konwertoać. c = (float)b; /* to samo, co c = b */ b = (int)d; /* daje -2, tracimy dokładność więc nie wystarczy napisać b = d */
Operacje Matematyczne Język C deklaruje następujące operacje matematyczne: dodawanie ("+") odejmowanie ("-") mnożenie ("*") dzielenie ("/") Jeśli dzielimy liczby całkowite, wynikiem jest dzielenie całkowite (bez reszty). Jeśli dzielimy liczby rzeczywiste - wynik jest dokładny.
Inkrementacja i dekrementacja inkrementacja ("++") - wyrażenie "a=a+1" można zapisać jako "a++", przykład: int a=1; ++a; /* to samo, co a=a+1 */ dekrementacja ("--") - wyrażenie "a=a-1" można zapisać jako "a--", przykład: int a=2; --a; istotną rzeczą jest fakt, że oba operatory zachowują się inaczej w zależności od tego, czy pojawiają się przed czy po zmienną. a = 3; b = a--; /* po operacji b=3 a=2 */ c = --b; /* po operacji b=2 c=2 */
Operator Wyrażenia Warunkowego W C mamy do czynienia operatorem ? : nazywany też operatorem wyrażenia warunkowego. Jest to jedyny operator w języku C przyjmujący trzy argumenty. a ? b : c; a = (b>=c) ? b : c; /* działanie operatora wygląda następująco: najpierw oceniana jest wartość logiczna wyrażenia a, jeśli jest ono prawdziwe, to zwracana jest wartość b, jeśli natomiast wyrażenie a jest nieprawdziwe, zwracana jest wartość c. */
Operatory Logiczne Rozróżniamy następujące operatory logiczne w języku C: koniunkcja - & alternatywa - | negacja - ~ alternatywa wyłączna (XOR) - ^ W instrukcjach warunkowych nie używa się powyższych symboli. Do realizacji odpowiednich działań służą następujące wyrażenia: koniunkcja (i) - && alternatywa (lub) - || negacja (zaprzeczenie) - !
Instrukcja if if (wyrażenie) {// blok wykonany, jeśli wyrażenie jest prawdziwe } else { // blok wykonany, jeśli wyrażenie jest nieprawdziwe }
Instrukcja if - przykład if (a != 0) b = 1/a; else b = 0; Powyższy przykład jest równoważny z: b = (a !=0) ? 1/a : 0;
Instrukcja switch switch (zmienna) { Aby ograniczyć wielokrotne stosowanie instrukcji if możemy użyć switch: switch (zmienna) { case wyr1: // instrukcje, jeśli zmienna == wyr1 break; case wyr2: // instrukcje, jeśli zmienna == wyr2 break; default: /* instrukcje, jeśli wyr1 != zmienna i wyr2 != zmienna */ break; }
Pętla while while (warunek) { /* instrukcje do wykonania w pętli */ } Aby nie przepisywać wiele razy tego samego kodu można skorzystać z mechanizmu pętli. Pętla wykonuje się dotąd, dopóki prawdziwy jest pewien logiczny warunek . while (warunek) { /* instrukcje do wykonania w pętli */ }
#include <stdio.h> int main () { int a = 1; while (a != 11) { /* dopóki a jest różne od 11 */ printf ("%d\n", a*a); /* powtarzamy pętlę */ ++a; /* zwiększamy a o jeden */ } return 0; }
Pętla for for (wyrażenie1; wyrażenie2; wyrażenie3) { /* instrukcje do wykonania w pętli */ } wyrażenie1 - jest to instrukcja, która będzie wykonana przed pierwszym przebiegiem pętli. Zwykle jest to inicjalizacja zmiennej, która będzie służyła jako "licznik" przebiegów pętli. wyrażenie2 - jest warunkiem zakończenia pętli. Pętla wykonuje się tak długo, jak prawdziwy jest ten warunek. wyrażenie3 - jest to instrukcja, która wykonywana będzie za każdym powtórzeniem pętli. Zamieszczone są tu instrukcje, które zwiększają licznik o odpowiednią wartość.
Pętla for - przykład #include <stdio.h> int main () { int a; for (a=1; a!=11; ++a) { printf ("%d\n", a*a); } return 0; }
Pętla do/while Do { /* instrukcje do wykonania w pętli */ } while (warunek); Pętle while i for mają jeden zasadniczy minus a mianowicie może się zdarzyć, że nie wykonają się ani raz. Aby mieć pewność, że pętla będzie miała co najmniej jeden przebieg należy użyć pętli do/while.
Pętla do/while - przykład #include <stdio.h> int main () { int a=1; do { printf ("%d\n", a*a*a); ++a; } while (a != 11); return 0; }