Programowanie Obiektowe – Wykład 5

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Standardowa biblioteka języka C++
Programowanie obiektowe
Zaawansowane techniki algorytmiczne
Wzorce.
Dynamiczne struktury danych Listy, Kolejki, Stosy
Prowadzący: mgr inż. Elżbieta Majka
Generics w .NET 2.0 Łukasz Rzeszot.
Wprowadzenie do języka skryptowego PHP – cz. 2
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
Elementarne struktury danych Piotr Prokopowicz
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Repetitio est mater studiorum
Model danych oparty na listach
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Dynamiczne struktury danych 1
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Semafory według normy POSIX
Podstawy C# Grupa .NET PO.
Podstawy programowania
Podstawy programowania II
Tablice, listy, obiekty w C# i nie tylko!
Podstawy informatyki 2013/2014
Podstawy programowania
Podstawy programowania II
Operacje na strukturach listowych
Podstawy informatyki Struktury, operatory, wyjątki
TABLICE C++.
Listy, stosy i kolejki..
Andrzej Repak Nr albumu
Inicjalizacja i sprzątanie
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Wykład 10 typ zbiorowy rekurencja.
Dynamiczne struktury danych
Projektowanie stron WWW
Algorytmy i Struktury Danych
Znaki specjalne Co i jak + brak przykładów.  Aby wstawić symbol lub znak specjalny należy na karcie Wstawianie w grupie Symbole kliknąć na przycisk Symbol.
Programowanie zaawansowane Kolekcje i typy generyczne
Zmienne i typy danych w C#
Algorytmy i Struktury Danych Struktury Danych
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
Zestaw pytań nr. 3 Typy generyczne Wyjątki OPRACOWALI: JAKUB GRYCZEWSKIKINGA ROSA DANIEL KAPTEJNYWOJCIECH ŁĘCZYCKI
Mapa STL – C++. Problem polega na tym, że najczęściej chcielibyśmy przechowywać w zbiorze elementy jakiegoś bardziej złożonego typu, których on nie będzie.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 8
Programowanie Obiektowe – Wykład 6
Przypomnienie wiadomości – kilka zadań
Typy wyliczeniowe, kolekcje
Listy.
(według:
Programowanie obiektowe II
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Wskaźniki Elżbieta Labocha.
Styczeń 2010 PONIEDZIAŁEK WTOREK ŚRODA CZWARTEK PIĄTEK SOBOTA
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
PGO Przeciążanie metod i konstruktorów
PGO Porównywanie obiektów
Zapis prezentacji:

Programowanie Obiektowe – Wykład 5 dr Piotr Jastrzębski Wydział Matematyki i Informatyki http://wmii.uwm.edu.pl/~piojas/ piojas@matman.umw.edu.pl

Tryb wyliczeniowy - enum Daje możliwość przypisania zestawu wartości, które mogą być przypisane do zmiennej. Przykład – dni tygodnia. Gdybyśmy przechowywali to w typie string istnieje ryzyko wprowadzenie innej wartości. Nie ma co tworzyć „na siłę”, np. by przechowywać numer dni w tygodniu/miesiącu.

Tryb wyliczeniowy - enum Deklaracja enum DniTygodnia { Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela }; Domyślnie elementy typu wyliczeniowego są typu int, ale w razie potrzeby możemy zawsze zmienić ten typ na inny całkowitoliczbowy (byte, sbyte, short, ushort, int, uint, long, ulong). enum Miesiące : byte { Sty, Lut, Mar, Kwi, Maj, Cze, Lip, Sie, Wrz, Paź, Lis, Gru };

Odwołanie do wyliczenia Jeśli chcemy otrzymać nazwę, to musimy poprzedzić ją nazwą typu wyliczeniowego. DniTygodnia.Poniedziałek; Np. deklaracja zmiennej urodziny typu DniTygodnia wygląda następująco: DniTygodnia urodziny = DniTygodnia.Poniedziałek; Jeśli chcemy otrzymać numer elementu, musimy go zrzutować na typ całkowitoliczbowy (domyślnie int), numeracja domyślnie zaczyna się od zera. int numerDnia = (int)DniTygodnia.Czwartek;

Możemy ręcznie nadać wartość poszczególnym składnikom. Np. enum DniTygodnia { Poniedziałek=1, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela }; int numerDnia = (int)DniTygodnia.Czwartek; //zmienna numerDnia będzie miała wartość 4

Enum pozwala na przypisanie tej samej wartości do tej samej dosłownej wartości. Np.. enum DniTygodnia { Poniedziałek, Wtorek=0, Środa, Czwartek, Piątek, Sobota, Niedziela }; DniTygodnia urodziny = DniTygodnia.Wtorek;

Kolekcje niegeneryczne (mogą przechowywać różne typy) generyczne (przechowują tylko zadeklarowany typ) Zalety typów generycznych brak konieczności pamiętania o rzutowaniu mniejsze ryzyko błędu czy wyjątku wywołanie niektórych metod nie powoduje ich opakowanie w typ object mniejsza ilość kodu, lepsze czytelność mniejsza ilość zajmowanej pamięci

Stos (ang. Stack) Przechowuje dane zgodnie z zasadą LIFO (ang. Last-In, First-Out), co oznacza: ostatni przyszedł, pierwszy wyszedł. Przykład z życia: Stos talerzy (aby wyciągnąć coś ze środka, musimy wyciągnąć te z góry) Meble ładowane do naczepy ciężarówki Osoby wsiadające do samolotu i wysiadające z niego. Piramida czirliderek (osoba na samej górze schodzi pierwsza)

Dwa typy niegeneryczny (Stack) generyczny (Stack<T>) przestrzeń nazw: System.Collections Stack stos = new Stack(); generyczny (Stack<T>) przestrzeń nazw: System.Collections.Generic Stack<int> stos = new Stack<int>();

Metody i właściwości Push() – dodanie elementu Pop() – usuwa i zwraca ostatni element na stosie Peek() zwraca ostatni element, ale nie usuwa go ze stosu Contains() – sprawdzenie czy element jest na stosie Count – zwraca liczbę elementów na stosie

Konstruktory Stack() lub Stack<T>() – pusty stos o domyślnej pojemności Stack(ICollection) lub Stack<T>(ICollection) – stos wypełniony danymi z przekazywanej kolekcji Stack(Int32) lub Stack<T>(Int32) – stos pusty o określonej pojemności

Kolejki (ang. Queue) Przechowuje dane zgodnie z zasadą FIFO (ang. First-In, First-Out), co oznacza: pierwszy przyszedł, pierwszy wyszedł. Przykład z życia: samochody poruszające się po jednokierunkowej ulicy, ludzie czekający w kolejce, klienci czekający na wsparcie techniczne.

Dwa typy niegeneryczny (Queue) generyczny (Queue<T>) przestrzeń nazw: System.Collections Queue kolejka = new Queue(); generyczny (Queue<T>) przestrzeń nazw: System.Collections.Generic Queue<int> stos = new Queue<int>();

Metody i właściwości Enqueue() – dodanie elementu na końcu kolejki Dequeue() – usuwa i zwraca pierwszy element na kolejce Peek() zwraca pierwszy element, ale nie usuwa go z kolejki Contains() – sprawdzenie czy element jest w kolejce Count – zwraca liczbę elementów w kolejce

Konstruktory Queue() lub Queue<T>() – pusta kolejka o domyślnej pojemności Queue(ICollection) lub Queue<T>(ICollection) – kolejka wypełniona danymi z przekazywanej kolekcji Queue(Int32) lub Queue<T>(Int32) – pusta kolejka o określonej pojemności

Lista tablic (ang. ArrayList) Niegeneryczna kolekcja na przechowywanie tablic obiektów o dynamicznym rozmiarze. przestrzeń nazw: System.Collections

Metody i właściwości Add() – dodanie elementu na koniec AddRange() – dodanie kolekcji na koniec Insert() – wstawia element pod określonym indeksem InsertRange() – dodanie kolekcji pod określonym indeksem Remove() – usuwa pierwszej wystąpienie elementu RemoveAt() – usuwa element pod określonym indeksem RemoveRange() – usuwa zakres Sort() – sortowanie (uwaga na typy!) IndexOf() – pobranie numeru indeksu Count – zwraca liczbę elementów

Konstruktory ArrayList() – pusta lista tablic o domyślnej pojemności ArrayList(Icollection) – lista tablic wypełniona danymi z przekazywanej kolekcji ArrayList(Int32) – pusta lista tablic o określonej pojemności

Lista (ang. List<T>) Generyczna kolekcja na przechowywanie tablic obiektów o dynamicznym rozmiarze. przestrzeń nazw: System.Collections.Generic

Metody i właściwości Add() – dodanie elementu na koniec AddRange() – dodanie kolekcji na koniec Insert() – wstawia element pod określonym indeksem InsertRange() – dodanie kolekcji pod określonym indeksem Remove() – usuwa pierwszej wystąpienie elementu RemoveAt() – usuwa element pod określonym indeksem RemoveRange() – usuwa zakres Sort() – sortowanie (uwaga na typ!) IndexOf() – pobranie numeru indeksu Count – zwraca liczbę elementów

Konstruktory List<T>() – pusta lista o domyślnej pojemności List<T>(ICollection) – lista wypełniona danymi z przekazywanej kolekcji List<T>(Int32) – pusta lista tablic o określonej pojemności

Słownik (ang. Dictionary) Słownik – zbiór wyrazów ułożonych i opracowanych według pewnej zasady, zwykle objaśnianych pod względem znaczeniowym. Przykłady: trudne słowo – znaczenie słowo w języku polskim – słowo w języku angielskim Dictionary<string, string> słownik = new Dictionary<string, string>();

Metody i właściwości Count – zwraca liczę par wartość-klucz Keys – zwraca liczbę klucz Values – zwraca liczbę wartości Add(TKey,TValue) – dodaje pozycję ContainsKey(TKey) – sprawdza czy słownik zawiera klucz ContainsKey(TValue) – sprawdza czy słownik zawiera wartość TryGetValue(TKey, TValue) – zwraca wartość dla podanego klucza (uwaga na wyjątki)

Posortowany Słownik (and. SortedDictionary) Zachowuje się podobnie jak słownik, z tą różnicą, że kolejne elementy dodawane do słownika są sortowane wg klucza. SortedDictionary<string, string> słownik = new SortedDictionary<string, string>();

Lista posortowana (ang. SortedList<T>) Zachowuje się podobnie jak posortowany słownik. SortedList<int,int> osoby = new SortedList<int,int>(); różnice: SortedList używa mniej pamięci SortedDictionary jest szybsze przy operacji wstawiania i usuwania danych jeśli elementy są już posortowane, to SortedList jest szybsze

Lista połączona (ang. LinkedList<T>) klasa generyczna lista powiązana dwustronnie łańcuch węzłów, każdy jest powiązany z następnym, poprzednim i z samym sobą zaleta: można wstawić element w dowolny miejscu listy wada: brak bezpośredniego mechanizmu sortowania