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:
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:
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.
// 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.
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:
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.
#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; }
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.
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).
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);
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.
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!
Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!