terça-feira, 6 de agosto de 2013

Preenchendo matrizes com números aleatórios no Visual C#


 Neste post vou mostrar como criar um aplicativo utilizando Matrizes e preencher estas matrizes com números aleatórios através da classe Random.
Vamos lá!

  1. Abra o Visual C# 2010 Express.
  2. Clique no menu File e no item New Project.  

  3. Selecione um projeto do tipo Windows Form Aplication e altere o nome do projeto para Matriz_Aleatoria
  4.  Dentro do Form1 insira um Button e um RichTextBox.


5.       Altere a propriedade Text do Button1 para Gerar número.
6.       Altere a propriedade Size do Form1 para 400; 400.
7.       Altere a propriedade Size do RichTextBox1 para 360; 309.
8.       Dê um duplo-clique no botão Gerar números.


Agora vamos começar a construir o código do aplicativo;
Ao dar duplo-clique no botão você pode visualizar um código semelhante ao código abaixo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Matriz_Aleatoria
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}
Todo o nosso código será inserido dentro do evento Click do button1 (Gerar números).
        private void button1_Click(object sender, EventArgs e)
        {
             (região onde será adicionado o código do evento Click)
        }
*Todo o código deve ser digitado entre as chaves do evento click!!!
A primeira coisa a fazer é declarar as variáveis que serão utilizadas. Vamos declarar duas variáveis simples do tipo inteiro, a estas duas variáveis daremos o os nomes de linhas e colunas para isso, digite:
                int linhas, colunas;
Vamos declarar agora, a matriz, uma matriz é uma estrutura de dados que contém várias variáveis do mesmo tipo. A esta matriz daremos o nome de numeros_aleatorios.
int[,] numeros_aleatorios = new int[100, 5];
No código acima declaramos que nossa será uma variável do tipo Inteiro, e possuirá 100 linhas e em cada linha 5 colunas.
Criaremos agora uma classe Random que será responsável por gear os números aleatórios, a esta classe daremos o nome de rnd.
Random rnd = new Random();
Declaradas as variáveis e classes, vamos começar a criar nosso código, para preenchermos nossa RichTextBox1 com os números aleatórios.
Sempre que clicarmos no botão iremos gerar um texto com algumas informações e, para que estas informações não fiquem se acumulando no RichTextBox a cada clique, vamos digitar um algoritmo que irá limpar a RichText antes de inserir um novo texto, para isto digite o código abaixo:
richTextBox1.Clear();
Vamos criar duas repetições utilizando o For. Uma destas repetições será responsável por criar as linhas da nossa matriz numeros_aleatorios e dentro da repetição adicionaremos outra que irá preencher as colunas de cada linha. Veja o código abaixo:


for (linhas = 0; linhas < 100; linhas++)
{

}

Acima temos o código do nosso primeiro For. Veja que nosso for será executado enquanto a variável inteira linhas for menor do que 100 e, a cada repetição, ele irá somar o valor que estiver na variável linhas a 1 (código à linhas++).Dentro das chaves do primeiro for vamos construir nosso segundo for.

for (colunas = 0; colunas < 5; colunas++)
{

}

Semelhante ao primeiro for, nosso segundo for será executado enquanto a variável do tipo inteiro colunas, for menor do que 5.
Agora, iremos adicionar dentro do segundo for algoritmo que ele deve executar a cada repetição.
numeros_aleatorios[linhas, colunas] = rnd.Next(1, 100);
Na linha de código acima estamos adicionando dentro da nossa matriz numeros_aleatorios na variável colunas referente a variável linhas (gerada pelo primeiro for) um número aleatório sorteado entre 1 e 100. Imagine uma tabela do excel:



Por exemplo, nosso primeiro for irá avisar a matriz numeros_aleatorios que iremos inserir dados na linha 1 e nosso segundo for irá avisar em qual coluna da linha 1 um iremos adicionar o número aleatório gerado por nosso Random rnd. Isso será feito a cada repetição, ou seja, o primeiro for será executado 100 vezes e a cada vez que ele for executado nosso segundo for será repetido 5 vezes, preenchendo assim as 5 colunas de cada linha.
Muito bem, agora queremos que os dados sejam exibidos no RichTextBox para isso, iremos inserir o seguinte código:
richTextBox1.Text += numeros_aleatorios[linhas, colunas]+" ";
Acima estamos adicionando à propriedade Text do RichTextBox, todo conteúdo gerado e salvo na matriz numeros_aleatorios, a cada vez que o segundo for é executado.
Se você executar o aplicativo agora perceberá que os números ficaram todos amontoados então, para organizarmos um pouco a exibição dentro do RichTextBox vamos inserir um código após o nosso segundo for dentro do nosso primeiro for.

richTextBox1.Text += '\n'.ToString();

Para que entenda melhor vou colocar o código completo do evento do botão Gerar números.
        private void button1_Click(object sender, EventArgs e)
        {
            int linhas, colunas;
            int[,] numeros_aleatorios = new int[100, 5];
            Random rnd = new Random();

            richTextBox1.Clear();

            for (linhas = 0; linhas < 100; linhas++)
            {
                for (colunas = 0; colunas < 5; colunas++)
                {
                    numeros_aleatorios[linhas, colunas] = rnd.Next(1, 100);
                    richTextBox1.Text += numeros_aleatorios[linhas, colunas]+" ";
                }
                richTextBox1.Text += '\n'.ToString();
            }                                    
        }

Perceba que o código grifado em amarelo foi colocado dentro do primeiro for, porém, está fora do segundo for, ou seja, ele será executado a cada repetição do primeiro for.



E é isso ai, fácil demais, não esqueça de salvar o seu projeto, o código está bem simples ainda pode ser muito melhorado, principalmente a forma como será exibido no RichTextBox mas isso é “perfumaria” ("e um perfuminhu é bão"). 

Divirta-se e até a próxima!!!
"Toda crítica é bem vinda mas, seja educado! Não sou um profissional da área sou apenas um estudante tentando ensinar a medida que vou aprendendo. Não acredite de imediato em tudo o que escrevo pois, eu posso errar também, pesquise sempre em várias fontes antes de me xingar. Se você gostou compartilhe, vote, comente, pergunte, etc."

Criado por Rodrigo Bussolo.

Nenhum comentário:

Postar um comentário