Ir ao conteúdo
  • Cadastre-se

VisualG Classificação de alunos numa classe


Posts recomendados

Fiz essa questão desse forma será que estaria correta?

 

Descrição: faça um algoritmo que mostre os conceitos finais dos alunos de uma classe de 75
alunos, considerando:
os dados de cada aluno (número de matrícula
e nota numérica final) serão fornecidos pelo usuário
a tabela de conceitos abaixo:
Nota Conceito
0,0 - 4,9 D
5,0 - 6,9 C
7,0 - 8,9 B
9,0 - 10,0 A
 

 

Var
   // Seção de Declarações das variáveis
   matri,i:inteiro
   nota:real

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...

   escreval ("Informe o número da matrícula")
   leia(matri)
   escreval (" Informe a nota final")
   leia(nota)
   se (nota>=0.0) e (nota<=4.9) então
      escreval (" Conceito D")
   senao
      se (nota>=5.0) e (nota<=6.9) então
         escreval (" Conceito C")
      senao
         se (nota>=7.0) e (nota<=8.9) então
            escreval ("Conceito B")
         senao
            se (nota >= 9.0) e (nota <=10) então
               escreval ("Conceito A")
            senao
               se (nota > 10)  então
                  escreval ("Informe uma nota válida")

               fimse
            fimse
         fimse
      fimse
   fimse
Fimalgoritmo
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
9 horas atrás, Eli Almeidaa disse:

Fiz essa questão desse forma será que estaria correta?

 

 

De um modo geral, o código ficou muito bom... Me parece que já fez algo bem relacionado ao que foi pedido. 🙂

 

 

 

Vamos só dar uma focada nos requisitos específicos do enunciado:

9 horas atrás, Eli Almeidaa disse:

Descrição: faça um algoritmo que mostre os conceitos finais dos alunos de uma classe de 75 alunos

 

 

No teu código estaria lendo os dados para apenas um aluno. Não está tratando dessa questão dos "75 alunos". Analise essa questão e insira no algoritmo.

 

 

 

 

9 horas atrás, Eli Almeidaa disse:

os dados de cada aluno (número de matrícula e nota numérica final) serão fornecidos pelo usuário
a tabela de conceitos abaixo:
Nota Conceito
0,0 - 4,9 D
5,0 - 6,9 C
7,0 - 8,9 B
9,0 - 10,0 A

 

9 horas atrás, Eli Almeidaa disse:
   se (nota>=0.0) e (nota<=4.9) então
      escreval (" Conceito D")
   senao
      se (nota>=5.0) e (nota<=6.9) então
         escreval (" Conceito C")
      senao
         se (nota>=7.0) e (nota<=8.9) então
            escreval ("Conceito B")
         senao
            se (nota >= 9.0) e (nota <=10) então
               escreval ("Conceito A")
            senao
               se (nota > 10)  então
                  escreval ("Informe uma nota válida")
               fimse
            fimse
         fimse
      fimse
   fimse

 

É isso aí. Só removeria esse se do "maior que 10". Isso não está no enunciado. Está errado? Creio que não, mas não foi pedido!

 

Foque apenas no que foi pedido... depois pode acrescentar essas pontos extras.

 

Veja: e se nota for menor que 0? É inválido também e não está no código... e se inserir uma nota 8.95? É uma nota válida, e também não está sendo coberto pelo algoritmo! Entende? 

 

Sugiro: que não se preocupe por enquanto com esses detalhes. Foque apenas nos requisitos impostos. Depois de feito o que foi pedido, aí poderia criar uma cópia do código e implementando melhorias.

 

Resumindo:

  1. Faça o programa ler a nota dos 75 alunos. Já adianto algo como: "Vixe, ficar digitando 75 notas". Então, tudo isso faz parte do processo de aprendizagem. Como seria muito trabalho, implemente um programa de esboço que só ler 2 ou 3 notas!!! Na versão final muda para 75. (Oras! Se funcionar com 3, deve funcionar com 75. 😉)
  2. Remova essa validação de nota inválida. Pressuponha que só serão inseridos notas válidas.

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas, modifiquei será que estaria correto agora?

