bloqueio

quarta-feira, 20 de abril de 2011

AULA 05 - 20/04/2011 - Princípio em VisuAlg.

Hoje começamos a utilizar o VisuAlg, programa que compreende o algoritmo, e o executa. Nos foi passado 8 questões, para que resolvêssemos e passássemos ao VisuAlg 2.5, utilizamos toda a aula para finalizarmos. Estarei disponibilizando as questões resolvidas e para download o programa e seus arquivos alg.

Questões:

1 - Sabendo-se que:
1 pé = 12 polegadas
1 jarda = 3 pés
1 milha = 1.760 jardas
Faça um programa que receba uma medida em pés, faça as conversões a seguir e mostre os resultados em:
a) polegadas      b) jardas              c) milhas

algoritmo "algoritmo_medida"
var
   pes, polegadas, jardas, milhas : real
inicio
          Escreval("Digite a quantidade de pes a serem convertidos")
          Leia(pes)
          polegadas <- (pes*12)
          jardas <- (pes/3)
          milhas <- (jardas/1760)
          escreval("Conversão")
          escreval("Polegadas : " , polegadas)
          escreval("Milhas : " , milhas )
          escreval("Jardas : " , jardas)
fimalgoritmo

Teste de Mesa
15 pés
polegadas <- 15*12 = 180
jardas <- 15/3 = 5
milhas <- 5/1760 = 0.00284090909090909



2 - Faça um programa que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mostre:
                a) a idade dessa pessoa;
                b) quantos anos essa pessoa terá em 2010.

algoritmo "algoritmo_idade"
var
      b, ano_atual, ano_nascimento, idade, idade2010: inteiro
inicio
          escreval ("Digite seu ano de nascimento")
          leia (ano_nascimento)
          escreval ("Digite o ano atual")
          leia (ano_atual)
          b <- 2010
          idade <- (ano_atual-ano_nascimento)
          idade2010 <- (b-ano_nascimento)
          escreval("Idade atual:", idade)
          escreval("Idade em 2010:", idade2010)
fimalgoritmo

Obs. A variável "b" foi utilizada apenas para maior compreensão, não sendo necessário utiliza-la nesta circunstância, mas se o usuário necessitar uma mudança de data, seria de mais fácil execução, podendo ser necessária somente em algoritmos mais extensos, que veremos mais adiante.

Teste de Mesa 
ano de nascimento = 1993
ano atual = 2011
idade <- 2011-1993 = 18
idade2010 <- 2010-1993 = 17



3 - O custo ao consumidor de um carro novo é a soma do preço de fábrica com o percentual de lucro do distribuidor e dos impostos aplicados ao preço de fábrica. Faça um programa que receba o preço de fábrica de um veículo, o percentual de lucro do distribuidor e o percentual de impostos. Calcule e mostre:
                a) o valor correspondente ao lucro do distribuidor;
                b) o valor correspondente aos impostos;
                c) o preço final do veículo.

 algoritmo "algoritmo_carro"
var
    preco_fabrica, percentual_lucro, percentual_imposto, valor_distribuidor, valor_imposto, preco_final :real
Inicio
      escreval("Digite o preço de fábrica do automóvel")
      leia(preco_fabrica)
      escreval("Digite o percentual de lucro")
      leia(percentual_lucro)
      escreval("Digite o percentual de imposto")
      leia(percentual_imposto)
      valor_distribuidor <- preco_fabrica * percentual_lucro / 100
      valor_imposto <- preco_fabrica * percentual_imposto / 100
      preco_final <- (preco_fabrica + valor_distribuidor + valor_imposto)
      escreval("Lucro do distribuidor:", valor_distribuidor)
      escreval("Valor do imposto:",valor_imposto)
      escreval("Preço total do automóvel:", preco_final)
fimalgoritmo

Teste de Mesa
Preço de fabrica = 20000
Percentual de lucro = 20
Percentual de imposto = 10
valor_distribuidor <- 20000 * 20 / 100 = 4000
valor_imposto <- 20000 * 10 / 100 = 2000
preco_final <- 20000 + 4000 + 2000 = 26000



4 - Pedro comprou um saco de ração com peso em quilos. Pedro possui dois gatos para os quais fornece a quantidade de ração em gramas. Faça um programa que receba o peso do saco de ração e a quantidade de ração fornecida para cada gato. Calcule e mostre quanto restará de ração no saco após cinco dias.

