Algorytmy i Struktury Danych. Laboratorium 3. Drzewa, kopce, wyszukiwanie wzorca informacji, kodowanie
|
|
- Włodzimierz Kowalczyk
- 7 lat temu
- Przeglądów:
Transkrypt
1 Laboratorium 3 Drzewa, kopce, wyszukiwanie wzorca informacji, kodowanie 1. Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z wybranymi algorytmami operującymi na strukturach drzewiastych dla różnych typów danych, złożonością obliczeniową, wydajnością i możliwością jej poprawy w wybranych przypadkach. 2. Wstęp W trakcie ćwiczenia badane są właściwości drzewiastych struktur danych i operujących na nich algorytmów. Pod pojęciem drzewiastej struktury danych jest tu rozumiany sposób organizacji danych pod względem sposobu ich przechowywania, organizacji i dostępu. Program analizowany i modyfikowany w trakcie laboratorium składa się z następujących plików składowych: plik aisd.h zawiera: deklarację i definicję typu wyliczeniowego Except wykorzystywanego do obsługi wyjątków rzucanych w programie, zawiera deklarację i definicję typu strukturalnego Parametry wykorzystywanego do analiz zaimplementowanych algorytmów zawiera deklarację i definicję szablonu głównej klasy AISD. plik dane.h zawiera: deklarację i definicje klasy nodet implementującej węzły drzewa deklarację i definicje klasy STOS implementującej podstawową funkcjonalność stosu deklarację i definicje klasy KOLEJKA implementującej podstawową funkcjonalność kolejki plik data_bi.h zawiera: deklarację i definicje klasy BiData implementującej przykładowy dwuskładnikowy typ danych przeciążenia wybranych operatorów współpracujących z obiektami klasy BiData plik data_huf.h zawiera: deklarację i definicje klasy HufData implementującej przykładowy typ danych dla analizy algorytmów wykorzystujących drzewo Huffmana przeciążenia wybranych operatorów współpracujących z obiektami klasy HufData plik drzewa.h zawiera: zawiera deklarację i definicję szablonu klasy Drzewa i metod operujących na przykładowych strukturach danych plik drzewa_bi.h zawiera: zawiera deklarację i definicję szkieletu (nie szablonu!) klasy DrzewaBi utworzonej na bazie klasy szablonowej Drzewa wraz z metodami operującymi na przykładowych strukturach danych typu BiData. Klasa DrzewaBi przeznaczona jest do w pełni samodzielnej implementacji wybranych funkcjonalności dla algorytmów operujących na drzewach. plik drzewa_huffman.h zawiera: zawiera deklarację i definicję klasy DrzewaHuf utworzonej na bazie klasy szablonowej Drzewa wraz z metodami operującymi na przykładowych strukturach danych typu HufData plik drzewa_int.h zawiera: zawiera deklarację i definicję klasy DrzewaInt utworzonej na bazie klasy szablonowej Drzewa wraz z metodami operującymi na przykładowych strukturach danych typu int plik drzewa_fix.h zawiera: zawiera deklarację i definicję klasy Fix utworzonej bezpośrednio na bazie klasy szablonowej AISDE wraz z metodami operującymi na przykładowych strukturach danych typu char. plik aisd.cpp zawiera: procedurę obsługi wyjątków plik main.cpp zawiera: główną pętlę programu. 1/7
2 Wszystkie algorytmy zostały zaimplementowane w postaci metod klasy Drzewa (plik drzewa.h, wydruk R.1), która podobnie jak wykorzystywana w poprzednim ćwiczeniu klasa AlgorytmySortowania, jest szablonem klasy pochodnej szablonu klasy wirtualnej AISD. Zdefiniowanie klas AISD i Drzewa w postaci szablonów daje możliwość ich zastosowania dla wielu różnych typów danych określonych parametrem (tu OBJ). Mogą to być podstawowe typy i struktury danych lecz również dowolne typy użytkownika. W każdym przypadku niezbędne odpowiednie dla konkretnego typu danych przeciążenie wykorzystywanych operatorów jak np. >, >=, <, <=, =, ==, ++, --, +=, -= itd. R.1. template <class OBJ> class Drzewa:public AISD<OBJ>{ inline int NodeL(int i){return 2*i; inline int NodeR(int i){return 2*i+1; inline int Parent(int i){return i/2; void FixUp(int); void FixDown(int,int); void InOrderRekur(int Node); //zwiedzanie rekurencyjne "in-order" void PreOrderRekur(int Node); //zwiedzanie rekurencyjne "pre-order" void PostOrderRekur(int Node); //zwiedzanie rekurencyjne "post-order" void PreOrderNRekurSTOS(int Node); //zwiedzanie nierekurencyjne ze stosem void HorizontNRekurKOLEJKA(int Node); //zwiedzanie nierekurencyjne z kolejka Parametry* SortKopcowanie (int L=1,int R=1); //sortowanie przez kopcowanie nodet<obj>* TurniejMax(int,int); //turniejowe poszukiwanie najwiekszego elementu w tablicy void TurniejSort(int,int); //turniejowe sortowanie w tablicy void Turniej(int,int); //rekurencyjny turniej w tablicy OBJ virtual *Visit(int){return 0; Drzewa(int LiczZbior):AISD<OBJ>(LiczZbior){ ~Drzewa(){ void VisitInOrder(int Node); void VisitPreOrder(int Node); void VisitPostOrder(int Node); void VisitPreOrderSTOS(int Node); void VisitHorizontKOLEJKA(int Node); void TurniejMax(); void TurniejSort(); void Kopcowanie(); void virtual WypiszDrzewoNaEkran(bool) {printf("niezdefiniowana funkcja wirtualna\n ); void virtual ZapiszDrzewoDoPliku(char*) {printf("niezdefiniowana funkcja wirtualna\n ); drzewa.h Przedstawiona na wydruku R.2 klasa AISD implementuje niezbędne metody operujące na strukturze danych, służące do uruchamiania testowanych algorytmów, wydruku raportów, zapisu danych na dysk, komunikacji z użytkownikiem itd. template <class OBJ> class AISD{ OBJ *Dane; OBJ *DaneKopia; int LicznoscZbioru; Parametry ZA; //ZlozonoscAlgorytmu - Parametry void OdswiezDane(); // przepisuje Dane_kopia do Dane void ZA_Init(); // Inicjalizacja struktury danych ZA long PobierzCzas(); inline void Zamien(OBJ &A,OBJ &B); // zamienia wartosci argumentow A i B inline void ZamienWarunkowo(OBJ &A,OBJ &B); // zamienia wartosci argumentow gdy B<A AISD(int); ~AISD(); OBJ *GetDane(); OBJ *GetDaneKopia(); int GetLicznosc(); void Raport(char*); void virtual ZapiszStanDoPliku(char*) void virtual WczytajDaneZPliku(char*) void virtual WypiszStanNaEkran(bool) void virtual BadanieAlgorytmow() {printf("niezdefiniowana funkcja wirtualna\n ); {printf("niezdefiniowana funkcja wirtualna\n ); {printf("niezdefiniowana funkcja wirtualna\n ); {printf("niezdefiniowana funkcja wirtualna\n ); R.2. aisd.h Klasa szablonowa Drzewa składa się z części publicznej (public) i chronionej (protected). Składniki i metody umieszczone w publicznej części są bezpośrednio dostępne dla użytkownika. W ten sposób zaimplementowane zostały: trzy algorytmy rekurencyjnego przechodzenia przez drzewo w porządkach: in-order, pre-order i postorder, dwie nierekurencyjne wersje algorytmu przechodzenia przez drzewo w porządku pre-order wykorzystujące stos i kolejkę, algorytm poszukiwania największego elementu tablicy metodą turnieju, algorytm sortowania przechowujący dane w strukturze kopca algorytm tworzenia drzewa Huffmana wraz z metodami niezbędnymi do analizy przykładowych danych W chronionej części klasy szablonowej Drzewa zadeklarowano metody NodeL, NodeR, Parent, FixUp, FixDown, Visit. Są to metody pomocnicze dla algorytmów sortujących. W celu zapewnienia integralności, wywołanie powyższych metod jest możliwe wyłącznie z wnętrza obiektów tej samej klasy lub klas od niej pochodnych (klauzula protected). Dla ułatwienia analizy złożoności zaimplementowanych algorytmów 2/7
3 wszystkie metody operujące na drzewach na bieżąco aktualizują zawartość struktury ZlozAlg o postaci przedstawionej na listingu R.3. R.3. typedef struct{ unsigned long CzWyk; // czas wykonania algorytmu unsigned long GlStoPr; // biezaca glebokosc stosu aplikacji unsigned long GlStoPrMax; // maksymalna glebokosc stosu aplikacji unsigned long GlStoDa; // biezaca glebokosc stosu danych unsigned long GlStoDaMax; // maksymalna glebokosc stosu danych unsigned long LiKop; // liczba kopiowan danych (3 kopiowania na 1 zamiane) unsigned long LiPor; // liczba porownan danych unsigned long LiWej; // liczba wejsc do komorki unsigned long LiPut; // liczba wstawien do kolejki unsigned long LiPush; // liczba odlozen na stos } Parametry; aisd.h Każda z zaimplementowanych metod operuje na danych umieszczonych w tablicy wskazywanej przez Dane prywatny składnik szablonu klasy inicjalizowany w czasie pracy konstruktora szablonu klasy macierzystej AISDE. Liczność zbioru jest w określona wartością zmiennej chronionej LicznośćZbioru inicjalizowanej przy tworzeniu obiektu (w przykładowej implementacji jest wykorzystywana globalna zmienna o tej samej nazwie LicznośćZbioru). W części publicznej klasy Drzewa zadeklarowano konstruktor, destruktor oraz wirtualne metody umożliwiające wypisanie danych na ekran i operacje na plikach (WypiszStanNaEkran, WypiszDrzewoNaEkran, ZapiszStanDoPliku, ZapiszDrzewoDoPliku i WczytajDaneZPliku). Wywołanie metod wirtualnych WypiszDrzewoNaEkran i WypiszStanNaEkran wymaga podania parametru logicznego Ekran. Steruje on wypisywaniem zbioru danych na ekran. Wywołanie metod ZapiszStanDoPliku, ZapiszDrzewoDoPliku i WczytajDaneZPlikuwymaga podania nazwy pliku na którym metody te mają pracować. Klasy AISD i Drzewa to szablony klas wirtualnych. Aby można było utworzyć obiekty tego typu niezbędne jest zdefiniowanie stosowych klas pochodnych jak również zdefiniowanie metod wirtualnych WypiszStanNaEkran, ZapiszStanDoPliku, WczytajDaneZPliku i BadanieAlgorytmów. W analizowanym w trakcie ćwiczenia programie dla przykładu zdefiniowano złożone typy BiData i HufData. Są to klasy dla których odpowiednio przeciążone zostały wybrane operatory (pliki data_bi.h i data_huf.h wydruki R.4 i R.5). R.4. class BiData{ int i; // pole danych: klucz 1 char str[16]; // pole danych: klucz 2 BiData(); // konstruktor BiData(int i,char *str); // konstruktor void Set(int i,char *str); int GetI(); char *GetStr(); bool operator< (BiData Dane); // przeciazony operator porownania bool operator> (BiData Dane); // przeciazony operator porownania bool operator<=(bidata Dane); // przeciazony operator porownania bool operator>=(bidata Dane); // przeciazony operator porownania BiData operator =(BiData Dane); // przeciazony operator przypisania int operator =(int Dane); // przeciazony operator przypisania char* operator =(char *Dane); // przeciazony operator przypisania data_bi.h W ćwiczeniu dotyczącym badania algorytmów sortowania złożony typ danych BiData wykorzystywany był do analizy stabilności algorytmów. Obecnie jego implementacja jest pozostawiona inwencji Studentów. Typ HufData jest przeznaczony do pracy z drzewami Huffmana. R.5. class HufData{ friend class KlasaDrzewaHUF; unsigned long Count; // liczba wystapien znaku o danym kodzie unsigned char Byte; // kod znaku HufData(); HufData(unsigned char i); void Set(unsigned long Count); void Set(unsigned char Byte); void Set(unsigned long Count, unsigned char Byte); unsigned long GetCount(); unsigned char GetByte(); bool operator< (HufData Dane); // przeciazony operator porownania < bool operator> (HufData Dane); // przeciazony operator porownania > bool operator<=(hufdata Dane); // przeciazony operator porownania <= bool operator>=(hufdata Dane); // przeciazony operator porownania >= bool operator!=(hufdata Dane); // przeciazony operator porownania!= bool operator==(hufdata Dane); // przeciazony operator porownania == HufData operator =(HufData Dane); // przeciazony operator przypisania = HufData operator++(); // przeciazony operator postinkrementacji ++ HufData operator++(int); // przeciazony operator preinkrementacji ++ HufData operator--(); // przeciazony operator postinkrementacji ++ HufData operator--(int); // przeciazony operator preinkrementacji ++ int operator =(int Dane); // przeciazony operator przypisania char* operator =(char *Dane); // przeciazony operator przypisania = data_huf.h Dla wybranego typu danych do analizy określonego parametrem OBJ szablonu klas AISD lub Drzewa niezbędne jest zdefiniowanie klasy pochodnej, z własnymi wersjami metod wirtualnych WypiszStanNaEkran, ZapiszStanDoPliku, WczytajDaneZPliku i BadanieAlgorytmów. W programie wykorzystywanym w czasie laboratorium do stworzenia klasy KlasaDrzewaINT wykorzystano podstawowy typ danych int (plik drzewa_int.h wydruk R.6). Klasa ta organizuje dane w strukturę drzewa. Same dane do sortowania mają postać tablicy 3/7
4 rekordów typu int, wskazywanej przez Dane (prywatny element klasy szablonowej Drzewa dziedziczony z klasy AISD). R.6. class KlasaDrzewaINT:public Drzewa<int>{ int *Visit(int); KlasaDrzewaINT(int LiczZbior):Drzewa<int>(LiczZbior){ ~KlasaDrzewaINT(){ void ZapiszStanDoPliku(char*); void WczytajDaneZPliku(char*); void WypiszStanNaEkran(bool); void WypiszDrzewoNaEkran(bool); void ZapiszDrzewoDoPliku(char*); void BadanieAlgorytmow(); //f. wirtualna - konieczna definicja drzewa_int.h W trakcie ćwiczenia badane będą również algorytmy analizy składniowej wyrażeń. Algorytmy tego typu są stosowane m.in. w kompilatorach programów, w których wykorzystywane są do konwersji zapisu kodu programu z poziomu kodu języka wysokiego poziomu na kod maszynowy. Z procesem tym bezpośrednio związane jest pojęcie notacji wyrażeń. Wyrażenia te rozumiane jako część kodu zapisanego w języku wysokiego poziomu mogą być zapisane w postaci infiksowej, postfixowej i prefiksowej. Dla zilustrowania zasady analizy zapisów notacji w ramach ćwiczenia analizowane będą wyrażenia algebraiczne. Zapis tego samego wyrażenia w różnych notacjach przestawia poniższa tabela. infix (5*(((9+8)*(4*6))+7)) postfix **7+* prefix *+7** Postać infiksowa jest zdecydowanie najbardziej rozpowszechniona. W notacji postfixowej operator znajduje się zawsze bezpośrednio po argumentach których dotyczy. Notacja ta nie wykorzystuje nawiasów. Przykładowe wyrażenie przedstawione w powyższej tabeli można uzyskać z postaci infiksowej na drodze następujących przekształceń: (5*(((9+8)*(4*6))+7)) 5(((9+8)*(4*6))+7)* 5((9+8)*(4*6))7+* 5(9+8)(4*6)*7+* **7+* Postać prefixowa to notacja odwrotna do postfixowej. Jest tworzona w sposób analogiczny do przekształcenia infix postfix. W celach treningowych w ramach przygotowania do ćwiczenia zalecane jest samodzielne wykonanie przekształceń infix postfix, infix prefix. Przykładowy analizator składniowy zaimplementowany w ćwiczeniu działa sekwencyjnie. Najpierw jest przeprowadzana zamiana postaci wyrażenia infixowej na postać postfixową. Następnie dane zostają zapisane w drzewiastej strukturze danych, po czym obliczana jest poszukiwana wartość analizowanego wyrażenia. Przykładową implementację algorytmu analizy składniowej opisuje metoda LiczPreFix klasy Fix pochodnej klasy szablonowej AISD (plik drzewa_fix.h wydruk R.7). Metoda LiczPreFix oblicza wartość wyrażenia podanego jako łańcuch znaków wskazywany przez Dane. Jest to metoda rekurencyjna, która wartość liczbową wyrażenia oblicza do momentu osiągnięcia końca tego wyrażenia. Dla zapewnienia składniowej poprawności opisu klasy Fix, zdefiniowano niezbędne ciała metod wirtualnych klasy bazowej AISD. class Fix:public AISD<char>{ Fix(int LiczZbior):AISD<char>(LiczZbior){ ~Fix(){ void ZapiszStanDoPliku(char*); void WczytajDaneZPliku(char*); void WypiszStanNaEkran(bool); void InFix2PostFix(); double LiczPreFix(); void BadanieAlgorytmow(); R.7. drzewa_fix.h 3. Przebieg ćwiczenia Funkcja main (plik main.cpp,r.8) zawiera następujące parametry zadeklarowane w programie jako zmienne globalne: Ekran zarządza wypisywaniem danych na ekran), Srand ustawia warunki początkowe dla generatora liczb pseudolosowych (w trakcie ćwiczenia każdy student przypisuje tej zmiennej swój numer albumu), Licznosc ustawia liczność zbioru do sortowania. int main(){ Ekran=true; Srand=10; Licznosc=25; try{ //tu wpisac numer indeksu 4/7
5 InitINT(); DrzewaINT->BadanieAlgorytmow(); InitHUF(); DrzewaHUF->BadanieAlgorytmow(); InitFIX(); DrzewaFIX->BadanieAlgorytmow(); // InitBI(); DrzewaBI->BadanieAlgorytmow(); } catch (Except e){ Error(e); } getchar(); CleanUp(); return 1; R.8. main.h W takcie ćwiczenia dla wskazanych przez prowadzącego algorytmów w miarę potrzeby należy przystosować kod programu do zaplanowanych pomiarów i symulacji. Przykładowe wywołania poszczególnych, metod badanych w trakcie ćwiczenia, zostały umieszczone wewnątrz metod wirtualnych BadanieAlgorytmów definiowanych dla każdego typu danych (OBJ) z osobna. Zależnie od wskazań prowadzącego należy: 1. przeanalizować sposób implementacji nierekurencyjnych metod przechodzenia przez drzewo w porządku pre-order. 2. zaproponować, zaimplementować i przetestować własne wersje nierekurencyjnych metod przechodzenia przez drzewo w porządku in-order. 3. zaproponować, zaimplementować i przetestować własne wersje nierekurencyjnych metod przechodzenia przez drzewo w porządku post-order. 4. przeprowadzić analizę zapotrzebowania na zasoby dla poszczególnych metod przechodzenia przez drzewo. (przykładowych i samodzielnie zaimplementowanych). 5. przeprowadzić analizę parametrów metody turniejowego poszukiwania największego elementu (algorytm, zajętość zasobów, złożoność czasowa). 6. przeprowadzić analizę wydajności działania metod sortowania przez kopcowanie. Wskazać ograniczenia i potencjalne możliwości doskonalenia przykładowych implementacji, 7. rozszerzyć funkcjonalność kodu o możliwość pracy algorytmów analizowanych podczas ćwiczeń na złożonych typach danych. Wykorzystać zaproponowany szkielet klasy BiData. Przetestować zaproponowane implementacje. 8. przeprowadzić analizę algorytmu sortowania wykorzystującego kopiec. Przetestować dla danych złożonych typu BiData. 9. przeprowadzić analizę działania metod służących budowie drzewa Huffmana. Wskazać ograniczenia przykładowej implementacji i potencjalne metody ulepszenia kodu. Na podstawie wpisów w strukturze ZA (klasa Parametry) określić aktualną złożoność poszczególnych algorytmów. Zweryfikować poprawność wpisów w strukturze ZA. 10. Określić przewidywany stopień kompresji możliwy do uzyskania przy wykorzystaniu drzewa Huffmana tworzonego w klasie DrzewaHuff dla podanego fragmentu tekstu Shakesperare a 11. przeprowadzić analizę działania i wydajności działania algorytmów analizy składniowej (klasa Fix) i dopisać opcję konwersji postaci infixowej na postfixową (implementacja metody InFix2PostFix klasy Fix) 12. rozszerzyć funkcjonalność metody LiczPreFix o działania - i /. 13. zaimplementować metody HuffmanPack i HuffmanUnpack i przetestować ich działania na podanym fragmencie tekstu Shakespeare a. 4. Analiza wyników, wnioski, sprawozdanie Na ocenę z ćwiczenia bezpośrednio wpływają: zawartość notatnika z ćwiczenia (w wersji papierowej) Na początku ćwiczenia należy wydrukować umieszczony na końcu niniejszej instrukcji Notatnik. Będzie on stanowił bieżący zapis przebiegu ćwiczenia i wyników pracy. zawartość oddanego w terminie sprawozdania (wyłącznie w postaci elektronicznej w formacie pdf). Sprawozdanie powinno zawierać następujące elementy: cel ćwiczenia (własnymi słowami), opis modyfikacji wprowadzonych do programu przykładowego wraz z analizą celowości tych zmian, stosowne wykresy (np. wykresy czasów wykonania programu w zależności od wersji badanego algorytmu w funkcji długości sortowanych danych, wykresy dynamiczne sortowania, czyli postęp posortowania danych w zależności od liczby wykonanych kroków algorytmu sortującego ) podsumowanie ćwiczenia czyli wnioski: konkretne, na temat, samodzielne, twórcze. Na końcową ocenę za ćwiczenie składają się sposób wykonania ćwiczenia, samodzielność i pomysłowość w jego wykonaniu, merytoryczna zawartość i forma i terminowość nadesłania sprawozdania. 5/7
6 Sprawozdanie powinno zostać nadesłane pocztą elektroniczną, w terminie podanym przez prowadzącego zajęcia (zazwyczaj 7 dni). Pod rygorem nie sprawdzania sprawozdania dodatkowo niezbędne jest wypełnienie przez studentów następujących wymogów formalnych: jedyny przyjmowany format sprawozdania to PDF, nazwa pliku zawierającego sprawozdanie musi spełniać wymogi wzorca AISDE_3_Nazwisko_Imie.pdf. temat maila ze sprawozdaniem musi pasować do wzorca: AISDE Nazwisko_Imie, sprawozdania oddawane przez studentów muszą spełniać wymogi określone przez wykładowcę na początku semestru. Uwagi W przypadku wykrycia nieprawidłowości w działaniu któregoś z algorytmów szczególnie premiowane będzie samodzielne rozwiązanie zauważonego problemu. Jednocześnie brak reakcji na niepoprawne wyniki w protokole będzie punktowany ujemnie 5. Literatura 1. R. Sedgevick Algorytmy w C++, Wydawnictwo RM, 1999, 2. J. Grębosz Symfonia C++ Wydawnictwo Oficyna Kallimach J. Grębosz Pasja C++ Wydawnictwo Oficyna Kallimach 1997 Opracowanie dr inż. Grzegorz Janczyk janczyk@imio.pw.edu.pl Weryfikacja dr inż. Adam Wojtasik aw@imio.pw.edu.pl 6/7
7 AISDE LAB 3 Imię i nazwisko, Grupa dziekaoska NOTATNIK Nr Indeksu Data wykonania ćwiczenia Data oddania protokołu Punkty do wykonania Analizowany algorytm Parametry Uwagi / Zauważone błędy NOTATNIK NALEŻY ODDAĆ PROWADZĄCEMU ZAJĘCIA W CHWILI ZAKOŃCZENIA ĆWICZENIA
Badanie złożoności obliczeniowej algorytmów na przykładzie sortowania
Laboratorium 2 Badanie złożoności obliczeniowej algorytmów na przykładzie sortowania Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z pojęciem złożoności obliczeniowej na przy kładzie wybranych
Zastosowania drzew binarnych
Laboratorium 3 Zastosowania drzew binarnych Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z wybranymi algorytmami operującymi na strukturach drzewiastych dla różnych typów danych, złożonością
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;
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
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
Badanie złożoności obliczeniowej algorytmów na przykładzie sortowania
Laboratorium 2 Badanie złożoności obliczeniowej algorytmów na przykładzie sortowania Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z pojęciem złożoności obliczeniowej na przykładzie wybranych
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
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
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
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
Język C++ Programowanie obiektowe
Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie
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
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
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
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
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
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
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
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
Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski
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
Abstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
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
Programowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class
Szablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Wykł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
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
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
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ą
POLITECHNIKA POZNAŃSKA. Programowanie systemów informatycznych LAB 30h
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych Programowanie systemów informatycznych LAB 30h PIOTR.OWCZAREK@PUT.POZNAN.PL Dane kontaktowe osoby prowadzącej zajęcia mgr inż. Piotr Owczarek
Struktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
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
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
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
Odwrotna Notacja Polska
Odwrotna Notacja Polska Odwrotna Notacja Polska w skrócie ONP) jest sposobem zapisu wyrażeń arytmetycznych. Znak wykonywanej operacji umieszczany jest po operandach, argumentach tzw. zapis postfiksowy).
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ
w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
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
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
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
Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY
Różne właściwości Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi 1. Napisz wskaźnik do funkcji fun tak zdeklarowanej: T* fun( int, double const& ) const; definicja wskaźnika musi być precyzyjna, inaczej
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
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Programowanie, 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
Pola i metody statyczne. Klasy zawierające pola i metody statyczne
Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr
Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 8 Wskaźniki 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania w C++ Wskaźniki 2 Podstawy Pojęcie wskaźnika Wskaźnik na zmienną danego
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
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
Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 12 Struktury, unie, pola bitowe 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Struktury 2 Struktury Struktury to złożone typy danych
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
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
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
Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Informatyka Rodzaj przedmiotu: obowiązkowy w ramach treści kierunkowych, moduł kierunkowy ogólny Rodzaj zajęć: wykład, laboratorium I KARTA PRZEDMIOTU CEL PRZEDMIOTU METODY
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
> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to
Algorytmy 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
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++...
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
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
Podstawy 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
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne
PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne Elementy składowe sylabusu Nazwa jednostki prowadzącej kierunek Nazwa kierunku studiów Poziom kształcenia Profil studiów Forma studiów
Uniwersytet 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ą
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przeciążanie operatorów Funkcje zaprzyjaźnione Na
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
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];
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,
Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
Multimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Klasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Typy 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
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
C++ - [4-7] Polimorfizm
Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)
Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Chemia, poziom pierwszy Sylabus modułu: Laboratorium programowania (0310-CH-S1-019) Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania
Programowanie 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
Dynamiczny 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
Języki programowania - podstawy
Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania
Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
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
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16
M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16
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
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Zad. 5: Układ równań liniowych liczb zespolonych
Zad. 5: Układ równań liniowych liczb zespolonych 1 Cel ćwiczenia Wykształcenie zdolności abstrahowania operacji arytmetycznych od konkretnych typów. Unaocznienie problemów związanych z programowaniem uogólnionym
Programowanie 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.
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza