Respostas no Fórum
-
AutorPosts
-
25 de agosto de 2024 às 19:50 em resposta a: Problema no portugol stuidio M03A15 exercício 053 #142231Daniel C. CunhaParticipante
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.
🙂
25 de agosto de 2024 às 19:41 em resposta a: Problema no portugol stuidio M03A15 exercício 053 #142230Daniel C. CunhaParticipanteCaro 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 = 0Você 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 reservadascoisas 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.
1 de julho de 2024 às 17:01 em resposta a: Exercicio – 54 estrutura de repetição validadando dados. #139388Daniel C. CunhaParticipanteSaudações Jéssica, tudo joia?
Agradeço a atenção!
A minha dúvida em não era sobre as estruturas condicionais em si…
Mas sobre condições nos parênteses que na teoria deveriam ser equivalentes…
No caso:
(idade > 130 ou idade < 0)deveria ser equivalente á:
(nao(idade >= 0 ou idade <= 130))na ocasião nao consegui fazer funcionar a segunda opção…
29 de junho de 2024 às 15:14 em resposta a: Exercicio – 54 estrutura de repetição validadando dados. #139299Daniel C. CunhaParticipanteSaudações a todos! Escrevo aqui, pois assim como muita gente bati muito a cabeça!
Retornei os estudos após 6 meses… mas não estou olhando meus exercícios já feitos, em vez disso estou refazendo tudo…e só agora no exercício 54 é que a mente está começaaaaaando a clarear…Percebi que muita gente tem os mesmos erros que eu, então assim:
1 – Toda vez que tiver uma variável dentro de um loop, há obrigatoriedade de dar-lhe um valor, inicializando a variável, la onde se declara.
– Caso não tenha variáveis dentro de um looping, podem perceber que não aparece erro algum desse tipo!2 – O contador e seu inicio em 0 ou em 1 é uma verdadeira pegadiha do malandro.
No meu caso o código estava passando direto na primeira leitura então funcionava errado.
(aí depois de ler a resposta do Icaro me dei conta de que o programa nunca passava naquela condição – OBRIGADO ÍCARO!)
Temos que ter atenção de: ‘Onde coloquei meu contador’ pois as vezes colocando antes ou após os comandos, ele vai agir de forma diferente do que pensamos.
E se realmente temos a necessidade de inicia-lo com o valor 1, ou se é melhor iniciar com o próprio 0.3 – Criar erros propositais para ver como reagem as críticas dos programas também é um ótimo jeito de perceber erros futuros.
Eu ainda estou batendo cabeça com algumas coisas…
por exemplo :
No meu código, na hora de fazer a condição (se) da idade… supostamente era para ter dado certo a seguinte condição:
–> se(nao(idade >= 0 ou idade <= 130)) { –> onde coloquei a condição verdadeira (idade >= 0 ou idade <= 130) e depois fazemos o uso do NÃO por fora (nao( …Mas por nada no mundo funcionava…
Colocando já uma condição sem ter que utilizar o NAO funcionou:
–> se(idade < 0 ou idade > 130) –> Funcionou, mas supostamente era para os dois casos funcionarem iguais não ???
Em alguma parte me perdi nisso, pois outros exercícios que tenho essa primeira condição com o NAO funciona sem problemas…Alguém saberia explicar o porque do não funcionamento da condição com o ‘não’ neste caso??
Vou colocar aqui meu código mas ainda não terminei…programa {/*Programa para validar dados Aluno Daniel C. */ inclua biblioteca Tipos --> t inclua biblioteca Texto --> txt funcao inicio() { // Variáveis utilizadas dentro dos laços tem de ser inicializadas com um valor // a não ser que sejam valorizadas pelo entrada de valores do usuário logico hit = verdadeiro cadeia teclado, nome = "", nomeMvelho = "", nomeMnovo = "", nomeFvelho = "", nomeFnovo = "" inteiro idade = 0, idadeMvelho = 0,idadeMnovo = 0, idadeFvelho = 0, idadeFnovo = 0,num inteiro contaP = 0, contaM = 0, contaF = 0 caracter opcao = ' ', sexo = ' ' escreva("{ EXERCICIO 054 - Pessoas validadas }") enquanto(verdadeiro)// Loop central que abrange todo o progama { faca // Loop C/ TESTE LOGICO NO FINAL para a validacao do CONTINUA? [S/N] { se(hit == verdadeiro) { //gatilho para o programa voltar ao lugar certo apos validacao do CONTINUA? [S/N] escreva("\n-----------------------------------------") escreva("\n\t", contaP + 1,"° PESSOA ") escreva("\n-----------------------------------------\n") //================================================================================================================================ enquanto (verdadeiro) { // escreva("\n=-=-=-= COMEÇO DO ENQUANTO =-=-=-=\n")//FLAG TEMPORARIA //----------------------------VALIDACAO DO NOME---------------------------------------------------------------------------------------------------- enquanto(verdadeiro) { escreva("Nome: ") leia(nome) num = txt.numero_caracteres(nome) se(nao(num >= 3)) { escreva(" < < < ERRO [1] O NOME DE TER TRES LETRAS OU MAIS! > > > \n") } senao { contaP++ pare } } //----------------------------VALIDACAO DA IDADE---------------------------------------------------------------------------------------------------- enquanto(verdadeiro) { escreva("Idade: ") leia(teclado) se(nao(t.cadeia_e_inteiro(teclado, 10))) { escreva(" < < < ERRO [2] VALOR INVALIDO > > > \n") } senao { idade = t.cadeia_para_inteiro(teclado, 10) se(idade > 130 ou idade < 0) { escreva(" < < < ERRO [3] IDADE INVALIDA > > > \n") } senao { pare } } // pare PARANDO AQUI VOLTA-SE PRO começo enquanto FLAG - junto com a mensagem de erro!!! } //----------------------------VALIDACAO DO SEXO---------------------------------------------------------------------------------------------------- enquanto(verdadeiro) { escreva("Sexo: ") leia(sexo) se(nao(sexo == 'M' ou sexo == 'm' ou sexo == 'F' ou sexo == 'f')) { escreva(" < < < ERRO [4] OPCAO INVALIDA! > > > \n") } senao { hit = falso pare } } //pare //---------------------------SEPARAÇÃO DOS SEXOS E INICIO DAS CONTAGENS----------------------------------------------------------------------------------- se(sexo == 'M' ou sexo == 'm') { se(contaM == 0) { idadeMnovo = idade idadeMvelho = idade nomeMnovo = nome nomeMvelho = nome } senao { se(idade > idadeMvelho){ idadeMvelho = idade nomeMvelho = nome } se(idade < idadeMnovo) { idadeMnovo = idade nomeMnovo = nome } } contaM++ } senao se(sexo == 'F' ou sexo == 'f') { se(contaF == 0) { idadeFvelho = idade idadeFnovo = idade nomeFvelho = nome nomeFnovo = nome } senao { se(idade > idadeFvelho) { idadeFvelho = idade nomeFvelho = nome } se(idade < idadeFnovo) { idadeFnovo = idade nomeFnovo = nome } } contaF++ } pare //-------------------------------------------------------------------------------------------------------------------------------- } //================================================================================================================================ } senao { escreva("CONTINUA? [S/N]: ") leia(opcao) se(nao(opcao == 'S' ou opcao == 's' ou opcao == 'N' ou opcao == 'n')) { escreva(" < < < ERRO [0] OPCAO INVALIDA > > > \n") } senao { hit = verdadeiro } } } enquanto(nao(opcao == 'N' ou opcao == 'n')) escreva("\n=-=-=-=-=-=-=-=-=-= RESULTADOS =-=-=-=-=-=-=-=-=-=-=-=") escreva("\nAo todo foram cadastradas ", contaP, " pessoas.") se(contaM != 0) { escreva("\nDos ", contaM, " homens, ", nomeMvelho, " é o mais velho com ", idadeMvelho, " e ", nomeMnovo, " é o mais novo com ", idadeMnovo, ".") } se(contaF != 0) { escreva("\nDas ", contaF, " mulheres, ", nomeFvelho, " é a mais velha com ", idadeFvelho, " e ", nomeFnovo, " é a mais nova com ", idadeFnovo, ".") } pare } } }
Daniel C. CunhaParticipanteBom dia Luana,
Como vocẽ declarou essa variável em questão?
Sou iniciante também, mas eu declaro mas minhas assim:
lembrando, tem que declarar o tipo primeiro né…se for uma palavra:
tipo nome
cadeia variavelNomeLembrando que existem regras para o nome, não pode ter acentos, cedilha etc…(tem que ver a aula)
E se estiver declarando mais de uma variável, não pode esquecer de colocar uma vírgula entre elas!!!
tipo nome
cadeia variavelNome , variavelSobrenome, variavelTextoE em outras vezes pode dar errado por não ter colocado algum valor nelas….tipo:
tipo nome
cadeia variavelNome = “Daniel”
caracter = ‘D’
inteiro = 3Espero ter ajudado 🙂
3 de novembro de 2023 às 14:24 em resposta a: M3A053 – Dúvidas sobre erro: “Expressões fora do escopo” #126030Daniel C. CunhaParticipanteBoa tarde,
Quando retiro o comentário funciona sim… e enviarei o print lá no Discord…
E vou colocar minhas dúvidas num local mais refinado pela pesquisa da proxima vez….falta de hábito.
Obrigado!Daniel C. CunhaParticipante**Acabei não percebendo que deveria realizar o módulo somente como inteiro e não como Real :/
**agora não aparece mais o Portugol Estudio corrigindo 🙂
programa
{
inclua biblioteca Tipos –>t
funcao inicio()
{inteiro n1, n2, soma, sub, mult, divI, resto
real divRescreva(“Digite um valor: “)
leia(n1)
escreva(“Digite outro valor: “)
leia(n2)
escreva(“\n”)soma = n1 + n2
sub = n1 – n2
mult = n1 * n2
divI = n1 / n2
resto = n1 % n2divR = t.inteiro_para_real(n1) / n2
escreva(“SOMA = “, soma, “\n”)
escreva(“DIFERENÇA = “, sub, “\n”)
escreva(“PRODUTO = “, mult, “\n”)
escreva(“DIVISÃO INTEIRA = “, divI, “\n”)
escreva(“DIVISÃO REAL = “, divR, “\n”)
escreva(“RESTO DA DIVISÃO = “, resto, “\n”)}
}Daniel C. CunhaParticipante**Boa tarde, tudo bem ?
**No Modulo 01 Aula 08 Exercicio 04 estou com dúvidas com relação à conversão dos dados…
**Do jeito que fiz, funciona, porém com as mensagens: “O Valor da expressão à direita da atrribuição será automaticamente convertido de ‘inteiro’ para ‘real’.
**Ou seja o Portugol Estudio corrijiu…{
inclua biblioteca Tipos –>t
funcao inicio()
{inteiro n1, n2, soma, sub, mult, divI
real divR, restoescreva(“Digite um valor: “)
leia(n1)
escreva(“Digite outro valor: “)
leia(n2)
escreva(“\n”)soma = n1 + n2
sub = n1 – n2
mult = n1 * n2
divI = n1 / n2divR = n1 / n2
resto = n1 % n2escreva(“SOMA = “, soma, “\n”)
escreva(“DIFERENÇA = “, sub, “\n”)
escreva(“PRODUTO = “, mult, “\n”)
escreva(“DIVISÃO INTEIRA = “, divI, “\n”)
escreva(“DIVISÃO REAL = “, divR, “\n”)
escreva(“RESTO DA DIVISÃO = “, resto, “\n”)}
}**Tentei de algumas formas diferente, mas dá a mensagem “Tipos incompatíveis! Não é possível obter o módulo entre uma expressão do tipo ‘Real’ e uma extressão do tipo ‘Real’ ”
**Tentativa 01:
programa
{funcao inicio()
{
real resto, divR, n1, n2escreva(“Digite um valor: “)
leia(n1)
escreva(“Digite outro valor: “)
leia(n2)
divR = n1 / n2
resto = n1 % n2escreva(“DIVISÃO REAL = “, divR)
escreva(“RESTO DA DIVISÃO = “, resto)}
}**Nesse exemplo eu foco somente na Divisão Real e no Módulo… mas ja tentei de algumas formas que não deram certo…
1- incluí a biblioteca tipos convertendo n1 e n2, somente n1 ou somente n2…
divR = t.inteiro_para_real(n1) % n22- declarei o tipo após a entrada de dados, já atribuindo os valores…
real resto = n1 % n2Não estou percebendo o que estou deixando passar…sempre aparece erro de conversão de real para real…inteiro para real…não importa como eu tente…
Obrigado pela atenção! -
AutorPosts