Agenda Telefônica

Uma agenda telefônica permite armazenar e organizar informações de contato de pessoas e empresas. Este algoritmo implementa uma agenda simples, usando listas duplamente encadeadas.

Um contato é uma lista com
  Uma string denominada nome e
  Uma string denominada número de telefone.

A agenda telefônica é [composta de] uns contatos.

O comando é um trecho.

Rotina para que se execute o programa:
  Defina "console" como o tipo da aplicação.
  Escreva o texto CRLF junto com "Digite um comando: " para StdOut.
  Itere.
    Escreva o texto CRLF junto com " > " para StdOut.
    Leia o comando desde a StdIn.
    Se o comando estiver em branco,
      Reitere.
    Se o comando for "adicionar", 
      Adicione o contato;
      Reitere.
    Se o comando for "alterar", 
      Altere o contato;
      Reitere.
    Se o comando for "mudar", 
      Altere o contato;
      Reitere.
    Se o comando for "apagar", 
      Exclua o contato;
      Reitere.
    Se o comando for "excluir", 
      Exclua o contato;
      Reitere.
    Se o comando for "encontrar", 
      Encontre o contato;
      Reitere.
    Se o comando for "ajuda", 
      Mostre o menu de ajuda;
      Reitere.
    Se o comando for "listar", 
      Liste os contatos;
      Reitere.
    Se o comando for "fechar", 
      Destrua a agenda telefônica;
      Pare.
    Se o comando for "sair",
      Destrua a agenda telefônica;
      Pare.
  Reitere.
  Feche o nosso programa.

Rotina para que se mostre o menu de ajuda:
  Escreva o texto CRLF junto com "Comandos Disponíveis:" para StdOut.
  Escreva o texto CRLF junto com "Adicionar" para StdOut.
  Escreva o texto CRLF junto com "Alterar" para StdOut.
  Escreva o texto CRLF junto com "Excluir" para StdOut.
  Escreva o texto CRLF junto com "Encontrar" para StdOut.
  Escreva o texto CRLF junto com "Listar" para StdOut.
  Escreva o texto CRLF junto com "Sair" para StdOut.
  Escreva o texto CRLF junto com "Adicionar" para StdOut.

Rotina para que se adicione o contato:
  Aloque memória para um contato.
  Acrescente o contato na agenda telefônica.
  Escreva "Digite o nome do contato: " junto com o texto CRLF para StdOut.
  Leia uma string desde a StdIn.
  Atribua a string para o nome deste contato.
  Escreva "Digite o telefone do contato: " junto com o texto CRLF para StdOut.
  Leia uma nova string desde a StdIn.
  Atribua a nova string para o número de telefone deste contato.
  Escreva "Contato adicionado." junto com o texto CRLF para StdOut.

Rotina para que se altere o contato:
  Escreva "Digite o nome do contato a ser alterado: " junto com o texto CRLF para StdOut.
  Leia uma string denominada nome desde a StdIn.
  Encontre um contato usando o nome.
  Se o contato for inexistente,
    Escreva "Contato não encontrado." junto com o texto CRLF para StdOut;
    Retorne.  
  Leia uma string denominada telefone desde a StdIn.
  Atribua o telefone para o número de telefone deste contato.
  Escreva "Contato alterado." junto com o texto CRLF para StdOut.

Rotina para que se exclua o contato:
  Escreva "Digite o nome do contato a ser excluído: " junto com o texto CRLF para StdOut.
  Leia uma string denominada nome desde a StdIn.
  Encontre um contato usando o nome.
  Se o contato for inexistente,
    Escreva "Contato não encontrado." junto com o texto CRLF para StdOut;
    Retorne.  
  Remova o contato desde a agenda telefônica.
  Destrua o contato.
  Escreva "Contato excluído." junto com o texto CRLF para StdOut.

Rotina para que se encontre o contato:
  Escreva "Digite o nome do contato a ser encontrado: " junto com o texto CRLF para StdOut.
  Leia uma string denominada nome desde a StdIn.
  Encontre um contato usando o nome.
  Se o contato for inexistente,
    Escreva "Contato não encontrado." junto com o texto CRLF para StdOut;
    Retorne.  
  Escreva o nome deste contato junto com a tabulação horizontal junto com "            " junto com o número de telefone deste contato junto com o texto CRLF para StdOut.

Rotina para que se liste os contatos:
  Itere.
    Obtenha um contato desde a agenda telefônica.
    Se o contato for inexistente, pare.
    Escreva o nome deste contato junto com a tabulação horizontal junto com "            " junto com o número de telefone deste contato junto com o texto CRLF para StdOut.
  Reitere.
  Se a contagem desta agenda telefônica for igual a 1,
    Atribua a contagem desta agenda telefônica junto com " contato." para uma string.
  Se a contagem desta agenda telefônica for maior do que 1,
    Atribua a contagem desta agenda telefônica junto com " contatos." para a string.
  Escreva o texto CRLF junto com a string junto com o texto CRLF para StdOut.

Rotina para que se encontre um contato usando uma string:
  Atribua inexistente para o contato.
  Itere.
    Obtenha o contato desde a agenda telefônica.
    Se o contato for inexistente, pare.
    Se o nome deste contato começar com a string, pare.
  Reitere.

Atualizado

Isto foi útil?