Tablice jednowymiarowe w języku C#. Część 1

Typ tablicowy zaliczany jest do typów strukturalnych- budowa typu tablicowego jest złożona.

Tablica jednowymiarowa jest przykładem złożonych typów danych. Do złożonych typów danych należą tablice (jedno-, dwu-, wielowymiarowe), rekordy (struktury), listy, pliki. Na wartość tego rodzaj typów danych składają inne wartości, których złożoność może być duża. Tablice jednowymiarowe są przykładem prostej złożoności.

Ogólnie, tablica to ciąg elementów tego samego typu. Każdy element tablicy ma przyporządkowany indeks. Elementy tablicy numerowane sa od zera.

Tablica jednowymiarowa

Tablica jest rodzajem zmiennej indeksowanej o własnej niepowtarzalnej nazwie w obrębie jednej klasy. Do tej nazwy przypisuje się kolejne indeksy, pod którymi przechowuje się typ danych zadeklarowany w momencie definiowania zmiennej tablicowej.

Rysunek przedstawiający różnicę pomiędzy pojedynczą zmienną a tablicą jednowymiarową

tablica, zmienna indeksowa
Źródło Informatyka dla szkół ponadpodstawowych. Zakres podstawowy Klasa II wyd. MiGra

Zwróć uwagę, że indeksowanie zmiennych w tablicy rozpoczyna się od indeksu równego 0 (zero)

Deklaracja tablicy jednowymiarowej

W zależności od rodzaju deklaracji tablicy możemy utworzyć tablicę statyczną lub dynamiczną. Tablice dynamiczne nie mają z góry określonej ilości elementów. Ich rozmiar może ulegać zmianie w trakcie wykonywania programu. Tablice statyczne mają rozmiar z góry określonych w momencie ich deklaracji. Oznacza to, że pamięć przydzielona na zmienną tablicową tak utworzoną nie zmienia się, nie zależnie od tego czy została wypełniona danymi.

Przykłady deklaracji tablicy jednowymiarowej

Deklaracja tablicy jednowymiarowej typu całkowitego o rozmiarze pięciu elementów

int[] t= new int [5];

Deklaracja tablicy jednowymiarowej typu całkowitego o rozmiarze pięciu elementów z równoczesnym przypisaniem wartości. Rozmiar tablicy zostaje ustalony na podstawie ilości podanych wartości

int[] t= new int[]{9, 8, 1, 4, 3};

Odwołania do elementów tablicy jednowymiarowej

Przypisanie wartości do wybranego indeksu tablicy

t[3]=121;

Odczytanie wartości z dowolnego indeksu tablicy

int a = t[2];
int suma = t[2]+t[5];

Podstawowe operacje na tablicach jednowymiarowych- ćwiczenia

Zad. 1

Utwórz jednowymiarową 10- elementową tablicę liczb całkowitych wypełnioną wartościami w momencie jej deklaracji. Zawartość tablicy wypisz w kontrolce TextBox ustawionej do pracy w trybie multiline.

Wskazówka:


public partial class Form1 : Form
    {
        int[] tabZad1 = new int[10] { 99, 3, 5, 18, 21, 45, 67, 34, 98, 41 };

Rozwiązanie

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	textBox1.Text = "";
	//pokaż tablicę
	for (int i = 0; i < 10;i++)
		textBox1.AppendText(
				 tabZad1[i].ToString() 
				 + Environment.NewLine);
	//podejście bardziej elastyczne w stosunku do rozmiaru
	//tablicy
	textBox1.AppendText(
			 "To samo ale z odczytem rozmiaru liczności tablicy"
			 + Environment.NewLine);
	for (int i = 0; i < tabZad1.Length; i++)
		textBox1.AppendText(
				 tabZad1[i].ToString()
				 + Environment.NewLine);
}
Utwórz jednowymiarową 10- elementową tablicę Visual Studio C#

Zad. 2

Wygeneruj losową stuelementową tablicę liczb całkowitych z przedziału od 1 do 500. Wypisz zawartość tablicy w kontrolce TextBox ustawionej do pracy w trybie multiline.

Wskazówka:


public partial class Form1 : Form
{
	int[] tabZad1 = new int[10] { 99, 3, 5, 18, 21, 45, 67, 34, 98, 41 };
	int[] tabZad2 = new int[100];
	Random los = new Random();//generator liczb losowych

Rozwiązanie

Wskazówka:


private void button2_Click(object sender, EventArgs e)
{
	//włącz generator liczb losowych
	for(int i = 0; i < tabZad2.Length; i++)
		tabZad2[i]=los.Next(500)+1;
	//pokaz tablicę
	textBox1.Text = "";
	for (int i = 0; i < tabZad2.Length; i++)
		textBox1.AppendText(
				 tabZad2[i].ToString()
				 + Environment.NewLine);
}
Wygeneruj losową stuelementową tablicę Visual Studio C#

Zad. 3.

Zmodyfikuj zad.2 tak aby program podał indeks i wartość najmniejszego elementu tablicy.

Rozwiązanie

Wskazówka:


private void button3_Click(object sender, EventArgs e)
{
	//korystamy z wyników zadania drugiego
	//losujemy i pokazujemy tablicę o 100 elementach
	button2_Click(sender, e);
	//tymczasowo przymij, ze min to pierwszy element
	int min = tabZad2[0],
		id =0;
	//szukaj najmniejszego elementu
	//oraz ustal jego indeks
	for (int i = 1; i < tabZad2.Length; i++)
	{
		if (tabZad2[i] < min)
		{
			min = tabZad2[i];
			id = i;
		}
	}
	MessageBox.Show(
		 "Minimum to: " + min.ToString() + Environment.NewLine
		 +"Indeks minimum " +id.ToString(),
		 "Komunikat",
		 MessageBoxButtons.OK,
		 MessageBoxIcon.Information
		 );
}
indeks i wartość najmniejszego elementu tablicy Visual Studio C#

Zad. 4

Zmodyfikuj zadanie 2 tak aby program policzył sumę elementów tablicy.

policzył sumę elementów tablicy Visual Studio C#

Pełny kod programu

Wskazówka:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace tablicaJednowymiarowa_cz1
{
    public partial class Form1 : Form
    {
        int[] tabZad1 = new int[10] { 99, 3, 5, 18, 21, 45, 67, 34, 98, 41 };
        int[] tabZad2 = new int[100];
        Random los = new Random();//generator liczb losowych
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            //pokaż tablicę
            for (int i = 0; i < 10;i++)
                textBox1.AppendText(
                         tabZad1[i].ToString() 
                         + Environment.NewLine);
            //podejście bardziej elastyczne w stosunku do rozmiaru
            //tablicy
            textBox1.AppendText(
                     "To samo ale z odczytem rozmiaru liczności tablicy"
                     + Environment.NewLine);
            for (int i = 0; i < tabZad1.Length; i++)
                textBox1.AppendText(
                         tabZad1[i].ToString()
                         + Environment.NewLine);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //włącz generator liczb losowych
            for(int i = 0; i < tabZad2.Length; i++)
                tabZad2[i]=los.Next(500)+1;
            //pokaz tablicę
            textBox1.Text = "";
            for (int i = 0; i < tabZad2.Length; i++)
                textBox1.AppendText(
                         tabZad2[i].ToString()
                         + Environment.NewLine);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //korystamy z wyników zadania drugiego
            //losujemy i pokazujemy tablicę o 100 elementach
            button2_Click(sender, e);
            //tymczasowo przymij, ze min to pierwszy element
            int min = tabZad2[0],
                id =0;
            //szukaj najmniejszego elementu
            //oraz ustal jego indeks
            for (int i = 1; i < tabZad2.Length; i++)
            {
                if (tabZad2[i] < min)
                {
                    min = tabZad2[i];
                    id = i;
                }
            }
            MessageBox.Show(
                 "Minimum to: " + min.ToString() + Environment.NewLine
                 +"Indeks minimum " +id.ToString(),
                 "Komunikat",
                 MessageBoxButtons.OK,
                 MessageBoxIcon.Information
                 );
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //korystamy z wyników zadania drugiego
            //losujemy i pokazujemy tablicę o 100 elementach
            button2_Click(sender, e);
            long suma = 0;
            for (int i = 1; i < tabZad2.Length; i++)
                suma += tabZad2[i];
            MessageBox.Show(
                 "Suma elemntów wynosi "+suma.ToString(),
                 "Komunikat",
                 MessageBoxButtons.OK,
                 MessageBoxIcon.Information
                 );
        }
    }
}

