C++ - szablony kontenerów. Kontenery i szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów
|
|
- Gabriela Stachowiak
- 5 lat temu
- Przeglądów:
Transkrypt
1 Kontenery i szablony kontenerów Kontenery Kontener (lub inaczej pojemnik, ang. container, collection) to struktura danych, której zadaniem jest przechowywanie w zorganizowany sposób zbioru innych danych (obiektów). Kontener zapewnia wygodne narzędzia dostępu, w tym dodawanie, usuwanie i wyszukiwanie danej (obiektu) w kontenerze. Oczywistym kontenerem jest tablica (ale prymitywnym). Inne rodzaje kontenerów to: lista, drzewo, stos Przykład kontener typu stos template<typename T, int rozm> class SzablonStosu T stos[rozm]; SzablonStosu() : top(0) stos[top++] = i; return stos[--top]; ; Przykład zastosowania kontenera stosu: SzablonStosu<int, 100> is; // Dodanie kilku liczb: // Zdjęcie ich ze stosu i jednoczesne // wypisanie na ekranie: for(int k = 0; k < 20; k++) printf("%i\n", is.pop()); Efektywność kontenerów Jeżeli chcielibyśmy przygotować się na znaczną liczbę obiektów: 1. z których każdy miałby mieć przypisany swój stos, 2. przy czym tworząc struktury do zarządzania tymi obiektami, musielibyśmy również od razu tworzyć komplet pustych stosów gotowych do wykorzystania, to w momencie uruchomienia nastąpiłoby zajęcie dużej ilości pamięci. A jeżeli z czasem okazałoby się, że obiektów do przechowywania jest niewiele, to duża część pamięci zajętej przez stosy pozostałaby niewykorzystana. Efektywność kontenerów Należałoby pomyśleć o takim szablonie stosu, który pozwalałby na tworzenie kontenerów zajmujących początkowo niewiele pamięci, które osiągałyby swoje właściwe rozmiary dopiero w momencie pierwszego umieszczenia danych na stosie. Najprościej można opakować przykładowy szablon w inny szablon, działający tak, aby uniknąć tworzenia od razu całej struktury danych
2 class SzablonStosu T stos[rozmiar]; SzablonStosu() : top(0) stos[top++] = i; return stos[--top]; template<typename U, int rozm> friend class SzablonSprytnegoStosu; ; class SzablonSprytnegoStosu SzablonStosu<T, rozmiar> *sp; SzablonSprytnegoStosu(): sp(0) ; if (!sp) sp = new SzablonStosu<T,rozmiar>; sp->push(i); ; if (sp->top) return sp->pop(); else return T(); ; ~SzablonSprytnegoStosu() delete sp; Wykorzystanie przykładowego sprytnego stosu SzablonSprytnegoStosu<int, 100> is; // minimalna alokacja pamięci przy tworzeniu obiektu-kontenera // Dodanie na stos kilku liczb: // w pierwszym wywołaniu - właściwa alokacja pamięci // Zdjęcie liczb ze stosu i wypisanie na ekranie: for(int k = 0; k < 20; k++) cout << is.pop() << endl; ; ; Szablony i wykorzystanie relacji przyjaźni Przyjmijmy, że mamy funkcję lub szablon funkcji oraz klasę lub szablon klasy. Są cztery możliwe przypadki relacji między nimi: Jeden-do-wielu: Funkcja może być przyjacielem dla wszystkich instancji szablonu klasy (wszystkich klas, które zostały utworzone z szablonu) Wielu-do-jednego: Wszystkie instancje szablonu funkcji są przyjaciółmi regularnej klasy Jeden-do-jednego: Instancja szablonu funkcji dla określonego zbioru parametrów jest przyjacielem instancji klasy z takim samym zbiorem parametrów (identycznie jak w przypadku regularnych funkcji i klasy) Wielu-do-wielu: Wszystkie potencjalne instancje szablonu funkcji mogą być przyjaciółmi wszystkich potencjalnych instancji szablonu klasy 163 Przykład relacji między szablonami i klasami lub funkcjami // 1. szablon funkcji int g().. ; // 2. szablon funkcji int h().. ; class B // 3. klasa ; // 4. szablon klasy class A // działa tylko gdy: T==double (!) ; int e().. ; // 5. funkcja UKSW, intwmp. f(double) SNS, Warszawa.. ; // 6. funkcja 164 int g().. ; int h().. ; class B ; class A ; int e().. ; int f(double).. ; int g().. ; int h().. ; class B ; class A ; int e().. ; int f(double).. ;
3 int g().. ; int h().. ; class B ; class A ; int e().. ; int f(double).. ; int g().. ; int h().. ; class B ; class A ; int e().. ; int f(double).. ; class SzablonStosu // 1. relacja: wielu-do-wielu template<typename U, int rozm> friend class SzablonSprytnegoStosu; albo.. // 2. relacja friend class SzablonSprytnegoStosu<T, rozmiar>; ; class SzablonSprytnegoStosu SzablonStosu<T, rozmiar> *sp; SzablonSprytnegoStosu(): sp(0) ; if (!sp) sp = new SzablonStosu<T,rozmiar>; sp->push(i); ; if (sp->top) return sp->pop(); else return T(); ; ~SzablonSprytnegoStosu() delete sp; Kontenery i prawo własności obiektów 1. Kontenery przechowujące obiekty (w postaci wartości) są bezwzględnie właścicielami tych obiektów. Autorzy kodu kontenerów mają obowiązek napisać kod tak, aby przy usuwaniu instancji kontenerów usunąć uprzednio wszelkie obiekty przechowywane w kontenerze. 2. Kontenery przechowujące tylko wskaźniki do obiektów muszą mieć ustalone reguły własności obiektów wskazywanych przez te wskaźniki (po czyjej stronie spoczywa obowiązek usunięcia zawartości kontenera przy okazji usuwania całego kontenera po stronie kontenera czy programisty). Nie ma Garbage Collectora, wiec nie można udawać, że raz zajęta pamięć jakoś potem sama się zwolni.. ; ; Kontenery i prawo własności obiektów 1. Kontenery przechowujące obiekty (w postaci wartości) 2. Kontenery przechowujące wskaźniki do obiektów Najlepiej pisać kod wariantowo, tak aby programista sam np. przy wywołaniu konstruktora kontenera określał w argumencie wywołania reguły własności Można też wprowadzić atrybuty własności dla obiektów i dodać usługi zmieniające stan tych atrybutów Szablony kontenerów Iteratory 171 3
4 Iteratory Iterator jest obiektem, który porusza się w obrębie kontenera po przechowywanych w nim obiektach. Udostępnia on za każdym razem pojedynczy, zawarty w kontenerze obiekt, nie zapewnia jednak bezpośredniego dostępu do implementacji tego kontenera (do metod i pól). Iteratory stanowią standardowy sposób dostępu do elementów. Klasy iteratorów najczęściej są tworzone wraz z klasami kontenerów. Iteratory Mówiąc potocznie, iteratory są sprytnymi wskaźnikami, jednak w odróżnieniu od prawdziwych wskaźników są bezpieczne w użyciu dużo trudniej jest doprowadzić do sytuacji odpowiadającej np. przekroczeniu zakresu indeksów w tablicy. Tradycyjnie obiekt-iterator jest tworzony za pomocą takiego konstruktora, który przyłącza go do pojedynczego obiektukontenera. W czasie swojego życia obiekt-iterator nie jest zazwyczaj przyłączany do żadnego innego kontenera Przykład stosu i jego iteratora class IntStos enum rozm = 100 ; int Stos[rozm]; IntStos() : top(0) void push(int i) assert(top < rozm); Stos[top++] = i; int pop() assert(top > 0); return Stos[--top]; friend class IntStosIter; class IntStosIter // klasa iteratora IntStosIter(IntStos& is):s(is),index(0) ; int operator++() // Prefix return s.stos[++index]; ; int operator++(int) // Postfix return s.stos[index++]; ; ; IntStos is; // obiekt lokalny typu stos // zapełniamy stos wartościami IntStosIter it(is); // obiekt lokalny typu iterator // przemieszczamy się po stosie za pomocą iteratora: for(int j = 0; j < 20; j++) cout << it++ << endl; ; Tak jak w przypadku wskaźnika, zadaniem obiektu typu IntStosIter jest przemieszczanie się po IntStos i zwracanie wartości. W tym prostym przykładzie IntStosIter może poruszać się tylko w przód (używając zarówno przed jak i przyrostkowej formy operatora ++). Jednak, oprócz narzuconych przez kontener, na którym pracuje, nie ma żadnych ograniczeń na to, jak iterator może być zdefiniowany. Możemy poruszać się po elementach stosu nie pobierając ich, tak jakby to była tablica, dzięki temu, że iterator zna strukturę stosu oraz ma dostęp do wszystkich składowych kontenera (jest friend) Iterator ma za zadanie upraszczać złożony proces bezpiecznego przemieszczania się od jednego elementu kontenera do drugiego. Całkowicie akceptowalnym jest, aby iterator przemieszczał się w dowolnym kierunku "swojego" kontenera, a także by powodował zmiany wartości elementów (w ramach ograniczeń jakie narzuca dany kontener). Dąży się do tego, aby każdy iterator posiadał taki sam interfejs, niezależnie od tego, jakie elementy w jakim kontenerze wskazuje
5 W bibliotekach STL każdy kontener zawsze ma związaną ze sobą klasę zwaną iteratorem. Najczęściej klasa iteratora jest zadeklarowana jako zagnieżdżona wewnątrz deklaracji kontenera i ma nazwę iterator. Służy do tworzenia obiektów typu iterator dopasowanych co do zasady działania do danej klasy kontenerów. class IntStos enum ssize = 100 ; int stack[ssize]; IntStos() : top(0) void push(int i) assert(top < ssize); stack[top++] = i; int pop() assert(top > 0); return stack[--top]; class iterator iterator(intstos& is) : s(is), index(0) int operator++() // Prefix return s.stack[++index]; int operator++(int) // Postfix return s.stack[index++]; ; iterator begin() return iterator(*this); // zwraca iterator friend class iterator; ; class IntStos class iterator class IntStos int operator++() // Prefix enum ssize = 100 ; enum ssize = 100 ; int stack[ssize]; int stack[ssize]; return s.stack[++index]; iterator(intstos& is) : s(is), index(0) int operator++(int) // Postfix IntStos() : top(0) iterator(intstos& is, bool) : s(is), index(s.top) IntStos() : top(0) void push(int i) int operator++() // Prefix void push(int i) return s.stack[index++]; assert(top < ssize); stack[top++] = i; assert(top < ssize); stack[top++] = i; return s.stack[++index]; bool operator==(const iterator& rv) const int pop() int pop() return index == rv.index; assert(top > 0); return stack[--top]; int operator++(int) // Postfix assert(top > 0); return stack[--top]; bool operator!=(const iterator& rv) const return s.stack[index++]; class iterator return index!= rv.index; ; ; iterator begin() return iterator(*this); iterator begin() return iterator(*this); iterator end() return iterator(*this, true); iterator(intstos& is) : s(is), index(0) iterator end() return iterator(*this, true); friend class iterator; iterator(intstos& is, bool) : s(is), index(s.top) friend class iterator; ; 181 ; 182 Korzystanie z rozszerzonych wersji klas IntStos i iterator: Korzystanie z rozszerzonych wersji klas IntStos i iterator: IntStos is; Przydałby się sposób pozyskiwania elementu wskazywanego przez iterator, bez jednoczesnej jego inkrementacji. W tym celu dodajmy do klasy IntStos::iterator przeciążony operator *: // zapełniamy stos wartościami int operator*() const return s.stack[index]; // przemieszczamy się po stosie za pomocą iteratora: IntStos::iterator it = is.begin(); while(it!= is.end()) // nie musimy znać rozmiaru stosu.. cout << it++;
6 Korzystanie z rozszerzonych wersji klas IntStos i iterator: Teraz chcielibyśmy móc napisać w programie tak: IntStos::iterator it; for (it = is.begin(); it!=is.end(); it++) printf("%i\n",*it); To jednak wymaga utworzenia najpierw konstruktora domyślnego w klasie IntStos::iterator. Dopisujemy konstruktor domyślny: ale.. iterator() ; 1> Rebuild All started: Project: kontenerstosu, Configuration: Debug Win > main.cpp 1>d:\zpodemo2014\kontenerstosu\intstos.h(25): error C2758: 'IntStos::iterator::s' : must be initialized in constructor base/member initializer list 1>d:\zpodemo2014\kontenerstosu\intstos.h(22) : see declaration of 'IntStos::iterator::s' ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========.. dowiadujemy się, że składowej referencyjnej w obiekcie nie wolno zostawiać bez inicjalizacji. Rezygnujemy więc z iteratorów, które nie są przypisane do żadnego stosu Ostatecznie dodajemy tylko przeciążony operator przypisania: iterator& operator=(const iterator& rv) index = rv.index; return *this; Dlatego nasz kod korzystający ze stosu wygląda tak: IntStos::iterator it(is); // tworzymy iterator i.. // robimy pętlę for po elementach stosu: for (it = is.begin(); it!=is.end(); it++) printf("%i\n",*it); Jeżeli nadal.. jest to dla nas niekomfortowe, że musimy deklarować iteratory dopiero po zadeklarowaniu obiektu reprezentującego stos, to: aby uniknąć problemów z konstruktorem domyślnym zamiast zmiennej referencyjnej możemy używać w klasie iterator wskaźnika. class iterator IntStos* s; Teraz już bez problemu dodajemy konstruktor domyślny oraz odpowiednio dostosowujemy kod metod składowych iteratora Dlaczego iteratory są takie ważne przy korzystaniu z kontenerów? Jeżeli połączymy iteratory z szablonami, dziedziczeniem i polimorfizmem dostajemy zupełnie nowe możliwości programowania. Przykład: Przyjmijmy, że mamy kilka różnych typów kontenerów, każdy ze swoim typem iteratora. Na podstawie każdego z nich został zadeklarowany inny obiekt. Przyjmijmy, że mamy kilka różnych klas dziedziczących po jednej wspólnej klasie bazowej, reprezentujących np. figury na płaszczyźnie. Każdy obiekt przechowuje współrzędne położenia figury na płaszczyźnie oraz inne jej atrybuty. Każdy posiada metodę rysuj, która jest metodą polimorficzną Obiekty różnych typów są przechowywane w kontenerach różnych typów. Liczba typów kontenerów i typów obiektów może się zmieniać
7 Chcielibyśmy dla dowolnego podzbioru tych obiektów wywołać ich metodę polimorficzną rysuj, jednak kontenery nie mają wspólnego typu bazowego, mają natomiast różne metody dostępu do danych, które przechowują. Korzystamy więc z ich iteratorów: template<typename Iter> void wypisz(iter start, Iter end) while (start!=end) (*start)->rysuj(); start++; ; Szablon wypisz można nazywać algorytmem ponieważ określa, jak zrobić coś z wykorzystaniem danych iteratorów, opisujących zakres elementów. Jest to możliwe przy założeniu, że iteratory te mogą być wyłuskiwane, porównywane i inkrementowane. Takie właściwości mają wszystkie iteratory biblioteki STL. Uzyskanie takiej ogólności bez pośrednictwa iteratorów nie byłoby możliwe kontenery mogą mieć różne właściwości i ich bezpośrednie używanie nie pozwala na jednorodne ich stosowanie. Tylko iteratory pozwalają na: napisanie kodu ogólnego przeznaczenia bez znajomości budowy i zasady działania kontenerów Lekko zmodyfikowany szablon wypisz może się przydać również w przypadku klasykontenera: IntStos template<typename Iter> void wypisz(iter start, Iter end) while (start!=end) cout << *start << endl; start++; ; IntStos is; double tab[20]; tab[i] = 20-i; wypisz(is.begin(), is.end()); wypisz(tab, tab+20); 193 7
C++ - szablony kontenerów. Kontenery i szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów
Kontenery i szablony kontenerów Kontenery Kontener (lub inaczej pojemnik, ang. container, collection) to struktura danych, której zadaniem jest przechowywanie w zorganizowany sposób zbioru innych danych
C++ - 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
STL: 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.
ZASADY 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.
C++ - 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
Informacje 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
DYNAMICZNE 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
C++ - 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
Operator 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&
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
TEMAT : 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ą
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
IMIĘ 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
Paradygmaty 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..............................
Programowanie 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
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Programowanie 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
Dokumentacja 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
Techniki 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
Programowanie 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!
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Java - 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
PARADYGMATY 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
Lab 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
Dla 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
Projektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Wykł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
Zmienne 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
Skł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
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Programowanie 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)
Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji
Język C++ część 9 szablony klas Jarosław Gramacki Instytut Informatyki i Elektroniki szablony funkcji były omawiane na wcześniejszym wykładzie nazewnictwo: szablon funkcji wzorzec funkcji 2 szablony
C++ - 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
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
> 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
Przeciążenie operatorów
Przeciążenie operatorów W C++ można przeciążyć większość operatory tak, żeby wykonywali zadania, charakterystyczne dla danej klasy Po przeciążeniu odpowiednich operatorów można posługiwać się obiektami
Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula
Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne
1. 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
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
2. 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
STL Standardt Template Library (wprowadzenie)
STL Standardt Template Library (wprowadzenie) Biblioteka standardowych szablonów na dzień dzisiejszy stanowi jedną z najpotężniejszych możliwości języka C++ Zawiera szablony klas ogólnego przeznaczenia
Wskaź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
Zaawansowane 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,
Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201
Strona 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
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Programowanie 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
Programowanie 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
C++ - 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
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Ję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++...
Programowanie 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];
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Materiały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Algorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Wstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
PARADYGMATY 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
Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Listy 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ą
Wstę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 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Wykł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
Deklaracja struktury w C++
Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
Programowanie, 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
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów
Ję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,
Szablony 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
Wskaź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
C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,
Konstruktor 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
Obszar 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
Podstawy 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
Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37
Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy
Definicje klas i obiektów. Tomasz Borzyszkowski
Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
TEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
C++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.
Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.
Skł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 Przeciążanie operatorów Słowo
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Stos liczb całkowitych
Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int
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:
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
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40 Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40 C++ Templates
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM
POLIMORFIZM Podstawowe pytanie, które nieustannie ma towarzyszyć autorowi programowi: czy gdyby nagle okazało się, że jest więcej... (danych na wejściu, typów danych, czynności, które program ma wykonać,
Programowanie 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
Programowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Programowanie 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
JĘ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
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template