Ir ao conteúdo
  • Cadastre-se

VisualG Como resolver essas atividades na linguagem portugol?


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Alguém conseguiria resolver essas atividades passando para a linguagem portugol?

 

1 questão)

Escrever um algoritmo que leia uma nota e mostre o conceito equivalente. 

Suponha a seguinte tabela de conversão 

 

Nota          Conceito 

7 a 10                 A 

4 a 6                   B 

1 a 3                   C 

 0                 REPROVADO 

 

2 questão) 

Elabore um algoritmo que dada a idade de um nadador classifica-o  

EM UMA DAS SEGUINTES CATEGORIAS : 

 

INFANTIL A= 5-7 ANOS 

INFANTIL B= 8-10 ANOS 

JUVENIL A = 11-13 ANOS 

JUVENIL B = 14-17 ANOS 

ADULTO = MAIORES DE 18 ANOS 

 

3 questão) 

Elabore um algoritmo que recebe o nome a idade ,sexo,altura peso. Após 

Cadastrar as informações deverá ser exibido um menu para o usuário escolher qual equipe ele será adicionado, seguindo a ordem: 

Para ser da equipe 1: Sexo masculino, altura até 1,70 e até 80kg 

Para ser ser da equipe 2 :Sexo feminino, altura até 1,65 e até 70kg 

Para ser da equipe 3: Sexo masculino, altura até 1,70 e até 93kg ou: Sexo feminino, altura até 1,65 e até 70kg 

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

@Eli Almeidaa     Olá ,   melhor postar um código e dúvida de cada vez  ,  e nesse primeiro ,   no portugol você pega os dados do teclado usando o comando "leia" ,  faça as comparações usando o comando "se" , de acordo com os requisitos A B C etc , , , !     ,       faça um código sobre esse exercício e poste ele aqui , para vermos como está e em que podemos ajudar  .

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

@devair1010, fiz esse código para a primeira atividade, mas está dando erro. Não sei o motivo e nem se estar certo.

 

Var
   Nota1 : real
Inicio
   Escreval (" Informe a nota")
   leia(nota1)
   se (nota1> =7 ou <=10)então
      escreval (" Conceito A")
   senao
      se (nota1 >= 4 ou <= 6) então
         escreval (" Conceito B")
      senao
         se (n1 >= 1 ou <=3) então
            escreval ("Conceito C")
         senao
            se (n1=0) então escreval ("Reprovado")
            fimse
         fimse
      fimse
   fimse
Fimalgoritmo

 

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

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

@devair1010, fiz esse código para a primeira atividade, mas está dando erro. Não sei o motivo e nem se estar certo.

 

Seria bom especificar qual o erro, mas vamos lá...

 

Uma dica inicial é: não tente fazer todo o programa de uma vez. Vá fazendo por partes e testando.

Vou exemplificar utilizando essa técnica, veja:

 

Montando um esboço inicial:

 

algoritmo "Questão 1"
//Escrever um algoritmo que leia uma nota e mostre o conceito equivalente.
//Suponha a seguinte tabela de conversão

//Nota          Conceito
//7 a 10            A
//4 a 6             B
//1 a 3             C
//0             REPROVADO
var
   nota : real
inicio
   escreva (" Informe a nota: ")
   leia(nota)

   escreval(" Nota informada: ", nota:1:2)
fimAlgoritmo

 

Daí testa para ver se está lendo certinho... Teste bem bobo. Só para ir pegando o ritmo mesmo.

 

Adicionando uma verificação:

var
   nota1 : real
inicio
   escreva (" Informe a nota: ")
   leia(nota1)

   se (nota1> =7 ou <=10) então
      escreval (" Conceito A")
   fimSe
fimAlgoritmo

 

Testando:

image.png

 

Oras! se está com erro nessa linha, para que raios eu continuaria implementando o resto? Entende? Tenta entender e corrige logo.

 

Tá. Aqui temos vários errinhos.

1. precisa especificar a comparação para cada valor, ou seja, seria algo como:

   se (nota1 > =7 OU nota1 <= 10) então

 

2. o operador relacionado é junto, ou seja, ">=". Sem espaço entre eles:

 se (nota1 >=7 OU nota1 <= 10) então

 

3. por fim, precisa explicitar a separação das sentenças, no caso, utilizando os "():

se ((nota1 >= 7) OU (nota1 <= 10)) então

 

Adendo: esse par de parênteses externos são facultativos. Eu particularmente prefiro assim.

 

OK! A sintaxe está correta agora, vamos testar a lógica:

image.png

 

Opa! 5 não é maior que 7 e menor que 10... tem algo errado aí! 

Ah! ali não é OU, mas sim E.

se ((nota1 >= 7) E (nota1 <= 10)) então

 

