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.
Código que fiz para essa questão :
Algoritmo "ProdutosEletronicos"
Var
nomesProdutos : vetor [1..2] de caracter
precosProdutos : vetor [1..2] de real
estoqueProdutos : vetor [1..2] de inteiro
produtosCadastradosOuNao : logico
opcao, resultado, produtosCadastrados : inteiro
funcao cadastrarProduto (): inteiro
var
contador, lugaresOcupados : inteiro
resposta, s : caracter
inicio
resposta <- "s"
contador <-1
enquanto (resposta = "s") e (contador <= 2) faca
se (nomesProdutos[contador] = "") e (precosProdutos[contador] = 0) e (estoqueProdutos[contador] = 0) entao
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
produtosCadastradosOuNao <- falso
escreval (" Quer cadastrar outro produto? S/N")
leia(resposta)
se resposta = "s" entao
contador <- contador + 1
senao
escreval ("Cadastro de produtos concluído.")
fimSe
senao
lugaresOcupados <- lugaresOcupados+1
se lugaresOcupados = 2 entao
escreval("Não há mais espaços disponíveis")
fimSe
contador <- contador + 1
// Avance para o próximo lugar
fimse
fimEnquanto
retorne produtosCadastrados
fimFuncao
funcao consultarEstoque(): inteiro
var
contador : inteiro
nome ,x: caracter
inicio
escreval("Informe o nome do produto que gostaria de consultar")
leia(nome)
para contador <- 1 ate 2 faca
se nome = nomesProdutos[contador] entao
retorne (estoqueProdutos[contador])
fimse
fimPara
fimFuncao
funcao atualizarEstoque(): inteiro
var
contador, quantidade : inteiro
resposta, nome : caracter
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] entao
escreval (" Gostaria de retirar ou adiconar? A/R")
leia(resposta)
escreval (" Quanto?")
leia(quantidade)
se resposta = "a" entao
estoqueProdutos[contador]<- estoqueProdutos[contador]+quantidade
escreval(" A quantidade adicionada é :", quantidade)
escreva (" O novo estoque é :")
retorne estoqueProdutos[contador]
senao
se resposta = "r" entao
se (estoqueProdutos [contador] > quantidade) entao
estoqueProdutos [contador] <- estoqueProdutos[contador]-quantidade
escreval(" A quantidade retirada é :", quantidade)
escreva (" O novo estoque é:")
retorne estoqueProdutos[contador]
senao
se (estoqueProdutos [contador] = quantidade) entao
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]
senao
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) entao
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
produtosCadastradosOuNao <- verdadeiro
repita
escreval()
escreval("*********************************")
escreval(" Loja de produtos eletrônicos")
escreval("*********************************")
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
se opcao = 1 entao
resultado <- cadastrarProduto()
escreval("Produtos Cadastrados :", resultado)
senao
se opcao = 2 entao
se produtosCadastradosOuNao entao
escreva(" Produtos cadastrados :",produtosCadastrados)
escreval(" Cadastre um produto primeiro")
senao
resultado <- consultarEstoque()
escreval("estoque do produto :",resultado)
fimSe
senao
se opcao = 3 entao
se produtosCadastradosOuNao entao
escreva(" Produtos cadastrados :", produtosCadastrados)
senao
resultado <- atualizarEstoque()
escreval(resultado)
fimse
senao
se opcao = 4 entao
se produtosCadastradosOuNao entao
escreva(" Produtos cadastrados :", produtosCadastrados)
senao
escreval(listarProduto)
fimSe
fimSE
fimSE
fimSe
fimSe
ate (opcao = 0)
Fimalgoritmo
Bom dia, Eli !
Acredito que este fórum não seja o mais adequado para essa sua demanda.
Sugiro que você faça seu pedido em forma de tarefa. Assim, os professores desta área poderão te oferecer um serviço completo por um preço justo. Está é a famosa relação "ganha x ganha". Todos ficarão satisfeitos.
Saúde e Sucesso para você!
funcao cadastroProduto(var nomes: vetor[100] de caractere, var precos: vetor[100] de real, var quantidades: vetor[100] de inteiro, var totalProdutos: inteiro)
var nomeProduto: caractere
var precoProduto: real
var quantidadeProduto: inteiro
escreva("Digite o nome do produto: ")
leia(nomeProduto)
escreva("Digite o preço unitário do produto: ")
leia(precoProduto)
escreva("Digite a quantidade em estoque do produto: ")
leia(quantidadeProduto)
// Armazena os dados no vetor de produtos
nomes[totalProdutos] <- nomeProduto
precos[totalProdutos] <- precoProduto
quantidades[totalProdutos] <- quantidadeProduto
totalProdutos <- totalProdutos + 1
fim funcao
funcao consultaEstoque(var nomes: vetor[100] de caractere, var quantidades: vetor[100] de inteiro, totalProdutos: inteiro)
var nomeProdutoConsulta: caractere
var encontrado: logico <- falso
escreva("Digite o nome do produto para consulta de estoque: ")
leia(nomeProdutoConsulta)
// Procura o produto no vetor de produtos
para i de 0 ate totalProdutos - 1 faca
se nomes[i] = nomeProdutoConsulta entao
escreva("Quantidade em estoque de ", nomeProdutoConsulta, ": ", quantidades[i])
encontrado <- verdadeiro
interrompa
fimpara
se nao encontrado entao
escreva("Produto não encontrado no estoque.")
fimse
fim funcao
funcao atualizacaoEstoque(var nomes: vetor[100] de caractere, var quantidades: vetor[100] de inteiro, totalProdutos: inteiro)
var nomeProdutoAtualizacao: caractere
var quantidadeAtualizacao: inteiro
var encontrado: logico <- falso
escreva("Digite o nome do produto para atualização de estoque: ")
leia(nomeProdutoAtualizacao)
// Procura o produto no vetor de produtos
para i de 0 ate totalProdutos - 1 faca
se nomes[i] = nomeProdutoAtualizacao entao
escreva("Digite a quantidade a ser adicionada/subtraída do estoque: ")
leia(quantidadeAtualizacao)
// Atualiza o estoque
quantidades[i] <- quantidades[i] + quantidadeAtualizacao
escreva("Estoque atualizado para ", nomeProdutoAtualizacao, ": ", quantidades[i])
encontrado <- verdadeiro
interrompa
fimse
fimpara
se nao encontrado entao
escreva("Produto não encontrado no estoque.")
fimse
fim funcao
funcao listagemProdutos(var nomes: vetor[100] de caractere, var precos: vetor[100] de real, var quantidades: vetor[100] de inteiro, totalProdutos: inteiro)
escreva("Listagem de Produtos:")
// Exibe os dados de cada produto
para i de 0 ate totalProdutos - 1 faca
escreva("Nome: ", nomes[i])
escreva("Preço Unitário: ", precos[i])
escreva("Quantidade em Estoque: ", quantidades[i])
escreva("------------------------")
fimpara
fim funcao
// Programa Principal
var
nomesProdutos: vetor[100] de caractere
precosProdutos: vetor[100] de real
quantidadesProdutos: vetor[100] de inteiro
totalProdutos: inteiro <- 0
opcao: inteiro
repita
escreva("Menu:")
escreva("1 - Cadastro de Produto")
escreva("2 - Consulta de Estoque")
escreva("3 - Atualização de Estoque")
escreva("4 - Listagem de Produtos")
escreva("0 - Sair")
escreva("Escolha uma opção: ")
leia(opcao)
escolha opcao
caso 1
cadastroProduto(nomesProdutos, precosProdutos, quantidadesProdutos, totalProdutos)
caso 2
consultaEstoque(nomesProdutos, quantidadesProdutos, totalProdutos)
caso 3
atualizacaoEstoque(nomesProdutos, quantidadesProdutos, totalProdutos)
caso 4
listagemProdutos(nomesProdutos, precosProdutos, quantidadesProdutos, totalProdutos)
caso 0
// Sair do programa
outrocaso
escreva("Opção inválida. Tente novamente.")
fimescolha
ate opcao = 0
Inicialização de Variáveis: A variável produtosCadastrados
deve ser inicializada em zero antes de ser utilizada para contar produtos cadastrados.
Tratamento de Produtos Cadastrados: A lógica para verificar se algum produto foi cadastrado pode ser melhorada. Em vez de usar uma variável booleana (produtosCadastradosOuNao
), você pode verificar o número de produtos cadastrados diretamente.
Exibição de Resultados: Ao listar produtos ou ao consultar o estoque, você deve garantir que as mensagens sejam informativas.
Limpeza de Tela: A função limpaTela
não é uma função padrão em muitas implementações de Portugol. Você pode remover essa chamada ou substituir por uma instrução que simplesmente organize a saída.
Retorno de Funções: As funções devem ter uma lógica clara para retornar valores. Certifique-se de que todas as saídas estejam sendo tratadas corretamente.
Algoritmo "ProdutosEletronicos"
Var
nomesProdutos : vetor [1..2] de caracter
precosProdutos : vetor [1..2] de real
estoqueProdutos : vetor [1..2] de inteiro
opcao, resultado, produtosCadastrados : inteiro
funcao cadastrarProduto (): inteiro
var
contador : inteiro
resposta : caracter
inicio
resposta <- "s"
produtosCadastrados <- 0
contador <- 1
enquanto (resposta = "s") e (contador <= 2) faca
se (nomesProdutos[contador] = "") entao
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])
produtosCadastrados <- produtosCadastrados + 1
escreval ("Produto cadastrado com sucesso!")
escreval ("Quer cadastrar outro produto? S/N")
leia(resposta)
contador <- contador + 1
senao
escreval("Não há mais espaços disponíveis.")
resposta <- "n"
fimse
fimEnquanto
retorne produtosCadastrados
fimFuncao
funcao consultarEstoque(): inteiro
var
contador : inteiro
nome : caracter
inicio
escreval("Informe o nome do produto que gostaria de consultar:")
leia(nome)
para contador <- 1 ate 2 faca
se nome = nomesProdutos[contador] entao
retorne estoqueProdutos[contador]
fimse
fimPara
escreval("Produto não encontrado.")
retorne -1 // Indicador de produto não encontrado
fimFuncao
funcao atualizarEstoque(): inteiro
var
contador, quantidade : inteiro
resposta, nome : caracter
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] entao
escreval("Gostaria de retirar ou adicionar? A/R")
leia(resposta)
escreval("Quanto?")
leia(quantidade)
se resposta = "a" entao
estoqueProdutos[contador] <- estoqueProdutos[contador] + quantidade
escreval("A quantidade adicionada é:", quantidade)
senao
se resposta = "r" entao
se estoqueProdutos[contador] >= quantidade entao
estoqueProdutos[contador] <- estoqueProdutos[contador] - quantidade
escreval("A quantidade retirada é:", quantidade)
senao
escreval("Estoque insuficiente!")
fimse
fimse
retorne estoqueProdutos[contador]
fimse
fimPara
escreval("Produto não encontrado.")
retorne -1 // Indicador de produto não encontrado
fimFuncao
funcao listarProduto(): inteiro
var
contador : inteiro
inicio
escreval("Produtos cadastrados:")
para contador <- 1 ate 2 faca
se nomesProdutos[contador] <> "" entao
escreval("Nome:", nomesProdutos[contador])
escreval("Preço:", precosProdutos[contador])
escreval("Estoque:", estoqueProdutos[contador])
fimse
fimPara
retorne 0 // Indicador de listagem completa
fimFuncao
Inicio
produtosCadastrados <- 0
repita
escreval()
escreval("*********************************")
escreval(" Loja de produtos eletrônicos")
escreval("*********************************")
escreval(" Escolha uma opção:")
escreval (" 1 - Cadastrar produtos ")
escreval (" 2 - Consultar Estoque ")
escreval (" 3 - Atualizar Estoque ")
escreval (" 4 - Listar Produtos ")
escreval (" 0 - Sair ")
leia(opcao)
se opcao = 1 entao
resultado <- cadastrarProduto()
escreval("Produtos Cadastrados:", resultado)
senao
se opcao = 2 entao
se produtosCadastrados = 0 entao
escreval("Cadastre um produto primeiro.")
senao
resultado <- consultarEstoque()
se resultado <> -1 entao
escreval("Estoque do produto:", resultado)
fimse
fimse
senao
se opcao = 3 entao
if produtosCadastrados = 0 then
escreval("Cadastre um produto primeiro.")
senao
resultado <- atualizarEstoque()
fimse
senao
se opcao = 4 entao
if produtosCadastrados = 0 then
escreval("Nenhum produto cadastrado.")
senao
listarProduto()
fimse
fimse
fimse
fimse
ate (opcao = 0)
Fimalgoritmo