bloqueio

quinta-feira, 30 de junho de 2011

AULA 20 - 29/06/2011 - Matrizes

   Na aula de hoje nos foi passado mais uma matéria nova. Começamos a estudar agora também as matrizes, o professor Jossandro passou a teoria em slides que disponibilizarei abaixo e passou também dois execicios para melhor compreensão na prática, disponibilizarei todos resolvidos.



1 - Faça um programa que preencha uma matriz 10 x 3 com as notas de dez alunos em três provas. O programa deverá mostrar um relatório com o número dos alunos (numero da linha) e a prova em que cada aluno obteve menor nota. Ao final do relatório, deverá mostrar quantos alunos tiveram menor nota em cada uma das provas: na prova 1, na prova 2 e na prova 3.

algoritmo "prova1"
var
   not: vetor [1..10, 1..3] de real
   cont1, cont2, cont3, l, c: inteiro
inicio
      PARA l de 1 ate 10 FACA
           PARA c de 1 ate 3 FACA
                escreval("Digite a nota da prova ",c," do aluno ",l,": ")
                leia(not[l,c])
           FIMPARA
      FIMPARA
      cont1<-0
      cont2<-0
      cont3<-0
      PARA l de 1 ate 10 FACA
           SE (not[l,1] <= not[l,2]) e (not[l,1] <= not[l,3]) ENTAO
              cont1<- cont1 + 1
              escreval("A menor nota do aluno ",l," é ", not[l,1])
           SENAO
                SE (not[l,2] <= not[l,1]) e (not[l,2] <= not[l,3]) ENTAO
                   cont2<- cont2 + 1
                   escreval("A menor nota do aluno ",l," é ", not[l,2])
                SENAO
                     SE (not[l,3] <= not[l,2]) e (not[l,3] <= not[l,1]) ENTAO
                        cont3<- cont3 + 1
                        escreval("A menor nota do aluno ",l," é ", not[l,3])
                     FIMSE
                FIMSE
           FIMSE
      FIMPARA
      escreval(cont1," alunos tiveram a menor nota na prova 1")
      escreval(cont2," alunos tiveram a menor nota na prova 2")
      escreval(cont3," alunos tiveram a menor nota na prova 3")
fimalgoritmo

Download arquivo alg.

2 - Faça um programa que preencha uma matriz de 5 x 5 com números inteiros, calcule e mostre os números superiores a cinquenta e suas respectivas posições (linha e coluna). O programa deverá mostrar mensagem se não existir nenhum número nessa condição.

algoritmo "soma2"
var
   som: vetor [1..5, 1..5] de inteiro
   cont, l, c: inteiro
inicio
      PARA l de 1 ate 5 FACA
           PARA c de 1 ate 5 FACA
                escreval("Digite o número referente a linha ",l," e coluna ",c,":")
                leia(som[l,c])
           FIMPARA
      FIMPARA
      cont<- 0
      PARA l de 1 ate 5 FACA
           PARA c de 1 ate 5 FACA
                SE (som[l,c] > 50) ENTAO
                   cont<- cont +1
                   escreval("O número referente a linha ",l," e coluna ",c," é maior do que 50")
                FIMSE
           FIMPARA
      FIMPARA
      SE (cont = 0) ENTAO
         escreval("Nenhum número digitado foi maior do que 50")
      FIMSE
fimalgoritmo

Download arquivo alg.

   Hoje no inicio da explicação achei que teria mais dificuldade com o conteudo, mas depois da explicação do professor vi que a materia não era nem um bicho de sete cabeças, com escessão da matriz tridimensional, na pratica foi bem melhor compreendida, ja que tudo na pratica se é mais entendido, a dificuldade fica por conta da tão falada lógica que as vezes acaba nos traindo, mas consegui resolver os exercicios numa boa.

domingo, 26 de junho de 2011

AULA 19 - 22/06/2011 - Vetores

   Na aula de hoje começamos a utilizar vetores nos algoritmos, o professor Jossandro nos passou toda a teoria que disponibilizarei no slide abaixo, e passou e corrigiu 5 exercícios para começarmos a praticar já que na pratica tudo se entende melhor.



1 - Faça um programa que leia 10 nomes de alunos, guarde em uma lista e mostre.

algoritmo "nome_alunos"
var
   nomes: vetor[1..10] de caractere
   i: inteiro
