Ir ao conteúdo

VisualG É possível fazer um menu funcional em VisualG?


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Estou utilizando o programa Visualg - sou iniciante na programação
Eu estou concluindo um projeto, porém eu gostaria que ao final de cada processo ele me desse a escolha de voltar ao menu inicial, isso seria possível de alguma forma? Eu tentei repetir o menu com escolhas ao final de cada procedimento, mas ele sempre dava algum erro como por exemplo pular diretamente para outra opção e não voltar ao menu.

 

var
   //variáveis login
   user:caractere
   dia,mes,ano:inteiro

   //variáveis do menu
   op:caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoideal:real
   idade, ano_nas:inteiro
   nome:caractere

   //variáveis soma de 4 números
   total, n1,n2,n3,n4:real

   //variáveis celcius para far
   celsius, far : real

   //variáveis para cotação
   valorCompra:real
   cotacao:real
   valorReais:real
   cliente:caractere
   escolher:inteiro

   //reiniciar
   reiniciar:caractere
   comando:caractere

inicio
   //login
   escreva("Usuário:")
   leia(user)
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   leia(dia)
   escreva("Insira o mês atual:")
   leia(mes)
   escreva("Insira o ano atual:")
   leia(ano)

   limpatela()

   //---------------------------------------------------------------------------

   //menu de opções

   escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
   escreval("")
   escreval("")
   escreval("Escolha alguma das opções abaixo!")
   escreval("")
   escreval("A - CÁLCULAR IMC----------------------")
   escreval("B - CÁLCULAR NÚMEROS------------------")
   escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
   escreval("D - SISTEMA COTAÇÃO-------------------")
   escreval("E - FECHAR SISTEMA--------------------")

   leia(op)
   limpatela()

   //---------------------------------------------------------------------------

   //comandos cálculo imc
   se op="A" entao
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")

      escreval("Vamos abrir uma nova ficha para seu paciente:")
      escreval("")
      escreva("Insira o nome de seu(a) paciente:")
      leia(nome)
      escreva("Insira a altura de seu(a) paciente:")
      leia(altura)
      escreva("Insira o peso de seu(a) paciente:")
      leia(peso)
      escreva("Insira a data de nascimento de seu(a) paciente:")
      leia(ano_nas)

      limpatela()

      idade <- ano - ano_nas
      pesoideal<-(72.2*altura)-58
      imc <- peso / (altura*altura)

      //resultados imc
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("")

      //abaixo do peso
      se (imc<18) entao
         escreval("Veja abaixo os resultados de seu paciente:")
         escreval("nome:" ,nome)
         escreval("Idade:", idade)
         escreval("")
         escreval("sua altura atual é: m", altura)
         escreval("seu peso atual é: kg", peso)
         escreval("seu peso ideal é: kg" , pesoideal)
         escreval("")
         escreval("você está abaixo do seu peso ideal, seu imc é:" ,imc)
      fimse

      //dentro do peso ideal
      se (imc>=18) e (imc<25) entao
         escreval("Veja abaixo os resultados de seu paciente:")
         escreval("nome:" ,nome)
         escreval("Idade:", idade)
         escreval("")
         escreval("sua altura atual é: m", altura)
         escreval("seu peso atual é: kg", peso)
         escreval("seu peso ideal é: kg" , pesoideal)
         escreval("")
         escreval("você está dentro do seu peso ideal, seu imc é:" ,imc)
      fimse

      //acima do peso
      se (imc>=25) entao
         escreval("Veja abaixo os resultados de seu paciente:")
         escreval("nome:" ,nome)
         escreval("Idade:", idade)
         escreval("")
         escreval("sua altura atual é: m", altura)
         escreval("seu peso atual é: kg", peso)
         escreval("seu peso ideal é: kg" , pesoideal)
         escreval("")
         escreval("você está acima do seu peso ideal, seu imc é:" ,imc)
      fimse
   fimse

   //comandos cálcular números
   se op="B" entao
      escreval("Bem-vindo(a)", user, "insira alguns números para serem calculados")
      escreval("")
      escreva("digite o primeiro número:")
      leia(n1)
      escreva("digite o segundo número:")
      leia(n2)
      escreva("digite o terceiro número:")
      leia(n3)
      escreva("digite o último número:")
      leia(n4)

      limpatela()
      total<-(n1+n2+n3+n4)

      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("")
      escreval("Veja o resultado abaixo")
      escreva("A soma total dos números escolhidos é de:", total)
   fimse

   //comandos celsius para far
   se op="C" entao
      escreval("Digite um valor para converter")
      leia(celsius)
      far<-(9 * celsius/5)+32

      limpatela()

      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("")
      escreval("Dê uma olhada nos resultados:")
      escreval("O valor em Celsius é:", celsius)
      escreval("O valor em Fahrenheit é:",far)
   fimse

   //cotação dólar
   se op="D" entao
      escreval("[ SEJA BEM-VINDO(A) AO SISTEMA DE CÂMBIOS ]")
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")

      escreval("Insira o nome do cliente:")
      leia(cliente)

      limpatela()

      escreval("Operador ", user, " Cliente:", cliente,".")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("1 - Dólar para Reais")

      leia(escolher)
      limpatela()

      se escolher="1" entao
         escreva("Informe o valor da sua compra em: $")
         leia(valorCompra)
         escreva("Informe a cotação do dia em: $")
         leia(cotacao)

         valorReais := valorCompra*cotacao

         limpatela()

         escreval("Operador ", user, " Cliente:", cliente,".")
         escreval("Veja os seus resultados abaixo")
         escreval("")
         escreval("Valor a ser comprado em: $", valorCompra)
         escreval("Cotação do dia: ", cotacao)
         escreval("O valor da sua compra convertido é de: R$", valorReais)
      fimse
   fimse
