Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
vinifla81

VisualG organização algoritmo

Recommended Posts

Eu fiz um algoritmo no visual g, porém, o meu professor me disse que eu deveria organizar ele para que ficasse mais fácil quando for passar para Android. Não entendi muito bem e o questionei várias vezes sem sucesso. Ele me disse que na entrada só poderia ter ler e escreva e na saída não poderia existir se então. Fiquei confuso e agradeceria se alguém puder me ajudar. O algoritmo é esse: 

algoritmo "sem nome"
// Função :
// Autor :
// Data : 29/08/2017
// Seção de Declarações
var
d,op,cm,am,qtd,qtd1,qtd2,qtd3,qtd4,qtd5:real
inicio
// Entradas
escreval("Escolha uma das opções de tijolo")
escreval("Tijolo 6 furos de dimensões 9x14x19 -> OPÇÃO 1")
escreval("Tijolo 8 furos de dimensões 9x19x24 -> OPÇÃO 2")
escreval("Tijolo 12 furos de dimensões 14x19x29 -> OPÇÃO 3")
leia (op)
escreval("Agora escolha a forma de colocação do tijolo")
escreval("1/2 vez (Tijolos em pé) -> OPÇÃO 1")
escreval("1 vez (Tijolos deitados) -> OPÇÃO 2")
leia (d)
escreval("Informe o comprimento desejado do muro em metros a ser construído")
leia (cm)
escreval("Informe a altura desejada do muro em metros a ser construído")
leia (am)
// Processamento
qtd<-(cm * am)/(0.2394)
qtd1<-(cm * am)/(0.4104)
qtd2<-(cm * am)/(0.7714)
qtd3<-((cm * am)/(0.2394)) * 2
qtd4<-((cm * am)/(0.4104)) * 2
qtd5<-((cm * am)/(0.7714)) * 2
// Saidas
se (op = 1) e (d = 1) então
escreval("Você precisará de:",qtd," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd * 0.35) + 35 * (qtd/250)+1:5:2, "  ")
fimse
se (op = 2) e (d = 1) então
escreval("Você precisará de:",qtd1," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd1+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd1/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd1 * 0.50) + 35 * (qtd1/250)+1:5:2, "  ")
fimse
se (op = 3) e (d = 1) então
escreval("Você precisará de:",qtd2," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd2+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd2/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd2 * 0.80) + 35 * (qtd2/250)+1:5:2, "  ")
fimse
se (op = 1) e (d = 2) então
escreval("Você precisará de:",qtd3," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd3+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd3/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd3 * 0.35) + 35 * (qtd3/250)+1:5:2, "  ")
fimse
se (op = 2) e (d = 2) então
escreval("Você precisará de:",qtd4," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd4+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd4/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd4 * 0.50) + 35 * (qtd4/250)+1:5:2, "  ")
fimse
se (op = 3) e (d = 2) então
escreval("Você precisará de:",qtd5," tijolos para constuir o muro")
escreval("Para não faltar, compre:",1.1 * qtd5+1:2:0, " tijolos ")
escreval("Você precisará também de:",qtd5/250+1:2:0," saco(s) de cimento")
escreval("O custo médio é de: R$" ,(qtd5 * 0.80) + 35 * (qtd5/250)+1:2:0, "  ")
fimse
fimalgoritmo 

 

Editado por DiF
Ao postar um código, utilize a tag CODE (botão <>)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @vinifla81.

 

2 horas atrás, vinifla81 disse:

Ele me disse que na entrada só poderia ter ler e escreva e na saída não poderia existir se então. Fiquei confuso e agradeceria se alguém puder me ajudar. O algoritmo é esse: 

 

Não entendi muito bem.. mas você está efetuando cálculos sem necessidade e repetindo várias vezes o mesmo trecho de algoritmo.

 

Veja:

// Processamento
qtd<-(cm * am)/(0.2394)
qtd1<-(cm * am)/(0.4104)
qtd2<-(cm * am)/(0.7714)
qtd3<-((cm * am)/(0.2394)) * 2
qtd4<-((cm * am)/(0.4104)) * 2
qtd5<-((cm * am)/(0.7714)) * 2

O resultado da quantidade é uma só... o que muda são os parâmetros, ou seja, de acordo com as resposta do usuário, você calculará a quantidade. Nesse caso acima, você está pré-calculando todas as possibilidades para usar uma delas quando conveniente... todas as outras contas foram feitas em vão.

 

Se tomássemos a sua linha de raciocínio dos seus se, cada uma dessas contas deveria está apenas dentro do seu respectivo se, ou seja, só faria a conta que é necessária quando o se "fosse aceito".

 

Algo como:

se (op = 1) e (d = 1) então
   qtd<-(cm * am)/(0.2394)
   escreval("Você precisará de:",qtd," tijolos para constuir o muro")
   escreval("Para não faltar, compre:",1.1 * qtd+1:2:0, " tijolos ")
   escreval("Você precisará também de:",qtd/250+1:2:0," saco(s) de cimento")
   escreval("O custo médio é de: R$" ,(qtd * 0.35) + 35 * (qtd/250)+1:5:2, "  ")
fimse

 

Entretanto, é notável que tanto essa conta do qtd, quanto a exibição do resultado, estão repetidos... está reescrevendo (praticamente) a mesma coisa em cada se!

 

O que muda de um cálculo do qtd para o outro? só aquele número fracionado e um multiplicador (por 2 ou não).

 

Então, ao comentar:

2 horas atrás, vinifla81 disse:

[...] saída não poderia existir se então.

pode está se referindo que essas respostas não precisam estar em cada um dos se. Os se só precisam servi para "selecionar" o quê é diferente.. que no caso é esse número quebrado lá (que eu não sei para que serve - obs.: não é relevante)

 

A resposta poderia ficar algo do tipo:

 qtd <- ((cm*am)/(valor_de_alguma_coisa))*multiplicador
 escreval("Você precisará de:",qtd," tijolos para construir o muro")
 escreval("Para não faltar, compre:",1.1 * qtd+1:2:0, " tijolos ")
 escreval("Você precisará também de:",qtd/250+1:2:0," saco(s) de cimento")
 escreval("O custo médio é de: R$" ,(qtd * outro_valor_de_alguma_coisa) + 35 * (qtd/250)+1:5:2, "  ")


Dentro dos se, você só verifica esse "valor_de_alguma_coisa", o multiplicador (que será 1 ou 2) e o outro_valor_de_algum_coisa.

 

A ideia seria mais ou menos essa.

 

Por favor, tente corrigir e poste seu código atual (lembrar de usar a tag CODE, botão <>).

 

No aguardo.

Editado por Simon Viegas

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Fiz algumas modificações, não sei se melhorou.

    algoritmo "Tijolando 2.0"
    // Função :
    // Autor :
    // Data : 29/08/2017
    // Seção de Declarações
    var
    d,op,cm,am,qtd,area1,area2,area3:real
    inicio
    // Entradas
    escreval("Escolha uma das opções de tijolo")
    escreval("Tijolo 6 furos de dimensões 9x14x19 -> OPÇÃO 1")
    escreval("Tijolo 8 furos de dimensões 9x19x24 -> OPÇÃO 2")
    escreval("Tijolo 12 furos de dimensões 14x19x29 -> OPÇÃO 3")
    leia (op)
    escreval("Agora escolha a forma de colocação do tijolo")
    escreval("1/2 vez (Tijolos em pé) -> OPÇÃO 1")
    escreval("1 vez (Tijolos deitados) -> OPÇÃO 2")
    leia (d)
    escreval("Informe o comprimento desejado do muro em metros a ser construído")
    leia (cm)
    escreval("Informe a altura desejada do muro em metros a ser construído")
    leia (am)
    // Processamento
    qtd<-(cm * am)
    area1<-0.0266
    area2<-0.0456
    area3<-0.0551
    // Saidas
    se (op = 1) e (d = 1) então
    escreval("Você precisará de:",qtd/area1," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * qtd/area1+1:2:0, " tijolos ")
    escreval("Você precisará também de:",(qtd/area1)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,((qtd/area1) * 0.35) + 35 * ((qtd/area1)/250)+1:5:2, "  ")
    fimse
    se (op = 2) e (d = 1) então
    escreval("Você precisará de:",qtd/area2," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * qtd/area2+1:2:0, " tijolos ")
    escreval("Você precisará também de:",(qtd/area2)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,((qtd/area2) * 0.50) + 35 * ((qtd/area2)/250)+1:5:2, "  ")
    fimse
    se (op = 3) e (d = 1) então
    escreval("Você precisará de:",qtd/area3," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * qtd/area3+1:2:0, " tijolos ")
    escreval("Você precisará também de:",(qtd/area3)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,((qtd/area3) * 0.80) + 35 * ((qtd/area3)/250)+1:5:2, "  ")
    fimse
    se (op = 1) e (d = 2) então
    escreval("Você precisará de:",(qtd/area1)*2 ," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * (qtd/area1)*2 +1:2:0, " tijolos ")
    escreval("Você precisará também de:",((qtd/area1)*2)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,(((qtd/area1)*2) * 0.35) + 35 * (((qtd/area1)*2)/250)+1:5:2, "  ")
    fimse
    se (op = 2) e (d = 2) então
    escreval("Você precisará de:",(qtd/area2)*2," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * (qtd/area2)*2 +1:2:0, " tijolos ")
    escreval("Você precisará também de:",((qtd/area2)*2)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,(((qtd/area2)*2) * 0.50) + 35 * (((qtd/area2)*2)/250)+1:5:2, "  ")
    fimse
    se (op = 3) e (d = 2) então
    escreval("Você precisará de:",(qtd/area3)*2," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * (qtd/area3)*2 +1:2:0, " tijolos ")
    escreval("Você precisará também de:",((qtd/area3)*2)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,(((qtd/area3)*2) * 0.80) + 35 * (((qtd/area3)*2)/250)+1:5:2, "  ")
    fimse
    fimalgoritmo
    

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Seu código está estruturalmente igual ao anterior... e o que eu proponho é uma mudança para evitar as repetições...

     

    Por favor, dê uma relida na minha postagem anterior, caso não tenha entendido alguma parte, favor sinalizar.

     

     

     

    No aguardo.

     


     

    adicionado 12 minutos depois

    Adendo:
    Veja que o conteúdo desses 2 se são praticamente iguais...

    31 minutos atrás, vinifla81 disse:
    
    se (op = 1) e (d = 1) então
    escreval("Você precisará de:",qtd/area1," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * qtd/area1+1:2:0, " tijolos ")
    escreval("Você precisará também de:",(qtd/area1)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,((qtd/area1) * 0.35) + 35 * ((qtd/area1)/250)+1:5:2, "  ")
    fimse
    se (op = 2) e (d = 1) então
    escreval("Você precisará de:",qtd/area2," tijolos para constuir o muro")
    escreval("Para não faltar, compre:",1.1 * qtd/area2+1:2:0, " tijolos ")
    escreval("Você precisará também de:",(qtd/area2)/250+1:2:0," saco(s) de cimento")
    escreval("O custo médio é de: R$" ,((qtd/area2) * 0.50) + 35 * ((qtd/area2)/250)+1:5:2, "  ")
    fimse

     

     

    Você precisa deixar esse trecho de "exibição de resultado" no final, uma única vez... e as partes que são variáveis, serem selecionadas nos se.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Eu sou bem amador em programação e não estou entendendo isso da repetição. Se puder me dar uma ajuda eu agradeço

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá.

     

    13 horas atrás, vinifla81 disse:

    Eu sou bem amador em programação e não estou entendendo isso da repetição. Se puder me dar uma ajuda eu agradeço


    É normal... a proposta é que justamente vá aprendendo a interpretar as orientações, assim como é necessário interpretar os requisitos do problema, ou seja, aquilo que está sendo pedido... 

     

    Eu posso, por exemplo, não está explicando bem (no sentido de transmitir minhas propostas), faz parte! A ideia é que tente absorver pelo que está sendo passado... interagir... saber coletar as informações... saber se expressar para demonstrar o quê não está entendendo etc... :)

     

     

    Vamos lá:

    Vou tentar criar uma análise. obs.: nesse momento não estou me preocupando com o resultado, as fórmulas ou qualquer coisa relacionada ao problema em si, mas apenas a estruturas das etapas.

     

     

    No seu código já tem umas separação das etapas..

     

     

    Em "// Entradas", você coleta os dados que dependem do usuário. OK. Após com essas leituras (teoricamente) já terá tudo que você precisa para retornar uma resposta ao usuário.

     

     

    Em "// Processamento" você está pré-calculando o que você chamou de area, que antes estava também pre-calculando o que chamou de qtd, ou seja, o que comentei lá na primeira postagem, ainda se manteve:

     

    20 horas atrás, Simon Viegas disse:

    mas você está efetuando cálculos sem necessidade e repetindo várias vezes o mesmo trecho de algoritmo.

     

    que complemento:

    20 horas atrás, Simon Viegas disse:

    Se tomássemos a sua linha de raciocínio dos seus se, cada uma dessas contas deveria está apenas dentro do seu respectivo se, ou seja, só faria a conta que é necessária quando o se "fosse aceito".

     

    Veja, não estou afirmando que essa deveria ser única forma que poderia ser feita, mas que seria uma sugestão que poderia ser avaliada por você... No seu novo código, você apenas fez algumas "melhorias", mas meio que não levou em consideração a sugestão em si, ou seja, a sugestão meio que foi ignorada (no bom sentido da palavra)... ou por não ter entendido, ou por não ter percebido, ou por ser apenas ignorado mesmo...

     

    Ainda nessa questão do "pré-cálculo", nesse ponto entra a observação que poderia evitar essa conta desnecessária, pois você só vai utilizar uma das areas (ou dos "qtd"s), logo as outras seriam feitas sem necessidade (trabalho extra). Como cada condição utiliza uma fórmula diferente, essa conta poderia ficar dentro do seu respectivo se.

     

    Algo como:

    obs.: vou usar o código do qtd, pois ao adaptar para areas, eu teria que fazer outras resolvas...

    ...
    escreval("Informe o comprimento desejado do muro em metros a ser construído")
    leia (cm)
    escreval("Informe a altura desejada do muro em metros a ser construído")
    leia (am)
    
    // Saidas
    se (op = 1) e (d = 1) então
       qtd<-(cm * am)/(0.2394)
       escreval("Você precisará de:",qtd," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd * 0.35) + 35 * (qtd/250)+1:5:2, "  ")
    fimse
    
    se (op = 2) e (d = 1) então
       qtd1<-(cm * am)/(0.4104)
       escreval("Você precisará de:",qtd1," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd1+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd1/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd1 * 0.50) + 35 * (qtd1/250)+1:5:2, "  ")
    fimse
    
    se (op = 3) e (d = 1) então
       qtd2<-(cm * am)/(0.7714)
       escreval("Você precisará de:",qtd2," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd2+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd2/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd2 * 0.80) + 35 * (qtd2/250)+1:5:2, "  ")
    fimse
    
    se (op = 1) e (d = 2) então
       qtd3<-((cm * am)/(0.2394)) * 2
       escreval("Você precisará de:",qtd3," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd3+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd3/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd3 * 0.35) + 35 * (qtd3/250)+1:5:2, "  ")
    fimse
    
    se (op = 2) e (d = 2) então
       qtd4<-((cm * am)/(0.4104)) * 2
       escreval("Você precisará de:",qtd4," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd4+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd4/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd4 * 0.50) + 35 * (qtd4/250)+1:5:2, "  ")
    fimse
    
    se (op = 3) e (d = 2) então
       qtd5<-((cm * am)/(0.7714)) * 2
       escreval("Você precisará de:",qtd5," tijolos para constuir o muro")
       escreval("Para não faltar, compre:",1.1 * qtd5+1:2:0, " tijolos ")
       escreval("Você precisará também de:",qtd5/250+1:2:0," saco(s) de cimento")
       escreval("O custo médio é de: R$" ,(qtd5 * 0.80) + 35 * (qtd5/250)+1:2:0, "  ")
    fimse
    fimalgoritmo

    Percebe a diferença?

     

    Pronto. Com as alterações acima, resolveria o "problema" do "pré-cálculo". Mas ainda tem a questão da repetição de código, como visto abaixo.

     

     

     

     

    Em // Saidas você exibe os resultados. Nela você exibe os resultados de acordo com as opções. Aqui está um outro problema, que provavelmente é o citado pelo professor:

     

    23 horas atrás, vinifla81 disse:

    Ele me disse que na entrada só poderia ter ler e escreva e na saída não poderia existir se então

     

    Ou seja, você está exibindo EM CADA UM DOS SE as 4 respostas necessárias, sendo que ajustando alguns respectivos pequenos detalhes. Mas acontece que essas estruturas dos resultados são iguais para todas as possibilidades, mudando apenas algumas variáveis, logo, você está repetindo praticamente o mesmo código em cada se. Possivelmente foi o que ele tava tentando te repassar... dizer que a saída em si não precisa de se, já é uma única resposta.. e que os se deveriam servi apenas para "selecionar" o que vai para essa resposta no final.

     

    Seria como deixar os se na etapa de processamento, e deixar apenas os 4 escreval() na saída.

     

    Algo como:

     

    A "saída", como postado na outra postagem, poderia ser basicamente assim:

    20 horas atrás, Simon Viegas disse:
    
     escreval("Você precisará de:",qtd," tijolos para construir o muro")
     escreval("Para não faltar, compre:",1.1 * qtd+1:2:0, " tijolos ")
     escreval("Você precisará também de:",qtd/250+1:2:0," saco(s) de cimento")
     escreval("O custo médio é de: R$" ,(qtd * outro_valor_de_alguma_coisa) + 35 * (qtd/250)+1:5:2, "  ")

     

    E no "processamentos" ficaria algo assim:

    // Processamento
    se (op = 1) e (d = 1) ENTÃO
       valor_de_alguma_coisa <- 0.2394
       multiplicador <- 1
    fimSe
    se (op = 2) e (d = 1) ENTÃO
       valor_de_alguma_coisa <- 0.4104
       multiplicador <- 1
    fimSe
    ...
    
    
    
    
    area <- (cm * am)
    qtd  <- (area/valor_de_alguma_coisa) * multiplicador

     

    No aguardo.

     

     

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×