Var
// Seção de Declarações das variáveis 
matri,i:inteiro
   nota:real

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 

   para i de 1 ate 75 faca
   escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
   leia(matri)
    escreval (" Informe a nota final do",i: 2, "° aluno")
   leia(nota)
se (nota>=0.0) e (nota<=4.9) então
      escreval (" Conceito D")
   senao
      se (nota>=5.0) e (nota<=6.9) então
         escreval (" Conceito C")
      senao
         se (nota>=7.0) e (nota<=8.9) então
            escreval ("Conceito B")
         senao
            se (nota >= 9.0) e (nota <=10) então
               escreval ("Conceito A")

            fimse
         fimse
      fimse
   fimse
 fimPara

Fimalgoritmo

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

Em 22/03/2023 às 16:04, Eli Almeidaa disse:

@Simon Viegas, modifiquei será que estaria correto agora?

 

Show de bola! Eu gostei!

 

 

 

Alguns detalhes extras:

 

1) Indentação de código

Em 22/03/2023 às 16:04, Eli Almeidaa disse:
Var
   // Seção de Declarações das variáveis
   matri,i:inteiro
   nota:real

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...

   para i de 1 ate 75 faca
      escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
      leia(matri)
      escreval (" Informe a nota final do",i: 2, "° aluno")
      leia(nota)
      se (nota>=0.0) e (nota<=4.9) então
         escreval (" Conceito D")
      senao
         se (nota>=5.0) e (nota<=6.9) então
            escreval (" Conceito C")
         senao
            se (nota>=7.0) e (nota<=8.9) então
               escreval ("Conceito B")
            senao
               se (nota >= 9.0) e (nota <=10) então
                  escreval ("Conceito A")

               fimse
            fimse
         fimse
      fimse
   fimPara

Fimalgoritmo

 

 

Sempre mantenha seu código indentado. No VisualG, pressione Ctrl+G. Já ajuda bastante!

 

Veja a diferença:

Var
   matri,i:inteiro
   nota:real

Inicio
   para i de 1 ate 75 faca
      escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
      leia(matri)
      escreval (" Informe a nota final do",i: 2, "° aluno")
      leia(nota)
      se (nota>=0.0) e (nota<=4.9) então
         escreval (" Conceito D")
      senao
         se (nota>=5.0) e (nota<=6.9) então
            escreval (" Conceito C")
         senao
            se (nota>=7.0) e (nota<=8.9) então
               escreval ("Conceito B")
            senao
               se (nota >= 9.0) e (nota <=10) então
                  escreval ("Conceito A")
               fimse
            fimse
         fimse
      fimse
   fimPara
Fimalgoritmo

 

Removi também os comentários desnecessários e linhas em branco.

 

 

 

2) Texto truncado

Veja:

image.png

 

Como está formatando, seria mais apropriado dar um espaço após "do". E reservar o espaço que achar adequado.

 

Vide apêndice 1 para outros detalhes.

 

 

3) Texto de resultado

Como está lendo a matrícula, seria interessante exibir a matrícula no resultado. Caso contrário, fica parecendo um "leitura de dados inútil".

 

Poderia utilizar a matrícula no texto que ler a nota, ou na hora de exibir o conceito.

 

 

 

4) Ir além

Após está com uma boa versão final, poderia partir para testar as possíveis melhorias.

 

Em 21/03/2023 às 23:25, Simon Viegas disse:

e se nota for menor que 0? É inválido também e não está no código... e se inserir uma nota 8.95? É uma nota válida, e também não está sendo coberto pelo algoritmo! Entende? 

 

A sugestão seria implementar:

- uma validação para não permitir notas menores que 0 ou maior que 10; (Dica: ler o dados dentro de um laço de repetição.)

- implementar uma verificação de toda faixa de nota entre 0 e 10; (Dica: dê uma revisada sobre conjuntos abertos e conjuntos fechados. Tem a ver com utilizar ">" ou ">=", por exemplo)

 

