Algoritmo de Cadastro de Produtos utilizando matrizes

Developer Giovani

Fala galera, tudo beleza? Aqui vai um exemplo bem legal utilizando praticamente todos aprendizados de algoritmos. Se você for professor, este é um exemplo para trabalhos finais de disciplina.

Imagine que você precisa desenvolver um programa para cadastrar produtos em uma loja. Cada produto tem as seguintes informações: nome, preço e quantidade em estoque.

Para isso, crie uma matriz ou vetores onde cada linha representa um produto e cada coluna representa uma informação desse produto (nome, preço e quantidade em estoque). O programa deve ser capaz de realizar as seguintes operações:

  1. Cadastrar um novo produto
  2. Listar todos os produtos cadastrados
  3. Sair

Lembre-se de validar as entradas do usuário e tratar possíveis erros que possam ocorrer.

Testes:

Aqui estão alguns testes que podem ser realizados para verificar se o programa está funcionando corretamente:

  1. Cadastre 3 produtos com nome, preço e quantidade em estoque diferentes.
  2. Liste todos os produtos cadastrados.
  3. utilize o menu sair.

Esses testes devem ajudar a verificar se o programa está funcionando corretamente e a identificar possíveis erros ou falhas que precisam ser corrigidos.

No final do post terá o link com este mesmo exercício para o site showdelphi.com.br com sugestões de resposta e explicações em pascal / Delphi / Lazarus.

 

Resposta em Algoritmo em Português

// criado por Giovani DA Cruz

algoritmo cadastro_produtos;

const
MAX_PRODUTOS <- 100;
MAX_CARACTERES <- 50;

tipo
TProduto <- registro
nome: vetor[MAX_CARACTERES] de caractere;
preco: real;
quantidade: inteiro;
fim_registro;

TListaProdutos <- vetor[1..MAX_PRODUTOS] de TProduto;

var
listaProdutos: TListaProdutos;
numProdutos, opcao: inteiro;

procedimento cadastrarProduto(var listaProdutos: TListaProdutos; var numProdutos: inteiro);
var
produto: TProduto;
inicio
escreva("CADASTRO DE PRODUTO");
escreva("-------------------");
escreva;

// leitura dos dados do produto
escreva("Nome: ");
leia(produto.nome);

escreva("Preco: ");
leia(produto.preco);

escreva("Quantidade: ");
leia(produto.quantidade);

// adiciona o produto na lista
numProdutos <- numProdutos + 1;
listaProdutos[numProdutos] <- produto;

escreva;
escreva("Produto cadastrado com sucesso!");
escreva;
fim_procedimento;

procedimento exibirProdutos(listaProdutos: TListaProdutos; numProdutos: inteiro);
var
i: inteiro;
inicio
escreva("LISTA DE PRODUTOS");
escreva("-----------------");
escreva;

// exibe os dados de cada produto cadastrado
para i <- 1 ate numProdutos faca
escreva("Nome: ", listaProdutos[i].nome);
escreva("Preco: ", listaProdutos[i].preco:0:2);
escreva("Quantidade: ", listaProdutos[i].quantidade);
escreva;
fim_para;
fim_procedimento;

inicio
numProdutos <- 0; // inicializa o contador de produtos cadastrados

repita
// exibe o menu de opções
escreva("MENU DE OPCOES");
escreva("--------------");
escreva("1 - Cadastrar produto");
escreva("2 - Exibir lista de produtos");
escreva("0 - Sair");
escreva;

// leitura da opção escolhida
escreva("Opcao: ");
leia(opcao);

// realiza a operação escolhida pelo usuário
caso opcao de
  1: cadastrarProduto(listaProdutos, numProdutos);
  2: exibirProdutos(listaProdutos, numProdutos);
  0: escreva("Saindo...");
  senao escreva("Opcao invalida!");
fim_caso;

escreva;

ate opcao = 0;

fim.

Explicando o código em algoritmo:

