1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje, ) Typ złożony struktura tablica struktur 3 4 Struktura (rekord) Kolekcja elementów różnych typów. Poszczególne elementy struktury pola. Deklaracja struktury w bloku innej struktury, w bloku klasy, wewnątrz przestrzeni nazw poza jakimkolwiek blokiem. Struktury nie wolno definiować wewnątrz metody! Struktura w języku C# Definicja typu strukturalnego 5 Użycie typu strukturalnego Tablice struktur Struktura jako element tablicy struct Osoba public string Imie, Nazwisko; public int RokUrodzenia; 1
6 1 static void Main(string[] args) Osoba[] lstaosob = new Osoba[15]; lstaosob[0].imie = "Jan"; lstaosob[0].nazwisko = "Kowal"; lstaosob[0].rokurodzenia = 1980; Typ złożony jako pole struktury Pole struktury: może być typem złożonym tablicą lub strukturą 7 struct Uczen public string Imie; public string Nazwisko; public byte [] Oceny; struct Dziennik public Uczen [] Uczniowie; Metody funkcje struktury Służą do definiowania operacji specyficznych dla przechowywanych danych struct Koło public string nazwa; public double promień; public double Pole() return Math.PI * promień * promień; public double Obwód() return * Math.PI * promień; 8 Metody struktury static void Main(string[] args)
Koło małekoło; małekoło.promień = 0.5; małekoło.nazwa = "tylko pół centymetra"; Console.WriteLine("koło: 0: pole= 1:F a obwód wynosi: :F", małekoło.nazwa, małekoło.pole(), małekoło.obwód()); 9 10 11 Kolekcje Kolekcje spełniają podobne zadanie do tablic tzn. przechowują zbiór elementów Różnice: dają większą swobodę kosztem wydajności; operacje na tablicach są szybsze, ale kodowanie operacji moje być łatwiejsza za pomocą kolekcji nie trzeba ustalać rozmiaru listy (tablica -tak) ArrayList Podstawowym rodzajem kolekcji jest ArrayList. można dodawać elementy różnego typu!! Element dodawany jest za pomocą metody Add(element). Dostępne wbudowane metody, np.: Sort() dokonuje sortowania zawartości listy, Clear() usuwa wszystkie elementy, Clone, Contains, Insert, Remove, Użycie wymaga System.Collections. Operacje //deklaracja kolekcji typu ArrayList ArrayList lista = new ArrayList(); //dodanie elementów do listy lista.add(); lista.add(.5); lista.add("tekst"); lista.add('a'); //wyświetlenie elementów listy; Count określa liczbę elementów listy for (int i = 0; i < lista.count; i++) 3
1 for (int i = 0; i < lista.count; i++) Console.WriteLine(lista[i]); Operacje na elementach listy Lista może zawierać elementy różnego typu Każdy element listy jest typu object Przykład: lista.add(); lista.add(.5); lista.add("tekst"); lista.add('a'); Console.WriteLine((int)lista[0] + (double)lista[1]); Programista odpowiada za operację rzutowania! 13 14 15 Pętla foreach foreach(typ element in kolekcja) //ciało pętli Przykładowo przeglądanie listy z ostatniego programu za pomocą pętli foreach: foreach (var element in lista) Console.WriteLine(element); var typ określony na podstawie typu bazowego lista Queue - kolejka FIFO Pierwszy przychodzi - pierwszy wychodzi (first in - first out) Metody Enqueue - dodanie elementu na koniec Dequeue - pobranie elementu początkowego inne - Clear, Peek, Count, Clear, Contains Implementacja w.net Framework System.Collections.Queue Implementacja Queue - przykład string[] lines = "First", "Second", "Third" ; System.Collections.Queue kolejkafifo = new System.Collections.Queue(); 4
//dodanie elementu kolejkafifo.enqueue(lines[]); //Third kolejkafifo.enqueue(lines[1]); //Second... kolejkafifo.enqueue(lines[0]); //First //pobranie elementu, odczyt elementu Console.Write("0, ",kolejkafifo.dequeue()); //Third.. Console.Write("0, ", kolejkafifo.peek()); //Second... Console.Write("0, ", kolejkafifo.peek()); //Second... bool jest = kolejkafifo.contains("first"); //true kolejkafifo.clear(); 16 17 Stack stos, kolejka LIFO Ostatni przychodzi - pierwszy wychodzi (last in - first out) Metody Push - umieszcza element na stosie Pop - zdejmuje element ze stosu inne - Clear, Peek, Count, Clear, Contains Implementacja w.net Framework System.Collections.Stack Implementacja: Stack - przykład string[] lines = "First", "Second", "Third" ; System.Collections.Stack stoslifo = new System.Collections.Stack(); //na stos stoslifo.push(lines[]); //Third stoslifo.push(lines[1]); //Second stoslifo.push(lines[0]); //First wierzchołek! //ze stosu od wierzchołka: pobranie, odczyt Console.Write("0, ",stoslifo.pop()); //First Console.Write("0, ", stoslifo.peek()); //Second Console.Write("0, ", stoslifo.peek()); //Second bool jest = stoslifo.contains("first"); //false!! stoslifo.clear(); 5