Linguaguem de Programação II Aula 4 Estruturas Homogêneas – Vetores e Matrizes Strings Prof. Luiz José Hoffmann Filho [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é uma “variável composta” capaz de armazenar uma quantia determinada de valores; Um vetor computacional é inspirada no vetor matemático, que também é capaz de armazenar um conjunto de valores. [email protected] Vetores Um conjunto de variáveis do mesmo tipo, que possuem o mesmo identificador(nome) e são alocados seqüencialmente na memória; Como as variáveis tem o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura. [email protected] Vetores Exemplo de vetor: 0 1 2 3 4 5 6 8 37 0 109 45 2 78 0 1 2 3 4 5 6 [email protected] Vetores Declaração de um vetor: <tipo> <nome da variável> [<Tamanho>] ; Onde : <Tamanho> - representa o tamanho total do vetor; < tipo > - representa qualquer um dos tipos básicos ou tipo anteriormente definido. [email protected] Vetores Exemplo de declaração: int vetor [15]; float valores[10]; Inicialização de vetores: int vet[10] = {1,2,3,4,5,6,7,8,9,10}; [email protected] Vetores Atribuindo valores ao vetor: - As atribuições em vetor exigem que seja informada em qual de suas posições o valor ficará armazenado. vetor[0] = 56; vetor[5] =100; valor[1] = 8.9; valor[4] = 0.5; valor[3] = 4.6; nomes = 'a'; nomes = “Jose Silva”; nomes = '*'; [email protected] Vetores Preenchendo um vetor: - Preencher um vetor significa atribuir valores a todas as suas posições. - Deve-se implementar um mecanismo que controle o valor do índice. #include <stdio.h> int main() { int vetor[5]; int i; for(i=0; i<5; i++) { printf("Digite um valor"); scanf("%d", &vetor[i]); } return 0; } [email protected] Vetores Mostrar um elemento de um vetor, também é necessário utilizar índices: #include <stdio.h> int main() { int vetor[5]; int i; for(i=0; i<5; i++) { printf("vetor[%d] %d\n",i,vetor[i]); } return 0; } [email protected] Trabalhando com vetores Podemos usar os vetores como usamos qualquer outra variável para somar, subtrair e etc. #include <stdio.h> int main() { int vetor[5]; int i, soma; for(i=0; i<5; i++) { soma = soma + vetor[i]; } soma = vetor[1] + vetor[1] + vetor[2] + vetor[3] + vetor[4]; return 0; } [email protected] Matrizes Matriz também é conhecido como variável composta homogênea multidimensional; Uma matriz computacional é uma “variável composta” capaz de armazenar uma quantia determinada de valores; Uma matriz computacional é inspirada na matriz matemático, que também é capaz de armazenar um conjunto de valores. [email protected] Matrizes Um conjunto de variáveis do mesmo tipo, que possuem o mesmo identificador(nome) e são alocados seqüencialmente na memória; Como as variáveis tem o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura. Uma variável do tipo matriz precisa de um índice para cada uma de suas dimensões. [email protected] Matrizes Exemplo de Matriz: 0 1 2 0 1 2 3 4 5 [email protected] 6 Matrizes Declaração de uma matriz: <tipo> <nome variável> [<linhas>][<colunas> ] ; Onde : <linhas> : Quantidade de linhas; <colunas> : Quantidade de colunas; <nome variável>: Nome que você dará a sua matrizidentificação; <tipo>: tipo da matriz. [email protected] Matrizes Exemplo de declaração: int numero[4][4]; float valores[10][10]; Inicialização: Int sqrs [4][2]= {1,1, 2,4, 3,9, 4,16} [email protected] Matrizes Atribuindo valores a matriz: - As atribuições em matrizes exigem que seja informada a linha e a coluna para saber onde o valor ficará armazenado. numero[0][1] = 56; Numero[3][4] = 100; valores[1][2] = 8.9; valores[1][3] = 0.5; nomes[0][1] = 'a'; nomes[1][3] = “Jose Silva”; nomes[2][7] = '*'; [email protected] Matrizes Preenchendo uma matriz: - Preencher uma matriz significa atribuir valores a todas as suas posições. - Deve-se implementar um mecanismo que controle o valor do índice. #include <stdio.h> int main () { int mtrx [20][10]; int i,j,count; count=1; for (i=0;i<20;i++) { for (j=0;j<10;j++) { mtrx[i][j]=count; count++; } } return(0); } [email protected] Matrizes Mostrando um elemento de uma matriz, também é necessário utilizar índices: #include <stdio.h> int main () { int mtrx [20][10]; int i,j; for (i=0;i<20;i++) { for (j=0;j<10;j++) { printf(“mtrx[%d][%d] = %d \n”, i,j,mtrx[i][j]); } } return(0); [email protected] Trabalhando com matrizes Podemos usar as matrizes como usamos qualquer outra variável para somar, subtrair e etc. #include <stdio.h> int main () { int mtrx [20][10]; int i,j,count; count=0; for (i=0;i<20;i++) { for (j=0;j<10;j++) { count = count + mtrx[i][j]; } } printf(“Count %d\n”, count); return(0); [email protected] MATRIZ DE STRINGS #include <stdio.h> int main () { char strings [5][100]; int count; for (count=0;count<5;count++) { printf ("\n\nDigite uma string: "); gets (strings[count]); } printf ("\n\n\nAs strings que voce digitou foram:\n\n"); for (count=0;count<5;count++) { printf ("%s\n",strings[count]); } return(0); } Strings – #include <string.h> • • • O uso mais comum de vetores unidimendsionais é como string de caracteres. Em C, uma string é definida como um vetor de caracteres que é terminado por um nulo “\0”. Por essa razão, é necessário declarar vetores com sendo um caractere mais longo que a maior string que elas devem guarda. STRINGS • Por exemplo, para declarar um vetor str que guarda uma string de 10 caracteres, •char str[11]; •Isso reserva espaço para o nulo no final da string. • • • Em C se faz necessário o uso de algumas funções de manipulação de strings. Inicialização: char str[14] = “Eu gosto de C”; STRING - STRCPY strcpy (string_destino, string_origem); A função strcpy() copia a string-origem para a string- destino. Seu funcionamento é semelhante ao da rotina apresentada na seção anterior. As funções apresentadas nestas seções estão no arquivo cabeçalho string.h. A seguir apresentamos um exemplo de uso da função strcpy(): #include <stdio.h> #include <string.h> int main () { char str1[100],str2[100],str3[100]; printf ("Entre com uma string: "); gets (str1); strcpy (str2,str1); /* Copia str1 em str2 */ strcpy (str3,"Voce digitou a string "); printf ("\n\n%s%s",str3,str2); return(0); } STRING - STRCAT strcat (string_destino,string_origem); A string de origem permanecerá inalterada e será anexada ao fim da string de destino. Um exemplo: #include <stdio.h> #include <string.h> int main () { char str1[100],str2[100]; printf ("Entre com uma string: "); gets (str1); strcpy (str2,"Voce digitou a string "); strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ printf ("\n\n%s",str2); return 0; } STRING - STRLEN strlen (string); A função strlen() retorna o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen(). Um exemplo do seu uso: #include <stdio.h> #include <string.h> int main () { int size; char str[100]; printf ("Entre com uma string: "); gets (str); size=strlen (str); printf ("\n\nA string que voce digitou tem tamanho %d",size); return(0); } STRING - STRCMP strcmp (string1,string2); A função strcmp() compara a string 1 com a string 2. Se as duas forem idênticas a função retorna zero. Se elas forem diferentes a função retorna não-zero. Um exemplo da sua utilização: #include <stdio.h> #include <string.h> int main () { char str1[100],str2[100]; printf ("Entre com uma string: "); gets (str1); printf ("\n\nEntre com outra string: "); gets (str2); if (strcmp(str1,str2)) printf ("\n\nAs duas strings são diferentes."); else printf ("\n\nAs duas strings são iguais."); return 0; } STRING - STRCAT A função strcat() tem a seguinte forma geral: strcat (string_destino,string_origem); A string de origem permanecerá inalterada e será anexada ao fim da string de destino. Um exemplo: #include <stdio.h> #include <string.h> int main () { char str1[100],str2[100]; printf ("Entre com uma string: "); gets (str1); strcpy (str2,"Voce digitou a string "); strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ printf ("\n\n%s",str2); return 0; } String – strchr e strstr • A função strchr(s1, ch), retorna um ponteiro para a primeira ocorrência de ch, s1. • A função strstr(s1, s2), retorna um ponteiro para a primeira ocorrência de s2 em s1. MATRIZES DE STRING. • • • • Em uma matriz de string, teremos as linhas que seram a quantidade de string armazenada e as colunas que seram o tamanho das string que devem ser armazenadas. Exemplo : char str_array[30][80]. Para acessar basta especificar o número da linha Exemplo: gets(str_array[2]); Exercícios - Vetores 1. 2. 3. Faça um programa para ler 15 idades diferentes e guarde em um vetor. Depois calcular e mostrar a média das idades. Faça um programa para ler 10 números e guardar em um vetor. Depois calcular e mostrar qual número é par e qual seu índice no vetor. Faça um programa que preencha dois vetores de dez elementos inteiros cada e mostre um terceiro vetor resultante da intercalação deles. Exercícios - Matrizes 1. Faça um programa que preencha uma matriz 10x10 com números inteiros e depois multiplique cada elemento da matriz por 2 e guarde em uma nova matriz e depois mostre o resultado. 2. Faça um programa para ler 4 notas de 3 alunos e guarde os valores em uma matriz. Depois calcular e mostrar a média das notas de cada aluno. [email protected] Exercícios - Strings 1. 2. 3. 4. 5. Faça um programa que lê uma string de 5 caracteres e o escreve invertido. Faça um programa que lê uma string de 4 caracteres e inverte a primeira letra da string com a última. O programa deve escrever a string original e a alterada. Faça uma programa que lê o nome é o sobrenome de uma pessoa separadamente. O programa deve juntar as duas strings em uma só e escrever na tela: a nova string, o seu númeor de caracteres, a sua primeira e a última letra. Faça uma função que receba 2 strings (A e B) e retorne uma terceira string (C) formada pelos caracteres de A e B intercalados. Ex.: Se A='Quarta' e B='Segunda', a resposta deve ser 'QSueagrutnada'. Faça um programa que leia 4 palavras pelo teclado, e armazene cada palavra em uma string. Depois, concatene todas as strings lidas numa única string. Por fim apresente esta como resultado ao final do programa.