Upload
vuongthuan
View
217
Download
0
Embed Size (px)
Citation preview
Vetores, Matrizes e Strings | Introdução à Computação 1 de 272014 © MdaS
Estruturas de DadosEstruturas de DadosEstruturas de DadosEstruturas de Dados
� Nem sempre, a manipulação de dados é feita por simples elementos...
Vetores, Matrizes e Strings | Introdução à Computação 2 de 272014 © MdaS
Estruturas de DadosEstruturas de DadosEstruturas de DadosEstruturas de Dados
� Estruturas de dados permitem que um conjunto de valores em comum sejam agrupados� De acordo com tipo e dimensão das estruturas
� Principais tipos de estruturas de dados são:� Números
� Vetores (unidimensional)
� Matrizes (multidimensional)
� Caracteres� Strings (palavras ou cadeias de caracteres)
� Personalizado� Registros (structs)
Vetores, Matrizes e Strings | Introdução à Computação 3 de 272014 © MdaS
VetoresVetoresVetoresVetores
� São um conjunto de dados de um mesmo tipo que são armazenados de acordo com um índice� Assemelham-se às matrizes linha e coluna
� Diferentemente da Matemática, o primeiro elemento de um vetor possui o índice 0
v[1] = 54 v[0] = 12
v[2] = -63 v[4] = -81
v
1430-818-635412
[6][5][4][3][2][1][0]
Vetores, Matrizes e Strings | Introdução à Computação 4 de 272014 © MdaS
ObservaObservaObservaObservaççççãoãoãoão
� Muito cuidado ao confundir vetor (Programação) com vetor (Matemática)!!
� Os significados são diferentes, apesar do nome VETORVETORVETORVETOR ser inspirado nos valores ordenados de um vetor multidimensional no Rn
Vetores, Matrizes e Strings | Introdução à Computação 5 de 272014 © MdaS
DeclaraDeclaraDeclaraDeclaraçççção de um Vetorão de um Vetorão de um Vetorão de um Vetor
� Os vetores são declarados na seguinte sequência:� Tipo primitivo dos elementos
� int
� float
� char
� Nome do vetor� Assim como é feito uma variável
� Quantidade de elementos do vetor� Deve ser colocado entre colchetes: [numero]
� Com um número já afixado de elementos
int notas[10];
float temperatura[50];
Vetores, Matrizes e Strings | Introdução à Computação 6 de 272014 © MdaS
AtribuiAtribuiAtribuiAtribuiçççção dos Elementos de Vetorão dos Elementos de Vetorão dos Elementos de Vetorão dos Elementos de Vetor
� Pode ser feita:� Atribuição
� Leitura
nota[0] = 7;
nota[1] = 4;
nota[2] = 6;
printf("Entre com a 1a. Temperatura: ");
scanf("%f", &temperatura[0]);
printf("Entre com a 2a. Temperatura: ");
scanf("%f", &temperatura[1]);
printf("Entre com a 3a. Temperatura: ");
scanf("%f", &temperatura[2]);
Vetores, Matrizes e Strings | Introdução à Computação 7 de 272014 © MdaS
AtribuiAtribuiAtribuiAtribuiçççção dos Elementos de Vetorão dos Elementos de Vetorão dos Elementos de Vetorão dos Elementos de Vetor
� Para evitar uma grande quantidade de comandos repetitivos, pode ser utilizada uma estrutura de repetição
printf("Entre com a 1a. Temperatura: ");
scanf("%f", temperatura[0]);
printf("Entre com a 2a. Temperatura: ");
scanf("%f", temperatura[1]);
printf("Entre com a 3a. Temperatura: ");
scanf("%f", temperatura[2]);
printf("Entre com a 4a. Temperatura: ");
scanf("%f", temperatura[3]);
printf("Entre com a 5a. Temperatura: ");
scanf("%f", temperatura[4]);
printf("Entre com a 6a. Temperatura: ");
scanf("%f", temperatura[5]);
for (i = 0; i < 50; i++)
{
printf("Entre com a %da. Temperatura: ", i);
scanf("%f", temperatura[i]);
}
Vetores, Matrizes e Strings | Introdução à Computação 8 de 272014 © MdaS
ExemploExemploExemploExemplo
� Calcular e exibir o produto escalar entre dois vetores de dimensão 10, inseridos pelo usuário
#include <stdio.h>
#include <stdlib.h>
float v[10], w[10];
float prod;
int i;
int main()
{
printf("Vetor v:\n");
for (i = 0; i < 10; i++)
scanf("%f", &v[i]);
printf("Vetor w:\n");
for (i = 0; i < 10; i++)
scanf("%f", &w[i]);
prod = 0;
for (i = 0; i < 10; i++)
prod += v[i]*w[i];
printf("Produto escalar = %f\n", prod);
system("PAUSE");
}
Vetores, Matrizes e Strings | Introdução à Computação 9 de 272014 © MdaS
ExercExercExercExercíííícioscioscioscios
1. Dado um vetor de números aleatórios de dimensão N, calcule a soma de seus elementos ímpares
2. Uma vez lida uma sequência de 10 números inteiros, imprimi-la na ordem inversa à da leitura.
3. Utilize um vetor para armazenar as notas de um aluno nos quatro bimestres. Calcule a média e armazene em um outro vetor a diferença entre a nota de cada bimestre e a média final obtida. Exiba a média e a diferença na tela.
4. Dado um número inicial e uma razão, calcule e exiba os termos de uma PG (Progressão Geométrica), armazenando-os em um vetor de tamanho 12.
Vetores, Matrizes e Strings | Introdução à Computação 10 de 272014 © MdaS
MatrizesMatrizesMatrizesMatrizes
� Baseia-se na ideia da matriz matemática
� Vetor de vetores� Exemplo:
19-234123112054[1]
6229462-54-28911[2]
12117653-234678993435[3]
90-2423121-58-45[4]
824-82109-253[5]
5674-2-90862737[6]
-1430-818-635412[0]
A[][] [6][5][4][3][2][1][0]
Vetores, Matrizes e Strings | Introdução à Computação 11 de 272014 © MdaS
DeclaraDeclaraDeclaraDeclaraçççção de uma Matrizão de uma Matrizão de uma Matrizão de uma Matriz
� As matrizes são declaradas na seguinte sequência:� Tipo primitivo dos elementos
� int
� float
� char
� Nome da matriz� Assim como é feito uma variável
� Quantidade de elementos da matriz� Deve ser colocado entre colchetes: [numero][numero]
� Com um número já afixado de elementos
� Pode ser feita de duas ou mais dimensões
int A[7][7];
float fluxo[30][60];
float data[40][40][40];
Vetores, Matrizes e Strings | Introdução à Computação 12 de 272014 © MdaS
AtribuiAtribuiAtribuiAtribuiçççção dos Elementos de Matrizão dos Elementos de Matrizão dos Elementos de Matrizão dos Elementos de Matriz
� Pode ser feita:� Atribuição
A[0][0] = 12;
A[0][1] = 54;
A[0][2] = -63;
A[0][3] = 8;
A[0][4] = -81;
19-234123112054[1]
6229462-54-28911[2]
12117653-234678993435[3]
90-2423121-58-45[4]
824-82109-253[5]
5674-2-90862737[6]
-1430-818-635412[0]
A[][] [6][5][4][3][2][1][0]
A[1][6]A[1][5]A[1][4]A[1][3]A[1][2]A[1][1]A[1][0][1]
A[2][6]A[2][5]A[2][4]A[2][3]A[2][2]A[2][1]A[2][0][2]
A[3][6]A[3][5]A[3][4]A[3][3]A[3][2]A[3][1]A[3][0][3]
A[4][6]A[4][5]A[4][4]A[4][3]A[4][2]A[4][1]A[4][0][4]
A[5][6]A[5][5]A[5][4]A[5][3]A[5][2]A[5][1]A[5][0][5]
A[6][6]A[6][5]A[6][4]A[6][3]A[6][2]A[6][1]A[6][0][6]
A[0][6]A[0][5]A[0][4]A[0][3]A[0][2]A[0][1]A[0][0][0]
A[][] [6][5][4][3][2][1][0]
Vetores, Matrizes e Strings | Introdução à Computação 13 de 272014 © MdaS
AtribuiAtribuiAtribuiAtribuiçççção dos Elementos de Matrizão dos Elementos de Matrizão dos Elementos de Matrizão dos Elementos de Matriz
� Na leitura, podem ser utilizadas estruturas de repetição
printf("Entre com os elementos da matriz:\n");
scanf("%f", &fluxo[0][0]);
scanf("%f", &fluxo[0][1]);
scanf("%f", &fluxo[0][2]);
...
scanf("%f", &fluxo[29][58]);
scanf("%f", &fluxo[29][59]);
printf("Entre com os elementos da matriz:\n");
for (i = 0; i < 30; i++)
for (j = 0; j < 60; j++)
scanf("%f", &fluxo[i][j]);
Vetores, Matrizes e Strings | Introdução à Computação 14 de 272014 © MdaS
ManipulaManipulaManipulaManipulaçççção da Matrizão da Matrizão da Matrizão da Matriz
� É feita elemento a elemento
� Ex.: Calcular a matriz identidade de dimensão N = 10
#define N 10
int main()
{
int I[N][N]; // matriz identidade de ordem N
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
{
if (i == j)
I[i][j] = 1;
else
I[i][j] = 0;
}
system("PAUSE");
}
Vetores, Matrizes e Strings | Introdução à Computação 15 de 272014 © MdaS
ExercExercExercExercíííícioscioscioscios
1. Construa e exiba em tela uma matriz, onde devem ser inseridos pelo usuário suas dimensões. Cada elemento da matriz deve ser calculado como:
aij = i + 2j
2. Faça um algoritmo que peça ao usuário a dimensão e os elementos das matrizes quadradas A e B, calcular e exibir em tela o resultado de A - Bt
Vetores, Matrizes e Strings | Introdução à Computação 16 de 272014 © MdaS
ExercExercExercExercíííícioscioscioscios
3. Faça um programa que calcule e exiba o produto entre duas matrizes, com suas dimensões e os seus elementos informados pelo usuário.� O programa deve se certificar, inicialmente, se é possível
fazer a multiplicação, ou seja, se o no no no núúúúmero de colunas da 1mero de colunas da 1mero de colunas da 1mero de colunas da 1ªªªªmatriz matriz matriz matriz éééé igual ao nigual ao nigual ao nigual ao núúúúmero de linhas da 2mero de linhas da 2mero de linhas da 2mero de linhas da 2ªªªª;
� Dado que, a matriz C é a matriz resultante, o cálculo de cada elemento deve ser feito da seguinte forma:
Cij = Cij + Aik * Bkj� Onde:
� i = {1, ..., nº de linhas de A} e � j = {1, ..., nº de colunas de B}
Vetores, Matrizes e Strings | Introdução à Computação 17 de 272014 © MdaS
StringsStringsStringsStrings
� Até então, sabemos manipular caracteres de modo isolado...
� E se for necessária a manipulação de palavras?
Vetores, Matrizes e Strings | Introdução à Computação 18 de 272014 © MdaS
StringsStringsStringsStrings
� Em suma, strings são as cadeias de caracteres que podem formar desde uma simples palavra até um texto grande
� São vetores compostos pelo tipo char
� Sempre terminam com o caractere '\0'� Invisível na tela
� Não necessitam preencher todos os espaços do vetor
Valor
A[]
\0alenaJ
[6][5][4][3][2][1][0]
\0
[7] [8]
a
[6]
Valor
A[]
letroP
[9][5][4][3][2][1][0]
Vetores, Matrizes e Strings | Introdução à Computação 19 de 272014 © MdaS
AtribuiAtribuiAtribuiAtribuiçççção de Stringsão de Stringsão de Stringsão de Strings
� Podem ser feitas diversas formas de atribuição de strings� Inicialização
� Leitura
� Cópia
char cidade[] = "Guaratingueta";
char cidade[30];
gets(cidade);
#include <string.h>
char destino[20], origem[] = "Pindamonhangaba";
strcpy(destino, origem);'
Vetores, Matrizes e Strings | Introdução à Computação 20 de 272014 © MdaS
Leitura de uma StringLeitura de uma StringLeitura de uma StringLeitura de uma String
� A função scanf() é utilizada para a leitura de valores� Porém, é feita a leitura até o primeiro espaço da string
� Para a leitura de uma string, portanto, recomenda-se utilizar a função gets(variavel);� É feita a leitura dos caracteres até ser pressionada a tecla Enter
scanf("%s", &cidade);
gets(nome);
Vetores, Matrizes e Strings | Introdução à Computação 21 de 272014 © MdaS
ExibiExibiExibiExibiçççção de uma Stringão de uma Stringão de uma Stringão de uma String
� Além da função printf(), pode ser utilizada a função puts(variavel)
� Cada chamada corresponde a uma linha da saída
� A função printf() permite a exibição em várias linhas e a concatenação de variáveis e mensagens
printf("%s %s\n", nome, sobrenome);
puts(nome);
puts(sobrenome);
Vetores, Matrizes e Strings | Introdução à Computação 22 de 272014 © MdaS
ExemploExemploExemploExemplo
� Inserir o teu nome completo e verificar quantas letras aparecerão (Pereira, 2010):
#include <stdio.h>
#include <stdlib.h>
char nome[80];
int i, cont;
int main()
{
printf("Digite o seu nome: ");
gets(nome);
cont = 0;
for (i = 0; nome[i] != '\0'; i++)
{
if (nome[i] != ' ')
cont++;
}
printf("No nome %s existem %d letras", nome, cont);
system("PAUSE");
}
Vetores, Matrizes e Strings | Introdução à Computação 23 de 272014 © MdaS
ExemploExemploExemploExemplo
� Verificar se dois nomes são idênticos (Pereira, 2010)#include <stdio.h>
#include <stdlib.h>
char nome1[80], nome2[80];
int i, igual;
int main()
{
printf("Digite o primeiro nome: "); gets(nome1);
printf("Digite o segundo nome: "); gets(nome2);
igual = 1;
for (i = 0; nome1[i] != '\0'; i++)
if ( nome1[i] != nome2[i] )
igual = 0;
if (igual == 1)
puts("Os nomes são iguais");
else
puts("Os nomes são diferentes");
system("PAUSE");
}
Vetores, Matrizes e Strings | Introdução à Computação 24 de 272014 © MdaS
FunFunFunFunçççções com Stringsões com Stringsões com Stringsões com Strings
� Funções inclusas na biblioteca <string.h>
Retorna o posicionamento do caractere na string. strchr(x)
Copia o conteúdo da primeira string para a segundastrcpy(n1, n2)
Concatena duas stringsstrcat(n1, n2)
Verifica se duas strings são idênticasstrcmp(n1, n2)
Tamanho do stringstrlen(n1)
FinalidadeFinalidadeFinalidadeFinalidadeFunFunFunFunççççãoãoãoão
Vetores, Matrizes e Strings | Introdução à Computação 25 de 272014 © MdaS
ExercExercExercExercííííciociociocio
� Inserir o teu nome completo e verificar quantas vogais aparecerão:
PRAZER, O MEU NOME É PEDRO DE ALCÂNTARA FRANCISCO ANTÓNIO JOÃO CARLOS XAVIER DE PAULA MIGUEL RAFAEL JOAQUIM JOSÉGONZAGA PASCOAL CIPRIANO
SERAFIM DE BRAGANÇA E BOURBON
Vetores, Matrizes e Strings | Introdução à Computação 26 de 272014 © MdaS
ExercExercExercExercíííícioscioscioscios
1. Teste de DNA: faça um programa que leia uma sequência de letras que compõem as bases nitrogenadas (com as letras T, G, C e A) e exiba a sequência correspondente, lembrando que:� Timina => Adenina
� Guanina => Citosina
� Citosina => Guanina
� Adenina => Timina
Vetores, Matrizes e Strings | Introdução à Computação 27 de 272014 © MdaS
ExercExercExercExercíííícioscioscioscios
2. Baseado no programa anterior, faça um outro algoritmo que faça as seguintes tarefas:a. Exiba o RNA correspondente a cadeia de DNA descrita,
dado que:� Timina => Adenina
� Guanina => Citosina
� Citosina => Guanina
� Adenina => Uracila
b. Exiba a quantidade existente de cada base nitrogenada contida na cadeia de RNA
c. Exiba o resultado de como ficaria o seu nome, utilizando as regras acima