Programujeme v jazyku C# - Diel 6. - Polia II

Michal Čižmár  /  22. 12. 2004, 00:00

Nadväzujeme na predchádzajúci článok o programovaní polí v jazyku C#. Ak by sme opisoval polia v jazyku C++, tak by úplne stačil jeden článok ale v C# máme ešte veľa možností vďaka tomu, že sú polia reprezentované ako objekty.

Dnes si preberieme len tri príklady aby som vás veľmi nezaťažoval, veď predsa Vianoce klopú na dvere. Ťuk, ťuk.... :-)

>>Viacrozmerné polia

V minulom dieli sme si uviedli príklady na vektory a matice. Niekedy je potrebné použiť aj viacrozmerné polia ako 2D(dvojrozmerné). Platia pre ne tie isté pravidlá ako aj pre matice, či vektory. V príklade vidíte, že aj deklarácia je podobná, až na to že v prvých hranatých zátvorkách je viac čiarok.

Príklad 6.1

using System;

class MainClass
{
 
public static void Main(string[] args)
  {
    
int[,,] poleMD = new int[5,5,9];

   Console.WriteLine(" Pocet dimenzii pola: poleMD je {0}",
                 
poleMD.Rank);
   }
}

Príklad som využil aj na vysvetlenie parametra Rank pre polia. Pozor za Rank nie sú zátvorky. Nie je to metóda, ale vlastnosť triedy. Nevadí ak nechápete, bude to vysvetlené niekedy nabudúce. :-)

>>Zubaté (nepravidelné) polia

Pekný názov pre polia, ktoré nie sú pravouhlé :-) Čo tým myslím? Doteraz, keď sme deklarovali maticu 3 na 2, znamenalo to, že mala 3 riadky a každý riadok mal dĺžku 2. (2 stĺpce). Zubaté polia (angl. jagged arrays) už nemajú takmer nič spoločné s maticami. Pamätáte si ako sa deklaruje vektor (jednorozmerné pole) int-ov ? No a ak deklarujem vektor vektorov (rovnakých, alebo rôznych dĺžok) dostaneme zubaté pole. Nepravidelné polia sa vytvárajú postupne!! Príklad povie za sto slov:

Príklad 6.2

using
System;
class
MainClass
{
 
public static void Main(string[] args) { char[][] poleZnakov = new char[2][]; poleZnakov[0] = new char[6] { 'D','o','b','r','y',' '};
   
poleZnakov[1] = new char[4] { 'd','e','n',''};

   
for(int i = 0; i< poleZnakov.Length ; i++)
for(int j = 0; j < poleZnakov[i].Length; j++)
    
Console.Write(poleZnakov[i][j]);
  }
}

Najprv si vytvoríme prvotný vektor vektorov (to značia tie dve hranaté zátvorky [][] na rozdiel od [ , ] ) pre premenné typu char (znak) o dĺžke 2. prvkov. Potom každému prvku tohto vektora priradíme nový vektor, ktorý môže mať každý inú dĺžku. Dĺžku hlavného vektora sme zisťovali pomocou poleZnakov.Length a dĺžku jednotlivých vektorov pomocou poleZnakov[i].Length.

Pozn. pre programátorov v jazyku Java.

Java takto výrazne nerozlišuje medzi pravidelnými a nepravidelnými poliami. Preto pre deklarácii a prístupe k prvkom používa u obidvoch typov hranaté zátvorky [ ][ ] ….

>>Vynulovanie prvkov vo vektore

Veľmi jednoduchý spôsob ako nastaviť všetky prvky v poli na ich preddefinovanú hodnotu. Čo to je preddefinovaná hodnota bolo v článku o premenných.


Príklad 6.3


using
System;
class
MainClass
{
  
public static void Main(string[] args)
   {
    
bool[] logika = new bool[] { true, false, true };

    
for(int i=0;i < logika.Length;i ++)
           Console.WriteLine(logika[i]);
   
    
Array.Clear(logika,0,logika.Length);
   
    
for(int i=0;i < logika.Length;i ++)
         Console.WriteLine(logika[i]);
  }
}

Z príkladu je zrejmá syntax príkazu Array.Clear(). Stručne sa dá zhrnúť takto:
Prvý argument je pole, ktoré chceme vymazať.
Druhý arg., je index prvku, od ktorého chceme začať mazanie.
Tretí arg,. je index prvku, po ktorý chceme aby prebehlo vymazanie (nie vrátane).


>>Čo bude nabudúce ?

Myslel som si, že toto bude posledný článok o poliach, ale stále je toho čo ešte vysvetliť. Tak to vyzerá, že polia nám vyjdú ešte na dva články. Nabudúce to bude hlavne príkaz foreach, známy pre programátorov VB a jeden malý test, vo forme zložitejšieho príkladu.


Vaše pripomienky a otázky posielajte na e-mail
micitn@orangemail.sk

Michal Čižmár

				   SEE YOU! 			

Príklady z článku na stiahnutie:
www.inet.sk/download/user/Priklad6.1_ViacrozmernePolia.zip

www.inet.sk/download/user/Priklad6.2_ZubatePolia.zip

www.inet.sk/download/user/Priklad6.3_VynulovaniePrvkov.zip


Predchádzajúce diely:
Programujeme v jazyku C# - Diel 5. Polia I
Programujeme v jazyku C# - Diel 4
Programujeme v jazyku C# - Diel 3
Programujeme v jazyku C# - Diel 2
Programujeme v jazyku C# - Diel 1
Porovnanie C# vs. C++

Podobné seriály o programovaní na Inet.sk:
Programujeme v jazyku C
Programujeme v Php
Programujeme v Delphi

Neprehliadnite: