Wykład 4. Klasa List Kolejki Stosy Słowniki



Podobne dokumenty
Narzędzia 2. dr inż. Tadeusz Jeleniewski

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Programowanie w języku Java. Kolekcje

Kurs programowania. Wykład 9. Wojciech Macyna

Tablice Napisy Kolekcje

Wykład 3 Składnia języka C# (cz. 2)

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Podstawy programowania. Podstawy C# Tablice

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Lista, Stos, Kolejka, Tablica Asocjacyjna

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 4: Klasy i Metody

Java Collections Framework

Programowanie i struktury danych

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Kolekcje - pakiet Java Collections Framework

Metody Metody, parametry, zwracanie wartości


Programowanie Komputerów

Programowanie Obiektowe (Java)

Tworzenie aplikacji w języku Java

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Struktury danych (I): kolejka, stos itp.

Podstawy otwartych języków programowania Przechowywanie danych

Stos LIFO Last In First Out

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie obiektowe

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Listy, krotki, słowniki, funkcje

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Dawid Gierszewski Adam Hanasko

Struktury danych: stos, kolejka, lista, drzewo

Podstawy obiektowości

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Struktury Danych i Złożoność Obliczeniowa

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

Programowanie obiektowe

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Algorytmy i Struktury Danych. Anna Paszyńska

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Kolekcje - pakiet Java Collections Framework

Kurs programowania - kolekcje

Wykład 5 Okna MDI i SDI, dziedziczenie

Programowanie obiektowe i zdarzeniowe

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

Technologie i usługi internetowe cz. 2

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Algorytmy przeszukiwania

1 Atrybuty i metody klasowe

Podstawy programowania obiektowego

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

PARADYGMATY PROGRAMOWANIA Wykład 4

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Marcin Matusiak i Łukasz Stasiak

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie w języku Java. Bazy danych SQLite w Javie

PHP: bloki kodu, tablice, obiekty i formularze

Biblioteka standardowa C++

Przedmowa Rozdział 1. Wprowadzenie... 13

Dynamiczne struktury danych

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie obiektowe

Programowanie obiektowe

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Plan wykładu. Tworzenie programów dla platformy.net. Predefiniowane typy C# Pierwszy program. Typy wartości i typy referencyjne

Język C++ wykład VIII

Wykład 8: Obsługa Wyjątków

1 Stos: Stack i Stack<T>

Programowanie i projektowanie obiektowe

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Java SE Laboratorium nr 7. Temat: Kolekcje

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Kolekcje. Na podstawie:

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Db4o obiektowa baza danych wersja.net

Podstawy programowania obiektowego

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 6 Dziedziczenie cd., pliki

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Transkrypt:

Wykład 4 Klasa List Kolejki Stosy Słowniki

Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien zarezerwować na pomieszczenie wszystkich przetwarzanych danych. Rozwiązaniem tego problemu jest w C# klasa List - tablica, która dynamicznie zmienia swoją długość. Klasa ta udostępnia szereg wygodnych w użyciu metod i właściwości zebrano je w tabeli 4.1.

Tabela 4.1. Metody i właściwości klasy List Metoda lub właściwość Capacity Count Item() Add() AddRange() BinarySearch() Clear() Contains() CopyTo() Exists() Find() FindAll() GetEnumerator() GetRange() IndexOf() Insert() InsertRange() LastIndexOf() Remove() RemoveAt() RemoveRange() Reverse() Sort() ToArray() TrimToSize() Działanie Właściwość do pobierania i ustawiania liczby elementów, które może zawierać lista Zwraca liczbę aktualnie przechowywanych elementów Pobiera element o określonym indeksie lub przypisuje do niego wartość Metoda publiczna dodaje element do listy Publiczna metoda, która dodaje na koniec listy elementy z ICollection Wyszukuje binarnie określony element w posortowanej liście Usuwa z listy wszystkie elementy Określa czy dany element znajduje się na liście Kopiuje listę do jednowymiarowej tablicy Sprawdza czy element znajduje się na liście Zwraca pierwsze wystąpienie elementu na liście Zwraca wszystkie dane elementy występujące na liście Zwraca licznik, który umożliwia przechodzenie po elementach listy Kopiuje zakres elementów do nowej listy Zwraca indeks pierwszego wystąpienia danej wartości na liście Dodaje element do listy Dodaje zakres elementów kolekcji do listy Zwraca indeks ostatniego wystąpienia wartości na liście Usuwa z listy pierwsze wystąpienie określonego elementu z listy Usuwa element o podanym indeksie Usuwa zakres elementów Odwraca kolejność elementów listy Sortuje listę Kopiuje elementy listy do nowej tablicy Ustawia pojemność (właściwość Capacity) na aktualną liczbę elementów listy

