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