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
Para I de 1 até 10 faça
Leia NUMEROS[I]
Fim_para
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
Para I de 1 até 10 faça
Leia NUMEROS[I]
Escreva NUMEROS[I]
Fim_para
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
SOMA ß 0.0
Para I de 1 até 10 faça
Leia NUMEROS[I]
Fim_para
Escreva “Soma = “, SOMA
-
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.
Var VALOR : literal[30]
NOMES
: conjunto[100] de literal[30]
I
: inteiro
ACHOU
: lógico
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
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.
Var VALOR : literal[30]
NOMES
: conjunto[100] de literal[30]
I, MEDIO, ALTO, BAIXO : inteiro
ACHOU
: lógico
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
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
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
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
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)