Algoritmos Variáveis estruturadas Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.brcamboriu.edu.br
Roteiro Variáveis estruturadas Arrays Vetores Matrizes
Variáveis estruturadas Os tipos primitivos (inteiro, real, caracter e lógico) não são suficientes para representar todos os tipos de dados; Geralmente são utilizados os tipos primitivos para construir outras estruturas de dados mais complexas; Essas são chamadas de Estruturas Compostas de Dados Dividem-se em duas formas fundamentais: homogêneas (arrays: vetores e matrizes) heterogêneas (registros)
Vetores Com os conhecimentos que possuímos até agora, podemos concluir que ao utilizarmos variáveis, conseguimos armazenar apenas um valor por vez; Agora, imagine um programa que precisa armazenar as notas das 5 provas realizadas por um aluno; Seria necessário criar cinco variáveis para armazenar as notas: NOTA1, NOTA2, NOTA3, NOTA4, NOTA5: inteiro Porém, existem estruturas que permitem agrupar várias informações dentro de uma mesma variável. Estas estruturas são chamadas de vetores e matrizes.
Vetores Um vetor também é chamado de array unidimensional; Este tipo de estrutura é representado por seu nome, tamanho e seu tipo: <variavel>: vetor[inicio..fim] de <tipo_de_dado> onde: variavel é o nome atribuído ao vetor; inicio e fim determinam o tamanho atribuído ao vetor, em número de elementos; tipo_de_dado é o tipo de elemento armazenado (inteiro, real...).
Vetores Como já visto, uma variável comum somente pode conter um valor por vez; No caso dos vetores, estes podem armazenar mais de um valor por vez, pois são dimensionados exatamente para este fim; Porém, todos os valores devem ser do mesmo TIPO DE DADO; Exemplo de vetor para armazenar as cinco notas do aluno: notas : vetor[1..5] de real
Vetores A leitura e exibição de dados nos vetores são feitas indicando individualmente quais elementos se deseja ler ou imprimir; Exemplo: NOTA[1] <- 5.2 NOTA[2] <- 8.0 NOTA[3] <- 9.2 NOTA[4] <- 7.5 NOTA[5] <- 8.3 Observe que o nome é um só, o que muda é a informação indicada dentro dos colchetes (índice do vetor) Índiceé o endereço de onde o valor está armazenado, ou seja, a posição da nota do aluno no vetor; Podemos imaginar o vetor como uma tabela com cinco colunas: NOTA 5.2 8.0 9.2 7.5 8.3
Vetores algoritmo "LISTA_NOME" var nome: vetor[1..10] de caracter i: inteiro inicio escreval("listagem de nomes") escreval(" *** Entrada dos Dados *** ") para i de 1 ate 10 faca escreva("digite o ", i:2, "o. nome: ") leia(nome[i]) fimpara escreval(" *** Apresentação dos Nomes *** ") para i de 1 ate 10 faca escreval("nome ", i:2, " --> ", nome[i]) fimpara escreval() fimalgoritmo
Matrizes Imagine agora que queremos reescrever o programa de notas anteriormente visto, de forma que possamos controlar as notas de cinco alunos ao invés de apenas um; Pelo que vimos até agora, precisaríamos criar cinco vetores, sendo um para cada aluno; Esta é uma solução para esse problema, porém, torna nosso trabalho mais cansativo.
Matrizes Para facilitar o trabalho nesse caso, existem as chamadas matrizes; Ou arrays multidimensionais A matriz mais comum é a de duas dimensões: C1 C2 C3 C4 C5 C6 C7 C8 L1 L2 L3 L4 L5 L6 L7 L8
Matrizes Uma matriz de duas dimensões estará sempre fazendo menção a linhas e colunas e será representada por seu nome e seu tamanho: <matriz>: vetor[li..lf, Ci..Cf] de <tipo_de_dado> onde: matriz é o nome atribuído à matriz; Li e Lf determinam o número de linhas da matriz; Ci e Cf determinam o número de colunas da matriz; tipo_de_dado é o tipo de elemento armazenado (inteiro, real...).
Matrizes Exemplo: Matriz das notas de cinco alunos Pedro Ana Joana João Mauro 8.5 9.0 7.8 8.9 5.0 6.8 8.7 6.5 7.0 7.5 7.8 6.5 8.5 8.0 9.2 7.9 5.5 8.0 7.2 7.0 alunos: vetor[1..5] de caracter notas : vetor[1..5, 1..4] de real
Matrizes algoritmo "NOTA_ALUNO" var alunos: vetor[1..5] de caracter notas: vetor[1..5, 1..4] de real i, j: inteiro inicio escreval("leitura e apresentação das notas") escreval(" *** Entrada dos Dados *** ") para i de 1 ate 5 faca escreval("digite o ", i:2, "o. aluno: ") leia(alunos[i]) para j de 1 ate 4 faca escreval("informe a ", j:2, "a. nota:") leia(notas[i, j]) fimpara fimpara...
Matrizes Continuação...... escreval(" *** Apresentação dos Dados *** ") para i de 1 ate 5 faca escreval("notas do aluno: ", alunos[i]) para j de 1 ate 4 faca escreval (j:2, "a. nota: ", notas[i, j]) fimpara escreval ("==========") fimpara escreval() fimalgoritmo
Resumo Nesta aula vimos: Arrays Vetores Matrizes