Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.42 KB | None | 0 0
  1.    
  2.  
  3.     // Procedimento para abrir uma turma ou criá-la caso não exista----------------------------------------------------------------------
  4.             procedure abreOuCriaTurma(var prim,ult,pont:ponteiro);
  5.             (* Procedimento padrão para abrir arquivo existente ou criar arquivo novo. Parâmetros:
  6.             mensagem para o usuário;operação a ou c para abrir ou criar; arquivo não tipado;
  7.             nome externo escolhido pelo usuário *)
  8.            
  9.             Var
  10.                     Resultado: integer; // resultado da busca do arquivo
  11.                     atual:ponteiro;
  12.             begin
  13.                     new(atual);
  14.                     digStr('Informe o nome da turma: ', 10, 2, atual^.nome);
  15.                     atual^.proximo:=nil;
  16.                     atual^.anterior:=nil;
  17.                     if primeiro=nil then prim:=atual
  18.                     else
  19.                             begin
  20.                                     ult^.proximo:=atual;
  21.                                     atual^.anterior:=ultimo;
  22.                             end;
  23.                     ult:=atual;
  24.                     pont:=atual;
  25.                     pont^.nome:=pont^.nome+'.dat';
  26.                     assign(pont^.arqTurma, pont^.nome);
  27.                     {$i-}  // para inibir rotina de tratamento de erro
  28.                     reset(pont^.arqTurma);  // tenta abrir para verificar se já existe
  29.                     {$I+}
  30.                     resultado := ioresult;
  31.                     if resultado <> 0 then
  32.                             begin
  33.                                     writeln('Essa turma não existe.');
  34.                                     if funConfirmar('Deseja criar uma nova turma com esse nome?')='S' then
  35.                                             begin
  36.                                                     rewrite(pont^.arqTurma);
  37.                                                     writeln('A turma foi criada com sucesso!');
  38.                                                     writeln(' ');
  39.                                             end;
  40.                             end
  41.                     else writeln('A turma foi aberta com sucesso!');
  42.             end;
  43.     //-------------------------------------------------------------------------------------------------------------------------------
  44.      
  45.     // Procedimento para fechar uma turma, ou seja removê-la da lista de turmas ativas------------------------------------------------
  46.     procedure fechaTurma(var prim,ult:ponteiro);
  47.     var resultado:integer;
  48.         pont:ponteiro;
  49.      
  50.     begin
  51.             new(pont);
  52.             digStr('Informe o nome da turma: ', 10, 2, pont^.nome);
  53.             pont^.nome:=pont^.nome+'.dat';
  54.             assign(pont^.arqTurma, pont^.nome);
  55.             {$i-}
  56.             close(pont^.arqTurma);
  57.             {$I+}
  58.             resultado := ioresult;
  59.             if resultado <> 0 then writeln('Essa turma não está aberta/não existe !')
  60.             else writeln('A turma foi fechada com sucesso!');
  61.     (* Antes de remover a turma deve-se "conectar" a turma anterior com a próxima para que não se perca a ordem das turmas.
  62.      Devemos considerar todas as possibilidades, a turma designada pode ser a primeira e/ou a última *)
  63.             if pont=prim then
  64.                     begin
  65.                             if pont=ult then
  66.                                     begin
  67.                                             prim:=nil;
  68.                                             ult:=nil;
  69.                                     end
  70.                             else
  71.                                     begin
  72.                                             prim:=pont^.proximo;
  73.                                             pont:=nil;
  74.                                     end;
  75.                     end
  76.             else
  77.                     begin
  78.                             if pont=ult then
  79.                                     begin
  80.                                             ult:=pont^.anterior;
  81.                                             pont:=nil;
  82.                                     end;
  83.                     end;
  84.             if (pont<>prim) and (pont<>ult) then
  85.                     begin
  86.                             pont^.anterior^.proximo:=pont^.proximo;
  87.                             pont^.proximo^.anterior:=pont^.anterior;
  88.                             pont:=nil;
  89.                     end;
  90.             dispose(pont);
  91.            
  92.     end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement