Ir ao conteúdo

Eli Almeida

Membro Pleno
  • Posts

    152
  • Cadastrado em

  • Última visita

Tudo que Eli Almeida postou

  1. @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
  2. @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
  3. @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
  4. @devair1010, valeu funcionou agora. Troquei "flg" por "resultado". Acrescentei outra função que é " Atualizar estoque". Será que dessa forma que eu fiz estaria certo? Ouvir dizer que se deve evitar colocar texto dentro da função, que ela deve ser usada mais para retornar o resultado. Algoritmo "Gerenciamento de Produtos" const quantidadeMaximaProdutos = 2 tipo loja = registro nome: caractere preco: real estoque: inteiro fimRegistro var produtos: vetor [1..quantidadeMaximaProdutos] de loja quantidadeProdutosCadastrados, opcao, r, quantidade : inteiro nome, opcao2 : caractere funcao produtoExiste(nome:caractere):inteiro var contador, resultado: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() inicio 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 fimProcedimento funcao consultarEstoque(nome:caractere) : inteiro var contador : inteiro resultado:inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então resultado <- produtos[contador].estoque interrompa() fimSe fimPara retorne resultado fimFuncao funcao atualizarEstoque (opcao2:caractere;quantidade:inteiro) : inteiro var contador, c : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se opcao2 = "R" então produtos[contador].estoque <- produtos[contador].estoque - quantidade c <- produtos[contador].estoque interrompa senao se opcao2 = "A" então produtos[contador].estoque <- produtos[contador].estoque + quantidade c <- produtos[contador].estoque interrompa fimSe fimse fimPara retorne c fimfuncao Inicio quantidadeProdutoscadastrados <- 1 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 se quantidadeProdutosCadastrados <= quantidadeMaximaProdutos então cadastrarProduto() senao escreval(" Limite de cadastro atingido") fimSe caso 2 escreval ("Informe o nome do produto que deseja consultar o estoque") leia(nome) r <- produtoExiste(nome) se r > 0 então r <- consultarEstoque(nome) escreval(" A quantidade de estoque do produto ", nome, " é ", r:1) senao escreval(" Produto não cadastrado.") fimSe caso 3 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) se opcao2 = "R" então escreval ("Quanto gostaria de retirar") leia(quantidade) r <- atualizarEstoque(opcao2,quantidade) escreval("O novo estoque é de ", nome, " é ", r:1) senao se opcao2 = "A" então escreval ("Quanto gostaria de adicionar") leia(quantidade) r <- atualizarEstoque(opcao2,quantidade) escreval("O novo estoque é de ", nome, " é ", r:1) fimse fimse senao escreval(" Produto não cadastrado.") fimSe fimescolha ate (opcao=0) Fimalgoritmo
  5. Estou fazendo assim agora, porém está dando erro, quando cadastra dois produtos e tenta consultar o estoque do primeiro produto cadastrado, não funciona e aparece a mensagem "Produto não cadastrado", que não era para aparecer. Se alguém puder identificar o erro aqui : Algoritmo "Gerenciamento de Produtos" const quantidadeMaximaProdutos = 2 tipo loja = registro nome: caractere preco: real estoque: inteiro fimRegistro var produtos: vetor [1..quantidadeMaximaProdutos] de loja quantidadeProdutosCadastrados, opcao, r : inteiro nome : caractere funcao produtoExiste(nome:caractere):inteiro var contador:inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então retorne contador interrompa() fimse fimPara retorne 0 fimFuncao procedimento cadastrarProduto() inicio 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 fimProcedimento funcao consultarEstoque(nome:caractere) : inteiro var contador : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então retorne produtos[contador].estoque fimSe fimPara fimFuncao Inicio quantidadeProdutoscadastrados <- 1 repita escreval("[1]Cadastrar produto") escreval("[2] Consultar estoque") escreval("Escolha uma opcao") leia (opcao) escolha opcao caso 1 se quantidadeProdutosCadastrados <= quantidadeMaximaProdutos então cadastrarProduto() senao escreval(" Limite de cadastro atingido") fimSe caso 2 escreval ("Informe o nome do produto que deseja consultar o estoque") leia(nome) r <- produtoExiste(nome) se produtoExiste(nome) > 0 então r <- consultarEstoque(nome) escreval(" A quantidade de estoque do produto ", nome, " é ", r:1) senao escreval(" Produto não cadastrado.") fimSe fimescolha ate (opcao=0) Fimalgoritmo
  6. Tô tentando fazer assim agora, troquei a função cadastrarProduto pelo procedimento cadastrarProduto, porque não sei o que a função poderia retornar e o procedimento não retorna nada. Será que esse início estaria adequado agora? Algoritmo "Gerenciamento de Produtos" const quantidadeMaximaProdutos = 2 tipo loja = registro nome: caractere preco: real estoque: inteiro fimRegistro var produtos: vetor [1..quantidadeMaximaProdutos] de loja quantidadeProdutosCadastrados, opcao: inteiro procedimento cadastrarProduto() inicio escreval("Informe o nome do produto") leia(produtos[quantidadeProdutosCadastrados].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") fimProcedimento Inicio quantidadeProdutoscadastrados <- 1 se quantidadeProdutosCadastrados <= quantidadeMaximaProdutos então cadastrarProduto() senao escreval(" Limite de cadastro atingido") fimSe Fimalgoritmo
  7. @Midori , às vezes funciona, mas às vezes não e aparece esse erro :
  8. @kgin , valeu, estou pesquisando sobre registro, não sabia que existia em portugol. Não sei por que esse código aqui, não está funcionando, será que você conseguiria encontrar o erro? Algoritmo "Gerenciamento de Produtos" // const QUANTIDADE_MAXIMA_PRODUTOS = 100 tipo t_produto = registro nome: caractere preco: real estoque: inteiro fimRegistro var produtos: vetor [1..QUANTIDADE_MAXIMA_PRODUTOS] de t_produto quantidade_produtos_cadastrados: inteiro Inicio produtos[1].nome <- "Produto A" produtos[1].preco <- 9.99 produtos[1].estoque <- 50 escreva("Nome do produto: ", produtos[1].nome) escreva("Preço do produto: ", produtos[1].preco) escreva("Estoque do produto: ", produtos[1].estoque) Fimalgoritmo
  9. Enunciado da questão: Você foi designado para criar um programa em portugol que ajude uma loja a gerenciar seu estoque de produtos eletrônicos. A loja possui um catálogo de produtos, cada um representado por um vetor de registro com as seguintes informações: Nome do produto (string) Preço unitário (real) Quantidade em estoque (inteiro) Sua tarefa é escrever um programa que realize as seguintes operações através de funções: Cadastro de Produto: Crie uma função que permita ao usuário cadastrar um novo produto, informando o nome, preço unitário e quantidade em estoque. Os dados devem ser armazenados no vetor de produtos. Consulta de Estoque: Crie uma função que permita ao usuário consultar o estoque de um produto específico, informando o nome do produto. A função deve retornar a quantidade em estoque desse produto. Atualização de Estoque: Crie uma função que permita ao usuário atualizar o estoque de um produto existente, informando o nome do produto e a quantidade a ser adicionada ou subtraída do estoque. Listagem de Produtos: Crie uma função que liste todos os produtos cadastrados, exibindo o nome, preço unitário e quantidade em estoque de cada um. Fiz esse código para a questão, mas não sei se está correto e se o que as funções retornam está legal, se alguém puder executar e me ver o que precisa mudar, melhorar : Algoritmo "ProdutosEletronicos" Var nomesProdutos : vetor [1..2] de caractere precosProdutos : vetor [1..2] de real estoqueProdutos : vetor [1..2] de inteiro produtosNaoCadastrados : logico opcao, resultado, produtosCadastrados : inteiro funcao cadastrarProduto (): inteiro var contador, lugaresOcupados : inteiro resposta, s : caractere inicio resposta <- "s" contador <-1 enquanto (resposta = "s") e (contador <= 2) faca se (nomesProdutos[contador] = "") e (precosProdutos[contador] = 0) e (estoqueProdutos[contador] = 0) então escreval("Informe o nome do produto") leia(nomesProdutos[contador]) escreval ("Informe o preço do produto") leia(precosProdutos[contador]) escreval ("Informe a quantidade em estoque") leia(estoqueProdutos[contador]) escreval ("Produto Cadastrado com sucesso") produtosCadastrados <- produtosCadastrados + 1 produtosNaoCadastrados <- falso escreval (" Quer cadastrar outro produto? S/N") leia(resposta) se resposta = "s" então contador <- contador + 1 senao escreval ("Cadastro de produtos concluído.") fimSe senao lugaresOcupados <- lugaresOcupados+1 se lugaresOcupados = 2 então escreval("Não há mais espaços disponíveis") fimSe contador <- contador + 1 fimse fimEnquanto retorne produtosCadastrados fimFuncao funcao consultarEstoque(): inteiro var contador : inteiro nome ,x: caractere inicio escreval("Informe o nome do produto que gostaria de consultar") leia(nome) para contador <- 1 ate 2 faca se nome = nomesProdutos[contador] então retorne (estoqueProdutos[contador]) fimse fimPara fimFuncao funcao atualizarEstoque(): inteiro var contador, quantidade : inteiro resposta, nome : caractere inicio escreval("Informe o nome do produto que gostaria de adicionar ou retirar") leia(nome) para contador <- 1 ate 2 faca se nome = nomesProdutos[contador] então escreval (" Gostaria de retirar ou adiconar? A/R") leia(resposta) escreval (" Quanto?") leia(quantidade) se opcao = "a" então estoqueProdutos[contador]<- estoqueProdutos[contador]+quantidade escreval(" A quantidade adicionada é :", quantidade) escreval (" O novo estoque é :") retorne estoqueProdutos[contador] interrompa senao se opcao = "r" então se (estoqueProdutos [contador] > quantidade) então estoqueProdutos [contador] <- estoqueProdutos[contador]-quantidade escreval(" A quantidade retirada é :", quantidade) escreva (" O novo estoque é:") retorne estoqueProdutos[contador] senao se (estoqueProdutos [contador] = quantidade) então estoqueProdutos[contador]<- estoqueProdutos[contador]-quantidade nomesProdutos[contador]<- "" precosProdutos[contador]<- 0 escreval (" O produto foi removido, pois não tem mais estoque") produtosCadastrados<- produtosCadastrados-1 retorne estoqueProdutos[contador] escreval ("Tentativa inválida!") escreva("produtos retirados :") retorne 0 fimSe fimse fimse fimse fimse fimPara fimFuncao funcao listarProduto(): inteiro var contador, produtosCadastrados : inteiro inicio escreval (" Produtos cadastrados :") para contador <- 1 ate 2 faca se (nomesProdutos[contador]<> "") e (precosProdutos[contador]<> 0) e (estoqueProdutos[contador]<> 0) então escreval ("Nome :", nomesProdutos[contador]) escreval( "Preço :", precosProdutos[contador]) escreval ("Estoque :", estoqueProdutos[contador] ) produtosCadastrados <- produtosCadastrados+1 escreval() fimSe fimPara escreva ("Produtos listados :") retorne produtosCadastrados fimfuncao Inicio produtosNaoCadastrados <- verdadeiro repita escreval() escreval(" Loja de produtos eletrônicos") escreval(" Escolha uma opção:") escreval (" 1 - Cadastrar produtos ") escreval (" 2 - consultarEstoque ") escreval (" 3 - Atualizar estoque ") escreval (" 4 - Listar Produtos ") escreval (" 0 - Sair ") leia(opcao) limpaTela escolha opcao caso 1 resultado <- cadastrarProduto() escreval("Produtos Cadastrados :", resultado) caso 2 se produtosNaoCadastrados então escreval(" Produtos cadastrados :", produtosCadastrados) escreval(" Cadastre um produto primeiro") senao resultado <- consultarEstoque() escreval("estoque do produto :", resultado) fimSe caso 3 se produtosNaoCadastrados então escreva(" Produtos cadastrados :", produtosCadastrados) senao resultado <- atualizarEstoque() escreval(resultado) fimse caso 4 se produtosNaoCadastrados então escreva(" Produtos cadastrados :", produtosCadastrados) senao escreval(listarProduto) fimSe fimEscolha ate (opcao = 0) Fimalgoritmo
  10. @kgin, @Midori , valeu os dois códigos funcionaram. A constante sendo usada como tamanho do vetor Só funciona assim no caso : [1..QUANTIDADE_FRUTAS], assim, não funciona : [QUANTIDADE_FRUTAS]?
  11. @Diego Mendes Rodrigues , os dois códigos não funcionam, aparece esse erro : @Midori, já tentei fazer isso, mas sempre dá erro. Você poderia mostrar um exemplo de um vetor que usa constante para definir o tamanho e que funcione no visualg?
  12. Esse código abaixo tem uma constante chamada MAX_PRODUTOS. Depois, essa constante é utilizada dentro do vetor numeros. Não sei se é possível fazer isso e, se é, como faço para colocar valores nesse vetor que utiliza a constante para definir o tamanho? Algoritmo "Teste" const MAX_ELEMENTOS = 5 Var vetor numeros[MAX_ELEMENTOS] : inteiro
  13. @Midori , obrigada. Não sei se pode postar no mesmo tópico, essa questão pede para criar um programa que ajude uma loja a gerenciar seu estoque de produtos eletrônicos. Tenho uma dúvida na questão não fala o limite de produtos, com isso, como vou criar um vetor para esses produtos, se não sei a quantidade de produtos que vão ser cadastradas? Tem como em portugol perguntar ao usuário quantos produtos ele vai cadastrar e só então criar o tamanho do vetor para armazenar os dados? Enunciado: Você foi designado para criar um programa em Portugol que ajude uma loja a gerenciar seu estoque de produtos eletrônicos. A loja possui um catálogo de produtos, cada um representado por um vetor de registro com as seguintes informações: Nome do produto (string) Preço unitário (real) Quantidade em estoque (inteiro) Sua tarefa é escrever um programa que realize as seguintes operações através de funções: Cadastro de Produto: Crie uma função que permita ao usuário cadastrar um novo produto, informando o nome, preço unitário e quantidade em estoque. Os dados devem ser armazenados no vetor de produtos. Consulta de Estoque: Crie uma função que permita ao usuário consultar o estoque de um produto específico, informando o nome do produto. A função deve retornar a quantidade em estoque desse produto. Atualização de Estoque: Crie uma função que permita ao usuário atualizar o estoque de um produto existente, informando o nome do produto e a quantidade a ser adicionada ou subtraída do estoque. Listagem de Produtos: Crie uma função que liste todos os produtos cadastrados, exibindo o nome, preço unitário e quantidade em estoque de cada um.
  14. @Midori , então poderia usar qualquer um dos dois ? esse : 5,3 + 6,5 + 8,2 + 7,0 + 4,5 + 5,0 + 9,0 + 5,5 = 51 51 / 8 = 6,38, ou esse : (5,3 + 6,5)/2 + (8,2 + 7,0)/2 + (4,5 + 5,0)/2 + (9,0 + 5,5)/2 = 25,5 25,5 / 4 = 6,38. Para fazer o mesmo cálculo da média da classe ? Nesse caso aqui : (5,3 + 6,5)/2 + (8,2 + 7,0)/2 + (4,5 + 5,0)/2 + (9,0 + 5,5)/2 = 25,5 , tenho impressão que ele está fazendo mais divisão do que : 5,3 + 6,5 + 8,2 + 7,0 + 4,5 + 5,0 + 9,0 + 5,5 = 51, por que nesse aqui : (5,3 + 6,5)/2 + (8,2 + 7,0)/2 + (4,5 + 5,0)/2 + (9,0 + 5,5)/2 = 25,5 , ele divide por 2 primeiro e nesse aqui não : 5,3 + 6,5 + 8,2 + 7,0 + 4,5 + 5,0 + 9,0 + 5,5 = 51.
  15. @Midori , ainda não entendi qual a finalidade dessa parte "total/12" do primeiro código e qual a finalidade dessa outra parte "mediaTurma" no segundo código. A abordagem do primeiro código é somar todas as notas e dividir pelo total de notas 12? A abordagem do segundo código é somar as médias individuais e dividir pelo total de alunos 6? Esses dois trechos de códigos desempenham o mesmo papel, que é mostrar a média da turma, ou funções diferentes?
  16. @Midori , aproveitando o tópico, tenho uma dúvida, esses dois códigos aqui servem para calcular a média da classe, mas não entendi por que um soma as notas total e divide por 12 em um código Escreval("MEDIA DA CLASSE: ", Total/12) e o outro código tem dividir por 2 e depois tem que dividir por 6 para encontrar a mesma média da classe que o outro código. Se já calculou a média individual dividindo por 2 e armazenou no vetor mediaAluno, não deveria apenas jogar as médias de cada aluno na variável "somaMedia", atráves do vetor mediaAluno, como está abaixo. Só não entendi por que tem que dividir por 6. mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2 somaMedia <- somaMedia+mediaAluno[contador] mediaTurma <- somaMedia/6 1º) : Algoritmo "Media da Classe" Var Nota1 : real Real Nota2: Real Total: Real Nome: Caractere Conta: Inteiro Aprov: Inteiro Inicio Para Conta <- 1 ate 6 faca Escreva("Nome ", Conta, ": ") Leia(Nome) Escreva(" Nota 1: ") Leia(Nota1) Escreva(" Nota 2: ") Leia(Nota2) Se((Nota1 + Nota2)/2 > 7) então Aprov <- Aprov + 1 FimSe Total <- Total + Nota1 + Nota2 FimPara Escreval("MEDIA DA CLASSE: ", Total/12) Escreval("APROVADOS: ", Aprov/6 * 100, "%") Escreval("REPROVADOS: ", (1 - Aprov/6) * 100, "%") Fimalgoritmo 2º) : Algoritmo "AnáliseDasNotasDaTurma" Var nome : vetor [1..6] de caractere nota1 : vetor [1..6] de real nota2 : vetor[1..6] de real mediaAluno : vetor [1..6] de real contador : inteiro somaMedia, mediaTurma : real alunosAcimaDaMediaDaTurma : inteiro Inicio para contador <- 1 ate 6 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/6 limpatela escreval("Listagem de alunos :") para contador <- 1 ate 6 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
  17. Como escolher nomes adequados para variáveis, algoritmo e nome para salvar o arquivo no visualg? Esse código abaixo é de um algoritmo que serve para reservar espaços de uma fileira de um cinema. As vagas vão de 1 até 10. Dei o nome "lugares" para o vetor que serve para reservar esses lugares, porém não sei se o nome do vetor é adequado, se ele tem que ficar no plural mesmo porque é um vetor com mais de um espaço. Outra coisa não sei se o nome do algoritmo é adequado para o código e se salva o arquivo com o mesmo nome do algoritmo. algoritmo "reservaLugarCinema" Var lugares : vetor [1..10] de caractere cadeira : inteiro r : caractere procedimento mostrarFileira () var i : inteiro inicio para i de 1 ate 10 faca se lugares[i] = "" então escreva ("[B", i, "]") senao escreva ("[---]") fimSe Fimpara fimprocedimento Inicio repita limpatela mostrarFileira () escreval escreva ("Escolha B") leia(cadeira) se lugares[cadeira] = "" então lugares[cadeira] <- "x" escreval (" Lugar reservado com sucesso") senao escreval ("Erro, lugar ocupado.") fimSe escreval (" Quer continuar[s/n]") leia (r) ate (r= "n") Fimalgoritmo
  18. @Simon Viegas , minha pergunta foi se a função asc só retorna o decimal da primeira letra da palavra, porque nesse código abaixo, a variável 'palavra' contém o nome "lógica" e quando executa asc(palavra), só retorna o decimal da primeira letra, no caso do "L". Algoritmo "Funções asc " Var palavra : caractere Inicio palavra <- "Lógica" escreval (asc(palavra)) fimalgoritmo E enquanto a função carac minha dúvida é se ela só ler um decimal por vez, ou se pode ler um conjunto de decimais que forma uma palavra inteira, porque ao tentar retornar, por exemplo, o nome "Lógica" utilizando decimais que formam esse nome, dá erro . Como aqui : Algoritmo "Funções carac" Var palavra : inteiro Inicio palavra <- 761621031059997 escreval (carac(palavra)) // Coloquei os decimais que representam cada letra da palavra "Lógica" // junto para tentar imprimir a palavra "Lógica" de uma vez só. //76 - L // 162 - ó // 103 - g // 105 - i // 99 - c // 97 - a Fimalgoritmo
  19. 1º)@Simon Viegas , estava pensando justamente nessa função asc para tentar desenvolver essas funções que você propôs. Essa resolução vai ajudar a entender. Mas ainda tenho dúvidas em relação a função asc e carac. Essa função asc aí ela só retorna o número decimal da primeira letra da palavra, mesmo que a palavra tenha outra letras ? Como aqui : Algoritmo "Funções asc e carac" Var palavra : caractere Inicio palavra <- "Lógica" escreval (asc(palavra)) escreval (carac(33)) Fimalgoritmo 2º)Mesmo que a variável palavra tenha "ógica", ela só retorna o decimal da primeira letra no caso, do "L" ? 3º)E função carac só pode ler dois números por vez para representar um caractere ou três números por vezes para representar um caractere, não pode ler um conjunto de números para representar a palavra inteira ? Já que você mencionou a tabela ASCII. Tenho um pouco de dificuldade para entender. A tabela ASCII só funciona para dados do tipo caractere? Quando cria uma variável do tipo inteiro ou real, está utilizando a tabela ASCII também?
  20. @Simon Viegas , essa versão que você utiliza no caso é mais antiga? E já que as funções maiusc e minusc não funcionam corretamente nessa versão 3.0.6.5, então seria melhor seguir a sua recomendação e tenta criar duas funções MinuscPLus e MaiuscPlus?
  21. @Simon Viegas , não sei se é a versão do visualg que estou utilizando, porque ao executar esse mesmo código que você postou, aparece assim : . E esse outro também : . Está dando a entender que tanto a função maiusc como minusc funcionam para os caracteres acentuados na versão do visualg que utilizo. Utilizo a versão 3.0.7.0 .
  22. @Simon Viegas, não consegui descobrir o que ele queria dizer e acho que nem vou, no VisualG funciona e você mesmo está falando que funciona. Nesse print que você postou parece que a função maiusc é que não funciona com caracteres com acento, porque "lógicadeprogramação" está todo em minúsculo, então significa que a função minusc está funcionando com os caracteres acentuados.
  23. @Simon Viegas , Como assim não funcionam para caracteres acentuadas ? E por que aqui imprime com acento "lógica" tanto com a função "maiusc" como com "minusc"? var teste : caractere inicio teste <- "LógicaDeProgramação" escreval (maiusc(teste)) escreval (minusc(teste))
  24. Estou terminando um vídeo aula sobre funções e nela o professor fala que as funções "maiusc" e "minusc", não funcionam para variáveis caracteres dentro do visualg. Como assim não funciona ? Porque esse código aqui, "teste" é uma variável do tipo caractere e "maiusc" e "minusc" funcionam normalmente. Gostaria de uma explicação de o porquê ele disse isso, se nesse código aqui, essas funções funcionam com a variável que é do tipo caractere. Algoritmo "Funcões" // Descrição : Aqui você descreve o que o programa faz! (função) // Autor(a) : Nome do(a) aluno(a) // Data atual : 03/08/2023 Var teste : caractere Inicio teste <- "LógicaDeProgramação" escreval (maiusc(teste)) escreval (minusc(teste)) Fimalgoritmo
  25. @Simon Viegas , obrigada. Tenho uma dúvida ainda você não disse que poderia utilizar a passagem de parâmetro por referência se quisesse retornar dois valores de dentro da função, já que a função só poderia retornar um valor ? Como faria para retornar esse dois valores aí tanto a soma como o produto, de dentro da função, ou é impossível utilizando função ? Outra dúvida em funções é obrigatório declarar o tipo de retorno delas? Tentei passar esse código aí que postei para funções, mas ele só funciona se declarar o tipo de retorno da função, ou seja, colocar o tipo "inteiro". Outra coisa, fica aparecendo um zero a mais no código : algoritmo "Exemplo_Parametros_Por_Referencia" var resultado_soma, resultado_produto, num1, num2: inteiro funcao calcular_soma_produto(a, b: inteiro; var soma, produto: inteiro):inteiro inicio soma <- a + b produto <- a * b fimfuncao inicio escreva("Digite o primeiro número: ") leia(num1) escreva("Digite o segundo número: ") leia(num2) escreval(calcular_soma_produto(num1, num2, resultado_soma, resultado_produto)) escreval("Soma: ", resultado_soma) escreval("Produto: ", resultado_produto) 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!