ALGORITMO
Definição Representa a lógica de solução de um problema passo-a-passo.
Um algoritmo pode ser Na forma textual: Uma descrição tal como uma receita de bolo; Um manual de montagem; Um relato de como fazer uma tarefa; O pseudo código de um programa; Na forma de gráficos Um fluxograma Um mapa indicando o caminho
Características Possui um número limitado de passos; As regras de codificação do algoritmo são previamente conhecidas e dependem da “máquina” que irá resolver o problema
Qualidades de um algoritmo Integridade :  refere-se à precisão das informações manipuladas pelo programa;  Clareza :  refere-se à facilidade de leitura do programa; Simplicidade :  a clareza e precisão de um programa são normalmente melhoradas tornando seu entendimento o mais simples possível, consistente com os objetivos do programa; Eficiência :  refere-se à velocidade de processamento e a correta utilização da memória;  Modularidade :  consiste no particionamento do programa em módulos menores bem identificáveis e com funções específicas; e Generalidade :  é interessante que um programa seja tão genérico quanto possível de forma a permitir a reutilização de seus componentes em outros projetos.
Pseudo código É uma forma de algoritmo que simula a solução do problema por uma linguagem computacional; Não existem regras rígidas para a codificação dos algoritmos, porem, de uma forma geral seguem a um padrão.
Programação Estruturada Possui 3 figuras básicas Seqüência simples; Decisão; Repetição
Comandos Inicio   representa o inicio do algoritmo; Fim    representa o fim do algoritmo; Leia A    significa ler um valor de uma unidade de entrada e armazenar em A. Caso exista um valor em A este é destruído e substituído pelo novo valor lido.
Comandos Escreva A    significa exibir o conteúdo de A. Não destrói o valor exibido. Pode-se exibir uma mensagem colocando entre aspas. Escrever “resposta” A   C+B significa A recebe a soma do conteúdo de C com B; Atenção o símbolo    tem significado diferente da matemática pois primeiro realiza a operação depois atribui o resultado para a variável A
Observe que A    A+B significa some o conteúdo de A com B e atribua a A. Diga qual o valor que será exibido Inicio X   2 Y   3 X    x+y Escreva x Fim
Exemplo Elabore um Algoritmo para ler dois valores e exibir sua soma Inicio Ler A,B C   A+B Escrever C Fim
Operadores matemáticos + soma - subtração * multiplicação / divisão Mod resto inteiro da divisão Div divisão inteira ( )
Exemplo A    10 mod 3 B    10 div 3 Auto avaliação: Proponha um método para saber se um número é par ou impar com o que foi mostrado até agora.
Exercício Elabore um algoritmo para ler 3 valores e determinar sua média
Solução Inicio Ler A,B,C D   ( A+B+C) / 3 Escrever D Fim
Alem dos operadores existem as funções Inúmeras funções são disponíveis. Por exemplo: Sqrt raiz quadrada Sqr quadrado Sin seno Cos cosseno Rnd número aleatório Etc.
Estrutura de decisão Pode ser: Alternativa simples    quando existe apenas uma ação a ser executada se a condição for verdadeira; Alternativa dupla    quando existem duas ações a serem executadas se a condição for verdadeira e se for falsa; Alternativas múltiplas   quando existem mais de duas alternativas.
Estrutura de decisão Se (condição)  Então Conjunto de comandos se a condição for verdadeira Se não Conjunto de comandos se a condição for falsa Fim se
Operadores relacionais > maior que < menor que = igual >= maior ou igual <= menor ou igual <> diferente E Ou
Exemplo Elabore um algoritmo para ler dois valores e exibir o maior deles. Os valores são, por definição, diferentes entre si.   Inicio Ler A,B Se A>B então Escreva A Se não Escreva B Fim se Fim
Exercício Elabore um algoritmo para ler a idade de uma pessoa. Se a idade for menor que 18 anos exibir: “menor de idade” se for maior ou igual exibir “maior de idade”. Auto avaliação Se vc inverter a pergunta o resultado será o mesmo?
Solução Inicio Ler idade Se idade < 18 então Escrever “menor de idade” Se não Escrever “maior de idade” Fim se Fim
Auto avaliação Elabore um algoritmo para ler 3 valores (diferentes entre si) e escrever o maior deles.
Solução Inicio Ler A,B,C Se A>B e A>C então Escrever A Se não Se B > C então Escrever B Se não Escrever c Fim se Fim se fim
Elabore um algoritmo que leia código da mercadoria e preço. Se for código 00 aplicar um desconto de 10%. Exibir o preço final.
Solução Inicio Ler código, preço Se código = 00 então Preço    Preço * 0,9 Fim se Escreva código, preço Fim
Elabore um algoritmo que Leia o sexo M ou F e se for M acrescente 1 a variável que contém a quantidade de homens (CM)
INICIO CM   0 { não é obrigatório pois todas as variáveis iniciam com 0} LER SEXO SE SEXO = ‘M’ ENTÃO CM    CM +1 FIM SE ESCREVA CM FIM
Simulação (chinês) Para verificar se um algoritmo atende aos requisitos do enunciado deve-se simular seu funcionamento com dados cujos resultados são previamente conhecidos; Por exemplo: Simule o funcionamento do algoritmo anterior para sexo  ‘M’
Dicas Relacione as variáveis na mesma ordem do algoritmo. Elabore uma tabela e vá acompanhando o valor de cada variável 1 CM M Sexo 0 CM valor variável
Elabore um algoritmo que Leia a nota do aluno se for maior que 5 escrever “aprovado” caso contrário escrever “reprovado” Inicio Ler nota Se nota >= 5 então Escreva “aprovado” Se não Escreva “reprovado” Fim se Fim
Elabore um algoritmo que Leia dois valores e exiba em ordem crescente (os valores são diferentes entre si)
Inicio Ler A,B Se A> B então Escreva A, B Se não Escreva B, A Fim se Fim
Altere o algoritmo anterior Inclua a condição dos valores serem iguais, neste caso escrever “valores iguais”
Quando existem mais de duas alternativas Neste caso será necessário colocar vários “se’s”. Pode-se usar o operador E, ou então, o OU Por exemplo:
Imposto de renda na fonte O critério para a retenção de imposto de renda na fonte é o seguinte: Elabore um algoritmo 465,35 27,5% Acima de 2326,00 174,60 15% De 1164,01 a 2326 Isento 1164 Parcela a deduzir Alíquota Renda
Inicio Ler renda Se renda <= 1164 então IR    0 Se não Se renda <= 2326 então IR    renda* 0,15 – 174,60 Se não IR    renda * 0,275 – 465,35 Fim se Fim se Escreva renda IR Fim
Simulação Simule o funcionamento do algoritmo anterior para os valores 260,00 2000,00 5000,00
Elabore um algoritmo que leia a nota do aluno e escreva sua situação O critério de aprovação da UERJ é o seguinte: Nota < 4 aluno reprovado Nota >= 4 e < 7 aluno em prova final Nota >= 7 aluno aprovado
Inicio Ler nota Se nota < 4 então Escreva “reprovado” Se não Se nota <= 7 então Escreva “final”  Se não Escreva “aprovado” Fim se Fim se Fim
Exercício Complemente o exercício anterior incluindo a condição: se o aluno tiver menos de 75% de freqüência estará reprovado independente da nota
Inicio Ler nota,freq Se freq < 0,75 então  Escreva “reprovado” Se não Se nota < 4 então Escreva “reprovado” Se não Se nota <= 7 então Escreva “final”  Se não Escreva “aprovado” Fim se Fim se Fim se Fim
Elabore o algoritmo para determinar o recolhimento do INSS: O INSS para o trabalhador assalariado é calculado de acordo com a seguinte tabela: 11,00 De 1254,37 a 2508,72 9,00 De 780,01 a 1254,36 8,65 De 752,63 a  780,00 7,65 Até 752,62 Alíquota (%) Salário de contribuição
Dicas Qual informação deve ser lida? A solução é um conjunto de decisões? Comece pelo menor valor e vá estabelecendo os intervalos Quais são as variáveis que serão utilizadas?
Inicio Ler sal Se sal <= 752,62 então INSS    sal * 0,0765 Se não Se sal <= 780,00 então INSS    sal * 0,0865 Se não Se sal <=1254,36 então INSS    sal * 0,09 Se não Se sal <= 2508,72 então INSS    sal * 0,11 Se não INSS    2508,72 * 0,11 Fim se Fim se Fim se Fim se Escreva INSS Fim
{uma solução pior, mas certa} Inicio Ler sal Se sal <= 752,62 então INSS    sal * 0,0765 Fim se Se sal >= 752,63 e sal <= 780,00 e então INSS    sal * 0,0865 Fim se Se sal >= 780,01 e sal <=1254,36 então INSS    sal * 0,09 Fim se Se sal >= 1254,37 e sal <= 2508,72 então INSS    sal * 0,11 Fim se Se sal > 2508,72 então INSS    2508,72 * 0,11 Fim se Escreva INSS Fim
Seleção múltipla É quando temos várias alternativas, como por exemplo no “menu” de um terminal bancário
Decisão múltipla Caso opção faça Resposta 1: alternativa 1 Resposta 2: alternativa 2 Outro caso Alternativa 3 Fim caso
Ler uma opção e escrever qual letra foi selecionada  Inicio Ler letra Caso letra faça “ a”: escreva “vc escolheu a “ “ b” : escreva “vc escolheu b “ Outro caso Escreva “vc escolheu outra letra” Fim
Estrutura de repetição Repete, de forma controlada, um conjunto selecionado de instruções. Podem ser de 3(três) tipos: Para-faça Enquanto-faça Repita-até
Para-faça Usa-se da seguinte forma: Para  variável     inicio até fim Grupo de instruções que será repetido Fim para Funciona da seguinte forma A  variável  é inicializada com o valor do inicio; O grupo de instruções é executado; Ao chegar ao comando “fim para” a  variável  tem seu valor acrescido de 1(um) e verifica se o seu valor é maior que fim Se for menor ou igual, repete o conjunto de instruções
Elabore um algoritmo para escrever os números inteiros de 1 até 10 Inicio Para j    1 ate 10 faça Escreva j Fim para  Fim
Elabore um algoritmo para determinar a soma dos 10 primeiros números inteiros Inicio Soma   0; Para j   1 até 10 faça Soma    soma+j Fim para Escreva soma Fim
Elabore um algoritmo que leia 5 valores e determine a sua soma Inicio Soma   0 Para j    1 ate 5 faça Ler x Soma   soma+x Fim para Escreva soma Fim
Altere o algoritmo anterior para ler “n” valores Inicio Ler n Soma   0 Para j    1 ate n faça Ler x Soma    soma +x Fim para Escreva soma Fim
Enquanto-faça Usa-se da seguinte forma: Enquanto condição faça Grupo de instruções que será repetido Fim enquanto Funciona da seguinte forma: Enquanto a condição for VERDADEIRA o grupo de instruções é repetido
Por exemplo:  soma de 5 valores lidos Inicio Soma  0 Cont  0  Enquanto cont < 5 faça Ler x Soma   soma+x Cont  cont+1 Fim enquanto Escreva soma Fim
As condições são construídas De forma análoga as condições da estrutura de decisão; Pode-se usar os operadores >, >=, <,<=,=,<>  e ou não
Pode-se interromper a repetição  Usando um contador, conforme o exemplo anterior ou; Usando um “flag” condição que indica que a repetição deve ser interrompida.
Elabore um algoritmo que Leia uma quantidade indeterminada de valores positivos. O “flag” é um valor negativo.
Solução Inicio Soma  0 Ler x Enquanto x > 0 faça Soma    soma +x Ler x Fim enquanto Escreva soma Fim
Repita-até Usa-se da seguinte forma: Repita Grupo de instruções que será repetido Até que condição Funciona da seguinte forma: Repete o grupo de instruções ATÉ  que a condição seja verdadeira
Elabore um algoritmo que leia 5 valores e determine a sua soma Inicio Soma  o Cont  0 Repita Ler x Soma  soma+x Cont   cont+1 Ate que cont = 5 Escreva soma Fim

Algoritmo

  • 1.
  • 2.
    Definição Representa alógica de solução de um problema passo-a-passo.
  • 3.
    Um algoritmo podeser Na forma textual: Uma descrição tal como uma receita de bolo; Um manual de montagem; Um relato de como fazer uma tarefa; O pseudo código de um programa; Na forma de gráficos Um fluxograma Um mapa indicando o caminho
  • 4.
    Características Possui umnúmero limitado de passos; As regras de codificação do algoritmo são previamente conhecidas e dependem da “máquina” que irá resolver o problema
  • 5.
    Qualidades de umalgoritmo Integridade : refere-se à precisão das informações manipuladas pelo programa; Clareza : refere-se à facilidade de leitura do programa; Simplicidade : a clareza e precisão de um programa são normalmente melhoradas tornando seu entendimento o mais simples possível, consistente com os objetivos do programa; Eficiência : refere-se à velocidade de processamento e a correta utilização da memória; Modularidade : consiste no particionamento do programa em módulos menores bem identificáveis e com funções específicas; e Generalidade : é interessante que um programa seja tão genérico quanto possível de forma a permitir a reutilização de seus componentes em outros projetos.
  • 6.
    Pseudo código Éuma forma de algoritmo que simula a solução do problema por uma linguagem computacional; Não existem regras rígidas para a codificação dos algoritmos, porem, de uma forma geral seguem a um padrão.
  • 7.
    Programação Estruturada Possui3 figuras básicas Seqüência simples; Decisão; Repetição
  • 8.
    Comandos Inicio  representa o inicio do algoritmo; Fim  representa o fim do algoritmo; Leia A  significa ler um valor de uma unidade de entrada e armazenar em A. Caso exista um valor em A este é destruído e substituído pelo novo valor lido.
  • 9.
    Comandos Escreva A  significa exibir o conteúdo de A. Não destrói o valor exibido. Pode-se exibir uma mensagem colocando entre aspas. Escrever “resposta” A  C+B significa A recebe a soma do conteúdo de C com B; Atenção o símbolo  tem significado diferente da matemática pois primeiro realiza a operação depois atribui o resultado para a variável A
  • 10.
    Observe que A  A+B significa some o conteúdo de A com B e atribua a A. Diga qual o valor que será exibido Inicio X  2 Y  3 X  x+y Escreva x Fim
  • 11.
    Exemplo Elabore umAlgoritmo para ler dois valores e exibir sua soma Inicio Ler A,B C  A+B Escrever C Fim
  • 12.
    Operadores matemáticos +soma - subtração * multiplicação / divisão Mod resto inteiro da divisão Div divisão inteira ( )
  • 13.
    Exemplo A  10 mod 3 B  10 div 3 Auto avaliação: Proponha um método para saber se um número é par ou impar com o que foi mostrado até agora.
  • 14.
    Exercício Elabore umalgoritmo para ler 3 valores e determinar sua média
  • 15.
    Solução Inicio LerA,B,C D  ( A+B+C) / 3 Escrever D Fim
  • 16.
    Alem dos operadoresexistem as funções Inúmeras funções são disponíveis. Por exemplo: Sqrt raiz quadrada Sqr quadrado Sin seno Cos cosseno Rnd número aleatório Etc.
  • 17.
    Estrutura de decisãoPode ser: Alternativa simples  quando existe apenas uma ação a ser executada se a condição for verdadeira; Alternativa dupla  quando existem duas ações a serem executadas se a condição for verdadeira e se for falsa; Alternativas múltiplas  quando existem mais de duas alternativas.
  • 18.
    Estrutura de decisãoSe (condição) Então Conjunto de comandos se a condição for verdadeira Se não Conjunto de comandos se a condição for falsa Fim se
  • 19.
    Operadores relacionais >maior que < menor que = igual >= maior ou igual <= menor ou igual <> diferente E Ou
  • 20.
    Exemplo Elabore umalgoritmo para ler dois valores e exibir o maior deles. Os valores são, por definição, diferentes entre si. Inicio Ler A,B Se A>B então Escreva A Se não Escreva B Fim se Fim
  • 21.
    Exercício Elabore umalgoritmo para ler a idade de uma pessoa. Se a idade for menor que 18 anos exibir: “menor de idade” se for maior ou igual exibir “maior de idade”. Auto avaliação Se vc inverter a pergunta o resultado será o mesmo?
  • 22.
    Solução Inicio Leridade Se idade < 18 então Escrever “menor de idade” Se não Escrever “maior de idade” Fim se Fim
  • 23.
    Auto avaliação Elaboreum algoritmo para ler 3 valores (diferentes entre si) e escrever o maior deles.
  • 24.
    Solução Inicio LerA,B,C Se A>B e A>C então Escrever A Se não Se B > C então Escrever B Se não Escrever c Fim se Fim se fim
  • 25.
    Elabore um algoritmoque leia código da mercadoria e preço. Se for código 00 aplicar um desconto de 10%. Exibir o preço final.
  • 26.
    Solução Inicio Lercódigo, preço Se código = 00 então Preço  Preço * 0,9 Fim se Escreva código, preço Fim
  • 27.
    Elabore um algoritmoque Leia o sexo M ou F e se for M acrescente 1 a variável que contém a quantidade de homens (CM)
  • 28.
    INICIO CM  0 { não é obrigatório pois todas as variáveis iniciam com 0} LER SEXO SE SEXO = ‘M’ ENTÃO CM  CM +1 FIM SE ESCREVA CM FIM
  • 29.
    Simulação (chinês) Paraverificar se um algoritmo atende aos requisitos do enunciado deve-se simular seu funcionamento com dados cujos resultados são previamente conhecidos; Por exemplo: Simule o funcionamento do algoritmo anterior para sexo ‘M’
  • 30.
    Dicas Relacione asvariáveis na mesma ordem do algoritmo. Elabore uma tabela e vá acompanhando o valor de cada variável 1 CM M Sexo 0 CM valor variável
  • 31.
    Elabore um algoritmoque Leia a nota do aluno se for maior que 5 escrever “aprovado” caso contrário escrever “reprovado” Inicio Ler nota Se nota >= 5 então Escreva “aprovado” Se não Escreva “reprovado” Fim se Fim
  • 32.
    Elabore um algoritmoque Leia dois valores e exiba em ordem crescente (os valores são diferentes entre si)
  • 33.
    Inicio Ler A,BSe A> B então Escreva A, B Se não Escreva B, A Fim se Fim
  • 34.
    Altere o algoritmoanterior Inclua a condição dos valores serem iguais, neste caso escrever “valores iguais”
  • 35.
    Quando existem maisde duas alternativas Neste caso será necessário colocar vários “se’s”. Pode-se usar o operador E, ou então, o OU Por exemplo:
  • 36.
    Imposto de rendana fonte O critério para a retenção de imposto de renda na fonte é o seguinte: Elabore um algoritmo 465,35 27,5% Acima de 2326,00 174,60 15% De 1164,01 a 2326 Isento 1164 Parcela a deduzir Alíquota Renda
  • 37.
    Inicio Ler rendaSe renda <= 1164 então IR  0 Se não Se renda <= 2326 então IR  renda* 0,15 – 174,60 Se não IR  renda * 0,275 – 465,35 Fim se Fim se Escreva renda IR Fim
  • 38.
    Simulação Simule ofuncionamento do algoritmo anterior para os valores 260,00 2000,00 5000,00
  • 39.
    Elabore um algoritmoque leia a nota do aluno e escreva sua situação O critério de aprovação da UERJ é o seguinte: Nota < 4 aluno reprovado Nota >= 4 e < 7 aluno em prova final Nota >= 7 aluno aprovado
  • 40.
    Inicio Ler notaSe nota < 4 então Escreva “reprovado” Se não Se nota <= 7 então Escreva “final” Se não Escreva “aprovado” Fim se Fim se Fim
  • 41.
    Exercício Complemente oexercício anterior incluindo a condição: se o aluno tiver menos de 75% de freqüência estará reprovado independente da nota
  • 42.
    Inicio Ler nota,freqSe freq < 0,75 então Escreva “reprovado” Se não Se nota < 4 então Escreva “reprovado” Se não Se nota <= 7 então Escreva “final” Se não Escreva “aprovado” Fim se Fim se Fim se Fim
  • 43.
    Elabore o algoritmopara determinar o recolhimento do INSS: O INSS para o trabalhador assalariado é calculado de acordo com a seguinte tabela: 11,00 De 1254,37 a 2508,72 9,00 De 780,01 a 1254,36 8,65 De 752,63 a 780,00 7,65 Até 752,62 Alíquota (%) Salário de contribuição
  • 44.
    Dicas Qual informaçãodeve ser lida? A solução é um conjunto de decisões? Comece pelo menor valor e vá estabelecendo os intervalos Quais são as variáveis que serão utilizadas?
  • 45.
    Inicio Ler salSe sal <= 752,62 então INSS  sal * 0,0765 Se não Se sal <= 780,00 então INSS  sal * 0,0865 Se não Se sal <=1254,36 então INSS  sal * 0,09 Se não Se sal <= 2508,72 então INSS  sal * 0,11 Se não INSS  2508,72 * 0,11 Fim se Fim se Fim se Fim se Escreva INSS Fim
  • 46.
    {uma solução pior,mas certa} Inicio Ler sal Se sal <= 752,62 então INSS  sal * 0,0765 Fim se Se sal >= 752,63 e sal <= 780,00 e então INSS  sal * 0,0865 Fim se Se sal >= 780,01 e sal <=1254,36 então INSS  sal * 0,09 Fim se Se sal >= 1254,37 e sal <= 2508,72 então INSS  sal * 0,11 Fim se Se sal > 2508,72 então INSS  2508,72 * 0,11 Fim se Escreva INSS Fim
  • 47.
    Seleção múltipla Équando temos várias alternativas, como por exemplo no “menu” de um terminal bancário
  • 48.
    Decisão múltipla Casoopção faça Resposta 1: alternativa 1 Resposta 2: alternativa 2 Outro caso Alternativa 3 Fim caso
  • 49.
    Ler uma opçãoe escrever qual letra foi selecionada Inicio Ler letra Caso letra faça “ a”: escreva “vc escolheu a “ “ b” : escreva “vc escolheu b “ Outro caso Escreva “vc escolheu outra letra” Fim
  • 50.
    Estrutura de repetiçãoRepete, de forma controlada, um conjunto selecionado de instruções. Podem ser de 3(três) tipos: Para-faça Enquanto-faça Repita-até
  • 51.
    Para-faça Usa-se daseguinte forma: Para variável  inicio até fim Grupo de instruções que será repetido Fim para Funciona da seguinte forma A variável é inicializada com o valor do inicio; O grupo de instruções é executado; Ao chegar ao comando “fim para” a variável tem seu valor acrescido de 1(um) e verifica se o seu valor é maior que fim Se for menor ou igual, repete o conjunto de instruções
  • 52.
    Elabore um algoritmopara escrever os números inteiros de 1 até 10 Inicio Para j  1 ate 10 faça Escreva j Fim para Fim
  • 53.
    Elabore um algoritmopara determinar a soma dos 10 primeiros números inteiros Inicio Soma  0; Para j  1 até 10 faça Soma  soma+j Fim para Escreva soma Fim
  • 54.
    Elabore um algoritmoque leia 5 valores e determine a sua soma Inicio Soma  0 Para j  1 ate 5 faça Ler x Soma  soma+x Fim para Escreva soma Fim
  • 55.
    Altere o algoritmoanterior para ler “n” valores Inicio Ler n Soma  0 Para j  1 ate n faça Ler x Soma  soma +x Fim para Escreva soma Fim
  • 56.
    Enquanto-faça Usa-se daseguinte forma: Enquanto condição faça Grupo de instruções que será repetido Fim enquanto Funciona da seguinte forma: Enquanto a condição for VERDADEIRA o grupo de instruções é repetido
  • 57.
    Por exemplo: soma de 5 valores lidos Inicio Soma  0 Cont  0 Enquanto cont < 5 faça Ler x Soma  soma+x Cont  cont+1 Fim enquanto Escreva soma Fim
  • 58.
    As condições sãoconstruídas De forma análoga as condições da estrutura de decisão; Pode-se usar os operadores >, >=, <,<=,=,<> e ou não
  • 59.
    Pode-se interromper arepetição Usando um contador, conforme o exemplo anterior ou; Usando um “flag” condição que indica que a repetição deve ser interrompida.
  • 60.
    Elabore um algoritmoque Leia uma quantidade indeterminada de valores positivos. O “flag” é um valor negativo.
  • 61.
    Solução Inicio Soma 0 Ler x Enquanto x > 0 faça Soma  soma +x Ler x Fim enquanto Escreva soma Fim
  • 62.
    Repita-até Usa-se daseguinte forma: Repita Grupo de instruções que será repetido Até que condição Funciona da seguinte forma: Repete o grupo de instruções ATÉ que a condição seja verdadeira
  • 63.
    Elabore um algoritmoque leia 5 valores e determine a sua soma Inicio Soma  o Cont  0 Repita Ler x Soma  soma+x Cont  cont+1 Ate que cont = 5 Escreva soma Fim