O código acima é um programa simples em português estruturado (Portugol) que permite cadastrar produtos em uma lista e exibir a lista de produtos cadastrados. Vamos analisar o código por partes:

  1. Declaração de constantes: As constantes MAX_PRODUTOS e MAX_CARACTERES definem o tamanho máximo da lista de produtos e a quantidade máxima de caracteres para o nome do produto, respectivamente.
  2. Declaração de tipos: O tipo TProduto é definido como um registro que possui três campos: nome (uma cadeia de caracteres), preco (um número real) e quantidade (um número inteiro). O tipo TListaProdutos é definido como um vetor de TProduto.
  3. Variáveis globais: As variáveis listaProdutos (do tipo TListaProdutos), numProdutos (do tipo inteiro) e opcao (do tipo inteiro) são declaradas.
  4. Procedimento cadastrarProduto: Esse procedimento é responsável por solicitar ao usuário os dados de um produto (nome, preço e quantidade) e adicioná-lo à lista de produtos. Os dados são lidos do teclado usando o comando leia e são armazenados na variável produto, que é então adicionada à lista de produtos.
  5. Procedimento exibirProdutos: Esse procedimento percorre a lista de produtos e exibe na tela os dados de cada produto cadastrado, como nome, preço e quantidade.
  6. Função principal: A função principal (ou programa principal) inicia com a declaração da variável numProdutos com o valor 0. Em seguida, um laço de repetição repita é utilizado para exibir um menu de opções ao usuário e executar a operação escolhida. A variável opcao é lida do teclado usando o comando leia, e um comando caso é utilizado para executar a operação correspondente com base no valor da opcao.
  7. Operações do menu: O menu de opções possui três opções: cadastrar um produto, exibir a lista de produtos e sair do programa. Para cada opção selecionada, o código chama o procedimento correspondente.
  8. Fim do programa: O laço de repetição é encerrado quando a opcao digitada pelo usuário for igual a 0, o que encerra o programa.

O código em Portugol é uma versão simplificada da linguagem Pascal, e a estrutura do código em si é bastante similar. Ele permite cadastrar produtos e exibir a lista de produtos cadastrados, utilizando procedimentos para organizar as ações.

 

Resposta em C / C++ utilizando Dev C++

#include <stdio.h>
#include <string.h>

#define MAX_PRODUTOS 100
#define MAX_CARACTERES 50

/* Criado por Giovani Da Cruz - https://giovanidacruz.com.br */

typedef struct {
    char nome[MAX_CARACTERES];
    float preco;
    int quantidade;
} TProduto;

void cadastrarProduto(TProduto listaProdutos[], int *numProdutos) {
    TProduto produto;
    printf("\nCADASTRO DE PRODUTO\n");
    printf("-------------------\n\n");

    // leitura dos dados do produto
    printf("Nome: ");
    scanf("%s", &produto.nome);

    printf("Preco: ");
    scanf("%f", &produto.preco);

    printf("Quantidade: ");
    scanf("%d", &produto.quantidade);

    // adiciona o produto na lista
    *numProdutos += 1;
    listaProdutos[*numProdutos - 1] = produto;

    printf("\nProduto cadastrado com sucesso!\n\n");
}

void exibirProdutos(TProduto listaProdutos[], int numProdutos) {
    printf("\nLISTA DE PRODUTOS\n");
    printf("-----------------\n\n");

    // exibe os dados de cada produto cadastrado
    for (int i = 0; i < numProdutos; i++) {
        printf("Nome: %s\n", listaProdutos[i].nome);
        printf("Preco: %.2f\n", listaProdutos[i].preco);
        printf("Quantidade: %d\n\n", listaProdutos[i].quantidade);
    }
}

int main() {
    TProduto listaProdutos[MAX_PRODUTOS];
    int numProdutos = 0, opcao;

    do {
        // exibe o menu de opções
        printf("MENU DE OPCOES\n");
        printf("--------------\n");
        printf("1 - Cadastrar produto\n");
        printf("2 - Exibir lista de produtos\n");
        printf("0 - Sair\n\n");

        // leitura da opção escolhida
        printf("Opcao: ");
        scanf("%d", &opcao);

        // realiza a operação escolhida pelo usuário
        switch (opcao) {
            case 1:
                cadastrarProduto(listaProdutos, &numProdutos);
                break;
            case 2:
                exibirProdutos(listaProdutos, numProdutos);
                break;
            case 0:
                printf("Saindo...\n");
                break;
            default:
                printf("Opcao invalida!\n");
                break;
        }

        printf("\n");

    } while (opcao != 0);

    return 0;
}

