Buscar

7 UNIDADE 3 PARTE 1

Prévia do material em texto

ALGORITMOS E 
PROGRAMAÇÃO 
APLICADA
Prof. Fábio Ataide de Lima
 Estruturas de armazenamento de dados
 Estruturas homogêneas – vetores
 Pesquisa em vetores
 Ordenação de vetores
UNIDADE III – PARTE 1
TÓPICOS DESTA AULA
 Permitem o armazenamento de várias informações na 
memória sob a referência de apenas um identificador.
 Suprindo a necessidade de programas que requerem a 
entrada de dados de forma repetitiva e organizada.
 Conceitualmente falando, existem dois tipos:
• Estruturas homogêneas (arrays): permitem o armazenamento de 
dados do mesmo tipo.
• Estruturas heterogêneas (registros): permitem o
armazenamento de dados de tipos diferentes.
ESTRUTURAS DE ARMAZENAMENTO DE DADOS
 Arranjo de elementos armazenados na memória principal, 
sequencialmente, todos com o mesmo nome.
 Conjunto de variáveis de um mesmo tipo de dado, as quais 
são acessadas e referenciadas por meio de índices.
 Divididas em:
• Estruturas unidimensionais (vetores).
• Estruturas multidimensionais (matrizes).
ESTRUTURAS HOMOGÊNEAS (ARRAYS)
 Estruturas de dados homogêneas unidimensionais (contêm 
apenas 1 dimensão).
 Sintaxe para declarar um vetor em C:
 Semelhante à declaração de uma variável, podendo, 
inclusive, ser declarado na mesma linha com variáveis do 
mesmo tipo.
 Ex.:
VETORES
tipo_de_dado identificador[numero_elementos];
int vetorA[10];
 Um elemento do vetor pode ser referenciado com o seu 
nome, seguido do seu índice correspondente colocado entre 
colchetes.
 Índice: inicia sempre com zero e vai
até o tamanho do vetor - 1.
 Exemplos:
MANIPULAÇÃO DE ELEMENTOS
vetorA
0
1
2
3
4
5
...
9
int vetorA[10];
 Um elemento do vetor pode ser referenciado com o seu 
nome, seguido do seu índice correspondente colocado entre 
colchetes.
 Índice: inicia sempre com zero e vai
até o tamanho do vetor - 1.
 Exemplos:
MANIPULAÇÃO DE ELEMENTOS
vetorA
0 3
1
2
3
4
5
...
9
int vetorA[10];
vetorA[0] = 3;
 Um elemento do vetor pode ser referenciado com o seu 
nome, seguido do seu índice correspondente colocado entre 
colchetes.
 Índice: inicia sempre com zero e vai
até o tamanho do vetor - 1.
 Exemplos:
MANIPULAÇÃO DE ELEMENTOS
vetorA
0 3
1 5
2
3
4
5
...
9
int vetorA[10];
vetorA[0] = 3;
vetorA[1] = 5;
 Um elemento do vetor pode ser referenciado com o seu 
nome, seguido do seu índice correspondente colocado entre 
colchetes.
 Índice: inicia sempre com zero e vai
até o tamanho do vetor - 1.
 Exemplos:
MANIPULAÇÃO DE ELEMENTOS
vetorA
0 3
1 5
2
3
4 8
5
...
9
int vetorA[10];
vetorA[0] = 3;
vetorA[1] = 5;
vetorA[4] = vetorA[1] + vetorA[0];
 Com um tamanho constante:
 Apenas alguns elementos do vetor:
(neste caso, os demais itens são inicializados 
automaticamente com zero)
 Sem especificar a quantidade de elementos:
(o compilador determinará a quantidade)
OUTRAS FORMAS DE DECLARAR E INICIALIZAR 
VETORES
int numeros[5] = {10, 20, 30, 40, 50};
int valores[5] = {2, 4, 6};
int valores[] = {3, 5, 7};
 Leitura e escrita dos elementos de um vetor:
VETORES: EXEMPLO
#include <stdio.h>
int main(void) {
int vetorA[10], i;
for (i = 0; i < 10; i++) {
printf("Digite o %d elemento do vetor: ", i);
scanf("%d", &vetorA[i]);
}
printf("\nVetor preenchido\n");
for (i = 0; i < 10; i++)
printf("O elemento na posicao %d e: %d\n", i, vetorA[i]);
return 0;
}
 Resultado da execução do programa:
VETORES: EXEMPLO
 Tarefa muito comum nos sistemas de computação.
 Existem métodos que permitem verificar a existência de um 
valor dentro de um vetor.
 Busca sequencial:
• Percorre o vetor do primeiro ao último elemento, verificando se o 
valor de cada elemento é igual ao valor procurado.
• A busca se encerra quando o valor procurado for encontrado ou 
quando todo o vetor for analisado e o valor procurado
não for encontrado nele.
PESQUISA EM VETORES
PESQUISA EM VETORES: BUSCA SEQUENCIAL
#include <stdio.h>
int main(void) {
int valores[10], i, valor;
for (i = 0; i < 10; i++) {
printf("Digite o elemento %d do vetor: ", i);
scanf("%d", &valores[i]);
}
printf("\nValor a procurar no vetor: ", i);
scanf("%d", &valor);
// Efetua a busca sequencial
for (i = 0; i < 10; i++)
if (valores[i] == valor) break;
if (i == 10) printf("Valor nao encontrado no vetor\n");
else printf("Encontrado na posicao %d\n", i);
return 0;
}
 Processo de rearranjar os elementos de acordo com um 
critério específico com o objetivo de facilitar a localização.
 Método mais conhecido: BubbleSort
• Em dois laços de repetição encadeados, são feitas comparações 
entre os elementos atuais do laço externo e do laço interno.
• Caso o valor do primeiro seja maior que o segundo, é efetuada a 
troca de valores entre as posições.
• Esse processo se repete até que os laços de repetição sejam 
concluídos.
ORDENAÇÃO DE VETORES
ORDENAÇÃO DE VETORES:
MÉTODO DA BOLHA (BUBBLESORT)
#include <stdio.h>
int main(void) {
int vetor[10];
int i, j, troca;
for (i = 0; i < 10; i++) {
printf("Digite o elemento %d: ", i);
scanf("%d", &vetor[i]);
}
// Efetua o método da bolha
for (i = 0; i < 9; i++)
for (j = i + 1; j < 10; j++)
if (vetor[i] > vetor[j]) {
troca = vetor[i];
vetor[i] = vetor[j];
vetor[j] = troca;
}
printf("\nVetor ordenado: { ");
for (i = 0; i < 10; i++)
printf("%d ", vetor[i]);
printf("}\n");
return 0;
}
 Resultado da execução do programa:
ORDENAÇÃO DE VETORES:
MÉTODO DA BOLHA (BUBBLESORT)
 Estruturas de dados homogêneas (continuação)
 Strings
 Matrizes
PRÓXIMA AULA

Continue navegando