bloqueio

domingo, 29 de maio de 2011

AULAS 14 e 15 - 25/05/2011 e 26/05/2011 - Prova e correção dos exercícios.

Na aula 14 fizemos a prova, nela continha 3 questões e na aula 15 foram todas corrigidas pelo professor Jossandro.

1 - Dados três valores x, y e z, faça um algoritmo para verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verifique se é um triângulo eqüilátero, isóscele ou escaleno. Se eles não formarem um triângulo escreva uma mensagem de alerta. Considere que:

* O comprimento de cada lado de um triângulo é menor do que a soma dos outros dois lados;
* Um triângulo eqüilátero tem os seus três lados iguais;
* Um triângulo isóscele tem o comprimento de dois lados iguais; e
* Um triângulo escaleno tem os três lados diferentes.

algoritmo "triangulo"
var
   x, y, z:inteiro
inicio
   escreval("Digite a medida dos 3 lados do triangulo")
   leia(x, y, z)
   se (x >= y+z) ou (y  >= x+z) ou (z >= x+y) entao
      escreval("As medidas informadas nao formam um triangulo")
   senao
      se (x=y) e (y=z) entao
         escreval("Triangulo equilatero - todos os lados iguais")
      senao
         se (x=y) ou (x=z) ou (y=z) entao
            escreval("Triangulo isoceles - 2 lados iguais")
         senao
            se (x<>y) e (x<>z) e (y<>z) entao
               escreval("Triangulo escaleno - todos os lados diferentes")
            fimse
         fimse
      fimse
   fimse  
fimalgoritmo

Download arquivo alg.

2 - Faça um programa que receba a medida de um ângulo em graus. Calcule e mostre o quadrante em que se localiza esse ângulo. Considere os quadrantes da trigonometria e, no caso de ângulos maiores que 360º ou menores que -360º, reduzi-los, mostrando também o número de voltas e o sentido da volta (horário ou anti-horário).

algoritmo "angulo"
var
   a: inteiro
   voltas: real
inicio
   escreval("Digite um angulo")
   leia(a)
   se (a>360) ou (a < -360) entao
      voltas <- a / 360
      a <- a mod 360
   senao
      voltas <- 0
   fimse
   se (a=0) ou (a=90) ou (a=180) ou (a=270) ou (a=360) ou (a=-90) ou (a=-180) ou (a=-270) ou (a=-360) entao
      escreval("Esta sobre um dos eixos")
   senao
      se ((a >0) e (a < 90)) ou ((a < -270) e (a > -360)) entao
         escreval("1 quadrante")
      fimse
      se ((a >90) e (a < 180)) ou ((a < -180) e (a > -270)) entao
         escreval("2 quadrante")
      fimse
      se ((a >180) e (a < 270)) ou ((a < -90) e (a > -180)) entao
         escreval("3 quadrante")
      fimse
      se ((a >270) e (a < 360)) ou ((a < 0) e (a > -90)) entao
         escreval("4 quadrante")
      fimse
      escreva(" ", voltas," voltas no sentido ")
      se (a<0) entao
         escreval(" horario")
      senao
         escreval(" anti-horario")
      fimse
   fimse
fimalgoritmo

Download arquivo alg.

3 -  Faça um programa que receba vários números, calcule e mostre:
   - a soma dos números digitados;
   - a quantidade de números digitados;
   - a média dos números digitados;
   - o maior número digitado;
   - o menor número digitado
   - a média dos números pares;
   - a porcentagem de números ímpares entre todos os números digitados;
   - a soma dos números primos digitados;
Finalize a entrada de dados com a digitação do número 99999. Este número não pode considerado nos cálculos.

algoritmo "calculos"
var
   num, prim, soma_prim, soma, qtd, z, maior, menor, qtd_par, soma_par, qtd_impar: inteiro
   media_par, media, perc : real