fimalgoritmo
  • Curtir 1
  • Obrigado 1
  • Solução
Postado

@Luiz Campos     para voltar ao menu , você pode usar um comando de repetição , que pode ser esse "repita / ate"  ,  e seu código poderia ser assim  :

Algoritmo "voltar ao menu"
Var
  user                         : caractere // variáveis login
  dia,mes,ano                  : inteiro
  op ,cliente ,continuar, nome : caractere // variáveis do menu
  imc, peso, altura, pesoideal : real      // variáveis cálculo imc
  idade, ano_nas , escolher    : inteiro
  total, n1,n2,n3,n4           : real      // variáveis soma de 4 números
  celsius, far                 : real      // variáveis celcius para far
  valorCompra                  : real      // variáveis para cotação
  cotacao , valorReais         : real
  reiniciar , comando          : caractere // reiniciar
Inicio
  escreva("Usuário :")                     // login
  leia(user)
  escreval
  escreval("Insira a data de hoje exemplo: 01/01/2022: ")
  escreva("Insira o dia atual:")
  leia(dia)
  escreva("Insira o mês atual:")
  leia(mes)
  escreva("Insira o ano atual:")
  leia(ano)
  repita
    limpatela                              // menu de opções
    escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
    escreval
    escreval
    escreval("Escolha alguma das opções abaixo!")
    escreval
    escreval("A - CÁLCULAR IMC----------------------")
    escreval("B - CÁLCULAR NÚMEROS------------------")
    escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
    escreval("D - SISTEMA COTAÇÃO-------------------")
    escreval("E - FECHAR SISTEMA--------------------")
    leia(op)
    limpatela
    //---------------------------------------------------------------------------
    se op="A" entao                 // comandos cálculo imc
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("Vamos abrir uma nova ficha para seu paciente:")
      escreval
      escreva("Insira o nome de seu(a) paciente:")
      leia(nome)
      escreva("Insira a altura de seu(a) paciente:")
      leia(altura)
      escreva("Insira o peso de seu(a) paciente:")
      leia(peso)
      escreva("Insira a data de nascimento de seu(a) paciente:")
      leia(ano_nas)
      limpatela
      idade <- ano - ano_nas
      pesoideal <- (72.2 * altura ) - 58
      imc <- peso / ( altura * altura )
      //resultados imc
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      //abaixo do peso
      se imc < 18 entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome ---: ", nome )
        escreval("Idade --: ", idade)
        escreval
        escreval("sua altura atual é -: ", altura   ,"Mt")
        escreval("seu peso atual é ---: ", peso     ,"Kg")
        escreval("seu peso ideal é ---: ", pesoideal,"Kg")
        escreval
        escreval("você está abaixo do seu peso ideal, seu imc é -: " ,imc)
      fimse
      //dentro do peso ideal
      se ( imc >= 18 ) e ( imc < 25 ) entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome:" ,nome)
        escreval("Idade:", idade)
        escreval
        escreval("sua altura atual é -: ", altura   ,"Mt")
        escreval("seu peso atual é ---: ", peso     ,"Kg")
        escreval("seu peso ideal é ---: ", pesoideal,"Kg")
        escreval
        escreval("você está dentro do seu peso ideal, seu imc é -: " ,imc)
      fimse
      //acima do peso
      se imc >= 25 entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome --: ", nome )
        escreval("Idade -: ", idade)
        escreval
        escreval("sua altura atual é --: ", altura   ,"Mt")
        escreval("seu peso atual é ----: ", peso     ,"Kg")
        escreval("seu peso ideal é ----: ", pesoideal."Kg")
        escreval
        escreval("você está acima do seu peso ideal, seu imc é -: " ,imc)
      fimse
    fimse
    //comandos cálcular números
    se op="B" entao
      escreval("Bem-vindo(a)", user, "insira alguns números para serem calculados")
      escreval("")
      escreva("digite o primeiro número:")
      leia(n1)
      escreva("digite o segundo número:")
      leia(n2)
      escreva("digite o terceiro número:")
      leia(n3)
      escreva("digite o último número:")
      leia(n4)
      limpatela
      total <- ( n1 + n2 + n3 + n4 )
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      escreval("Veja o resultado abaixo")
      escreva("A soma total dos números escolhidos é de:", total)
    fimse
    //comandos celsius para far
    se op = "C" entao
      escreval("Digite um valor para converter")
      leia(celsius)
      far <- (9 * celsius / 5 ) + 32
      limpatela
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      escreval("Dê uma olhada nos resultados:")
      escreval("O valor em Celsius é:", celsius)
      escreval("O valor em Fahrenheit é:",far)
    fimse
    //cotação dólar
    se op="D" entao
      escreval("[ SEJA BEM-VINDO(A) AO SISTEMA DE CÂMBIOS ]")
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("Insira o nome do cliente:")
      leia(cliente)
      limpatela
      escreval("Operador ", user, " Cliente:", cliente,".")
      escreval
      escreval("Escolha alguma das opções abaixo!")
      escreval
      escreval("1 - Dólar para Reais")
      leia(escolher)
      limpatela
      se escolher = "1" entao
        escreva("Informe o valor da sua compra em: $")
        leia(valorCompra)
        escreva("Informe a cotação do dia em: $")
        leia(cotacao)
        valorReais := valorCompra * cotacao
        limpatela
        escreval("Operador ", user, " Cliente:", cliente,".")
        escreval("Veja os seus resultados abaixo")
        escreval
        escreval("Valor a ser comprado em: $", valorCompra)
        escreval("Cotação do dia: ", cotacao)
        escreval("O valor da sua compra convertido é de: R$", valorReais)
      fimse
    fimse
    escreval
    escreval
    se op <> "e" entao
      escreva("           Tecle Enter para Voltar ao Menu")
      leia(continuar)
    senao
      escreval("    Saindo Do Programa . . . !")
    fimse
  ate op = "E"