Observe que eu já deixei separado. NÃO tente implementar as duas coisas ao mesmo tempo. Ou faz primeiro uma, ou faz a outra. Nunca* ao mesmo tempo.

 

 

 

 

5) Automatização de testes

O VisualG tem um recurso bem bacana para automatiza leitura de dados. Para números inteiros é bem simples. Basta colocar entre comandos ALEATORIO (respeitando a sintaxe). Veja o exemplo:

 

      escreva ("Informe o número da matrícula do ", i:1, "° aluno: ")
      ALEATORIO 10000
      leia(matricula)
      ALEATORIO OFF
        
      escreva ("Informe a nota final do ", i:1, "° aluno: ")
      ALEATORIO 0, 10
      leia(nota)
      ALEATORIO OFF

 

Exemplo no apêndice 2.


 

 

 

***

 

APÊNDICE

1. As variáveis numéricas no VisualG meio que são impressas com um espaço à esquerda. Exemplo:

 

image.png

 

Eu particularmente acho isso um desserviço, mas é assim. Daí, ao "formatar o número com os ':'", esse espaço extra some, ficando apenas os espaços ocupados pelo próprio número, mais os espaços que sobram do que foi reservado. No exemplo do teu código, reservou 2, logo, entre 1 e 9, vai ter um espaço à esquerda (justamente para ocupar pelo menos 2). O que tiver mais caracteres, vai ocupar normalmente (sem o espaço extra). É isso.

 

Outra detalhe importante: procurar seguir as mesmas regras do português brasileiro para as vírgulas. Veja:

 

Em vez de:

escreval ("Informe o número da matrícula do" ,i:2, "° aluno")

 

Usar algo como:

escreval ("Informe o número da matrícula do", i:2, "° aluno")

 

A vírgula é colada à esquerda, e dá um espaço à direita.

 

Já corrigindo tudo:

escrevaL("Informe o número da matrícula do ", i:1, "° aluno")

 

 

 

 

 

2. Exemplo de código

 

algoritmo "Classificação de notas"
var
   matricula, i : inteiro
   nota : real

inicio
   para i de 1 ate 75 faca
   //para i de 1 ate 5 faca
      escreva ("Informe o número da matrícula do ", i:1, "° aluno: ")
      ALEATORIO 10000
      leia(matricula)
      ALEATORIO OFF
      escreva ("Informe a nota final do ", i:1, "° aluno: ")
      ALEATORIO 0, 10
      leia(nota)
      ALEATORIO OFF
      escrevaL()
      escrevaL("Aluno   : ", matricula:1)
      escrevaL("Nota    : ", nota:1)
      escreva ("Conceito: ")
      
      se ((nota >= 0.0) e (nota <= 4.9)) então
         escreval ("D")
      senao
         se ((nota >= 5.0) e (nota <= 6.9)) então
            escreval ("C")
         senao
            se ((nota >= 7.0) e (nota <= 8.9)) então
               escreval ("B")
            senao
               se ((nota >= 9.0) e (nota <= 10)) então
                  escreval ("A")
               fimSe
            fimSe
         fimSe
      fimSe

      escrevaL("---------- ---------- ----------")
      escrevaL()
   fimPara


   escrevaL("TABELA DE CONCEITOS")
   escrevaL("0,0 - 4,9 D")
   escrevaL("5,0 - 6,9 C")
   escrevaL("7,0 - 8,9 B")
   escrevaL("9,0 - 10 A")
fimAlgoritmo

 

Nesse código inserir outros exemplos de melhorias/alterações na exibição.

 

Não inclui os itens citados no tópico 4, e deixei para você caso queria incluir a parte fracionada (aí está só gerando inteiros). Teria que pensar em alguma lógica.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas , quando executa esse código aí, ele fica rodando sozinho, não entendi. Para que serve esse aleatório?  

 

 

8 horas atrás, Simon Viegas disse:
      escreva ("Informe o número da matrícula do ", i:1, "° aluno: ")
      ALEATORIO 10000
      leia(matricula)
      ALEATORIO OFF

 

