You are on page 1of 21

Programao em C# com Visual Studio .

NET

Prof. Eder Samaniego Villalba

Colees

Arrays so teis, mas tem suas limitaes. Entretanto, so a nica maneira de colecionar elementos do mesmo tipo. O .NET fornece diversas outras classes que tambm colecionam elementos de outras maneiras especializadas. As classes Collection, residem no namespace System.Collections.
Programao em C#

Colees

As classes de coleo bsicas aceitam, armazenam e retorman elementos como objetos. O tipo de elemento de uma classe coleo um objeto. Comparando um array de inteiros com um array de objetos podemos notar as diferenas.

Programao em C#

Colees

Array de inteiros

Array de objetos

stack
@

heap 0 0 0 0

stack
@

heap @ @ @ @ 7

Programao em C#

Colees

Em um array de objetos podemos adicionar valores de qualquer tipo, todos sero tratados como objetos. objetc[] array = {7, 3, 5, 9} Ao inserir um valor no array de objetos ele encaixotado (boxed) e ao retir-lo ele desencaixotado (unboxed), devemos neste caso usar um cast.

Programao em C#

ArrayList

til para misturar elementos em um array. H certas ocasies em que um array muito restritivo:

Redimensionar um array Remover um elemento Inserir um elemento em um array j populado

Programao em C#

ArrayList

A classe ArrayList foi feita para que todas estas dificuldades fossem superadas.

Pode-se remover um elemento de uma classe

ArrayList usando o mtodo remove. A classe reordena automaticamente todos os elementos. Pode-se adicionar um elemento ao final de um ArrayList usando o mtodo Add, fornecendo o elemento a ser adicionado. O ArrayList se redimensiona, se necessrio.

Programao em C#

ArrayList

Pode-se inserir um elemento no meio de um


ArrayList usando-se o mtodo insert.

using System.Collections; ArrayList numbers = new ArrayList()

Programao em C#

ArrayList

Faa um ConsoleApplication que pea para o usurio entrar com nmeros at digitar 0.

Imprima o ArrayList. Remova o primeiro elemento cujo valor seja 7, se ele existir. //Remove Remova o 7 elemento. //RemoveAt Insira mais um elemento no final do ArrayList. Insira mais um elemento no incio do ArrayList. Insira mais um elemento no meio do ArrayList. Imprima o ArrayList. Ordene o ArrayList. //sort Imprima o ArrayList ordenado.
Programao em C#

A Classe Queue

Implementa um mecanismo FIFO. Um elemento inserido no final da fila e removido no incio da fila
using System.Collections; Queue numbers = new Queue(); numbers.Enqueue(elemento); //insere elemento na fila numbers.Dequeue(elemento); // remove

Programao em C#

10

A Classe Queue

Faa um Console Application que pea alguns nmeros para o usurio, terminando o processo com 0. Insira-os na fila um a um e imprima a mensagem na tela informando que o nmero X foi inserido na fila. Aps remova os elementos um a um informando que o nmero X deixou a fila.

Programao em C#

11

A Classe Stack

Mecanismo FILO. Um elemento colocado na parte superior da pilha e removido tambm na parte superior da pilha.
using System.Collections; Stack numbers = new Stack(); numbers.Push(elemento); //insere elemento na pilha numbers.Pop(elemento); // remove

Programao em C#

12

A Classe Queue

Faa um Console Application que pea alguns nmeros para o usurio, terminando o processo com 0. Insira-os na pilha um a um e imprima a mensagem na tela informando que o nmero X foi inserido na pilha. Aps, remova os elementos um a um informando que o nmero X deixou a pilha.

Programao em C#

13

A Classe Hashtable

Os arrays fornecem um meio de mapear um ndice inteiro para um elemento. Hashtable fornece um mapeamento onde o tipo a partir do qual voc mapear no ser um int, mas algum outro tipo qualquer. Tambm conhecido por array associativo. Internamente 2 arrays object, um para as chaves e outro para os valores, so criados.
Programao em C#

14

A Classe Hashtable

Ao inserirmos um par chave/valor podemos testar se a hashtable j contm uma chave especfica usando o mtodo ContainsKey(). Ao usarmos uma instruo foreach para iteragirmos no Hashtable, obtemos um DictionaryEntry. Esta classe fornece acesso chave e aos elementos de valor em ambos os arrays por meio da propriedade Key e Value.

Programao em C#

15

A Classe Hashtable

Programao em C#

16

A Classe SortedList

Similar Hashtable, porm mantm as chaves em ordem crescente. Faa o exemplo anterior de hashtable com sortedlist.

Programao em C#

17

Exerccio

Embaralhar, distribuir e jogar cartas. Windows Application. Podem ser usados um ArrayList para guardar as 52 cartas. Outro ArrayList para cada uma das mos. Crie uma classe baralho que contm o baralho completo, embaralha e distribui as cartas.

Programao em C#

18

Exerccio
Random random = new Random(); random.Next() % cards.Count;

Criar uma classe hand, que representa a mo de cada um dos 4 jogadores. O boto Deal s pode ser habilitado se a contagem de cartas no monte 52. Uma classe Form com o seguinte formulrio.

Programao em C#

19

Exerccio

Programao em C#

20

Exerccio

Grupos de 5 pessoas.

ArrayList com 52 cartas Global Criao das cartas Embaralhamento Distribuio Remoo Formulrio

Programao em C#

21

You might also like