inicio
      PARA i de 1 ate 10 FACA
           escreval ("Digite o nome ",i," :")
           leia(nomes[i])
      FIMPARA
      PARA i de 1 ate 10 FACA
           escreval ("O nome ",i," e ", nomes[i])
      FIMPARA
fimalgoritmo


Download arquivo alg.

2 - Faça um programa que leia 10 nomes de alunos e sua media final e guarde em listas. Ao final listar o nome dos aluno e sua media, mostrando "aprovado" se a media for maior ou igual a 7 ou "reprovado" caso contrario.

algoritmo "nomes_media"
var
   nomes: vetor [1..10] de caracter
   medias: vetor [1..10] de real
   i: inteiro
inicio
      PARA i de 1 ate 10 FACA
           escreval("Digite o nome ",i,":")
           leia(nomes[i])
           escreval("Digite a mmedia do aluno ",i,":")
           leia(medias[i])
      FIMPARA
      PARA i de 1 ate 10 FACA
           escreva("Aluno(a) ",nomes[i]," tem media ",medias[i]," e esta ")
           SE (medias[i]>=7) ENTAO
              escreval("aprovado")
           SENAO
                escreval("reprovado")
           FIMSE
      FIMPARA
fimalgoritmo

Download arquivo alg.

3 - Faça um programa que leia 50 valores reais e guarde em um vetor. Ao final mostrar a soma e a media dos valores lidos.

algoritmo "soma_media"
var
   num: vetor[1..50] de real
   i: inteiro
   media, soma: real
inicio
      soma<- 0
      PARA i de 1 ate 50 FACA
           escreval("Digite um numero: ")
           leia(num[i])
           soma<- soma+num[i]
      FIMPARA
      media<- soma/50
      escreval("A soma dos 50 numeros digitados e: ", soma)
      escreval("A media dos 50 numeros digitados e: ", media)
fimalgoritmo

Download arquivo alg.

4 - Faça um programa que calcule a media ((nota1+nota2)/2) de 10 alunos e guarde em um vetor, percorra o vetor e mostre as medias. Ao final mostre a media geral do turno.

algoritmo "media_geral"
var
   medias: vetor [1..10] de real
   i: inteiro
   media_tot, nota1, nota2, geral: real
inicio
      PARA i de 1 ate 10 FACA
           escreval("Digite a primeira nota do aluno ",i," :")
           leia(nota1)
           escreval("Digite a segunda nota do aluno ",i," :")
           leia(nota2)
           medias[i]<- ((nota1+nota2)/2)
      FIMPARA
      limpatela
      geral<-0
      PARA i de 1 ate 10 FACA
           escreval("A media do aluno(a) ",i," e: ",medias[i])
           geral<- geral+medias[i]
      FIMPARA
      media_tot<- geral/50
      escreval("A media do turno e: ", media_tot)
fimalgoritmo

Download arquivo alg.

5 - Faça um programa que mostre o mês dos ano de acordo com o numero (de 1 a 12) informado pelo usuário.

algoritmo "mes"
var
   mes: vetor[1..12] de caractere
   num: inteiro
inicio
      mes[1]<- "Janeiro"
      mes[2]<- "Fevereiro"
      mes[3]<- "Março"
      mes[4]<- "Abril"
      mes[5]<- "Maio"
      mes[6]<- "Junho"
      mes[7]<- "Julho"
      mes[8]<- "Agosto"
      mes[9]<- "Setembro"
      mes[10]<- "Outubro"
      mes[11]<- "Novembro"
      mes[12]<- "Dezembro"
      REPITA
            escreval("Digite o numero equivalente ao mes desejado: ")
            leia(num)
      ATE (num>=1) e (num <=12)
      escreval("O mes digitado e: ", mes[num])
fimalgoritmo

Download arquivo alg.


    Não tive grandes dificuldades, consegui entender com facilidade o novo conteúdo, a minha maior dificuldade nem foi em relação ao conteúdo foi uma falha no meu pensamento logico na questão 5, onde eu deveria apenas utilizar a variável que era utilizada para ler o numero digitado pelo usuário como índice do vetor, mas fora isso achei o conteúdo bem fácil.

quarta-feira, 22 de junho de 2011

AULAS 17 e 18 - 08/06/2011 e 15/06/2011 - Exercicios de recuperação...

   Na aula 17 o professor Jossandro passou um trabalho para recuperar as notas da prova, contendo ele três questões que deveriam ser resolvidas e enviadas por email a ele, com o prazo de entrega sendo até dia 13/06/2011 as 23:59 h. Ja na aula 18 foi então corrigidas as três questões e foi passada mais uma apenas para exercitar.


