Daniel C. Cunha

Respostas no Fórum

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • em resposta a: Problema no portugol stuidio M03A15 exercício 053 #142231
    Daniel C. Cunha
    Participante

    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.

    🙂

    em resposta a: Problema no portugol stuidio M03A15 exercício 053 #142230
    Daniel C. Cunha
    Participante

    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 = 0

    Você 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 reservadas

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

    em resposta a: Exercicio – 54 estrutura de repetição validadando dados. #139388
    Daniel C. Cunha
    Participante

    Saudaçõ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…

    em resposta a: Exercicio – 54 estrutura de repetição validadando dados. #139299
    Daniel C. Cunha
    Participante

    Saudaçõ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
    		}
    		
    	}
    }
    em resposta a: Meu programa não está aceitando #126072
    Daniel C. Cunha
    Participante

    Bom 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 variavelNome

    Lembrando 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, variavelTexto

    E em outras vezes pode dar errado por não ter colocado algum valor nelas….tipo:

    tipo nome
    cadeia variavelNome = “Daniel”
    caracter = ‘D’
    inteiro = 3

    Espero ter ajudado 🙂

    em resposta a: M3A053 – Dúvidas sobre erro: “Expressões fora do escopo” #126030
    Daniel C. Cunha
    Participante

    Boa 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!

    em resposta a: Dúvida exer 004 #120360
    Daniel C. Cunha
    Participante

    **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 divR

    escreva(“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 % n2

    divR = 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”)

    }
    }

    em resposta a: Dúvida exer 004 #120357
    Daniel C. Cunha
    Participante

    **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, resto

    escreva(“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

    divR = n1 / n2
    resto = 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”)

    }
    }

    **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, n2

    escreva(“Digite um valor: “)
    leia(n1)
    escreva(“Digite outro valor: “)
    leia(n2)
    divR = n1 / n2
    resto = n1 % n2

    escreva(“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) % n2

    2- declarei o tipo após a entrada de dados, já atribuindo os valores…
    real resto = n1 % n2

    Nã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!

Visualizando 8 posts - 1 até 8 (de 8 do total)