Programação de Computadores I Algoritmos e Estruturas de Dados Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras PURO
Estruturas de dados Vetor (array): trata-se de uma variável composta homogênea, composta por diversas posições de memória, todas identificadas pelo mesmo nome (atribuído a estrutura) e individualizadas através de um índice Ex.: nome: vetor [1..10] de caracter Obs.: 1 e 10 no exemplo acima são os limites inferior e superior, respectivamente, do intervalo de variação do índice Índice Nome 1 2 3 4 5 6 7 8 9 10 João Maria Bia Ana Igor José Duda Caio Leo Mara 2
Vetor O acesso a uma informação contida no vetor é realizada através do nome da estrutura + [índice do elemento], por exemplo: Escreva (Nome[5]): retorna como resultado Igor Vetores são utilizados para o armazenamento de conjuntos de dados que são do mesmo tipo e tem uma relação entre si Podemos ter vetores de diferentes tipos, mas de mesma dimensão, que compartilham a mesma variável de índice 3
Exemplo para x de 1 ate 10 faca escreval ("Digite o nome do aluno", x) leia (aluno) escreval ("Digite a nota do ", aluno) leia (nota) nota_aluno[x] <- nota nome_aluno[x] <- aluno fimpara 4
Vetor Vetores também são referenciados como sendo matrizes unidimensionais Cada célula que forma o vetor é vista como uma variável, e como tal, deve ter sua propriedades respeitadas, como a capacidade de cada campo, o tipo, etc. Ao realizar o acesso a uma célula do vetor, é necessário certificar-se de que o índice está dentro do intervalo estabelecido. Para o exemplo anterior, uma tentativa de acessar o campo Nome[11] resultaria em erro, pois o mesmo não existe 5
Vetor O uso de todas as estruturas condicionais e de repetição vistas anteriormente são válidas, a única diferença é que ao invés de referenciar uma variável, estamos referenciando uma estrutura + identificador de posição Em algumas situações, é muito mais fácil e prático manipular vetores. Por exemplo, imagine um vetor com 100 nomes de pessoas. Para imprimir todos estes nomes em sequência, basta uma estrutura de repetição simples, como no exemplo a seguir: 6
Exemplo para i de 1 até 100 faça fimpara escreval (Nomes[i]) A própria variável de controle da estrutura de repetição pode ser utilizada para controlar o índice do vetor O tipo de variável denominada string é, na verdade, um vetor de caracteres, e suas posições devem ser manipuladas uma a uma. 7
Exercícios 1. Escreva um algoritmo que leia 100 valores inteiros e positivos armazenados em um vetor e verifique se existem elementos iguais a 30. Se existirem, escreva as posições em que estão armazenados. 2. Para a estrutura de dados do exercício 1, inclua a consulta do menor e do maior elemento do vetor 3. Ainda para o vetor do exercício 1, modifique-o para que ele imprima os elementos do vetor, do primeiro ao último e do último ao primeiro 8
Exercícios 4. Escreva um programa que leia dois vetores de valores inteiros de 25 elementos cada, um somente com valores positivos e o outro, com valores negativos, e a partir destes vetores, preencha um terceiro vetor, de 50 posições, intercalando valores positivos e negativos 5. Escreva um algoritmo que, para um vetor de 20 posições preenchidas com caracteres, inverta elementos equidistantes em relação ao meio do vetor (p. ex., inverter de posição o primeiro com o último, o segundo com o penúltimo, etc.) 9
Exercícios 6. Escreva um algoritmo para corrigir provas de múltipla escolha. Cada prova tem 10 questões, valendo 1 ponto cada. Inicialmente, deve ser lido o gabarito para a correção da prova. Após isto, ele deve ler o número de alunos e as respostas do cartão do aluno (um aluno por vez). O algoritmo deve calcular e imprimir: Para cada aluno, seu número e nota; A porcentagem de aprovação, sendo a média igual a 6 A maior e a menor nota da turma 10
Exercícios 7. Um sistema de controle de estoque armazena nome, quantidade em estoque e o preço unitário de 40 mercadorias. Faça um menu que exiba as seguintes opções: 1 cadastra mercadorias 2 Exibe valor total em mercadorias da empresa 3 Sair 8. Coloque duas novas opções no algoritmo da questão anterior, que implementem as seguintes funcionalidades: Inicie a venda de produtos, informando o código do produto, quantidade e o valor final da compra Exiba a listagem de estoque dos produtos 11
Estruturas de dados Matriz: uma matriz bidimensional pode ser tratada como um vetor, que cada posição é um outro vetor. Até mesmo sua declaração terá o formato similar da usada para vetores, por exemplo: matriz: vetor [1..10,1..10] de inteiro Assim como em estruturas matemáticas, percorremos a matriz através de seus índices de linha e coluna De maneira análoga, podem ser criadas matrizes de 3 dimensões, como por exemplo, um livro, onde identificamos linhas, colunas e páginas 12
Exercícios 1. Escreva um algoritmo que faça a leitura dos dados que serão armazenados em uma matriz 4 x 4, e no final, imprima estes dados no formato que estão armazenados na matriz 2. A partir do exercício 1, faça a leitura de uma segunda matriz e imprima o resultado da multiplicação aritmética entre as matrizes 3. Escreva um algoritmo que imprima a transposta da matriz do exercício 1 13
Exercícios 4. Escreva um algoritmo que armazene o nome dos alunos de uma turma, suas respectivas notas de V1, V2 e calcule: A média de cada aluno Considerando a média como 6, guarde o status aprovado, reprovado ou prova final Encontre a maior e menor média. No caso de médias iguais, imprima ambos os resultados 5. Escreva um algoritmo que leia duas matrizes 4 x 4 e escreva uma terceira com os maiores elementos entre as primeiras 14
Estruturas heterogêneas Registro: são conjuntos de dados logicamente relacionados, mas que podem ser de diferentes tipos. São bastante úteis para organizar dados de diferentes tipos pertencentes a uma mesma entidade, por exemplo, a ficha cadastral de um funcionário de uma empresa Nome: Endereço: CEP: Data de Nascimento: Setor: CPF: Possui dependentes? (S/N): Salário: 15
Estrutura heterogêneas Exemplo: funcionario: registro nome, endereco, setor: caracter CEP, CPF, nascimento: inteiro dependentes: logico salario: real fimregistro 16