Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 1
Operatory logiczne i porównania Operator Znaczenie > wiekszy od < mniejszy od <= mniejszy od lub równy >= wiekszy od lub równy == równy! = różny && iloczyn logiczny (and) suma logiczna (or)! negacja (not) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 2 / 1
Stałe całkowite inne niż dziesiętne Stałe ósemkowe Stałe szesnastkowe Aby wskazać czy dane maja być wyświetlane w systemie dziesietnym, szesnastkowym, czy też ósemkowym, należy posłużyć się manipulatorami strumienia dec, hex, oct. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 3 / 1
Stałe całkowite inne niż dziesiętne - manip.cc # i n c l u d e <iostream > i n t main ( ) { using namespace std ; cout << " Podaj l i c z b e c a l k o w i t a : " ; i n t n ; c i n >> n ; cout << " n n n \ n " ; cout << n << " " << n n << " ( d z i e s i e t n i e ) \ n " ; / / ustaw t r y b szesnastkowy cout << hex ; cout << n << " " << n n << " ( szesnastkowo ) \ n " ; / / ustaw t r y b osemkowy cout << oct << n << " " << n n << " ( osemkowo ) \ n " ; / / alternatywny sposob wywolania manipulatora cout << " Podaj l i c z b e c a l k o w i t a : " ; dec ( cout ) ; c i n >> n ; cout << n << " " << n n << " ( d z i e s i e t n i e ) \ n " ; cout << " Podaj l i c z b e w formacie szesnastkowym : " ; hex ( c i n ) ; c i n >> n ; cout << n << " " << n n << " ( szesnastkowo ) \ n " ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1
manip.cpp - przykładowe wykonanie Podaj liczbe calkowita: 5 n n*n 5 25 (dziesietnie) 5 19 (szesnastkowo) 5 31 (osemkowo) Podaj liczbe calkowita: 23 23 529 (dziesietnie) Podaj liczbe w formacie szesnastkowym: ff 255 65025 (szesnastkowo) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 5 / 1
hexoct1.cpp # i n c l u d e <iostream > using namespace std ; i n t main ( ) { using namespace std ; i n t k l a t k a = 42, t a l i a = 42, noga = 42; cout << "Co za f i g u r a! " << endl ; cout << " obwod p i e r s i = " << k l a t k a << " ( d z i e s i e t n i e ) " << endl ; / / manipulator zmieniajacy system liczbowy cout << hex ; cout << " t a l i a = " << t a l i a << " szesnastkowo " << endl ; / / manipulator zmieniajacy system liczbowy cout << oct ; cout << " dlugosc nogawki = " << noga << " ( osemkowo ) " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 6 / 1
hexoct1.cc - przykładowe wykonanie Co za figura! obwod piersi = 42 (dziesietnie) talia = 2a szesnastkowo dlugosc nogawki = 52 (osemkowo) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 7 / 1
hexoct.cpp # i n c l u d e <iostream > using namespace std ; i n t main ( ) { using namespace std ; i n t pas = 42, reka = 42, noga = 42; cout << "Obwod pasa = " << pas << " ( d z i e s i e t n i e ) " << endl ; cout << hex ; cout << " Dlugosc r e k i = " << reka << " szesnastkowo " << endl ; cout << oct ; cout << " Dlugosc nogi = " << noga << " ( osemkowo ) " << endl ; cout << dec ; pas = 42, reka = 0x42, noga = 042; cout << "Obwod pasa = " << pas << " ( d z i e s i e t n i e ) " << endl ; cout << " Dlugosc r e k i = " << reka << " ( szesnastkowo ) " << endl ; cout << " Dlugosc nogi = " << noga << " ( osemkowo ) " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 8 / 1
hexoct.cc - przykładowe wykonanie Obwod pasa = 42 (dziesietnie) Dlugosc reki = 2a szesnastkowo Dlugosc nogi = 52 (osemkowo) Obwod pasa = 42 (dziesietnie) Dlugosc reki = 66(szesnastkowo) Dlugosc nogi = 34 (osemkowo) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 9 / 1
Typ char - chartype.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { char ch ; cout << " Podaj znak : " << endl ; c i n >> ch ; cout << " Holla! " ; cout << " Dziekuje za znak " << ch << ". " << endl ; r e t u r n 0; Podaj znak: a Holla! Dziekuje za znak a. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 10 / 1
Funkcja składowa cout.put() - morechar.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { char ch = M ; i n t i = ch ; cout << " Kod ASCII znaku " << ch << " to " << i << endl ; cout << " Dodajemy do kodu znaku jedynke : " << endl ; ch = ch + 1; i = ch ; cout << " Kod ASCII znaku " << ch << " to " << i << endl ; / / uzycie metody cout. put ( ) do pokazania znaku cout << " Wyswietlenie char ch za pomoca cout. put ( ch ) : " ; cout. put ( ch ) ; cout. put ( i ) ; / / uzycie metody cout. put ( ) do pokazania s t a l e j znakowej cout. put (! ) ; cout << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 1
morechar.cc - wynik Kod ASCII znaku M to 77 Dodajemy do kodu znaku jedynke: Kod ASCII znaku N to 78 Wyswietlenie char ch za pomoca cout.put(ch): NN! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 12 / 1
Instrukcja warunkowa if - if1.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a ; cout << " Podaj l i c z b e : " ; c i n >> a ; i f ( a > 0) { cout << a << " j e s t dodatnia. " ; cout << endl ; else { cout << a << " j e s t zerem lub j e s t ujemna. " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 13 / 1
Przykładowe wykonanie - if1.cc Podaj liczbe: 4 4 jest dodatnia. Podaj liczbe: -3-3 jest zerem lub jest ujemna. Podaj liczbe: 0 0 jest zerem lub jest ujemna. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 14 / 1
Instrukcja warunkowa if - if2.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a ; cout << " Podaj l i c z b e : " ; c i n >> a ; i f ( a > 0) { cout << a << " j e s t dodatnia. " ; cout << endl ; else cout << a << " j e s t zerem lub j e s t ujemna. " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 15 / 1
Przykładowe wykonanie - if2.cc Podaj liczbe: 4 4 jest dodatnia. Podaj liczbe: -3-3 jest zerem lub jest ujemna. Podaj liczbe: 0 0 jest zerem lub jest ujemna. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 16 / 1
Instrukcja warunkowa if - if3.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a ; cout << " Podaj l i c z b e : " ; c i n >> a ; i f ( a > 0) cout << a << " j e s t dodatnia. " ; cout << endl ; else cout << a << " j e s t zerem lub j e s t ujemna. " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 17 / 1
Przykładowe wykonanie - if3.cc Program zawiera bład: if3.cc: In function int main() : if3.cc:10:3: error: else without a previous if Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 18 / 1
Instrukcja warunkowa if # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a, b ; cout << " Podaj pierwsza l i c z b e : " ; c i n >> a ; cout << " Podaj druga l i c z b e : " ; c i n >> b ; cout << a << " + " << b << " = " << a + b << endl ; cout << a << " " << b << " = " << a b << endl ; cout << a << " " << b << " = " << a b << endl ; i f ( b!= 0) { cout << a << " / " << b << " = " << a / b << endl ; cout << a << "%" << b << " = " << a % b << endl ; i f ( b!= 0) { cout << a << " / " << b << " = " << double ( a ) / b << endl ; cout << a << "%" << b << " = " << a % b << endl ; i f ( b!= 0) { cout << a << " / " << b << " = " << a / double ( b ) << endl ; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 19 / 1
Przykładowe wykonanie Podaj pierwszą liczbę: 4 Podaj drugą liczbę: 6 4+6=10 4-6=-2 4*6=24 4/6=0 4%6=4 Podaj pierwsza liczbe: 33 Podaj druga liczbe: 0 33+0=33 33-0=33 33*0=0 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 20 / 1
Instrukcja warunkowa if-else, typ bool # i n c l u d e <iostream > using namespace std ; i n t main ( ) { bool a ; cout << " Podaj 0 lub 1: " ; c i n >> a ; i f ( a == t r u e ) { cout << "Zabaw s i e jezykiem C+ +. " ; cout << endl ; else { cout << "Zabaw s i e jezykiem C! " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 21 / 1
Przykładowe wykonanie Podaj 0 lub 1: 0 Zabaw sie jezykiem C! Podaj 0 lub 1: 1 Zabaw sie jezykiem C++. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 22 / 1
Operator dzielenia modulo - modulus.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { / / const i n t p r z e l i c z n i k = 14; i n t const p r z e l i c z n i k = 14; i n t waga ; cout << " Podaj swoja wage w funtach : " ; c i n >> waga ; i n t kamienie = waga / p r z e l i c z n i k ; / / calych kamieni i n t f u n t y = waga % p r z e l i c z n i k ; / / r e s z t a w funtach cout << waga << " funtow to " << kamienie << " kamieni, " << f u n t y << " f u n t (ow ). \ n " ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 23 / 1
Przykładowe wykonanie Podaj swoja wage w funtach: 34 34 funtow to 2 kamieni, 6 funt(ow). Podaj swoja wage w funtach: 56 56 funtow to 4 kamieni, 0 funt(ow). Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 24 / 1
Instrukcja warunkowa if-else # i n c l u d e <iostream > using namespace std ; i n t main ( ) { cout << " Podaj l i c z b e : " ; i n t n ; c i n >> n ; i f ( n % 2 == 0) cout << n << " j e s t parzyste. " << endl ; else cout << n << " nie j e s t parzyste. " << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 25 / 1
Przykładowe wykonanie Podaj liczbe: 4 4 jest parzyste. Podaj liczbe: 67 67 nie jest parzyste. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 26 / 1
Instrukcja warunkowa if-else # i n c l u d e <iostream > using namespace std ; i n t main ( ) { cout << " Podaj l i c z b e : " ; i n t n ; c i n >> n ; i f ( n > 0 && n % 5 == 0) cout << n << " j e s t dodatnie "<< " i podzielne przez 5. " << endl ; else { i f ( n > 0) cout << n << " j e s t dodatnie. " << endl ; else i f ( n % 5 == 0) cout << n << " j e s t podzielne przez 5. " << endl ; else cout << n << " nie j e s t dodatnia, ani podzielna przez 5!" < < endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 27 / 1
Przykładowe wykonanie Podaj liczbe: 5 5 jest dodatnie i podzielne przez 5. Podaj liczbe: -5-5 jest podzielne przez 5. Podaj liczbe: 3 3 jest dodatnie. Podaj liczbe: -3-3 nie jest dodatnia, ani podzielna przez 5! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 28 / 1
Instrukcja warunkowa if-else # i n c l u d e <iostream > using namespace std ; i n t main ( ) { char c ; cout <<" Podaj pojedynczy znak : " ; c i n >> c ; i f ( ( c >= a && c <= z ) ( c >= A && c <= Z ) ) { cout << " To j e s t l i t e r a. " << endl ; else i f ( c >= 0 && c <= 9 ) { cout << " To j e s t c y f r a. " << endl ; else { cout << " To j e s t znak specjalny. " ; i n t i = ( a A ) ; cout << i << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 29 / 1
Przykładowe wykonanie Podaj pojedyńczy znak: a To jest litera. Podaj pojedyńczy znak: 3 To jest cyfra. Podaj pojedyńczy znak: F To jest litera. Podaj pojedyńczy znak:! To jest znak specjalny. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 30 / 1
Systemowe ograniczenia typów danych C++ dostarcza następujacych narzędzi do programowego badania rozmiarów typów: operator sizeof zbiór climits (w starszych imoplementacjach limits.h). Plik zawiera systemowe ograniczenia dla różnych typów calkowitych. zbiór cfloat (w starszych imoplementacjach float.h). Plik zawiera systemowe ograniczenia dla różnych typów zmiennoprzecinkowych. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 31 / 1
Typy całkowite -climits Stała Co wyraża Wartość CHAR_BIT Liczba bitów w 1 bajcie 8 SCHAR_MIN Wartość minimmalna dla typu signed char -127 SCHAR_MAX Wartość maksymalna dla typu signed char 127 UCHAR_MAX Wartość maksymalna dla typu unsigned char 255 CHAR_MIN Wartość minimmalna dla typu char SCHAR_MIN lub 0 CHAR_MAX Wartość maksymalna dla typu char SCHAR_MAX lub UCHAR_MAX MB_LEN_MAX Maksymalna liczba bajtów w wielobajtowym znaku 1 SHRT_MIN Wartość minimmalna dla typu short int -32767 SHRT_MAX Wartość maksymalna dla typu short int 32767 USHRT_MAX Wartość maksymalna. dla typu unsigned short int 65535 INT_MIN Wartość minimmalna dla typu int -32767 INT_MAX Wartość maksymalna dla typu int 32767 UINT_MAX Wartość maksymalna dla typu unsigned int 65535 LONG_MIN Wartość minimmalna dla typu long int -2147483647 LONG_MAX Wartość maksymalna dla typu long int 2147483647 ULONG_MAX Wartość maksymalna dla typu unsigned long int 4294967295 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 32 / 1
limits.cc # i n c l u d e <iostream > # i n c l u d e < c l i m i t s > i n t main ( ) { using namespace std ; i n t n _ i n t = INT_MAX ; s h o r t n_short = SHRT_MAX; long n_long = LONG_MAX; / / operator s i z e o f zwraca wielkosc typu lub zmiennej cout << " i n t ma " << s i z e o f ( i n t ) << " b a j t y. " << endl ; cout << " s h o r t ma " << s i z e o f n_short << " b a j t y. " << endl ; cout << " long ma " << s i z e o f n_long << " b a j t y. " << endl ; cout << " Wartosci maksymalne : " << endl ; cout << " i n t : " << n _ i n t << endl ; cout << " s h o r t : " << n_short << endl ; cout << " long : " << n_long << endl << endl ; cout << " Minimalna wartosc typu i n t = " << INT_MIN << endl ; cout << " Bitow na b a j t = " << CHAR_BIT << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 33 / 1
limits.cc - wynik int ma 4 bajty. short ma 2 bajty. long ma 8 bajty. Wartosci maksymalne: int: 2147483647 short: 32767 long: 9223372036854775807 Minimalna wartosc typu int = -2147483648 Bitow na bajt = 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 34 / 1
Przepełnienia - exceed.cc #include <iostream> #include <climits> int main() { using namespace std; short jan = SHRT_MAX; unsigned short ewa = jan; cout << "Jan ma " << jan << " dolarów, a Ewa ma "; cout << ewa << " dolarow." << endl; cout<< "Do obu kont dodaj 1$." << endl << "Teraz "; jan = jan + 1; ewa = ewa + 1; cout << "Jan ma " << jan << " dolarów, a Ewa ma "; cout << ewa << " dolarów.\n Biedny Jan!" << endl; jan = ewa = 0; cout << "Jan ma " << jan << " dolarów, a Ewa ma " << ewa; cout << " dolarów." << endl; cout << "Zabierzmy z obu kont 1$." << endl << "Teraz "; jan = jan - 1; ewa = ewa - 1; cout << "Jan ma " << jan << " dolarów, a Ewa ma " << ewa; cout << " dolarów." << endl << "Szczęściara Ewa!" << endl; return 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 35 / 1
Wynik wykonania exceed.cc Jan ma 32767 dolarów, a Ewa ma 32767 dolarow. Do obu kont dodaj 1$. Teraz Jan ma -32768 dolarów, a Ewa ma 32768 dolarów. Biedny Jan! Jan ma 0 dolarów, a Ewa ma 0 dolarów. Zabierzmy z obu kont 1$. Teraz Jan ma -1 dolarów, a Ewa ma 65535 dolarów. Szczęściara Ewa! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 36 / 1
Typy zmiennoprzecinkowe - cfloat #include <iostream> #include <cfloat> int main(){ using namespace std; cout <<"Definicje minimalnej liczby cyfr znaczących " << endl; cout <<"long double: "<< LDBL_DIG << endl; cout <<"double: "<< DBL_DIG << endl; cout <<"float: "<< FLT_DIG << endl; cout <<"Definicje liczby bitów reprezentujących mantysę" << endl; cout <<"long double: "<< LDBL_MANT_DIG << endl; cout <<"double: "<< DBL_MANT_DIG << endl; cout <<"float: "<< FLT_MANT_DIG << endl; cout <<"Definicje maksymalnych wartości wykładnika: " << endl; cout <<"long double: "<< LDBL_MAX_10_EXP << endl; cout <<"double: "<< DBL_MAX_10_EXP << endl; cout <<"float: "<< FLT_MAX_10_EXP << endl; cout <<"Definicje minimalnych wartości wykładnika: " << endl; cout <<"long double: "<< LDBL_MIN_10_EXP << endl; cout <<"double: "<< DBL_MIN_10_EXP << endl; cout <<"float: "<< FLT_MIN_10_EXP << endl; return 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 37 / 1
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) Definicje minimalnej liczby cyfr znaczących long double: 18 double: 15 float: 6 Definicje liczby bitów reprezentujących mantysę long double: 64 double: 53 float: 24 Definicje maksymalnych wartości wykładnika: long double: 4932 double: 308 float: 38 Definicje minimalnych wartości wykładnika: long double: -4931 double: -307 float: -37 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 38 / 1
Ustalanie szerokości pola danej - width.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a, b, c ; cout << " Podaj 3 l i c z b y : " ; c i n >> a >> b >> c ; cout. width ( 2 0 ) ; cout << " Pierwsza l i c z b a = " ; cout. width ( 1 0 ) ; cout << a << endl ; cout. width ( 2 0 ) ; cout << " Druga l i c z b a = " ; cout. width ( 1 0 ) ; cout << b << endl ; cout. width ( 2 0 ) ; cout << " Trzecia l i c z b a = " ; cout. width ( 1 0 ) ; cout << c << endl ; r e t u r n 0; Podaj 3 liczby: 2 4 6 Pierwsza liczba = 2 Druga liczba = 4 Trzecia liczba = 6 Podaj 3 liczby: 22 44 100 Pierwsza liczba = 22 Druga liczba = 44 Trzecia liczba = 100 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 39 / 1
Ustalanie szerokości pola danej - width1.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a, b, c ; cout << " Podaj 3 l i c z b y : " ; c i n >> a >> b >> c ; cout. width ( 2 0 ) ; cout << " Pierwsza l i c z b a = " ; cout. width ( 5 ) ; cout << a << endl ; cout. width ( 2 0 ) ; cout << " Druga l i c z b a = " ; cout. width ( 5 ) ; cout << b << endl ; cout. width ( 2 0 ) ; cout << " Trzecia l i c z b a = " ; cout. width ( 5 ) ; cout << c << endl ; r e t u r n 0; Podaj 3 liczby: 2 4 6 Pierwsza liczba = 2 Druga liczba = 4 Trzecia liczba = 6 Podaj 3 liczby: 22 44 100 Pierwsza liczba = 22 Druga liczba = 44 Trzecia liczba = 100 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 40 / 1
Ustalanie szerokości pola danej - width2.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a, b, c ; cout << " Podaj 3 l i c z b y : " ; c i n >> a >> b >> c ; cout. width ( 2 0 ) ; cout << " Pierwsza l i c z b a = " ; cout << a << endl ; cout << " Druga l i c z b a = " ; cout << b << endl ; cout << " Trzecia l i c z b a = " ; cout << c << endl ; r e t u r n 0; Podaj 3 liczby: 2 4 6 Pierwsza liczba = 2 Druga liczba = 4 Trzecia liczba = 6 Podaj 3 liczby: 22 44 77 Pierwsza liczba = 22 Druga liczba = 44 Trzecia liczba = 77 Ustalenie szerokości pola przeznaczonego na zmienna wymaga każdorazowego wywołania należacej do strumienia cout funkcji width(), której argumentem jest szerokość pola. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 41 / 1
Ustalanie szerokości pola danej - fill.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { i n t a, b, c ; cout << " Podaj 3 l i c z b y : " ; c i n >> a >> b >> c ; cout. f i l l (. ) ; cout. width ( 2 0 ) ; cout << " Pierwsza l i c z b a = " ; cout. width ( 1 0 ) ; cout << a << endl ; cout. width ( 2 0 ) ; cout << " Druga l i c z b a = " ; cout. width ( 1 0 ) ; cout << b << endl ; cout. width ( 2 0 ) ; cout << " Trzecia l i c z b a = " ; cout. width ( 1 0 ) ; cout << c << endl ; r e t u r n 0; Podaj 3 liczby: 2 4 6. Pierwsza liczba =...2... Druga liczba =...4.. Trzecia liczba =...6 Podaj 3 liczby: 12 345 12345. Pierwsza liczba =...12... Druga liczba =...345.. Trzecia liczba =...12345 Funkca fill() należaca do strumienia cout wypełnia nadmiarowe szerokości pola określonego przez width() znakiem który jest argumentem tej funkcji. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 42 / 1
Wyprowadzanie danych numerycznych - precision.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { double a, b, c ; cout << " Podaj 3 l i c z b y rzeczywiste : " ; c i n >> a >> b >> c ; cout. f i l l ( _ ) ; cout. p r e c i s i o n ( 2 ) ; cout. width ( 2 0 ) ; cout << " Pierwsza l i c z b a = " ; cout. width ( 1 0 ) ; cout << a << endl ; cout. width ( 2 0 ) ; cout << " Druga l i c z b a = " ; cout. width ( 1 0 ) ; cout << b << endl ; cout. width ( 2 0 ) ; cout << " Trzecia l i c z b a = " ; cout. width ( 1 0 ) ; cout << c << endl ; r e t u r n 0; Podaj 3 liczby rzeczywiste: 2.333333 4 _ Pierwsza liczba = 2.3 Druga liczba = 4.6 Trzecia liczba = 7.2 Podaj 3 liczby rzeczywiste: 2.29 100.9 _ Pierwsza liczba = 2.3 Druga liczba = 1e+02 Trzecia liczba = 20 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 43 / 1
Wyprowadzanie danych numerycznych - precision2.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { double a ; cout << " Podaj l i c z b e rzeczywista : " ; c i n >> a ; cout. f i l l ( _ ) ; cout. width ( 1 0 ) ; cout << " 1 / " << a << " = " << 1/ a << endl ; cout. p r e c i s i o n ( 2 ) ; cout. width ( 1 0 ) ; cout << " 1 / " << a << " = " << 1/ a << endl ; cout. width ( 1 0 ) ; cout. p r e c i s i o n ( 4 ) ; cout << " 1 / " << a << " = " << 1/ a << endl ; cout << " Podaj druga l i c z b e rzeczywista : " ; c i n >> a ; cout. f i l l (. ) ; cout. width ( 1 0 ) ; cout << a << endl ; cout. p r e c i s i o n ( 2 ) ; cout. width ( 1 0 ) ; cout << a << endl ; cout. p r e c i s i o n ( 4 ) ; cout. width ( 1 0 ) ; cout << a << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 44 / 1
Wyprowadzanie danych numerycznych - precision2.cc Podaj liczbe rzeczywista: 33 1/33=0.030303 1/33=0.03 1/33=0.0303 Podaj druga liczbe rzeczywista: 2.34...2.34...2.3...2.34 Podaj liczbe rzeczywista: 10.103 1/10.103=0.0989805 1/10=0.099 1/10.1=0.09898 Podaj druga liczbe rzeczywista: 10.103...10.1...10...10.1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 45 / 1
Metoda setf() Metoda setf() (ang. set flag) pozwala na kontrolowanie różnych aspektów formatowania danych wyjściowych, np. ios_base::showpoint - Wyświetlanie końcowego znaku dziesietnego ios_base::showbase - Wyświetlanie prefiksów systemow liczbowych ios_base::showpos - Wyświetlanie znaku + przed liczbami dodatnimi ios_base::fixed - Wyświetlanie liczb wnotacji stałoprzecinkowej ios_base::scientific - Wyświetlanie liczb w notacji naukowej Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 46 / 1
Dzielenie całkowitoliczbowe i zmiennoprzecinkowe - divide.cc # i n c l u d e <iostream > using namespace std ; i n t main ( ) { cout. s e t f ( ios_base : : f i x e d, ios_base : : f l o a t f i e l d ) ; cout << " D z i e l e n i e c a l k owitoliczbowe : 9/5 = " << 9/5 << endl ; cout << " D z i e l e n i e zmiennoprzecinkowe : 9. 0 / 5. 0 = " ; cout << 9. 0 / 5. 0 << endl ; cout << " D z i e l e n i e mieszane : 9. 0 / 5 = " << 9. 0 / 5 << endl ; cout << " Stale typu double : 1e7 / 9. 0 = " ; cout << 1. e7 / 9. 0 << endl ; cout << " Stale typu f l o a t : 1 e7f / 9. 0 f = " ; cout << 1. e7f / 9.0 f << endl ; r e t u r n 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 47 / 1
Dzielenie calkowitoliczbowe: 9/5 = 1 Dzielenie zmiennoprzecinkowe: 9.0/5.0 = 1.800000 Dzielenie mieszane: 9.0/5 = 1.800000 Stale typu double: 1e7/9.0 = 1111111.111111 Stale typu float: 1e7f/9.0f = 1111111.125000 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 48 / 1
#include <iostream> int main(){ using std::cout; using std::ios_base; double price1 = 20.40; double price2 = 1.9 + 8.0 / 9.0; cout << "\"Futrzaki\" kosztuja " << price1 << " PLN!\n"; cout << "\"Smoki\" kosztuja " << price2 << " PLN!\n"; cout.setf(ios_base::showpoint); cout << "\"Futrzaki\" kosztuja " << price1 << " PLN!\n"; cout << "\"Smoki\" kosztuja " << price2 << " PLN!\n"; cout.precision(2); cout << "\"Futrzaki\" kosztuja " << price1 << " PLN!\n"; cout << "\"Smoki\" kosztuja " << price2 << " PLN!\n"; return 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 49 / 1
"Futrzaki" kosztuja 20.4 PLN! "Smoki" kosztuja 2.78889 PLN! "Futrzaki" kosztuja 20.4000 PLN! "Smoki" kosztuja 2.78889 PLN! "Futrzaki" kosztuja 20. PLN! "Smoki" kosztuja 2.8 PLN! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 50 / 1
#include <iostream> int main() { using namespace std; int pas = 42, reka = 0x42, noga = 042; cout.setf(ios_base::showbase); cout << "Obwod pasa = " << pas << endl; cout << "Dlugosc reki = " << hex << reka cout << "Dlugosc nogi = " << oct << noga return 0; << endl; << endl; Wynik Obwod pasa = 42 Dlugosc reki = 0x42 Dlugosc nogi = 042 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 51 / 1
#include <iostream> int main(){ using namespace std; float a, b; cout << "Podaj liczbe: "; cin >> a; cout << "Podaj druge liczbe: "; cin >> b; //rownowazne wyswietlaniu z cout.setf(ios_base::floatfield); cout << "a = " << a << "; b = " << b << endl; cout << "a + b = " << a + b << endl; cout << "a - b = " << a - b << endl; cout << "a * b = " << a * b << endl; cout << "a / b = " << a / b << endl; cout.setf(ios_base::fixed, ios_base::floatfield); cout << "a = " << a << "; b = " << b << endl; cout << "a + b = " << a + b << endl; cout << "a - b = " << a - b << endl; cout << "a * b = " << a * b << endl; cout << "a / b = " << a / b << endl; cout.setf(ios_base::scientific, ios_base::floatfield); cout << "a = " << a << "; b = " << b << endl; cout << "a + b = " << a + b << endl; cout << "a - b = " << a - b << endl; cout << "a * b = " << a * b << endl; cout << "a / b = " << a / b << endl; return 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 52 / 1
Podaj liczbe: 2 Podaj druge liczbe: 3 a = 2; b = 3 a + b = 5 a - b = -1 a * b = 6 a / b = 0.666667 a = 2.000000; b = 3.000000 a + b = 5.000000 a - b = -1.000000 a * b = 6.000000 a / b = 0.666667 a = 2.000000e+00; b = 3.000000e+00 a + b = 5.000000e+00 a - b = -1.000000e+00 a * b = 6.000000e+00 a / b = 6.666667e-01 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 53 / 1
Biblioteka matematyczna # include <iostream > #include <cmath> / / b i b l i o t e k a matematyczna using namespace std ; i n t main ( ) { double area ; cout << " Podaj powierzchnie swojego domu w metrach kwadratowych : " ; c i n >> area ; i f ( area >=0){ double bok = s q r t ( area ) ; cout << " Odpowiada to kwadratowi o boku " << bok << " metrow. " << endl ; cout << " Niesamowite! " << endl ; else cout << " Powiezchnia nie moze byc ujemna! " << endl ; return 0; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 54 / 1
Przykładowe wykonanie Podaj powierzchnie swojego domu w metrach kwadratowych:16 Odpowiada to kwadratowi o boku 4 metrow. Niesamowite! Podaj powierzchnie swojego domu w metrach kwadratowych:-4 Powiezchnia nie moze byc ujemna! Podaj powierzchnie swojego domu w metrach kwadratowych:123 Odpowiada to kwadratowi o boku 11.0905 metrow. Niesamowite! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 55 / 1
Biblioteka matematyczna # i n c l u d e <iostream > # i n c l u d e <cmath> / / b i b l i o t e k a matematyczna using namespace std ; i n t main ( ) { double r ; cout <<" Podaj promien kola : " ; c i n >> r ; i f ( r < 0) { cout <<" Promien kola musi byc >= 0" << endl ; double p i = 4 atan ( 1 ) ; / / obliczane na e t a p i e k o m p i l a c j i cout <<" Pole kola wynosi : " << p i r r << endl ; cout <<"Obwod kola wynosi : " << 2 p i r << endl ; r e t u r n 0; Podaj promien kola: 6 Pole kola wynosi: 113.097 Obwod kola wynosi: 37.6991 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 56 / 1
Biblioteka matematyczna # include <iostream > #include <cmath> / / b i b l i o t e k a matematyczna using namespace std ; i n t main ( ) { double r ; cout << " Podaj wartosc konta w radianach : " ; c i n >> r ; cout << " s i n ( " << r << " ) = " << s i n ( r ) << endl ; cout << " cos ( " << r << " ) = " << cos ( r ) << endl ; return 0; Wartość funkcji sin i cos nie jest obliczana na etapie kompilacji programu, ale funkcje te sa wywoływane w momencie uruchomienia programu. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 57 / 1
Biblioteka matematyczna # include <iostream > #include <cmath> / / b i b l i o t e k a matematyczna using namespace std ; i n t main ( ) { double stopnie = 0. 0 ; double wynik = cos ( stopnie M_PI / 1 8 0 ) ; cout << " Cosinus z " << stopnie << " s t o p n i = " << wynik << endl ; stopnie = 6 0. 0 ; wynik = cos ( stopnie M_PI / 1 8 0 ) ; cout << " Cosinus z " << stopnie << " s t o p n i = " << wynik << endl ; stopnie = 9 0. 0 ; wynik = cos ( stopnie M_PI / 1 8 0 ) ; cout << " Cosinus z " << stopnie << " s t o p n i = " << wynik << endl ; stopnie = 120. 0; wynik = cos ( stopnie M_PI / 1 8 0 ) ; cout << " Cosinus z " << stopnie << " s t o p n i = " << wynik << endl ; stopnie = 180. 0; wynik = cos ( stopnie M_PI / 1 8 0 ) ; cout << " Cosinus z " << stopnie << " s t o p n i = " << wynik << endl ; return 0; Cosinus z 0 stopni = 1 Cosinus z 60 stopni = 0.5 Cosinus z 90 stopni = 6.12303e-17 Cosinus z 120 stopni = -0.5 Cosinus z 180 stopni = -1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 58 / 1
<cmath> - funkcje trygonometryczne: Funkcje trygonometryczne, to funkcje matematyczne wyrażajace między innymi stosunki między długościami boków trójkata prostokatnego względem miar jego katów wewnętrznych. sinus(x) - stosunek długości przyprostokatnej leżacej naprzeciw kata x i długości przeciwprostokatnej. cosinus(x)- stosunek długości przyprostokatnej przyległej do kata x i długości przeciwprostokatnej. tangens(x)- stosunek długości przyprostokatnej leżacej naprzeciw kata x i długości przyprostokatnej przyległej do tego kata. cotangens(x)-stosunek długości przyprostokatnej przyległej do kata x i długości przyprostokatnej leżacej naprzeciw tego kata. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 59 / 1
<cmath> - funkcje trygonometryczne: Prototyp double sin(double x); float sin(float x); long double sin(long double x); double cos(double x); float cos(float x); long double cos(long double x); double tan(double x); float tan(float x); long double tan(long double x); Opis funkcje obliczaja sinus dla kata x podanego w radianach czyli, mierze łukowej funkcje obliczaja cosinus dla kata x podanego w radianach czyli, mierze łukowej funkcje obliczaja tangens dla kata x podanego w radianach czyli, mierze łukowej Uwaga! Aby zamienić stopnie na radiany lub odwrotnie można użyć następujacego kodu: stopnie = radiany * 180.0f / M_PI; radiany = stopnie * M_PI / 180; Uwaga! To pierwszy przykład funkcji przeciażonych! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 60 / 1
<cmath> - funkcje cyklometryczne (funkcje kołowe): Funkcje cyklometryczne, to funkcje odwrotne do funkcji trygonometrycznych ograniczonych do pewnych przedziałów. arcus sinus jest funkcja odwrotna do funkcji sinus rozpatrywanej na przedziale ( π/2, π/2) arcus cosinus jest funkcja odwrotna do funkcji cosinus rozpatrywanej na przedziale (0, π) arcus tangens jest funkcja odwrotna do funkcji tangens rozpatrywanej na przedziale ( π/2, π/2) arcus cotangens jest funkcja odwrotna do funkcji cotangens rozpatrywanej na przedziale (0, π) Uwaga! arcsin(x) = y iff sin(y) = x ; arccos(x) = y iff cos(y) = x arctan(x) = y iff tan(y) = x ; arccotan(x) = y iff cotan(y) = x Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 61 / 1
<cmath> - funkcje cyklometryczne (funkcje kołowe): Prototyp Opis double asin(double x); funkcje obliczaja arcus sinus x, czyli float asin(float x); kat, którego sinus wynosi x long double asin(long double x); double acos(double x); funkcje obliczaja arcus cosinus, czyli float acos(float x); kat, którego cosinus wynosi x long double acos(long double x); double atan(double x); funkcje obliczaja arcus tangens x, float atan(float x); czyli kat, którego tangens wynosi x long double atanl(long double x); Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 62 / 1
<cmath> - funkcje hiperboliczne: Funkcje hiperboliczne funkcje zmiennej rzeczywistej lub zespolonej określone następujaco: sinus hiperboliczny: sinh(x) = ex e x 2 cosinus hiperboliczny: cosh(x) = ex +e x 2 tangens hiperboliczny: tanh(x) = sinh(x) cosh(x) = ex e x e x +e x cotangens hiperboliczny: tanh(x) = cosh(x) sinh(x) = ex +e x e x e x Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 63 / 1
<cmath> - funkcje hiperboliczne: Prototyp Opis double sinh(double x); funkcje obliczaja sinus hiperboliczny float sinh(float x); dla kata x podanego w radianach long double sinh(long double x); czyli, mierze łukowej double cosh(double x); funkcje obliczaja cosinus hiperboliczny float cosh(float x); dla kata x podanego w radianach long double cosh(long double x); czyli, mierze łukowej double tanh(double x); funkcje obliczaja tangens hiperboliczny float tanh(float x); dla kata x podanego w radianach long double tanhl(long double x); czyli, mierze łukowej Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 64 / 1
<cmath> - funkcja wykładnicza i potęgowa: Prototyp double exp(double x); float exp(float x); long double exp(long double x); double pow(double x, double y); float pow(float x, float y); long double pow(long double x, long double y); double sqrt(double x); float sqrt(float x); long double sqrt(long double x); Opis Zwraca e x Zwraca x do potęgi y Zwraca pierwiastek kwadratowy z x Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 65 / 1
<cmath> - funkcje logarytmiczne: Uwaga! Pamiętaj, że funkcja logarytmiczna jest funkcja odwrotna do funkcji wykładniczej. Prototyp Opis double log(double x); float log(float x); long double log(long double x); double log10(double x); float log10(float x); long double log10(long double x); zwraca logarytm naturalny z x zwraca logarytm dziesiętny z x Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 66 / 1
<cmath> - inne ciekawe: Prototyp Opis double ceil (double x); funkcje zaokraglaj aca w górę float ceil(float x); do najbliższej liczby całkowitej. long double ceil(long double x); double floor(double x); funkcje zaokraglaj a x w dół float floor(float x); do najbliższej liczby całkowitej. long double floorl(long double x); double fabs(double x); zwraca wartość bezwzględna float fabs(float x); liczby zmiennoprzecinkowej x. long double fabs(long double x); double fmod(double x, double y); oblicza resztę z dzielenia x przez y. Zwracana wartość to x n y, gdzie n jest ilorazem x/y, zaokraglonym w stronę zera do najbliższej liczby całkowitej. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 67 / 1