1 - Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código. Os códigos utilizados são:
           
1, 2, 3, 4
Votos para os respectivos candidatos
5
Voto nulo
6
Voto em branco
            Faça um programa que calcule e mostre:
-        o total de votos para cada candidato;
-        o total de votos nulos;
-        o total de votos em branco;
-        a percentagem de votos nulos sobre o total de votos;
-        a percentagem de votos em branco sobre o total de votos.
           
            Para finalizar o conjunto de votos, tem-se o valor ZERO e, para códigos inválidos, o programa deverá mostrar uma mensagem.

algoritmo "Questão_1"
var
   voto, cand1, cand2, cand3, cand4, cand5, cand6, cont_total: inteiro
   porc_nulos, porc_branco: real
inicio
      escreval("Digite seu voto: ")
      leia(voto)
      SE (voto<0) ou (voto>6) ENTAO
         REPITA
               escreval("Essa opção de voto não existe. Digite o voto novamente: ")
               leia(voto)
         ATE (voto>0) e (voto<7)
      FIMSE
      cand1<- 0
      cand2<- 0
      cand3<- 0
      cand4<- 0
      cand5<- 0
      cand6<- 0
      cont_total<- 0
      porc_nulos<- 0
      porc_branco<- 0
      SE (voto<>0) ENTAO
         REPITA
               SE (voto=1) ENTAO
                  cand1<- cand1+1
               FIMSE
               SE (voto=2) ENTAO
                  cand2<- cand2+1
               FIMSE
               SE (voto=3) ENTAO
                  cand3<- cand3+1
               FIMSE
               SE (voto=4) ENTAO
                  cand4<- cand4+1
               FIMSE
               SE (voto=5) ENTAO
                  cand5<- cand5+1
               FIMSE
               SE (voto=6) ENTAO
                  cand6<- cand6+1
               FIMSE
               cont_total<- cont_total+1
               porc_nulos<- cand5*100/cont_total
               porc_branco<- cand6*100/cont_total
               escreval("Digite o seu voto: ")
               leia(voto)
               SE (voto<0) ou (voto>6) ENTAO
                  REPITA
                        escreval("Essa opção de voto não existe. Digite o voto novamente: ")
                        leia(voto)
                  ATE (voto>0) e (voto<=6)
               FIMSE
         ATE (voto=0)
      FIMSE
      escreval("A votação foi encerrada")
      escreval("O candidado 1 teve: ",cand1," votos")
      escreval("O candidado 2 teve: ",cand2," votos")
      escreval("O candidado 3 teve: ",cand3," votos")
      escreval("O candidado 4 teve: ",cand4," votos")
      escreval("Tiveram ",cand5," votos nulos")
      escreval("Tiveram ",cand6," votos em branco")
      escreval("A porcentagem de votos nulos sobre o total de votos foi de ", porc_nulos," %")
      escreval("A porcentagem de votos em branco sobre o total de votos foi de ", porc_branco,"%")
fimalgoritmo

2 - Faça um programa que receba um conjunto de valores inteiros e positivos, calcule e mostre o maior e o menor valor do conjunto. Considere que:
-        para encerrar a entrada de dados, deve ser digitado valor zero;
-        para valores negativos, deve ser enviada uma mensagem;
-        os valores negativos ou iguais a zero não entram nos cálculos.

algoritmo "questao2"
var
    num, maior, menor: inteiro
inicio
      escreval("Digite um número inteiro e positivo: ")
      leia(num)
      SE (num<>0) ENTAO
         ENQUANTO (num<0) FACA
           escreval("Você digitou um número inválido")
           leia(num)
         FIMENQUANTO
         SE (num<>0) ENTAO
         maior<- num
         menor<- num
         REPITA
               SE (maior<num) ou (maior = num) ENTAO
                  maior<- num
               FIMSE
               SE (menor>num) ou (menor=num) ENTAO
                  menor<- num
               FIMSE
               escreval("Digite um número inteiro e positivo: ")
               leia(num)
               ENQUANTO (num<0) FACA
                   escreval("Você digitou um número inválido")
                  leia(num)
               FIMENQUANTO
         ATE (num=0)
         FIMSE
      FIMSE
      SE (maior=0) e (menor=0) ENTAO
         escreval("Você não digitou nenhum número")
      SENAO
           escreval("O maior número é: ", maior)
           escreval("O menor número é: ", menor)
      FIMSE