Testei com alguns valores, como 5, 7, 9 e 10.. todos deram certo! Pronto. Agora implementa mais alguma coisa. 

 

Segue por enquanto onde estaria:

 

algoritmo "Questão 1"
//Escrever um algoritmo que leia uma nota e mostre o conceito equivalente.
//Suponha a seguinte tabela de conversão

//Nota          Conceito
//7 a 10            A
//4 a 6             B
//1 a 3             C
//0             REPROVADO
var
   nota : real
inicio
   escreva (" Informe a nota: ")
   leia(nota)

   se (nota >= 7) E (nota <= 10) então
      escreval (" Conceito A")
   senao
      se ((nota >= 4) E (nota <= 6)) então
         escreval (" Conceito B")
      fimSe
   fimSe
fimAlgoritmo

 

Testei com outros diversos valores e passaram de boa... parece tudo certo.

 

Mas ué!? Resolvi testar com 6.5 e não funcionou? Essa nota existe! Deveria dar "Conceito B", mas não deu!

 

Consegue identificar o que está errado? Daí deixo para você parar para corrigir isso e depois implementar o "Conceito C".

 

Dica: você precisa incluir os valores entre 6 e 7, correto?. Logo, poderia utilizar "nota < 7", em vez de "nota <= 6". Percebe a diferença?

 

No aguardo.

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

@Eli Almeidaa     muito bem explicado por @Simon Viegas   ,    e  outra maneira de fazer sem usar esse "se" com duas opções , seria descartar logo no início onde pega os dados , os valores fora de faixa ,  e assim as comparações ficariam com apenas uma opção mesmo  ,  e ir descartando do valor maior para o menor , sendo que se não for maior que 1 então só poderá ser mesmo o zero .

repita
  escreva(" Informe a nota de 0 até 10 ")
  leia( nota1 )
ate ( nota1 >= 0 ) e ( nota1 <= 10 )  // limita, nesse intervalo, o valor de notas

 

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

@Simon Viegas, por que você colocou mais de uma vez o parêntese?

 

Fiz assim o restante:

Se (Nota1 >= 4) e (Nota1<= 6) então
   escreval (" Conceito B")
senao
   se (Nota1 >= 1) e (Nota1 <=3) então
      escreval ("Conceito C")
   senao
      se (Nota1=0) então
         escreval ("Reprovado")
      Fimse
   Fimse
Fimse

 

 

@Simon Viegas, já consegui resolver a primeira e segunda questão só falta a terceira. Será que você saberia como fazer essa aqui? Comecei fazendo, mas não entendi direito o que a questão. Pede e como escrever na linguagem portugol. Coloquei uma imagem abaixo da questão

 

Var
   Nome,sexo:caractere
   Altura,peso:real
   idade:inteiro

Inicio
   Escreval (" Informe o seu nome")
   Leia (nome)
   Escreval ("informe o seu sexo")
   Leia (sexo)
   Escreval (" Informe a sua idade")
   Leia (idade)
   Escreval (" Informe o seu peso")
   Leia (peso)
   Escreval (" Informe a sua altura")
   Leia(altura)

 

IMG-20230215-WA0001 (1).jpg

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

@Eli Almeidaa    criar um menu seria colocar algumas opções a ser escolhida  e ler a resposta digitada ,  poderia ser alguma coisa parecida com esse código aqui :

Algoritmo "eQuipes"
//     3 questão)
// Elabore um algoritmo que recebe o nome a idade ,sexo,altura e peso. Após
// Cadastrar as informações deverá ser exibido um menu para o usuário escolher
// em qual equipe ele será adicionado  , seguindo a ordem:
// Para ser da equipe 1: Sexo masculino, altura até 1,70 e até 80kg
// Para ser da equipe 2: Sexo feminino , altura até 1,65 e até 70kg
// Para ser da equipe 3: Sexo masculino, altura até 1,70 e até 93kg
//                   ou: Sexo feminino , altura até 1,65 e até 70kg
Var
  // Seção de Declarações das variáveis
  nome ,resp , sexo  : caractere
  altura     , peso  : real
  idade      , opcao : inteiro
Inicio
  // Seção de Comandos, procedimento, funções, operadores, etc...
  escreva(" Informe o seu nome "  )
  leia   ( nome )
  escreva("informe o seu sexo "   )
  leia   ( sexo )
  escreva(" Informe a sua idade " )
  leia   ( idade )
  escreva(" Informe o seu peso "  )
  leia   ( peso )
  escreva(" Informe a sua altura ")
  leia   ( altura )
  escreval
  repita
    // menu
    escreval
    escreval(" 0 - sAir do pRogramas ")
    escreval(" 1 - eQuipe 1          ")
    escreval(" 2 - eQuipe 2          ")
    escreval(" 3 - eQuipe 3          ")
    escreva ("     escolha uma opção ")
    leia    ( opcao )
    escreval
    escolha opcao
      caso 0
        escreval("Saindo Do Programases . . . !")
        escreval
      caso 1
        escreval("está no escolha/caso 1")
        escreval("Nome da pessoe --: " , nome)
      caso 2
        escreval("está no escolha/caso 2")
      caso 3
        escreval("está no escolha/caso 3")
      outrocaso
        escreval("diGitou opção inválida . . . !")
    fimescolha
    se opcao <> 0 então
      escreva("Tecle Enter !")
      leia( resp )
    fimse
  ate opcao = 0
