Najjednostavnije rečeno, niz vam je indeksiran skup podataka istog tipa. Indeks nizova uvek počinje od 0. Nizovi se dele na jednodimenzionalne i višedimenzionalne nizove. Kad pravite nizove u C# programskom jeziku, vama oni izgledaju slično kao u C ili C++ programskom jeziku ali oni to definitivno nisu. Nizove u C++ programskom jeziku možete pogledati ovde. U C i C++ programskom jeziku ime nekog niza samo predstavlja pokazivač memorijske adrese, dok indeks niza predstavlja samo relativnu poziciju navedene adrese. I pored toga što su nizovi u C i C++ programskom bili fleksibilni, lako su pravili greške jer nisu pratile veličinu niza što je dovodilo i do oštećenja podataka. U programskom jeziku Visual Basic, niz je čak u osnovi predstavljao promenjivu tipa SAFEARRAY, što znači da rad sa nizom je podrazumevao izvesno angažovanje sistema ali zato je olakšavao rad sa nizovima. I ono je bilo bolje nego nizovi u C i C++ programskom jeziku. Zato je C# prevazišao nedostatke programskog jezika C i C++ i nizove od starta tretira kao objekte sa metodama i svojstvima uključujući i granice. Ali i na taj način opet podržava nizove u formi izričitog različitog tipa.
( Nizovi u C# programskom jeziku prikazani mapom uma )
Za razliku od nizova u C i C++ programskom jeziku, u C# programskom jeziku prilikom deklarisanja niza se u pozadini pravi primerak .NET bazne klase System.Array. Znači, C# kompajler vaš kod prevodi u razne pozive metoda klase System.Array i zbog toga nizovi u C# programskom jeziku imaju neke dodatne funkcije koje u drugim navedenim jezicima nisu postojale. Sintaksa niza u C# je sledeća:
Jednodimenzionalan niz:
tip [] naziv_niza;
Dvodimenzionalni niz:
tip [ , ] naziv_niza;
Višedimenzionalan niz:
tip [ , , … ] naziv_niza;
Ortogonalni niz:
tip [ ] [ ] naziv_niza:
Nemojte mešati nizove u C# programskom jeziku sa nizovima u C i C++ programskom jeziku.
int[] array; // it is not like as
in C/C++ … int array[];
Rad sa jednodimenzionalnim nizom
Za inicijalizovanje niza konkretnih dimenzija koristi se ključna reč new i dimenzionisanje. Ključna reč new prilikom inicijalizacije se koristiti jer je niz u C# programskom jeziku objekat. Npr. ovako se inicijalizuje jednodimenzionalni niz od 5 elemenata.
int[] array = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
int[] array = { 1, 2, 3, 4, 5 };
Ali najbolje da pogledate kod celog programa koji koristi jednodimenzionalan niz.
using System;
using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OneDimensionalArray
{
class Program
{
static void Main(string[] args)
{
byte numberNames = 0;
bool correct = false;
string[] names;
do
{
Write("How much names you wish to enter in an array? ");
correct = byte.TryParse(ReadLine(), out numberNames);
} while (!correct);
names = new string[numberNames];
for (byte i = 0; i < numberNames; i++)
{
Write($"Enter {i + 1} of {numberNames} names: ");
names[i] = ReadLine();
}
Array.Sort(names);
WriteLine();
foreach (string item in names)
{
WriteLine(item);
}
ReadKey();
}
}
}
How much names you wish to enter in an array? 5
Enter 1 of 5 names: Manuel
Enter 2 of 5 names: Lennon
Enter 3 of 5 names: Richard
Enter 4 of 5 names: Harrison
Enter 5 of 5 names: John
Harrison
John
Lennon
Manuel
Richard
Takođe obratite pažnju da umesto metode ReadLine() koristimo drugu metodu imenskog prostora Console; ReadKay() koja služi za čitanje pritisnutog tastera; ali je ovde korišćena za zadržavanje ekrana Command Prompt-a. Kako navedeni program izgleda možete pogledati i na video-u:
( C# 6.0 Tutorial - Fundamentals - 16. Onedimensional Array )
Višedimenzionalni nizovi
Za razliku od jednodimenzionalnih nizova, višedimenzionalni nizovi u C# programskom jeziku mogu biti pravougaoni nizovi koje zovemo matrica ili ortogonalni nizovi koje zovemo jagged – testerasti nizovi. Pravougaoni nizovi su nizovi koji imaju isti broj i redova i kolona, dok su ortogonalni nizovi oni u kojima svaki red može imati drugačiji broj kolona. Takvi nizovi su vam u suštini nizovi u nizu i retko se upotrebljavaju jer ih je teško inicijalizovati. Takođe prolaskom kroz svaki red vi morate koristiti i metodu GetLenght() niza da bi ste dinamički odredili broj kolona kroz koje treba proći. Pogledajte sledeći program, i obratite pažnju kako se koristi testerasti niz.
using System;
using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MultidimensionalArray
{
class Program
{
static void Main(string[] args)
{
bool correct = false;
byte numberTeams = 0;
byte numberMembers = 0;
byte[,] numberTeamsMembers;
do
{
Write("How many programmer teams are in the company? ");
correct = byte.TryParse(ReadLine(), out numberTeams);
} while (!correct);
numberTeamsMembers = new byte[numberTeams, 2];
WriteLine();
correct = false;
for (byte i = 0; i < numberTeams; i++)
{
do
{
Write($"How many members in {i
+ 1} team? ");
correct = byte.TryParse(ReadLine(), out numberMembers);
if (correct)
{
numberTeamsMembers[i,
0] = (byte)(i +
1);
numberTeamsMembers[i,
1] = numberMembers;
}
} while (!correct);
}
WriteLine($"\nYour company have {numberTeams} teams with next number of memembers:\n");
for (byte i = 0; i < numberTeams; i++)
{
WriteLine($"Team {numberTeamsMembers[i,0]
}, Members {numberTeamsMembers[i,1]
}");
}
WriteLine();
//
initialisation jagged array
string[][] programers = new string[numberTeams][];
for (int i = 0; i < numberTeams; i++)
{
programers[i] = new string[numberTeamsMembers[i,
1]];
for (int j = 0; j < numberTeamsMembers[i, 1]; j++)
{
Write($"Enter the name of {j
+ 1} member in {
i + 1} team: ");
programers[i][j] =
ReadLine();
}
}
WriteLine();
// read
data from jagged array
for (int i = 0; i < programers.Length; i++)
{
Write($"Names from {i + 1} team are: ");
for (int j = 0; j < programers[i].Length; j++)
{
Write(programers[i][j] + ", ");
}
WriteLine();
}
ReadKey();
}
}
}
numberTeamsMembers[i,
0] = (byte)(i +
1);
How many programmer teams are in the company? 3
How many members in 1 team? 3
How many members in 2 team? 2
How many members in 3 team? 4
Your company have 3 teams with next number of memembers:
Team 1, Members 3
Team 2, Members 2
Team 3, Members 4
Enter the name of 1 member in 1 team: Sandra
Enter the name of 2 member in 1 team: Sonia
Enter the name of 3 member in 1 team: Manuel
Enter the name of 1 member in 2 team: Linda
Enter the name of 2 member in 2 team: Alex
Enter the name of 1 member in 3 team: Mathew
Enter the name of 2 member in 3 team: John
Enter the name of 3 member in 3 team: Paul
Enter the name of 4 member in 3 team: George
Names from 1 team are: Sandra, Sonia, Manuel,
Names from 2 team are: Linda, Alex,
Names from 3 team are: Mathew, John, Paul, George,
Kako navedeni program izgleda možete pogledati i na video-u:
( C# 6.0 Tutorial - Fundamentals - 17. Multidimensional Array )
No comments:
Post a Comment