fimalgoritmo

Download arquivo alg.


3 - Faça um programa que receba os dados a seguir de vários produtos: preço unitário, país de origem (1- Brasil, 2- Portugal e 3 – outros), meio de transporte (T – terrestre, F – fluvial e A – aéreo), carga perigosa (S- sim, N – não), finalize a entrada de dados com um preço inválido, ou seja, menor ou igual a zero e que calcule e mostre:
  • O valor do imposto, usando a tabela a seguir.
Preço unitário
Percentual de imposto sobre o preço unitário
Até R$ 280,00
5.00%
Maior que R$ 280,00
10.00%

  • O valor do transporte usando a tabela a seguir
Carga Perigosa
País de Origem
Valor do Transporte
S
1
R$ 140,00
2
R$ 59,00
3
R$ 67,00
N
1
R$ 34,00
2
R$ 59,00
3
R$ 168,00

  • O valor do seguro, usando a regra a seguir:
                        Os produtos que vêm de Portugal e os produtos que utilizam transporte                          aéreo pagam metade do valor do seu preço unitário como seguro.

  • O preço final, ou seja, preço unitário mais imposto mais valor do transporte mais valor do seguro.
  • O total dos impostos (somando impostos de todos os produtos).

algoritmo "questao3"
var
prec_unit, pais, trans2, prec_total, seguro, porc_impos, imp, imp_total: real
trans, carga: caracter
inicio
imp_total<-0
escreval("Digite o preço unitário: ")
leia(prec_unit)
ENQUANTO (prec_unit<0) FACA
   escreva("Valor inválido. Digite novamente: ")
   leia(prec_unit)
FIMENQUANTO
SE (prec_unit<>0) ENTAO
   REPITA
      escreval("Digite o país de origem (1- Brasil, 2- Portugal e 3- outros):")
      leia(pais)
      ENQUANTO (pais<1) ou (pais>3) FACA
         escreval("Pais inválido. Digite  novamente: ")
         leia(pais)
      FIMENQUANTO
      escreval("Digite o meio de transporte (T - terrestre, F - fluvial e A - aéreo): ")
      leia(trans)
      ENQUANTO (trans<>"T") e (trans<>"F") e (trans<>"A") FACA
         escreval("Você digitou um meio de transporte inválido. Digite novamente: ")
         leia(trans)
      FIMENQUANTO
      escreval("É carga perigosa (S - sim, N - não): ")
      leia(carga)
      ENQUANTO (carga<>"S") e (carga<>"N") FACA
         escreval("Você digitou uma tipo de carga inválido. Digite novamente: ")
         leia(carga)
      FIMENQUANTO
      SE (prec_unit<280) ou (prec_unit=280) ENTAO
         porc_impos<- prec_unit*5/100
      SENAO
         SE (prec_unit>280) ENTAO
            porc_impos<- prec_unit*10/100
         FIMSE
      FIMSE
      SE (carga="s") ENTAO
         SE (pais=1) ENTAO
            trans2<- 140
         FIMSE
         SE (pais=2) ENTAO
            trans2<- 59
         FIMSE
         SE (pais=3) ENTAO
            trans2<- 67
         FIMSE
      SENAO
         SE (carga="n") ENTAO
            SE (pais=1) ENTAO
               trans2<- 34
            FIMSE
            SE (pais=2) ENTAO
               trans2<- 59
            FIMSE
            SE (trans=3) ENTAO
               trans2<- 168
            FIMSE
         FIMSE
      FIMSE
      SE (pais=2) ou (trans="a") ENTAO
         seguro<- prec_unit/2
      SENAO
         SE (pais<>2) ou (trans<>"a") ENTAO
            seguro<-0
         FIMSE
      FIMSE
      prec_total<- prec_unit+porc_impos+seguro+trans2
      imp<- porc_impos
      imp_total<- imp_total+imp
      prec_total<- prec_unit+porc_impos+seguro+trans2
      limpatela
      escreval("")
      escreval("O imposto unitário custa: ",porc_impos," reais")
      escreval("O transporte custa: ",trans2," reais")
      escreval("O seguro custa: ",seguro," reais")
      escreval("O preço final é: ",prec_total," reais")
      escreval("")
      escreval("Digite o proximo valor unitário: ")
      leia(prec_unit)
      ENQUANTO (prec_unit<0) FACA
         escreva("Valor inválido. Digite novamente: ")
         leia(prec_unit)
      FIMENQUANTO
   ATE (prec_unit=0)