Fimalgoritmo

 

  • Curtir 1
Postado

@devair1010 Obrigado, eu realmente agradeço, passei uma noite quebrando a cabeça, tentei até mesmo usar esse procedimento mas como estou aprendendo por agora não tenho tanta noção, agradeço mesmo, estive lendo o código e pode ter certeza de que isso irá me ajudar e irei aplicar em meus estudos 🙂

  • Obrigado 1
Postado

@Luiz Campos Uma maneira melhor seria usando funções mesmo.

 

exemplo

algoritmo "nada"

var
   listaPessoas:vetor [1..2] de caractere
   opcao:inteiro
   contador:inteiro
   tmp:caractere
   
procedimento mostraLinha(tam:inteiro; car:caractere)
var
   contador:inteiro;
inicio
      para contador de 1 ate tam faca
           escreva(car)
      fimPara
      
      escreval("")
fimProcedimento

funcao menuPrincipal:inteiro
var
   opcao:inteiro
   tmp:caractere
inicio
      repita
            limpaTela
            mostraLinha(40, "-")
            escreval("Escolha uma das opções abaixo")
            mostraLinha(40, "-")
            escreval("1-mostrar nomes das pessoas no sistema")
            escreval("2-colocar o seu nome no sistema")
            escreval("3-Sair")
            mostraLinha(40, "-")
            leia(opcao)
            se (opcao < 1) ou (opcao > 3) entao
               escreval("Opcao invalida!")
               escreval("Pressione enter para continuar")
               leia(tmp)
            fimSe
      ate não((opcao < 1) ou (opcao > 3))
      retorne opcao
fimFuncao
            

inicio
      listaPessoas[1] <- "Jose durval"
      listaPessoas[2] <- "Mario Bros"
      repita
            opcao <- menuPrincipal
            escolha opcao
                    caso 1
                         mostraLinha(40, "#")
                         limpaTela
                         para contador de 1 ate 2 faca
                              escreval("[", contador, "]-", listaPessoas[contador])
                         fimPara
                         mostraLinha(40, "#")
                         escreval("Pressione enter para continuar")
                         leia(tmp)
                    caso 2
                         mostraLinha(40, ">")
                         escreval("Digite o seu nome")
                         mostraLinha(40, "<")
                         leia(listaPessoas[2])
                    caso 3
                         mostraLinha(40, "#")
                         escreval("Tchau")
                         mostraLinha(40, "#")

            fimEscolha
      ate opcao=3
      escreval("Pressione enter para continuar")
      leia(tmp)
FimAlgoritmo

 

  • Curtir 1
  • Obrigado 1
Postado

@kginmas dessa forma seria possível ainda que eu trabalhasse com informações como o@devair1010explicou no código acima?

17 horas atrás, devair1010 disse:

@Luiz Campos     para voltar ao menu , você pode usar um comando de repetição , que pode ser esse "repita / ate"  ,  e seu código poderia ser assim  :

Algoritmo "voltar ao menu"
Var
  user                         : caractere // variáveis login
  dia,mes,ano                  : inteiro
  op ,cliente ,continuar, nome : caractere // variáveis do menu
  imc, peso, altura, pesoideal : real      // variáveis cálculo imc
  idade, ano_nas , escolher    : inteiro
  total, n1,n2,n3,n4           : real      // variáveis soma de 4 números
  celsius, far                 : real      // variáveis celcius para far
  valorCompra                  : real      // variáveis para cotação
  cotacao , valorReais         : real
  reiniciar , comando          : caractere // reiniciar
Inicio
  escreva("Usuário :")                     // login
  leia(user)
  escreval
  escreval("Insira a data de hoje exemplo: 01/01/2022: ")
  escreva("Insira o dia atual:")
  leia(dia)
  escreva("Insira o mês atual:")
  leia(mes)
  escreva("Insira o ano atual:")
  leia(ano)
  repita
    limpatela                              // menu de opções
    escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
    escreval
    escreval
    escreval("Escolha alguma das opções abaixo!")
    escreval
    escreval("A - CÁLCULAR IMC----------------------")
    escreval("B - CÁLCULAR NÚMEROS------------------")
    escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
    escreval("D - SISTEMA COTAÇÃO-------------------")
    escreval("E - FECHAR SISTEMA--------------------")
    leia(op)
    limpatela
    //---------------------------------------------------------------------------
    se op="A" entao                 // comandos cálculo imc
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("Vamos abrir uma nova ficha para seu paciente:")
      escreval
      escreva("Insira o nome de seu(a) paciente:")
      leia(nome)
      escreva("Insira a altura de seu(a) paciente:")
      leia(altura)
      escreva("Insira o peso de seu(a) paciente:")
      leia(peso)
      escreva("Insira a data de nascimento de seu(a) paciente:")
      leia(ano_nas)
      limpatela
      idade <- ano - ano_nas
      pesoideal <- (72.2 * altura ) - 58
      imc <- peso / ( altura * altura )
      //resultados imc
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      //abaixo do peso
      se imc < 18 entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome ---: ", nome )
        escreval("Idade --: ", idade)
        escreval
        escreval("sua altura atual é -: ", altura   ,"Mt")
        escreval("seu peso atual é ---: ", peso     ,"Kg")
        escreval("seu peso ideal é ---: ", pesoideal,"Kg")
        escreval
        escreval("você está abaixo do seu peso ideal, seu imc é -: " ,imc)
      fimse
      //dentro do peso ideal
      se ( imc >= 18 ) e ( imc < 25 ) entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome:" ,nome)
        escreval("Idade:", idade)
        escreval
        escreval("sua altura atual é -: ", altura   ,"Mt")
        escreval("seu peso atual é ---: ", peso     ,"Kg")
        escreval("seu peso ideal é ---: ", pesoideal,"Kg")
        escreval
        escreval("você está dentro do seu peso ideal, seu imc é -: " ,imc)
      fimse
      //acima do peso
      se imc >= 25 entao
        escreval("Veja abaixo os resultados de seu paciente:")
        escreval("nome --: ", nome )
        escreval("Idade -: ", idade)
        escreval
        escreval("sua altura atual é --: ", altura   ,"Mt")
        escreval("seu peso atual é ----: ", peso     ,"Kg")
        escreval("seu peso ideal é ----: ", pesoideal."Kg")
        escreval
        escreval("você está acima do seu peso ideal, seu imc é -: " ,imc)
      fimse
    fimse
    //comandos cálcular números
    se op="B" entao
      escreval("Bem-vindo(a)", user, "insira alguns números para serem calculados")
      escreval("")
      escreva("digite o primeiro número:")
      leia(n1)
      escreva("digite o segundo número:")
      leia(n2)
      escreva("digite o terceiro número:")
      leia(n3)
      escreva("digite o último número:")
      leia(n4)
      limpatela
      total <- ( n1 + n2 + n3 + n4 )
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      escreval("Veja o resultado abaixo")
      escreva("A soma total dos números escolhidos é de:", total)
    fimse
    //comandos celsius para far
    se op = "C" entao
      escreval("Digite um valor para converter")
      leia(celsius)
      far <- (9 * celsius / 5 ) + 32
      limpatela
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval
      escreval("Dê uma olhada nos resultados:")
      escreval("O valor em Celsius é:", celsius)
      escreval("O valor em Fahrenheit é:",far)
    fimse
    //cotação dólar
    se op="D" entao
      escreval("[ SEJA BEM-VINDO(A) AO SISTEMA DE CÂMBIOS ]")
      escreval("Olá ", user,". Hoje é dia :",dia," /",mes," /",ano,".")
      escreval("Insira o nome do cliente:")
      leia(cliente)
      limpatela
      escreval("Operador ", user, " Cliente:", cliente,".")
      escreval
      escreval("Escolha alguma das opções abaixo!")
      escreval
      escreval("1 - Dólar para Reais")
      leia(escolher)
      limpatela
      se escolher = "1" entao
        escreva("Informe o valor da sua compra em: $")
        leia(valorCompra)
        escreva("Informe a cotação do dia em: $")
        leia(cotacao)
        valorReais := valorCompra * cotacao
        limpatela
        escreval("Operador ", user, " Cliente:", cliente,".")
        escreval("Veja os seus resultados abaixo")
        escreval
        escreval("Valor a ser comprado em: $", valorCompra)
        escreval("Cotação do dia: ", cotacao)
        escreval("O valor da sua compra convertido é de: R$", valorReais)
      fimse
    fimse
    escreval
    escreval
    se op <> "e" entao
      escreva("           Tecle Enter para Voltar ao Menu")
      leia(continuar)
    senao
      escreval("    Saindo Do Programa . . . !")
    fimse
  ate op = "E"
