======================================================= SSC0511 - Organização de Computadores Digitais Trabalho de REC da Disciplina SSC0511 - 2014 (2o. sem.) Prof. Fernando Osório - Janeiro 2015 ======================================================= O trabalho consiste da implementação de dois programas para ordenar dados usando o simulador do processador MIPS (SPIM). Notem que cada aluno tem uma especificação diferente da implementação a ser realizada de um dos programas. O trabalho é individual e deve respeitar exatamente o que foi definido para cada um dos alunos. ================================================================= PROGRAMA 1: 1o. programa a ser implementado (possui especificação GERAL e INDIVIDUAL) Informações GERAIS: (PROGRAMA 1) O programa deve ordenar um conjunto de dados (cada dado tem um tamanho fixo pré-definido) usando o algoritmo do BUBBLE SORT, que vai comparando 2 a 2 os dados e deslocando/trocando de posição o maior (ou menor) para o final (ou início) do conjunto de dados, a fim de obter uma ordenação geral do vetor. Note que são feitas várias "passagens" comparando os dados e deslocando o maior/menor para sua posição, que uma vez colocado no final/início do vetor, é feita uma nova passagem, porém com um elemento a menos, pois este já "encontrou" sua posição final na passagem anterior. Para entender melhor o BUBBLE SORT, consulte: https://www.youtube.com/watch?v=lyZQPjUT5B4 https://www.youtube.com/watch?v=llX2SpDkQDc http://pt.wikipedia.org/wiki/Bubble_sort Cada aluno deve implementar 2 programas, um conforme as informações individuais descritas abaixo e um segundo programa de ordenação cuja especificação segue ao final. Informações INDIVIDUAIS: (PROGRAMA 1) 1) 8936721 - Andrew Felipe Spoljaric Lima * Ordenar em ordem alfabética CRESCENTE, ou seja, de A até Z * Aceitar somente LETRAS MAÍUSCULAS ('A' até 'Z') - Caso tenha um dado que não seja uma letra maiúscula, parar a execução e exibir mensagem de erro; * Exibir o vetor inicial de dados e o vetor final após ordenação * Caso tenha algum dado duplicado (letras iguais), deve "jogar fora" os dados duplicados, onde o resultado final não deve possuir dados duplicados * O vetor de dados terá no máximo 100 dados (letras) Exemplo de dados a serem ordenados: GZHEERKAOPXC => Ordenado: ACEGHKOPRXZ -------------------------------------------------- 2) 8787232 - Gustavo Picanço Consentini * Ordenar em ordem numérica CRESCENTE, ou seja, de "0 até 9" * Aceitar somente NÚMEROS ('0' até '9') - Caso tenha um dado que não seja um número, parar a execução e exibir mensagem de erro; * Exibir o vetor inicial de dados e o vetor final após ordenação * Caso tenha algum dado duplicado (números iguais), deve "jogar fora" os dados duplicados, onde o resultado final não deve possuir dados duplicados * O vetor de dados terá no máximo 30 dados (números) Exemplo de dados a serem ordenados: 2350679904 => Ordenado: 02345679 -------------------------------------------------- 3) 8531546 - Joao Eduardo Castejon Saad * Ordenar em ordem alfabética DECRESCENTE ou seja, de "a até z" * Aceitar somente LETRAS MINÚSCULAS ('a' até 'a') - Caso tenha um dado que não seja uma letra minúscula parar a execução e exibir mensagem de erro; * Exibir o vetor inicial de dados e o vetor final após ordenação * Caso tenha algum dado duplicado (letras iguais), deve "colocar no final" os dados duplicados, onde o resultado final deve possuir dados ordenados e os duplicados ao final * O vetor de dados terá no máximo 150 dados (letras) Exemplo de dados a serem ordenados: qwertyasdefgh => Ordenado: adefghqwrstye -------------------------------------------------- 4) 8602357 - Rafael Andrade Rebolla * Ordenar em ordem numérica DECRESCENTE ou seja, de "9 até 0" * Aceitar somente NÚMEROS ('0' até '9') - Caso tenha um dado que não seja um número, "jogar fora" este dado inválido e prosseguir a ordenação; * Exibir o vetor inicial de dados e o vetor final após ordenação * Caso tenha algum dado duplicado (números iguais), deve "colocar no final" os dados duplicados, onde o resultado final deve possuir dados ordenados e os duplicados ao final * O vetor de dados terá no máximo 50 dados (números) Exemplo de dados a serem ordenados: 235067x9904 => Ordenado: 0234567909 -------------------------------------------------- 5) 5542421 - Ricardo Cristiano da Silva * Ordenar em ordem alfanumérica CRESCENTE ou seja, de ("0 a 9 e de A a Z") Considere a ordem da Tabela ASCII, ou seja, "0 a 9" vem antes de "A a Z") * Aceitar NÚMEROS e LETRAS ('0' até '9', 'A' até 'Z') - Caso tenha um dado que não seja um alfanumérico (p.ex. "@#$") "jogar fora" este dado inválido e prosseguir a ordenação; * Exibir o vetor inicial de dados e o vetor final após ordenação * Caso tenha algum dado duplicado (números ou letras iguais), deve "colocar no final" os dados duplicados, onde o resultado final deve possuir dados ordenados e os duplicados ao final * O vetor de dados terá no máximo 80 dados (números ou letras) Exemplo de dados a serem ordenados: AAASSSDDDFFF#7654321GGG => Ordenado: 1234567ADFGSAASSDDFFGG ================================================================= PROGRAMA 2 PROGRAMA DE ORDENAÇÂO (2o. programa a ser entregue por todos alunos) Implementar um programa para o processador MIPS que faça o BUBBLE SORT porém orientado a palavras, ou seja, ele deve ordenar um conjunto de palavras: - Ordenar de forma crescente as palavras (ordem alfabética crescente) - A ordenação pode considerar a ordem dos caracteres da tabela ASCII - Palavras duplicadas podem aparecer lado a lado - Cada palavra terá no máximo 16 letras (palavras terminam por '\0', mas pode ocupar sempre um "slot" de 16 bytes) - O máximo de palavras será de 128 palavras (pode ter uma variável que indica previamente a quantidade de palavras a serem ordenadas) Exemplo de dados a serem ordenados: Dia Noite ABCDEFGHIJK Zumbido Noite Palavra Diploma Diagrama FIM Ordenado: ABCDEFGHIJK Dia Diagrama Diploma FIM Noite Noite Palavra Zumbido Sugere-se a implementação de uma função dedicada para comparar 2 palavras, que retorne se são iguais, ou quem é maior e quem é menor. === FIM DA DEFINIÇÂO DO TRABALHO DA REC ===