Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula
|
|
- Magda Stankiewicz
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programowanie i struktury danych Wykład 4 Dr Piotr ybula <cybula@math.uni.lodz.pl>
2 Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne wskaźnikowe są stałej wielkości zależnej jedynie od architektury procesora, np. 32-bit, 64-bit) zmienna typu wskaźnikowego zawiera adres zmiennej, na którą wskazuje (domyślnie adres przypadkowy): inicjalizacja adresem pustym NULL (stała zdefiniowana w bibliotece cstdlib) lub nullptr (słowo kluczowe dla c++11) pointer = nullptr; inicjalizacja adresem istniejącej zmiennej automatycznej (niebezpieczne) int variable; pointer = &variable; //operator adresu (referencji) inicjalizacja adresem zmiennej tworzonej dynamicznie pointer = new int; //operator alokacji pamięci delete pointer; //operator dealokacji pamięci dostęp do wskazywanej zmiennej tylko dla niepustych wskaźników p v if(pointer!=nullptr) cout<< *pointer; //operator dereferencji 2/47
3 Typ wska ź nikowy operator przypisania zmiennych wskaźnikowych kopiuje tylko adresy (nie wartości zmiennych wskazywanych) int* p1 = new int; int* p2; p2 = p1; //p2 wskazuje na to samo co p1 p1 współdzielenie adresu jednej zmiennej doprowadzi do powstania tzw. wskaźnika wiszącego (ang. dangling pointer) po zwolnieniu pamięci zajmowanej przez tę zmienną delete p1; cout << *p2; //zachowanie nieokreślone p1 p2 przed zwolnieniem pamięci dla zmiennej wskazywanej przez wskaźnik należy zmienić wartości dla wszystkich wskaźników wskazujących na tę zmienną poza jednym (tzw. zliczanie referencji) p2 = nullptr; //p2 nie wskazuje już na wspólną zmienną //p1 jest jedynym wskaźnikiem do tej zmiennej delete p1; //zwolnienie pamięci jest bezpieczne? p2 3/47
4 Wska ź niki do struktur dostęp do wskazywanej zmiennej strukturalnej (tylko dla niepustych wskaźników) za pomocą: operatorów dereferencji i selekcji (* i.): (*pointer).member operatora dereferencji wskaźnikowej (->): pointer->member class Student { string name; int index; public: Student(string _name); int getname() const; //inne metody }; Student* p = new Student( Scott Tiger ); //alokacja struktury cout << (*p).getname(); //operatory dereferencji i selekcji cout << p->getname(); //operator dereferencji wskaźnikowej delete p; //dealokacja struktury 4/4747
5 Wska ź nik this wskaźnik do obiektu, dla którego została wywołana metoda (dostępny w każdej metodzie struktury/klasy) class Vector { double* v; int dim; public: Vector(int dim) { v = new double[this->dim = dim]; } Vector& operator=(const Vector&); }; Vector& Vector::operator=(const Vector &r) { if(this!= &r) { //sprawdzenie adresów obiektów delete[] v; v = new double[dim = r.dim]; for(int i = 0; i < dim; i++) v[i] = r.v[i]; } return *this; //dereferencja wskaźnika zwraca obiekt } 5/47
6 ezpiecze ń stwo wska ź ników dereferencja wskaźnika możliwa tylko gdy wskaźnik nie jest pusty (warunkowe użycie dereferencji, pustość wskaźnika oznacza najczęściej przypadek szczególny w algorytmie) nazwa wskaźnika powinna jednoznacznie określać jego zastosowanie (proste wnioskowanie w przypadku pustości wskaźnika) powoływanie dedykowanych wskaźników dla alokacji i dealokacji pamięci 4 kroki poprawnej dealokacji pamięci (zapobieganie powstawania wskaźników wiszących): (1) powołanie wskaźnika i przypisanie mu adresu obiektu do zwolnienia (2) opcjonalne zabezepieczenie ważnych danych z obiektu (3) odpięcie (modyfikacja) wszystkich wskaźników przechowujących adres obiektu (poza wskaźnikiem z kroku pierwszego) (4) zwolnienie obiektu za pomocą jedynego możliwego wskaźnika 6/47
7 Lista łą czona pozwala na nieciągły przydział pamięci przy implementacji DT złożona z węzłów połączonych wskaźnikami - każdy węzeł zawiera dane i adres następnego (lista jednokierunkowa) oraz poprzedniego (lista dwukierunkowa) zalety: wysoka skalowalność i rozszerzalność, optymalne zużycie pamięci, łatwe dodawanie i usuwanie danych bez konieczności zmiany położenia w pamięci pozostałych danych wady: implementacja (operacje na wskaźnikach), niska wydajność odczytu (brak dostępu bezpośredniego do dowolnego elementu), dodatkowa pamięć wymagana dla zapamiętania adresów węzłów 7/47
8 Implementacja listowa DT pozwala na nieograniczony rozmiar struktury wskaźnik na pierwszy (opcjonanie również ostatni) węzeł listy łączonej główne metody: konstruktor bezparametrowy (puste wskaźniki, brak węzłów) destruktor (zwolnienie pamięci wszystkich węzłów) konstruktor kopiujący (przydział pamięci dla węzłów) operator przypisania (zwolnienie starej i przydział nowej pamięci dla węzłów) dodawanie elementu (przydział pamięci dla nowego węzła) usuwanie elementu (zwolnienie pamięci węzła) 8/47
9 Wstawianie na pocz ą tek (1) tworzymy nowy węzeł (creator) z podaną wartością i adresem pierwszego węzła () jako adresem następnego () 9/47
10 Wstawianie na pocz ą tek (1) tworzymy nowy węzeł (creator) z podaną wartością i adresem pierwszego węzła () jako adresem następnego () creator V 10/47
11 Wstawianie na pocz ą tek (1) tworzymy nowy węzeł (creator) z podaną wartością i adresem pierwszego węzła () jako adresem następnego () (2) przestawiamy wskaźnik pierwszego węzła () na nowy węzeł (3) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na pusty adres, ustawiamy go na nowy węzeł creator V 11/47
12 Wstawianie na pocz ą tek (1) tworzymy nowy węzeł (creator) z podaną wartością i adresem pierwszego węzła () jako adresem następnego () (2) przestawiamy wskaźnik pierwszego węzła () na nowy węzeł (3) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na pusty adres, ustawiamy go na nowy węzeł creator V 12/47
13 Wstawianie na pocz ą tek (1) tworzymy nowy węzeł (creator) z podaną wartością i adresem pierwszego węzła () jako adresem następnego () (2) przestawiamy wskaźnik pierwszego węzła () na nowy węzeł (3) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na pusty adres, ustawiamy go na nowy węzeł V 13/47
14 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł 14/47 47
15 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł killer 15/47
16 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł (3) przestawiamy wskaźnik pierwszego węzła () na węzeł drugi (używając adresu zapisanego we wskaźniku z pierwszego węzła) (4) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na usuwany, ustawiamy go na pusty adres killer 16/47
17 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł (3) przestawiamy wskaźnik pierwszego węzła () na węzeł drugi (używając adresu zapisanego we wskaźniku z pierwszego węzła) (4) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na usuwany, ustawiamy go na pusty adres killer 17/47
18 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł (3) przestawiamy wskaźnik pierwszego węzła () na węzeł drugi (używając adresu zapisanego we wskaźniku z pierwszego węzła) (4) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na usuwany, ustawiamy go na pusty adres (5) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) killer 18/47
19 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł (3) przestawiamy wskaźnik pierwszego węzła () na węzeł drugi (używając adresu zapisanego we wskaźniku z pierwszego węzła) (4) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na usuwany, ustawiamy go na pusty adres (5) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) killer 19/47
20 Usuwanie na pocz ą tku (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) ustawiamy dedykowany wskaźnik (killer) na pierwszy węzeł (3) przestawiamy wskaźnik pierwszego węzła () na węzeł drugi (używając adresu zapisanego we wskaźniku z pierwszego węzła) (4) jeżeli jest wskaźnik na ostatni węzeł (tail) i wskazuje on na usuwany, ustawiamy go na pusty adres (5) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) 20/47
21 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła 21/47
22 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła tmp 22/47
23 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła tmp 23/47
24 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła (2) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () tmp 24/47 47
25 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła (2) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () V tmp creator 25/47
26 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła (2) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (3) przestawiamy wskaźnik w węźle wskazywanym przez tmp (lub wskaźnik gdy tmp jest pusty) na nowy węzeł V tmp creator 26/47
27 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła (2) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (3) przestawiamy wskaźnik w węźle wskazywanym przez tmp (lub wskaźnik gdy tmp jest pusty) na nowy węzeł V tmp creator 27/47
28 Wstawianie na koniec (wer. 1) wersja ze wskaźnikiem na pierwszy węzeł (): (1) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do ostatniego węzła (2) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (3) przestawiamy wskaźnik w węźle wskazywanym przez tmp (lub wskaźnik gdy tmp jest pusty) na nowy węzeł V 28/47
29 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () tail 29/47
30 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () V tail creator 30/47
31 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (2) przestawiamy wskaźnik w ostatnim węźle wskazywanym przez tail (lub wskaźnik gdy tail jest pusty) na nowy węzeł V tail creator 31/47
32 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (2) przestawiamy wskaźnik w ostatnim węźle wskazywanym przez tail (lub wskaźnik gdy tail jest pusty) na nowy węzeł tail V creator 32/47
33 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (2) przestawiamy wskaźnik w ostatnim węźle wskazywanym przez tail (lub wskaźnik gdy tail jest pusty) na nowy węzeł (3) przestawiamy wskaźnik tail na nowy węzeł tail V creator 33/47
34 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (2) przestawiamy wskaźnik w ostatnim węźle wskazywanym przez tail (lub wskaźnik gdy tail jest pusty) na nowy węzeł (3) przestawiamy wskaźnik tail na nowy węzeł tail V creator 34/47 47
35 Wstawianie na koniec (wer. 2) wersja ze wskaźnikami na pierwszy i ostatni węzeł ( i tail): (1) tworzymy nowy węzeł (creator) z podaną wartością i wartością pustą jako adresem następnego () (2) przestawiamy wskaźnik w ostatnim węźle wskazywanym przez tail (lub wskaźnik gdy tail jest pusty) na nowy węzeł (3) przestawiamy wskaźnik tail na nowy węzeł tail V 35/47
36 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację tail 36/47
37 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) tmp tail 37/47
38 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) tmp tail 38/47
39 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) tmp tail 39/47
40 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) tmp tail killer 40/47 47
41 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres tmp tail killer 41/47 47
42 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres tmp tail killer 42/47 47
43 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres (5) jeżeli jest wskaźnik na ostatni węzeł (tail), ustawiamy go na tmp tmp tail killer 43/47 47
44 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres (5) jeżeli jest wskaźnik na ostatni węzeł (tail), ustawiamy go na tmp tmp tail killer 44/47 47
45 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres (5) jeżeli jest wskaźnik na ostatni węzeł (tail), ustawiamy go na tmp (6) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) tmp killer tail 45/47 47
46 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres (5) jeżeli jest wskaźnik na ostatni węzeł (tail), ustawiamy go na tmp (6) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) tmp killer tail 46/47 47
47 Usuwanie na ko ń cu (1) jeżeli lista jest pusta zgłaszamy wyjątek i przerywamy operację (2) przechodzimy wskaźnikiem pomocniczym (tmp) od początku listy do przedostatniego węzła (ostatniego węzła, którego wskaźnik jest niepusty) (3) ustawiamy dedykowany wskaźnik (killer) na ostatni węzeł używając adresu zapisanego we wskaźniku węzła wskazywanego przez tmp (lub wskaźnika jeżeli tmp jest pusty, lub wskaźnika tail jeżeli istnieje) (4) ustawiamy wskaźnik węzła wskazywanego przez tmp (lub wskaźnik gdy tmp jest pusty) na pusty adres (5) jeżeli jest wskaźnik na ostatni węzeł (tail), ustawiamy go na tmp (6) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer) tail 47/47
Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:
Laboratorium nr 9 Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: wskaźniki referencje zastosowanie wskaźników wobec tablic dynamiczny przydział pamięci,
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoKonstruktor kopiujacy
Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoAlgorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoWykład 5 Wybrane zagadnienia programowania w C++ (c.d.)
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu
Bardziej szczegółowoDYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Bardziej szczegółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoWyliczanie wyrażenia obiekty tymczasowe
Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoProgramowanie, część I
11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne
Bardziej szczegółowoProgramowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać
Bardziej szczegółowoProgramowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoPROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
Bardziej szczegółowoCo to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Bardziej szczegółowoPodstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Bardziej szczegółowoJava: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Bardziej szczegółowoOperator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Wykład 9 - powtórzenie. 11 maja 2007 Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne,
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE
WSKAŹNIKI KLASOWE Wskaźniki klasowe Każdy obiekt zajmuje fragment pamięci i wszystkie obiekty tego samego typu zajmują fragmenty pamięci tej samej długości początek miejsca w pamięci zajmowanego przez
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowo> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017
> C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES
Bardziej szczegółowoDzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory
Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile Semafory 1 Klasa string Przetwarzanie tekstów jest powszechną dziedziną zastosowań komputerów W języku
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Bardziej szczegółowoTypy metod: konstruktory, destruktory, selektory, zapytania, iteratory.
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do
Bardziej szczegółowoProgramowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Bardziej szczegółowoStrona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Bardziej szczegółowoDynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoWskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Bardziej szczegółowoProgramowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoProgramowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoTbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu
Tablice, wskaźniki, referencje Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu #include using namespace std; class cl int
Bardziej szczegółowoTypy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości
Bardziej szczegółowoProgramowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoZaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Bardziej szczegółowo// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoProgramowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Bardziej szczegółowoDynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:
Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 5
Programowanie komputerowe Zajęcia 5 Tablice wielowymiarowe Tablicę dwuwymiarową możemy deklarować statycznie: typ nazwa[rozmiar1][rozmiar2]; Ma ona elementy nazwa[i][j] dla i=0,,rozmiar1-1, j=0,...,rozmiar2-1.
Bardziej szczegółowoWykład 1: Wskaźniki i zmienne dynamiczne
Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie
Bardziej szczegółowoMateriał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoZajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 4
Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoZaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoListy powiązane zorientowane obiektowo
Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoPodstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.
Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY
Inicjalizacja obiektu KONSTRUKTORY Inicjalizacja Przyczyną wielu błędów w programach jest nieprawidłowe zainicjalizowanie zmiennych na początku działania programu. Obiekt zawiera z reguły szereg pól ich
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Bardziej szczegółowoJęzyki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
Bardziej szczegółowoWykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster
Wykład nr 3 Temat: Wskaźniki i referencje. Cytaty: Mylić się jest rzeczą ludzką, ale żeby coś naprawdę spaprać potrzeba komputera. Edward Morgan Forster Gdyby murarze budowali domy tak, jak programiści
Bardziej szczegółowoDla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.
Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza
Bardziej szczegółowoSTL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Bardziej szczegółowoZmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
Bardziej szczegółowoProgramowanie, część I
Programowanie, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 lutego 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część I 22 lutego 2011 1 / 80 Wstęp Informacje organizacyjne
Bardziej szczegółowopublic: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoPodstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Bardziej szczegółowoParadygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Bardziej szczegółowoNowoczesny C++ Rafał Wasilewski 1
Nowoczesny C++ Rafał Wasilewski 1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok III Politechnika Częstochowska {wasilewski.rafael@gmail.com 1 Wstęp Streszczenie Tematem pracy
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 8 Przykład realizowany na wykładzie Klasy StringBad i String. Wstępne pliki załaczone jako źródła.
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoWskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Bardziej szczegółowoReferencje do zmiennych i obiektów
Referencje do zmiennych i obiektów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowo