http://olinux.uol.com.br/artigos/441/print_preview.html



                    Curso de Algoritmo - Aula IX
                    Por: Jorge Luiz E. Sousa ( 29/01/2002 )




                        Introdução

                    Como prometido aqui estão as soluções dos exercícios apresentados na aula anterior .

                    Solução dos exercícios. Confira!


                        Exercício 1

                    Fazer um algoritmo que dadas as dimensões de um retângulo, calcule a sua área e escreva na tela.

                    Algoritmo
                    Declare
                    //Inicio do algoritmo

                           //Obtendo os dados do usuário
                           Escreva('Digite o valor da base do retângulo: ')
                           Leia(Base)
                           Escreva('Digite o valor da altura do retângulo: ')
                           Leia(Altura)

                           //Calculando a área
                           Area <- Base * altura

                           Escreva('A área é: ',Area)

                    FimAlgoritmo


                    Análise do algorítmo acima:

                    Primeira análise:

                    Este algoritmo é muito simples, sendo necessário apenas uma fórmula para sua solução. não há o que
                    comentar... qualquer dúvida contacte-me.

                        Exercício 2

                    Fazer um algoritmo que para cada número digitado pelo usuário, calcule seu fatorial e escreva na tela.

                    Algoritmo
                    Declare
                    //Inicio do algoritmo

                           //Obtendo dados do usuário para      entrar no laço ou
                    não
                        Escreva ('Digite um número, ou 0 para sair(o fatorial de 0
                    é 1.)')')
                        Leia
                    (Numero)
                        //Inicializando variáveis
                        i<- Numero
                        Fatorial<- 1
                        Enquanto Numero <> 0 faça
                    Para i<- 1 até Numero Faça
                    Se i<>0
                                     então Fatorial<- Fatorial * i
                                     i<- i-1
                             FimPara
                    Escreva('O fatorial de ',Numero,' é ',Fatorial)

                                 //Obtendo dados do usuário para continuar ou sair do
                    laço
Escreva('Digite um número, ou 0 para sair(o fatorial
de 0 é 1.)')')
        Leia(Numero)
    FimEnquanto
FimAlgoritmo


Análise do algorítmo acima:

Primeira análise.

Para se calcular o fatorial de um número, é necessário multiplicá-lo pelos seus predessessores até se
chegar ao 1. Por tanto, o fatorial de 5 é 5*4*3*2*1.

Com base nisto, chega-se a conclusão de que uma estrutura PARA resolve o problema, visto que temos
o valor inicial e o ponto de parada.

Segunda análise.

Como em algoritmo a estrutura PARA somente "anda para frente", devemos utilizar uma variável
auxiliar para decrementar o número, assim poderemos chegar ao valor desejado, testando se o
decremento chegou a zero por precaução.




   Exercício 3

Fazer um algoritimo para calcular a potência N de um numero X. Ambos serão digitados pelo usuário. E
escreva na tela.

Algoritmo
Declare
//Inicio do algoritmo
    //Obtendo os dados do usuário
    Escreva('Digite a base:')
    Leia(Base)
    Escreva('Digite o expoente:')
    Leia(Expoente)

    //Inicializando variável resultado
    Resultado<- Base

     //Calculando
     Se Expoente = 0
         então
Resultado<-1
         senão
Se base = 0
                  então Resultado <- 0
                  senão PARA i<- 1 até (Expoente -1)
FAÇA
Resultado<- Resultado * Expoente
                      FimPARA
FimSe
FimSe
Escreva('O resultado é: ',Resultado)
FimAlgoritmo


Análise do algorítmo acima:

Primeira análise

O calculo da exponenciação se dá como XN de modo que para se obter o resultado final deve-se
multiplicar X por ele mesmo N vezes. Então, conhecemos o valor inicial (1) e o valor final será dado
pelo usuário.

A estrutura PARA é o mais indicado.

Segunda análise
Montar a expressão é facil, mas em algoritmo é necessário mostrar todos os passos para a máquina
(computador), pois você o está ensinando a fazer algo. então, devemos prever todas as situações
possíveis. Por isto, testamos a entrada do expoente 0, e base 0.




   Exercício 4

Dada a expressão:

2*10*2*20*2*30*2*40
1+2+3+4+5+6+7+8

fazer um algoritmo para mostrar seu resultado.

Algoritmo
Declare
//Inicio do algoritmo

j<-10
Somar


<- 0
    PARA i <- 1 até 8 Faça
Calcular<- Calcular + (2*j)
        Somar<- Somar + i
        j<- j + 10
    FimPARA
Resultado<- Calcular / Somar

       Escreva('O resultado é: ', Resultado)

FimAlgoritmo


Análise do algorítmo acima:

Primeira análise

A expressão é fixa tendo somente oito elementos no numerador, oito no denominador. A estrutura para
é a mais indicada para resolver.

Segunda análise

São necessárias variáveis auxiliares para o calculo, estas são Calcular, j e Somar que fazem
respectivamente:

  1.    Calcular o valor final do numerador, utilizando-se do incremento do j;
  2.    Calcular o valor do denominador.


   Exercício 5

Note que somente os calculos são feitos dentro do laço. o calculo do resultado final foi feito após o
calculo das partes. Fora do laço. Bem como a escrita.


   Exercício 5

Fazer um algoritmo que dados dois números, calcule a razão existente entre eles e monte uma PA de
10 termos e escreva na tela.

O calculo da razão é o segundo termo menos o primeiro.

Algoritmo
Declare
//Inicio do algoritmo

       //Obtendo os dados do usuário
Escreva('Digite o primeiro número')
       Leia(PTermo)

       Escreva('Digite o segundo número')
       Leia(STermo)

       //Calculando a razão
       Razao<- STermo - PTermo

    Escreva('Os dez primeiros termos desta PA são:')
    Escreva(PTermo)
    Escreva(STermo)
    TAux<-STermo
    Para i<-3 até 8 Faça
ProxTermo<- TAux + Razao
        Escreva(ProxTermo)
        TAux<- ProxTermo
    FimPara
FimAlgoritmo


Análise do algorítmo acima:

Primeira análise

Uma PA é uma sequência de números com uma razão entre eles. Para se calcular os termos da PA é
necessário conhecer pelo menos um e a razão. No nosso caso, temos os dois primeiros, isto significa
que temos a razão também. Depois é só somar.

Segunda análise

Não existe somente esta forma para resolver o problema. observe isto. Use este algoritmo como base
somente, não como a única solução.




   Exercício 6

Tendo-se a seguinte expressão matemática:

Soma = X+Y
Mult= X*Y
SubTotal = Mult / Soma
Expressao = [ (X*15)+(Y*25)+(X*35)+(Y*45)+(X*55) ] / 15
Total= SubTotal + Expressao


Fazer um algoritmo que:

  1.    Leia os valores X e Y
  2.    Calcule a soma e a multiplicacao destes valores e armazene em SubTotal
  3.    Calcule expressao e armazene a última operação de soma na variável Total

Ao final do programa, listar na tela os valores, da seguinte maneira:

Exercício 6

Valores digitados pelo usuário "VALOR DE X"; "VALOR DE Y"
Subtotal : "VALOR DO SUBTOTAL";
Expressão: "VALOR DA EXPRESSÃO";
Total:"Valor total";


Algoritmo
Declare
//Inicio do algoritmo
    //Obtendo os números do usuário
    Escreva('Digite o primeiro número')
    leia(X)
    Escreva('Digite o Segundo número')
    Leia(Y)
Soma <- X + Y
       Mult <- X * Y
       SubTotal <- Mult / Soma

    Expressao <- 0
    i<-15
    j<- 1
    Enquanto i <= 55 faça
Par<- J mod 2
        Se (par = 0)
            Então Expressao <- Expressao + (X*i)
            Senão Expressao <- Expressao + (Y*i)
        FimSe
i<- i + 10
    Fim Enquanto