Rozwiązanie pod konsolę

Wybierając rozwiązanie konsolowe znaczenie ma wybranie wersji platformy z warunkiem używania lub nie używania instrukcji najwyższego poziomu. Wybór między innymi rzutuje na postać inicjacji kodu. Na przykład platforma NET 7.0 z opcją: Nie używaj instrukcji najwyższego poziomu

NET Core 3.1 Visual Studio C#

Tworzy zalążek kodu jak poniżej

zalążek kodu NET Core 3.1 Visual Studio C#

A wybór platformy NET 7.0 z brakiem zaznaczenia opcji : Nie używaj instrukcji najwyższego poziomu

NET 7.0 Visual Studio C#

Daje zalążek kodu jak poniżej

zalążek kodu NET 7.0 Visual Studio C#

Oba kody są jednoznaczne.

Zmienna statyczna? w programowaniu jest to zmienna, która w danym bloku programu posiada dokładnie jedną instancję i istnieje przez cały czas działania programu.

Poniżej rozwiązania podanych problemów z zastosowaniem konsoli

Wskazówka:


using System;

namespace tablice_jednowymiarowe_cz1
{
    internal class Program
    {
        //Zmienna statyczna ? w programowaniu jest to zmienna,
        //która w danym bloku programu posiada dokładnie jedną instancję
        //i istnieje przez cały czas działania programu.
        //W języku C++ każda zmienna globalna jest jednocześnie zmienną statyczną.
        //incjacja danych statycznych
        static int[] tabZad1 = new int[10] { 99, 3, 5, 18, 21, 45, 67, 34, 98, 41 };
        static int[] tabZad2 = new int[100];
        static Random los = new Random();//generator liczb losowych

        static void zad1()
        {
            //pokaż tablicę
            for (int i = 0; i < 10; i++)
                Console.WriteLine(tabZad1[i]);
            //podejście bardziej elastyczne w stosunku do rozmiaru tablicy
            //To samo ale z odczytem rozmiaru liczności tablicy
            Console.WriteLine("***To samo, ale z odczytem rozmiaru tablicy***");
            for (int i = 0; i < tabZad1.Length; i++)
                Console.WriteLine(tabZad1[i]);
        }

        static void zad2()
        {
            //włącz generator liczb losowych
            for (int i = 0; i < tabZad2.Length; i++)
                tabZad2[i] = los.Next(500) + 1;
            //pokaz tablicę
            for (int i = 0; i < tabZad2.Length; i++)
                 Console.WriteLine(tabZad2[i]);
        }

        static void zad3()
        {
            //korystamy z wyników zadania drugiego
            //losujemy i pokazujemy tablicę o 100 elementach
            zad2();
            //tymczasowo przymij, ze min to pierwszy element
            int min = tabZad2[0],
                id = 0;
            //szukaj najmniejszego elementu
            //oraz ustal jego indeks
            for (int i = 1; i < tabZad2.Length; i++)
            {
                if (tabZad2[i] < min)
                {
                    min = tabZad2[i];
                    id = i;
                }
            }
            Console.WriteLine(
                 "Minimum to: " + min.ToString() + Environment.NewLine
                 + "Indeks minimum " + id.ToString());
        }

        static void zad4()
        {
            //korzystamy z wyników zadania drugiego
            //losujemy i pokazujemy tablicę o 100 elementach
            zad2();
            long suma = 0;
            for (int i = 1; i < tabZad2.Length; i++)
                suma += tabZad2[i];
            Console.WriteLine(
                 "Suma elemntów wynosi " + suma.ToString());
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Witaj w CzD!");
            Console.WriteLine("Zadanie 1:");
            zad1();
            Console.WriteLine("Zadanie 2:");
            zad2();
            Console.WriteLine("Zadanie 3:");
            zad3();
            Console.WriteLine("Zadanie 4:");
            zad4();
        }
    }
}

Wynik działania kodu przedstawia poniższa ilustracja

tablice jednowymiarowe zadania Visual Studio C#
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