algoritmo "algoritmo_racao"
var
    peso_saco, racao_gato1, racao_gato2, gramas, kg, soma_racao_gatos, total_racao_gatos: real
inicio
      escreval("Digite o peso do saco de ração")
      leia(peso_saco)
      escreval("Digite a ração que o primeiro gato consome diariamente")
      leia(racao_gato1)
      escreval("Digite a ração que o segundo gato consome diariamente")
      leia(racao_gato2)
      gramas <- (peso_saco * 1000)
      soma_racao_gatos <- (racao_gato1 + racao_gato2)
      total_racao_gatos <- (gramas - (soma_racao_gatos * 5))
      kg <- (total_racao_gatos / 1000)
      escreval("O restante do saco de ração após cinco dias foi de:", kg, " kilos")
fimalgoritmo

Teste de Mesa 
peso do saco <- 10
ração do primeiro gato <- 250
ração do segundo gato <- 250
gramas <- (10 * 1000) = 10000
soma_racao_gatos <- (250 + 250) = 500
total_racao_gatos <- (10000 - (500 * 5)) = 7500
kg <- (7500 / 1000) = 7.5 kilos



5 - Cada degrau de uma escada tem X de altura. Faça um programa que receba essa altura e a altura que o usuário deseja alcançar subindo a escada. Calcule e mostre quantos degraus o usuário deverá subir para atingir seu objetivo, sem se preocupar com a altura do usuário.

algoritmo "algoritmo_escada"
Var
     altura_degrau, centimetros, altura_desejada, quantidade_degraus: real
Inicio
       escreval("Digite a altura desejada para a escada")
       leia(altura_desejada)
       escreval("Digite a altura do degrau desejada")
       leia(altura_degrau)
       centimetros <- (altura_desejada * 100)
       quantidade_degraus <- (centimetros / altura_degrau)
       escreval("O numero de degraus será: ", quantidade_degraus)
fimalgoritmo

Teste de Mesa
altura da escada = 5
altura do degrau = 20
centimetros <- 5 * 100 = 500
quantidade_degraus <- 500 / 20 = 25


6 - Faça um programa que calcule e mostre a área de um losango.  
Sabe-se que A = (diagonal maior * diagonal menor)/2
Losango
algoritmo "algoritmo_area_losango"
var
      diag_maior, diag_menor, area : real
inicio
      escreval("Digite a diagonal maior do losango")
      leia(diag_maior)
      escreval("Digite a diagonal menor do losango")
      leia(diag_menor)
      area <- ((diag_maior * diag_menor)/2)
      escreval("A area do losango é: ", area)
fimalgoritmo

Teste de Mesa
diagonal maior = 10
diagonal menor = 8
área <- ((10 * 8)/2) = 40



7 - Faça um programa que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mostre:
                a) a idade dessa pessoa em anos;
                b) a idade dessa pessoa em meses;
                c) a idade dessa pessoa em dias;
                d) a idade dessa pessoa em semanas.

algoritmo "algoritmo_idades"
var
    ano_nasci, ano_atu, idade, idade_mes, idade_dia, idade_sem : inteiro
inicio
       escreval("Digite o ano de nascimento")
       leia(ano_nasci)
       escreval("Digite o ano atual")
       leia(ano_atu)
       idade <- (ano_atu-ano_nasci)
       idade_mes <- (idade*12)
       idade_dia <- (idade*365)
       idade_sem <- (idade*52)
       escreval("A idade em anos é de: ", idade)
       escreval("A idade em meses é de: ", idade_mes)
       escreval("A idade em dias é de: ", idade_dia)
       escreval("A idade em semanas é de: ", idade_sem)
fimalgoritmo

Teste de Mesa
ano de nascimento =  1993     
ano atual = 2011
idade <- 2011-1993 = 18
idade_mes <- 18*12 = 216
idade_dia <- 18*365 = 6570
idade_sem <- 18*52 = 936


8 - Faça um programa que receba a quantidade de dinheiro em reais e converta esse valor em dólar, marco alemão e libras esterlinas. Sabe-se que a cotação do dólar é de R$ 1,66, do marco alemão é de R$ 2,00 e da libra esterlina é de R$ 1,57. O programa deve fazer a conversão e mostrá-las.