Esse aqui significa que a matrícula só pode ir até 10000?

 

 

 

 

8 horas atrás, Simon Viegas disse:
      escreva ("Informe a nota final do ", i:1, "° aluno: ")
      ALEATORIO 0, 10
      leia(nota)
      ALEATORIO OFF

 

Esse aqui significa que a nota só pode variar de 0 até 10?

 

 

 

Quando digita letras na matrícula retorna zero, será que não seria melhor colocar a matrícula como caractere? Porque aí quando digitar números ou letras, roda.

 

Coloquei dessa maneira para nota negativo e maiores que 10 :

se (nota <0) ou (nota > 10)então
         interrompa( )
      fimse


E se inserir 8.95, coloquei dessa maneira, mas não sei se está certo : 

se (nota>=7.00) e (nota<=8.99) então

 

 

Código completo:

Var
   // Seção de Declarações das variáveis
   matri,i,matrif:inteiro
   nota:real

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   para i de 1 ate 75 faca
      //para i de 1 ate 5 faca
      escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
      leia(matri)
      escreval (" Informe a nota final do"  ,i:2, "° aluno")
      leia(nota)
      se (nota <0) ou (nota > 10)então
         escreval (" Nota Inválida")
         interrompa( )
      fimse

      se (nota>=0.0) e (nota<=4.99) então
         matrif <- matri
         escreval(" Aluno :", matrif:1)
         escreval("Nota final  :", nota:1)
         escreval("Conceito D")

      senao
         se (nota>=5.00) e (nota<=6.99) então
            matrif <- matri
            escreval(" Aluno  : ", matrif:1)
            escreval(" Nota final  :", nota:1)
            escreval(" Conceito C")
         senao
            se (nota>=7.00) e (nota<=8.99) então
               matrif <- matri
               escreval("Aluno :", matrif:1)
               escreval("Nota final  :", nota:1)
               escreval("Conceito B")
            senao
               se (nota >= 9.00) e (nota <=10.00) então
                  matrif <- matri
                  escreval("Aluno  :", matrif:1)
                  escreval(" Nota final  :", nota:1)
                  escreval("Conceito A")
               fimse
            fimse
         fimse
      fimse
   fimPara
   escreval()
   escrevaL("TABELA DE CONCEITOS")
   escrevaL("0,0 - 4,9 D")
   escrevaL("5,0 - 6,9 C")
   escrevaL("7,0 - 8,9 B")
   escrevaL("9,0 - 10 A")
Fimalgoritmo
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 hora atrás, Eli Almeidaa disse:

@Simon Viegas, quando executa esse código aí, ele fica rodando sozinho, não entendi. Para que serve esse aleatório?  

 

Seria o citado na seção:

7 horas atrás, Simon Viegas disse:

5) Automatização de testes

O VisualG tem um recurso bem bacana para automatiza leitura de dados. Para números inteiros é bem simples. Basta colocar entre comandos ALEATORIO (respeitando a sintaxe). Veja o exemplo:

 

Essa é justamente a ideia.. "ler os dados sozinho". Não precisar ficar digitando valores. Vai "automatizar os testes". Sem isso, toda vez que alguém for usar o programa, teria que digitar 150 valores! Já pensou a trabalheira? 🙂

 

No mínimo, utilizaria esse recurso de gerar automaticamente nos testes quando estiver implementando.

 

Ah! Quando tiver dúvidas, tenta deduzir/inferir.. se não avançar muito no entendimento, vai no Google... Exercite a abstração... É comum termos contatos com coisas que nunca vimos ou não lembramos, mas analisando o contexto, dá para já ter uma boa ideia... 😉

 

 

 

 

1 hora atrás, Eli Almeidaa disse:

Esse aqui significa que a matrícula só pode ir até 10000?

 

Chegou perto. O comando ALEATORIO serve para gerar valores aleatórios, certo?... Esse valor seria apenas relacionado à faixa de valores que quero que sorteie e seja atribuído à variável que está sendo utilizada, ou seja, vai gerar valores entre 0 e 10000. Não é que "só pode ser", mas apenas que "quero que gere esses valores" naquela caso. São coisas distintas.

 

 

 

 

