quinta-feira, 18 de setembro de 2014

Matrix... perdão. Matriz, vetor e array.

VETORES, ARRAY e MATRIZES



Conforme prometido, continuamos a falar da linguagem C, uma linguagem propícia para tratar do assunto "estrutura de dados".

Vamos abordar o tema de vetores e matrizes, ou seja os arrays. O que são vetores?

Vamos responder assim, em diversas situações apenas os tipos básicos de dados (int, char, float, double...), não servem para representar alguma informação. 

Existe a possibilidade de criarmos tipos de dados a partir da composição ou abstração de tipos de dados primitivos. Estes tipos são denominados a estrutura de dados, que define como os tipos de dados estão organizados, logo, quando esta estrutura for composta por conjuntos de dados do mesmo tipo, teremos um conjunto homogêneo.

Estas variáveis compostas homogêneas unidimensionais, são arranjos para representar elementos unidimensionais (linhas), do mesmo tipo, ou seja, representar um Vetor.

Assim sendo podemos afirmar que uma Matriz(Array) que seja Unidimensional é um Vetor, portanto uma matriz multidimensional são vários vetores organizados através de índices.

Podemos acessar então os dados de um vetor através de um índice, no qual estes dados estão ordenados. Os índices por sua vez, começam em 0.

Para poder visualizar melhor, vemos o exemplo abaixo, um vetor contendo os nomes dos alunos e, uma matriz contendo a nota dos alunos por trimestre.



A ilustração mostra os índices como: 1 a 4 e 1 a 50.

Porém não podemos esquecer que o 1º índice é o 0, então se quisermos 50 índices, eles serão de 0 a 49.

Veremos um pouco da sintaxe

Para declarar um vetor de inteiros fazemos:

int vet[5];  //este vetor é do tipo inteiro e tem 5 elementos de 0 a 4.

Para declarar uma matriz bidimensional:

int mtz[5][2];

Agora vamos fornecer valores para um vetor e uma matriz de números reais do tipo float:

float vet[4]={1.5,5.5,8.0,6.2};//Entre chaves, cada número separado por ','

float mtz[2][2]={{0.1,0.2},{1.1,1.2}} 


STRINGS - VETORES DE CHAR

Isso mesmo, as strings que são do tipo mais comum dentre os arrays, são conjuntos ordenados homogêneos de caracteres (char), ou seja, são vetores de char.

Em C as bibliotecas padrão possuem diversas funções para manipulação de strings como <string.h>.

Não podemos esquecer que uma string tem como seu último elemento o '\0', isto é, o número inteiro zero.

Declaração de string:


char nome_da_string[tamanho_da_string];

Exemplo:

char string[50];

char matriz[20][12];

As strings devem ser igualadas elemento a elemento não podemos então fazer:

string1=string2;

Existem diversas maneiras de se tratar e manipular este tipo de arranjo, 

Ficam aqui os comandos mais utilizados:


  • gets /* Pega os caracteres digitados pelo teclado e organizam na string correspondente */ 
Ex: gets(string1);

  • strcpy /* Copia uma string em outra string, a string1(origem) recebe a string2(destino)*/
Ex: strcpy(string2, string1);

  • strcat /*Concatena duas strings, a string1 de origem, permanece inalterada, mas seu conteúdo será anexado ao fim da string2 de destino.*/
Ex: strcat(string2, string1);

  • strlen /* Retorna um valor inteiro correspondente ao tamanho da string em questão, serve para medir o número de elementos*/
Ex: tamanho = strlen(string1); //a variável int tamanho recebe o valor inteiro

  • strcmp /* Compara duas strings, se as duas strings forem idênticas, ela retorna o valor 0, se não forem idênticas o valor retornado será diferente de 0*/
Ex: 

if ( (strcmp(string1, string2) == 0)
{
printf("Acesso liberado");
}
else
{
printf("Acesso negado");
}

Reparem que neste trecho de código, eu comparei duas strings, o que poderiam ser uma string representando a senha armazenada em banco de dados, e a outra representando a senha digitada pelo usuário. Ao comparar as duas, se forem idênticas, a mensagem de acesso liberado aparece, pois foi digitada a senha correta. Caso contrário, se não forem iguais, a senha obviamente está errada e a mensagem aparece de acesso negado.

Segue uma vídeo aula bastante clara sobre strings, caso haja alguma dúvida sobre o tema.


















Nenhum comentário:

Postar um comentário