algoritmo "algoritmo_conversor"
var
    dinhe, dol, marca, libe: real
inicio
      escreval("Digite o valor em R$")
      leia (dinhe)
      dol <- (dinhe/1.66)
      marca <-(dinhe/2)
      libe <- (dinhe/1.57)
      escreval ("O valor é de: ",dol, " dólares")
      escreval ("O valor é de: ",marca, " marcos alemães")
      escreval ("O valor é de: ",libe, " libras esterlinas")
fimalgoritmo

Teste de Mesa
valor em R$ = 500
dólar <- 500/1.66 = 301.204819277108
marco alemão <- 500/2 = 250
libra esterlina <- 500/1.57 = 318.471337579618



Como vimos acima hoje aprendemos vários comandos novos, como o "escreval" que funciona como a tecla "Enter" do teclado, o " " : " , " que é utilizado no final do algoritmo para mostrar o resultado, dentre outros vários. Reforçamos também a idéia de que cada um tem seu jeito de resolver o algoritmo chegando de varias formas ao mesmo resultado, podendo assim entre dez programadores, chegarmos a dez códigos fontes diferentes. A aula foi muito produtiva a meu ver, tanto é que chegou o intervalo e quase nem percebemos, pois estávamos muito concentrados,  não percebendo a hora, espero que as aulas continuem assim, espero aprender muito com esta matéria.

quarta-feira, 13 de abril de 2011

AULA 04 - 13/04/2011 - EXERCICIOS SOBRE CONSTRUÇÃO DE ALGORITMOS

Nesta aula seguimos na área de construção de algoritmos, o professor Jossandro passou mais 5 questões, que estão no slide da aula passada, estou disponibilizando a seguir todas resolvidas.


1 - Faça um programa que receba três notas, calcule e mostre a média aritmética entre elas.

Algoritmo_Média
Var
     n1,n2,n3, med_arit : real
inicio
        ler (n1,n2,n3)
        med_arit <- (n1+n2+n3/3)
        escreva (med_arit)
fim

Teste de Mesa
n1 = 6
n2 = 9
n3 = 10
med_arit = (6+9+10/3)
med_arit = 8,33


2 - Faça um programa que receba três notas e seus respectivos pesos, calcule e mostre a média ponderada dessas notas.

Algoritmo_Ponderada
Var
     n1, n2, n3, p1, p2, p3, med_pond : real
inicio
       ler(n1, n2, n3, p1, p2, p3)
       med_pond <- ((n1*p1+n2*p2+n3*p3)/(p1+p2+p3))
       escreva (med_pond)
fim

Teste de Mesa
n1 = 6    | p1 = 5
n2 = 8    | p2 = 10
n3 = 10  | p3 = 5

med_pond = ((6*5+8*10+10*5)/(5+10+5))
med_pond = 8


3 - Faça um programa que receba o salário de um funcionário, calcule e mostre um novo salário, sabendo que este sofreu um aumento de 20%.

Algoritmo_Aumento
Var
      sal_inic, sal_nov : real
inicio
        ler (sal_inic)
        sal_nov <- (sal_inic*0,2+sal_inic)
        escreva (sal_nov)
fim


Teste de Mesa
sal_inic = 545 reais
sal_nov = (545*0,2+545)
sal_nov = 654 reais



4 - Faça um programa que receba o salário de funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário.

Algoritmo_Aumento2
Var
      sal_inic, aum, sal_aum, sal_fin : real
inicio
        ler (sal_inic, aum)
        sal_aum <- (sal_inic*aum/100)
        sal_fin <- (sal_aum + sal_inic)
        escreva (sal_aum, sal_fin)
fim


Teste de Mesa
sal_inic = 1090 reais
aum = 30%
sal_aum = (1090*30/100) = 327 reais
sal_fin = (327 + 1090) = 1417 reais


5 - Faça um programa que receba o salário base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário base e paga imposto de 7% sobre o salário base.

Algoritmo_Sal_Base
Var
     sal_ba, grat, imp, sal_fin : real
inicio
        ler (sal_ba)
        grat <- (sal_ba*0,05)
        imp <- (sal_ba*0,07)
        sal_fin <- (sal_ba+grat-imp)
        escreva (sal_fin)
