Problema no portugol stuidio M03A15 exercício 053

Home Fóruns Programação Básica Problema no portugol stuidio M03A15 exercício 053

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #142218
      Gabriel Moraes Dias
      Participante

      Após escrever o código do exercício 053, ao rodar o código, ele da dois erros na linha 0: o primeiro é erro na compilação, e o segundo diz: existe trechos onde a variável idade pode não ter sido inicializada. Porém ao rodar o mesmo código no portguol studio web, no navegador, ele funciona perfeitamente sem erros, será um erro do próprio portugol studio? Aqui está o código:
      programa
      {

      inclua biblioteca Tipos –> ti
      inclua biblioteca Texto –> txt
      funcao inicio()
      {
      //Declaração de varáveis
      cadeia nome, tecla, resp, nomevelho = “”, nomenovo = “”
      inteiro c = 1, idade, tot = 0, velho = 0 , novo = 0
      //Entrada de Dados
      faca{
      escreva(“\n——————————“)
      escreva(“\n\tPessoa “, c)
      escreva(“\n——————————“)
      faca{
      escreva(“\nNome: “)
      leia(nome)
      //Verificação de Dados
      se (txt.numero_caracteres(nome) >= 3){
      pare
      }senao{
      escreva(“\n<<ERRO>> O nome deve ter pelo menos 3 letras!\n”)
      }
      }enquanto(verdadeiro)
      //Entrada de Dados
      faca{
      escreva(“\nIdade: “)
      leia(tecla)
      //Verificação de Dados
      se(ti.cadeia_e_inteiro(tecla, 10)){
      idade = ti.cadeia_para_inteiro(tecla, 10)
      se(idade > 0 e idade <= 150){
      pare
      }senao{
      escreva(“\n<<ERRO>> idade Invalida!”)
      }
      }senao{
      escreva(“\n<<ERRO>> A idade deve ser um número inteiro! “)
      }
      }enquanto(verdadeiro)
      //Verificação de Quem será o mais velho, e de quem será o mais novo
      tot++
      se (tot == 1){
      nomevelho = nome
      nomenovo = nome
      velho = idade
      novo = idade
      }senao{
      se(idade < novo){
      nomenovo = nome
      novo = idade
      }senao{
      se(idade > velho){
      nomevelho = nome
      velho = idade
      }
      }
      }
      //Perguntas e Respostas
      c++
      escreva(“\nQuer continuar [S/N]? “)
      leia(resp)
      resp = txt.caixa_alta(resp)
      }enquanto(resp == “S”)
      //Resultados Finais
      escreva(“\n-=-=-=-=-=-=-=-=-=-=-=- RESULTADO -=-=-=-=-=-=-=-=-=-=-=-“)
      escreva(“\nAo todo você cadastrou “, tot, ” pessoas”)
      escreva(“\n”, nomevelho, ” é a pessoa mais velha com “, velho, ” anos.”)
      escreva(“\n”, nomenovo, ” é a pessoa mais velha com “, novo, ” anos.”)
      }
      }

    • #142219
      Gabriel Moraes Dias
      Participante

      Não sei se chegou a atualizar o tópico, porem esse é o código: programa
      {

      inclua biblioteca Tipos –> ti
      inclua biblioteca Texto –> txt
      funcao inicio()
      {
      cadeia nome, tecla, resp, nomevelho = “”, nomenovo = “”
      inteiro c = 1, idade, tot = 0, velho = 0 , novo = 0
      faca{
      escreva(“\n——————————“)
      escreva(“\n\tPessoa “, c)
      escreva(“\n——————————“)
      faca{
      escreva(“\nNome: “)
      leia(nome)
      se (txt.numero_caracteres(nome) >= 3){
      pare
      }senao{
      escreva(“\n<<ERRO>> O nome deve ter pelo menos 3 letras!\n”)
      }
      }enquanto(verdadeiro)
      faca{
      escreva(“\nIdade: “)
      leia(tecla)
      se(ti.cadeia_e_inteiro(tecla, 10)){
      idade = ti.cadeia_para_inteiro(tecla, 10)
      se(idade > 0 e idade <= 150){
      pare
      }senao{
      escreva(“\n<<ERRO>> idade Invalida!”)
      }
      }senao{
      escreva(“\n<<ERRO>> A idade deve ser um número inteiro! “)
      }
      }enquanto(verdadeiro)
      tot++
      se (tot == 1){
      nomevelho = nome
      nomenovo = nome
      velho = idade
      novo = idade
      }senao{
      se(idade < novo){
      nomenovo = nome
      novo = idade
      }senao{
      se(idade > velho){
      nomevelho = nome
      velho = idade
      }
      }
      }
      c++
      escreva(“\nQuer continuar [S/N]? “)
      leia(resp)
      resp = txt.caixa_alta(resp)
      }enquanto(resp == “S”)
      escreva(“\n-=-=-=-=-=-=-=-=-=-=-=- RESULTADO -=-=-=-=-=-=-=-=-=-=-=-“)
      escreva(“\nAo todo você cadastrou “, tot, ” pessoas”)
      escreva(“\n”, nomevelho, ” é a pessoa mais velha com “, velho, ” anos.”)
      escreva(“\n”, nomenovo, ” é a pessoa mais velha com “, novo, ” anos.”)
      }
      }

    • #142230
      Daniel C. Cunha
      Participante

      Caro Gabriel, sou estudante que nem você, e embora não tenha lá muito conhecimento ainda, queria deixar umas dicas…

      No caso do seu programa o erro que está dando é porque quando você usa um laço, existe a necessidade de atribuir um valor para a variável na sua declaração.

      Ou seja, você ao colocar:

      //Dedlaração de variáveis
      inteiro idade = 0

      Você resolve o problema.

      Passei muito perrengue com isso, mas a gente vai ficando cascudo com a pratica.

      A dica que eu deixo é… crie erros propositais… e veja como as criticas do portugol reagem
      * virgulas apos as declarações
      * indices de matrizes maiores do que a propria matriz
      * erro de digitação de palavras reservadas

      coisas assim…

      Você vai ver e acabar ficando familiarizado com as criticas

      Espero ter ajudado, e não se esqueça de que as variáveis utilizadas dentro de um laço, sempre terão que ser atribuidas de um valor em sua declaração.

      Abraços.

    • #142231
      Daniel C. Cunha
      Participante

      Na verdade não me expressei direito…

      quando você usa um laço, a variável que esta sendo utilizada dentro do laço é que tem a necessidade de ter atribuição, se for uma variável que não esteja dentro de um laço dependendo do caso, não terá essa necessidade.

      🙂

      • #142253
        Tutora Jessica
        Moderador

        Muito obrigada pela explicação Daniel 🖖🏼

Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.