Expressao<-Expressao/15

    Total <- SubTotal + Expressao
    Escreva('Exercicio1')
    Escreva('') //isto escreve uma linha vazia
    Escreva('') //isto escreve uma linha vazia
    Escreva('Os valores digitados pelo usuário
são:X=',X,' Y= ',Y)
    Escreva('SubTotal= ',SubTotal)
    Escreva('Expressão= ',Expressao)
    Escreva('O valor total dos calculos é:', Total)

FimAlgoritmo


Análise do algorítmo acima:

Primeira análise

O problema apresentado neste exercício e no anterior, devem ser resolvidos em partes, assim, na
sequência temos a solução da primeira expressão, da segunda, do subtotal e o calculo da expressão.

Segunda análise

Sobre o calculo da expressão:

Expressao <- 0
    i<-15
    j<- 1
    Enquanto i <= 55 faça
Par<- J mod 2
        Se (par = 0)
            Então Expressao <- Expressao + (X*i)
            Senão Expressao <- Expressao + (Y*i)
        FimSe
i<- i + 10
    Fim Enquanto
Expressao<-Expressao / 15


Vejamos:

  1.    a inicialização da variável "Expressao" com zero é para que ele esteja "limpa" quando receber o
        primeiro valor.
  2.    a variável "i" recebendo 15 servirá para o incremento dos valores 15,25,35...
  3.    a variável "Par" receberá o valor do resto da divisão de j por 2, e definirá se o número é par ou
        impar. Portanto, quando for inpar multiplicaremos "i" por "X" e quando for par, multiplicaremos
        por "Y".
  4.    quando sairmos do laço, a expressão estará pronta para ser dividida por 15.

   Conclusão

Com estes exercícios, terminamos este módulo. No próximo, veremos mais estruturas, ainda não
apresentadas, como vetores e matrizes.

Até mais!
Se você conseguiu fazer todos os exercícios, Parabéns!

Se não, não fique triste, você pode revisar as aulas e tentar de novo.




                                  Copyright (C) 1999- 2 0 0 0 Linux Solutions

Curso De Algoritmo Aula 9

  • 1.
    http://olinux.uol.com.br/artigos/441/print_preview.html Curso de Algoritmo - Aula IX Por: Jorge Luiz E. Sousa ( 29/01/2002 ) Introdução Como prometido aqui estão as soluções dos exercícios apresentados na aula anterior . Solução dos exercícios. Confira! Exercício 1 Fazer um algoritmo que dadas as dimensões de um retângulo, calcule a sua área e escreva na tela. Algoritmo Declare //Inicio do algoritmo //Obtendo os dados do usuário Escreva('Digite o valor da base do retângulo: ') Leia(Base) Escreva('Digite o valor da altura do retângulo: ') Leia(Altura) //Calculando a área Area <- Base * altura Escreva('A área é: ',Area) FimAlgoritmo Análise do algorítmo acima: Primeira análise: Este algoritmo é muito simples, sendo necessário apenas uma fórmula para sua solução. não há o que comentar... qualquer dúvida contacte-me. Exercício 2 Fazer um algoritmo que para cada número digitado pelo usuário, calcule seu fatorial e escreva na tela. Algoritmo Declare //Inicio do algoritmo //Obtendo dados do usuário para entrar no laço ou não Escreva ('Digite um número, ou 0 para sair(o fatorial de 0 é 1.)')') Leia (Numero) //Inicializando variáveis i<- Numero Fatorial<- 1 Enquanto Numero <> 0 faça Para i<- 1 até Numero Faça Se i<>0 então Fatorial<- Fatorial * i i<- i-1 FimPara Escreva('O fatorial de ',Numero,' é ',Fatorial) //Obtendo dados do usuário para continuar ou sair do laço
  • 2.
    Escreva('Digite um número,ou 0 para sair(o fatorial de 0 é 1.)')') Leia(Numero) FimEnquanto FimAlgoritmo Análise do algorítmo acima: Primeira análise. Para se calcular o fatorial de um número, é necessário multiplicá-lo pelos seus predessessores até se chegar ao 1. Por tanto, o fatorial de 5 é 5*4*3*2*1. Com base nisto, chega-se a conclusão de que uma estrutura PARA resolve o problema, visto que temos o valor inicial e o ponto de parada. Segunda análise. Como em algoritmo a estrutura PARA somente "anda para frente", devemos utilizar uma variável auxiliar para decrementar o número, assim poderemos chegar ao valor desejado, testando se o decremento chegou a zero por precaução. Exercício 3 Fazer um algoritimo para calcular a potência N de um numero X. Ambos serão digitados pelo usuário. E escreva na tela. Algoritmo Declare //Inicio do algoritmo //Obtendo os dados do usuário Escreva('Digite a base:') Leia(Base) Escreva('Digite o expoente:') Leia(Expoente) //Inicializando variável resultado Resultado<- Base //Calculando Se Expoente = 0 então Resultado<-1 senão Se base = 0 então Resultado <- 0 senão PARA i<- 1 até (Expoente -1) FAÇA Resultado<- Resultado * Expoente FimPARA FimSe FimSe Escreva('O resultado é: ',Resultado) FimAlgoritmo Análise do algorítmo acima: Primeira análise O calculo da exponenciação se dá como XN de modo que para se obter o resultado final deve-se multiplicar X por ele mesmo N vezes. Então, conhecemos o valor inicial (1) e o valor final será dado pelo usuário. A estrutura PARA é o mais indicado. Segunda análise
  • 3.
    Montar a expressãoé facil, mas em algoritmo é necessário mostrar todos os passos para a máquina (computador), pois você o está ensinando a fazer algo. então, devemos prever todas as situações possíveis. Por isto, testamos a entrada do expoente 0, e base 0. Exercício 4 Dada a expressão: 2*10*2*20*2*30*2*40 1+2+3+4+5+6+7+8 fazer um algoritmo para mostrar seu resultado. Algoritmo Declare //Inicio do algoritmo j<-10 Somar <- 0 PARA i <- 1 até 8 Faça Calcular<- Calcular + (2*j) Somar<- Somar + i j<- j + 10 FimPARA Resultado<- Calcular / Somar Escreva('O resultado é: ', Resultado) FimAlgoritmo Análise do algorítmo acima: Primeira análise A expressão é fixa tendo somente oito elementos no numerador, oito no denominador. A estrutura para é a mais indicada para resolver. Segunda análise São necessárias variáveis auxiliares para o calculo, estas são Calcular, j e Somar que fazem respectivamente: 1. Calcular o valor final do numerador, utilizando-se do incremento do j; 2. Calcular o valor do denominador. Exercício 5 Note que somente os calculos são feitos dentro do laço. o calculo do resultado final foi feito após o calculo das partes. Fora do laço. Bem como a escrita. Exercício 5 Fazer um algoritmo que dados dois números, calcule a razão existente entre eles e monte uma PA de 10 termos e escreva na tela. O calculo da razão é o segundo termo menos o primeiro. Algoritmo Declare //Inicio do algoritmo //Obtendo os dados do usuário
  • 4.
    Escreva('Digite o primeironúmero') Leia(PTermo) Escreva('Digite o segundo número') Leia(STermo) //Calculando a razão Razao<- STermo - PTermo Escreva('Os dez primeiros termos desta PA são:') Escreva(PTermo) Escreva(STermo) TAux<-STermo Para i<-3 até 8 Faça ProxTermo<- TAux + Razao Escreva(ProxTermo) TAux<- ProxTermo FimPara FimAlgoritmo Análise do algorítmo acima: Primeira análise Uma PA é uma sequência de números com uma razão entre eles. Para se calcular os termos da PA é necessário conhecer pelo menos um e a razão. No nosso caso, temos os dois primeiros, isto significa que temos a razão também. Depois é só somar. Segunda análise Não existe somente esta forma para resolver o problema. observe isto. Use este algoritmo como base somente, não como a única solução. Exercício 6 Tendo-se a seguinte expressão matemática: Soma = X+Y Mult= X*Y SubTotal = Mult / Soma Expressao = [ (X*15)+(Y*25)+(X*35)+(Y*45)+(X*55) ] / 15 Total= SubTotal + Expressao Fazer um algoritmo que: 1. Leia os valores X e Y 2. Calcule a soma e a multiplicacao destes valores e armazene em SubTotal 3. Calcule expressao e armazene a última operação de soma na variável Total Ao final do programa, listar na tela os valores, da seguinte maneira: Exercício 6 Valores digitados pelo usuário "VALOR DE X"; "VALOR DE Y" Subtotal : "VALOR DO SUBTOTAL"; Expressão: "VALOR DA EXPRESSÃO"; Total:"Valor total"; Algoritmo Declare //Inicio do algoritmo //Obtendo os números do usuário Escreva('Digite o primeiro número') leia(X) Escreva('Digite o Segundo número') Leia(Y)
  • 5.
    Soma <- X+ Y Mult <- X * Y SubTotal <- Mult / Soma Expressao <- 0 i<-15 j<- 1 Enquanto i <= 55 faça Par<- J mod 2 Se (par = 0) Então Expressao <- Expressao + (X*i) Senão Expressao <- Expressao + (Y*i) FimSe i<- i + 10 Fim Enquanto Expressao<-Expressao/15 Total <- SubTotal + Expressao Escreva('Exercicio1') Escreva('') //isto escreve uma linha vazia Escreva('') //isto escreve uma linha vazia Escreva('Os valores digitados pelo usuário são:X=',X,' Y= ',Y) Escreva('SubTotal= ',SubTotal) Escreva('Expressão= ',Expressao) Escreva('O valor total dos calculos é:', Total) FimAlgoritmo Análise do algorítmo acima: Primeira análise O problema apresentado neste exercício e no anterior, devem ser resolvidos em partes, assim, na sequência temos a solução da primeira expressão, da segunda, do subtotal e o calculo da expressão. Segunda análise Sobre o calculo da expressão: Expressao <- 0 i<-15 j<- 1 Enquanto i <= 55 faça Par<- J mod 2 Se (par = 0) Então Expressao <- Expressao + (X*i) Senão Expressao <- Expressao + (Y*i) FimSe i<- i + 10 Fim Enquanto Expressao<-Expressao / 15 Vejamos: 1. a inicialização da variável "Expressao" com zero é para que ele esteja "limpa" quando receber o primeiro valor. 2. a variável "i" recebendo 15 servirá para o incremento dos valores 15,25,35... 3. a variável "Par" receberá o valor do resto da divisão de j por 2, e definirá se o número é par ou impar. Portanto, quando for inpar multiplicaremos "i" por "X" e quando for par, multiplicaremos por "Y". 4. quando sairmos do laço, a expressão estará pronta para ser dividida por 15. Conclusão Com estes exercícios, terminamos este módulo. No próximo, veremos mais estruturas, ainda não apresentadas, como vetores e matrizes. Até mais!
  • 6.
    Se você conseguiufazer todos os exercícios, Parabéns! Se não, não fique triste, você pode revisar as aulas e tentar de novo. Copyright (C) 1999- 2 0 0 0 Linux Solutions