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

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

C# - struktury, výčtové typy, pole

Podobné prezentace


Prezentace na téma: "C# - struktury, výčtové typy, pole"— 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)
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. 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 Seriály o programování v jazyce C# : www.živě.cz www.java2s.com
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"

Podobné prezentace


Reklamy Google