Explicação do código em C++

O código acima é um exemplo simples de um sistema de cadastro de produtos utilizando um array de registros em Pascal.

O programa é dividido em três partes principais: declaração das variáveis e tipos, procedimentos e a lógica principal.

Na declaração de variáveis e tipos, são definidas as constantes MAX_PRODUTOS e MAX_CARACTERES, que determinam o tamanho máximo do array e da string que armazena o nome do produto, respectivamente. Em seguida, é definido o tipo TProduto, que é um registro que contém os campos nome (uma string), preco (um número real) e quantidade (um número inteiro). O tipo TListaProdutos é definido como um array de TProduto com tamanho MAX_PRODUTOS.

As variáveis numProdutos e opcao são inicializadas com o valor zero. A variável numProdutos é usada para contar quantos produtos foram cadastrados na lista, e a variável opcao é usada para ler a opção escolhida pelo usuário no menu.

Em seguida, são definidos dois procedimentos: cadastrarProduto e exibirProdutos. O procedimento cadastrarProduto é responsável por ler os dados de um novo produto e adicioná-lo à lista. O procedimento exibirProdutos é responsável por exibir na tela todos os produtos cadastrados na lista.

Na lógica principal do programa, é iniciado um loop que apresenta um menu com as opções “Cadastrar produto”, “Exibir lista de produtos” e “Sair”. O usuário escolhe uma das opções digitando o número correspondente, e o programa executa a operação correspondente a essa opção. Se o usuário escolher “Cadastrar produto”, o programa chama o procedimento cadastrarProduto para ler os dados do novo produto e adicioná-lo à lista. Se o usuário escolher “Exibir lista de produtos”, o programa chama o procedimento exibirProdutos para exibir todos os produtos cadastrados. Se o usuário escolher “Sair”, o programa encerra o loop e termina a execução. Se o usuário escolher qualquer outra opção inválida, o programa exibe a mensagem “Opcao invalida!” e volta ao menu.

 

Exemplo em JavaScript – Testado no console do Microsoft Edge

const MAX_PRODUTOS = 100;
const MAX_CARACTERES = 50;

class Produto {
  constructor(nome, preco, quantidade) {
    this.nome = nome;
    this.preco = preco;
    this.quantidade = quantidade;
  }
}

class ListaProdutos {
  constructor() {
    this.produtos = [];
    this.numProdutos = 0;
  }

  cadastrarProduto(produto) {
    if (this.numProdutos >= MAX_PRODUTOS) {
      console.log('Não é possível cadastrar mais produtos.');
      return;
    }
    this.produtos.push(produto);
    this.numProdutos++;
    console.log('Produto cadastrado com sucesso!');
  }

  exibirProdutos() {
    console.log('LISTA DE PRODUTOS');
    console.log('-----------------');
    for (let i = 0; i < this.numProdutos; i++) {
      console.log('Nome: ' + this.produtos[i].nome);
      console.log('Preco: ' + this.produtos[i].preco.toFixed(2));
      console.log('Quantidade: ' + this.produtos[i].quantidade);
      console.log();
    }
  }
}

let listaProdutos = new ListaProdutos();
let opcao;

do {
  console.log('MENU DE OPCOES');
  console.log('--------------');
  console.log('1 - Cadastrar produto');
  console.log('2 - Exibir lista de produtos');
  console.log('0 - Sair');
  console.log();

  opcao = parseInt(prompt('Opcao: '));

  switch (opcao) {
    case 1:
      let nome = prompt('Nome: ');
      let preco = parseFloat(prompt('Preco: '));
      let quantidade = parseInt(prompt('Quantidade: '));
      let produto = new Produto(nome, preco, quantidade);
      listaProdutos.cadastrarProduto(produto);
      break;
    case 2:
      listaProdutos.exibirProdutos();
      break;
    case 0:
      console.log('Saindo...');
      break;
    default:
      console.log('Opcao invalida!');
      break;
  }

  console.log();

} while (opcao != 0);