Listing 4.1 using System; using System.Collections.Generic; using System.Text; namespace Przyklad_3_1 public class Pracownik private int pracid; private string nazwisko; public Pracownik(int pracid, string nazwisko) // Konstruktor this.pracid = pracid; this.nazwisko = nazwisko; public int PracID get return pracid; set pracid = value;

public string Nazwisko get return nazwisko; set nazwisko = value;

public class Program public static void wyswietllistę(list<pracownik> plist) for (int i = 0; i < plist.count; i++) Console.WriteLine(" 0: 1", plist[i].pracid.tostring(), plist[i].nazwisko.tostring()); static void Main() List<Pracownik> praclist = new List<Pracownik>(); for (int i = 0; i < 10; i++) praclist.add(new Pracownik((i + 1) * 100, "Abcde" + (char)(i+65))); wyswietllistę(praclist); praclist.add(new Pracownik(300 + 7, "Kościuszko")); Console.WriteLine("Po dodaniu jeszcze jednego elementu"); wyswietllistę(praclist); Console.Write("Aby kontunuować naciśnij dowolny klawisz... "); Console.ReadKey();

Kolejki Kolejka jest kolekcją typu FIFO (First-In, First-Out ) Metody i właściwości klasy Queue zebrano w tabeli 4.2. Tabela 4.2 Metoda lub właściwość Count Clear() Contains() CopyTo() Dequeue() Enqueue() GetEnumerator() Peek() ToArray() Działanie Właściwość publiczna, która zwraca liczbę elementów kolejki Usuwa z kolejki wszystkie obiekty Sprawdza, czy dany element znajduje się w kolejce Kopiuje elementy kolejki do istniejącej tablicy jednowymiarowej Usuwa i zwraca element znajdujący się na początku kolejki Dodaje obiekt na koniec kolejki Zwraca licznik kolejki Zwraca element znajdujący się na początku kolejki, ale go nie usuwa Kopiuje elementy do nowej tablicy

using System; using System.Collections.Generic; using System.Text; /// Przykład 4.1 - ilustracja działania kolejki namespace W_4_Kolejki public class Program static void Main() Queue<Int32> całkowite = new Queue<Int32>(); for (int i = 0; i < 5; i++) całkowite.enqueue(i * 3); Console.Write("Wartości elementów kolejki: \t"); PokażWartości(całkowite); Console.WriteLine("\n(Dequeue)\t0", całkowite.dequeue()); Console.Write("Wartości elementów kolejki: \t"); PokażWartości(całkowite); Console.WriteLine("\n(Dequeue)\t0", całkowite.dequeue()); Console.Write("Wartości elementów kolejki: \t"); PokażWartości(całkowite); Console.WriteLine("\n(Peek)\t0", całkowite.peek()); Console.WriteLine("\n(Enqueue)\t0", 125); całkowite.enqueue(125); PokażWartości(całkowite); Console.Write("Wartości elementów kolejki: \t"); PokażWartości(całkowite); Console.Write("Aby zakończyć naciśnij dowolny klawisz..."); Console.ReadKey();

/// <summary> /// Metoda PokażWartości używa intefejsu IEnumerable /// wyświetla wartości elementów kolejki /// </summary> public static void PokażWartości(IEnumerable<Int32> mojakolekcja) IEnumerator<Int32> mójindeksator = mojakolekcja.getenumerator(); while (mójindeksator.movenext()) Console.Write("0 ", mójindeksator.current); Console.WriteLine(); W powyższym przykładzie elementy kolejki udostępniono za pomocą interfejsu IEnumerable pełniącego rolę indeksatora. O interfejsach, sposobie ich definiowania i wykorzystywania będzie mowa nieco później.

Stosy Stos jest kolekcją typu LIFO (Last-In, First-Out ) Metody i właściwości klasy Stack zebrano w tabeli 4.3. Tabela 4.3. Metoda lub właściwość Count Clear() Clone() Contains() CopyTo() GetEnumerator() Peek() Pop() Push() ToArray() Działanie Właściwość publiczna, która zwraca liczbę elementów stosu Usuwa ze stosu wszystkie obiekty Tworzy kopię stosu Sprawdza, czy dany element znajduje się na stosie Kopiuje elementy stosu do istniejącej tablicy jednowymiarowej Zwraca licznik stosu Zwraca element znajdujący się na szczycie stosu, ale go nie usuwa Usuwa i zwraca obiekt ze szczytu stosu Wstawia obiekt na szczyt stosu Kopiuje elementy do nowej tablicy