Fimalgoritmo

e se você usar o botão code "<>"  que está desenhado lá na barra de ferramentas da janela de postar  , seu código fica bem coloridinho e fácil de copiar para testar ,  e poste todo o código desde o começo "algoritmo" até o fim "fimalgoritmo"  ,    e coloque um nome em seu algorítmo , assim na hora de salvar será bem rápido   .

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

  • Membro VIP

Adendo inicial: desculpe se estou prolixo de mais, mas a ideia é tentar analisar ponto a ponto alguns detalhes que acho importante.

 

Vou dividir em partes.

 

PARTE 1
 

14 horas atrás, Eli Almeidaa disse:

@Simon Viegas, por que você colocou mais de uma vez o parêntese?


Fiz assim o restante:

Se (Nota1 >= 4) e (Nota1<= 6) então

 

Já tá explicado no "adendo" lá na postagem. Veja:

 

17 horas atrás, Simon Viegas disse:

3. por fim, precisa explicitar a separação das sentenças, no caso, utilizando os "():

se ((nota1 >= 7) OU (nota1 <= 10)) então

 

Adendo: esse par de parênteses externos são facultativos. Eu particularmente prefiro assim.

 

No VisualG você utiliza se quiser. Em alguns linguagens famosas, são obrigatórias (faz parte da sintaxe do comando). Eu prefiro utilizar (manter o padrão mais comum, já que "no dia a dia de programador" meio que vai precisar usar mesmo)... já, por exemplo, o @devair1010, prefere sem no VisualG, assim como você fez.. 🙂. Seria uma questão de gosto. Ambas as formas eu entendo que estão perfeitamente corretas! Tanto faz!

 

Só para deixar claro:


Forma que você utilizou:

se x > 10 então
   escrevaL("X é maior que 10")
fimSe

 

Forma que eu gosto e sugiro:

se (x > 10) então
   escrevaL("X é maior que 10")
fimSe

 

Qual o certo? Ambas! Tanto faz.

 

 

 

PARTE 2

 

14 horas atrás, Eli Almeidaa disse:

@Simon Viegas, já consegui resolver a primeira [...]

 

Que massa! Mas será que já está toda certinha? Não estou dizendo que precisa ficar perfeita, mas você tratou dessa questão que cito abaixo?

 

17 horas atrás, Simon Viegas disse:

Mas ué!? Resolvi testar com 6.5 e não funcionou? Essa nota existe! Deveria dar "Conceito B", mas não deu!

 

Consegue identificar o que está errado? Daí deixo para você parar para corrigir isso e depois implementar o "Conceito C".

 

Então, você pulou isso! (Ou me ignorou). 😄

 

Segue trecho do teu código atual:

14 horas atrás, Eli Almeidaa disse:
Se (Nota1 >= 4) e (Nota1<= 6) então
   escreval (" Conceito B")
senao
   se (Nota1 >= 1) e (Nota1 <=3) então
      escreval ("Conceito C")
   senao

 

Experimente digitar uma nota 6.7 e uma nota 3.2 e veja o que acontece. Não vai (não deve) exibir nada!, pois não estão em faixa alguma! Está certo o comportamento que ocorre?

 

Resumindo: corrija isso. Inclusive eu também já deu uma solução. Está lá na minha resposta anterior.

 

17 horas atrás, Simon Viegas disse:

Dica: você precisa incluir os valores entre 6 e 7, correto?. Logo, poderia utilizar "nota < 7", em vez de "nota <= 6". Percebe a diferença?

 

Aqui entra naquela questão lá de conjuntos. De intervalos abertos e intervalos fechados.

 

Veja:

17 horas atrás, Simon Viegas disse:
se ((nota1 >= 7) OU (nota1 <= 10)) então

 

Aqui está pegando "até o 7, com este incluso". Daí é fechado.

No próximo, precisaria então pegar no 7 para baixo, ou seja, aberto. Ao juntar uma com a outra, toda a faixa (entre o 6 e 7, inclusos) estará inclusa.

 

 

PARTE 3

 

14 horas atrás, Eli Almeidaa disse:

Comecei fazendo, mas não entendi direito o que a questão.

 