Fimalgoritmo

 

 

  • Curtir 1
Postado
1 hora atrás, devair1010 disse:

@Luiz Campos       Existem varios modos de fazer um codigo ,  e   se voce usar funcoes e procedimentos ,    irah reduzir a qtd de linhas do codigo ,   e isso seria  melhor mesmo  .  

Entendo, agradeço a ajuda de ambos, percebi por agora que sua foto també é de um lançamento, incrível 😅

  • Obrigado 1
  • Haha 1
  • Membro VIP
Postado
Em 13/03/2022 às 08:55, Luiz Campos disse:

Estou utilizando o programa Visualg - sou iniciante na programação
Eu estou concluindo um projeto, porém eu gostaria que ao final de cada processo ele me desse a escolha de voltar ao menu inicial, isso seria possível de alguma forma? Eu tentei repetir o menu com escolhas ao final de cada procedimento, mas ele sempre dava algum erro como por exemplo pular diretamente para outra opção e não voltar ao menu.

 

 

@Luiz Campos, qual o enunciado completo da questão? Uma dica geral é tentar seguir o que está sendo pedido...

Segue um exemplo de fluxo que sugeriria seguir:

Crie esboços simples. Não precisa de muita filura:

 

algoritmo "Menus de opções"
var
   //data atual
   dia, mes, ano:inteiro

   //variáveis do usuário
   nome: caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoIdeal: real
   anoNascimento, idade: inteiro

   op: caractere //opção do menu

inicio
   escreva("Nomedo do usuário: ")
   //leia(nome)
   nome <- "Luiz Campos"
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   //leia(dia)
   dia <- 14
   escreva("Insira o mês atual:")
   //leia(mes)
   mes <- 03
   escreva("Insira o ano atual:")
   //leia(ano)
   ano <- 2022
   

   limpaTela()
   //---------------------------------------------------------------------------
   //Menu de opções
   escreval("Olá ", nome, ". Hoje é dia :", dia:1,"/", mes:1, "/", ano:1, ".")
   escreval("")
   escreval("")
   escreval("Escolha alguma das opções abaixo!")
   escreval("")
   escreval("A - CÁLCULAR IMC----------------------")
   escreval("B - CÁLCULAR NÚMEROS------------------")
   escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
   escreval("D - SISTEMA COTAÇÃO-------------------")
   escreval("E - FECHAR SISTEMA--------------------")
   leia(op)
   
   limpaTela()

fimAlgoritmo

 

Observe que, como não importa o nome da pessoa, e que o "dia de hoje" não muda, dá para atribuir logo no código... tente evitar perder tempo digitando dados. 

 