inicio
   qtd <- 0
   qtd_par<-0
   soma_par <-0
   soma_prim <- 0
   qtd_impar <-0
   escreval("Digite um numero")
   leia(num)
   repita
     se (qtd=0) entao
        maior <- num
        menor <- num
     senao
        se (num > maior) entao
           maior <- num
        fimse
        se (num < menor ) entao
           menor <- num
        fimse
     fimse
     soma <- soma + num
     qtd <- qtd + 1
     se (num mod 2 = 0) entao
        soma_par <- soma_par + num
        qtd_par <- qtd_par + 1
     senao
        qtd_impar <- qtd_impar + 1
     fimse
     prim <- 0
     para z de 1 ate num faca
        se (num mod z = 0) entao
           prim <- prim + 1
        fimse
     fimpara
     se (prim <= 2)entao
        soma_prim <- soma_prim + num
     fimse
     leia(num)
   ate(num=99999)
   se (qtd = 0) entao
      escreval("Nenhum numero digitado")
   senao
      escreval("A soma e ",soma)
      escreval("A quantidade e ",qtd)
      media <- soma / qtd
      escreval("A media e ", media)
      escreval("O maior e ", maior)
      escreval("O menor e ", menor)
      se (qtd_par = 0 ) entao
         escreval("Nenhum numero par foi digitado")
      senao
         media_par <- soma_par / qtd_par
         escreval("A media dos pares e ", media_par)
      fimse
      perc <- qtd_impar * 100 / qtd
      escreval("O percentual de impares e ", perc)
      escreval("A soma dos primos e ",soma_prim)
   fimse
fimalgoritmo

Download arquivo alg.
A prova não estava difícil, mas eu acabei me enrolando em um questão fácil como a 1, a dois tive mais dificuldade pois a parte onde o angulo poderia dar mais de uma volta, eu teria de ter usado o comando mod para saber a qual quadrante o angulo pertenceria, já na questão três eu consegui fazer quase toda, faltando apenas a parte dos números primos.

domingo, 22 de maio de 2011

AULAS 12 e 13 - 18/05/2011 e 19/05/2011 - Revisão para prova .

Nestas aulas foram aplicadas 8 questões, uma especie de simulado, para a prova que será dia 25/05/2011. Na primeira aula foi passada as questões e na segunda foram corrigidas.

1 - Faça um programa que recebe um número positivo e maior que zero, calcule e mostre:
a) o número digitado ao quadrado;
b) o número digitado ao cubo;
c) a raiz quadrada do número digitado;
d) a raiz cúbica do número digitado.

algoritmo "quest_1"
var
  n, nq, cubo, rq, rc: real
inicio
  leia(n)
  se (n<=0) entao
     escreval("Digite um nro maior que zero")
  senao
     nq <- n^2
     escreval("O nro ao quadrado e ",nq)
     cubo <- n^3
     escreval("O nro ao cubo e ",cubo)
     rq <- RaizQ(n)
     escreval("A raiz quadrada e ",rq)
     rc <- n^(1/3)
     escreval("A raiz cubica e ", rc)
  fimse
fimalgoritmo


2 - Faça um programa para verificar se um inteiro positivo lido é par ou ímpar (mostre por escrito se é par ou ímpar). Se o número for ímpar, multiplique por 2 e mostre o resultado, caso contrário multiplique por ½ e mostre o resultado.            (OBS: Par: x mod 2 = 0)

algoritmo "parimpar"
var
  result:real
  n:inteiro
inicio
  leia(n)
  se (n mod 2 = 0) entao
       escreval("o numero lido é par")
       result <- n * 1/2
  senao
      escreval("o numero lido é impar")
      result <- n * 2
  fimse
  escreval(result)
fimalgoritmo

3 - Faça um programa que receba o custo total de um espetáculo teatral e o preço do convite desse espetáculo. Esse programa deverá calcular e mostrar a quantidade de convites que devem ser vendidos para que pelo menos o custo do espetáculo seja alcançado.

algoritmo "teatro"
var
  total, ingresso, qtd:real
inicio
  escreval("Digite o custo total do espetaculo")
  leia(total)
  escreval("Digite o custo do ingresso")
  leia(ingresso)
  qtd <- total/ingresso
  escreval("Voce deve vender no minimo ",qtd, " ingressos")
fimalgoritmo


4 - Faça um programa que receba três números e mostre-os em ordem decrescente.

algoritmo "decrescente"
var
   A, B, C : inteiro
