Operatory
Operatory arytmetyczne: Operator Działanie Przykład + dodawanie a = b + c; - odejmowanie a = b - c; * mnożenie a = b * c; / dzielenie a = b / c; % reszta z dzielenia (modulo) a = b % c; Przykłady: 25 / 7 3 25 / 7. 3.571428 35. / 5 7.0 1 / 4 0 19 % 6 1 0 % 5 0 18 % 6 0
Operatory relacji: Operator Działanie Przykład < mniejszy a < b <= mniejszy lub równy a <= b > większy a > b >= większy lub równy a >= b == równy a = = b != nie równy a != b wszystkie operatory relacji są dwuargumentowe; jeśli relacja jest prawdziwa, to jej wartością jest 1; w przeciwnym przypadku wartością relacji jest 0.
Operatory logiczne: Operator Działanie Przykład ! negacja ! a && koniunkcja (iloczyn logiczny) a && b || alternatywa (suma logiczna) a || b wyrażenia połączone operatorami && i || zawsze są wartościowane od strony lewej do prawej; kompilator oblicza wartość wyrażenia dotąd, dopóki na pewno nie wie jaki będzie wynik. ( a == 0 ) && ( m == 5 ) && ( x > 23 )
Operatory bitowe: Operator Działanie Przykład & bitowa koniunkcja a = b & c; | bitowa alternatywa a = b | c; ^ bitowa różnica symetryczna a = b ^ c; << przesunięcie w lewo a = b << c; >> przesunięcie w prawo a = b >> c; ~ bitowa negacja a = ~b
Inkrementacja i dekrementacja: inkrementacja - dodanie 1; dekrementacje - odjęcie 1; Przykład: i = i + 1; // i ++ j = j - 1; // j - - operatory inkrementacji i dekrementacji mogą występować w dwóch odmianach: przedrostkowej i przyrostkowej; i++ ; i-- ; ++i ; --i ; operator przedrostkowy jest obliczany przed przypisaniem; operator przyrostkowy jest obliczany po przypisaniu.
Przykład: i = 10 j = 10 i = 11 j = 11 j = 12 i = 12 #include <iostream.h> #include <conio.h> void main() { int i=10, j=10; clrscr(); cout << "i = " << i << endl << "j = " << j << endl; i++; ++j; cout << "i = " << i++ << endl << "j = " << ++j << endl; }
Pozostałe operatory przypisania: Operator Zapis skrócony Zapis rozwinięty += a += b; a = a + b; - = a - = b; a = a - b; *= a *= b; a = a * b; /= a /= b; a = a / b; %= a %= b; a = a % b; <<= a <<= b; a = a << b; >>= a >>= b; a = a >> b; &= a &= b; a = a & b; |= a |= b; a = a | b; ^= a ^= b; a = a ^ b;
Wyrażenie warunkowe: ( warunek ) ? wartość1 : wartość2 Przykład: ( i > 5) ? 15 : 20 c = ( x > y ) ? 17 : 56;
Operator sizeof: Operator rzutowania: sizeof (nazwa_typu) sizeof (nazwa_obiektu) Operator rzutowania: (nazwa_typu) obiekt lub nazwa_typu (obiekt) int a = 85; char b; b = (char) a; // b = ‘U’
Przecinek to też operator X = 1, 2, 3, 4; // x == 1 Uwaga na konstrukcję Tab[i , j] !!! To nie jest to samo co Tab[ i ] [ j ] Kiedy to się może przydac? Tam gdzie możemy umieścić tylko jedną instrukcję for(i=1, j=10; i<=j; i++, j+=2) cout << ”i=” << i << ”j=” << j << endl;
Funkcje Funk_1 Funk_2 Funk_4 Funk_3 Program main ( ) { instrukcja_1; } Program return Funk_4 ( ) Funk_1 Funk_2 Funk_4
Zaczynamy Ku-ku! Ku-ku! Na koniec m = 77 #include <iostream.h> #include <conio.h> int kukulka (int ile); //******************************************************************* main () { int m = 30; clrscr (); cout << "Zaczynamy" << endl; m = kukulka (2); cout << "\nNa koniec m = " << m; return 0; } //******************************************************************* int kukulka (int ile) int i; for (i = 0; i < ile; i++) cout << "Ku-ku! "; return 77; Zaczynamy Ku-ku! Ku-ku! Na koniec m = 77
Przykład: Zdefiniuj funkcję: i użyj do obliczeń wyrażeń:
#include <iostream.h> #include <conio.h> #include <math.h> float F(float x, float y); //-------------------------------------- void main() { float a, b, c, p, q, r; clrscr(); cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; p = F(a, b); q = (a + b)*c + 0.34*F(a+p, a-p); r = log(1 + F(1, p)) + a*b*c; cout.width(10); cout.precision(2); cout << "\np = " << p << "\nq = " << q; cout << "\nr = " << r; } float F(float x, float y) return pow(x*x + y*y, 1./3);
Uwagi: Funkcja ma swoją nazwę, która ją identyfikuje. Przed odwołaniem się do nazwy wymagana jest jej deklaracja. Deklaracja, ale niekoniecznie definicja. Sama funkcja może być zdefiniowana później; Wywołanie funkcji, to napisanie jej nazwy wraz z listą argumentów przesyłanych do funkcji, ujętych w nawiasy okrągłe.
Przesyłanie argumentów do funkcji: przez wartość przez referencję
a = 10 b = 20 Przed zamianą: x = 10 y = 20 Po zamianie: x = 20 y = 10 Teraz: #include <iostream.h> #include <conio.h> void Zamiana(int, int); //-------------------------------- int main() { int a, b; clrscr(); cout << "a = "; cin >> a; cout << "b = "; cin >> b; Zamiana (a, b); cout << "\nTeraz:\n"; cout << "a = " << a << endl; cout << "b = " << b << endl; cout << endl; return 0; }
Przed zamianą: x = 10 y = 20 Po zamianie: x = 20 y = 10 //-- przesyłanie argumentów przez wartość!!! void Zamiana(int x, int y) { int z; cout << "\nPrzed zamianą:\n"; cout << "x = " << x << endl; cout << "y = " << y << endl; z = x; x = y; y = z; cout << "\nPo zamianie:\n"; }
#include <iostream.h> #include <conio.h> void Zamiana(int &, int &); //-------------------------------- void main() { int a, b; clrscr(); cout << "a = "; cin >> a; cout << "b = "; cin >> b; Zamiana (a, b); cout << "\nTeraz:\n"; cout << "a = " << a << endl; cout << "b = " << b << endl; cout << endl; } a = 10 b = 20 Przed zamianą: x = 10 y = 20 Po zamianie: x = 20 y = 10 Teraz: a = 20 b = 10
// przesyłanie argumentów przez referencję void Zamiana(int &x, int &y) { int z; cout << "\nPrzed zamianĄ:\n"; cout << "x = " << x << endl; cout << "y = " << y << endl; z = x; x = y; y = z; cout << "\nPo zamianie:\n"; } Przed zamianą: x = 10 y = 20 Po zamianie: x = 20 y = 10
Uwagi: Obiekt zdefiniowany na zewnątrz wszystkich funkcji ma zasięg globalny. Zmienne globalne zakładane są w normalnym obszarze pamięci, który przed uruchomieniem programu jest zerowany. Zmienne lokalne są zmiennymi automatycznymi. W momencie, gdy kończymy blok, w którym zmienne lokalne zostały powołane do życia, automatycznie przestają istnieć. Obiekty automatyczne komputer przechowuje na stosie. Należy pamiętać, że zmienne automatyczne nie są zerowane w chwili definicji. Jeśli nie zainicjowaliśmy ich jakąś wartością, to przechowują one wartości przypadkowe.
Funkcje biblioteczne
Funkcje obsługi ekranu i klawiatury: Nazwa funkcji Składnia Biblioteka Znaczenie clreol void clreol (void); conio.h kasowanie linii, w której znajduje się kursor poczynając od pozycji kursora do końca clrscr void clrscr (void); conio.h kasowanie ekranu delline void delline (void); conio.h usunięcie linii, w której znajduje kursor gotoxy void gotoxy (int x, int y); conio.h pozycjonowanie kursora highvideo void highvideo (void); conio.h zwiększenie jaskrawości koloru znaku cdn.
insline void insline (void); conio.h wstawienie nowego wiersza w miejscu aktualnego położenia kursora lowvideo void lowvideo (void); conio.h zmniejszenie jaskrawości koloru znaku normvideo void normvideo (void); conio.h ustalenie koloru tła i znaku, jakie obowiązywały na początku programu (białe znaki na czarnym tle) textattr void textattr (int atr); conio.h ustawienie atrybutów znaku textbackground void textbackground (int kolor); conio.h ustawienie koloru tła cdn.
textcolor void textcolor (int kolor); conio.h ustawienie koloru znaku wherex int wherex (void) conio.h określenie aktualnej współrzędnej X kursora wherey int wherey (void) conio.h określenie aktualnej współrzędnej Y kursora window void window (int xlg, int ylg, int xpd, int ypd ); conio.h zdefiniowanie okna tekstowego
Funkcje matematyczne: abs int abs (int x); stdlib.h wartość bezwzględna argumentu całkowitego acos double acos (double x); math.h arccos x asin double asin (double x); math.h arcsin x atan double atan (double x); math.h arctg x atof double atof (const char *s); math.h konwersja łańcucha znaków na liczbę zmiennopozycyjną cdn.
atoi int atoi (const char *s); math.h konwersja łańcucha znaków na liczbę całkowitą cos double cos (double x); math.h cos x cosh double cosh (double x); math.h cosh x div div_t div (int licz, int mian); stdlib.h dzielenie dwóch liczb całkowitych; jako wynik otrzymuje się iloraz oraz resztę z dzielenia exp double exp (double x); math.h funkcja wykładnicza ex cdn.
cdn. log double log (double x); math.h logarytm naturalny log10 double log10 (double x) math.h logarytm dziesiętny pow double pow (double x, double y); math.h xy pow10 double pow (int p); math.h 10p random int random (int N); stdlib.h generowanie liczb losowych z zakresu od 0 do N-1 randomize void randomize (void) stdlib.h time.h inicjalizacja generatora liczb losowych cdn.
sin double sin (double x) math.h sin x sinh double sinh (double x); math.h sinh x sqrt double sqrt (double x); math.h pierwiastek kwadratowy z x tan double tan (double x) math.h tg x tanh double tanh (double x); math.h tgh x