1 hora atrás, Eli Almeidaa disse:

Esse aqui significa que a nota só pode variar de 0 até 10?

 

É análogo. Gerar valores de 0 a 10... Como dá para perceber, poderia ter colocado apenas 10... já que o 0 fica implícito. Se fosse outra faixa que não comece em 0, basta especificar assim com a vírgula.

 

Tem outro comando para gerar números aleatórios: RandI(). Dá um google...

 

 

 

 

1 hora atrás, Eli Almeidaa disse:

Coloquei dessa maneira para nota negativo e maiores que 10 :

se (nota <0) ou (nota > 10)então
         interrompa( )
      fimse

 

Show! Mas nesse caso aí, ao identificar uma nota inválida, simplesmente iria finalizar o laço de repetição. A ideia aqui é que solicite uma nova nota até que esteja dentro da faixa aceita. Exemplo: digitou 11, informa que inválido e solicita outra nota... até que uma nota entre 0 e 10 (inclusos) seja informada.

 

Tem a dica lá:

8 horas atrás, Simon Viegas disse:

uma validação para não permitir notas menores que 0 ou maior que 10; (Dica: ler o dados dentro de um laço de repetição.)

 

Algo como: "repita até que o valor da nota seja maior ou igual a 0 e valor da nota menor ou igual a 10".

 

 

 

 

2 horas atrás, Eli Almeidaa disse:

E se inserir 8.95, coloquei dessa maneira, mas não sei se está certo : 

se (nota>=7.00) e (nota<=8.99) então

 

Vai funcionar também, mas não seria bem assim. Você deu uma olhada sobre o que citei?

8 horas atrás, Simon Viegas disse:

- implementar uma verificação de toda faixa de nota entre 0 e 10; (Dica: dê uma revisada sobre conjuntos abertos e conjuntos fechados. Tem a ver com utilizar ">" ou ">=", por exemplo)

 

Revisa lá o que são conjuntos abertos e conjuntos fechados. A proposta é que as verificações abranjam  TODOS os números entre 0 e 10. (Entendendo os tais conjuntos, vai entender o que estou falando.)

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
3 horas atrás, Eli Almeidaa disse:

Como ficaria esse intervalo no visualg?

 

Poderia ser algo assim:

      se (nota >= 0.0) e (nota < 5.00) então

      senao
         se (nota >= 5.00) e (nota < 7) então
         
         senao
            se (nota >= 7.00) e (nota < 9.00) então

            senao
               se (nota >= 9.00) e (nota <= 10.00) então
  
               fimse
            fimse
         fimse
      fimse
   fimPara

 

 

 

 

2 horas atrás, Eli Almeidaa disse:

@Simon Viegas ,como eu colocaria o repita aí nesse parte da "nota inválida"?


Algo como:

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      leia(matri)
        
      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         leia(nota)
      ate ((nota >= 0) E (nota <= 10))

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas, coloquei o repita, mas não sei como colocar a parte "Nota inválida" no código. Se você puder ajudar aí.
 

Var
   matri,i,matrif:inteiro
   nota:real
