Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.

Podobne prezentacje


Prezentacja na temat: "Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy."— Zapis prezentacji:

1 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy informatyki Typy

2 Typy Każda nazwa zanim zostanie użyta musi zostać zdefiniowana (w dowolnym momencie, ale przed jej użyciem). Obiekty różnych typów zajmują w pamięci komputera w różną objętość, różnie też można z nimi postępować. Stąd konieczność podania typu obiektu. Składnia definicji: typ nazwa_zmiennej; typ nazwa1, nazwa2, nazwa3;

3 Typy w C++ TYPY: fundamentalne (jakby najbardziej podstawowe) złożone (wykorzystujące typ fundamentalny) TYPY: wbudowane (standardowe wyposażenie języka C++) definiowane przez użytkownika (wymyślane przez programistę)

4 Typy fundamentalne NAZWABAJTYZAKRES WARTOŚCI bool1{true, false} char1-128 do 127 lub 0 do 255 unsigned char10 do 255 signed char1-128 do 127 wchar_t20 do 65 535 short int2-32 768 do 32 767 unsinged short int20 do 65 535 signed short int2-32 768 do 32 767 int4-2 147 483 648 do 2 147 483 648 unsigned int40 do 4 294 967 295 signed int4-2 147 483 648 do 2 147 483 648 long int4-2 147 483 648 do 2 147 483 648 unsigned long int40 do 4 294 967 295 signed long int4-2 147 483 648 do 2 147 483 648 float4±3,4E±38 double8±1,7E±308 long double8±1,7E±308

5 Typy złożone Operatory umożliwiające tworzenie typów złożonych to: []tablica obiektów danego typu *wskaźnik do pokazywania na obiekty danego typu ()funkcja zwracająca wartość danego typu &referencja obiektu danego typu

6 Referencja a int a;

7 Referencja a, b int a; int &b=a; Referencja musi być zainicjalizowana!!! Zapis: int &b; spowoduje błąd kompilacji.

8 Typ void Typ void jest również typem fundamentalnym. Nie można zdefiniować obiektu typu void. Typ void może występować tylko w deklaracjach typów złożonych: void *wskaźnik;void funkcja(); void tablica[5];void &referencja=obiekt;

9 Zakres ważności nazwy obiektu i czas życia obiektu. Czas życia obiektu to okres od momentu, gdy zostaje od zdefiniowany do momentu, gdy przestaje istnieć. Zakres ważności nazwy obiektu to fragment programu, w którym nazwa obiektu jest znana, czyli obiekt jest dostępny. Obiekt może istnieć (żyje) ale nie jest dostępny (jesteśmy poza zakresem ważności jego nazwy)

10 Zakres ważności nazwy lokalny blok funkcji obszar pliku obszar klasy (struktury) zakres zdefiniowany przez przestrzeń nazw

11 Zakres lokalny int main() {... { int a;...//tu obiekt jest dostępny }...//tu już nie }

12 Zakres bloku funkcji void funkcja() {... goto etykieta;... etykieta:... }

13 Zakres obszaru pliku int a; int main() {... } void funkcja() {... }

14 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; namespace moja { int a; } int main() { a=1; moja::a=1; cout<<moja::a<<endl; } BŁĄD zmienna a nie istnieje 1

15 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; namespace moja { int a; } using namespace moja; int main() { a=1; cout<<a<<endl; } 1

16 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; namespace moja{int a;} using namespace moja; int main() { a=1; cout<<a<<endl; int a=2; cout<<a<<endl; cout<<moja::a<<endl; } 1 2 1

17 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; namespace moja1{int a;} namespace moja2{double a;} using namespace moja1; using namespace moja2; int main() { a=1; moja1::a=1; cout<<moja1::a<<endl; } BŁĄD kompilator nie wie do której zmiennej się odwołujemy Tu jest OK 1

18 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; namespace moja { int a; double b; } using moja::a; int main() { a=1; moja::b=1.5; cout<<a<<endl<<moja::b<<endl; }

19 Zakres zdefiniowany przez przestrzeń nazw #include using namespace std; int main() { cout<<"Hello\n"; } #include int main() { std::cout<<"Hello\n"; }

20 Zakres zdefiniowany przez przestrzeń nazw #include int main() { int cout=2; std::cout<<cout; } #include using namespace std; int main() { int cout=2; cout<<cout; } 2

21 Zasłanianie nazw #include using namespace std; int i=1; int main() { cout << i << endl; int i=2; cout << i << endl; cout << ::i << endl;{ cout << i << endl; int i=3; cout << i << endl; cout << ::i << endl;} cout << i << endl; cout << ::i << endl; int i=4; } 1 2 1 2 3 1 2 1 BŁĄD REDEFINICJA

22 Zasłanianie nazw #include using namespace std; int i=1; int main() { cout << i << endl; int i=2; cout << i << endl; cout << ::i << endl;{ cout << i << endl; int i=3; cout << i << endl; cout << ::i << endl;} cout << i << endl; cout << ::i << endl; int i=4; }

23 Zmienne lokalne #include using namespace std; int main() { for (int i=0; i<5; i=i+1) { cout<<i<<endl; } cout<<i<<endl; } 0123401234 BŁĄD

24 Zmienne lokalne #include using namespace std; int main() { int i; for (i=0; i<5; i=i+1) { cout<<i<<endl; } cout<<i<<endl; } 0123401234 5

25 Specyfikator const Specyfikator const zmienia zwykłą definicję tak, że jest to teraz definicja obiektu stałego, np.: const double pi = 3.14; Obiekty stałe można tylko inicjalizować, nie można wykonać przypisania! const int a; a=5; BŁĄD

26 Specyfikator register Specyfikator register używany jest do definiowania obiektów, do których chcemy mieć bardzo szybki dostęp. register jest sugestią dla kompilatora aby zmienną umieścił w rejestrze procesora. register int i; Zmienna umieszczona w rejestrze nie ma adresu! Odwołanie się do adresu takiej zmiennej spowoduje przeniesienie jej do pamięci i zwrócenie jej adresu.

27 Specyfikator volatile Specyfikator volatile zmienia zwykłą definicję tak, że jest to teraz definicja obiektu, którego wartość może się zmienić bez wiedzy kompilatora, np.: volatile double a;

28 Instrukcja typedef Instrukcja typedef pozwala na nadanie dodatkowej nazwy już istniejącemu typowi, np.: typedef odleglosc int; Definicja odleglosc a; odpowiada definicji int a;

29 Typ wyliczeniowy enum Jest typem całkowitoliczbowym. Do obiektu takiego typu można podstawić jedynie wartość określoną na liście wyliczeniowej. Definicja enum nazwa_typu {lista wyliczeniowa};

30 Typ wyliczeniowy enum #include using namespace std; int main() { enum miesiace{sty=1,lut,mar,kwi,maj,cze,lip,sie,wrz,paz,lis,gru}; miesiace M; M=lut; M=3; M=ala; cout<<M<<endl; } Definicja typu enum Definicja obiektu Przypisanie wartości Oba przypisania generują błąd 2

31 Typ wyliczeniowy enum int a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10; Co jest równoznaczne z: enum {a=1,b,c,d,e,f,g,h,i,j};

32 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl


Pobierz ppt "Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy."

Podobne prezentacje


Reklamy Google