Exercício inicial com estrutura de dados homogênea (vetor) e procedimento recursivo.
Notas de aula
type placa = array [1..4] of integer;
...
const MAXDIG = 4;
var a4num : array [1..24] of placa; //a4num : array [1..24,1..4] of integer
...
linha : integer;
Estruturas de dados - vetores e matrizes
- Declara MAXDIG como um valor constante para uso como limite de dígitos a serem misturados.
- Declara linha como uma variável inteira para indicar qual placa dentro de a4num está sendo trabalhada.
- Declara duas estruturas de dados homogêneas: placa é um tipo array (vetor) de 4 dígitos, e a4num é uma variável array (matriz) de 24 placas.
- O comentário mostra que a4num é equivalente a uma array de 24 x 4 elementos do tipo inteiro.
procedure mistura(input : placa; index : integer);
...
var output : placa;
p, i : integer;
begin
if index=MAXDIG then // se index aponta o último dígito da placa input
begin // insere a sequencia que está em input na array a4num e avança linha
a4num[linha] := input;
linha := linha + 1;
end
else // senão
begin // processa a reorganização de input
output := input;
for p := index to MAXDIG do
begin
output[index] := input[p];
for i := index to p - 1 do
output[i + 1] := input[i];
for i := p + 1 to MAXDIG do
output[i] := input[i];
mistura(output,index + 1); // e chama o procedimento mistura recursivamente
end;
end;
end;
Algoritmo recursivo - introdução
- Declara o procedimento mistura com dois parâmetros de entrada, input e index,
- os comentários explicam a lógica do procedimento
- A chamada mistura(output,index + 1) é uma chamada recursiva ao mesmo procedimento
Atividade
- Edite, compile e teste o algoritmo mostrado na listagem acima
- Baixe o código digitado para enviar como anexo de e-mail
- Depois eu digo para que e-mail você deverá enviar o fonte, por enquanto apenas faça o download do fonte
- se precisar, envie o fonte como anexo para o seu próprio e-mail institucional
Comentários