SENAO
   escreval("Você não digitou nenhum valor válido.")
FIMSE
escreval("O total dos impostos é: ",imp_total," reais")
fimalgoritmo


4 - Faça um programa que receba 10 números inteiros e mostre a quantidade de números primos dentre os números que foram digitados.

algoritmo "primo"
var
   x, num, soma_prim, divid, z: inteiro
inicio
      soma_prim<- 0
      PARA x de 1 ate 10 FACA
           escreval("Digite o ",x," numero: ")
           leia(num)
           divid<- 0
           PARA z de 1 ate num FACA
                SE (num mod z=0) ENTAO
                   divid<- divid+1
                FIMSE
           FIMPARA
           SE (divid<2) ou (divid=2) ENTAO
              soma_prim<- soma_prim+1
           FIMSE
      FIMPARA
      escreval("Entre os numeros digitados", soma_prim," eram primos")
fimalgoritmo

Download arquivo alg.


  No inicio achei um pouco complicado resolver aquelas três questões mas mesmo assim optei por resolve-las sozinho, estou no aguardo da correção mas acredito que me sai muito bem, recuperando boa parte da nota perdida na prova. Ja na ultima questão passada pelo professor apenas para exercitar tive muita dificuldade já que ali teria que calcular os números primos, conta a qual em sempre me complico, mas como disse para o professor agora ela pode vir ate na próxima prova com certeza não me complicarei mais.

quarta-feira, 1 de junho de 2011

AULA 16 - 01/06/2011 - Exercícios

Na aula de hoje foi acordado com o professor e continuamos fazendo exércicios sobre estruturas de repetição, resolvendo duas questões, sendo corrigido apenas a primeira.

1 - Um supermercado deseja reajustar os preços de seus produtos usando o seguinte critério, o produto poderá ter o preço aumentado ou diminuído. Para o preço ser alterado, o produto deve preencher pelo menos um dos requisitos a seguir
VENDA MEDIA
PREÇO ATUAL
% DE AUMENTO
% DE DIMINUIÇÃO
<500
<R$30,00
10
-
>=500 e <1.200
>=R$30,00 e <R$ 80,00
15
-
>=1200
>=R$80,00
-
20

Faça um programa que receba o preço atual e a venda media mensal do produto, caucule e mostre o novo preço.

algoritmo "preco"
var
    media_men, preco_atu, porc_a, porc_a2, porc_d: real
inicio
      escreval("Digite a média mensal do produto")
      leia(media_men)
      escreval("Digite o preço atual do produto")
      leia(preco_atu)
      SE (media_men<500) ou (preco_atu<30.00) ENTAO
         porc_a<- ((preco_atu*10/100)+preco_atu)
         escreval("O novo preço é:", porc_a)
      FIMSE
      SE ((media_men>=500) e (media_men<1200)) ou ((preco_atu>=30.00) e (preco_atu<80.00)) ENTAO
         porc_atu2<- ((preco_atu*15/100)+preco_atu)
         escreval("O novo preço é:", porc_a2)
      FIMSE
      SE (media_men>=1200) ou (preco_atu>=80.00) ENTAO
         porc_d<- preco_atu-(preco_atu*20/100)
         escreval("O novo preço é:", porc_d)
      FIMSE
fimalgoritmo

Download arquivo alg.

2 - Faça um programa que monte os oito primeiros termos da sequencia de Fibonacci.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

algoritmo "fibonacci"
var
    res, cont, n1, n2:real
inicio
      cont<-0
      n1<-0
      n2<-1
      escreval(n1)
      escreval(n2)
      ENQUANTO (cont<8) FACA
               cont<- cont+1
               res<- n1+n2
               escreval(res)
               n1<-n2
               n2<-res
      FIMENQUANTO
fimalgoritmo


Download arquivo alg.

O professor acabou conversando com a turma, e pedindo sugestões de como nos poderiamos melhorar as esplicações e etc, pois recebemos os resultados da prova, não sendo muito agradavel, ja que apenas 5 alunos passaram, mas no final da aula o Jossandro acabou reforçando as teorias sobre as estruturas dos comandos de repetições, que foram vistos inicialmente na aula 09. Em relação aos exercícios desta aula, não tive muita dificuldade, apenas na segunda questão que precisei olhar a lógica no livro, mas depois consegui resolver.