Perfeito! O que eu gosto de comentar sempre que eu posso: foque no problema, e não na solução. Veja: como alguém vai resolver um problema se sequer sabe do que se trata? Parece óbvio, mas é o que mais ocorre. Então você estaria certíssimo. Precisa entender o que ele quer.

 

Se não entendeu, pare para entender. Ah! Sim, também pode ser interessante tentar fazer alguma coisa... como começar a ler as variáveis, como você fez... mas com a ideia de tentar abrir a mente... se vem algo na cabeça que ajude a enter o que o enunciado quer.

 

Vamos lá. Segue o enunciado:

 

20 horas atrás, Eli Almeidaa disse:

Elabore um algoritmo que recebe o nome a idade ,sexo, altura e peso. Após cadastrar as informações deverá ser exibido um menu para o usuário escolher qual equipe ele será adicionado, seguindo a ordem: 

Para ser da equipe 1: Sexo masculino, altura até 1,70 e até 80kg 

Para ser da equipe 2 :Sexo feminino, altura até 1,65 e até 70kg 

Para ser da equipe 3: Sexo masculino, altura até 1,70 e até 93kg ou: Sexo feminino, altura até 1,65 e até 70kg 

 

 

Oras! Se os 2 exercícios anteriores foram sobre "estruturas de seleção para definir algo", por que essa questão seria tão diferente (com menu, possível dupla seleção...)?  De cara já me parece incoerente!!! Mas ok!

 

Perceba:

Questão 1: ler um dado e categoriza esse dado ("diz qual o conceito").

Questão 2: ler um dado e categoriza esse dado ("diz qual classe de nadador")

Questão 3: ler diversos dados e depois ler qual a categoria ("qual equipe vai/pode entrar"). Ué!? Aqui ele quer que o próprio usuário defina? Além disso, essas definições têm inclusas algumas regras! Tá confuso para mim!. Mas vamos lá:

 

Como acho que poderia fazer:

 

Acho que poderia entrar nesse mundo do menu... segue opções que imaginei:

 

OPÇÃO 1

Após ter os dados, exibir um menu com apenas as opções que o usuário pode entrar. Por exemplo: se informar "masculino", "altura de 1.60" e "peso de 70 kg", disponibilizaria as opções 1 e 3 (pois ambas serviriam para esse cara). Aí, se tiver mais de uma opção, o usuário selecionaria. Caso tenha só um, ele já entraria na equipe correspondente. Tipo: se o cara informasse 90 kg, ele só poderia entrar na equipe 3. Talvez esse seja uma pouquinho mais complexo. Mas acho que dá para fazer de boa.

 

 

OPÇÃO 2 

Após ter os dados, exibir um menu para que o usuário selecionar qual equipe entrar, mas daí, verifica se ele tem os critérios necessários ou não.

 

ADENDO: observa que AMBAS AS OPÇÕES estão fugindo do escopo, ou seja, entraria na "liberdade poética". Uma outra boa opção seria "perguntar para quem está propondo o enunciado o que raios ele quer".

- Entenda o problema;

- Procure seguir o enunciado. É preciso fazer o que se pede. Se você for num restaurante e pedir um hambúrguer, seria coerente o garçom entregar um cachorro quente? 😅

 

 

 

 

 

Segue um esboço para exemplificar a segunda opção: (peguei emprestado a base do @devair1010)

 

algoritmo "Definição de equipes por critérios pré-definidos"
// 3 questão)
// Elabore um algoritmo que receba o nome e a idade. Sexo, altura e peso. Após
// cadastrar as informações deverá ser exibido um menu para o usuário escolher
// em qual equipe ele será adicionado, seguindo a ordem:
// Para ser da equipe 1: Sexo masculino, altura até 1,70 e até 80kg
// Para ser da equipe 2: Sexo feminino , altura até 1,65 e até 70kg
// Para ser da equipe 3: Sexo masculino, altura até 1,70 e até 93kg
//                   ou: Sexo feminino , altura até 1,65 e até 70kg
var
   nome, sexo : caractere
   idade, opcao : inteiro
   altura, peso : real

inicio
   escreva (" Informe o seu nome: ")
   leia(nome)
   escreva (" Informe a sua idade: ")
   leia(idade)
   escreva (" Informe o seu sexo: ")
   leia(sexo)
   escreva (" Informe a sua altura: ")
   leia(altura)
   escreva (" Informe o seu peso: ")
   leia(peso)
   escrevaL()
   escrevaL("Escolha a equipe que deseja entrar")
   escrevaL(" Equipe 1: Sexo masculino, altura até 1,70 e até 80kg")
   escrevaL(" Equipe 2: Sexo feminino , altura até 1,65 e até 70kg")
   escrevaL(" Equipe 3: Sexo masculino, altura até 1,70 e até 93kg")
   escrevaL("       ou: Sexo feminino , altura até 1,65 e até 70kg")
   escreva ("==> ")
   leia(opcao)
   escrevaL()

   se ((opcao = 1) E (sexo = "m") E (altura <= 1.70) E (peso <= 80)) então
      escrevaL("Usuário ", nome, " adicionado à equipe 1 com sucesso")
   senao
      escrevaL(nome, ", você não está dentro dos critérios para entrar na equipe 1")
   fimSe
   
   
   
   