Pronto, o código acima está rodando, mas não faz nada. Vou começar agora a implementar a parte do IMC... (vou postar em seguida)
 

 

Inserido estrutura do menu:
 

   repita
      limpaTela()
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         escrevaL("Entrou opção 'A'")
      fimSe
      se (op = "B") entao
         escrevaL("Entrou opção 'B'")
      fimSe

   ate (op = "E")
fimAlgoritmo



Inserido obtenção dos dados para cálculo do IMC:
 

algoritmo "Menus de opções"
var
   //data atual
   diaAtual, mesAtual, anoAtual:inteiro

   //variáveis do usuário
   nome: caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoIdeal: real
   anoNascimento, idade: inteiro

   op: caractere //opção do menu

inicio
   escreva("Nome do usuário: ")
   //leia(nome)
   nome <- "Luiz Campos"
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   //leia(dia)
   diaAtual <- 14
   escrevaL(diaAtual)
   escreva("Insira o mês atual:")
   //leia(mes)
   mesAtual <- 03
   escrevaL(mesAtual)
   escreva("Insira o ano atual:")
   //leia(ano)
   anoAtual <- 2022
   escrevaL(anoAtual)

   repita
      //limpaTela()
      escrevaL("")
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1,"/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
         escreval("Vamos abrir uma nova ficha para seu paciente:")
         escreval
         escreva("Insira o nome de seu(a) paciente:")
         //leia(nome)
         nome <- "Maria Joaquina"
         escrevaL(nome)
         escreva("Insira a altura de seu(a) paciente:")
         //leia(altura)
         altura <- 1.65
         escrevaL(altura)
         escreva("Insira o peso de seu(a) paciente:")
         //leia(peso)
         peso <- 60
         escrevaL(peso)
         escreva("Insira a data de nascimento de seu(a) paciente:")
         //leia(anoNascimento)
         anoNascimento <- 1990
         escrevaL(anoNascimento)

         idade <- anoAtual - anoNascimento

         //limpaTela()
      fimSe
      se (op = "B") entao
         escrevaL("Entrou opção 'B'")
      fimSe

   ate (op = "E")
fimAlgoritmo


image.png

Obteve os dados, agora vou implementar o cálculo e exibição dos resultados... (vou postar em seguida)

 

  • Curtir 1
Postado
48 minutos atrás, Simon Viegas disse:

 

@Luiz Campos, qual o enunciado completo da questão? Uma dica geral é tentar seguir o que está sendo pedido...

Segue um exemplo de fluxo que sugeriria seguir:

Crie esboços simples. Não precisa de muita filura:

 

algoritmo "Menus de opções"
var
   //data atual
   dia, mes, ano:inteiro

   //variáveis do usuário
   nome: caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoIdeal: real
   anoNascimento, idade: inteiro

   op: caractere //opção do menu

inicio
   escreva("Nomedo do usuário: ")
   //leia(nome)
   nome <- "Luiz Campos"
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   //leia(dia)
   dia <- 14
   escreva("Insira o mês atual:")
   //leia(mes)
   mes <- 03
   escreva("Insira o ano atual:")
   //leia(ano)
   ano <- 2022
   

   limpaTela()
   //---------------------------------------------------------------------------
   //Menu de opções
   escreval("Olá ", nome, ". Hoje é dia :", dia:1,"/", mes:1, "/", ano:1, ".")
   escreval("")
   escreval("")
   escreval("Escolha alguma das opções abaixo!")
   escreval("")
   escreval("A - CÁLCULAR IMC----------------------")
   escreval("B - CÁLCULAR NÚMEROS------------------")
   escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
   escreval("D - SISTEMA COTAÇÃO-------------------")
   escreval("E - FECHAR SISTEMA--------------------")
   leia(op)
   
   limpaTela()

fimAlgoritmo

 

Observe que, como não importa o nome da pessoa, e que o "dia de hoje" não muda, dá para atribuir logo no código... tente evitar perder tempo digitando dados. 

 

Pronto, o código acima está rodando, mas não faz nada. Vou começar agora a implementar a parte do IMC... (vou postar em seguida)
 

 

Inserido estrutura do menu:
 

   repita
      limpaTela()
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         escrevaL("Entrou opção 'A'")
      fimSe
      se (op = "B") entao
         escrevaL("Entrou opção 'B'")
      fimSe

   ate (op = "E")
fimAlgoritmo



Inserido obtenção dos dados para cálculo do IMC:
 

algoritmo "Menus de opções"
var
   //data atual
   diaAtual, mesAtual, anoAtual:inteiro

   //variáveis do usuário
   nome: caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoIdeal: real
   anoNascimento, idade: inteiro

   op: caractere //opção do menu

