PROGRAMSKI JEZIK C# - 23 - RAD SA KOLEKCIJAMA
Zadatak
Napisati programu u jeziku C# za rad sa kolekcijama (ArrayList, Queue, Stack, Hashtable), odnosno, pomoću programa je potrebno prikazati način dodavanja, brisanja i kretanja kroz kolekciju. Program napraviti kao Windows aplikaciju da izgleda kao na slici ispod (Slika 23.1).

Slika 23.1 - Izgled programa
Svojstva komponenti (svojstva koja nisu navedena u listi ispod su ostavljena kao podrazumevana svojstva koje napravi VS 2008):
- Button
- prvo dugme - Name: button1, Text: ArrayList
- drugo dugme - Name: button2, Text: Queue
- treće dugme - Name: button3, Text: Stacks
- četvrto dugme - Name: button4, Text: Hash
- RichTextBox
- Name: richTextBox1
- Form
- Name: Form1, Text: Rad sa kolekcijama (collections), Size: 508; 289, StartPosition: CenterScreen
Rešenje:
Napraviti Windows formu kao na slici iz postavke zadatka (Slika 23.1) i koristiti komponente i svojstva komponenti navedene u listi iznad. Potrebno je u Prostor imena dodati biblioteku za kolekcije, odnosno, kada odete u kod svoje forme (View - > Code), na vrhu je potrebno dodati sledeće: using System.Collections;. Nakon završetka dizajna, Solution Explorer (View - > Solution Explorer Ctrl + Alt + L) bi trebao izgledati kao na slici ispod (Slika 23.2).

Slika 23.2 - Izgled Solution Explorera
Kod za prvo dugme (ArrayList) (Akciju za dugme dodajete duplim klikom na dugme u Design modu):
ArrayList al = new ArrayList(); // instanciranje al objekta
al.Add(1); // dodavanje stavke u listu
al.Add("ITS");
al.Add(2.456);
al.RemoveAt(0); // brisanje stavke iz liste na odredjenom indeksu
IEnumerator mojEnumerator = al.GetEnumerator(); //daje mogucnost kretanju kroz listu
while (mojEnumerator.MoveNext()) // na svakom koraku, idi na sledeci clan liste
{
// trenutni clan liste koji se obradjuje dodaj u richTextBox
richTextBox1.AppendText(mojEnumerator.Current.ToString() + "\n");
}
Kod za drugo dugme (Queue) (Akciju za dugme dodajete duplim klikom na dugme u Design modu):
Queue mojRed = new Queue(); // instanciranje mojRed objekta kao reda (queue)
mojRed.Enqueue('A'); // dodavanje stavke u red
mojRed.Enqueue(1);
mojRed.Enqueue('B');
mojRed.Enqueue(2);
mojRed.Dequeue(); // brisanje zadnje dodane stavke iz reda
IEnumerator mojEnumerator = mojRed.GetEnumerator(); //daje mogucnost kretanju kroz listu
while (mojEnumerator.MoveNext()) // na svakom koraku, idi na sledeci clan reda
{
// trenutni clan reda koji se obradjuje dodaj u richTextBox
richTextBox1.AppendText(mojEnumerator.Current.ToString() + "\n");
}
Kod za treće dugme (Stack) (Akciju za dugme dodajete duplim klikom na dugme u Design modu):
// instanciranje mojStack objekta kao steka (stack - LIFO)
Stack mojStack = new Stack();
mojStack.Push("Hello"); // dodaj stavku u stack
mojStack.Push(1);
mojStack.Push("World");
mojStack.Push("!");
mojStack.Pop(); // obrisi zadnje dodanu stavku iz stacka
mojStack.Pop();
IEnumerator mojEnumerator = mojStack.GetEnumerator(); // daje mogucnost kretanju kroz stack
while(mojEnumerator.MoveNext()) // na svakom koraku, idi na sledeci clan stack-a
{
// trenutni clan stack-a koji se obradjuje dodaj u richTextBox
richTextBox1.AppendText(mojEnumerator.Current.ToString() +"\n");
}
Kod za četvrto dugme (Hash) (Akciju za dugme dodajete duplim klikom na dugme u Design modu):
// instanciranje tabela objekta kao hash tabele
Hashtable tabela = new Hashtable();
tabela.Add('P', "Proba"); // dodavanje stavke u hash
tabela.Add('N', "Idi na sever");
tabela.Add('S', "Idi na jug");
tabela.Add('W', "Idi na zapad");
tabela.Add('E', "Idi na istok");
tabela.Add('Q', "Dovidjenja");
tabela.Remove('P'); // brisanje stavke iz hash tabele na osnovu kljuca
// clan pod odredjenim kljucem dodaj u richTextBox
richTextBox1.AppendText(tabela['N'].ToString());
richTextBox1.AppendText("\n-----------------------\n");
// daje mogucnost kretanju kroz hash
IDictionaryEnumerator mojEnumerator = tabela.GetEnumerator();
while (mojEnumerator.MoveNext()) // na svakom koraku, idi na sledeci clan hash tabele
{
//trenutni clan hash tabele koji se obradjuje dodaj u richTextBox
richTextBox1.AppendText(mojEnumerator.Key.ToString() + "---->" + mojEnumerator.Value.ToString() + "\n");
}
Kompletno rešenje ovog primera, sa izvornim kodom, možete preuzeti ovde.









Na ITS-u mi se sviđa što su sve tri godine koncentrisane na praktično znanje, ne postoje suvišni predmeti i jednom rečju gradivo je zaista konkretno. U poređenju sa drugim fakultetima, na ITS-u dobijam mogućnost da praktično primenim ono što naučim. Nema suvoparne teorije i učenja napamet. Sve što smo učili, ja sam zaista shvatila i sposobna sam to da upotrebim. Studentima je školovanje mnogo pristupačnije, svi servisi, studentska služba, profesori su uvek tu, nekako mi je sve dostupno. Računarski sistemi i osnove programiranja su mi do sada bili najbolji predmeti. Jedna od prednosti je što sa profesorima mogu da komuniciram i putem e-maila, a odgovori mi stižu već u toku dana. Planiram samostalno da se bavim programiranjem i sigurna sam da ću ovde steći svo potrebno znanje.