fimAlgoritmo

 

 

 

Com dados propositalmente inválidos para equipe 1:

 

image.png

 

Inválido para o sexo. (obs.: TODOS os critérios precisam ser válidos. Se um não for, já não deve adicionar à equipe.)

 

 

 

Com dados propositalmente válidos para equipe 1:

image.png

 

Está dentro de todos os critérios.

 

 

Por aí vai.

 

 

RESUMINDO:

Por favor, poste código completo da questão 1 para revisarmos. 

Depois, tente fazer o exercício 3 e poste o código completo e onde eventualmente está com dúvidas.

 

No aguardo.

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

@Simon Viegas, tentei fazer esse aqui, mas está dando erro. Aparece várias vezes as mensagens das outras condicionais no final. Postei uma foto abaixo  mostrando. Não sei se o erro está na estrutura das condicionais, se você souber qual é o erro, responde aí. O código é esse aqui da questão 3 :

 

Var
   Nome,sexo:caractere
   Altura,peso:real
   idade,opcao:inteiro

Inicio
   Escreval (" Informe o seu nome:")
   Leia (nome)
   Escreval ("informe o seu sexo:")
   Leia (sexo)
   Escreval (" Informe a sua idade:")
   Leia (idade)
   Escreval (" Informe o seu peso:")
   Leia (peso)
   Escreval (" Informe a sua altura:")
   Leia(altura)
   Escreval ()
   Escreval (" Menu")
   Escreval (" Equipe 1 : Sexo masculino,altura até 1,70 e até 83kg")
   Escreval (" Equipe 2 : Sexo feminino, altura até 1,65 e até 70kg")
   Escreval ("Equipe 3: Sexo masculino, altura até 1,70 e até 93kg ou: Sexo feminino,altura até 1,65 e até 70kg")
   escreval()
   Escreval (" Informe a equipe que deseja entrar")
   Escreval()
   leia (opcao)
   se ((opcao = 1) e (sexo = "m") e (altura <= 1.70) e (peso <= 83)) então
      escrevaL(" adicionado à equipe 1 com sucesso")
   senao
      escrevaL(" você não está dentro dos critérios para entrar na equipe 1")
      se ((opcao = 2) e (sexo = "f") e (altura <= 1.65) e (peso <= 70)) então
         escrevaL(" adicionado à equipe 2 com sucesso")
      senao
         escrevaL(" você não está dentro dos critérios para entrar na equipe 2")
         se ((opcao = 3) e (sexo = "m") e (altura <= 1.70) e (peso <= 93)) então
            escrevaL(" adicionado à equipe 1 com sucesso")
         senao
            escrevaL(" você não está dentro dos critérios para entrar na equipe 3")
            se ((opcao = 3) e (sexo = "f") e (altura <= 1.65) e (peso <= 70)) então
               escrevaL(" adicionado à equipe 3 com sucesso")
            senao
               escrevaL(" você não está dentro dos critérios para entrar na equipe 3")
            Fimse
         Fimse
      Fimse
   Fimse
Fimalgoritmo

 

 

 

Captura de tela 2023-02-19 203348.jpg

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

@Eli Almeidaa    oi, boa noite ,   no seu código você colocou para compara a variável "sexo" com apenas uma letra "m"  ou "f" e na hora de cadastrar você usou a palavra inteira "masculino" e "feminino" .

Escreval ("informe o seu sexo:")
   Leia (sexo)  // aqui na foto estA assim "masculino"
// e na hora de comparar , estA assim  :
se (opcao = 1) e (sexo = "m") e (altura <= 1.70) e (peso <= 83) então
      escrevaL(" adicionado à equipe 1 com sucesso")
  
  
e então você poderia informar melhor o que digitar na entrada
Escreval ("informe o seu sexo M / F : ")
   Leia (sexo)  

 

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

@devair1010, corrigir isso aí que você falou. Mas por exemplo, se a pessoa possui os critérios para entrar na equipe 2, é normal aparece a mensagem dizendo " você não está dentro dos critérios para entrar na equipe 1", antes de aparecer "adicionado à equipe 2 com sucesso"? Anexei uma captura de tela abaixo para demonstrar e aqui está o código após a correção:

 

Var
   Nome,sexo:caractere
   Altura,peso:real
   idade,opcao:inteiro

