Variáveis Indexadas

 

Variável é uma entidade criada para permitir o acesso a uma posição de memória onde se armazena uma informação de um determinado tipo de dado pela simples referência a um nome simbólico.

Variável Indexada é o conjunto de variáveis do mesmo tipo, referenciadas pelo mesmo nome e individualizadas por índices. Podem ter um ou mais índices e ao número de índices necessários para a localização de um elemento dentro da variável indexada dá-se o nome de dimensão.

Vetor é uma variável indexada com uma dimensão.

Matriz é uma variável indexada com duas dimensões.

 

-         Definição de Variáveis Indexadas

 

Sintaxe:

 

Var  <nome_da_variável>  :  conjunto[dim1,dim2,...]  de  <tipo_de_dado>

 

Exemplo de definição de variáveis indexadas em pseudocódigo:

 

Var   NUMEROS  :  conjunto[10] de inteiro

         SALARIOS  :  conjunto[5] de real

         NOMES       :  conjunto[20] de literal[10]

         MATRIZ      :  conjunto[10,15] de real

 

-         Operações Básicas com Variáveis Indexadas

 

O acesso as variáveis indexadas, é feito a cada componente individualmente e nunca ao conjunto como um todo.

 

o       Atribuição

 

<nome_da_variável>  ß  <expressão>

 

Exemplos:

 

NUMEROS[2]  ß  10

SALARIOS[3]  ß  100.00

NOMES[10]      ß  “João”

MATRIZ[5,8]    ß  -3.6

 

o       Leitura

 

Leia  <nome_da_variável>

 

Exemplo: Construa um algoritmo para a leitura de um vetor de números inteiros de 10 posições.

 

Fluxograma:



Pseudocódigo:

 

Algoritmo  Ler_vetor_10

Var  NUMEROS  :  conjunto[10] de inteiro

         I  :  inteiro

Início

         Para  I  de  1  até  10  faça

                   Leia  NUMEROS[I]

         Fim_para

Fim

 

o       Escrita

 

Escreva  <nome_da_variável>

 

Exemplos:

 

1 – Construa um algoritmo para leitura e escrita de um vetor de números inteiros de 10 posições.

 

Fluxograma:



Pseudocódigo:

 

Algoritmo  Ler_e_escrever_vetor_10

Var  NUMEROS  :  conjunto[10] de inteiro

         I  :  inteiro

Início

         Para  I  de  1  até  10  faça

                   Leia  NUMEROS[I]

                   Escreva  NUMEROS[I]

         Fim_para

Fim

 

2 – Construa um algoritmo para ler dez números reais, armazena-los em um vetor e calcular a somas deles.

 

Fluxograma:



Pseudocódigo:

 

Algoritmo  Ler_e_somar_vetor_10

Var  NUMEROS  :  conjunto[10] de real

         SOMA  :  real

         I  :  inteiro

Início

            SOMA  ß  0.0

         Para  I  de  1  até  10  faça

                   Leia  NUMEROS[I]

                   SOMA  ß  SOMA + NUMEROS[I]

         Fim_para

         Escreva  “Soma = “, SOMA

Fim

 

-         Exemplos de Aplicação

 

O Espectro de aplicação de variáveis indexadas em algoritmos é muito extenso, duas delas, de muita relevância, são: pesquisa e classificação.

 

o       Método de Pesquisa Seqüencial

 

É efetuada a verificação de cada elemento do conjunto, seqüencialmente, até que o elemento desejado seja encontrado (pesquisa bem-sucedida), ou que todos os elementos do conjunto tenham sido verificados sem que o elemento procurado tenha sido encontrado (pesquisa mal-sucedida).

Utilizado quando os elementos da variável indexada não estão ordenados.

 

Exemplo: Construa um algoritmo para ler um nome e verificar se o mesmo encontra-se em um vetor de 100 nomes utilizando a pesquisa seqüencial.

 

Algoritmo  PESQ_SEQ

Var   VALOR  :  literal[30]

         NOMES  :  conjunto[100]  de literal[30]

         I               :  inteiro

         ACHOU  :  lógico

Início

         Para  I  de  1  até  100  faça

                   Leia  NOMES[I]

         Fim_para

         Leia  VALOR

         I  ß  1

         ACHOU  ß  .F.

         Enquanto  I  <=  100  .E.  .NÃO.  ACHOU  faça

                   Se  NOMES[I] = VALOR

                            então

                                      ACHOU  ß  .V.

                            senão

                                      I  ß  I + 1

                   Fim_se

         Fim_enquanto

         Se  ACHOU

                   então

                            Escreva  VALOR, “ foi encontrado”

                   senão

                            Escreva  VALOR, “ não foi encontrado”

         Fim_se