inicio
  escreval("Digite 3 numeros para ordenar descrescente")
  leia (A, B, C)
  se (A > B) e (A > C) entao
      se (B > C) entao
          escreval (A, B, C)
      senao
          escreval (A, C, B)
      fimse
  senao
      se (B > A) e (B > C) entao
      se( A > C) entao
            escreval (B, A, C)
      senao
            escreval (B, C, A)
      fimse
      senao
         se (C > A) e (C > B) entao
             se ( A > B) entao
                 escreval (C, A, B)
             senao
                 escreval (C, B, A)
              fimse
          fimse
      fimse
  fimse
fimalgoritmo


5 - Faça um programa que receba a hora do início de um jogo e a hora final (cada hora é composta por duas variáveis inteiras: hora e minuto). Calcule e mostre a duração do jogo (horas e minutos), sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que ele pode iniciar-se em um dia e terminar no dia seguinte.

algoritmo "horaJogo"
var
   horaIni, minIni, horaFim, minFim, minDif, horaDif:inteiro
inicio
   escreval("Digite hora e minutos do inicio do jogo ")
   leia(horaIni, minIni)
   escreval("Digite hora e minutos do fim do jogo ")
   leia(horaFim, minFim)
   se (minIni > minFim) entao
      minFim <- minFim + 60
      horaFim <- horaFim - 1
   fimse
   se (horaIni > horaFim) entao
      horaFim <- horaFim + 24
   fimse
   minDif <- (minFim - minIni)
   horaDif <- (horaFim - horaIni)
   escreval("O jogo durou", horaDif, " horas e ", minDif, " minutos")
fimalgoritmo


6 - Faça um programa que receba cem números, calcule e mostre a soma dos números pares e a média dos números primos.

algoritmo "soma"
var
x,y,nro,primo:inteiro
cont,media,soma,parcial:real
inicio
  soma<-0
  PARA x de 1 ATE 100 FACA
    escreval("DIGITE UM NUMERO")
    leia(nro)
    SE (nro mod 2=0) entao
       escreval("VC DIGITOU UM NUMERO PAR!")
       soma<-soma+nro
    FIMSE
    primo<-0
    PARA y de 1 ATE nro FACA
       SE (nro mod y =0) ENTAO
          primo<-primo+1
       FIMSE
     FIMPARA
     cont<-0
     SE primo<=2 ENTAO
       escreval("VC DIGITOU UM NUMERO PRIMO")
       cont<-cont+1
       parcial<-parcial+primo
     FIMSE
   FIMPARA
   media<-parcial/cont
   escreval(" A SOMA DOR NUMEROS PARES É", soma)
   escreval("A MEDIA DOS NUMERO PRIMOS É", media)
fimalgoritmo
7 - Faça um programa que receba a idade e o peso de 75 pessoas, e que calcule e mostre as médias dos pesos das pessoas da mesma faixa etária. As faixas etárias são: de 1 a 10 anos, de 11 a 20 anões de 21 a 30 anos e de 31 anos para cima.

algoritmo "cidades"

var
   cont, cod, num_vei, num_acid, maior, cid_maior, menor, cid_menor: inteiro
   media_vei, media_acid: real
   soma_vei, soma_acid, cont_acid:inteiro
inicio
   soma_vei <-0
   soma_acid <-0
   cont_acid <- 0
   para cont <- 1 ate 5 faca
      escreval("Digite o codigo da cidade, o numero de veiculos e o numero de acidentes" )
      leia(cod, num_vei, num_acid)
      se (cont=1) entao
         maior <- num_acid
         cid_maior <- cod
         menor <- num_acid
         cid_menor <- cod
      senao
         se (num_acid > maior) entao
            maior <- num_acid
            cid_maior <- cod
         fimse
         se (num_acid < menor) entao
            menor <- num_acid
            cid_menor <- cod
         fimse
      fimse
      soma_vei <- soma_vei + num_vei
      se (num_vei < 2000) entao
         soma_acid <- soma_acid + num_acid
         cont_acid <- cont_acid + 1
      fimse
   fimpara
   escreval("O maior indice e ",maior," na cidade ",cid_maior)
   escreval("O menor indice e ",menor," na cidade ",cid_menor)
   media_vei <- soma_vei / 5
   escreval("A media de veiculos e ",media_vei)
   se (cont_acid = 0) entao
      escreval("Nao foi digitada nenhuma cidade com menos de 2000 veiculos" )
   senao
      media_acid <- soma_acid / cont_acid
      escreval("A media de acidentes em cidades com menos de 2.000 veiculos e ", media_acid)
   fimse