Inicio
   Escreval (" Informe o seu nome:")
   Leia (nome)
   Escreval ("informe o seu sexo:")
   Leia (sexo)
   Escreval (" Informe a sua idade:")
   Leia (idade)
   Escreval (" Informe o seu peso:")
   Leia (peso)
   Escreval (" Informe a sua altura:")
   Leia(altura)
   Escreval ()
   Escreval (" Menu")
   Escreval (" Equipe 1 : Sexo masculino,altura até 1,70 e até 83kg")
   Escreval (" Equipe 2 : Sexo feminino, altura até 1,65 e até 70kg")
   Escreval ("Equipe 3: Sexo masculino, altura até 1,70 e até 93kg ou: Sexo feminino,altura até 1,65 e até 70kg")
   escreval()
   Escreval (" Informe a equipe que deseja entrar")
   Escreval()
   leia (opcao)
   se ((opcao = 1) e (sexo = "Masculino") e (altura <= 1.70) e (peso <= 83)) então
      escrevaL(" adicionado à equipe 1 com sucesso")
   senao
      escrevaL(" você não está dentro dos critérios para entrar na equipe 1")
      se ((opcao = 2) e (sexo = "Feminino") e (altura <= 1.65) e (peso <= 70)) então
         escrevaL(" adicionado à equipe 2 com sucesso")
      senao
         escrevaL(" você não está dentro dos critérios para entrar na equipe 2")
         se ((opcao = 3) e (sexo = "Masculino") e (altura <= 1.70) e (peso <= 93)) então
            escrevaL(" adicionado à equipe 1 com sucesso")
         senao
            escrevaL(" você não está dentro dos critérios para entrar na equipe 3")
            se ((opcao = 3) e (sexo = "Feminino") e (altura <= 1.65) e (peso <= 70)) então
               escrevaL(" adicionado à equipe 3 com sucesso")
            senao
               escrevaL(" você não está dentro dos critérios para entrar na equipe 3")
            Fimse
         Fimse
      Fimse
   Fimse
Fimalgoritmo

 

Captura de tela 2023-02-20 101857.jpg

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

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

@devair1010, corrigir isso aí que você falou. Mas por exemplo, se a pessoa possui os critérios para entrar na equipe 2, é normal aparece a mensagem dizendo " você não está dentro dos critérios para entrar na equipe 1", antes de aparecer "adicionado à equipe 2 com sucesso"? Anexei uma captura de tela abaixo para demonstrar e aqui está o código após a correção:

 

Nesse caso, não. O problema estaria na base do esboço que postei que foi "idealizado" apenas para uma opção:
 

Em 15/02/2023 às 15:29, Simon Viegas disse:
   se ((opcao = 1) E (sexo = "m") E (altura <= 1.70) E (peso <= 80)) então
      escrevaL("Usuário ", nome, " adicionado à equipe 1 com sucesso")
   senao
      escrevaL(nome, ", você não está dentro dos critérios para entrar na equipe 1")
   fimSe

 

Ou seja: eu não tinha já pensado em como ficaria ao adicionar opção 2. Isso não foi especificamente proposital, mas é didático. Entra nessa questão que citei:

 

Em 14/02/2023 às 21:40, Simon Viegas disse:

Uma dica inicial é: não tente fazer todo o programa de uma vez. Vá fazendo por partes e testando.

 

Tipo: com uma opção estava ok, mas ao adicionar a segunda opção, essa mensagem ficou estranha. Parei para entender o problema que tá dando agora e entendi que essa mensagem só deveria aparecer se fosse pressionado a opção 1. Daí tenta achar uma medida de contorno, que poderia ser simplesmente remover essa mensagem, ou deixar ela apenas para quando selecionar a opção 1. Exemplo:

 

   se (opcao = 1) então
      se ((copia(sexo, 1, 1) = "m") e (altura <= 1.70) e (peso <= 83)) então
         escrevaL(" Adicionado à equipe 1 com sucesso")
      senao
         escrevaL(" Você não está dentro dos critérios para entrar na equipe 1")
      fimSe
   senao
      se (opcao = 2) então
         se ((copia(sexo, 1, 1) = "f") e (altura <= 1.65) e (peso <= 70)) então
            escrevaL(" adicionado à equipe 2 com sucesso")
         senao
            escrevaL(" Você não está dentro dos critérios para entrar na equipe 2")
         fimSe
      fimSe
   fimSe

 

image.png

 

 

ADENDO 1: sempre mantenha o código identado. Nesse código acima já temos uma certa alta complexidade, onde temos um se/senao dentro de cada opção outro se/senao. Tente entender esse mesmo código sem identar:

 

