(1) PRIMEIRA ETAPA: Introdução a Algoritmos de Ordenação
Os algoritmos de ordenação representam um papel fundamental na computação, e expressá-los em pseudocódigo oferece uma vantagem crucial. O pseudocódigo, por sua natureza simplificada e independente de linguagem, permite uma compreensão universal e acessível desses algoritmos. Essa abstração facilita o ensino, a análise e a implementação prática em diferentes contextos. Além disso, ao escrever algoritmos de ordenação em pseudocódigo, os desenvolvedores podem focar na lógica e na eficiência do algoritmo, sem as complexidades específicas de uma linguagem de programação. Isso promove uma compreensão mais profunda e uma adaptação mais fácil a diferentes ambientes de desenvolvimento, ressaltando a importância desses algoritmos como blocos essenciais na construção de sistemas eficazes e escaláveis.
(2) SEGUNDA ETAPA: Compreendendo o Problema
Observe, abaixo, o pseudocódigo que descreve o algoritmo de ordenação conhecido como BUBBLESORT:
Linha | Código |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Algoritmo ordena
Var num: Vetor[1..5] de inteiro i, j, aux: inteiro Início Para i de 1 até 5 passo 1 faça Escreva(“Informe um número:”) Leia(num[i]) Fim_para Para i de 1 até 4 passo 1 faça Para j de i+1 até 5 faça Se (num[i] > num[j]) então aux <- num[i] num[i] <- num[j] num[j] <- aux Fim_se Fim_para Fim_para Para i de 1 até 5 passo 1 faça Escreva(num[i], ” “) Fim_para Fim |
Fonte: LEAL, Gislaine Camila Lapasini, OLIVEIRA, Pietro Martins de. Algoritmos e Lógica de Programação I. Maringá: Unicesumar, 2020. [Unidade 4, pg 144-150]
O problema consiste em compreender corretamente o algoritmo acima e responder aos seguintes itens:
A) Considere um vetor com os seguintes elementos: [11, 3, 8, 1, 15]. Da forma como foi apresentado, ao final, o algoritmo irá imprimir, na tela, algo como: “1 3 8 11 15”. Assim sendo, reescreva a linha de código 20, para que o algoritmo imprima, na tela, não só o conteúdo do vetor ordenado, mas também a posição de cada elemento, entre colchetes, para cada elemento respectivo, da seguinte forma: “[1]=1 [2]=3 [3]=8 [4]=11 [5]=15”.
B) Qual linha de código deveria ser reescrita, e como deveria ser reescrita, para que o algoritmo realize uma ordenação “não-crescente”?
C) Quais linhas de código deveriam ser reescritas, e como deveriam ser reescritas, para que o algoritmo realize a ordenação em um arranjo de tamanho 100? Indique a linha e reescreva-a adequadamente para tal propósito.