inicio
   escreva("Nome do usuário: ")
   //leia(nome)
   nome <- "Luiz Campos"
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   //leia(dia)
   diaAtual <- 14
   escrevaL(diaAtual)
   escreva("Insira o mês atual:")
   //leia(mes)
   mesAtual <- 03
   escrevaL(mesAtual)
   escreva("Insira o ano atual:")
   //leia(ano)
   anoAtual <- 2022
   escrevaL(anoAtual)

   repita
      //limpaTela()
      escrevaL("")
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1,"/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
         escreval("Vamos abrir uma nova ficha para seu paciente:")
         escreval
         escreva("Insira o nome de seu(a) paciente:")
         //leia(nome)
         nome <- "Maria Joaquina"
         escrevaL(nome)
         escreva("Insira a altura de seu(a) paciente:")
         //leia(altura)
         altura <- 1.65
         escrevaL(altura)
         escreva("Insira o peso de seu(a) paciente:")
         //leia(peso)
         peso <- 60
         escrevaL(peso)
         escreva("Insira a data de nascimento de seu(a) paciente:")
         //leia(anoNascimento)
         anoNascimento <- 1990
         escrevaL(anoNascimento)

         idade <- anoAtual - anoNascimento

         //limpaTela()
      fimSe
      se (op = "B") entao
         escrevaL("Entrou opção 'B'")
      fimSe

   ate (op = "E")
fimAlgoritmo


image.png

Obteve os dados, agora vou implementar o cálculo e exibição dos resultados... (vou postar em seguida)

 

Compreendo, estou de acordo com o que você disse, então sim, estou tentando simplificar ao máximo

  • Curtir 1
  • Obrigado 1
  • Membro VIP
Postado

Inserido calculo e exibição do IMC:
 

algoritmo "Menus de opções"
var
   //data atual
   diaAtual, mesAtual, anoAtual:inteiro

   //variáveis do usuário
   nome: caractere

   //variáveis cálculo imc
   imc, peso, altura, pesoIdeal: real
   anoNascimento, idade: inteiro

   op: caractere //opção do menu

inicio
   escreva("Nome do usuário: ")
   //leia(nome)
   nome <- "Luiz Campos"
   escreval("")
   escreval("Insira a data de hoje exemplo: 01/01/2022: ")
   escreva("Insira o dia atual:")
   //leia(dia)
   diaAtual <- 14
   escrevaL(diaAtual)
   escreva("Insira o mês atual:")
   //leia(mes)
   mesAtual <- 03
   escrevaL(mesAtual)
   escreva("Insira o ano atual:")
   //leia(ano)
   anoAtual <- 2022
   escrevaL(anoAtual)

   repita
      //limpaTela()
      escrevaL("")
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1,"/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
         escreval("Vamos abrir uma nova ficha para seu paciente:")
         escreval
         escreva ("Insira o nome de seu(a) paciente: ")
         //leia(nome)
         nome <- "Maria Joaquina"
         escrevaL(nome)
         escreva ("Insira a altura de seu(a) paciente: ")
         //leia(altura)
         altura <- 1.65
         escrevaL(altura)
         escreva ("Insira o peso de seu(a) paciente: ")
         //leia(peso)
         peso <- 60
         escrevaL(peso)
         escreva ("Insira a data de nascimento de seu(a) paciente: ")
         //leia(anoNascimento)
         anoNascimento <- 1990
         escrevaL(anoNascimento)

         idade <- anoAtual - anoNascimento
         pesoideal<-(72.2*altura)-58
         imc <- peso / (altura*altura)

         //resultados imc
         escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
         escreval("")
         escreval("Veja abaixo os resultados de seu paciente:")
         escreval("Nome       : ", nome)
         escreval("Idade      : ", idade:1, " anos")
         escreval("")
         escreval("Altura     : ", altura:1:2, " m")
         escreval("Peso atual : ", peso:1:2, " kg")
         escreval("Peso ideal : ", pesoideal:1:2, " kg")
         escreval("")

         //abaixo do peso
         se (imc < 18) entao
            escreval("você está abaixo do seu peso ideal, seu imc é: " , imc:1:2)
         fimse

         //dentro do peso ideal
         se (imc >= 18) e (imc < 25) entao
            escreval("você está dentro do seu peso ideal, seu imc é: " , imc:1:2)
         fimse

         //acima do peso
         se (imc >= 25) entao
            escreval("")
            escreval("você está acima do seu peso ideal, seu imc é: " , imc:1:2)
         fimse
      fimse

      se (op = "B") entao
         escrevaL("Entrou opção 'B'")
      fimSe

   ate (op = "E")
fimAlgoritmo