fim



Teste de Mesa
sal_ba = 545 reais
grat = (545*0,05) = 27,25
imp = (545*0,07) = 38,15
sal_fin = (545+27,25-38,15) = 534,10 reais


Portanto,  na aula de hoje reforçamos nossos estudos nesta área, pois cada vez mais nos é reforçado a idéia de que o algoritmo não é só resolver um problema, é fazer a "receita", criar os comandos para que o problema possa vir a ser solucionado posteriormente, usando-os sempre que necessário.

quinta-feira, 7 de abril de 2011

AULA 03 - 06/04/2011 - Construção e Tipos de Algoritmo



Hoje comecei a entender realmente o significado do termo algoritmo computacional, que nada mais é do que resolver problemas na ordem lógica, para que seja compreendido e executado por qualquer dispositivo com entrada e saída como por exemplo computadores, ipads, celulares e etc. Também me foi passado os métodos para a construção de um algoritmo, um passo a passo, o que acabou nos levando aos tipos de algoritmo como Descrição Narrativa, Pseudocódigo ou Portugol e por ultimo o Fluxograma. Nos foi passado 3 questões, que estarei disponibilizando todas resolvidas.

1 - Especificar um algoritmo para calcular e exibir na tela a área de um triângulo de base b e altura h, em que os valores de b e de h são fornecidos pelo usuário via teclado. A = (b*h)/2

Descrição Narrativa
1º passo: pegar valores de b e h
2º passo: calcular usando a formula A = (b*h)/2       
3º passo: mostrar o resultado final

Pseudocódigo
Algoritmo Area
Var
      b,h,s : real
Inicio
         ler (b,h)
         s <- (b*h)/2
         escreva (s)
Fim

Teste de Mesa
Neste teste para conseguirmos resolve-lo teremos de supormos números, no meu caso 
irei usar 3 como base e 2 como altura, resultando ..

(3 * 2)/2
(6)/2 = 3







2 - Compraram-se 30 canetas iguais, que foram pagas com uma nota de R$ 100,00, obtendo-se R$ 67,00 de troco. Quanto custou cada caneta?

Descrição Narrativa
1º passo - Pegar os valores 30, 100 e 67
2º passo - Subtrair 67 de 100 e dividir o resultado por 30
3º passo - Mostrar o resultado final

Pseudocódigo 
Algoritmo Caneta
Var
       x, y, z, r: real
Inicio
       x <- 30
       y <- 100
       z <- 67
       r ← (y - z)/x
       Escrever (r)
Fim

Este exemplo acima em pseudocódigo esta com algo que o deixa 
um pouco confuso, nele são usados exemplos como x, y, z e para 
quem não tem conhecimento do problema não conseguirá identificar
o algoritmo, sendo o modo correto de faze-lo, é usando neste tipo de 
problema exemplos mais compreensíveis, facilitando o entendimento,
usarei-os abaixo.
 


Algoritmo Caneta
Var
       canetas, pago, troco, valor: real
Inicio
       canetas <- 30
       pago <- 100
       troco <- 67
       valor ← (pago - troco)/canetas
       Escreve (valor)
Fim


Teste de Mesa
Neste não é necessário supormos números pois eles estão inseridos no problema.

(100 - 67)/ 30
          (33)/30
valor R$ 1,10



3 - Se X possui o valor de 15 e forem executadas as seguintes instruções:

X ← X + 3 
X ← X - 6
X ← 3 * X
Qual será o valor armazenado em X ?

E executando o teste de mesa o resultado será.. 36
X ← 15 + 3 = 18
x ← 18 - 6 = 12
x← 3 * 12 = 36


Nesta aula tudo começou a ficar mais claro, o temor a matéria diminuiu bastante, mas só depois de varias explicações e vários erros. Como foi descrito, aprendi a construção e os tipos de algoritmos, ou seja, aprendi a monta-los e resolve-los através da Descrição Narrativa, do Pseudocódigo, do Fluxograma e a conferir o resultado pelo Teste de Mesa. Foi passado também o "tema de casa", o prof. Jossandro nos passou a idéia do webfólio, que é a criação de um blog, no meu caso o Comandos Web, para que possamos fazer uma reflexão de cada aula, vindo a ser no final uma de nossas notas, eis a razão de eu estar aqui.