next up previous contents
Seguinte: Polinómios Acima: Alguns códigos lineares com Anterior: Matrizes e afins   Conteúdo

Procedimentos

Um procedimento é uma junção de instruções que, associadas, produzem uma tarefa, e que, estando agrupadas sob uma denominação, estão sujeitas a serem usadas por outras sob essa denominação. Um exemplo:
» meumin := proc(x : Type::Real, y : Type::Real)
begin
if x < y then
return(x);
end_if;
y;
end_proc:

Em certos casos, é necessário a utilização de outras variáveis apenas a ser utililizadas no procedimento. Neste caso, é usado o comando local antes de begin. A instrução return devolve o valor obtido no procedimento.

Eis a sintaxe:
»proc(
    x1 <= default1> <: type1>,
    x2 <= default2> <: type2>, ...
    ) <: returntype>
<name pname;>
<option option1, option2, ...;>
<local local1, local2, ...;>
<save global1, global2, ...;>
begin
  body
end_proc

Tendo criado um conjunto relevante de procedimentos, torna-se imperioso a existência de uma ferramenta que permita ler os procedimentos em sessões futuras. Ou seja, é provavelmente uma boa ideia criar ficheiros com procedimentos que executem certas tarefas para depois, numa sessão de trabalho, esse procedimento ser invocado de uma forma expedita sem que tenha que ser de novo introduzido pelo utilizador. No caso do procedimento meumax apresentado atrás, o autor destas linhas procedeu da forma seguinte:

(i)
a sessão contendo apenas o procedimento foi gravada em
/home/pedro/Aulas/2004-2005/Codigos/meumax.mupad
(ii)
aberta uma nova sessão, o procedimento meumax foi carregado usando
» read("/home/pedro/Aulas/2004-2005/Codigos/meumax.mupad")

Apresentamos, de seguida, dois conjuntos de procedimentos que implementam os códigos ISBN e EAN-13.

Como exercício, construa um procedimento

hamming:=proc(numero:Type::PosInt)
onde $ n$ é um argumento de entrada, número inteiro positivo, e cujo resultado final é uma matriz $ n\times (2^n-1)$ , cuja coluna $ j$ é a representação do número natural $ j$ na sua escrita binária. A matriz resultante chama-se matriz de Hamming. Por exemplo,
» hamming(3);

$\displaystyle \left[\begin{array}{ccccccc}
0& 0& 0& 1& 1& 1& 1 \\
0& 1& 1& 0& 0& 1& 1 \\
1& 0& 1& 0& 1& 0& 1 \end{array}\right]$

Para tal, use a instrução mod que a um par de naturais faz corresponder o resto da divisão inteira do primeiro pelo segundo.

Caso ache conveniente, pode dividir o problema em dois, em que um consiste em transformar a escrita decimal de um natural na sua representação binária, e o outro constrói a matriz.


next up previous contents
Seguinte: Polinómios Acima: Alguns códigos lineares com Anterior: Matrizes e afins   Conteúdo
2006-12-21