image.png


Abaixo colocando os itens no menu em procedimentos (para organizar o programa principal):
 

procedimento ItemMenuA()
inicio
   escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
   escreval("Vamos abrir uma nova ficha para seu paciente:")
   escreval
   escreva ("Insira o nome de seu(a) paciente: ")
   //leia(nome)
   nome <- "Maria Joaquina"
   escrevaL(nome)
   escreva ("Insira a altura de seu(a) paciente: ")
   //leia(altura)
   altura <- 1.65
   escrevaL(altura)
   escreva ("Insira o peso de seu(a) paciente: ")
   //leia(peso)
   peso <- 60
   escrevaL(peso)
   escreva ("Insira a data de nascimento de seu(a) paciente: ")
   //leia(anoNascimento)
   anoNascimento <- 1990
   escrevaL(anoNascimento)

   idade <- anoAtual - anoNascimento
   pesoideal<-(72.2*altura)-58
   imc <- peso / (altura*altura)

   //resultados imc
   escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
   escreval("")
   escreval("Veja abaixo os resultados de seu paciente:")
   escreval("Nome       : ", nome)
   escreval("Idade      : ", idade:1, " anos")
   escreval("")
   escreval("Altura     : ", altura:1:2, " m")
   escreval("Peso atual : ", peso:1:2, " kg")
   escreval("Peso ideal : ", pesoideal:1:2, " kg")
   escreval("")

   //abaixo do peso
   se (imc < 18) entao
      escreval("você está abaixo do seu peso ideal, seu imc é: " , imc:1:2)
   fimse

   //dentro do peso ideal
   se (imc >= 18) e (imc < 25) entao
      escreval("você está dentro do seu peso ideal, seu imc é: " , imc:1:2)
   fimse

   //acima do peso
   se (imc >= 25) entao
      escreval("")
      escreval("você está acima do seu peso ideal, seu imc é: " , imc:1:2)
   fimse
fimProcedimento

procedimento ItemMenuB()
inicio
   escrevaL("Entrou opção 'B'")
fimProcedimento


Observe pelo ItemMenuB() que basicamente foi inserido o que o "item B" faz dentro do procedimento, ou seja, lá para o "item A" simplesmente fiz o mesmo. Já no menu, basta chamar o procedimento:
 

   repita
      //limpaTela()
      escrevaL("")
      //---------------------------------------------------------------------------
      //Menu de opções
      escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1,"/", mesAtual:1, "/", anoAtual:1, ".")
      escreval("")
      escreval("")
      escreval("Escolha alguma das opções abaixo!")
      escreval("")
      escreval("A - CALCULAR IMC----------------------")
      escreval("B - CALCULAR NÚMEROS------------------")
      escreval("C - CONVERTER CELSIUS PARA FAHREINHEIT")
      escreval("D - SISTEMA COTAÇÃO-------------------")
      escreval("E - FECHAR SISTEMA--------------------")
      leia(op)
      escreval("")

      se (op = "A") entao
         ItemMenuA()
      fimse

      se (op = "B") entao
         ItemMenuB()
      fimSe
   ate (op = "E")


Observe como fica mais limpo!!! Daí pode ir criando outros procedimentos... (vou postar postariormente)
 

Exemplo: em vez de calcular o IMC no código, criar uma função que retorna o valor do resultado.

 

   ...
   idade <- anoAtual - anoNascimento
   pesoideal<-(72.2*altura)-58

   imc <- calcularIMC(altura, peso)

   //resultados imc
   escreval("Olá ", nome, ". Hoje é dia :", diaAtual:1, "/", mesAtual:1, "/", anoAtual:1, ".")
   escreval("")
   ...


Uma definição da função:
 

funcao calcularIMC(altura, peso: real): real
var
   imc: real
inicio
   imc <- peso/(altura*altura)
   retorne imc
fimFuncao


Não tem mistério. A altura e o peso são os parâmetros necessários, daí eles podem vir por parâmetro. E foi criado uma nova variável para armazenar o resultado lá dentro da função. Após retorna o valor dessa variável. Lá no programa principal (código anterior) é atribuído o resultado da função na variável imc de lá. 

Mas porque tem duas variáveis imc no código, uma global e outra dentro da função? O VisualG permite isso, mas são variáveis distintas mesmo. A ideia é que a função deve ter tudo que ela precisa nela mesma!!!, ou seja, os valores externos chegam por parâmetro, e a variável auxiliar que vai armazenar o resultado é declarada dentro dela mesmo... Usei imc pois é uma nomenclatura adequada e também para justamente exemplificar que não tem problema ter nomenclaturas iguais para esses casos.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!