Tablice i klasa Array. Visual Studio C#

Pracę z tablicami ułatwia klasa Array. Szerszy opis metod tej klasy znajdziesz pod tym linkiem zobacz. W tym temacie zostanie przedstawiony sposób zwiększania rozmiaru już istniejącej tablicy, sortowanie od A do Z oraz od Z do A przy użyciu metod z klasy Array.

Cel: Napisz aplikację, która będzie bazować na dwóch tablicach jednowymiarowych typu float oraz tablic wielowymiarowej służącej do przechowywania elementów poprzednich tablic oraz wyników podstawowych działań arytmetycznych. Zastosuje sortowanie tablic i dynamicznie zwiększenie ich rozmiaru.

Array C# visual studio

Krok 1. Układ komponentów

Wybranym kontrolkom właściwość pola Dock ustaw na Fill

Dock fill

Przypisz tryb pracy w układzie wielu linii.

multiline

Dodaj możliwość przewijania zawartości w pionie

vertical

Proponowany układ kontrolek

klasa Array visual studio c# ukłąd kontrolek

Krok 2. Deklaracja zmiennych

Zadeklarujemy zmienne lokalne w klasie Form1 związane z funkcjonowaniem aplikacji. Przeznaczenie zmiennych jest podane w komentarzach podanego fragmentu kodu

public partial class Form1 : Form
{
//poczatkowy rozmiar tablic
static int rozmiar = 1;
//tablice jednowymiarowe
float[] t1 = new float[rozmiar],
t2 = new float[rozmiar];
//tablica wielowymiarowa
float[,] tabWynikow;
//generator liczb losowych
Random los = new Random();

public Form1()

Krok 3. Inicjujemy początkowe wartości tablic jednowymiarowych

W konstruktorze klasy Form wykonamy przypisanie początkowych losowych wartości tablicom jednowymiarowym

public Form1()
{
InitializeComponent();
for (int i = 0; i < t1.GetLength(0); i++)
{
t1.SetValue(los.Next(0, 100), i);
t2.SetValue(los.Next(0, 100), i);
}
}

Aby się przekonać jakie wartości zostały wylosowane napiszemy uniwersalną funkcję wypisującą zawartość tablicy jednowymiarowej. Funkcja będzie wywoływana w kilku miejscach tworzonego kodu.

void wypiszTablice(Array t, TextBox tb)
{
tb.Clear();
for(int i=0;i<t.GetLength(0); i++)
tb.AppendText((i + 1).ToString() + ") " + t.GetValue(i).ToString()+Environment.NewLine);
}

Jej pierwsze wywołanie wykonamy z zdarzeniu Load formatki głównego okna aplikacji


private void Form1_Load(object sender, EventArgs e)
{
wypiszTablice(t1, textBox1);
wypiszTablice(t2, textBox2);
}

Skompiluj program i sprawdź efekt działania. Poniższa ilustracja przedstawia funkcjonowanie bieżącego kodu aplikacji

klasa Array visual studio c#

Krok 4. Zwiększamy rozmiar tablic

Napiszemy uniwersalną funkcję zwiększającą rozmiar tablic już istniejących bez zmiany dotychczasowych wartości wylosowanych elementów

void zwiekszRozmiarTablicy(ref float[] t, int rozmiar)
{
//odczytaj stary rozmiar tablicy
int staryRozmiar = t.GetLength(0);
//ustaw nowy rozmiar
Array.Resize(ref t, rozmiar);
//
for (int i = staryRozmiar; i < rozmiar; i++)
t.SetValue(los.Next(0, 100), i);
}

Efekt zwiększania rozmiaru i dopisywania nowych elementów wywołamy w zdarzeniu Click kontrolki button1

private void button1_Click(object sender, EventArgs e)
{
int rozmiar = Convert.ToInt16(textBox4.Text);
zwiekszRozmiarTablicy(ref t1,t1.GetLength(0) + rozmiar);
wypiszTablice(t1, textBox1);
zwiekszRozmiarTablicy(ref t2, t2.GetLength(0) + rozmiar);
wypiszTablice(t2, textBox2);
}

Skompiluj program i sprawdź efekt działania. Prawidłowo działającą aplikację przedstawia poniższa ilustracja

zwiększanie rozmiaru tablic klasa Array visual studio c#

Krok 5. Sortowanie zawartości tablic w kierunku od A do Z

Wykorzystamy wbudowaną funkcję Sort klasy Array. Jej podstawowe wywołanie zawiera poniższy kod

void Sortuj_AdoZ_i_Wypisz(ref float[] t,TextBox tb)
{
Array.Sort(t);
wypiszTablice(t, tb);
}

Działanie sprawdzimy w metodzie Click kontrolki button2

private void button2_Click(object sender, EventArgs e)
{
Sortuj_AdoZ_i_Wypisz(ref t1, textBox1);
}

Skompiluj program i sprawdź efekt działania. Efekt przedstawia poniższa ilustracja

Array C#

Krok 6. Sortowanie zawartości tablicy w kierunku od Z do A

To funkcjonowanie programu jest odwrotne do poprzedniego działania. Wykorzystamy metody klasy Array sortowania i odwracania pozycji elementów w tablicy


void Sortuj_ZdoA_i_Wypisz(ref float[] t, TextBox tb)
{
Array.Sort(t);
Array.Reverse(t);
wypiszTablice(t, tb);
}

Działanie sprawdzimy w metodzie Click kolejnej kontrolki Button

private void button7_Click(object sender, EventArgs e)
{
Sortuj_ZdoA_i_Wypisz(ref t2, textBox2);
}

Skompiluj program i sprawdź efekt działania. Działanie przedstawia poniższa ilustracja

metody klasy Array C#

Krok 7. Funkcja sumowania i przypisywania wyniku do tablicy wielowymiarowej

Piszemy uniwersalna funkcję wykonującą dodawanie elementów z dwóch równoległych indeksów tablic jednowymiarowych i przypisanie tych elementów oraz wyniku sumowania do tablicy wielowymiarowej. Jest to proponowany kod rozwiązania zasad pracy z tablicami przedstawiony w celach dydaktycznych.


void Dodawanie(float[] tA,float[] tB,ref float[,] tWynik,TextBox tb)
{
tb.Clear();
int rozmiar = tA.GetLength(0);
tWynik = new float[rozmiar, 3];
for(int i = 0; i < rozmiar; i++)
{
tWynik[i,0] = tA[i];
tWynik[i,1] = tB[i];
tWynik[i,2] = tWynik[i,0] + tWynik[i,1];
tb.AppendText((i + 1).ToString() + ")" + tabWynikow[i, 0].ToString() + "+" + tabWynikow[i, 1].ToString() + "=" + tabWynikow[i, 2].ToString() + Environment.NewLine);
}
}

Wywołanie tej funkcji wykonamy w zdarzeniu Click z zastosowaniem rzutowania obiektów rozpoznawanych pod właściwości Tag w funkcji switch

private void button3_Click(object sender, EventArgs e)
{
Button bt = sender as Button;
switch (bt.Tag)
{
case "+":Dodawanie(t1, t2,ref tabWynikow,textBox3); break;
}
}

Skompiluj program i sprawdź efekt działania. Wynik dodawania wraz z dodawanymi elementami przedstawia poniższa ilustracja

metody klasy Array C# dodawanie elementów tablic

Ćwiczenie sprawdzające: Napisz uniwersalne funkcje odejmowania, mnożenia i dzielenia wraz z zabezpieczeniem przed dzieleniem przez zero.

Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play