Usando procedimentos e função faça dois módulos que receba com parâmetro um vetor com 5 números reais e retorne esses números ordenados em ordem crescente.

Passo 1

Beleza, o que a questão pede é criar dois “módulos” (um procedimento e uma função) que recebam um vetor de 5 números reais e devolvam esse mesmo vetor ordenado de forma crescente.
Conteúdo:
  • Vetores (arrays)
  • Passagem de parâmetro por referência (no procedimento) e por valor/retorno (na função)
  • Algoritmo de ordenação (vamos usar o bubble sort, que é bem simples)
Para resolver, precisamos entender:
  1. Como representar um vetor de 5 reais.
  2. Como implementar o bubble sort, trocando pares de elementos fora de ordem.
  3. Diferença entre procedimento (que modifica o vetor direto) e função (que retorna um novo vetor).

Passo 2

Teoria do bubble sort:
Imagina que você percorre o vetor várias vezes; a cada passagem, você compara pares adjacentes e troca se estiverem fora de ordem. No nosso caso, como o vetor tem tamanho fixo N = 5, a estratégia é:
  1. Para i = 1 até N-1
  2. Para j = i+1 até N
  3. Se $v[i] > v[j]$, troca $v[i]$ com $v[j]$.  
    
Essa repetição garante que, ao final, todos os elementos estarão em ordem crescente.

Passo 3

Procedimento (passagem por referência):
procedure OrdenaProcedimento(var v: array[1..5] of real);
var
  i, j: integer;
  temp: real;
begin
  for i := 1 to 5-1 do         // i = 1..4
    for j := i+1 to 5 do       // j = i+1..5
      if v[i] > v[j] then begin
        // faz a troca
        temp := v[i];
        v[i] := v[j];
        v[j] := temp;
      end;
end;
Explicando:
  • var v: array[1..5] of real indica que o vetor é passado por referência, ou seja, qualquer mudança dentro do procedimento reflete no vetor original.
  • As variáveis i e j controlam as duas passagens do laço.
  • temp serve para armazenar um valor enquanto trocamos v[i] e v[j].

Passo 4

Função (passagem por valor e retorno de um novo vetor):
function OrdenaFuncao(v: array[1..5] of real): array[1..5] of real;
var
  i, j: integer;
  res: array[1..5] of real;
  temp: real;
begin
  res := v;                    // copia o vetor de entrada
  for i := 1 to 5-1 do         // i = 1..4
    for j := i+1 to 5 do       // j = i+1..5
      if res[i] > res[j] then begin
        temp := res[i];        
        res[i] := res[j];
        res[j] := temp;
      end;
  OrdenaFuncao := res;         // retorna o vetor ordenado
end;
Explicando:
  • A função recebe v por valor (não altera o original).
  • Copiamos v para res, aplicamos o mesmo bubble sort em res e, ao final, devolvemos res.

Resposta

Aqui estão os dois módulos que recebem um vetor de 5 reais e devolvem ele ordenado em ordem crescente:
  1. Procedimento OrdenaProcedimento(var v: array[1..5] of real) – ordena direto o vetor passado.
  2. Função OrdenaFuncao(v: array[1..5] of real): array[1..5] of real – retorna uma cópia ordenada do vetor.

Exercícios relacionados