Respostas no Fórum
-
AutorPosts
-
Tutora Mayla
MestreLeandro, nos arquivos do seu projeto o Android Studio cria um instalador .apk sempre que o aplicativo é compilado. Este arquivo normalmente fica localizado em
<Pasta do Projeto>/app/build/outputs/apk/debug/app-debug.apk
. Este arquivo pode ser carregado nos celulares Android e executado para instalar o seu aplicativo.
Vale ressaltar que o Android tem como método de distribuição oficial de aplicativos a Play Store e por motivos de segurança desencoraja a instalação de aplicativos utilizando os arquivos .apk. Também vale destacar que é necessário alterar a configuração que permite a instalação de aplicativos vindos de fontes externas nos celulares que quiser instalar seu aplicativo, já que esta configuração é desabilitada por padrão.Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.
Tutora Mayla
MestreAna Paula, seu código está certo! Parabéns!
Algumas dicas sobre ele apenas:- Nesta linha
escreva(“\n\\t\t5\t\t NATAL [-5%]”)
corrija a tabulação retirando uma das barras depois do \n - Uma dica é utilizar a função de arredondamento para configurar a quantidade de casas decimais que será exibida, neste tópico explica-se como utiliza-la Sobre usar a biblioteca Matematica
Espero ter ajudado, quaisquer dúvidas estamos a disposição.
Tutora Mayla
MestreMurillo, na leitura da matrícula, RA e matrícula do professor deveriam estar sendo passados no
scanf
o endereço das variáveis e não seus valores. Para isto basta fazerscanf(“%i”,&ptr_estudante->matricula_aluno);
e fazer de forma semelhante para os demais.
Espero ter ajudado, quaisquer dúvidas estamos a disposição.Tutora Mayla
MestreNuno, parabéns pela dedicação, seu código melhorou muito e tenho certeza de que aprendeu muito também!
Uma última consideração sobre o seu código, para converter uma operação para real é necessário converter um operando e não a operação inteira.
O certo seria assimr = t.inteiro_para_real(n1) / n2
como estava sendo feito anteriormente. Aqui o que acontece é que converte-se um operando e depois a operação é feita de forma real.
Feito desse jeitor = t.inteiro_para_real(n1 / n2)
o truncamento ainda existe, o que acontece aqui é que a operação é feita de forma inteira, e o resultado truncado é convertido para real.
E quanto as operações de soma, subtração e multiplicação, estas não precisam da funçãointeiro_para_real
pois como seu resultado sempre será inteiro e não haverá perda de valores (igual acontece na divisão se for feita de forma inteira) basta fazer a conta normalmente e atribuir a variável real que será convertida automaticamente adicionando o zero após o ponto.
É possível atribuir valores inteiros a variáveis reais, o que acontecerá é que será adicionado o.0
.
É possível atribuir valores reais a variáveis inteiras, o que acontecerá é que o valor será truncado, ou seja, perderá o que há após o ponto. Isso emitirá um aviso que pode ser ignorado se for a intenção fazer isso, e para retirar o aviso basta converter para real.Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
8 de junho de 2021 às 11:17 em resposta a: JavaScript 12 – Exercícios (parte 2) Mudança de foto via javascript #68916Tutora Mayla
MestreFelipe, a postagem do fórum é editada via html, por isso pode vir a interpretar algumas tags, como
img
por exemplo que é uma das aceitas.
Para postar seu código sem problema cole-o aqui, selecione ele e clique em “code” que assim seu código sera postado com a formatação de código.
Faça esse procedimento então e nos envie novamente o seu código por favor.Tutora Mayla
MestrePedro, a resposta do Icaro está maravilhosa, mas vou complementar de um outro jeito pra ver se te ajuda também.
Para saber quando usar qual tipo de condição é necessário analisar o problema.
- Se há uma situação onde só é necessário saber se uma variável tem ou não um valor, o caso mais simples, podemos usar aqui o
se
apenas.se(num == 1)
- Se há um caso onde além de precisar saber se uma variável tem um valor, nos precisamos tratar também o caso onde ela tem todos os valores que não são o desejado. Note aqui que o
senao
irá englobar todos os valores de idade menores que 18, ou seja, tudo que não pertencer ao blocose
. Podemos fazer algo como:se(idade >= 18) {... }senao {...}
- Se temos um caso, onde além de precisar saber se uma variável tem ou não um determinado valor, precisamos saber se ela tem outro determinado valor, podemos usar o
senao se
. Como uma variável não pode conter ambos valores ao mesmo tempo, o que estamos dizendo em forma de código aqui é “se a variável não for uma maça então ela pode ser uma banana” mas nunca ela vai ser maça e banana ao mesmo tempo.se(fruta == "maça") {... }senao se("fruta == "banana") {...}
se aqui quisermos englobar ainda os casos onde a variável é qualquer fruta que não seja maça ou banana podemos adicionar o
senao
no final.se(fruta == "maça") {... }senao se("fruta == "banana") {... }senao {...} //aqui é tudo que <strong>não </strong>é maça ou banana
O
senao se
ajuda a não fazer testes desnecessários, imagine que já foi descoberto que a fruta é uma maça, pra que eu irei testar se ela é também uma banana? Com osenao se
, ele só ira fazer o teste se é uma banana se souber que não é uma maça. E só irá para o blocosenao
se souber que não é nem maça e nem banana. - É possível utilizar uma sequencia como a abaixo :
se(num == 10){... }se(num == 20){... }se(num == 30){...}
Mas como eu expliquei anteriormente não é possível que a variável tenha 2 valores ao mesmo tempo, então nessa situação provavelmente é melhor utilizar o
senao ne
.
A condição pode ser finalizada com qualquer um dos 3 tipos, se for apenas um teste básico pode terminar apenas com o
se
, se for um teste onde se quer englobar todos os casos restantes termina-se com osenao
e se for um teste onde eu quero realiza-lo apenas se os teste anteriores derem falsos, pode-se terminar com osenao se
.
Note que só é possível começar com ose
(e pode aparecer também no meio e no final), enquanto osenao se
pode ser utilizado no meio e no final e osenao
só pode ser utilizado no final.
O código abaixo é um exemplo de código ERRADO pois todosenao se
e todosenao
tem que estar associado a umse
escrito imediatamente anteriormente:
Senao se(nome == "Mayla")
.Não mencionei aqui
se
aninhados, se houver dúvida sobre como utilizar blocos condicionais aninhados basta deixar sua dúvida aqui que lhe ajudaremos também.Espero ter ajudado, quaisquer dúvidas estamos a disposição. Bons estudos!
7 de junho de 2021 às 11:17 em resposta a: listar dados do banco de dados php mysql em colunas #68842Tutora Mayla
MestreAngelo, para criar uma coluna dentro de uma linha da tabela (criada com a tag
<tr>
) usa-se a tag<td>
como você já está fazendo no código que enviou. Para estender isso a mais colunas use mais<td>
dentro de uma mesma<tr>
. Por exemplo:<tr><td>Coluna 1<td>Coluna 2<td>Coluna 3
Espero ter ajudado, caso a dúvida persista volte a entrar em contato.
Tutora Mayla
MestreOrlando, nos envie por favor qual o erro que está acontecendo, se possível mande-nos um print.
Na aula M00A04 – Primeiro Programa o professor ensina a fazer o seu primeiro programa e como rodar seu código. E como o aluno Nuno informou, o módulo 01 é onde é possível encontrar mais exercícios iniciais e dicas sobre como utilizar o PortugolStudio.7 de junho de 2021 às 10:41 em resposta a: JavaScript 12 – Exercícios (parte 2) Mudança de foto via javascript #68840Tutora Mayla
MestreFelipe, movi a sua dúvida para este tópico que trata do mesmo assunto. Há uma resposta minha aqui explicando o porque deste problema acontecer, dê uma olhada nela e se ainda houver dúvidas volte a entrar em contato.
Antes de criar um tópico é sempre bom verificar se já existe um tópico sobre o assunto, utilize a barra de pesquisa no fórum para procurar por tópicos já existentes.
Espero ter ajudado, quaisquer dúvidas basta entrar em contato.Tutora Mayla
MestreNuno, uma dica sobre postagens de códigos no fórum é usar a configuração de texto “code”, após colar o código selecione ele todo e clique em code, assim ele ficará formatado na postagem e facilitará bastante a leitura.
Alguns pontos sobre o seu código e suas dúvidas:- Um código menor não necessariamente significa um código melhor, tenha bastante cuidado com isso. Nessa questão aconteceu do melhor código ser menor, mas nem sempre será assim.
- A inicialização das variáveis pode ser feita na declaração também, do jeito que está no seu código não está errado, só estou mostrando outra forma de fazer.
inteiro n1=0, n2=0, r=0
- No menu do programa, estão faltando os números das opções, já que a escolha da opção pode ser feita tanto por número quanto pelo símbolo da operação. Acredito que seria melhor escolher uma das duas formas, mas já que as duas estão sendo utilizadas seriam bom o menu estar com os números também, algo como:
escreva("\n 1. + Adição") escreva("\n 2. - Subtração") escreva("\n 3. * Multiplicação") escreva("\n 4./ Divisão")
- No escolha, estão sendo testados os casos 1,2,4,5 não deveriam ser 1,2,3,4?
- No caso 2, acredito que tenha sido esquecido um escreva que não pertence ali.
caso '-': caso '2': escreva("Você escolheu a operação [-]") <strong>escreva("\n\nDigite o primeiro número: ")</strong> r = (n1 - n2)
- Para que o resultado da divisão saia como real, é necessário que a variável que irá armazenar o valor seja real. Ou seja, a variável
r
tem que ser do tipo real em vez do tipo inteiro. - Quanto a escrever o tipo da operação na hora de mostrar o resultado, também pode ser feito de forma genérica utilizando o bloco escolha. Crie uma variável do tipo cadeia chamada tipoOp(por exemplo), em cada caso do escolha atribua a ela a cadeia referente ao nome da operação, e por fim escreva no final do programa
escreva("\nResultado da " + tipoOp + " = " + r)
Um exemplo de como ficaria no escolha:caso '+': caso '1': escreva("Você escolheu a operação [+]") r = (n1 + n2) tipoOp = "SOMA"
- Voltando ao ponto que mencionei sobre a escolha podendo ser feita por números ou pelo símbolo do operador, caso seja feita por números nessa linha
escreva("\nA calcular o valor de " + n1 + op + n2)
acontecerá um problema, veja qual a melhor forma de estruturar o programa para que não haja esse pequeno problema.
Parabéns pela dedicação! Espero ter ajudado, quaisquer dúvidas basta entrar em contato.
4 de junho de 2021 às 13:50 em resposta a: problemas para upload de video no android studio code 4.1 #68649Tutora Mayla
MestreBalys, tente usar um conversor de vídeos antes. O professor Guanabara recomenda o Handbreak, que é grátis e ótimo. Teste alguns formatos e nos avise de volta quando encontrar algum que funcione.
Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.Tutora Mayla
MestreTiago, o professor Guanabara vai verificar qual pode ser esse problema em produção, assim que tivermos novidades sobre o que pode estar acontecemos entramos em contato para lhe informar.
Tutora Mayla
MestreNuno, na verdade depende de como o código está estruturado. O problema do código foi que não havia uma inicialização fora de um bloco condicional.
Se houvesse umcaso contrario
no final também inicializando as variáveis esse problema não ocorreria, pois se não fossem nenhuma das condições entraria nele e as variáveis seriam inicializadas.
Depende muito do problema a ser resolvido e de como o código está estruturado, deve-se prestar atenção e ver onde cabe ou não inicializar as variáveis na declaração.Alguns pontos sobre o seu código:
- Perceba que a seguinte parte do código é repetida em todos os casos
escreva("\n\nDigite o primeiro número: ") leia(n1) escreva("Digite o segundo número: ") leia(n2)
Como essa parte ocorre sempre independente do caso, ela pode ser colocada antes do
escolha
para evitar a repetição desnecessária. Colocando esta parte fora doescolha
, o erro de variáveis não inicializadas some, mesmo sem inicializar algum valor para elas na declaração, pois elas serão inicializadas sempre na leitura. - Outro ponto que percebi é que seu código não realiza as operações em si, apenas tem como saída que está calculando o valor.
Em vez de colocar dentro doescolha
a leitura de variáveis, que é padrão para todas as operações como eu mencionei anteriormente, dentro do escolha deverão ficar as operações matemáticas. Algo semelhante a:caso '+': res = n1 + n2 pare caso '-': res = n1 - n2 pare
E após a linha onde informa que o cálculo está sendo feito no final do código, basta acrescentar uma linha escrevendo o valor de
res
, ou seja, a variável responsável pelo valor resultado.
É interessante aqui ter apenas uma variável para resposta pois assim podemos tornar a saída de resposta genérica, podendo escrever o valor apenas no final comores
. Se tivéssemos uma variável responsável por armazenar a soma, uma pela subtração e assim por diante seria necessário ou escrever a resposta dentro do blocoescolha
ou ainda realizar outro condicional para saber qual seria a resposta certa a escrever. - Notei também que as seguintes variáveis não estão sendo utilizadas, qual seria sua intenção com elas? Elas são mesmo necessárias?
s = "SOMA" sub = "SUBTRAÇÃO" m = "MULTIPLICAÇÃO" d = "DIVISÃO"
- Após ter feito essas alterações que sugeri no bloco
escolha
, uma forma de melhorar ainda mais o seu código seria tratar o erro onde foi digitada uma opção inválida, para isto basta adicionar umcaso contrario
noescolha
onde seria escrito um erro informando opção incorreta, pois só entraria nele se não fosse nenhum dos valores que o programa aceita.
Espero ter ajudado, se ainda houver dúvidas volte a entrar em contato que lhe ajudaremos.
Continue se dedicando assim e será cada vez um programador melhor, bons estudos!Tutora Mayla
MestreLucas, poderia por favor nos informar mais detalhes do seu problema? E qual o seu sistema operacional?
Uma tentativa de solucionar o problema seria criar um arquivo novo, tente por favor e nos diga se funcionou.Tutora Mayla
MestreBruno, parabéns pelo seu código! Continue se dedicando e será um programador cada vez melhor!
Se houver quaisquer dúvidas basta entrar em contato que lhe ajudaremos.Tutora Mayla
MestreNuno, o seu código está certo o problema aí é que as vezes o programa precisa ter certeza que a variável não está vazia, pois como todas são inicializadas em blocos condicionais
caso
não é possível saber se a execução entrará em um bloco e iniciará a variável. Para resolver isto basta na declaração das variáveis fazerinteiro n1=0, n2=0
pois assim elas terão sempre algum valor, mesmo que zero.Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
Tutora Mayla
MestreAlkindar, uma forma de encontrar a qual semestre um mês pertence utilizando apenas matemática pura seria utilizar-se da divisão inteira.
Ao dividirmos 1 à 5 por 6 obtemos 0, dividindo 6 à 11 por 6 obtemos 1, ao dividirmos 12 por 6 obtemos 2. Pense como é possível utilizar essa informação para somando ou subtraindo valores chegarmos ao resultado: meses de 1 à 6 dão resultado 1 e meses de 7 à 12 dão resultado 2.
Tente realizar essa conta sozinho, caso precise de ajuda ou queira saber qual a solução que eu pensei para tal problema, volte a entrar em contato.Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
Tutora Mayla
MestreLeandro, tente utilizar as possíveis soluções dadas nas respostas acima. Caso não resolvam o seu problema, volte a entrar em contato nos enviando o seu código e os erros que estão ocorrendo.
Tutora Mayla
MestreAntonio, vamos analisar a seguinte parte do seu código:
se(contador == 1 e sexo == "F") { maisjovem = nome idadenova = idade maisvelha = nome idadevelha = idade } senao { se(contador == 1 e sexo == "M") { maisjovem_m = nome idadenovo = idade maisvelho = nome idadevelho = idade }
Imagino que aqui sua vontade tenha sido inicializar tanto o primeiro homem quanto a primeira mulher, porém desta forma isto não é possível já que não há como a primeira entrada de dados ser F e M ao mesmo tempo.
se(contador == 1 e sexo == "F")
se(contador == 1 e sexo == "M")
Aqui o teste feito é se a primeira entrada é F ou se a primeira entrada é M, se na primeira entrada se inicializa o F a partir das demais(contador > 1) não será inicializado o M e vice versa.
Uma das soluções para resolver isto é criar mais 2 contadores que serão responsáveis por contar o número de F e de M, um exemplo seria:
se(contadorF == 0 e sexo == "F")
se(contadorM == 0 e sexo == "M")
Assim não se fica restrito a primeira iteração do programa e sim a primeira entrada de dados F e M. Já que sempre um será lido antes do outro. E a variávelcontador
fica responsável apenas por limitar a entrada a 5. E as variáveiscontadorF
econtadorM
servem apenas para verificar se é a primeira mulher e se é o primeiro homem, ou seja se está como 0 ou não. Ressalto que é apenas um exemplo de como resolver, exercite sua lógica e pense em outras formas de se chegar a uma solução.Outro ponto que causa erro no seu código em decorrência do erro anterior é:
idadenovo = 0
Se não houvesse o erro anterior essa parte do código estaria correta, mas por conta do erro anterior aqui vira um erro também.
O que acontece é que como temos que o valor inicial é 0, não há como uma idade inserida ser menor que 0, logo acontece o erro relatado de não sair um valor referente ao homem mais novo. Já para o homem mais velho funciona pois está sendo testado se o valor é maior que 0. É importante notar aqui que o erro só acontece no homem mais novo pois a primeira entrada de dados foi uma mulher, caso a primeira entrada seja um homem o erro seria na mulher mais nova.
Ao realizar testes busque sempre utilizar dados distintos em ordens distintas assim garantimos que está funcionando para vários casos, e conseguimos achar os casos onde não funciona se existirem.Espero ter ajudado, se a dúvida persistir ou houver quaisquer outras dúvidas basta entrar em contato.
E parabéns pelo seu código, apesar dessa pequena falta de atenção ele está bom, continue se dedicando e será um programador cada vez melhor.Tutora Mayla
MestreMurillo, o que está acontecendo no seu código é que a conta da média está sendo feita antes dos valores serem lidos, para resolver basta colocar essa linha
media = (nota1 + nota2) /2;
abaixo da leitura das duas notas, ou seja abaixo desta parte do código:printf(“\nDigite a primeira nota: “); scanf(“%f”,¬a1); printf(“\nDigite a segunda nota: “); scanf(“%f”,¬a2);
Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
Tutora Mayla
MestreJoab, movi o seu tópico para um já existente sobre o assunto, sempre antes de postar procure se já há um tópico sobre o assunto.
Neste tópico há explicações minhas e do Icaro sobre a questão, veja se tais explicações lhe ajudam, caso não volte a entrar em contato que lhe ajudaremos.Tutora Mayla
MestreBruno, que bom que conseguiu resolver seu problema! Obrigada por compartilhar com a comunidade, assim nos ajuda a criar uma comunidade cada vez melhor!
Se houver quaisquer outras dúvidas, basta entrar em contato que lhe ajudaremos.Tutora Mayla
MestreJoab, seu código está certo, parabéns!
Sugiro apenas uma melhoria já que há uma linha dele que não está sendo utilizada.
Em vez de fazer a atribuiçãointeiro divisaoReal = n1 / n2
que não está sendo utilizada, faça:inteiro divisaoReal = tp.inteiro_para_real(n1)/n2
e noescreva
apenas ponha a variáveldivisaoReal
de forma semelhante aos outros comandosescreva
.Ressalto que nesse exercício não há problema em fazer a conta ou atribuindo à variáveis ou direto no
escreva
, mas como a maioria das contas está sendo atribuída a uma variável, é uma boa prática manter a consistência para ajudar na leitura do seu código.Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
Tutora Mayla
MestreBalys, que bom que funcionou!
Se houver quaisquer outras dúvidas basta entrar em contato que lhe ajudaremos.Tutora Mayla
MestrePamella, poderia por favor nos enviar qual o erro que está acontecendo? E postar também o seu código por favor para que possamos entender melhor a situação.
26 de maio de 2021 às 19:14 em resposta a: Dúvidas no Exercício 006 do Módulo 001 – Conversor de Medidas #67813Tutora Mayla
MestreDouglas, como mencionado pelo Icaro já havia um tópico sobre este assunto, logo mesclei ambos.
Acredito que a resposta do Icaro responda a sua dúvida, caso haja mais alguma dúvida basta entrar em contato que lhe ajudaremos.Tutora Mayla
MestreBalys, poderia por favor nos enviar o seu código XML para podermos te ajudar da melhor forma possível?
Tente substituir no seu código
android:backgroundTint
porapp:backgroundTint
e nos diga se funciona.Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.
24 de maio de 2021 às 21:24 em resposta a: JavaScript 12 – Exercícios (parte 2) Mudança de foto via javascript #67694Tutora Mayla
MestreRudiberto, este erro está ocorrendo pois no seu código é feita a busca pelo elemento com id “imagem” em
var img = window.document.getElementById('imagem')
, porém não existe nenhum elemento com este id no seu HTML (<img src="noite.png" alt="Foto do dia">
). Para resolver este problema adicione o id à tag de imagem e teste novamente.Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.
Tutora Mayla
MestreJoab, que bom que o aluno Murillo conseguiu te ajudar a entender!
Murillo, parabéns pela resposta! São iterações assim que constroem uma comunidade cada vez melhor.Se houver quaisquer outras dúvidas basta entrar em contato que lhes ajudaremos.
Tutora Mayla
MestreAna, mesclei o seu tópico com um que já fala sobre o assunto, antes de criar um tópico sempre procure no fórum se já existe um tópico sobre o assunto.
É possível baixar o Xirrus através deste link Download Xirrus.
Espero ter ajudado, quaisquer outras dúvidas estamos a disposição. - Nesta linha
-
AutorPosts