Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem C MÓDULO 4 Vetores e Matrizes Gustavo Luís F. Vicente Linguagem C 2 Vetores • Revisando: • Variável: posição de memória que armazena uma informação • identificador (nome da variável) • endereço (posição de memória) • conteúdo (valor armazenado) int val; val = 35; 35val m e m ó r i a O identificador val determina univocamente a posição de memória a acessar. Linguagem C 3 Vetores • Revisando: • Exemplo: armazenar o salário de uma pessoa float sal; scanf(“%f”, &sal); printf(“%f anos”, sal); 680,00sal m e m ó r i a Linguagem C 4 Vetores • Mas... • Problema: armazenar os salários do ano Possível solução: float sal1, sal2, ..., sal12; scanf(“%f”, &sal1); scanf(“%f”, &sal2); ... scanf(“%f”, &sal12); 680,00sal1 m e m ó r i a sal2 sal3 sal12 Linguagem C 5 Vetores • Problema: armazenar os salários do ano Solução quase perfeita: vetor float sal[12]; scanf(“%f”, &sal[0]); scanf(“%f”, &sal[1]); ... scanf(“%f”, &sal[11]); ... ... sal[3] = sal[2] * 1.1; sal[11] = 0; ... 680,00sal[0] m e m ó r i a sal[1] sal[2] sal[11] Linguagem C 6 Vetores • Problema: armazenar os salários do ano Solução perfeita: vetor em uma estrutura de repetição float sal[12]; int i; for(i=0; i<12; i++) scanf(“%f”, &sal[i]); 680,00sal[0] m e m ó r i a sal[1] sal[2] sal[11] Linguagem C 7 Vetores • Vetor • Estrutura de armazenamento de dados • Armazena valores do mesmo tipo • Possui um único identificador • Cada elemento é identificado por um índice numérico • Tamanho do vetor é o número de elementos que ele tem • O primeiro elemento é o de índice 0 (zero) • O índice do último elemento é o tamanho menos 1 • Para um vetor de 12 elementos, o último elemento é o de índice 11 float sal[12]; for(i=0; i<12; i++) // de 0 a 11 scanf(“%f”, &sal[i]); 1 #include <stdio.h> 2 main() 3 { 4 int i; 5 float sal[12]; 6 7 for(i=0; i<12; i++) 8 { 9 printf( ”\nDigite o salário do mês %d: “, i+1); 10 scanf( "%f", &sal[i] ); 11 } 12 13 printf(“\n\nMês\t\tSalário”); 14 for(i=0; i<12; i++) 15 printf( ”\n %02d\t\t%7.2f” , i, sal[i]); 16 } Linguagem C 8 Vetores EXERCÍCIOS 1) Programa que declara um vetor de 5 elementos numéricos inteiros e inicializa todos os seus elementos com zero. 2) Programa que declara um vetor de 5 elementos numéricos inteiros, pede e preenche os elementos com os valores digitados e depois mostra o dobro dos valores armazenados no vetor. 3) Programa que declara dois vetores de inteiros de 5 elementos, preenche um deles com valores digitados, depois preenche o segundo de forma inversa (o valor do primeiro elemento de um irá para o último elemento do outro, o segundo de um para o penúltimo do outro, e assim por diante). Linguagem C 9 Vetores Linguagem C 10 Vetores • Matriz • Um vetor de duas dimensões • Valem as mesmas características de um vetor • Declara-se definindo o tamanho de cada dimensão • Exempo: int mat[3][2]; float k[4][4]; char nomes[10][30]; 3 linhas 2 colunas Linguagem C 11 Vetores a00 a01 a10 a11 a20 a21 • Matriz • Como fica armazenado na memória??? int mat[3][2]; 3 linhas 2 colunas m e m ó r i a mat[0][0] mat[0][1] mat[1][0] mat[1][1] mat[2][0] mat[2][1] EXERCÍCIOS 1) Programa que declara uma matriz de 3x3 e preenche cada elemento com zero. 2) Programa que declara uma matriz de 3x3 e preenche cada elemento com o produto de seus índices. 3) Complemente o programa anterior, mostrando os valores de cada elemento da matriz. 4) Programa que preenche uma matriz de 2x2 de inteiros e informa seu determinante. Linguagem C 12 Vetores EXERCÍCIOS 1) Programa que declara uma matriz de 3x3 e preenche com dados inteiros digitados. Depois mostra os elementos das diagonais principal e secundária. 2) Programa que preenche uma matriz de 3x3 de inteiros e informa se ela é a matriz-identidade. 3) Programa que preenche duas matrizes 2x2 de inteiros e mostra o resultado da multiplicação da primeira matriz pela segunda. 4) Programa que declara um vetor de 20 char e preenche os 10 primeiros elementos do vetor com caracteres digitados. Depois mostrar os 20 elementos do vetor, juntos, na tela. Depois, na linha seguinte, mostrar os 10 primeiros elementos do vetor. Linguagem C 13 Vetores • Como armazenar uma cadeia de caracteres (string)? • Não existe um tipo string ou caractere em C • Existe apenas o tipo char, que armazena valores numérios de 1 byte • Existe a implementação de vetores • String, em C, é implementada como um vetor de caracteres • Declaração igual • Acesso a cada “caracter” (elemento) igual • Cada elemento isoladamente se comporta como uma variável do tipo char • Atribuição de valor e formatação • Ex.: • nome[0] = ‘F’; • scanf(“%c”, &nome[0]); Strings • Declarando e preenchendo (método didático) uma string: char nome[20]; nome[0] = ‘F’; nome[1] = ‘u’; nome[2] = ‘l’; nome[3] = ‘a’; nome[4] = ‘n’; nome[5] = ‘o’; nome[6] = 0; ... Linguagem C 15 Strings ‘l’ nome[0] ‘u’ ‘F’ ‘n’ ‘a’ m e m ó r i a nome[1] nome[2] ‘o’ nome[6] 0 nome[3] nome[4] nome[5] Restrições no uso de strings em C • String não é um tipo básico • Não é possível utilizar com strings, os operadores utilizados com tipos básicos • Exemplos: • nome = “Fulano”; NÃO PODE • nome = “Fulano” + “da Silva”; NÃO PODE • Lembrar que a string em C é implementada como um vetor de caracteres, ou seja, um vetor de variáveis do tipo char • Pode fazer com um elemento da string tudo o que pode ser feito com uma variável do tipo char • Exemplos: • nome[0] = ‘F’; • scanf(“%c”, &nome[0]); Strings Como processar strings “inteiras” em C? • Através de funções específicas • Biblioteca string.h • Conjunto de funções específicas de tratamento de strings • Exemplos mais usados: • strcpy(s1, s2) – copia a string s2 para a string s1 • strcmp(s1, s2) – compara as strings s1 e s2 • strlen(s) – retorna o tamanho da string s • strcat(s1, s2) – concatena as strings s1 e s2 • ... Strings Característica fundamental de uma string, em C • A string deve ser terminada com o valor numérico 0 (zero) após o último caracter “válido” da string • Por caracter válido entende-se o caracter que pertence à informação armazenada na string (embora ela possa armazenas mais informações) • Exemplo: • char fruta[10]; • strcpy(fruta, “Uva”); Strings ‘a’ fruta[0] ‘v’ ‘U’ ӂꙮ 0 String fruta fruta[1] fruta[2] fruta[9] ¤⁂ fruta[3] fruta[4] lixo Não é necessário incluir o “0 de terminação” O 0 indica o final do conteúdo válido da string 1 #include <stdio.h> 2 #include <string.h> 3 4 main() 5 { 6 char nome[20]; 7 8 printf(“\nDigite seu nome: “); 9 __purge(stdin); 10 gets(nome); 11 printf(“\nSeu nome é %s.\n”, nome); 12 } Linguagem C 19 Strings EXERCÍCIOS 1) Programa que declara uma string de 10 caracteres, preenche com os caracteres que formam a palavra “casa” e depois mostra a string na tela com a função printf(). 2) Programa que pede o nome e a idade de duas pessoas e informa quem é mais velho. 3) Programa que pede uma palavra de no máximo 20 letras e informa quantas são vogais e quantas são consoantes. 4) Programa que pede a digitação de uma string qualquer, através da função fgets(), e informa quantos caracteres foram digitados, sem utilizar a função strlen(). Linguagem C 20 Strings EXERCÍCIOS5) Duas strings são consideradas iguais se cada caracter de uma for igual ao caracter correspondente (de mesma posição) da outra. Desenvolva um programa que pede a digitação de duas strings e informa se as duas são iguais. 6) Programa que pede a digitação de uma palavra e mostra a palavra ao contrário (de trás pra frente). Ex: madeira ariedam. 7) Programa que pede a digitação de uma string e um caracter e informa se a string contém o caracter. Linguagem C 21 Strings Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21
Compartilhar