Ir ao conteúdo

Eli Almeida

Membro Pleno
  • Posts

    149
  • Cadastrado em

  • Última visita

Tudo que Eli Almeida postou

  1. console.log é uma função anônima e cria-se três dela com os valores 0,1,2 para posteriormente ser impressa? for (let i = 0; i < 3; i++) { setTimeout(() => { console.log(i); }, 1000); } Qual é o comportamento desse código aqui, agora utilizando o var ao invés de let? for (var i = 0; i < 3; i++) { setTimeout(() => { console.log(i); }, 1000); }
  2. @devair1010 , preciso resolver essa questão que o enunciado mostra através da imagem. Será que o tabuleiro tem que iniciar assim como está na imagem em verde, ou pode ficar assim como está em preto? : Algoritmo "JogoDaVelha" Var simbolo, pergunta,c : caractere tabela : vetor [1..3,1..3] de caractere linha, coluna, contador, posicao : inteiro resultado, resposta: logico jogoTerminou : logico procedimento mostrarVelha () var linha,coluna, contador : inteiro inicio contador <- 1 para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] <> "x") e (tabela[linha,coluna]<> "o") então tabela[linha,coluna] <- numpcarac(contador) fimse escreva(tabela[linha,coluna]:3) contador <- contador+1 fimPara escreval() fimPara fimProcedimento função jogar (simbolo:caractere; posicao:inteiro): logico var mudou : logico inicio mudou <- falso para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] = numpcarac(posicao)) então tabela[linha,coluna] <- simbolo mudou <- verdadeiro fimSe fimPara fimPara retorne mudou fimFuncao procedimento trocarJogador () inicio se simbolo = "x" então simbolo <- "o" senao simbolo <- "x" fimSe fimProcedimento funcao jogoTerminou (): logico var terminou : logico espacosDisponiveis : inteiro inicio terminou <- falso // linhas para linha <- 1 ate 3 faca se (tabela[linha,1] = tabela[linha,2])e (tabela[linha,1]= tabela[linha,3])então terminou <- verdadeiro fimSe fimPara // colunas para coluna <- 1 ate 3 faca se (tabela[1,coluna] = tabela[2,coluna])e (tabela[1,coluna]= tabela[3,coluna]) então terminou <- verdadeiro fimSe fimPara // diagonal se (tabela[1,1] = tabela[2,2]) e (tabela[1,1] = tabela[3,3]) ou (tabela[1,3] = tabela[2,2]) e (tabela[1,3] = tabela[3,1]) então terminou <- verdadeiro fimSe // Empate para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] <> "x") e (tabela[linha,coluna]<> "o") então espacosDisponiveis <- espacosDisponiveis+1 fimSe fimPara fimPara se espacosDisponiveis = 0 então terminou <- verdadeiro fimSe retorne terminou fimFuncao procedimento reiniciarVelha() var contador : inteiro inicio contador <- 1 para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca tabela[linha,coluna] <- numpcarac(contador) escreva(tabela[linha,coluna]:3) contador <- contador+1 fimpara escreval() fimpara se c = "x" então simbolo <- "o" c <- simbolo senao se c = "o" então simbolo <- "x" c <- simbolo fimse fimse fimProcedimento Inicio mostrarVelha () simbolo <- "x" resposta <- Verdadeiro c <- simbolo enquanto resposta = verdadeiro faca repita repita escreval("Informe a posição que gostaria de jogar ", simbolo:1) leia(posicao) resultado <- jogar(simbolo,posicao) se resultado = falso então escreval (" Jogada inválida") fimSe mostrarVelha () ate resultado = verdadeiro trocarJogador () ate jogoTerminou = verdadeiro escreval("Jogo finalizado") escreval (" Gostaria de continuar jogando?") leia(pergunta) se pergunta <> "s" então resposta <- falso fimse reiniciarVelha() fimenquanto Fimalgoritmo
  3. Estou tentando completar esse código, é para quando finalizar o jogo, perguntar se quer continuar jogando e alternar para quem começa o jogo. Primeiramente quem começa o jogo é o "x", aí se escolherem que querem continuar, o jogo tem que começar perguntando em que lugar gostaria de colocar "o" agora. Mas o código não funciona como o esperado. Criei um procedimento reiniciarVelha() para reiniciar a velha e coloquei essa última parte para ver se conseguia alternar entre os jogadores, mas parece não funcionar se simbolo = "x" então simbolo <- "o" senao se simbolo = "o" então simbolo <- "x" fimse fimse Código completo : Algoritmo "JogoDaVelha" Var simbolo, pergunta : caractere tabela : vetor [1..3,1..3] de caractere linha, coluna, contador, posicao : inteiro resultado, resposta: logico jogoTerminou : logico procedimento mostrarVelha () var linha,coluna, contador : inteiro inicio contador <- 1 para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] <> "x") e (tabela[linha,coluna]<> "o") então tabela[linha,coluna] <- numpcarac(contador) fimse escreva(tabela[linha,coluna]:3) contador <- contador+1 fimPara escreval() fimPara fimProcedimento função jogar (simbolo:caractere; posicao:inteiro): logico var mudou : logico inicio mudou <- falso para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] = numpcarac(posicao)) então tabela[linha,coluna] <- simbolo mudou <- verdadeiro fimSe fimPara fimPara retorne mudou fimFuncao procedimento trocarJogador () inicio se simbolo = "x" então simbolo <- "o" senao simbolo <- "x" fimSe fimProcedimento funcao jogoTerminou (): logico var terminou : logico espacosDisponiveis : inteiro inicio terminou <- falso // linhas para linha <- 1 ate 3 faca se (tabela[linha,1] = tabela[linha,2])e (tabela[linha,1]= tabela[linha,3])então terminou <- verdadeiro fimSe fimPara // colunas para coluna <- 1 ate 3 faca se (tabela[1,coluna] = tabela[2,coluna])e (tabela[1,coluna]= tabela[3,coluna]) então terminou <- verdadeiro fimSe fimPara // diagonal se (tabela[1,1] = tabela[2,2]) e (tabela[1,1] = tabela[3,3]) ou (tabela[1,3] = tabela[2,2]) e (tabela[1,3] = tabela[3,1]) então terminou <- verdadeiro fimSe // Empate para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca se (tabela[linha,coluna] <> "x") e (tabela[linha,coluna]<> "o") então espacosDisponiveis <- espacosDisponiveis+1 fimSe fimPara fimPara se espacosDisponiveis = 0 então terminou <- verdadeiro fimSe retorne terminou fimFuncao procedimento reiniciarVelha() var contador : inteiro inicio contador <- 1 para linha <- 1 ate 3 faca para coluna <- 1 ate 3 faca tabela[linha,coluna] <- numpcarac(contador) escreva(tabela[linha,coluna]:3) contador <- contador+1 fimpara escreval() fimpara fimProcedimento Inicio mostrarVelha () simbolo <- "x" resposta <- Verdadeiro enquanto resposta = verdadeiro faca repita repita escreval("Informe a posição que gostaria de jogar ", simbolo:1) leia(posicao) resultado <- jogar(simbolo,posicao) se resultado = falso então escreval (" Jogada inválida") fimSe mostrarVelha () ate resultado = verdadeiro trocarJogador () ate jogoTerminou = verdadeiro escreval("Jogo finalizado") escreval (" Gostaria de continuar jogando?") leia(pergunta) se pergunta <> "s" então resposta <- falso fimse reiniciarVelha() se simbolo = "x" então simbolo <- "o" senao se simbolo = "o" então simbolo <- "x" fimse fimse fimenquanto Fimalgoritmo
  4. @Renato.88 , a questão também pede a corrente total do circuito. É porque a imagem parece que está meio distorcida, mas observa no lugar em que está escrito " Grandezas elétricas ". Em primeiro lugar está it que é a corrente total do circuito, depois tem t1,t2 e t3 . Se você contar vai ver que são quatros, então em primeiro lugar vem o it, corrente total. Não entendi a sua resposta, então a fonte de energia já mostra a corrente total do circuito? Não precisa usar o multímetro para medir a corrente total?
  5. @.if , fiz com multímetro porque a questão não fala nada a respeito disso. Comecei a usar o Tinkercad a pouco tempo, não sei se tem voltímetro. @Renato.88 , encontrei essa maneira na internet de medir as correntes de cada resistor. Porém não entendi bem o porquê coloca o positivo da fonte de energia na parte positiva da placa protoboard, como a corrente vai sair para circular e ser medida? Outra coisa, será que essa corrente que aparece na fonte de energia seria a corrente total do circuito? Então não precisaria usar o multímetro para medir porque a corrente total já é mostrada na fonte de energia?
  6. @Renato.88, @.if, tem essa questão aqui, é para fazer esse circuito no Tinkercad. Mas não sei como poderia medir a corrente individualmente de cada resistor com o circuito em paralelo já montado. A outra imagem é desse circuito que estou tentando medir a corrente individual de um resistor, mas não funciona. Como poderia montar esse circuito no Tinkercad de forma que dê para medir as correntes individuais de cada e também a tensão em cada resistor? Existe uma maneira mais simples de montar esse circuito em paralelo e medir as correntes individuais de cada e a tensão em cada resistor?
  7. @.if , foi eu que respondi essas atividades, porém não tenho certeza se estão corretas. Será que a resposta dessa " pergunta norteadora" da primeira atividade estaria certa? Nessa segunda atividade ( circuito 2), entendi , então poderia arredondar 222.97Ω para 223Ω. Mas não usei ohmímetro, foi multímetro. Se a resistência equivalente calculada é igual a 222.97 Ω e no multímetro deu 223Ω, isso significa que ele,(multímetro), já arredondou para 223Ω? Agora falando da "pergunta norteadora" da segunda atividade(circuito 2), não entendi o que essa questão pede. Você saberia?
  8. As respostas que dei para cada circuito : CIRCUITO 1) Encontre a resistência equivalente do circuito a seguir: Resistência Ω (Calculado) 7.760 Ω Resistência Ω (Medido) 7.76kΩ Pergunta Norteadora: Os valores medidos e calculados foram diferentes? Por quê? Porque a resistência equivalente calculada manualmente está em ohms e a medida pelo multímetro na Tinkercad está em kilo ohms. CIRCUITO 2) Encontre a resistência equivalente do circuito a seguir: Resistência Ω (Calculado) 222.97Ω Não entendi porque aqui deu 222.97Ω e já a resistência medido pelo multímetro no Tinkercad deu 223Ω Resistência Ω (Medido) 223Ω Pergunta Norteadora: Por que mesmo adicionando mais resistores, a resistência equivalente ficou menor que todas as resistências do circuito? Não entendi essa pergunta. Porque na questão do circuito 1 tinha três resistências também e na questão do circuito 2 tem três resistores também. Como assim adicionando mais resistores? CIRCUITO 3) Encontre a resistência equivalente do circuito a seguir: Resistência Ω (Calculado) 3.048,48Ω Não entendi o porquê deu 3.048,48Ω na calculada e no multímetro usando o Tikercard deu 3.05kΩ Resistência Ω (Medido) 3.05kΩ Pergunta Norteadora: Por que esse circuito é conhecido como associação mista? Porque há resistor associado em série e em paralelo no mesmo circuito. CIRCUITO 4) Encontre a corrente elétrica i que sai da fonte do circuito bem como as tensões em cada um dos resistores (VR1, VR2 e VR3) do circuito abaixo. Anote os valores calculados e medidos. Respostaa : Corrente elétrica que sai do circuito = 2,66mA Valores calculados das tensões : Tensão do resistor 1 = 1,49V Tensão do resistor 2 = 2,66V Tensão do resistor 3 =5,85V Valores medidos das tensões: Tensão do resistor 1 = 1,49V Tensão do resistor 2 = 2,66V ensão do resistor 3 = 5,85V Pergunta Norteadora: O que acontece caso você some as tensões em cada um dos resistores? A soma das tensões dará o valor inicial de 10 volts, porque a tensão se divide proporcionalmente a resistência individual.
  9. @Renato.88 ,@rmlazzari58 , obrigada. Estou tentando colocar as resistências sugeridas acima para r1,r2,r3,r4 e r5, porém no meu simulador no Tinkercad, as duas leds acendem juntas e o s2 não desliga a led 2, a led verde. Não sei qual é a causa do problema. O simulador do circuito que estou tentando testar : https://www.tinkercad.com/things/8FK91nHYAGj-circuito-temporalizador
  10. @Renato.88, obrigada. Eu estou tentando simular esse circuito no site Tinkercad. Será que é necessário saber todas as resistências para a simulação funcionar? Como poderia calcular as resistências desse circuito?
  11. Imagem da questão
  12. Alguém sabe qual é a finalidade desse circuito? O que as leds tem que fazer inicialmente? Elas apagam juntas? O circuito tem duas fontes de tensão contínua de 9V representadas por duas baterias. V1 é a bateria que alimenta o circuito eletrônico; V2 é a bateria dedicada ao motor de corrente contínua. O LED1 indica que o circuito está ligado. O transistor Q1 opera como chave, energizando a bobina do relé quando saturado e desligando o mesmo quando na região de corte. 7805, regulador de tensão linear com saída fixa 5V. • UA555, circuito integrado. • D1, diodo 1N4007. • Q1, transistor bipolar NPN BC337. RL1, relé com bobina 5V e um contato reversível. • LED1, diodo emissor de luz vermelho de 3mm. • LED2, diodo emissor de luz de 5mm. • C1 é um capacitor polarizado, com valor nominal 100uFx16V, eletrolítico, ou de tântalo para quando se deseja uma precisão maior. • C2 é um capacitor de 0.01µF (10nF). Este capacitor pode ser cerâmico ou de poliéster.
  13. Comecei a estudar HTML agora e tem uma parte que fala sobre o tamanho de uma imagem , me deparei com isso : largura 650 e altura 433, resolução x = 11,00 e resolução y = 11,00. O que quer dizer isso? Esses dados estavam em uma imagem do GIMP. Qual a diferença entre altura e largura e resolução x = 11,00 e resolução y = 11,00? Onde entra o pixel por polegada nisso?
  14. @DiF , obrigada. Acabei de entrar no assunto de html, só vi umas três tags mais ou menos, não vi nada ainda de css. Não sei qual é a melhor maneira de resolver essa questão. Vi um tutorial e resolveram dessa maneira também: <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mensagens</title> <style> div { margin-bottom: 10px; } </style> </head> <body> <h1>Desafios das Mensagens</h1> * Um <br> ** Dois <br> *** Três <br> <div> **** Quatro </div> **** Quatro <br> *** Três <br> ** Dois <br> * Um </body> </html>
  15. Fiz desse jeito : <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Mensagens</title> </head> <body> <h1>Desafios das Mensagens</h1> <p>* Um <br> ** Dois<br> *** Três<br> **** Quatro</p> <p> **** Quatro <br> *** Três <br> ** Dois <br> * Um</p> </body> </html>
  16. Dizem que a tag marca o elemento, mas como ela faz isso? Qual seria o significado de tag e de elemento? Como estão relacionados? Se puderem dar uma exemplo deixando claro a diferença e a relação de cada um agradeço.
  17. @Midori , testei aqui e funcionou, obrigada. Agora gostaria de saber como faço para colocar as linhas e deixar os bimestres e as matérias junto com as notas dentro do retângulo. Nessa parte aqui : Escreva(bimestre[linha]:12), ele conta a quantidade de caracteres e deixa somente um espaço à esquerda ?
  18. É para criar um código em portugol de forma que ele fique igual a essa tabela da imagem mais abaixo. As linhas representam as matérias e as colunas os bimestres, fiz esse código aqui, porém, ele fica desajeitado, as notas não ficam em baixo dos bimestres. Algoritmo "notasQuatroBimestres" Var notasBimestre : vetor [1..4,1..4] de real linha, coluna : inteiro materias : vetor [1..4] de caractere bimestre :vetor [1..4] de caractere Inicio bimestre[1] <- "1º bimestre" bimestre[2] <- "2º bimestre" bimestre[3] <- "3º bimestre" bimestre[4] <- "4º bimestre" materias [1] <- "matemática" materias[2] <- "português" materias [3] <- "geografia" materias [4] <- "história" para linha <- 1 ate 4 faca para coluna <- 1 ate 4 faca escreval("Informe a ", coluna, "º nota do", coluna, "º bimestre de ", materias[linha]) leia(notasBimestre[linha,coluna]) fimPara fimPara para linha <- 1 ate 4 faca escreva(" ",bimestre[linha]:15) fimpara para linha<- 1 ate 4 faca escreval() escreva (materias[linha]) para coluna <- 1 ate 4 faca escreva(" ",notasBimestre[linha,coluna]:12) fimPara escreval() fimPara Fimalgoritmo
  19. @Simon Viegas, usei a mesma lógica que já tinha no procedimento consultar estoque para atualizar o estoque e consertar esse erro, ao informar um nome de produto inexistente. Algoritmo "Gerenciamento de Produtos v0.3" // Disciplina : // Professor : // Autor(a) : Eli Almeidaa // Data atual : 18/10/2023 // ENUNCIADO: const QTD_MAX_PRODUTOS = 2 tipo t_Produto = registro nome : caractere preco : real estoque : inteiro fimRegistro funcao vetorVazio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos <= 0) então escrevaL("Não há produtos cadastrados") retorno <- VERDADEIRO senao retorno <- FALSO fimSe retorne retorno fimFuncao funcao vetorCheio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos >= QTD_MAX_PRODUTOS) então escrevaL("Não há mais espaço no vetor para cadastro de novos produtos") retorno <- VERDADEIRO fimSe retorne retorno fimFuncao funcao produtoExiste (nome:caractere) : logico var contador : inteiro existe : logico inicio existe <- FALSO se (buscaPosicaoProduto(nome) > 0) então escrevaL("Já existe um produto com o nome '", nome, "' no cadastro!") existe <- VERDADEIRO interrompa() fimSe retorne existe fimFuncao funcao buscaPosicaoProduto(nome:caractere):inteiro var resultado : inteiro contador : inteiro inicio resultado <- 0 para contador <- 1 ate qtdProdutos faca se (nome = produtos[contador].nome) então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() var novoProduto : t_Produto produtoJaExiste : logico inicio se (não vetorCheio()) então repita produtoJaExiste <- FALSO escrevaL("Informe o nome do produto") leia(novoProduto.nome) produtoJaExiste <- produtoExiste(novoProduto.nome) se (não produtoJaExiste) então escrevaL("Informe o preço do produto") leia(novoProduto.preco) escrevaL("Informe o estoque do produto") leia(novoProduto.estoque) qtdProdutos <- qtdProdutos+1 produtos[qtdProdutos] <- novoProduto escrevaL("Produto cadastrado com sucesso") fimSe ate (não produtoJaExiste) fimse fimProcedimento procedimento listarProdutos() var contador : inteiro inicio se(não vetorVazio ()) então escrevaL("Produtos cadastrados :") para contador <- 1 ate qtdProdutos faca escrevaL("Nome : ", produtos[contador].nome) escrevaL("Preço : R$ ", produtos[contador].preco:1:2) escrevaL("Estoque : ", produtos[contador].estoque:1) escrevaL() fimPara fimSe fimProcedimento procedimento consultarEstoque () var novoProduto : t_Produto posProduto : inteiro p: inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de consultar o estoque") leia(novoProduto.nome) se produtoCadastrado(novoProduto.nome)então posProduto <- buscaPosicaoProduto(novoProduto.nome) se (posProduto > 0) então escreval(" O estoque de ", produtos[posProduto].nome, " é ", produtos[posProduto].estoque:1) fimSe fimse fimSe fimProcedimento procedimento atualizarEstoque () var novoProduto: t_Produto opcao : caractere quantidade: inteiro posProduto : inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de atualizar o estoque") leia(novoProduto.nome) se produtoCadastrado(novoProduto.nome)então se buscaPosicaoProduto(novoProduto.nome)> 0 então escreval ("[A] - adicionar") escreval ("[R] - retirar") leia(opcao) opcao <- maiusc(opcao) se opcao = "A" então escreval("Quanto gostaria de adicionar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque+quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) senao se opcao = "R" então escreval("Quanto gostaria de retirar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque-quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) fimse fimSe fimSE fimSe fimse fimProcedimento funcao produtoCadastrado(nome:caractere): logico var contador: inteiro resultado : logico inicio resultado <- FALSO se (buscaPosicaoProduto(nome) > 0) então resultado <- VERDADEIRO senao escreval("Produto não cadastrado") resultado <- FALSO fimSe retorne resultado fimFuncao var produtos : vetor [1..QTD_MAX_PRODUTOS] de t_Produto opcao, qtdProdutos : inteiro inicio qtdProdutos <- 0 repita escrevaL("[1]- Cadastrar produto") escrevaL("[2]- Consultar produto") escrevaL("[3]- Atualizar estoque") escrevaL("[4]- Listar produtos") escrevaL("Escolha uma opcao") leia (opcao) escolha (opcao) caso 1 cadastrarProduto() caso 2 consultarEstoque() caso 3 atualizarEstoque() caso 4 listarProdutos() fimEscolha ate (opcao = 0) fimAlgoritmo
  20. @Simon Viegas , dei uma pesquisada e descobrir que pode criar uma lista indo em configurações dentro do visualg, fiz isso, criei a lista com o mesmo nome que você já tinha colocado no código, no caso NOMES DE PESSOAS. Lá dentro da lista coloquei os nomes : Gabriel, Miguel Arthur e João, um em baixo do outro. Porém existe um problema que não sei como solucionar, no caso, quando executa o código e o programa escolhe os nomes aleatoriamente, ele acaba escolhendo nomes repetidos, como nesse caso, ele repetiu Gabriel duas vezes. Código completo : algoritmo "Análise Das Notas Da Turma v0.2_auto" var nome : vetor [1..4] de caractere nota1 : vetor [1..4] de real nota2 : vetor[1..4] de real mediaAluno : vetor [1..4] de real contador : inteiro somaMedia, mediaTurma : real qtdAlunosAcimaDaMediaDaTurma : inteiro procedimento espera (pularLinha:logico) //veja a magia da organização de códigos. Basicamente copiei esse código de //outro tópico aqui do fórum //...apenas inseri essa opção de pular a linha, ou seja, já criando uma nova //versão alternativa para esse recurso var entrada:caractere inicio escreva ("Pressione enter para continuar...") se (pularLinha) então escrevaL("") fimSe leia(entrada) fimProcedimento inicio somaMedia <- 0 para contador <- 1 ate 4 faca escrevaL("Informe os dados do ", contador:1, "º aluno") ALEATORIO ON LISTA "NOMES DE PESSOAS" escreva (" Nome : ") leia(nome[contador]) escreva (" 1º nota: ") ALEATORIO 0,10 leia(nota1[contador]) escreva (" 2º nota: ") leia(nota2[contador]) ALEATORIO OFF mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2 somaMedia <- somaMedia+mediaAluno[contador] escrevaL("") fimPara mediaTurma <- somaMedia/4 espera(FALSO) limpaTela() escrevaL("Listagem de alunos :") escrevaL("Nome":16, "Nota") escrevaL("--------------------") qtdAlunosAcimaDaMediaDaTurma <- 0 para contador <- 1 ate 4 faca escrevaL(nome[contador]:15, "|", mediaAluno[contador]:5:2) se (mediaAluno[contador] > mediaTurma) então qtdAlunosAcimaDaMediaDaTurma <- qtdAlunosAcimaDaMediaDaTurma+1 fimSe fimPara escrevaL("") escrevaL("Ao todo temos ", qtdAlunosAcimaDaMediaDaTurma:1, " aluno(s) que está(ão) acima da média da turma, que é ", mediaTurma:4:2, ".") fimAlgoritmo
  21. @Simon Viegas, ajustei o código conforme você mostrou. Código completo: Algoritmo "Gerenciamento de Produtos v0.3" // Disciplina : // Professor : // Autor(a) : Eli Almeidaa // Data atual : 18/10/2023 // ENUNCIADO: const QTD_MAX_PRODUTOS = 2 tipo t_Produto = registro nome : caractere preco : real estoque : inteiro fimRegistro funcao vetorVazio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos <= 0) então escrevaL("Não há produtos cadastrados") retorno <- VERDADEIRO senao retorno <- FALSO fimSe retorne retorno fimFuncao funcao vetorCheio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos >= QTD_MAX_PRODUTOS) então escrevaL("Não há mais espaço no vetor para cadastro de novos produtos") retorno <- VERDADEIRO fimSe retorne retorno fimFuncao funcao produtoExiste (nome:caractere) : logico var contador : inteiro existe : logico inicio existe <- FALSO se (buscaPosicaoProduto(nome) > 0) então escrevaL("Já existe um produto com o nome '", nome, "' no cadastro!") existe <- VERDADEIRO interrompa() fimSe retorne existe fimFuncao funcao buscaPosicaoProduto(nome:caractere):inteiro var resultado : inteiro contador : inteiro inicio resultado <- 0 para contador <- 1 ate qtdProdutos faca se (nome = produtos[contador].nome) então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() var novoProduto : t_Produto produtoJaExiste : logico inicio se (não vetorCheio()) então repita produtoJaExiste <- FALSO escrevaL("Informe o nome do produto") leia(novoProduto.nome) produtoJaExiste <- produtoExiste(novoProduto.nome) se (não produtoJaExiste) então escrevaL("Informe o preço do produto") leia(novoProduto.preco) escrevaL("Informe o estoque do produto") leia(novoProduto.estoque) qtdProdutos <- qtdProdutos+1 produtos[qtdProdutos] <- novoProduto escrevaL("Produto cadastrado com sucesso") fimSe ate (não produtoJaExiste) fimse fimProcedimento procedimento listarProdutos() var contador : inteiro inicio se(não vetorVazio ()) então escrevaL("Produtos cadastrados :") para contador <- 1 ate qtdProdutos faca escrevaL("Nome : ", produtos[contador].nome) escrevaL("Preço : R$ ", produtos[contador].preco:1:2) escrevaL("Estoque : ", produtos[contador].estoque:1) escrevaL() fimPara fimSe fimProcedimento procedimento consultarEstoque () var novoProduto : t_Produto posProduto : inteiro p: inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de consultar o estoque") leia(novoProduto.nome) se produtoCadastrado(novoProduto.nome)então posProduto <- buscaPosicaoProduto(novoProduto.nome) se (posProduto > 0) então escreval(" O estoque de ", produtos[posProduto].nome, " é ", produtos[posProduto].estoque:1) fimSe fimse fimSe fimProcedimento procedimento atualizarEstoque () var novoProduto: t_Produto opcao : caractere quantidade: inteiro posProduto : inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de atualizar o estoque") leia(novoProduto.nome) se buscaPosicaoProduto(novoProduto.nome)> 0 então escreval ("[A] - adicionar") escreval ("[R] - retirar") leia(opcao) opcao <- maiusc(opcao) se opcao = "A" então escreval("Quanto gostaria de adicionar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque+quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) senao se opcao = "R" então escreval("Quanto gostaria de retirar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque-quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) fimse fimSe fimSE fimSe fimProcedimento funcao produtoCadastrado(nome:caractere): logico var contador: inteiro resultado : logico inicio resultado <- FALSO se (buscaPosicaoProduto(nome) > 0) então resultado <- VERDADEIRO senao escreval("Produto não cadastrado") resultado <- FALSO fimSe retorne resultado fimFuncao var produtos : vetor [1..QTD_MAX_PRODUTOS] de t_Produto opcao, qtdProdutos : inteiro inicio qtdProdutos <- 0 repita escrevaL("[1]- Cadastrar produto") escrevaL("[2]- Consultar produto") escrevaL("[3]- Atualizar estoque") escrevaL("[4]- Listar produtos") escrevaL("Escolha uma opcao") leia (opcao) escolha (opcao) caso 1 cadastrarProduto() caso 2 consultarEstoque() caso 3 atualizarEstoque() caso 4 listarProdutos() fimEscolha ate (opcao = 0) fimAlgoritmo
  22. O código abaixo usa dois vetores para armazenar duas notas de quatro alunos, outro para o nome dos quatro alunos e outro para a média da turma. Fazer essa questão usando registro não seria mais adequado? Por quê utilizar vetor ao invés de registro? Algoritmo "AnáliseDasNotasDaTurma" Var nome : vetor [1..4] de caractere nota1 : vetor [1..4] de real nota2 : vetor[1..4] de real mediaAluno : vetor [1..4] de real contador : inteiro somaMedia, mediaTurma : real alunosAcimaDaMediaDaTurma : inteiro Inicio para contador <- 1 ate 4 faca escreval ("Informe o nome do ", contador:1, "º aluno") leia(nome[contador]) escreval (" Informe a 1º nota") leia(nota1[contador]) escreval (" Informe a 2º nota") leia(nota2[contador]) mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2 somaMedia <- somaMedia+mediaAluno[contador] fimPara mediaTurma <- somaMedia/4 limpatela escreval("Listagem de alunos :") para contador <- 1 ate 4 faca escreval (nome[contador]:15, mediaAluno[contador]) se mediaAluno[contador]> mediaTurma então alunosAcimaDaMediaDaTurma <- alunosAcimaDaMediaDaTurma+1 fimSe fimPara escreval ("Ao todo temos ", alunosAcimaDaMediaDaTurma:1, " aluno(s) que está acima da média da turma, que é ", mediaTurma:4:2, ".") FimAlgoritmo
  23. @Simon Viegas, segui as suas dicas alterei o código. E acrescentei a função produtoCadastrado para verificar se o produto existe no cadastro, caso não, vai aparecer a mensagem "Produto não cadastrado", mas só vai aparecer se houver um produto cadastrado primeiro, aí depois vai em consultar estoque e digitar um produto com nome diferente do que já está cadastrado. Não consegui pensar em uma lógica para usar os valores verdadeiro e falso, como você já vinha fazendo para retornar um valor lógico para essa função. Fiz assim, não sei se está correto: Algoritmo "Gerenciamento de Produtos v0.3" // Disciplina : // Professor : // Autor(a) : Eli Almeidaa // Data atual : 18/10/2023 // ENUNCIADO: const QTD_MAX_PRODUTOS = 2 tipo t_Produto = registro nome : caractere preco : real estoque : inteiro fimRegistro funcao vetorVazio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos <= 0) então escrevaL("Não há produtos cadastrados") retorno <- VERDADEIRO senao retorno <- FALSO fimSe retorne retorno fimFuncao funcao vetorCheio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos >= QTD_MAX_PRODUTOS) então escrevaL("Não há mais espaço no vetor para cadastro de novos produtos") retorno <- VERDADEIRO fimSe retorne retorno fimFuncao funcao produtoExiste (nome:caractere) : logico var contador : inteiro existe : logico inicio existe <- FALSO para contador <- 1 ate qtdProdutos faca se (produtos[contador].nome = nome) então escrevaL("Já existe um produto com o nome '", nome, "' no cadastro!") existe <- VERDADEIRO interrompa() fimSe fimPara retorne existe fimFuncao funcao buscaPosicaoProduto(nome:caractere):inteiro var resultado : inteiro contador : inteiro inicio resultado <- 0 para contador <- 1 ate qtdProdutos faca se (nome = produtos[contador].nome) então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() var novoProduto : t_Produto produtoJaExiste : logico inicio se (não vetorCheio()) então repita produtoJaExiste <- FALSO escrevaL("Informe o nome do produto") leia(novoProduto.nome) produtoJaExiste <- produtoExiste(novoProduto.nome) se (não produtoJaExiste) então escrevaL("Informe o preço do produto") leia(novoProduto.preco) escrevaL("Informe o estoque do produto") leia(novoProduto.estoque) qtdProdutos <- qtdProdutos+1 produtos[qtdProdutos] <- novoProduto escrevaL("Produto cadastrado com sucesso") fimSe ate (não produtoJaExiste) fimse fimProcedimento procedimento listarProdutos() var contador : inteiro inicio se(não vetorVazio ()) então escrevaL("Produtos cadastrados :") para contador <- 1 ate qtdProdutos faca escrevaL("Nome : ", produtos[contador].nome) escrevaL("Preço : R$ ", produtos[contador].preco:1:2) escrevaL("Estoque : ", produtos[contador].estoque:1) escrevaL() fimPara fimSe fimProcedimento procedimento consultarEstoque () var novoProduto : t_Produto posProduto : inteiro p: inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de consultar o estoque") leia(novoProduto.nome) se produtoCadastrado(novoProduto.nome)então posProduto <- buscaPosicaoProduto(novoProduto.nome) se (posProduto > 0) então escreval(" O estoque de ", produtos[posProduto].nome, " é ", produtos[posProduto].estoque:1) fimSe fimse fimSe fimProcedimento procedimento atualizarEstoque () var novoProduto: t_Produto opcao : caractere quantidade: inteiro posProduto : inteiro inicio se (não vetorVazio())então escreval("Informe o nome do produto que gostaria de atualizar o estoque") leia(novoProduto.nome) se buscaPosicaoProduto(novoProduto.nome)> 0 então escreval ("[A] - adicionar") escreval ("[R] - retirar") leia(opcao) opcao <- maiusc(opcao) se opcao = "A" então escreval("Quanto gostaria de adicionar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque+quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) senao se opcao = "R" então escreval("Quanto gostaria de retirar?") leia(quantidade) posProduto <- buscaPosicaoProduto(novoProduto.nome) produtos[posProduto].estoque <- produtos[posProduto].estoque-quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[posProduto].estoque:1) fimse fimSe fimSE fimSe fimProcedimento funcao produtoCadastrado(nome:caractere): logico var contador: inteiro resultado : logico inicio resultado <- FALSO para contador <- 1 ate qtdProdutos faca se nome = produtos[contador].nome então resultado <- VERDADEIRO senao escreval("Produto não cadastrado") resultado <- FALSO fimSe fimPara retorne resultado fimFuncao var produtos : vetor [1..QTD_MAX_PRODUTOS] de t_Produto opcao, qtdProdutos : inteiro inicio qtdProdutos <- 0 repita escrevaL("[1]- Cadastrar produto") escrevaL("[2]- Consultar produto") escrevaL("[3]- Atualizar estoque") escrevaL("[4]- Listar produtos") escrevaL("Escolha uma opcao") leia (opcao) escolha (opcao) caso 1 cadastrarProduto() caso 2 consultarEstoque() caso 3 atualizarEstoque() caso 4 listarProdutos() fimEscolha ate (opcao = 0) fimAlgoritmo
  24. @Simon Viegas, usei como base o pedaço do código que você já tinha postado. Modifiquei o listarProdutos e cadastrarProduto, agora se o vetor estiver cheio, já não digita o nome do produto e se digitar um nome que já existe, não retorna para o menu imediatamente, aí pede para digitar um produto novamente. Acrescentei o procedimento consultarEstoque e atualizarEstoque. Não sei se estaria certo assim: Algoritmo "Gerenciamento de Produtos v0.3" // Disciplina : // Professor : // Autor(a) : Eli Almeidaa // Data atual : 18/10/2023 // ENUNCIADO: const QTD_MAX_PRODUTOS = 2 tipo t_Produto = registro nome : caractere preco : real estoque : inteiro fimRegistro funcao existemProdutosCadastrados() : logico var retorno : logico inicio retorno <- falso se (qtdProdutos > 0) então retorno <- VERDADEIRO senao escrevaL("Não há produtos cadastrados") retorno <- FALSO fimSe retorne retorno fimFuncao funcao vetorCheio() : logico var retorno : logico inicio retorno <- FALSO se (qtdProdutos >= QTD_MAX_PRODUTOS) então escrevaL("Não há mais espaço no vetor para cadastro de novos produtos") retorno <- VERDADEIRO fimSe retorne retorno fimFuncao funcao produtoExiste (nome:caractere) : logico var contador : inteiro existe : logico inicio existe <- FALSO para contador <- 1 ate qtdProdutos faca se (produtos[contador].nome = nome) então escrevaL("Já existe um produto com o nome '", nome, "' no cadastro!") existe <- VERDADEIRO interrompa() fimSe fimPara retorne existe fimFuncao funcao buscaPosicaoProduto(nome:caractere):inteiro var resultado : inteiro contador : inteiro inicio resultado <- 0 para contador <- 1 ate qtdProdutos faca se (nome = produtos[contador].nome) então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() var novoProduto : t_Produto produtoJaExiste : logico inicio se vetorCheio = falso então repita produtoJaExiste <- falso escrevaL("Informe o nome do produto") leia(novoProduto.nome) se produtoExiste(novoProduto.nome) = falso então escrevaL("Informe o preço do produto") leia(novoProduto.preco) escrevaL("Informe o estoque do produto") leia(novoProduto.estoque) qtdProdutos <- qtdProdutos+1 produtos[qtdProdutos] <- novoProduto escrevaL("Produto cadastrado com sucesso") senao ProdutoJaExiste <- verdadeiro fimSe ate (ProdutoJaExiste = falso) fimSe fimProcedimento procedimento listarProdutos() var contador : inteiro inicio se existemProdutosCadastrados = verdadeiro então escrevaL("Produtos cadastrados :") para contador <- 1 ate qtdProdutos faca escrevaL("Nome : ", produtos[contador].nome) escrevaL("Preço : R$ ", produtos[contador].preco:1:2) escrevaL("Estoque : ", produtos[contador].estoque:1) escrevaL() fimPara fimSe fimProcedimento procedimento consultarEstoque () var novoProduto : t_Produto r:inteiro inicio se existemProdutosCadastrados = verdadeiro então escreval("Informe o nome do produto que gostaria de consultar o estoque") leia(novoProduto.nome) se buscaPosicaoProduto(novoProduto.nome)> 0 então escreval(" O estoque de ", novoProduto.nome, " é ", produtos[buscaPosicaoProduto(novoProduto.nome)].estoque:1) fimSe fimse fimProcedimento procedimento atualizarEstoque () var novoProduto: t_Produto opcao : caractere quantidade: inteiro inicio se existemProdutosCadastrados = verdadeiro então escreval("Informe o nome do produto que gostaria de atualizar o estoque") leia(novoProduto.nome) se buscaPosicaoProduto(novoProduto.nome)> 0 então escreval ("[A] - adicionar") escreval ("[R] - retirar") leia(opcao) opcao <- maiusc(opcao) se opcao = "A" então escreval("Quanto gostaria de adicionar?") leia(quantidade) produtos[buscaPosicaoProduto(novoProduto.nome)].estoque <- produtos[buscaPosicaoProduto(novoProduto.nome)].estoque+quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[buscaPosicaoProduto(novoProduto.nome)].estoque:1) senao se opcao = "R" então escreval("Quanto gostaria de retirar?") leia(quantidade) produtos[buscaPosicaoProduto(novoProduto.nome)].estoque <- produtos[buscaPosicaoProduto(novoProduto.nome)].estoque-quantidade escreval("O novo estoque de ", novoProduto.nome, " é ", produtos[buscaPosicaoProduto(novoProduto.nome)].estoque:1) fimse fimSe fimSE fimSe fimProcedimento var produtos : vetor [1..QTD_MAX_PRODUTOS] de t_Produto opcao, qtdProdutos : inteiro inicio qtdProdutos <- 0 repita escrevaL("[1]- Cadastrar produto") escrevaL("[2]- Consultar produto") escrevaL("[3]- Atualizar estoque") escrevaL("[4]- Listar produtos") escrevaL("Escolha uma opcao") leia (opcao) escolha (opcao) caso 1 cadastrarProduto() caso 2 consultarEstoque() caso 3 atualizarEstoque() caso 4 listarProdutos() fimEscolha ate (opcao = 0) fimAlgoritmo
  25. @Simon Viegas , segui suas dicas em alguns itens como colocar o nome da constante em letra maiúscula, deixar o menu cru, troquei o nome do registro para produto, fiz a opção 4 desse jeito aqui, não sei se estaria certo também. O código da forma que você está fazendo aí, como criando função existemProdutosCadastrados, função vetorCheio e função produtoExiste, seria a forma mais correta de fazer essa questão? Seria a forma que deixaria o código mais limpo e mais fácil de entender? Algoritmo "Gerenciamento de Produtos" const QUANTIDADE_MAX_PRODUTOS = 2 tipo produto = registro nome: caractere preco: real estoque: inteiro fimRegistro var produtos: vetor [1..QUANTIDADE_MAX_PRODUTOS] de produto quantidadeProdutosCadastrados, opcao: inteiro funcao produtoExiste(nome:caractere):inteiro var resultado : inteiro contador : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() var nome : caractere inicio se quantidadeProdutosCadastrados <= QUANTIDADE_MAX_PRODUTOS então escreval("Informe o nome do produto") leia(nome) se (produtoExiste(nome) > 0) então escreval("O produto ", produtos[quantidadeProdutosCadastrados].nome, " Já existe no cadastro!") senao produtos[quantidadeProdutosCadastrados].nome <- nome escreval("Informe o preço do produto") leia(produtos[quantidadeProdutosCadastrados].preco) escreval("Informe o estoque do produto") leia(produtos[quantidadeProdutosCadastrados].estoque) quantidadeProdutosCadastrados <- quantidadeProdutosCadastrados+1 escreval("Produto cadastrado com sucesso") fimSe senao escreval(" Limite de cadastro atingido") fimSe fimProcedimento procedimento consultarEstoque() var nome:caractere contador : inteiro resultado:inteiro r : inteiro inicio escreval ("Informe o nome do produto que deseja consultar o estoque") leia(nome) r <- produtoExiste(nome) se r > 0 então para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então resultado <- produtos[contador].estoque escreval(" A quantidade de estoque do produto ", nome, " é ", resultado:1) interrompa() fimSe fimPara senao escreval(" Produto não cadastrado.") fimSe fimProcedimento procedimento atualizarEstoque () var nome : caractere opcao2:caractere quantidade:inteiro contador, c, r : inteiro inicio escreval ("Informe o nome do produto que deseja atualizar o estoque") leia(nome) r <- produtoExiste(nome) se r > 0 então escreval ("[R] - retirar") escreval("[A] - adicionar") leia(opcao2) opcao2 <- maiusc(opcao2) para contador <- 1 ate quantidadeProdutosCadastrados faca se opcao2 = "R" então escreval ("Quanto gostaria de retirar") leia(quantidade) produtos[contador].estoque <- produtos[contador].estoque - quantidade c <- produtos[contador].estoque escreval("O novo estoque é de ", nome, " é ", c:1) interrompa senao se opcao2 = "A" então escreval ("Quanto gostaria de adicionar") leia (quantidade) produtos[contador].estoque <- produtos[contador].estoque + quantidade c <- produtos[contador].estoque escreval("O novo estoque é de ", nome, " é ", c:1) interrompa fimSe fimSe fimPara senao escreval(" Produto não cadastrado.") fimSe fimProcedimento procedimento listarProduto() var contador : inteiro r, y : inteiro nome : caractere inicio y <- quantidadeProdutosCadastrados quantidadeProdutosCadastrados <- 1 nome <- "" r <- produtoExiste(nome) se (r = 0) e (r <> 1) então quantidadeProdutosCadastrados <- y para contador <- 1 ate quantidadeProdutosCadastrados-1 faca se produtos[contador].nome <> "" então escreval("Nome :", produtos[contador].nome) escreval("Preço :", produtos[contador].preco) escreval("Estoque :", produtos[contador].estoque) fimse fimPara senao escreval("Não há produtos cadastrados.") escreval() fimSe fimProcedimento Inicio quantidadeProdutoscadastrados <- 1 repita escreval("[0] - Sair ") escreval("[1]- Cadastrar produto") escreval("[2]- consultar produto") escreval("[3]- atualizar estoque") escreval ("[4]- listar produtos") escreval("Escolha uma opcao") leia (opcao) escolha opcao caso 1 cadastrarProduto() caso 2 consultarEstoque() caso 3 atualizarEstoque() caso 4 listarProduto() fimescolha ate (opcao=0) Fimalgoritmo

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!