Este código em JavaScript usa classes para representar um Produto e uma Lista de Produtos. O usuário é apresentado com um menu de opções, e pode escolher entre cadastrar um novo produto ou exibir a lista de produtos cadastrados. O programa é executado em loop até que o usuário escolha a opção de sair (0).

 

Exemplo em Python

const MAX_PRODUTOS = 100;
const MAX_CARACTERES = 50;

class Produto {
  constructor(nome, preco, quantidade) {
    this.nome = nome;
    this.preco = preco;
    this.quantidade = quantidade;
  }
}

class ListaProdutos {
  constructor() {
    this.produtos = [];
    this.numProdutos = 0;
  }

  cadastrarProduto(produto) {
    if (this.numProdutos >= MAX_PRODUTOS) {
      console.log('Não é possível cadastrar mais produtos.');
      return;
    }
    this.produtos.push(produto);
    this.numProdutos++;
    console.log('Produto cadastrado com sucesso!');
  }

  exibirProdutos() {
    console.log('LISTA DE PRODUTOS');
    console.log('-----------------');
    for (let i = 0; i < this.numProdutos; i++) {
      console.log('Nome: ' + this.produtos[i].nome);
      console.log('Preco: ' + this.produtos[i].preco.toFixed(2));
      console.log('Quantidade: ' + this.produtos[i].quantidade);
      console.log();
    }
  }
}

let listaProdutos = new ListaProdutos();
let opcao;

do {
  console.log('MENU DE OPCOES');
  console.log('--------------');
  console.log('1 - Cadastrar produto');
  console.log('2 - Exibir lista de produtos');
  console.log('0 - Sair');
  console.log();

  opcao = parseInt(prompt('Opcao: '));

  switch (opcao) {
    case 1:
      let nome = prompt('Nome: ');
      let preco = parseFloat(prompt('Preco: '));
      let quantidade = parseInt(prompt('Quantidade: '));
      let produto = new Produto(nome, preco, quantidade);
      listaProdutos.cadastrarProduto(produto);
      break;
    case 2:
      listaProdutos.exibirProdutos();
      break;
    case 0:
      console.log('Saindo...');
      break;
    default:
      console.log('Opcao invalida!');
      break;
  }

  console.log();

} while (opcao != 0);

 

 

Exemplos em Pascal / Delphi / Lazarus

Publicamos no site Show Delphi, exemplo em Pascal compatível com Delphi e Lazarus e outros. Acesse o site e confira. Este exemplo em pascal ficou bem completo, inclusive com o uso de record e apresentação de um menu para o usuário.

Acessar exercício no site Show Delphi.

 

Beleza pessoal?

Neste post vimos um ótimo exemplo de algoritmo em pascal que utiliza matrizes e estruturas. Muito bom para treinar para as provas finais de semestre.

Dúvidas ou sugestões? Deixe o seu comentário!

Um abraço e até o próximo post! Valeu!

 

  • Publicado por Giovani Da Cruz
  • 74 views
  • 0 comentarios
  • 1 de maio de 2023

 

Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados a Categoria Algoritmos com Matrizes e Estruturas

Continue aprendendo

Aumente o seu conhecimento
Crie um algoritmo e um programa que utilize pilha para armazenar caracteres. O programa deve apresentar um menu com as seguintes opções:
13 de abril de 2024
Crie um algoritmo e um programa que dado um texto, conte o número de ocorrências de cada palavra única no texto. Ignore maiúsculas e minúsculas, bem como pontuações. Retorne um HashMap onde as chaves são as palavras únicas e os valores são o número de vezes que cada palavra aparece no texto.
16 de março de 2024
Escreva um algoritmo e programa que solicite ao usuário que insira um texto contendo apenas letras minúsculas. O programa deve determinar e retornar a primeira letra no texto que não se repete. Se não houver letras únicas, o programa deve retornar o caractere “_”.
14 de março de 2024
Jogo da Velha em Pascal no modo console
24 de junho de 2023