Baixe o app para aproveitar ainda mais
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
Compartilhar