SkiLL-World
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Programação

Ir para baixo

Programação Empty Programação

Mensagem  Admin Seg Mar 09, 2009 6:13 am

1. Variáveis Compostas Homogêneas
Vimos, no início deste curso, ser possível dar um Nome para uma posição de memória, sendo que a esta será associado um valor qualquer. Pois bem, acontece que, muitas vezes, esta forma de definição, ou melhor dizendo, de alocação de memória, não é suficiente para resolver certos problemas computacionais. Imagine por Exemplo, como faríamos para construir um algoritmo, para ler o Nome de N Pessoas e que imprimisse um relatório destes mesmos nomes, mas ordenados alfabeticamente? Não seria uma tarefa simples, haja visto não ser possível determinar quantos nomes seriam lidos, mesmo que soubéssemos o número de pessoas, digamos 1.000 pessoas, teríamos que definir 1.000 variáveis do tipo STRING, como é mostrado abaixo:

ALGORITMO Loucura;
VARIÁVEIS
Nome1,
Nome2,
Nome3,
.
.
.
Nome999,
Nome1000: CADEIA
INICIO
<Comandos>
FIM

Considere o tamanho do algoritmo, e o trabalho braçal necessário para construi-lo. Isto só com 1.000 Nome, imagine agora 1.000.000 de pessoas. A construção deste algoritmo começaria a ficar inviável na pratica. Para resolver problemas como este, e outros, foi criado um novo conceito para alocação de memória sendo, desta forma, também criado uma nova maneira de definir variáveis, a qual foi denominada de variável indexada.
Uma variável indexada corresponde a uma seqüência de posições de memória, a qual daremos único Nome, sendo que cada uma destas pode ser acessada através do que conhecemos por índice. O índice corresponde a um valor numérico ( exceto REAL ), ou a um valor caracter ( exceto STRING ). Cada uma das posições de memória de uma variável indexada pode receber valores no decorrer do algoritmo como se fosse uma variável comum, a única diferença reside na Sintaxe de utilização desta variável.
1.1 Variáveis Indexadas Uni Dimensionais(Vetores)
Também conhecida por “Vetor”. Uma variável uni-dimencional, como o próprio Nome já indica, possui apenas uma dimensão, sendo ser possível definir variáveis com quaisquer tipo de dados validos do Pascal.

a) Definição:
ALGORITMO Define
VARIÁVEIS
<Nome>: VETOR [INICIOV : FIMV] DE <tipo>
INICIO
<Comandos>
FIM
Em pascal:
PROGRAM Define;
VAR
<Nome>: ARRAY [INICIO..FIM] OF <tipo>;
BEGIN
<Comandos>;
END.

Obs.:
a) “ARRAY” é uma palavra reservada do Pascal
b) Os valores “INICIOV” e “FIMV” correspondem aos índices inicial e final
c) Uma variável indexada pode ser apenas de um tipo de dado

Exemplo Definir uma variável indexada como sendo do tipo REAL, sendo que a mesma deverá corresponder a 10 posições de memória.
ALGORITMO Exemplo
VARIÁVEIS
Vet : VETOR [1 : 10] OF REAL
INICIO
<Comandos>
FIM
Em pascal:
PROGRAM Exemplo;
VAR
Vet: ARRAY [1..10] OF REAL;
BEGIN
<Comandos>;
END.

No Exemplo acima, após a definição da variável, a memória estará como mostrado no esquema abaixo:

Vet

1 2 3 4 5 6 7 8 9 10

Os Valores numéricos apresentados acima correspondem aos índices da variável.

B) Atribuição
<Nome>[<Índice>]  Valor;
LEIA (<Nome>[<Índice>]);

Em pascal:
<Nome>[<Índice>]: =Valor;
READ (<Nome>[<Índice>]);

Exemplo:
ALGORITMO Atribui
VARIÁVEIS
Nomes : VETOR [1 : 20] DE CADEIA
i : INTEIRO
BEGIN
Nomes[1]  ‘João da Silva’
PARA i  2 ATE 20, PASSO 1, FACA
LEIA(Nomes[i])
FIM PARA
FIM
Em pascal:
PROGRAM Atribui;
VAR
Nomes : ARRAY[1..20]OF STRING;
i : INTEGER;
BEGIN
Nomes[1]: =‘João da Silva’;
FOR i: = 2 TO 20 DO
READ(Nomes[i]);
END.

Admin
1337-soldier
1337-soldier

Mensagens : 752
Data de inscrição : 02/03/2009
Idade : 32
Localização : Hell

https://skill-time.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos