Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Język C/C++ Funkcje.
Programowanie obiektowe
Zmienne i Typy.
Prowadzący: mgr inż. Elżbieta Majka
Static, const, volatile.
Wskaźniki. Definiowanie wskaźników Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Real; Przykłady: Wskaźnik.
Struktury.
Tablice.
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Podstawy programowania
Podstawy informatyki 2013/2014
Metody Programowania Wykład
Podstawy programowania II
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Float; Przykład: Wskaźnik przechowuje adres obiektu wskazanego.
Podstawy informatyki 2012/2013
Podstawy programowania
Informatyka I Wykład 10 WSKAŹNIKI I ADRESY Jerzy F. Kotowski.
Przekazywanie argumentów
Podstawy programowania
Programowanie strukturalne i obiektowe
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Inicjalizacja i sprzątanie
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie strukturalne i obiektowe
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Zmienne i typy danych w C#
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Tablice: tworzenie, indeksowanie, wymiary Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Interpolacja i aproksymacja
Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Wielomiany Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Operatory rzutowania Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Obliczenia inżynierskie w Matlabie
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Obliczenia w Matlabie Analiza statystyczna
Zapis prezentacji:

Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

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;

fundamentalne (jakby najbardziej podstawowe) 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ę)

Typy fundamentalne bool char, signed char NAZWA BAJTY ZAKRES WARTOŚCI bool 1 {true, false} char, signed char -128 do 127 unsigned char 0 do 255 wchar_t 2 0 do 65 535 __int8, signed __int8 unsigned __int8 short int, signed short int, short, signed short, __int16, signed __int16 -32 768 do 32 767 unsinged short int, unsigned short, unsigned __int16 int, signed int, __int32, signed __int32 4 -2 147 483 648 do 2 147 483 647 unsigned int, unsigned __int32 0 do 4 294 967 295 long int, signed long int, long, signed long, int, __int32, signed __int32 unsigned long int, unsigned long, unsigned __int32 long long int, long long, signed long long int, signed long long, __int64, signed __int64 8 -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 unsigned long long int, unsigned long long, unsigned __int64 0 do 18 446 744 073 709 551 615 float ±3,4E±38 double ±1,7E±308 long double

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

Referencja int a; a

Referencja int a; int &b=a; Referencja musi być zainicjalizowana l-wartością! Zapisy: int &b; int &b=2; spowodują błąd kompilacji. a, b

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 funkcja(); void *wskaźnik; void tablica[5]; void &referencja=obiekt;

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)

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

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

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

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

Zakres zdefiniowany przez przestrzeń nazw #include<iostream> 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

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

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

Zakres zdefiniowany przez przestrzeń nazw #include<iostream> 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

Zakres zdefiniowany przez przestrzeń nazw #include<iostream> 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;

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

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

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

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

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

Zmienne lokalne #include<iostream> using namespace std; int main() { int i; for (i=0; i<5; i=i+1) cout<<i<<endl; } 1 2 3 4 5

BŁĄD 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

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.

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;

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

enum nazwa_typu {lista wyliczeniowa}; 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};

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

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};

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