bloqueio

sexta-feira, 13 de maio de 2011

AULAS 07 e 08 - 04/05/2011 - 05/05/2001 - Exercitando Estrutura Condicional

Nestas aulas exercitamos o conteudo que nos foi passado anteriormente, o professor Jossandro passou 7 exercicios, os quais resolvemos e corrigimos até o . Disponibilizarei-os a seguir.

1 - Faça um programa que receba um número inteiro e verifique se é par ou ímpar.

algoritmo_par_impar
var
    numero: inteiro
inicio
       escreval("Digite um número inteiro ")
       leia(numero)
       SE numero MOD 2=0 ENTAO
          escreval("Este numero é par.")
       SENAO
          escreval("Este número é impar.")
       FIMSE
fimalgoritmo 


Obs. Neste problema foi usado o comando MOD que diz quanto sobrou da divisão(resto), então se o resto da divisão for igual a 0, o numero é par, se esta condição não for aceita então o número obviamente é impar.

2 - A nota final de um estudante é calculada a partir de três notas atribuídas, respectivamente , a um trabalho de laboratório, a uma avaliação semestral e a um exame final. A média das três notas mencionadas obedece aos pesos a seguir:

Nota
Peso
Trabalho de laboratório
2
Avaliação semestral
3
Exame final
5

Faça um programa que receba as três notas, calcule e mostre a média ponderada e o conceito que segue a tabela:


