Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

C# - struktury, výčtové typy, pole Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.

Podobné prezentace


Prezentace na téma: "C# - struktury, výčtové typy, pole Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí."— Transkript prezentace:

1 C# - struktury, výčtové typy, pole Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

2 Použití struktur  Patří mezi hodnotové typy  Jednoduché reprezentace objektů  Rychlá alokace v paměti  Není nutná správa spjatá s referenčními typy  Pro vytvoření použití klíčového slova „struct“

3 Jednoduchá struktura vytvoření public struct Point { public int x,y; // konstruktor struktury Point public Point(int _x, int _y) { //klíčové slovo this, //představuje aktuální instanci objektu Point this.x = _x; this.y = _y; } }

4 Funkce konstruktorů  Odlišná od funkce konstruktorů u objektů  Zavoláním konstruktoru bez parametrů pomocí klíčového slova „new“ znamená vytvoření instance struktury s vynulovanými datovými členy.  Pokud konstruktor nepoužijeme je nutné datové členy struktury před použitím inicializovat na konkrétní hodnoty  Při použití konstruktoru je nutné inicializovat všechny datové členy struktury, tak aby bylo po zavolání konstruktoru možné strukturu používat. V opačném případě nebude možné strukturu použít  Použití struktury bez konstruktoru a pomocí defaultního konstruktoru ukazuje následující příklad:

5 Point p1; //zavolani konstruktoru neni nutne, //ale datove cleny musí pred pouzitim byt inicializovany p1.x = 4; p1.y = 5; //souradnice x je 4 Console.WriteLine(p1.x); //volani implicitniho konstruktoru //zapricini vytvoreni nove instance //s vynulovanymi datovymi cleny p1 = new Point(); //souradnice x je nyni 0 Console.WriteLine(p1.x);

6 Výčtové typy  Použití při potřebě sady konstant, jejichž hodnot může nabývat námi definovaná proměnná  Např.: měsíce v roce, dny v týdnu, ….  Klíčové slovo „enum“ Př.: public enum MesiceVRoce { Leden, Unor, …….., …….., Prosinec }  Použití : MesiceVRoce myMesic= MesiceVRoce.Leden;

7 Číselné reprezentace výčtových typů  Každý výčtový typ je postaven na konkrétním číselném typu (defaultně int32)  První hodnota je defaultně nastavena na 0, a ostatní vždy na hodnotu o 1 vyšší  Při použití našeho příkladu je možná konstrukce:  int intMesic = (int)MesiceVRoce.Leden; //vystup bude 0 Console.WriteLine(intMesic);  Počáteční hodnoty je možné volit – přiřazením příslušné hodnoty každému z členů:  public enum MesiceVRoce { Leden = 1, Unor = 3, ………..,  Prosinec = 133 }  Explicitně je možné zvolit i jiný bázový typ než int32, např. byte Public enum MesiceVRoce : byte

8 Pole  Je určitý počet proměnných, které jsou indexovány  Pomocí indexů je možné se mezi jednotlivými proměnnými pohybovat  C# - indexuje prvky polí od 0  Prvky pole musí být stejného datového typu  V případě, že prvky pole jsou proměnné hodnotového typu, obsahuje pole přímo jejich hodnoty, v případě referenčních typů obsahuje reference na jednotlivé objekty (např. string)  Samotné pole je objekt referenčního typu, který je potomkem třídy System.Array

9 Vytvoření pole  Deklarace: Datový typ[] identifikátor; Př.: int[] myIntegerArray; Pole je pouze deklarováno a není inicializováno, pole námi vytvořené je referenčního typu s hodnotou NULL  Inicializace: Pro možnost použití nadeklarovaného pole je nutné použít operátor new() Př.: myIntegerArray = new int[velikost pole];  Deklarace a inicializace: Je možné provést zároveň Př.: int[] myIntegerArray = new int[4];

10 myIntegerArray[0] = 10; myIntegerArray[1] = 20; myIntegerArray [2] = 30; myIntegerArray [3] = 40; Index 0 10 Index 1 20 Index 2 30 Index 3 40

11 Inicializace polí – další možnosti  Inicializace zároveň s nastavením hodnot prvků pole  Není nutné uvádět rozsah pole  Př.: string myStrArrMonths = new string[] {„Leden",„Únor",…,„Prosinec"};  Lze takto zapsat i bez new string[]  Prvky takto inicializovaného pole lze libovolně v průběhu programu měnit

12 Délka pole  Pomocí vlastnosti Length (pouze pro čtení)  Praktické využití v cyklech při průchodu pole: public static void VypisObsahPole() { int[] myIntArray = {10,20,30,40}; for (int i = 0; i < myIntArray.Length; i++) Console.WriteLine((i+1) + ". prvek pole - " + myIntArray[i]); }

13 Vícerozměrná pole  Pole mohou nabývat více než jeden rozměr – matice, 3D prostor, ….  Příklad pole se čtyřmi řádky a třemi sloupci: int[,] intTwoDimensionalArray = new int[4,3];  K prvku, který se nachází na prvním řádku a druhém sloupci přistoupíme tímto způsobem: int prvek = intTwoDimensionalArray[0,1];  Analogicky je možné vytvořit troj a vícerozměrná pole nebo dokonce pole polí tzn. pole jehož prvky jsou opět pole

14 Úkoly (Struktury a výčtové typy) 1. Navrhněte strukturu osoba se čtyřmi proměnnými (jméno - string, příjmení - string, věk - integer, pozice - string), vytvořte konstruktor pro tuto strukturu. Defaultní hodnoty vypište na konzoli a poté vytvořte novou strukturu se stejným názvem s defaultním konstruktorem a vypište členy struktury, nakonec je naplňte hodnotami z konzole a znovu vypište. 2. Změňte příklad jedna tak aby pozice byla výčtovým typem a mohla nabývat pouze hodnot (dítě, student, pracující, důchodce)

15 Úkoly (pole)  Vytvořte jednorozměrné pole, obsahující uživatelem zadaných 10 celých čísel. Vypočítejte aritmetický průměr z těchto čísel a vypište všechna čísla dělitelná 3mi.  Pomocí dvourozměrného pole s 3x3 prvky vypočtěte determinant matice reprezentované tímto polem. Užijte jako pomoc Sarrusovo pravidlo.  Princip Sarrusova pravidla :

16 Další operace s poli, třída Systém.Array  Pole jsou odvozeny od třídy Systém.Array, mohou tedy využít metody, které tato třída nabízí  Zjištění rozměrů pole myArray.Rank  Převrácení prvků pole Array.Reverse(myArray)  Zjištění dolních a horních indexů polí: myArray.GetLowerBound(č. rozměru, který chceme zjistit) myArray.GetUpperBound(č. rozměru, který chceme zjistit)  Mělká kopie pole – klíčové slovo Clone  Vyhledání prvku pole – BinarySearch  Použití: //prvni parametr je pole ve kterem se ma hledat //a druhy hledany objekt //pokud objekt není nalezen fce vrátí 0 int Index = Array.BinarySearch(pole,objektProNalezeni);

17 17 Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Použité materiály: Kniha: Programujeme profesionálně, nakladatelství WROX, autor: Jay Glynn,… Seriály o programování v jazyce C# :


Stáhnout ppt "C# - struktury, výčtové typy, pole Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí."

Podobné prezentace


Reklamy Google