Subprogramas em Pascal com Procedure e Function–Parte II

Dando continuidade a matéria anterior vamos aplicar um exemplo completo onde os subprogramas ajudam no desenvolvimento de programas.

Um programa com Menu que mostra a aplicação de subprogramas:

Subprogramas em Pascal

Program Menu_01;

Uses Crt;

Var

  opcao : Integer;

  nome  : Array [1..20] of String [30];

  p     : Integer;

 

Procedure cabecalho ( s : String);

Var

  i,j : Integer;

Begin

  ClrScr;

  for i := 1 to 80 do Write ('-');

  j := (80-Length(s)) div 2;

  for i := 1 to j do Write (' ');

  WriteLn (s);

  for i := 1 to 80 do Write ('-');

  WriteLn;

End;

 

Procedure centraliza ( s : String; a : Integer );

Var

  i,j : Integer;

Begin

  j := (80-Length(s)) div 2;

  for i := 1 to j do Write (' ');

  if a = 0 then

    Write (s)

  else

  Begin

    WriteLn (s);

    for i := 1 to a do WriteLn;

  End;

End;

 

Procedure Incluir;

Begin

  cabecalho ('Incluir');

  p := p + 1;

  Write ('Nome : '); ReadLn (nome[p]);

End;

 

Function achanome ( s : String ) : Integer;

Var

  i,j : Integer;

Begin

  j := 0;

  i := 0;

  Repeat

    i := i + 1;

    if (nome[i]=s) then j := i;

  Until (nome[i]=s) or (i=p);

  achanome := j;

End;

 

Procedure Alterar;

Var

  i : Integer;

  s : String;

Begin

  cabecalho ('Alterar');

  Write ('Nome para Alterar : '); ReadLn (s);

  i := achanome(s);

  if i = 0 then

  Begin

    WriteLn ('Nome nao encontrado!');

    ReadLn;

  End

  Else

  Begin

    Write ('Novo Nome : '); ReadLn (nome[i]);

  End;

End;

 

Procedure Excluir;

Var

  i,j : Integer;

  s : String;

Begin

  cabecalho ('Excluir');

  Write ('Nome para Apagar : '); ReadLn (s);

  i := achanome(s);

  if i = 0 then

  Begin

    WriteLn ('Nome nao encontrado!');

    ReadLn;

  End

  Else

  Begin

    for j := i to p-1 do

      nome[j] := nome[j+1];

    p := p - 1;

  End;

End;

 

Procedure Listar;

Var

  i : Integer;

Begin

  cabecalho ('Listar');

  for i :=1 to p do

    WriteLn (i,' ',nome[i]);

  ReadLn;

End;

 

//Programa Principal

Begin

  p := 0;

  Repeat

    cabecalho ('Menu Principal');

    centraliza ('1. Incluir',1);

    centraliza ('2. Alterar',1);

    centraliza ('3. Excluir',1);

    centraliza ('4. Listar',1);

    centraliza ('0. Sair',1);

    centraliza ('Opcao : ',0);

    ReadLn (opcao);

    Case opcao of

      1 : Incluir;

      2 : Alterar;

      3 : Excluir;

      4 : Listar;

    End;

  Until opcao = 0;

End.

Na última parte dessa matéria falarei de retorno de variáveis e recursividade.

Lembrando os direitos autorais: todo o conteúdo do blog poderá ser utilizado desde que faça um aviso prévio. Qualquer utilização de uso indevido será passível de medidas penais.

Lei de Direito Autoral nº 9610/98

http://www.cultura.gov.br/site/2008/02/02/lei-no-9610-de-19-de-fevereiro-de-1998/

Um comentário:

  1. Tudo bem professor Wellington. Meu nome é Haroldo, tenho lido alguns artigos do seu blog... há, e ele tem me ajudado muito tirando algumas dúvidas sozinho, até então não precisei tira-las com o professor; porem agora estou com uma que não consegui resolve-la. Problema: Agenda, nome, endereço,telefone e compromisso, mas não estou conseguindo mandar a mensagem de que já existe um compromisso. O programa é o Pascalzim. São apenas 10 compromissos. Desde já, agradeço pelas postagens, pois estou me baseando nelas.

    ResponderExcluir