se (opcao = 1) então
se ((copia(sexo, 1, 1) = "m") e (altura <= 1.70) e (peso <= 83)) então
escrevaL(" Adicionado à equipe 1 com sucesso")
senao
escrevaL(" Você não está dentro dos critérios para entrar na equipe 1")
fimSe
senao
se (opcao = 2) então
se ((copia(sexo, 1, 1 = "f") e (altura <= 1.65) e (peso <= 70)) então
escrevaL(" adicionado à equipe 2 com sucesso")
senao
escrevaL(" Você não está dentro dos critérios para entrar na equipe 2")
fimSe
fimSe
fimSe

 

 

ADENDO 2: para opção 3, só seguir a mesma linha de raciocínio:

   se (opcao = 1) então

   senao
      se (opcao = 2) então

      senao
         se (opcao = 3) então
         	
         fimSe
      fimSe
   fimSe

 

 

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

@Simon Viegas , agora foi, obrigada. Você sabe o que significa isso e para que serve "((copia(sexo, 1, 1)"? Porque não consegui

entender , sou iniciante ainda. Teve outra coisa que fiquei em dúvidas nesse código você colocou o "fimse" no meio do código e o restante no final, é preciso seguir essa regra? 

 

 

se (opcao = 1) então

se ((copia(sexo, 1, 1) = "m") e (altura <= 1.70) e (peso <= 83)) então

escrevaL(" Adicionado à equipe 1 com sucesso")

senao

escrevaL(" Você não está dentro dos critérios para entrar na equipe 1")

fimSe

senao

se (opcao = 2) então se ((copia(sexo, 1, 1 = "f") e (altura <= 1.65) e (peso <= 70)) então

escrevaL(" adicionado à equipe 2 com sucesso") senao escrevaL(" Você não está dentro dos critérios para entrar na equipe 2")

fimSe

fimSe

fimSe

 

 

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

@Eli Almeidaa     

se( copia(sexo, 1, 1 ) = "m" então
  escreval("A primeira Letra da variAvel sexo é " , copia(sexo, 1, 1) ) // a funCAo cOpia , copia a qtd de letras
fimse                                                                   // da variAvel comeCando da posiCAo indicada 
                                                                        // a variAvel Eh sexo
                                                                        // o primeiro nUmero Eh a qtd de letras que vai copiar
                                                                        // o segundo nUmero Eh a posiCAo onde comeCar a copiar

essa é uma função  do visualG 3.0 ,  e ela serve para pegar uma ou mais letras de uma variável do tipo caractere e usar do modo que quiser , e aqui ela servirá para comparar apenas a primeira letra do que for inserido nessa variável "sexo" , e assim se o usuário digitar a palavra inteira , ou apenas a letra inicial , não vai dar erro , pois o comando "se" vai fazer a comparação com a primeira letra e ignorar o restante que tenha sido digitado . 

 

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

  • Membro VIP
  • Solução
Em 21/02/2023 às 13:05, Eli Almeidaa disse:

@Simon Viegas , agora foi, obrigada. Você sabe o que significa isso e para que serve "((copia(sexo, 1, 1)"? Porque não consegui

entender , sou iniciante ainda

 

Uma sugestão inicial é pesquisar. Exempo: https://www.google.com/search?q=copia+visualg

 

 

Em 21/02/2023 às 13:05, Eli Almeidaa disse:

Teve outra coisa que fiquei em dúvidas nesse código você colocou o "fimse" no meio do código e o restante no final, é preciso seguir essa regra? 

 

Sim. É preciso seguir as regras. No caso, seria seguir a sintaxe da linguagem.

 

Cada se tem um fimSe correspondente. A posição dos fimSe ficará de acordo também com a lógica do código. Veja:

 

se (opcao = 1) então  //[1]
   se ((copia(sexo, 1, 1) = "m") e (altura <= 1.70) e (peso <= 83)) então //[2]
      escrevaL(" Adicionado à equipe 1 com sucesso")
   senao
      escrevaL(" Você não está dentro dos critérios para entrar na equipe 1")
   fimSe //final do segundo se
senao
   se (opcao = 2) então //[3]
      se ((copia(sexo, 1, 1) = "f") e (altura <= 1.65) e (peso <= 70)) então //[4]
         escrevaL(" adicionado à equipe 2 com sucesso")
      senao
         escrevaL(" Você não está dentro dos critérios para entrar na equipe 2")
      fimSe //final do quarto se
   fimSe //final do terceiro se
fimSe //final do primeiro se

 

 

Para demonstrar, isolei o primeiro se/senao.

 

se (opcao = 1) então  //[1]

senao

fimSe //final do primeiro se

 

O segundo se está dentro do primeiro se.

O terceiro se está dentro do senão desse primeiro se. E o quarto se está dentro do terceiro.

 

Tem que ir treinando. Experimente reescrever o código acima 

 

IMPORTANTE:

 

Em 20/02/2023 às 16:03, Simon Viegas disse:

ADENDO 1: sempre mantenha o código identado.

 

 

Para postar um código no Fórum, utilize o botão CODE.

image.png

 

 

 

PS: ao pressionar Ctrl+G, o VisualG tenta dar um força na identação.

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

@Simon Viegas ,@devair1010 ,

tirei aquela parte do "se ((copia(sexo, 1, 1) = "m")", 

porque sou iniciante e essa atividade acho que não precisa desses detalhes, o curso começou agora só teve ao todo 5 aulas. O 

código que editei foi esse aqui abaixo, está rodando, mas tenho dúvida se essa parte

do fimse coloquei de forma correta.Destaquei em preto abaixo. Outra coisa, gostaria de saber se é necessário utilizar a primeira letra maiúscula quando iniciar com "escreval" ,"leia","se..então",etc.

Tenho outra dúvida também, esses parênteses é obrigatório usar?

 

Var
   // Seção de Declarações das variáveis
   Nome,sexo:caractere
   Altura,peso:real
   idade,opcao:inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   Escreval (" Informe o seu nome")
   Leia (nome)
   Escreval ("informe o seu sexo")
   Leia (sexo)
   Escreval (" Informe a sua idade")
   Leia (idade)
   Escreval (" Informe o seu peso")
   Leia (peso)
   Escreval (" Informe a sua altura")
   Leia(altura)
   Escreval ()
   Escreval (" Menu")
   Escreval ("1 -  Equipe 1 : Sexo masculino,altura até 1,70 e até 83kg")
   Escreval ("2 -  Equipe 2 : Sexo feminino, altura até 1,65 e até 70kg")
   Escreval ("3 - Equipe 3: Sexo masculino, altura até 1,70 e até 93kg ou: Sexo feminino,altura até 1,65 e até 70kg")
   Escreval (" Informe a opção desejado")
   Escreval()
   leia (opcao)
   se opcao = 1 então
      se (sexo="masculino")e (altura<=1.70)e (peso<=83) então
         escreval (" Adicionado à equipe 1 com sucesso")
      senao
         escreval ("Você não está dentro dos critérios para entrar na equipe 1")
      fimse
   fimse

   se (opcao=2)então
      se (sexo="feminino")e (altura<=1.65)e (peso<=83) então
         escreval ("Adicionado à equipe 2 com sucesso")
      senao
         escreval("Você não está dentro dos critérios para entrar na equipe 2")
      fimse
   fimse

   se (opcao=3)então
      se (sexo="masculino")e (altura<=1.70)e (peso<=93)ou (sexo="feminino")e(altura<= 1.65)e(peso<= 70)então
         escreval ("Adicionado à equipe 3 com sucesso")
      senao
         escreval("Você não está dentro dos critérios para entrar na equipe 3")
      fimse
   fimse

fimalgoritmo

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

@Eli Almeidaa    sim está certo pois são dois "se" e precisa de dois "fimse"  ,  não precisa colocar nenhuma letra em maiúscula ,  só não pode colocar acentuação nem cedilha nas palavras chaves e variáveis ,  e em alguns casos precisa dos parênteses , como no comando "se" que tenha duas ou mais comparação juntas , e que precisa usar o operador lógico , e , ou ,    e  creio que seja melhor escrever da forma como lhe agrada ,  porém não precisa ter trabalho desnecessário  mudando para maiúscula e escrever uma letra e voltar para minúscula novamente ,  perdes tempo com isso ,  e nem precisa também colocar parênteses no comando "se" quando tem apenas uma comparação ,  e no escreval para pular linha também não ,  mais seria bom fazer a identação do código e organizar para tornar fácil de ler . e o comando copia seria mais apropriado nesse caso para evitar erro , pois não foi informado  o que o usuário deve digitar , assim ele pode colocar apenas uma letra ou a palavra toda , e na hora de comparar você colocou apenas uma opção que você imagina que será digitada ,  então mesmo sendo iniciante precisa usar o comando copia sim , e ele não é tão difícil de entender seu funcionamento  ,  mas seu código vai funcionar bem também sem esse comando "copia" ,  mas logo alguém vai dizer que deu um erro nessa parte .

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Em 27/02/2023 às 13:52, Eli Almeidaa disse:
Em 27/02/2023 às 13:52, Eli Almeidaa disse:

      se (sexo="masculino")e (altura<=1.70)e (peso<=93)ou (sexo="feminino")e(altura<= 1.65)e(peso<= 70)então

 

Para evitar confusão na interpretação (pois acho que o resultado ao rodar seja eventualmente o mesmo). Seria bom separar cada conjunto de possibilidade.

 

 se ((sexo="masculino") E (altura<=1.70) E (peso<=93)) OU ((sexo="feminino") E (altura<= 1.65) E (peso<= 70)) então

 

Dessa forma não "misturando" o último parâmetro do primeiro caso, com o primeiro do segundo caso.

  • Curtir 2
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!