Inicio
   para i de 1 ate 2 faca
      //para i de 1 ate 5 faca
      escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
      repita
         escreval (" Informe a nota final do" ,i:2, "° aluno")
         leia(nota)
      ate (nota >= 0) e (nota <= 10)
      se (nota>=0.0) e (nota<=4.99) então
         matrif <- matri
         escreval("Aluno :", matrif:1)
         escreval("Nota final :", nota:1)
         escreval("Conceito D")
      senao
         se (nota>=5.00) e (nota<=6.99) então
            matrif <- matri
            escreval("Aluno :", matrif:1)
            escreval("Nota final :", nota:1)
            escreval("Conceito C")
         senao
            se (nota>=7.00) e (nota<=8.99) então
               matrif <- matri
               escreval("Aluno :", matrif:1)
               escreval("Nota final :", nota:1)
               escreval("Conceito B ")
            senao
               se (nota >= 9.00) e (nota <=10.00) então
                  matrif <- matri
                  escreval("Aluno: ", matrif:1)
                  escreval("Nota final: ", nota:1)
                  escreval("Conceito A ")
               fimse
            fimse
         fimse
      fimse
   fimPara
   escreval()
   escrevaL("TABELA DE CONCEITOS")
   escrevaL("0,0 - 4,9 D")
   escrevaL("5,0 - 6,9 C")
   escrevaL("7,0 - 8,9 B")
   escrevaL("9,0 - 10 A")

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Eli Almeidaa Na fase de testes do código em vez de fazer um programa interativo, atribua entradas aleatórias ou predefinidas. Assim não terá que ficar digitando cada valor toda vez que rodar o programa. Aí p.ex vai mostrar as notas, matrículas e conceitos de 75 alunos,

 

Algoritmo "Notas"
Var
    Conceito:   caractere
    Nota:       Real
    Aluno:      Inteiro
    Matricula:  Inteiro

Inicio
    Para Aluno <- 1 Ate 75 Faca
        Matricula <- 1000 + Aluno
        Nota <- Randi(11)

        Se(Nota <= 4.9) então
            Conceito <- "D"
        SeNao
        Se(Nota <= 6.9) então
            Conceito <- "C"
        SeNao
        Se(Nota <= 8.9) então
            Conceito <- "B"
        SeNao
            Conceito <- "A"
        FimSe
        FimSe
        FimSe

        Escreval(Aluno:2," | ",Matricula," | ",Conceito," | ",Nota:2)
    FimPara
FimAlgoritmo

 

  • Curtir 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
23 horas atrás, Eli Almeidaa disse:
...
Inicio
   para i de 1 ate 2 faca
      //para i de 1 ate 5 faca
      escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
      repita
         escreval (" Informe a nota final do" ,i:2, "° aluno")
...

 

Esqueceu de ler a matrícula. Algo como:

escreval ("Informe o número da matrícula do" ,i:2, "° aluno")
leia(matri)

 

 

 

 

 

23 horas atrás, Eli Almeidaa disse:
 se (nota>=0.0) e (nota<=4.99) então

 

Já ajuste as sentenças para englobarem todos os números reais possíveis... como citado na minha postagem anterior.

Exemplo:

Em 26/03/2023 às 00:27, Simon Viegas disse:
se (nota >= 0.0) e (nota < 5.00) então

 

Ou deixe como tá.. tanto faz.

 

 

 

 

1 hora atrás, Midori disse:

@Eli Almeidaa Na fase de testes do código em vez de fazer um programa interativo

 

@Midori, é isso. Nessa fase de implementação, é trabalhoso ficar digitando dados. Perde tempo (e paciência). Existe portanto já duas formas de melhorar isso:

 

1) utilizando o RandI(limite). Que "retorna um número inteiro gerado aleatoriamente, maior ou igual a zero e menor que limite.".

2) utilizando a estrutura ALEATORIO. Que "ativa a geração de valores aleatórios que substituem a digitação de dados. A palavra-chave on é opcional. A faixa padrão de valores gerados é de 0 a 100 inclusive. Para a geração de dados do tipo caractere, não há uma faixa pré-estabelecida: os dados gerados serão sempre strings de 5 letras maiúsculas."

 

Tomando como exemplo o trecho abaixo:

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      leia(matri)

      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         leia(nota)
      ate (nota >= 0) e (nota <= 10)

 

Ou seja: digitaria a matrícula, depois a nota, isso para cada aluno! Toda vez que for testar!... se a nota for inválida, digitaria até ser uma válida...

 

Agora imagine que quero inserir valores de 10000 a 99999 para a matrícula e notas de 0 a 10 (inteiros)

 

Primeiro um exemplo automatizando utilizado o ALEATORIO.

 

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      ALEATORIO 10000, 99999
      leia(matri)
      ALEATORIO OFF

      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         ALEATORIO 0, 10
         leia(nota)
         ALEATORIO OFF
      ate (nota >= 0) e (nota <= 10)

 