fimalgoritmo

Download arquivo alg.

8 - Cada espectador de um cinema respondeu a um questionário no qual constava sua idade e sua opinião em relação ao filme: ótimo – 3, bom – 2, regular – 1. Faça um programa que receba a idade e a opinião de 75 espectadores, calcule e mostre:
− a média das idades das pessoas que responderam ótimo;
− a quantidade de pessoas que responderam regular;
− a percentagem de pessoas que responderam bom, entre todos os espectadores analisados.

algoritmo "8"
var
   x,idade,opcao:inteiro
   contador1,contador2,contador3,idade_o,media_o,media_b:real
inicio
   para x de 1 ate 75 faca
      escreval("Ola, digite sua idade e opinição do filme.")
      escreva("Digite sua idade: ")
      leia(idade)
      limpatela
      escreval("Para Ótimo digite 3, para Bom digite 2 e para Regular digite 1.")
      repita
         escreva("Digite a opcao desejada: ")
         leia(opcao)
         se (opcao<>1) ou (opcao<>2) ou (opcao<>3) entao
            escreva("Digitou opção errada, redigite sua opção!")
         fimse
      ate(opcao=1)ou(opcao=2)ou(opcao=3)
      limpatela
      se (opcao = 1) entao
         contador1<-contador1+1
      fimse
      se (opcao = 3) entao
         contador3<-contador3+1
         idade_o<-idade+idade_o
      fimse
      se (opcao = 2) entao
         contador2<-contador2+1
      fimse
   fimpara
   media_o<-idade_o/contador3
   escreval("A média das pessoas que acharam ótimo foi de",media_o,".")
   escreval(contador1," pessoas responderam Regular.")
   media_b<-75/contador2
   escreval(media_b,"% das pessoas responderam Bom.")
fimalgoritmo

Download arquivo alg.

Nestas aulas tive muita dificuldade em algumas questões como 5 e 8, principalmente em relação a lógica, mas estou estudando bastante para a prova, que será muito difícil, e espero depois poder comemorar uma aprovação ao menos nesta prova.

quarta-feira, 18 de maio de 2011

AULA 11 - 17/05/2011 - Exercícios

   Hoje continuamos a resolver as questões da ultima aula, sendo adicionado as questões 6 e 7 pelo professor Jossandro, disponibilizarei todas corrigidas a seguir.

3 - Faça um programa que fique lendo e somando números enquanto que o produto deles seja inferior a mil.

ate_mil
var
    n, soma: inteiro
inicio
      soma<- 0
      REPITA
      escreva("Digite um número para somar: ")
           leia(n)
           soma<- soma + n
           escreval("Soma até agora: ", soma)
      ATE soma > 1000
fimalgoritmo

4 - Faça um programa que leia e some números, enquanto o número lido seja diferente de zero. Ao final mostre a média dos números lidos. Cuidado com divisão por zero!

soma_0
var
    num, quant, soma: inteiro
    media: real
inicio
      soma<- 0
      quant<- 0
      REPITA
            escreval("Digite um número para somar ou 0 para sair")
            leia(num)
            soma<- soma+num
            SE (num>0) ENTAO
               quant<- quant+1
               escreval("A soma até agora é :", soma)
            FIMSE
      ATE num=0
      SE quant>0 ENTAO
         media<- soma/quant
         escreval("A média é: ", media)
         escreval("A soma total é: ", soma)
      SENAO
           escreva("Você não somou números para fazer a média.")
      FIMSE
fimalgoritmo

5 - Faça um programa que fique lendo 2 notas, calcule e mostra a média, enquanto o usuário quiser. Dica, leia “0” (Não) ou “1” (Sim) para fazer o teste.

5_op
var
    op:inteiro
    n1, n2, media: real
inicio
      REPITA
            escreva("Digite a primeira nota: ")
            leia(n1)
            escreva("Digite a segunda nota: ")
            leia(n2)
            media<- (n1+n2)/2
            escreval("A média é ",media)
            escreval("Deseja fazer outro calculo? Digite 0 para não e 1 para sim")
            REPITA
                  leia(op)
                  SE (op<>0) e (op<>1) ENTAO
                     escreval("Operação inválida, digite novamente.")
                  FIMSE
            ATE (op=0) ou (op=1)
      ATE op=0
