300 likes | 530 Views
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
E N D
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 / 73 • 25 / 7. 3.571428 • 35. / 57.0 • 1 / 4 0 • 19 % 61 • 0 % 5 0 • 18 % 60
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 i =11 j =12 i =12 j =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; cout << "i = " << i++ << endl << "j = " << ++j << endl; 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;
Operatorsizeof: • sizeof (nazwa_typu) • sizeof (nazwa_obiektu) Operatorrzutowania: • (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;
Program Funk_1 main ( ) { instrukcja_1; Funk_1( ); instrukcja_2; Funk_2( ); instrukcja_3; Funk_3 ( ); instrukcja_4; } Funk_2 Funk_4 Funk_4 ( ) return return return return Funk_3 Funkcje
#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: a = 10 b = 20 #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 przezwartość!!! 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"; cout << "x = " << x <<endl; cout << "y = " << y <<endl; }
a = 10 b = 20 Przed zamianą: x =10 y =20 Po zamianie: x =20 y =10 Teraz: a = 20 b = 10 #include <iostream.h> #include <conio.h> void Zamiana(int &, int &); //-------------------------------- voidmain() { 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; }
Przed zamianą: x =10 y =20 Po zamianie: x =20 y =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"; cout << "x = " << x <<endl; cout << "y = " << y <<endl; }
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 zmienneautomatyczne nie są zerowane w chwili definicji. • Jeśli nie zainicjowaliśmy ich jakąś wartością, to przechowują one wartości przypadkowe.
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.
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