Observe que é só envolver a variável que deseja com os comandos... Para parar de usar, só deixar como comentários. Exemplo:

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      //ALEATORIO 10000, 99999
      leia(matri)
      //ALEATORIO OFF

      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         //ALEATORIO 0, 10
         leia(nota)
         //ALEATORIO OFF
      ate (nota >= 0) e (nota <= 10)

 

Entende? Após testar algumas vezes com o ALETORIO, e quiser testar sem... só desativar os comandos. Ou entregar assim, quando for testar... "Oh! desative aqui o comando aleatório que assim ele gerará os valores sozinho. Fica brabo!. Aprendi isso num fórum quando estava estudando."

 

 

Um exemplo com o RandI().

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      //leia(matri)
      matri <- RandI(1000) + 10000
      escrevaL(matri)

      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         //leia(nota)
         nota <- RandI(11)
         escrevaL(nota)
      ate (nota >= 0) e (nota <= 10)

 

É análogo. Quando quiser desativar, ajusta.

      escrevaL("Informe o número da matrícula do ", i:1, "° aluno")
      leia(matri)
      //matri <- RandI(1000) + 10000
      //escrevaL(matri)

      repita
         escrevaL("Informe a nota final do ", i:1, "° aluno")
         leia(nota)
         //nota <- RandI(10)+1
         //escrevaL(nota)
      ate (nota >= 0) e (nota <= 10)

PS: por que tem um escrevaL() a mais? Pois o RandI() serve apenas para retornar um valor... daí, pegamos esse valor e jogamos na variável... está escrevendo na tela para aparecer o que foi sorteado (e atribuído à variável).

 

 

ADENDO IMPORNTE:

Não, não nos pergunte porque "RandI(1000) + 10000" ou "RandI(11)"... apenas pare para entender... se não descobrir, tente mais um pouco! 

 

Só deixo a dica que deixei destacada: "Agora imagine que quero inserir valores de 10000 a 99999 para a matrícula e notas de 0 a 10 (inteiros)". Agora porque essa fórmula maluca? Ela está certa? Isso é com você!

 

 

ADENDO 2:

Absorva bem essa questão da automatização para os testes... vai facilitar muito a sua vida... foque nisso. Entenda bem! Já começa usar nesse e outros novos projetos!!! Ajuda muuuuito!!!

 

Aí, só depois de dominar isso, pare para você tentar descobrir um meio de 

 

23 horas atrás, Eli Almeidaa disse:

colocar a parte "Nota inválida"

 

Com a automatização, meio que vai focar só nisso... (vai ajustando os código e testando, ajustando e testando...). Pense numa lógica... vale também pesquisar no fórum e/ou google. Mas sempre procurando entender qual a linha de raciocínio, que aí melhora ou ajusta para o teu contexto.

  • Curtir 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 25/03/2023 às 11:31, Simon Viegas disse:

APÊNDICE

1. As variáveis numéricas no VisualG meio que são impressas com um espaço à esquerda. Exemplo:

 

image.png

 

Eu particularmente acho isso um desserviço, mas é assim. Daí, ao "formatar o número com os ':'", esse espaço extra some, ficando apenas os espaços ocupados pelo próprio número, mais os espaços que sobram do que foi reservado. No exemplo do teu código, reservou 2, logo, entre 1 e 9, vai ter um espaço à esquerda (justamente para ocupar pelo menos 2). O que tiver mais caracteres, vai ocupar normalmente (sem o espaço extra). É isso.

@Simon Viegas, nesse caso,então, já que as variáveis numéricas no VisualG meio que são impressas com um espaço à esquerda.

1º)Então, não precisa dá espaço após "ano" na frase " Estamos no ano", porque as variáveis númericas já vão dá esse espaço?

2º)Utilizar esse ":" é obrigatório?

 

Porque notei que se não utilizar o ":" e não dê espaço após "ano", os espaços

para os números ficam bons. Mas não sei , se puder tirar essas dúvidas aí

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!