Média Ponderada
Conceito
[8,0 – 10,0]
A
[7,0 – 8,0[
B
[6,0 – 7,0[
C
[5,0 – 6,0[
D
[0,0 – 5,0[
E


algoritmo_media_ponderada
var
   nota1, nota2, nota3, ponderada: real
inicio
      escreval("Digite a nota do Trabalho de Laboratório ")
      leia(nota1)
      escreval("Digite a nota da Avaliação semestral ")
      leia(nota2)
      escreval("Digite a nota do Exame final ")
      leia(nota3)
      ponderada <- (nota1*2+nota2*3+nota3*5)/10
      escreva("A nota é: ", ponderada)
      SE ponderada <5 ENTAO
         escreva(" E")
         SENAO
         SE (ponderada >=5) e (ponderada <6) ENTAO
            escreva(" D")
         SENAO
            SE (ponderada >=6)e(ponderada <7) ENTAO
               escreva(" C")
             SENAO
               SE (ponderada >=7)e(ponderada <8) ENTAO
                  escreva(" B")
               SENAO (ponderada >=8)e(ponderada <=10) ENTAO
                     escreva(" A")
               FIMSE
            FIMSE
         FIMSE
      FIMSE
fimalgoritmo 


Obs. Nesta questão deve-se observar na tabela mensionada acima, onde o colchete esta aberto quer dizer que aquele número pertence ao próximo conceito, por exemplo, " [6,0 – 7,0[ " o colchete esta aberto, ou seja, se a nota for 7 pertencerá ao proximo conceito, se for 6.9 pertencerá a este. Quando o colchete estiver fechado deve-se usar alem do < ou > o =, para que quando seja "[8,0 – 10,0]" o colchete fechado, por exemplo, utilizar a ultima nota.

3 - Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se que:

a) Esse funcionário foi contratado em 2007, com salário inicial de R$ 1.000,00.

b) Em 2008, ele recebeu aumento de 1,5% sobre seu salário inicial.

c) A partir de 2009 (inclusive), os aumentos salariais sempre corresponderam ao dobro do percentual do ano anterior.
Faça um programa que determine o salário atual desse funcionário. 

algoritmo_salario_aumento
var
    salario, ano1, ano2, ano3, ano4: real
inicio
       salario <- 1000
       ano1 <- 1000*1.5/100 + salario
       ano2 <- ano1*3/100 + ano1
       ano3 <- ano2*6/100 + ano2
       ano4 <- ano3*12/100 + ano3
       escreval("O salário em 2011 é: ", ano4)  
fimalgoritmo

4 - Faça um programa que receba três notas de um aluno, calcule e mostre a média aritmética e a mensagem constante na tabela a seguir. Aos alunos que ficaram para exame, calcule e mostra a nota que deverão tirar para serem aprovados, considerando que a média exigida é 6,0.



Média Aritmética
Mensagem
[0,0 – 3,0[
Reprovado
[3,0 – 7,0[
Exame
[7,0 – 10,0]
Aprovado


algoritmo_reprovado
var
     nota1, nota2, nota3, media_arit, passar :real
inicio
      escreval("Digite as três notas")
      leia(nota1)
      leia(nota2)
      leia(nota3)
      media_arit <- (nota1+nota2+nota3)/3
      escreva("A média é:", media_arit)
      SE (media_arit <3) ENTAO
         escreval(" Aluno Reprovado.")
      SENAO
              SE(media_arit >=3) e (media_arit <7) ENTAO
                 passar <- (12-media_arit)
                 escreval(" Aluno de Exame, para passar deve tirar ", passar)
              SENAO
                      SE(media_arit >=7) e (media_arit <=10) ENTAO
                           escreval(" Aluno Aprovado")
                      FIMSE
              FIMSE
      FIMSE
fimalgoritmo


5 - Faça um programa que receba dois números e mostre o maior.

algoritmo_num_maior
var
    num1, num2: real
inicio
       escreval("Digite o primeiro número")
       leia(num1)
       escreval("Digite o segunto número")
       leia(num2)
     SE (num1>num2) ENTAO
          escreval("O número maior é", num1)
     SENAO
          SE (num1<num2) ENTAO
                escreval("O número maior é", num2)
          SENAO
               SE (num1=num2) ENTAO
                    escreval("Os números digitados são iguais.")
               FIMSE
           FIMSE
       FIMSE
fimalgoritmo 



6 - Faça um programa que receba três números e mostre-os em ordem crescente. Suponha que o usuário digitará três números diferentes.

alg_crescente
var
   n1, n2, n3:real
inicio
   escreva("Digite o primeiro número: ")
   leia(n1)
   escreva("Digite o segundo número: ")
   leia(n2)
   escreva("Digite o terceiro número: ")
   leia(n3)
   SE (n1<n2) e (n2<n3) ENTAO
      escreva(n1, n2, n3)
   SENAO
        SE (n2<n1) e (n1<n3) ENTAO
           escreva(n2, n1, n3)
        SENAO
             SE (n1<n3) e (n3<n2) ENTAO
                escreva(n1, n3, n2)
             SENAO
                  SE (n2<n3) e (n3<n1) ENTAO
                     escreva(n2, n3, n1)
                  SENAO
                       SE (n3<n1) e (n1<n2) ENTAO
                          escreva (n3, n1, n2)
                       SENAO
                            SE (n3<n2) e (n2<n1) ENTAO
                               escreva (n3, n2, n1)
                            SENAO
                                 SE (n1=n2) ou (n1=n3) ou (n2=n3) ENTAO
                                    escreva ("Você digitou números iguais.")
                                 FIMSE
                            FIMSE
                       FIMSE
                  FIMSE
             FIMSE
        FIMSE
   FIMSE
fimalgoritmo
7 - Faça um programa que determine a data cronologicamente maior entre duas datas fornecidas pelo usuário. Cada data deve ser composta por três valores inteiros, em que o primeiro representa o dia, o segundo, o mês e o terceiro, o ano.


datas
var
  dia1, dia2, mes1, mes2, ano1, ano2:inteiro
inicio
      escreval("Digite a primeira data")
      escreva("Dia: ")
      leia(dia1)
      escreva("Mês: ")
      leia(mes1)
      escreva("Ano: ")
      leia (ano1)
      escreval("Digite a segunda data:")
      escreva("Dia: ")
      leia(dia2)
      escreva("Mês: ")
      leia(mes2)
      escreva("Ano: ")
      leia (ano2)
      SE(dia1>31)ENTAO
         escreval("Data incorreta")
      SENAO
         SE (mes1>12)ENTAO
            escreval("Data incorreta")
         SENAO
              SE (mes1=2) e (dia1>29) ENTAO
                 escreval ("Data incorreta")
              SENAO
                   SE (dia2>31)ENTAO
                      escreval("Data incorreta")
                   SENAO
                        SE (mes2=2) e (dia2>29) ENTAO
                            escreval ("Data incorreta")
                        SENAO
                             SE (mes2>12)ENTAO
                                 escreval("Data incorreta")
                             SENAO
                                  SE (ano1>ano2)ENTAO
                                     escreva("A primeira data é a maior")
                                  SENAO
                                       SE (ano1<ano2)ENTAO
                                           escreva("A segunda data é a maior")
                                       SENAO
                                         SE(ano1=ano2)ENTAO
                                         SE(mes1>mes2)ENTAO
                                             escreva("A primeira data é a maior")
                                         SENAO
                                           SE(mes1<mes2)ENTAO
                                              escreva("A segunda data é a maior")
                                           SENAO
                                             SE(mes1=mes2)ENTAO
                                             SE(dia1>dia2)ENTAO
                                                escreva("A primeira data é a maior")
                                             SENAO
                                                 SE(dia1<dia2)ENTAO
                                                    escreva("A segunda data é a maior")
                                                 SENAO
                                                     SE(dia1=dia2)ENTAO
                                                         escreva("As datas são iguais")
                                                     FIMSE
                                                 FIMSE
                                             FIMSE
                                             FIMSE
                                           FIMSE
                                         FIMSE
                                         FIMSE
                                       FIMSE
                                  FIMSE
                             FIMSE
                        FIMSE
                   FIMSE
              FIMSE
         FIMSE
      FIMSE
fimalgoritmo

  Como normalmente, resolvemos vários exercícios passados pelo professor. Foi-nos apresentado um novo comando, o MOD, que trabalha apenas com o "resto" das operações de divisão, sendo utilizado, por exemplo, em exercícios que tenhamos que descobrir se o número é par ou ímpar, como enfatizei na primeira questão. Devemos também prestar atenção na criação dos algoritmos pelo VisuAlg, pois apenas um espaço, uma letra maiúscula, uma vírgula, pois o VisuAlg trabalha com o modo americano que reconhece apenas a virgula, apenas o ponto, ou até mesmo um tio pode estar causando o problema, ja que ele apenas obedece comandos linha após linha. Além de novos comandos e dicas do VisuAlg, o professor Jossandro resaltou que quando um programador vai na casa ou escritório de um cliente, saber oque ele deseja para o seu software, ele deve sempre tentar "prever" determinados problemas que este possa a vir a sofrer no futuro, sempre perguntando ao usuario o seu parecer, pois este deve concordar, ou pelo menos entender o que pode ocorrer, como por exemplo na questão 5, é pedido apenas o numero maior, mas sempre devemos pensar a frente pondo também se o usuario digitar números iguais para o comunicar do erro.
 E para fechar a aula foi marcada a primeiro prova, para dia 18/05/2011, agora é so estudar.