fimalgoritmo


6 - Faça um programa que leia um número N e que indique quantos valores inteiros e positivos devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo valor lido e o fatorial desse valor.

fat_esc
var
    n, num, i, j, fat:inteiro
inicio
      escreval("Quantos fatoriais você quer calcular?")
      leia(n)
      PARA i <- ate n FACA
           escreval("Digite um número para calcular o fatorial.")
           leia(num)
           fat<- 1
           PARA j <- 1 ate num FACA
                fat<- fat*j
           FIMPARA
           escreval("O fatorial de ", num," é ", fat)
      FIMPARA
fimalgoritmo

7 - Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito, foram obtidos os seguintes dados:
a) Código da cidade;
b) Número de veículos de passeio(em 2010);
c) Número de acidentes de trânsito com vitimas(em 2010).
Deseja-saber:
a) Qual o maior e  menor índice de acidentes de trânsito e a que cidades pertencem;
b) Qual a média de veículos nas cinco cidades juntas;
c) Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.

transito
var
   cont, cod, num_vei, num_acid, maior, cid_maior, menor, cid_menor: inteiro
   media_vei, media_acid: real
   soma_vei, soma_acid, cont_acid:inteiro
inicio
   soma_vei <-0
   soma_acid <-0
   cont_acid <- 0
   para cont <- 1 ate 5 faca
      escreval("Digite o codigo da cidade, o numero de veiculos e o numero de acidentes" )
      leia(cod, num_vei, num_acid)
      se (cont=1) entao
         maior <- num_acid
         cid_maior <- cod
         menor <- num_acid
         cid_menor <- cod
      senao
         se (num_acid > maior) entao
            maior <- num_acid
            cid_maior <- cod
         fimse
         se (num_acid < menor) entao
            menor <- num_acid
            cid_menor <- cod
         fimse
      fimse
      soma_vei <- soma_vei + num_vei
      se (num_vei < 2000) entao
         soma_acid <- soma_acid + num_acid
         cont_acid <- cont_acid + 1
      fimse
   fimpara
   escreval("O maior indice e ",maior," na cidade ",cid_maior)
   escreval("O menor indice e ",menor," na cidade ",cid_menor)
   media_vei <- soma_vei / 5
   escreval("A media de veiculos e ",media_vei)
   se (cont_acid = 0) entao
      escreval("Nao foi digitada nenhuma cidade com menos de 2000 veiculos" )
   senao
      media_acid <- soma_acid / cont_acid
      escreval("A media de acidentes em cidades com menos de 2.000 veiculos e ", media_acid)
   fimse
fimalgoritmo


Hoje tive muitas dificuldades, principalmente na questão 7, pois nela é preciso muita lógica, parte esta onde tenho dificuldade, mas depois com a explicação do professor acabei entendendo. Vai ficando cada vez mais claro onde se é possível usar cada comando de repetição por exemplo, pois somente exercitando é que iremos adquirir pratica. Nos foi chamado a atenção também que toda variável que se utilizará em uma divisão terá de ser obrigatoriamente real, pois em uma divisão há uma grande probabilidade de o resultado ser um número com vírgula, pertencendo então aos números reais.

sexta-feira, 13 de maio de 2011

AULA 10 - 12/05/2011 - Exercícios sobre estrutura de repetição

Na aula de hoje, fizemos exercícios sobre estruturas de repetição. Foi-nos passado 5 questões, estarei disponibilizando as duas primeiras devidamente corrigidas pelo professor Jossandro.

1 - Faça um programa que leia 10 números, e no final calcula e mostre a média.

10_media
var
    n, x: inteiro
    soma, media: real
inicio
      soma <- 0
      media <- 0
      escreval("Digite os 10 números para fazer a média")
      PARA x de 1 ate 10 FACA
           leia (n)
           soma<- soma + n
      FIMPARA
      media<- soma/10
      escreval("A média dos números digitados é ", media)
fimalgoritmo


2 - Faça um programa em que o usuário informe a quantidade de números a serem lidos, e no final, calcule e mostre a média dos números lidos.

media_pergunta
var
    n, x, nm: inteiro
    soma, media: real
