Struktura i tablice

Struktura to złożony typ danych, która pozwala pod jedną zmienną przechowywać określoną ilość różnych wartości typów danych. Ilość wartości przypisana jest podczas definiowania struktury. Słowo kluczowe definiujące strukturę to struct

Przykład definicji struktury

Poniżej przykład definiowania struktury zaprojektowanej do przechowywania podstawowych informacji o uczniu: imię, nazwisko, klasa i numer z dziennika

Wskazówka:


struct Dane
{
    public string nazwisko;
    public string imie;
    public string klasa;
    public int nr;
}

Aby atrybuty (pola) wewnętrzne struktury były dostępne poza strukturą definiuje się je ze słowem kluczowym public

Zmienna oparta na strukturze inicjowana jest jak poniżej

Wskazówka:


private Dane d;

Przypisanie wartości do dowolnego pola struktury odbywa się jak poniżej

Wskazówka:


d.nazwisko = "Kowalski";
d.imie = "Jan";

Odczyt wartości z dowolnego pola struktury przeprowadza się na tych samych zasadach jak dla każdej innej zmiennej. Na przykład odczyt i przypisanie wartości pola do kontrolki typu TextBox

Wskazówka:


textBox1.Text = d.imie;

Typ tablicowy oparty na strukturze

Definiując typ tablicowy oparty na strukturze postępuje się w identyczny sposób jak dla każdego innego typu danych. Poniżej fragment kodu z deklaracją tablicy jednowymiarowej o rozmiarze pięciu elementów typu strukturalnego.

Wskazówka:


struct Ksiazka
{
    public string tytul;
    public string autor;
    public float cena;
}

namespace struktura_danych_cz1
{
    public partial class Form1 : Form
    {
        Ksiazka[] tab=new Ksiazka[5];

Zasady pracy z tablicami typu strukturalnego oparte są na tych samych zasadach co z innymi tablicami. Na przykład dodanie nowej książki do tablicy typu strukturalnego powyżej zdefiniowanego

Wskazówka:


//dodanie ksiązki
tab[licznik].tytul = textBox1.Text;
tab[licznik].autor = textBox2.Text;
tab[licznik].cena = (float)Convert.ToDouble(textBox3.Text);

Metody w strukturze

Typ strukturalny może zawierać własne metody (funkcje) ułatwiające programowanie złożonych aplikacji. Poniżej przedstawię strukturę definiująca książki z metodami dodania książki, odczytu danych i czyszczenia przypisanych wartości.

Wskazówka:


struct Ksiazka2
{
    string tytul;
    string autor;
    float cena;
    public void PrzypiszDane(string _t,string _a,float _c) {
        tytul = _t;
        autor = _a;
        cena = _c;
    }
    public void PokazDane(TextBox tb)
    {
        tb.AppendText("Tytuł: "+tytul+"\r\n");
        tb.AppendText("Autor: " + autor + "\r\n");
        tb.AppendText("Cena: " + cena.ToString("C") + "\r\n");
    }
    public void Czysc()
    {
        tytul = null;
        autor=null;
        cena = 0;
    }
}

Odwołanie do metody zdefiniowanej w strukturze jest możliwe wtedy gdy metoda jest publiczna- definicja jest poprzedzona słowem kluczowym public. Poniżej przykład zastosowania

Wskazówka:


//dodanie ksiązki do tablicy typu drugiego
tab2[licznik].PrzypiszDane(textBox1.Text,
					 textBox2.Text,
					 (float)Convert.ToDouble(textBox3.Text)
					 );

Zadanie

Utwórz aplikację, która będzie zawierać dwie tablice jednowymiarowe o rozmiarze równym 5. Pierwsza tablica ma być oparta na strukturze Ksiazka, druga tablica na strukturze Ksiazka2. Obie struktury zdefiniowane są powyżej. W aplikacji zaprojektuj możliwość dodawania książek, pokazanie pełnej zawartości tablic, czyszczenie zawartości tablic. Zawartość tablic pokaż w kontrolce TextBox pracującej w układzie wielu linii z belkami przewijania.

Wskazówka: Proponowany układ kontrolek

Struktury i tablice Visual Studio C#

Widok na wynik działania aplikacji

Struktury i tablice deklaracja struktury Visual Studio C#

Deklaracja struktur

Wskazówka:


using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


struct Ksiazka
{
    public string tytul;
    public string autor;
    public float cena;
}

struct Ksiazka2
{
    string tytul;
    string autor;
    float cena;
    public void PrzypiszDane(string _t,string _a,float _c) {
        tytul = _t;
        autor = _a;
        cena = _c;
    }
    public void PokazDane(TextBox tb)
    {
        tb.AppendText("Tytuł: "+tytul+"\r\n");
        tb.AppendText("Autor: " + autor + "\r\n");
        tb.AppendText("Cena: " + cena.ToString("C") + "\r\n");
    }
    public void Czysc()
    {
        tytul = null;
        autor=null;
        cena = 0;
    }
}

Deklaracja tablic

Wskazówka:


namespace struktura_danych_cz1
{
    public partial class Form1 : Form
    {
        Ksiazka[] tab=new Ksiazka[5];
        Ksiazka2[] tab2 = new Ksiazka2[5];
        //licznik wpisanych ksiazek
        int licznik = 0;

Dodanie nowych elementów do tablic

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	//dodanie ksiązki do tablicy typu pierwszego
	tab[licznik].tytul = textBox1.Text;
	tab[licznik].autor = textBox2.Text;
	tab[licznik].cena = (float)Convert.ToDouble(textBox3.Text);
	//dodanie ksiązki do tablicy typu drugiego
	tab2[licznik].PrzypiszDane(textBox1.Text,
						 textBox2.Text,
						 (float)Convert.ToDouble(textBox3.Text)
						 );
	//sprawdz czy nie przekroczono zakresu rozmiaru tablic
	if (licznik + 1 < tab.GetLength(0))
		//zwieksz licznik dodanych ksiazek
		licznik++;
}

Pokazanie zawartości obu tablic

Wskazówka:


private void button2_Click(object sender, EventArgs e)
{
	textBox4.AppendText("Zawartośc tablicy typu pierwszego+\r\n");
	foreach (Ksiazka k in tab)
	{
		textBox4.AppendText("***********\r\n");
		textBox4.AppendText("Tytuł: " + k.tytul+"\r\n");
		textBox4.AppendText("Autor: " + k.autor + "\r\n");
		textBox4.AppendText("Cena: " + k.cena.ToString("C") + "\r\n");
	};
}

private void button3_Click(object sender, EventArgs e)
{
	textBox5.AppendText("Zawartośc tablicy typu drugiego+\r\n");
	foreach (Ksiazka2 k in tab2)
	{
		textBox5.AppendText("***********\r\n");
		k.PokazDane(textBox5);
	}
}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz