Programação I Matrizes e Strings Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br
Matrizes Matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Um elemento específico em uma matriz é acessado por meio de um índice; Em C, todas as matrizes consistem em posições contíguas da memória;
Matrizes Matrizes podem ter de uma a várias dimensões; Matrizes de uma dimensão geralmente são chamados de vetores; Em C, os vetores são sempre indexados a partir de zero. Portanto, o último elemento de um vetor de tamanho N ocupa a posição N - 1 do vetor.
Matrizes Para criar um vetor, declaramos uma variável com sufixo [n], onde n é uma constante que indica o número de elementos a serem alocados no vetor; Exemplo: int v[5];
Matrizes A quantidade de armazenamento necessário para guardar uma matriz está diretamente relacionada com seu tamanho e seu tipo; Para um vetor, o total de bytes é calculado assim: total em bytes = sizeof(tipo) * tamanho do vetor
Matrizes C não verifica o limite das matrizes; Cabe ao programador fazer a verificação dos limites onde for necessário; Exemplo:
Inicialização de vetores Pode-se inicializar explicitamente no momento em que for declarado; Os valores iniciais devem ser fornecidos entre chaves e separados por vírgulas; Exemplo: float moedas[5] = {1.00, 0.50, 0.25, 0.10, 0.05}; int numeros[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Inicialização de vetores Quando é inicializado, o tamanho do vetor pode ser omitido. Exemplo: char dias[ ] = {'D', 'S', 'T', 'Q', 'Q', 'S', 'S'}
Inicialização de vetores Exemplo
Strings O uso mais comum de vetores é como string de caracteres; Em C, uma string é definida como um vetor de caracteres que terminada por um nulo; Um nulo é especificado como '\0'. É o primeiro elemento da tabela ASCII e tem código igual a zero;
Inicialização de strings Pode ser no momento da declaração; Pode-se fornecer os caracteres entre chaves separados por vírgula ou fornecer os caracteres entre aspas; Exemplo: char x[ ] = "teste"; char y[ ] = {'d','o','i','s'} ;
Manipulação de strings Funções de manipulação de strings. Biblioteca strings.h strcpy(s1,s2): copia s2 em S1 strcat(s1,s2): concatena s2 ao final de s1 strlen(s1): retorna o tamanho de s1
Manipulação de strings Funções de manipulação de strings. Biblioteca strings.h strcmp(s1, s2): retorna 0 se s1 e s2 são iguais, menor que 0 se s1 < s2 e maior que 0 se s1 > s2 strchr(s1, ch): retorna um ponteiro para a primeira ocorrência de ch em s1 strstr(s1, s2): retorna um ponteiro para a primeira ocorrência de s2 em s1
Matrizes bidimensionais Matriz é uma coleção homogênea bidimensional, cujos elementos são distribuídos em linhas e colunas; Uma matriz I X J possui 0 a I - 1 linhas e 0 a J - 1 colunas. Para acessar uma posição específica de uma matriz M, deve-se escrever M[i][j], onde i é o número da linha e j o número da coluna.
Matrizes bidimensionais Tecnicamente uma matriz é um vetor cujos elementos são vetores; Exemplo da declaração de uma matriz 3X4 de números inteiro: int mat[3][4]
Matrizes bidimensionais A quantidade de armazenamento necessário para guardar uma matriz está diretamente relacionada com seu tamanho e seu tipo; Para uma matriz bidimensional, o total de bytes para o seu armazenamento é calculado assim: total em bytes = tamanho do 1º índice * tamanho do 2º índice * sizeof(tipo);
Inicialização de matrizes Como uma matriz é simplesmente um vetor cujos elementos são vetores, a sintaxe não traz novidades.
Inicialização de matrizes É permitido omitir a primeira dimensão de uma matriz. Neste caso, a quantidade de linhas é determinada a partir dos elementos fornecidos inicialmente.
Matriz de strings Para criar uma matriz de strings, usa-se uma matriz bidimensional de caracteres; O tamanho do 1º índice indica o número de strings O tamanho do 2º índice especifica o comprimento máximo de cada string;
Matriz de strings Exemplo de uma matriz de 5 strings, cada uma com comprimento de 29 caracteres; char palavras[5][30]; Para acessar uma string individualmente, devese especificar apenas o 1º índice. Vejamos o exemplo!
Obrigado!!!