using System; using System.Collections.Generic; using System.Text; namespace W_4_Stos public class Punkt3D private string nazwa; private double x; private double y; private double z; public Punkt3D(string nazwa) // konstruktor this.nazwa = nazwa; this.x = 0; this.y = 0; this.z = 0; public Punkt3D(string nazwa, double x, double y, double z) // konstruktor przeciążony this.nazwa = nazwa; this.x = x; this.y = y; this.z = z; // akcesory public string Nazwa get return nazwa; public double X get return x; public double Y get return y; public double Z get return z;

public class Program static void Main(string[] args) Stack<Punkt3D> Stos = new Stack<Punkt3D>(); Punkt3D p; // umieszczamy elementy na stosie Stos.Push(new Punkt3D("Słońce")); Stos.Push(new Punkt3D("Merkury", 1200, 3456, 781)); Stos.Push(new Punkt3D("Wenus", 7856, 13890, 2345.78)); for (int i = 0; i < 5; i++) Stos.Push(new Punkt3D("Gwiazda" + i, 100 * i, 200 * i, 300 * 1)); // wyświetlenie stosu Console.WriteLine("Elementy stosu: "); PokażWartości(Stos); // zdejmuje element ze stosu p = Stos.Pop(); Console.WriteLine("0: 1 2 3", p.nazwa, p.x, p.y, p.z); // wyświetlenie stosu Console.WriteLine("Elementy stosu: "); PokażWartości(Stos); // pobiera szczyt stosu, ale go nie wyświetla p = Stos.Peek(); Console.WriteLine("0: 1 2 3", p.nazwa, p.x, p.y, p.z); // wyświetlenie stosu Console.WriteLine("Elementy stosu: "); PokażWartości(Stos); Console.Write("Aby kontynuować naciśnij dowolny klawisz..."); Console.ReadKey();

public static void PokażWartości(IEnumerable<Punkt3D> mojakolekcja) IEnumerator<Punkt3D> indeks = mojakolekcja.getenumerator(); while (indeks.movenext()) Console.WriteLine("0: 1 2 3", indeks.current.nazwa, indeks.current.x, indeks.current.y, indeks.current.z);

Słowniki Słownik jest kolekcją, która zawiera wartości powiązane z kluczami. Klasa słownika udostępniana przez.net pozwala łączyć dowolny typ klucza (łańcuchy znaków, liczby całkowite, obiekty itp.) z wartościami dowolnego typu. Właściwości i metody klasy Dictionary pokazano w tabeli 4.4

Tabela 4.4 Metoda lub właściwość Count Clear() Item() Keys Values Add() ContainsKey() ContainsValue() GetEnumerator() Działanie Właściwość publiczna, która zwraca liczbę elementów słownika Usuwa ze słownika wszystkie obiekty Mechanizm indeksowania słownika Publiczna właściwość, która zwraca kolekcję zawierającą klucze słownika Publiczna właściwość, która zwraca kolekcję zawierającą wartości słownika Dodaje element o określonym kluczu i wartości Sprawdza, czy dany klucz znajduje się w słowniku Sprawdza, czy dana wartość znajduje się w słowniku Zwraca licznik słownika GetObjectData() Obsługuje intefejs Iserializable i zwraca dane potrzebne do serializacji słownika Remove() Usuwa element o podanym kluczu

using System; using System.Collections.Generic; using System.Text; namespace W_4_Slownik public class Program static void Main(string[] args) // Tworzy i inicjuje nowy słownik Dictionary<string, string> mójsłownik = new Dictionary<string, string>(); mójsłownik.add("tadeusz", "Kościuszko"); mójsłownik.add("adam", "Mickiewicz"); mójsłownik.add("anna", "Achmatowa"); mójsłownik.add("stanisław", "Barańczak"); // Dostęp do konkretnego elementu słownika Console.WriteLine("mójSłownik[\"Anna\"]: 0", mójsłownik["anna"]); Console.WriteLine("mójSłownik[\"Stanisław\"]: 0", mójsłownik["stanisław"]); Console.Write("Aby kontynuować naciśnij dowolny klawisz..."); Console.ReadKey();