Respostas no Fórum
-
AutorPosts
-
Michel SouzaParticipante
Arthur, particularmente prefiro afirmar do que negar assim:
} enquanto (r == 'S' ou r == 's')
mas se preferir pode fazer assim também:
} enquanto (nao(r == 'N' ou r == 'n'))
Faz um teste ai. ValeuMichel SouzaParticipanteBoa noite, também existe versão do Portugol Studio para smartphones, pelo menos para android sei que tem, apesar que programar num celular é horrível, a não ser que consiga colocar um teclado nele por meio de um cabo OTG ou mesmo aqueles teclados bluetooth aí já melhora.
Outra coisa também seria tentar instalar alguma distro Linux, por exemplo, ou mesmo o Windows (sinceramente não recomendo o Windows nesse caso), por meio de alguma máquina virtual, como o VirtualBox ou algum outro e instalar o Portugol Studio nesssa máquina virtualizada com o novo sistema, uma vantagem é que dá pra carregar em um pendrive ou mesmo um cartão de memória e levar pra onde quiser. No canal do Alfredo, ele também é professor aqui do Estudonauta, dos cursos de rede e hardware, tem uma playlist falando sobre virtualização. Ou caso tenha algum note/PC velhinho encostado num canto transformar ele numa máquina de estudos, o que não pode é desistir logo no início por falta de alguma ferramenta, se não tem solução a gente cria uma.
Valeu, boa sorte.28 de setembro de 2021 às 23:47 em resposta a: Mód 02 – Aula 04 – Exercício 20 – Dá para ver o filme? #76470Michel SouzaParticipanteVai em ajuda, ou na ?.
Bibliotecas
Calendario
E lá vai ter todos, incluíndo a função hora_atual.
Para usar:inclua biblioteca Calendario --> cal funcao inicio() { inteiro h = cal.hora_atual(falso) escreva("Agora são: " + h) }
O valor falso trás o formato em 24h e o valor verdadeiro trás o formato em 12h (am / pm).
Ocal
é apenas um apelido paraCalendario
.
Valeu, boa sorte nos estudos.Michel SouzaParticipanteMarcos, bom o seu programa tá funcionando. Porém tem algumas ressalvas.
você colocou uma mesma variável “m” pra receber tanto a área da parede quanto a quantidade de tintas/litros.
Até funciona, mas não é bom. O ideal é usar uma variável para a área da parede e outra para a quantidade de tinta, Por exemplo:
real area, tinta
O cálculo poderia ficar assim:area = (largura * altura) tinta = area / 2 // como eu já tenho o valor da area posso colocar direto no cálculo. escreva("Uma parede " + largura + " x " + altura + " tem uma área(texto) de: " + area //(variável)) escreva("\nPrecisamos de " + tinta + " litros de tinta para conseguir pintar.")
Entendeu.
ou poderia fazer assim também:escreva("Uma parede " + largura + " x " + altura + " tem uma área de: " + (largura * altura) + "m²" escreva("\n Precisamos de " + (largura * altura / 2) + " litros de tinta para conseguir pintar.")
Com a operação/cálculo direto no escreva.
Apesar que eu não gosto de trabalhar assim. Prefiro separar cada coisa em seu devido lugar.
Valeu, espero ter ajudado.Michel SouzaParticipanteMarcos o seu código do exercício 8 está correto, a sua dúvida é sobre o arredondamento que não tá funcionando, é isso? Por isso colocou como comentário.
//escreva(" com 5% de desconto o produto sai por " + npreco + matematica.arredondar(npreco, 2))
Aqui você colocou npreco 2 vezes, sem necessidade.
E colocou matematica com letra minúscula, coloca em maiúscula, assim:
Matematica.arredondar(npreco, 2).
Recomendo usar um apelido:
inclua biblioteca Matematica –> mat
mat.arredondar(npreco, 2)
26 de setembro de 2021 às 21:28 em resposta a: Mod 02- Aula 4 – Exercício 19- Inverso ou Oposto #76293Michel SouzaParticipanteOlá Larissa, boa noite.
Primeiramente antes de postar seu código tenta configurá-lo, seleciona todo ele e clica em CODE logo acima.
Isso facilita tanto na visualização, quanto para rodar o código em busca de erros.
Segundo, tenha como prática a indentação do código, que é jogar a linha mais pra dentro, como num parágrafo, criando uma espécie de estrutura hierárquica, isso vai facilitar no futuro ainda mais quando for trabalhar com vários laços aninhados.
Quando você chegar na parte de validação dos dados vai entender o que estou falando.
Agora em relação a seu código, vejamos.
Primeiro tem que iniciar a variável num, assim:
real num = 0.0, porque?
// Como é real tem que ter o ponto, se fosse inteiro não precisava.
Você já atribuiu o valor de “absoluto” com o valor de “num” e ao mesmo tempo já colocou “num” como absoluto, sem ter nenhum valor para num.
Confuso né, até me perdi. Sua lógica:
real absoluto = mat.valor_absoluto(num)
Vai funcionar, mas não é uma boa prática de programação, aqui vc está apenas colocando o 0 (zero) como absoluto, poderia colocar no final,
na resposta, assim:
escreva("O oposto de " + num + " é igual a " + mat.valor_absoluto(absoluto) + "\n")
Veja que coloquei a função na variável absoluto que é digamos uma variável de saída, de resposta.
Você perguntou se é preciso usar SE ou SENAO, pelo que entendi do enunciado do exercício, acredito que sim (positivo -> inverso/
negativo -> oposto). Ficaria assim:se (num >= 0) { // número positivo inverso do número } senao se (num < 0) { // número negativo / não é necessário colocar o SE aqui. Oposto do número }
Que é pro caso de algum usuário(a) colocar -12 por exemplo.
Agora caso você esteja querendo mostrar o inverso e o oposto do número ao mesmo tempo,
basta dividir o 1 pelo num (inverso) e multiplicar o número por -1 (oposto), assim:inverso = 1 / num oposto = num * (-1)
Tentei explicar da melhor forma possível, espero ter conseguido tirar sua dúvida.
Bons Estudos!Michel SouzaParticipanteOlá Luiz Samuel, que bom que vc entendeu o exercício, é praticando e errando que vamos evoluindo.
Esses exercícios de maior valor, menor valor realmente são meio chatinhos mesmo.
A questão da estrutura condicional “SE ENTAO SENAO” é que existe uma certa hierarquia por assim dizer. imagina como se fosse uma caixa dentro de outra caixa.
Na questão abaixo o primeiro “SE” aparece como a “mãe de todos”, por assim dizer.
`se(num>num2){
se(num3>num){;
maior = num3
meio = num
menor = num2
}senao se (num3>num2) {
maior = num
meio = num3
menor = num2
}senao {
maior = num
meio = num2
menor = num3
}`
Note que os demais “SEs”, estão mais pra dentro, como se fossem filhos. Perceba também que os “SENAO SE” estão um pouco mais pra dentro em relação ao segundo “SE” da estrutura, indicando que são filhos(as) desse segundo SE ” se(num3>num) ” e consequentemente netos(as) do primeiro “SE”.
Resumindo: O primeiro “SE” da estrutura “se (num>num2)” seria o pai ou a mãe tanto faz, o segundo “SE” da estrutura “se(num3>num)” seria seu filho(a) e os demais “SENAO SE” seriam seus netos.
A estrutura condicional SE parte de 2 premissas verdadeiro ou falso. Por exemplo:se (fizer sol) entao vou para a praia (premissa verdadeira) senao vou ficar em casa, assistindo NetFlix. (premissa falsa) fim se
- Caso a primeira condição acontecer (fizer sol) o comando é executado, ou seja, eu vou pra praia. E vida que segue, a outra condição a premissa falsa, simplesmente morre, esquece que ela existe. Até porque não dá pra ir pra praia e ficar em casa vendo filme ao mesmo tempo.
- Caso a primeira condição for falsa, ou seja, tá chovendo, nevando, caindo canivete ai sim vai ser executado a segunda estrutura o senao, no caso vou ficar em casa maratonando algum seriado.
Quando o programa possui muitos “SE” um abaixo do outro o programa vai verificar todos eles, se tiver 50 “SE” todos eles serão analisados independente da resposta. Mas caso tenha algum SENAO e a condição anterior for verdadeira, o programa para o laço sempre respeitando a hierarquia, sai da estrutura e continua seu trabalho. Tem que ter certo cuidado ao utilizar SE(), SENAO{}, SENAO SE(), SENAO {SE()}.
Espero ter conseguido sanar um pouco sua dúvida.Michel SouzaParticipantePara poder resolver esse tipo de questão a forma mais fácil é usando papel e caneta, vai substituindo as letras pelos valores.
Isso é como um quebra-cabeças, tem que ir aos poucos peça por peça.
Muita gente se perde, inclusive eu, na ordem de precedência, existe uma hierarquia por assim dizer que deve ser respeitada.
Sem falar que muitos, mesmo já em módulos mais avançados ainda se perdem em relação a variáveis e tipos primitivos, recomendo seriamente voltar aos módulos anteriores e rever as vídeo_aulas.22 de setembro de 2021 às 20:43 em resposta a: Dúvida durante a importação da biblioteca Matemática/raiz #76019Michel SouzaParticipanteLuiz Samuel, como a Mayla disse parabéns por ter conseguido resolver o problema.
Mas aproveitando e pode ser também dúvida de outras pessoas vou tentar explicar pelo menos com o pouco que sei.
Vamos lá, seu código:programa { inclua biblioteca Matematica --> MAT funcao inicio() { real x real y escreva("A raiz quadrada de", x , "é igual a",y) leia(x) y = MAT.raiz(2.x) } }
1º – Não é preciso declarar tipo real, ou qualquer outro duas vezes, basta separá-los por virgula assim:
real x, y
2º – Você deu um comando de saída junto do comando leia, mostrando os resultados antes mesmo do cálculo, fez uma misturada.escreva("A raiz quadrada de", x , "é igual a",y) leia(x) y = MAT.raiz(2.x)
O programa não vai funcionar e mesmo que funcione vai dar resultados incorretos. Porque? qual é o valor de y? a raiz quadrada de x, beleza, agora qual é o valor de x? ninguém sabe “é um número misterioso”, ele nem foi declarado no escopo e nem foi pedido ao usuário. Tem que primeiro solicitar o valor ao usuário. Assim:
escreva("Informe o valor de x: ") leia(x)
agora sim, pode fazer os cálculos e depois mostrar os resultados. Já temos um valor associado a variável x.
3º – Você meio que trocou as bolas na declaração da raiz quadrada,
y = MAT.raiz(2.x)
O certo seria:
y = MAT.raiz(x, 2)
onde, x -> é a variável que foi declarada no inicio, o radicando.
E 2 -> é o indice, o tipo de raiz, no caso raiz quadrada. Caso queira raiz cúbica basta trocar o 2 pelo 3 e assim por diante.
Resumindo, seu programa poderia ficar assim:
programa {
inclua biblioteca Matematica –> mat
funcao inicio() {
real x, y
escreva(“Digite o valor de X: “)
leia(x)
// Não confundir o X do escreva com o x do leia.y = mat.raiz(x, 2.0)
// Aqui tem que colocar o 2 como real.escreva(“A Raiz Quadrada de ” + x + ” é igual a ” + mat.arredondar(y, 2) + “\n\n”)
// Usei a função arredondar da biblioteca Matematica para o caso de alguém digitar um número que não tenha raiz exata, por exemplo 15.
}
}Daria até pra fazer uma condição ou validação pra saber se o número possui ou não raiz, mas isso acabaria confundindo ainda mais, vamos caminhar um passo de cada vez.
Michel SouzaParticipanteOlá Tutora Mayla, eu que lhe agradeço pela atenção. Estamos aqui pra isso um aprendendo com o outro, quanto a pequena confusão é normal, são pequenos detalhes que acabam passando despercebido, sei que são muitas coisas na cabeça ao mesmo tempo.
Fica na paz.Michel SouzaParticipanteOlá Marcos.
sobre o exercício 04 acredito que a tutora Mayla se confundiu quando disse que a divisão inteira estava errada, na verdade não está, pois foi declarado as variáveis d, n1, n2 como inteiro.
Assim d vai receber o resultado de 2(dois) valores inteiros, sem problema algum, mesmo que o(a) usuário(a) digite os valores 5 e 2 o resultado normal da divisão seria 2.5, sendo que o enunciado pede a divisão inteira, no caso apenas o 2 (valor inteiro).d = n1 / n2 d = 5 / 2 d = 2(divisão inteira)
Já na parte da divisão real, essa sim está errada pois uma variável do tipo real (d1) vai receber o resultado de (n1 / n2) ambas do tipo inteiro
inteiro n1, n2 real d1 d1 = n1 / n2
No caso vai dar erro de tipos incompatíveis ou mesmo resultado incorreto, teria que converter um dos valores (n1 ou n2) para real. Exemplo:
inclua biblioteca Tipos --> t d1 = t.inteiro_para_real(n1) / n2
Fazendo a conversão de tipos.
Ainda no exercício 04, no resto da divisão:
r = (n1/n2)/3
dividiu n1 por n2 e depois dividiu o resultado por 3, sinceramente não entendi essa lógica. No seu caso ficaria:Digite um valor: 19 Digite outro valor: 5 Resto: 0
Sendo que:
r = 19 / 5 r = 4
19 dividido por 5 dá resto 4 e não 0, ou mesmo 9 dividido por 3 da resto 0 e não 1. Sim eu testei.
O correto seria:
r = n1 % n2
% -> módulo da divisão ou restoDesculpa o texto grande, tentei explicar da melhor forma possível.
Bons Estudos!Michel SouzaParticipanteOlá Rondineli, o seu código está correto. Apenas pra melhorar, você repetiu o cálculo do desconto 2 (duas) vezes sem necessidade,
`desc = (valor * 10)/100
npreco= valor – (valor*10/100) `
ou seja, calculou um desconto de 10% em cima do valor e atribuiu na variável desc, depois fez o praticamente o mesmo cálculo e atribuiu na variável npreco já com o valor reduzido. Poderia fazer assim:
` desc = (valor * 10) / 100
npreco = valor – desc`
ou até mesmo de forma direta, dando o desconto diretamente no novo preço, sem a necessidade do desc, assim:
npreco = valor - (valor * 10/100)
e como o Icaro disse, tem que criar uma condição “contrária” para o caso da situação for falsa.
` se (verdadeiro) {
// codigo da condição verdadeira
} senao {
// codigo da condição falsa
}`
Espero ter ajudado.Michel SouzaParticipanteLucas, esse post que eu chamei de pirâmide B é um desafio extra que o professor Guanabara sugeriu, não é obrigatório é mais para aprendizado mesmo.
Pelo que eu vi aqui o seu código funcionou normalmente. A lógica é a mesma do primeiro a pirâmide A, o que muda é que nesse se inicia pelas estrelinhas (*) depois vai diminuindo o número delas e acrescentando os espaços em branco. Nessa segunda pirâmide B se começa pelos espaços e vai a cada repetição acrescentando as estrelas (*) e diminuindo os espaços. Talvez vc possa ter ficado confuso por ter colocado os dois exemplos em um único código usando as mesmas variáveis. Tenta fazer separadamente usando nomes de variável mais condizentes creio que terá uma visão melhor.
Se eu puder passar mais um desafio, tenta fazer um losango aparecer na tela.Michel SouzaParticipanteCaro Martini, embora também seja curso de Lógica de Programação, Algoritmos, estamos usando a ferramenta Portugol Studio. Acredito que esteja fazendo um curso diferente, ainda que seja do mesmo assunto.
Baseado no seu código, vi que vc usou um para aninhado vazio. Assim:
`Para l de 1 ate 3 faca
Para c de 1 ate 5 faca
FimPara
FimPara`
Retira esse trecho de código, acredito que vai resolver.Michel SouzaParticipanteOlá, Larissa que bom que eu consegui ajudar na sua caminhada, é como o Guanabara fala ensinar também nos ajuda a aprender.
Qualquer coisa basta perguntar no fórum, por mais simples que seja a dúvida não tenha vergonha.Michel SouzaParticipanteOlá Larissa, vejamos se consigo ajudar. Incluímos a biblioteca que queremos usar acima da função inicio, no nosso caso a biblioteca Matematica,
o –> mat é apenas um “apelido” para essa biblioteca, por exemplo: mat.comando(valor, casas) seria a mesma coisa que colocar Matematica.comando(valor, casas) valor é o valor atribuído(variável) e casas o número de casas depois da vírgula. O arredondar vai reduzir a quantidade de casas decimais, para cima ou para baixo.
Ex, 5.5888 = 5.59.Você pode usar tanto na variável (recomendado), quanto no valor numérico que você mesma atribuir, funciona do mesmo jeito, mas convenhamos se vai digitar 1.2567777 poderia colocar 1.25 ou 1.26 não é. O arredondar serve apenas pra deixar o resultado mais visível ao usuário, mais bonito, usá-lo ou não é opcional, porém cuidado! nem sempre deve se usar o arredondamento, principalmente para programas de alta precisão, o valor 38.98777 é diferente de 38.99.
Em relação ao seu código, a lógica tá certa. Vi que vc criou uma variável arredondamento para receber um valor já arredondado.
real arredondamento arredondamento = mat.arredondar(n1,3)
Pode fazer assim mesmo ou criar uma variável de resposta e colocar o arredondamento direto nela Assim:
real resp = (n1 * n2) / 2 escreva("Tinta: " + mat.arredondar(resp, 2) + " litros.")
. Bom cada um faz da forma que achar melhor.
Em relação ao erro que tá acontecendo acredito que esteja usando a última versão do Portugol Studio a v2.7.5, essa versão pede pra iniciar as variáveis, basta colocar real n1 = 0.0, uma dica quando for declarar variáveis tenta dar nomes condizentes a elas, ao invés de colocar n1 e n2 coloca larg e alt, por exemplo, futuramente quando for fazer manutenção no programa e acredite vai fazer, isso ajuda muito.
Boa sorte nos estudos! Espero ter ajudado.Michel SouzaParticipanteDenner, acredito que vc já tenha resolvido essa questão, mas vamos lá. Como o Icaro disse a sua estrutura inicial está correta (Entrada de Dados), mas na questão do cálculo de área vc colocou dentro do escreva entre parênteses. Dá pra fazer isso? sim funciona, mas fica algo meio vazio sabe, vai aparecer apenas um valor qualquer, por exemplo:
Largura: 4
Altura: 3
12
Essa seria a resposta do seu programa, agora a pergunta é 12 de que? que 12 foi esse que apareceu? Eu sei e você também sabe que é o resultado da conta largura * altura, mas o usuário, a pessoa que supostamente vai usar o seu programa não sabe, tem sempre que pensar no usuário final. Particularmente, principalmente pra quem está começando (também sou um aprendiz) aconselho a usar variáveis explicitas. Uma para receber a área e outra pra tinta. Por Exemplo:
real larg, alt, area, tinta.
area = larg * alt
tinta = area / 2
Dá pra melhorar ainda mais, ao invés de colocar um valor exato no caso 2, poderia perguntar ao usuário quantos metros 1 litro é capaz de pintar, depois basta trocar o valor 2 pela variável. Assim
tinta = area / quantMetro.
Também dá pra otimizar tudo, mas sinceramente um passo de cada vez.
Espero ter ajudado!Michel SouzaParticipanteWillian, não apareceu a tag img e sim um ícone de imagem
ficaria: img src = ‘$t class = ‘mini’ (não coloquei as <> de propósito)Michel SouzaParticipanteOlá Willian, espero que tenha conseguido resolver o problema. Senão, alguns pequenos deslizes que achei no seu código, vamos lá.
– Consideração 1: Não é <head/> e sim </head>. O fechamento da <tag> se dá com a barra antes do nome, a não ser em casos específicos.
– Consideração 2: Dá uma olhada nas aspas duplas que você usou, o meu editor não reconheceu, deu erro. Testei tanto no notepad++ quanto no VScode, tive
que colocar elas de novo.
– Consideração 3: vc esqueceu de chamar a imagem propriamente dita, ficaria assim, abaixo do while:
echo “<tr><td>”;
$t = thumb($reg->capa); /*Variável $t recebe o valor que veio da função thumb, no caso a capa */
echo ““; /*Tag mostrando o valor de $t com a classe mini */
echo “<td>$reg->nome”;
echo “<td>Admin”;
– Consideração 4: No CSS vc colocou bod ao invés de body, esqueceu do y.
– Consideração 5: No estilo img.mini troca o width(largura) por height(altura) assim: img.mini { height: 50px; }
– Consideração 6: Assiste todo o vídeo primeiro prestando atenção, depois assiste fazendo o projeto com calma. Se ficar perdido em coisas básicas
como essas quando chegar no módulo 2 que trata de segurança, níveis de acesso, bem mais complicado, não vai conseguir avançar e vai ficar frustrado,
desculpe a sinceridade.Testa pra ver se dá certo, espero ter ajudado.
Michel SouzaParticipanteOlá Willian, aqui no Estudonauta você não vai encontrar links para questões de Algoritmos(VisualG), isso é no Curso em Vídeo (são empresas diferentes).
Bom respondendo sua 1º dúvida, eu criei um exemplo, espero que ajude a sanar suas dúvidas e que seja isso que procura. Qualquer melhora será bem vinda.Algoritmo “Cálculo_Idade”
//Descrição: Programa para Calcular a idade, fazendo repetição caso o ano digitado seja diferente de 4 dígitos
//Autor(a): Michel J. S
Var
//declara o ano atual como caractere
ano_atual: Caractere
//declara o nascimento e a idade como inteiro
ano_nasc, idade: InteiroInicio
//Pedir para digitar o ano atual
EscrevaL (“—————————————–“)
Escreva(“Informe o ano atual (4 Dígitos (YYYY)): “)
Leia(ano_atual)
//Condição ano_atual diferente de 4 números
Se (compr(ano_atual) <> 4) entao //verifica o comprimento do ano atual
//Repete estrutura ate ano_atual = 4
Repita
EscrevaL (“ERRO, Informe o Ano Atual com 4 DÍGITOS”)
EscrevaL()
EscrevaL (“————————————-“)
Escreva(“Informe o ano atual (4 Dígitos (YYYY)): “)
Leia(ano_atual)
ate (compr(ano_atual) = 4)) //caso a condição seja verdadeira termina a repetição
FimSe //termina a estrutura de repetição
//Pedir para digitar o ano de nascimento
Escreva(“Digite o ano de nascimento: “)
Leia(ano_nasc)
//Converter um valor (caractere) para inteiro, para que possa ser feito o calculo da idade
idade <- Caracpnum(ano_atual) – ano_nasc
//Mostrar o Resultado na tela
EscrevaL(“Sua idade em “, ano_atual, ” é de “, idade, ” anos”)
Fimalgoritmo -
AutorPosts