Fim

 

o       Método de Pesquisa Binária

 

É utilizado quando os elementos da variável indexada estão previamente ordenados e funciona assim: o elemento que se encontra no meio (aproximado) do vetor é localizado e comparado ao valor procurado. Se ele for igual ao valor procurado, a pesquisa é bem-sucedida e terminada. Se ele for maior que o valor procurado, repete-se o processo na primeira metade do vetor. Se ele for menor que o valor procurado, repete-se o processo na segunda metade do vetor. Este processo é continuado até que o valor procurado seja localizado (pesquisa bem-sucedida), ou então até que não reste mais um trecho do vetor a ser pesquisado (pesquisa mal-sucedida).

 

Exemplo: Construa um algoritmo para ler um nome e verificar se o mesmo encontra-se em um vetor, classificado em ordem crescente, de 100 nomes utilizando a pesquisa binária.

 

Algoritmo  PESQ_BIN

Var   VALOR  :  literal[30]

         NOMES  :  conjunto[100]  de literal[30]

         I, MEDIO, ALTO, BAIXO  :  inteiro

         ACHOU  :  lógico

Início

         Para  I  de  1  até  100  faça

                   Leia  NOMES[I]

         Fim_para

         Leia  VALOR

         ACHOU  ß  .F.

         BAIXO  ß  1

         ALTO  ß  100

         Enquanto  BAIXO  <=  ALTO  .E.  .NÃO.  ACHOU  faça

                   MEDIO  ß  (BAIXO + ALTO) / 2

                   Escolha

Caso  VALOR  <  NOMES[MEDIO]

                                       ALTO  ß  MEDIO - 1

                            Caso  VALOR  >  NOMES[MEDIO]

                                       BAIXO  ß  MEDIO + 1

                            Senão

                                       ACHOU  ß  .V.

                   Fim_escolha

         Fim_enquanto

         Se  ACHOU

                   então

                            Escreva  VALOR, “ foi encontrado”

                   senão

                            Escreva  VALOR, “ não foi encontrado”

         Fim_se

Fim

 

o       Método da Bolha de Classificação

 

Consiste em ler seqüencialmente cada um dos elementos do vetor, comparando os elementos vizinhos entre si. Caso estejam fora de ordem, os mesmo trocam de posição entre si. Procede-se assim até o final do vetor. Na primeira “varredura” o último elemento do vetor estará no seu devido lugar (caso a ordenação seja crescente, ele é o maior de todos). A segunda “varredura” é análoga à primeira e vai até o penúltimo elemento. O processo é repetido até que tenham sido feitas tantas “varredura” quanto o número de elementos à serem classificados menos um. Ao final do processo o vetor estará classificado segundo o processo escolhido.

 

Exemplo: Construa um algoritmo para classificar um vetor de dez elementos reais em ordem crescente.

 

Algoritmo  Buble_Sort

Var    NUMEROS  :  conjunto[10] de real

         I, J                :  inteiro

         AUX             :  real

Início

         Para  I  de  1  até  10  faça

                   Leia  NUMEROS[I]

         Fim_para

         J  ß  10

         Enquanto  J > 1  faça

                   Para  I  de  1 até  J-1  faça

                            Se  NUMEROS[I]  >  NUMEROS[I + 1]

                                      então

                                               AUX  ß NUMEROS[I]

                                               NUMEROS[I]  ß  NUMEROS[I + 1]

                                               NUMEROS[I + 1]  ß  AUX

                            Fim_se

                   Fim_para

                   J  ß  J – 1

         Fim_enquanto

         Escreva  “Vetor Ordenado: “

         Para  I  de  1  até  10  faça

                   Escreva  NUMEROS[I]

         Fim_para

Fim

 

 

Exercícios Propostos:

 

1 – Elabore um algoritmo que leia uma seqüência de n números reais (n <= 100) e imprima-os em ordem inversa.

 

2 – Elabore um algoritmo para realizar  a soma de dois vetores A e B de números reais e de tamanho n (n<=100).

 

3 – Elabore um algoritmo para realizar a soma de duas matrizes A e B de números reais e de tamanho m x n (m <= 100 e n <= 100)