Tags

, ,

Este post é destinado para os estudantes do curso de Licenciatura em Computação (UEPB-VII), e também para todos aqueles que têm alguma dúvida sobre o uso dos procedures e functions.

1- Conversando com os procedimentos

Diferentemente das functions, os procedimentos são pequenos blocos de código que podem ser usados em todo o programa pincipal ou em outros procedimentos ou funções, eles não retornam nada, apenas executam o código delimitado em sua estrutura:

uses crt;
procedure hello();
begin
writeln();
writeln(‘Ola Jonnathan’);
end;

begin
writeln(‘Ola procedimento’);
hello();
readkey();
end.

Esse programa é bem simples, apenas chamo o procedimento, e ele me responde com um ‘Ola Jonnathan’.

Nas procedures também podemos enviar variáveis para serem usadas ou criar variavéis dentro da sua estrutura.

uses crt;
procedure hello(nome:string);
begin
writeln();
writeln(‘Ola ‘,nome);
end;

begin
writeln(‘Ola Procedimento’);
hello(‘Jonnathan’);
readkey();
end.

Neste segundo programa, a assinatura do procedimento mudou: procedure hello(nome: string). “nome” receberá o primeiro parâmetro que for passado quando eu chamar este procedure: hello(‘Jonnathan’). Note que o tipo de “nome” é string, não podendo, assim, ser passado outro tipo de variável. Vamos ver um exemplo com dois parâmetros:

uses crt;
procedure hello(nome:string; idade:integer);
begin
writeln();
writeln(‘Ola ‘,nome,’, voce tem ‘,idade,’ anos’);
end;

begin
writeln(‘Ola Procedimento’);
hello(‘Jonnathan’,20);
readkey();
end.

Simples não?

2- Conversando com as Funções

Diferentemente dos procedimentos, as funções em PASCAL, servem para nos retornar algo: um estado, um cálculo… Vamos ver um exemplo:

uses crt;
function hello():string;
begin
writeln();
hello := ‘Estou bem Jonnathan’;
end;

begin
writeln(‘Ola Funcao, como vc esta?’);
writeln(”,hello());
readkey();
end.

Perceberam que é um pouco diferente? Na assinatura da função declaramos de qual tipo ela será. ‘funtion hello():string; E no final da mesma, fazemos algo parecido com a atribuição de variáveis: atribuimos o nome da função ao que queremos que ela retorne, neste caso ‘Estou bem Jonnathan’. No nosso programa principal, escrevemos a função dentro do writeln. Também poderíamos ter guardado o retorno em uma variável.

3- Variáveis

O uso das procedures e functions não teria sentido se não fosse o uso de seus argumentos, mas tome cuidado ao usá-las:

uses crt;
var nome:string;
procedure hello(nome:string);
begin
nome := ‘Bernardo’;
writeln();
writeln(‘Ola ‘,nome);
end;

begin
writeln(‘Ola Procedimento’);
nome := ‘Jonnathan’;
hello(nome);
writeln();
writeln(‘Ola ‘, nome);
readkey();
end.

Neste exemplo, nós enviamos o valor da variável nome para o procedimento. Nele a variável é alterada para ‘Bernardo’. Mas não se preocupe, nossa variável nome do programa principal continua intacta. Isso porque na assinatura desta procedure, criamos uma variável local, que em nada afetara as variáveis globais criadas em var na segunda linha. Agora veja este caso:

uses crt;
var nome:string;
procedure hello(var nome:string);
begin
nome := ‘Bernardo’;
writeln();
writeln(‘Ola ‘,nome);
end;

begin
writeln(‘Ola Procedimento’);
nome := ‘Jonnathan’;
hello(nome);
writeln();
writeln(‘Ola ‘, nome);
readkey();
end.

Notaram alguma diferença? Olhem bem para a assinatura do procedimento: colocando var antes dos argumentos, nós estamos dizendo para a procedure pegar a variável global e usá-la como bem entender. Neste exemplo, a procedure hello() altera o valor da variável nome como no anterior, porém, aqui o valor da variável global também foi alterado. Por isso muito cuidado com o uso do var em procedimentos e funções.

Acho que isso deve sanar algumas pequenas dúvidas. Lembrem-se que programar não se aprende apenas lendo, ou decorando. Pratiquem bastante. Se ainda tiver alguma dúvida deixe seu comentário.

Anúncios