Home › Fóruns › Programação Básica › Problema no portugol stuidio M03A15 exercício 053
- Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 2 meses, 3 semanas atrás por Tutora Jessica.
-
AutorPosts
-
-
25 de agosto de 2024 às 16:02 #142218Gabriel Moraes DiasParticipante
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.”)
}
} -
25 de agosto de 2024 às 16:07 #142219Gabriel Moraes DiasParticipante
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.”)
}
} -
25 de agosto de 2024 às 19:41 #142230Daniel C. CunhaParticipante
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 = 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.
-
25 de agosto de 2024 às 19:50 #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.
🙂
-
26 de agosto de 2024 às 10:12 #142253Tutora JessicaModerador
Muito obrigada pela explicação Daniel 🖖🏼
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.