Módulo 03 – Exercício – 029

Home Fóruns Programação Básica Módulo 03 – Exercício – 029

Visualizando 5 respostas da discussão
  • Autor
    Posts
    • #80423

      Segue o código para analise:

      inteiro inicio_cont, fim_cont, incremento

      escreva(“{ EXERCÍCIO 029 – Contagem Personalizada }\n”)
      escreva(“——————————————– \n”)
      escreva(“Onde começa a contagem? “)
      leia(inicio_cont)
      escreva(“Onde termina a contagem? “)
      leia(fim_cont)
      escreva(“Qual vai ser o incremento? “)
      leia(incremento)
      escreva(“——————————————– \n”)

      enquanto (inicio_cont <= fim_cont) {
      escreva(inicio_cont , ” – ” )
      Util.aguarde(500)
      inicio_cont += incremento
      }

      escreva(” FIM! \n”)

      Minha dúvida é se por via de regra sou obrigado a usar o contador “c”, ou posso manter dessa forma como descrito acima? Lembrando que já testei todas as possibilidades e funciona normalmente.

    • #80468
      IcaroFilho
      Moderador

      Bom dia Murilo, as nomeações de variáveis são a critério do desenvolvedor ou convenção da organização. O algoritmo irá funcionar baseado na lógica, sendo assim, independe dos nomes.

    • #83308
      RENATA LIMA HOLANDA
      Participante

      /* Serviço militar 2.0
      perguntar ano de nascimento
      se ano maior que 18 – vc ja se alistou
      se ano menor que 18 – se aliste em tal ano
      se == 18 se aliste esse ano*/
      inclua biblioteca Calendario –>c
      funcao inicio()
      {
      escreva(“\tSERVIÇO MILITAR 2.0\n”)
      escreva(“=====================================\n”)

      inteiro anoNascimento
      inteiro anoAtual = c.ano_atual()
      escreva(“Qual seu ano de nascimento ?”)
      leia(anoNascimento)

      inteiro idade = anoAtual-anoNascimento
      inteiro futuro = ( 18 – idade)
      inteiro alistamento = anoAtual + futuro

      escreva(“Estamos em ” + anoAtual + ” Sua idade é: ” + idade + ” anos \n”)
      se (idade > 18){
      escreva (” Você já deve ter se alistado no no de ” + alistamento + “.” )
      }senao se(idade < 18){
      escreva(” Você não tem idade para se alistar. Isso vai acontecer em ” + alistamento + ” Faltam ” + futuro + ” anos.”)
      }senao{
      escreva(“Você tem 18 anos. Se aliste imediatamente!”)
      }

      escreva(“\n\n”)

      }

      Olá, sempre que eu coloco uma idade maior que 18 tenho executar o programa duas vezes para obter o resultado completo. Isso só acontece se a idade for maior que 18. O que faço para corrigir?

      • #83620

        Renata, pode ser um inconsistência do interpretador do Portugol Studio, o seu código parece estar correto.

        Espero ter ajudado, qualquer dúvida estamos à disposição. 🖖

    • #104450
      Daniela Oliveira
      Participante

      Fiz um pouco diferente o exercício, mas há um erro que não sei porque está acontecendo:
      inteiro num1, num2, inc
      escreva (“Onde começa a contagem? “)
      leia (num1)
      escreva (“Onde termina a contagem? “)
      leia (num2)
      escreva (“Qual vai ser o incremento? “)
      leia (inc)

      }
      enquanto (num1 <= num2) {
      num2 = num1 + inc
      escreva (num2)
      {
      O Portugol marca o “enquanto” e diz que “a expressão não estava esperada nesse local, remova a expressão para resolver o problema”.
      Onde devo colocar o enquanto? O resto está correto?

      • #104477
        IcaroFilho
        Moderador

        Bom dia Daniela,
        Eu movi seu tópico pois já foi criado para este exercício.
        Sempre que for fazer uma postagem no fórum, verifique se o exercício já não foi pastado, assim o fórum fica mais limpo e mais fácil para outros alunos encontrarem duvidas semelhantes ao mesmo exercício.

        Quanto a sua duvida, existe um } antes do enquanto que deve estar fechando o bloco funcao inicio(), ai o enquanto acaba quebrando.
        Se retirar vai conseguir fazer a leitura completa.

        Contudo seu código entrará no que chamamos de “loop infinito” embora a condição esteja correta, o bloco do enquanto esta errado.
        no seu código vc fala que deve ser executado enquanto o num1 for inferior a num2.
        o seu bloco faz a operação de atribuir a num2 o valor de num1 mais o incremento.
        Ou seja,
        num1 sempre será inferior a num2
        Para concertar vc deve fazer com que num1 receba ele mesmo mais o incremento.
        num1 = num1 + inc

        <u>Outras observações</u>

        • Variáveis

          • Tente dar nomes mais intuitivos para facilitar a leitura como: num1 => inicio | num2 => fim
          • Lembre-se que o código é escrito para outros Devs lerem também
        • Espaçamentos

          • No seu código , vc esta dando espaço entre o nome da função/método e os parênteses: leia (). Está é uma má pratica pois nem todas as linguagens serão tolerantes e aceitaram (<i>a maioria irá quebrar</i>)
        • Ordem de execução

          • Dentro do bloco Enquanto, geralmente a operação de incremento fica no final do bloco
          • enquanto(inicio <= fim){  // laço de repetição (inicio = num1 | fim = num2
                escreva(inicio , "\n") // bloco de execução
                inicio = inicio + inc // incremento
            {

        Caso continue com duvidas, é só postar aqui.

    • #108979
      Roni Oliveira
      Participante

      `programa
      {

      inclua biblioteca Util –> u
      funcao inicio()
      {
      escreva(“{ EXERCICIO 29 – CONTAGEM PERSONALIZADA }\n”)
      inteiro c, fim, inc

      escreva(“qual o n° inicial? “)
      leia(c)
      escreva(“onde termina a contagem? “)
      leia(fim)
      escreva(“qual vai ser o incremento? “)
      leia(inc)

      escreva(“iniciou “)

      enquanto(c <= fim ){
      escreva(c+”-“)
      c = c + inc
      }
      escreva(“terminou”)
      }
      }
      Como posso usar a biblioteca Util, para utilizar a funcao tempo_decorrido() ?

    • #109026
      Tutora Jessica
      Moderador

      Ola Roni, não consegui entender sua dúvida.
      Nesse exercício o professor Guanabara somente utilizou a biblioteca Util para o aguarde.
      (u.aguarde)

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