Respostas no Fórum
-
AutorPosts
-
IcaroFilhoModerador
programa { funcao inicio() { escreva("Digite o primeiro valor: ") inteiro num1 leia(num1) escreva("Digite o segundo valor: ") inteiro num2 leia(num2) escreva("Exercicio 1\n") somador1(num1,num2) escreva("\nExercicio 2\n") escreva(somador2(num1,num2)) } funcao somador1(inteiro a, inteiro b){ escreva("A soma entre os números é de: " + (a + b)) } funcao inteiro somador2(inteiro a, inteiro b){ inteiro soma = a + b retorne soma } }
Basicamente funções com retorno são utilizadas para se trabalhar com os dados oriundos dela, pois estas fazem quem que as variáveis sejam acessadas em escopos diferentes.
No seu exemplo é possível acessar a variávelSOMA
da funçãosomador2
e atribui-la a outra variável de escopo local se quiser.Já e sem retorno vc trata apenas como procedimento (para mostrar algo).
Em resumo, tudo depende do motivo que irá usar e seu escopo.
para exemplificar posso dizer assim:programa { inteiro a = 1 funcao inicio() { inteiro b = 2 escreva(a) escreva("\n") inteiro a =2 escreva(a) escreva("\n") escreva(b) escreva("\n") escreva(c()) escreva("\n") escreva(d()) } funcao c(){ inteiro c = 3 } funcao inteiro d(){ inteiro d = a retorne d } }
- a primeira variável
a
tem escopo global e pode ser acessada em todo o projeto. - quando pedimos para escrever o primeiro
a
, ela possuirá o valor de 1, pois trata-se da variável global sendo usada no escopo da função.
Ao declararmos uma variável com o mesmo nome, esta terá prioridade pois trata-se do escopo local, então ao mandarmos escrevera
novamente, irá exibir o valor de 2 - Se chamarmos a
função c
desta maneira, irá ocorrer um erro. pois esta função sem retorno não pode ser passada para um ESCREVA().
Também não podemos atribui-la a uma variável, uma vez que essa função não “possui valor a ser passado”
Para escrevermos na tela teríamos que fazer direto na função:funcao c(){ escreva(3) }
e trocariamos a chamada de:
escreva(c())
parac()
- Por ultimo, temos a
função d()
. Trata-se de uma função com retorno e traz o valor do retorno para o escopo onde for trabalhada. Sendo assim, podendo ser reutilizada.
É possível fazer, por exemplo:
operações:9 * d()
atribuições:inteiro novo_numero = d()
Espero ter dado uma luz e desculpe qualquer confusão.
IcaroFilhoModeradorBom dia Marcos.
Como eu disse em sua postagem anterior, tente ver no fórum se não há tópicos com o mesmo assunto que o seu. No caso existe tanto para o exercício 1 quanto para o 2.
Quando for assim, escreva dentro das postagens já existentes. Isto fará com que o fórum fique mais limpo e os problemas mais centralizados.Quanto ao código em si, vale algumas ressalvas.
O algoritmo funcionar não significa que esteja 100% certo.
Neste exercício deveria ser utilizado os tipos primitivos certos (você fez uso apenas do tipo cadeia), ou seja:- a variável
idade
seria do tipoINTEIRO
- a variável
salario
seria do tipoREAL
Agora uma dica para reduzir o numero de concatenação, é utilizar a quebra de linha no começo, ficando:
escreva("--------------FICHA FUNCIONAL-------------") escreva ("\nNOME: " + nome) escreva ("\nNASCIMENTO em " + idade) escreva ("\nSALARIO de " + salario) escreva ("\n-----------------------------------------")
Espero ter ajudado, qualquer duvida só mandar que estaremos aqui.
- Esta resposta foi modificada 3 anos, 3 meses atrás por IcaroFilho.
IcaroFilhoModeradorBom dia Marcos,
Bem vindo ao forum !!
Antes de tudo fica uma dica, sempre que postar seus códigos aqui, tente formata-los. Para isso basta utilizar as opções disponíveis nesta área de texto.
Ao encaminhar um trecho de código faça da seguinte maneira:- Copie e cole normalmente.
- Selecione todo o código novamente aqui e de um click em
CODE
. vc perceberá que abrirá ‘crases’ no inicio e no final.
Agora, quanto ao exercício, teve alguma duvida ou dificuldade ?
Uma dica é que não precisa escrever doisESCREVA
para realizar a quebra de linha. use\n
.- sendo assim:
escreva (“Tudo bem ,” + nome + “?\nÉ um grande prazer te conhecer!”)
- ou se quiser deixar tudo em apenas uma linha é só retirar a quebra de linha
escreva (“Tudo bem ,” + nome + “?É um grande prazer te conhecer!”)
Conte sempre conosco quando tiver duvidas e / ou quiser compartilhar conhecimento.
Mas sempre se atente se não há outras postagens com o mesmo tópico para evitar poluição no fórum.IcaroFilhoModeradorBom dia Rui.
Não entendi muito bem a sua postagem. Vc gostaria de saber se seria possível adicionar o nome junto ao maior valor ?
caso seja isso, basta que adicione uma variavel, nome e sempre que tiver o maiorValor sendo atribuído, atribuir junto o nome.IcaroFilhoModeradorBom dia Waldir,
Existem outras postagens com o mesmo tópico, antes de abrir um novo, tente consultar.
segue o link da postagem junto com o link do dump.
LINKIcaroFilhoModeradorBoa noite Marcelo,
segue link pro dump
DUMPPode ver que editei sua postagem retirando seu e-mail.
Isso pq fere as regras de uso do fórum.
Pode acessar as regras aqui.Regras Gerais do Fórum Estudonauta
O Fórum do Estudonauta, assim como todos os tópicos criados pela comunidade tem como objetivo a troca de informações referente aos cursos e aulas disponíveis na plataforma.Item 12.
Não incentive que usuários entrem em contato com você em particular para resolver problemas ou tirar dúvidas, as discussões devem acontecer no grupo (dentro do fórum).- Esta resposta foi modificada 3 anos, 3 meses atrás por IcaroFilho.
IcaroFilhoModeradorBom dia Gustavo.
Vou explicar e demonstrar… tente replicar a minha explicação e depois confira o código.O método que utilizei foi através da biblioteca Tipos.
Como o Portugal é uma linguagem fortemente tipada (precisando dizer qual é o tipo da variável em sua declaração), utilizamos uma entrada neutra do tipo cadeia.
Depois simplesmente pedimos para fazer uma checagem pela biblioteca para saber se é real ou inteiro usando as funções:
cadeia_e_real(var)
oucadeia_e_inteiro(var)
Ai varia a partir de qual função usou. caso escolha cadeia_e_real, o retorno verdadeiro será real e vice versa.
— Vale algumas ressalvas —
1- este é apenas um método. vc pode fazer também uma busca na entrada procurando por “.”, caso retorne verdadeiro ele será real.
2- lembre-se que 10 é inteiro e 10.0 é real. embora possuam o mesmo valor, são de tipos diferentes.Aqui vai um exemplo, replique após tentar:
programa { inclua biblioteca Tipos --> tp funcao inicio() { cadeia num = "" escreva("digite um numero: ") leia(num) se (tp.cadeia_e_real(num)){ escreva("numero é real") } senao { escreva("numero é inteiro") } } }
Bons estudos !
IcaroFilhoModeradorBom dia pedro.
A virgula concatena assim como o “+“.
Por exemplo:
idade = 30
print(“Eu tenho “, idade,” anos.”)
ou
print(“Eu tenho “+ idade+” anos.”)Caso sua duvida seja diferente ou permanecida, de um retorno.
abraço e bons estudos.IcaroFilhoModeradorBoa tarde Rita,
a sua formula de desperdício esta errada.
Também deixou fixo na saída a estimativa de 8 anos como fumante. (assim como fez na saída anterior, pode concatenar a string com os anos)
deixei um poste (aqui mesmo) com uma explicação bem detalhada (inclusive do arredondamento).
Se sua duvida permanecer, basta retornar aqui que te oriento passo a passo.IcaroFilhoModeradorBoa tarde Marcos,
Quando utilizamos o senao se, o teste irá se encerrar quando a condição for verdadeira e deixará de executar os outros testes. Enquanto que se utilizarmos 2 se, ele executará os 2. O problema é que nem sempre queremos que se teste tudo.
Ex.: Quero que o algoritmo diga se o numero informado é maior que determinado valor.
se usarmos apenas se teremos:programa { funcao inicio() { inteiro num escreva("escreva um numero entre 0 e 20: ") leia(num) se (num > 20){ escreva("numero informado maior que 20\n") } se (num > 15){ escreva("numero informado maior que 15\n") } se (num > 10){ escreva("numero informado maior que 10\n") } se (num > 5){ escreva("numero informado maior que 5\n") } se (num > 0){ escreva("numero informado maior que 0\n") } } }
Caso informemos 33, teremos a saída:
numero informado maior que 20
numero informado maior que 15
numero informado maior que 10
numero informado maior que 5
numero informado maior que 0Agora se utilizarmos senao se:
programa { funcao inicio() { inteiro num escreva("escreva um numero entre 0 e 20: ") leia(num) se (num > 20){ escreva("numero informado maior que 20\n") } senao se (num > 15){ escreva("numero informado maior que 15\n") } senao se (num > 10){ escreva("numero informado maior que 10\n") } senao se (num > 5){ escreva("numero informado maior que 5\n") } senao se (num > 0){ escreva("numero informado maior que 0\n") } } }
Com a mesma entrada de 33 termos a saída:
numero informado maior que 20.isto porque uma vez que o teste retorne verdadeiro, não há o pq de continuar testando. por isso que para múltiplos testes usamos o aninhamento.
Espero ter ajudado
IcaroFilhoModeradorA estrutura inicial esta correta.
vc achou os m² da parede.Sabe-se que cada litro de tinta pinta 2m².
Sendo assim, basta pegar o resultado que vc achou e dividir por 2.
Seu resultado será a quantidade de tinta necessárias para pintar a parede.Tente finalizar o exercício.
espero ter ajudado.. se sua duvida for outra.. tente especificar..- Esta resposta foi modificada 3 anos, 4 meses atrás por IcaroFilho.
IcaroFilhoModeradorQual seria sua dificuldade ?
16 de julho de 2021 às 10:33 em resposta a: Olá exercício 02 feito. Gostaria da saber como consigo melhorar esse código, #71578IcaroFilhoModeradorBom dia Carlos,
Tente sempre quando postar seu código no forum se atentar a 2 coisas.- Se há tópicos com o mesmo assunto que o seu.
- No caso, existe algumas tópicos já criados referentes ao mesmo exercício.
- Caso a sua duvida permaneça, você pode postar dentro do tópico em aberto. Isto evita com que seja criado vários tópicos com o mesmo assunto, deixando o fórum mais limpo e facilitando na hora das pessoas procurarem “ajuda” e tirar “duvidas”
- Sempre que postar seu código, formate-o. isto facilita na visualização (referindo-se a indentação) e ao transporto de codigo para a IDE (caso necessário)
- vc faz isso selecionando todo seu codigo aqui na postagem e clicando em
CODE
na barra de formatação de texto que se encontra logo acima.
Referente ao seu código:
- evite começar nomes de variáveis com letras maiúsculas. (embora funcione, não é uma boa pratica)
Funcionario
->funcionario
- Se atente na escrita:
- se vc solicita “data de nascimento”, o usuário pode digitar:
10/01/1990
ou16-07-1989
isto fará com que seu código quebre, uma vez que a entrada esperada pela variável é de números inteiros. (vai quebrar devido a entrada ‘/’ ou ‘-‘)
No exercício é solicitado apenas o ‘ano’, por isso não há problema. Caso queira ainda sim utilizar a entrada da data, pode utilizar mas deverá usar a variável do tipo cadeia. E para possíveis cálculos de idade deverá fazer uso de bibliotecas que verá mais a frente. - Ainda em termos de atenção na escrita. perceba que sua saída esta ‘colada’. no final das “” do escreva, sempre de um espaço quando concatenar algo.
- E por fim faltou a quebra de linha na ultima linha.
vc pode resolver isso criando um padrão, sempre pondo a quebra ou no começo ou no final.
- se vc solicita “data de nascimento”, o usuário pode digitar:
Continue se esforçando e bons estudos !
IcaroFilhoModeradorBoa tarde Eliude,
Sempre que postar seus códigos, tente formata-los.
Para fazer isso basta que após cola-los aqui, vc selecione ele novamente e clique emCODE
aqui na barra de formatação.Quanto a seus códigos.
- EX 1: Pode dar um espaçamento no final do primeiro escreva. Assim quando der a entrada, não ficara tudo “colado”.
- EX 2: Aqui você já se preocupo com o espaçamento que citei referente ao exercício 1.
Contudo esqueceu da quebra de linha nas suas saídas… ficando tudo em uma única linha.
Para a correção vc pode fazer de 2 maneiras:
adicionando\n
no final.escreva ("--------------FICHA CADASTRAL----------------\n") escreva ("NOME: " + NF + "\n") escreva ("ANO DE NASCIMENTO: " + AN + "\n") escreva ("SALÁRIO: R$ " + SF + "\n")
adicionando
\n
no começo.escreva ("\n--------------FICHA CADASTRAL----------------") escreva ("\nNOME: " + NF) escreva ("\nANO DE NASCIMENTO: " + AN) escreva ("\nSALÁRIO: R$ " + SF)
Bons estudos e qualquer duvida, estamos aqui.
IcaroFilhoModeradorBoa tarde. Basta que vc inicialize as variáveis.
inteiro c=0 , soma=0 , n = 0 cadeia teclado = " " caracter resp = ' '
IcaroFilhoModeradorBom dia. Como esta seu código ?
Apenas no chrome ou acontece também em outro navegado ?IcaroFilhoModeradorBom dia.
Apenas uma observação antes de começar.
Tente formatar o código quando postar no fórum para ficar melhor visualmente.
Para isso basta que ao colar o código aqui, selecione ele todo e clique emCODE
na barra superior de formatação.Agora quanto ao seu código, esta correto faltando apenas detalhes de tenção:
<div> id ="res">resultado</div>
Na sua div, vc nomeio o ID fora da tag
a correção é apenas passar o ID pra dentro da tag ficando:<div id ="res">resultado</div>
res.innerHTML = 'a soma entre ${n1} e ${n2} é igual a ${s}'
Aqui a chamada deve ser usada com crases e não com aspas,
ficando:
res.innerHTML =
a soma entre ${n1} e ${n2} é igual a ${s}
Bons estudos e qualquer coisa estamos por aqui =)
IcaroFilhoModeradoristo se da devido ao arredondamento de duas casas decimais.
funciona da seguinte maneira: (mantendo a hipótese de 2 casas)- de 5 – 9 o arredondamento é para cima:
3.545 -> 3.55
- de 1 – 4 o arredondamento é pra baixo:
3.544 -> 3.54
IcaroFilhoModeradorSo uma observação.
vc escreveu catacter, e isso realmente não existe rsrsrsr.. não sei se copiou do portugal e colou aqui ou se só errou ao digitar aqui…IcaroFilhoModeradorBom dia.
pode postar o seu código por favor (e se possível, não esqueça de mandar formatado).a sintaxe esta correta. mas não e necessário por dentro de parênteses. =>
resposta = t.cadeia_para_caracter(teclado)
IcaroFilhoModeradorMe tira uma duvida, seu elemento h1 esta descendendo direto do main, ou esta dentro de outra tag (tipo section, div … ) ?
Pergunto isso pq (até onde eu sei), usamos ‘>’ para designar descendentes direto, por exemplo:
<main> <h2> TITULO DO MAIN </h2> <div> <h2> TITULO DA DIV </h2> </div> </main>
- se usarmos:
main h2 { font-size: 50px; }
todas as tags h2 receberão a estilização css - Agora se criarmos:
main > h2 { font-size: 50px; }
Apenas o h2 dentro do main receberá essa estilização, já que apenas ela é filha direta (o h2 dentro da div seria neta e não receberia a herança)
- Esta resposta foi modificada 3 anos, 5 meses atrás por IcaroFilho.
IcaroFilhoModeradorBoa noite.
Quanto a organização dos seus arquivos. O arquivo .css esta junto do HTML ou em uma pasta ?
– Só precisa regressar ( usar os .. ) caso esteja em uma posta.Quando faz a atribuição da fonte a um estilo, esta chamando no lugar certo ?
exemplo.:
vc deseja o h1 com esta letra:h1 { font-family: 'Android'; }
Ultimo detalhe…. tenta remover o
format(‘opentype’);
e rodar pra ver se vai.IcaroFilhoModeradorBoa noite. pouco provável você não ter a biblioteca.
Me tira uma duvida, quando clica na aba ajuda, irá aparecer bibliotecas.
Quando pressionar o símbolo de +, irá listar todas as bibliotecas.
A biblioteca tipos não esta listada ?outra coisa, você tentou chamar a biblioteca e utiliza-la ?
inclua biblioteca Tipos
IcaroFilhoModeradorBoa noite.
Por favor, posta um trecho do seu código de importação pra ver como esta.IcaroFilhoModeradorBoa noite Jonas,
Você não necessariamente precisa do arquivo .exe para executar em outra maquina.
Basta que na maquina que for executar o programa, tenha o Python instalado.Mas caso queria / seja necessário o .exe , terá q fazer uso de alguma biblioteca ( como pyinstaller ) para estar gerando o .exe
IcaroFilhoModeradorBom dia, vamos as modificações que fiz.
-
Bibliotecas utilizadas:
- Adicionei a biblioteca Tipos, que será usada para conversão de inteiro para real (executado na media)
-
Alterações nas variáveis:
- Transferia as variáveis
maior
emenor
para tipo inteiro, tendo em vista serão atribuições den
, que é um numero do tipo inteiro. - Removi a variavel
valor
, estava sendo mal empregada.
-
Alterações estruturais.
- Alterado contador numérico:
escreva(valor, “o. 9999 faz parar\n”)
–>escreva(totn+1, "o. 9999 faz parar\n")
- Alterado algoritmo de media.
media = m.arredondar(soma/totn, 2)
–>media = m.arredondar(t.inteiro_para_real(soma)/totn, 2)
-
Aqui a comparação esta errada, por isso não pega o menor valor.
se(n!=9999 e n > maior) menor = n
Deve-se alterar para:
se(n!=9999 e n < menor) menor = n
-
Extra:
- Não sei se aprender pare, mas caso tenha, pode fazer para diminuir a quantidade de testes logicos , deixando de fazer:
se(n!=9999 e n<maior) se (n!=9999 e n>maior)
- com a reestruturação completa ficaria:
programa { inclua biblioteca Tipos --> t inclua biblioteca Matematica --> m funcao inicio() { inteiro n = 0, soma = 0, maior = 0, menor = 0, totn = 0 real media escreva("Lendo dados\n") escreva("----------\n") enquanto(n != 9999){ escreva(totn+1, "o. 9999 faz parar\n") escreva("Número ") leia(n) se(n==9999){ pare }senao{ soma+=n totn++ } se(totn == 1){ maior = n menor = n }senao { se (n < menor){ menor = n }senao se (n > maior){ maior = n } } } media = m.arredondar(t.inteiro_para_real(soma)/totn, 2) escreva("Ao todo você digitou "+totn+" valores\n") escreva("A soma entre eles foi "+soma+"\n") escreva("A média foi "+media+"\n") escreva("o maior foi "+maior+"\n") escreva("o menor valor foi "+menor) } }
17 de junho de 2021 às 09:28 em resposta a: Eu precioso de ajuda para fazer os exercicio 02 e 03 #69607IcaroFilhoModeradorBom dia Orlando.
A base desse exercicio é enrada e saida
Utilizamosescreva
para exibir as informações na tela e oleia
para que o computador capte as informações digitadas pelo usuário.- Exercício 002
- Primeiro precisamos pensar na estrutura do programa.
Nos é solicitado 3 informações.
Nome ; Nascimento ; Salário
Então precisamos criar as respectivas variáveis.cadeia nome // cadeia = conjunto de caracteres inteiro ano // o ano tem que ser inteiro pois não existe ano fracionado real salario // salario tem que ser real, pois há a possibilidade dos centavos
- Com base nisso podemos começar:
A primeira informação é a solicitação do nome. Primeiro ele nos mostra a frase e depois pede que seja inserido o valor.escreva("Nome do Funcionário: ") // conteúdo dentro dos parênteses será exibido na tela leia(nome) // o valor digitado será atribuído a variável => nome
este processo se repete para os demais itens (Ano de Nascimento e Salário).
- Para ele nos dar o valor basta criarmos as saídas para cada variável(escreva):
escreva("----------FICHA CADASTRAL---------\n") // Criara o topo da lista , o"\n" é a quebra de linha escreva("Nome: ", nome, "\n") // Os itens dentro das aspas são as strings e o item fora a variável. elas devem ser concatenadas (somadas) e pode-se utilizar virgula (,) ou adição (+)
O processo irá se repetir para os demais itens solicitados.
- Primeiro precisamos pensar na estrutura do programa.
- Exercício 003
- Com base no mesmo principio do anterior, só que desta vez fazendo uma operação matemática na saída.
O processo de entrada e saída de valores é idêntico ao do exercício 2, então vamos para a logica da operação matemática. - ele nos pede um valor antecessor e sucessor. então basta que executamos uma adição e uma subtração no valor da variável.
então teremos a saída:
escreva("O antecessor de ", variável, "é o valor de ", variável - 1)
Agora é so repetir o processo para o sucessor.
- Com base no mesmo principio do anterior, só que desta vez fazendo uma operação matemática na saída.
Tente realizar o exercício e se persistir, volte com as duvidas para podermos ajuda-lo.
IcaroFilhoModeradorBoa noite Julia, por favor mande seu código HTML.
Observe que:
<img src="" alt="">
src => Basta que direcione a URL da imagem.- Se estiver na mesma pasta que o arquivo index, basta por o nome do arquivo => src=”foto.jpg”
- caso esteja em uma pasta, basta por o nome da pasta/nome da imagem => src=”pasta/foto.jpg”
o comando passado é, com o cursor no centro das aspas, pressione o CTRL e com ele pressionado, aperte 1x espaço.
Espero ter ajudado.
IcaroFilhoModeradorBoa noite Diogo,
Por gentileza envie a sua dúvida pela aba Ajuda, o fórum é voltado somente para o conteúdo das aulas.IcaroFilhoModeradorArthur, Bom dia.
Não entendi muito bem com quais anos fez o teste.
Peguei os anos bissextos de 1998 a 2020 (1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020), e com todos os anos o resultado foi o mesmo.
Seu programa: O ano não é bissexto
Guanabara: O ano é bissexto
Isto porque existe 2 falhas em sua logica.- Primeiro parte da premissa de que todo múltiplo de 100 é bissexto (ano % 100 == 0)
Sendo que os múltiplos de 100 não serão bissextos a menos que seja múltiplo de 400. - Segundo que vc afirma que para ser bissexto, ele tem que ser múltiplo de 400 (atraves do operador logico e).
Sendo assim você esta eliminando todos os anos múltiplos de 4 que não são múltiplos de 400. - Uso de parênteses desnecessariamente (no caso isto não gera o erro, mas polui o código)
Quanto ao seu teste comparativo:
Faça o seguinte. Faça um teste de mesa isolado. (simplesmente retire o laço e atribua um ano bissexto e um normal).programa{ inclua biblioteca Matematica funcao inicio() { inteiro ano = 2000 logico igual igual = (((ano % 4) == 0) e (((ano % 100) == 0) e (ano % 400) == 0)) == (ano % 4 == 0 e ano % 100 != 0 ou ano % 400 == 0) escreva(igual) }}
Verá que irá dar 2 resultados diferentes (verdadeiro para os anos múltiplos de 400 e falso para o resto)
Mas pq então estou vendo todos os retornos TRUE ?
Simples, o teste esta sendo realizando apenas um vez, pois ele esta fora do laço de repetição.
Ou seja, ele so é testado uma vez com o valor 0 e depois vc cria um laço pra escrever o resultado logico e o ano sendo incrementado.
Então, para corrigir seu teste basta colocar a expressão dentro do laço:inteiro ano = 0 logico igual enquanto (ano <10000) { igual = (((ano % 4) == 0) e (((ano % 100) == 0) e (ano % 400) == 0)) == (ano % 4 == 0 e ano % 100 != 0 ou ano % 400 == 0) escreva(igual + " " + ano +"\n") ano++ }
Espero ter ajudado,
Bons estudos !! - a primeira variável
-
AutorPosts