inicio
      soma <- 0
      escreval("Digite quantos números você utilizará para fazer a média")
      leia(nm)
      escreval("Digite os",nm," números para fazer a média")
      PARA x de 1 ate nm FACA
           leia (n)
           soma<- soma + n
      FIMPARA
      media<- soma/nm
      escreval("A média dos números",nm," números digitados é ", media)
fimalgoritmo


Nesta aula senti um pouco de dificuldade, mas depois com a ajuda dos colegas consegui resolver todas as questões. Foi-nos ressaltado como uma variável tem de ser aberta pelo algoritmo, atribuindo um número, por exemplo, um 0 (c<-0), pois ela deve ter um valor para iniciar o calculo e também aprendemos que sempre que houver um comando PARA, as variáveis contidas nesse bloco de código terão de ser atribuídas aos números inteiros, pois este comando não trabalha com números reais.

AULA 09 - 11/05/2011 - Estrutura de repetição

Nesta aula de hoje, corrigimos a ultima questão restante da aula passada, e então avançamos no conteúdo, utilizando agora também as estruturas de repetição, e então resolvemos dois exercícios sobre a matéria. Disponibilizarei o conteúdo da aula e as questões a seguir.

ESTRUTURA DE REPETIÇÃO 

Estrutura de repetição são comandos que ficam repetindo o trecho especificado do código. Existem três comandos de repetição, são eles: 

PARA - este comando é utilizado quando se é necessário um número finito de repetições. 
Ex:   PARA x=1 ate 10 FACA 
           escreva x=9 
        FIMPARA // Executando a tabuada do 9 por completo. 

Obs. Dentro do comando PARA existe mais um comando que é opcional, é o PASSO que pode ser utilizado em casos que apenas alguns específicos números da lista seriam selecionados, por exemplo:   
   PARA x=1 ate 10 PASSO 2 FACA 
            escreva x=9 
    FIMPARA // Neste caso seriam utilizados apenas os números 1,3,5,7 e 9. 

ENQUANTO - este comando é utilizado quando é infinita as vezes que o trecho do código pode ser repetida. Ex:  ENQUANTO (d>31) ou (d<1) 
                                escreva("Dia errado") 
                                leia(d) 
                      FIMENQUANTO // Neste caso enquanto o comando não for verdadeiro ele ficara repetindo. 

REPITA - este comando é similar ao ENQUANTO, a diferença é que ele ficará repetindo até o comando ser verdadeiro, e o teste que ele fará para ver se o comando continua ou não agora é no final.
Ex:   REPITA 
             leia(d) 
        ATE (d<=31) e (d>0) // Enquanto o dia digitado pelo usuário não for menor ou igual a 31 e maior que 0 ele ficara repetindo.


 Exercicios:
1 - Faça o calculo fatorial do número digitado pelo usuario.

fatorial
var
   x, n, fat : inteiro
inicio
      escreval ("Digite o número para ser calculado o fatorial")
      leia(n)
      fat<- 1
      PARA x de 1 ate n FACA
           fat<- fat*x
           escreval("x= ",x,"fat= ",fat)
      FIMPARA
      escreval("O fatorial de ",n," é", fat)
fimalgoritmo

2 - Faça um programa que leia um valor, número inteiro e positivo, calcule e mostre o valor de E, conforme a fórmula a seguir:  E=1+1/1!+1/2!+1/3!+...+1/N!

questao_2
var
   resultado: real
   n, i, j, fat: inteiro
inicio
      escreva("Digite um número para calcular a formula: ")
      leia (n)
      resultado<-1
      PARA i<- 1 ate n FACA
           fat<-1
           PARA j<- 1 ate i FACA
                fat<- fat * j
                FIMPARA
           resultado<- resultado+1/fat
           FIMPARA
      escreva ("O resultado é ", resultado)
fimalgoritmo


Hoje nos foi apresentado algo novo, a estrutura de repetição, no inicio tive muita dificuldade mais depois com a explicação do professor acabou compreendendo mais a matéria. Além do novo conteúdo nos foi passado algumas dicas, como a tecla F8, por exemplo, executa o algoritmo passo a passo no VisuAlg, debugando o código, podendo assim ser feito um teste de mesa por meio desta. Também aprendemos que nunca devemos atribuir um valor a variável contida no comando PARA, pois sempre vai dar erro, por exemplo: 
PARA x de 1 ate n FACA
   x<- n*3
 Isto em hipótese alguma deve ser feito.
 

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.