programaÇÃo modular - 2011 · programaÇÃo modular tempo de vida de uma variável é o intervalo...

108
É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos). PROGRAMAÇÃO MODULAR

Upload: lydang

Post on 28-Dec-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos).

PROGRAMAÇÃO MODULAR

Page 2: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos).

PROGRAMAÇÃO MODULAR

A decomposição em módulos será uma estratégia fundamental no desenvolvimento de programas de médio/grande porte.

Page 3: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Qualidade dos Programas

A solução de um problema é buscada através da combinação das soluções de subproblemas (menos complexos).

PROGRAMAÇÃO MODULAR

Page 4: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Qualidade dos Programas

PROGRAMAÇÃO MODULAR

Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido.

Page 5: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Qualidade dos Programas

PROGRAMAÇÃO MODULAR

Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido.

A atenção do programador se concentra nos detalhes da lógica de cada parte do programa isoladamente.

Page 6: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Qualidade dos Programas

PROGRAMAÇÃO MODULAR

Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido.

A atenção do programador se concentra nos detalhes da lógica de cada parte do programa isoladamente.

ABSTRAÇÃO

Page 7: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Flexibilidade no desenvolvimento

PROGRAMAÇÃO MODULAR

Como o programa é dividido em módulos individuais, tem-se maior flexibilidade na alocação de recursos e pessoal para o desenvolvimento.

Page 8: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Padronização e reuso

PROGRAMAÇÃO MODULAR

Quando se escreve uma série de programas, é comum que certas funções sejam necessárias em mais de um...

Page 9: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Padronização e reuso

PROGRAMAÇÃO MODULAR

Quando se escreve uma série de programas, é comum que certas funções sejam necessárias em mais de um...

A existência da uma biblioteca de funções evitará grande parte da repetição e garantirá padronização.

Page 10: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Planejamento

PROGRAMAÇÃO MODULAR

Quando se trabalha com pequenas unidades, pode-se estimar com certa precisão a quantidade de trabalho envolvido.

Page 11: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Planejamento

PROGRAMAÇÃO MODULAR

Quando se trabalha com pequenas unidades, pode-se estimar com certa precisão a quantidade de trabalho envolvido.

Isto possibilita um melhor planejamento de recursos, prazos, etc.

Page 12: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

VANTAGENS DA MODULARIZAÇÃO:

● Manutenção

PROGRAMAÇÃO MODULAR

Os problemas de manutenção são reduzidos.

É mais fácil entender um módulo do sistema (e alterá-lo) do que tentar entender o sistema como um todo.

Page 13: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

OBS:

PROGRAMAÇÃO MODULAR

A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade.

Page 14: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

OBS:

PROGRAMAÇÃO MODULAR

A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade.

Ex1: não há um “fabricante de computador”. Há fabricantes de discos rígidos, de processadores, etc.

Page 15: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

OBS:

PROGRAMAÇÃO MODULAR

A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade.

Ex2: não há um “fabricante de carros”. Há montadoras que encomendam de terceiros motor, câmbio, pneus, condicionador de ar, etc.

Page 16: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

OBS:

PROGRAMAÇÃO MODULAR

Um “módulo” pode ser decomposto em outros mais simples. Por exemplo, o fabricante de motor pode terceirizar a fabricação das velas de ignição, pistons, etc.

Page 17: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

OBS:

PROGRAMAÇÃO MODULAR

Um “módulo” pode ser decomposto em outros mais simples. Por exemplo, o fabricante de motor pode terceirizar a fabricação das velas de ignição, pistons, etc.

Ou seja, para produção de objetos muito complexos, haverá um processo de decomposição sucessiva...

Page 18: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

RECOMENDAÇÃO BÁSICA

PROGRAMAÇÃO MODULAR

Os módulos devem resolver uma tarefa (ou função) muito bem definida.

Page 19: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

RECOMENDAÇÃO BÁSICA

PROGRAMAÇÃO MODULAR

Os módulos devem resolver uma tarefa (ou função) muito bem definida.

Dica prática: deve-se poder dizer o que um módulo faz em poucas palavras (sem uso de “ou“, “se“, etc.)

Page 20: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

RECOMENDAÇÃO BÁSICA

PROGRAMAÇÃO MODULAR

Os módulos devem resolver uma tarefa (ou função) muito bem definida.

Dica prática: deve-se poder dizer o que um módulo faz em poucas palavras (sem uso de “ou“, “se“, etc.)

● Calcula o fatorial de um número● Ordena um vetor de forma ascendente

Ex:

Page 21: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

TIPOS DE MÓDULOS

PROGRAMAÇÃO MODULAR

Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou.

Page 22: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

TIPOS DE MÓDULOS

PROGRAMAÇÃO MODULAR

Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou.

Função: realiza algum processamento e retorna uma única informação de saída.

Page 23: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

TIPOS DE MÓDULOS

PROGRAMAÇÃO MODULAR

Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou.

Função: realiza algum processamento e retorna uma única informação de saída.

OBS:

● Funções possuem um tipo associado, que é o tipo da informação que será retornada.

Page 24: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

TIPOS DE MÓDULOS

PROGRAMAÇÃO MODULAR

Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou.

Função: realiza algum processamento e retorna uma única informação de saída.

OBS:

● Funções possuem um tipo associado, que é o tipo da informação que será retornada.● Funções e procedimentos podem receber informações de entrada (parâmetros).

Page 25: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

EXEMPLOS:

FUNÇÕES

PROGRAMAÇÃO MODULAR

A := round(1.5);write(ln(num));S := concat('ABC','DEF');S2 := copy(S,2,3);

Page 26: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

EXEMPLOS:

FUNÇÕES PROCEDIMENTOS

PROGRAMAÇÃO MODULAR

ordenaVet(V);insert(S1,S2,5);delete(S, 5,2); inc(x);

A := round(1.5);write(ln(num));S := concat('ABC','DEF');S2 := copy(S,2,3);

Page 27: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

EXEMPLOS:

FUNÇÕES PROCEDIMENTOS

PROGRAMAÇÃO MODULAR

ordenaVet(V);insert(S1,S2,5);delete(S, 5,2); inc(x);

Obs: uma função é um tipo de expressão: produz um resultado, que deve ter algum destino.

A := round(1.5);write(ln(num));S := concat('ABC','DEF');S2 := copy(S,2,3);

Page 28: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

EXEMPLOS:

FUNÇÕES PROCEDIMENTOS

PROGRAMAÇÃO MODULAR

ordenaVet(V);insert(S1,S2,5);delete(S, 5,2); inc(x);

… já um procedimento é empregadona forma de comando.

A := round(1.5);write(ln(num));S := concat('ABC','DEF');S2 := copy(S,2,3);

Page 29: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROCEDIMENTOS (sintaxe Pascal):

procedure <nome> (<list_parâm>); ...var <variáveis locais>begin comando 1; comando 2; . . comando nend;

PROGRAMAÇÃO MODULAR

Page 30: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

FUNÇÕES (sintaxe Pascal):

function <nome>(<list_parâm>):<tipo_ret>; ...var < variáveis locais >begin comando 1; comando 2; . .end;

PROGRAMAÇÃO MODULAR

Page 31: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

FUNÇÕES (sintaxe Pascal):

function <nome>(<list_parâm>):<tipo_ret>; ...var < variáveis locais >begin comando 1; comando 2; . .end;

PROGRAMAÇÃO MODULAR

OBS: toda função deverá ter (pelo menos) uma atribuição para o seu nome, com o que se produz o retorno de um valor.

Page 32: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

FUNÇÕES (sintaxe Pascal):

function <nome>(<list_parâm>):<tipo_ret>; ...var < variáveis locais >begin comando 1; comando 2; . .end;

PROGRAMAÇÃO MODULAR

OBS: toda função deverá ter (pelo menos) uma atribuição para o seu nome, com o que se produz o retorno de um valor.

… se houver mais de uma atribuição, a segunda anula a primeira e assim sucessivamente.

Page 33: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

OBS:

A execução de um módulo é ativada pela referência ao seu nome.

Page 34: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

OBS:

A execução de um módulo é ativada pela referência ao seu nome.

Quando for encontrada uma chamada, o módulo em execução será suspenso, e o controle será passado ao módulo chamado.

Page 35: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

OBS:

A execução de um módulo é ativada pela referência ao seu nome.

Quando for encontrada uma chamada, o módulo em execução será suspenso, e o controle será passado ao módulo chamado.

Após a execução, ocorrerá o retorno do controle para o comando imediatamente após a chamada.

Page 36: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

ESCOPO E TEMPO DE VIDA

Escopo de uma variável é a área do programa onde ela pode ser legalmente referenciada.

Page 37: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Quanto ao escopo, as variáveis podem ser:

Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa...

Page 38: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Quanto ao escopo, as variáveis podem ser:

Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa...

...exceto naqueles módulos onde for declarada outra variável com o mesmo nome.

Page 39: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Quanto ao escopo, as variáveis podem ser:

Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa...

...exceto naqueles módulos onde for declarada outra variável com o mesmo nome.

Locais: Só existem dentro do módulo onde foram declaradas.

Page 40: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var x1,x2:integer;

procedure P()var y1, y2, x2: real;begin ... end;

procedure Q()var z,y1: integer;begin ...end;

begin {principal} end.

Page 41: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var x1,x2:integer;

procedure P()var y1, y2, x2: real;begin ... end;

procedure Q()var z,y1: integer;begin ...end;

begin {principal} end.

GLOBAIS

LOCAIS

Page 42: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var x1,x2:integer;

procedure P()var y1, y2, x2: real;begin ... end;

procedure Q()var z,y1: integer;begin ...end;

begin {principal} end.

a variável global X2 não estará acessível em P();

Page 43: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição.

Page 44: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição.

- O tempo de vida de uma variável global é o tempo total de execução de um programa.

Page 45: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição.

- O tempo de vida de uma variável global é o tempo total de execução de um programa.

- Já o de uma variável local é o período durante o qual está ativo o módulo a que ela pertence.

Page 46: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição.

O conteúdo de uma variável local se perde após o encerramento do módulo onde ela está declarada.

- O tempo de vida de uma variável global é o tempo total de execução de um programa.

- Já o de uma variável local é o período durante o qual está ativo o módulo a que ela pertence.

Page 47: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

Page 48: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

Page 49: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2

Page 50: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

o módulo principal chama P()...

VARIÁVEIS ALOCADASg, x1, x2

Page 51: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

Page 52: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

P(), por sua vez, chama Q()...

Page 53: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

z

Page 54: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

z

retorno...

Page 55: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

Page 56: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 y1, y2

retorno...

Page 57: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2

Page 58: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2

Ativação ”direta” de Q()...

Page 59: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 z

Page 60: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2 z

retorno...

Page 61: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2

Page 62: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

g, x1, x2

...encerramento.

Page 63: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end. VARIÁVEIS ALOCADAS

Page 64: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

Note que a alocação funcionou em um esquema de PILHA...

Page 65: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

Note que a alocação funcionou em um esquema de PILHA...

...em uma pilha (de pratos, por exemplo) o último adicionado será o primeiro a sair.

Page 66: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

Note que a alocação funcionou em um esquema de PILHA...

...em uma pilha (de pratos, por exemplo) o último adicionado será o primeiro a sair.

Isso porque um módulo sempre encerra antes daquele que o chamou.

Page 67: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULARprogram local_global;var g: integer; x1,x2: real;

procedure Q();var z: integer;begin ...end;

procedure P();var y1: real; y2: integer;begin ... Q();end;

begin {principal} P(); ... Q();end.

ALOCAÇÃO EM FUNÇÃO DO TEMPO

Page 68: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

...v: array[1..100] of integer; ...function Soma( ): LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...

Observe o código abaixo:

PARÂMETROS E ARGUMENTOS

Page 69: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

...v: array[1..100] of integer; ...function Soma( ): LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...

Observe o código abaixo:

A função Soma sempre calculará a soma dos elementos de um vetor em particular v (global).

PARÂMETROS E ARGUMENTOS

Page 70: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

...v: array[1..100] of integer; ...function Soma( ): LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...

Observe o código abaixo:

A função Soma sempre calculará a soma dos elementos de um vetor em particular v (global).

...a utilidade da função, portanto, é bastante limitada!

PARÂMETROS E ARGUMENTOS

Page 71: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

Page 72: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

Agora Soma possui um parâmetro v e o processamento interno será feito sobre ele.

Page 73: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

➔ v será alocado de forma similar a uma variável local (na ativação do módulo).

Page 74: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

➔ v será alocado de forma similar a uma variável local (na ativação do módulo).➔ Em seguida, v receberá uma cópia de v1.

Page 75: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

➔ v será alocado de forma similar a uma variável local (na ativação do módulo).➔ Em seguida, v receberá uma cópia de v1.

Assim, o valor retornado será a soma dos valores de v1 (v é apenas um ”suporte”...

Page 76: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

Na chamada foi passado v1, assim como poderia ter sido passado v2, ou outro vetor qualquer de mesmo tipo.

Page 77: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor;function Soma(v:Vetor ):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1); ...

Acrescentando um parâmetro...

Na chamada foi passado v1, assim como poderia ter sido passado v2, ou outro vetor qualquer de mesmo tipo.

Isso amplia a utilidade da função. Ele se tornou mais amplamente aplicável!

Page 78: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor; tam: byte;function Soma(v:Vetor,n:byte):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to n do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1,tam); ...

Acrescentando um novo parâmetro...

Page 79: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor; tam: byte;function Soma(v:Vetor,n:byte):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to n do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1,tam); ...

Acrescentando um novo parâmetro...

Um novo parâmetro (n) determinará até onde a soma deverá ser feita...

Page 80: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor; tam: byte;function Soma(v:Vetor,n:byte):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to n do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1,tam); ...

Acrescentando um novo parâmetro...

Um novo parâmetro (n) determinará até onde a soma deverá ser feita...

Isso confere maior flexibilidade ainda à função!

Page 81: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS E ARGUMENTOS

...type Vetor = array[1..100] of integer;var v1,v2:Vetor; tam: byte;function Soma(v:Vetor,n:byte):LongInt;var i: byte; s: LongInt;begin s := 0; for i = 1 to n do s := s + v[i]; Soma := S;end; ...begin ... tot := Soma(v1,tam); ...

Acrescentando um novo parâmetro...

...assim, parâmetros são fundamentais para

a comunicação entre módulos, com aumento significativo

de sua aplicabilidade!!

Page 82: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

Argumento é o valor que será passado para o módulo

Parâmetro real é uma expressão que produzirá o argumento.

Parâmetro formal é um identificador pelo qual o módulo terá acesso ao argumento.

Page 83: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...

Page 84: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...

A expressão n1+n2 constitui o parâmetro real...

Page 85: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...

A expressão n1+n2 constitui o parâmetro real...

O valor produzido e que será efetivamente passado (5) é o argumento.

Page 86: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...

A expressão n1+n2 constitui o parâmetro real...

O valor produzido e que será efetivamente passado (5) é o argumento.

n é o parâmetro formal: um suporte para o acesso ao argumento.

Page 87: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...OBS: deve haver correspondência entre os parâmetros formais e reais quanto a:

➔ número➔ tipo de dados➔ posição entre eles

Page 88: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

PARÂMETROS FORMAIS, REAIS E ARGUMENTOS

var n1,n2,dbr: byte; ...function Dobro(n:byte):byte;begin Dobro := 2 * n;end; ...begin n1:= 2; n2:= 3; dbr := Dobro(n1+n2); ...

Considere o exemplo...OBS: deve haver correspondência entre os parâmetros formais e reais quanto a:

➔ número➔ tipo de dados➔ posição entre eles

Observe que n1+n2 é apenas um parâmetro (uma única expressão), embora possua duas variáveis.

Page 89: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Por valor: é a forma de passagem presente nos exemplos já apresentados:

Page 90: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Por valor: é a forma de passagem presente nos exemplos já apresentados:

- o argumento é copiado no parâmetro formal.

Page 91: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Por valor: é a forma de passagem presente nos exemplos já apresentados:

- o argumento é copiado no parâmetro formal.

- eventuais alterações internas no conteúdo do parâmetro formal (apenas uma cópia) não acarretarão qualquer mudança de valor no parâmetro real.

Page 92: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Por referência: o parâmetro formal é uma referência para o argumento.

➔ assim, todas as alterações de conteúdo via parâmetro formal, na realidade surtirão efeito diretamente no argumento.

Page 93: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

Page 94: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

O termo var na declaração do parâmetro, designa passagem por referência

Page 95: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x

Page 96: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x

Page 97: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

2x

Page 98: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x 2

n

Page 99: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x 2

n

n não guarda uma cópia de x, mas é uma (nova) forma de referenciar o objeto

identificado por x

Page 100: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x 2

n

Page 101: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x 4

n

Page 102: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

TIPOS DE PASSAGEM DE PARÂMETRO

Exemplo:

var x: byte; ...Procedure Dobrar(var n:byte):byte;begin n := 2 * n;end; ...begin x := 2; Dobrar(x); ...

SIMULANDO...

x 4

n

Page 103: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia).

Page 104: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Ex: . . .var  vet: Vetor;procedure OrdenaVetor(var v: Vetor);begin . . .end;begin . . .   OrdenaVetor(vet); . . .

OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia).

Page 105: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Ex: . . .var  vet: Vetor;procedure OrdenaVetor(var v: Vetor);begin . . .end;begin . . .   OrdenaVetor(vet); . . .

o que se pretende éordenar o vetor vet e não uma

cópia (que iria desaparecer com o fim da execução

do módulo!)

OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia).

Page 106: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Ex: . . .var  vet: Vetor; r: LongInt;

function SomaElem(v: Vetor);begin . . .end;begin . . .   r := SomaElem(vet); . . .

Já neste caso...

Page 107: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Ex: . . .var  vet: Vetor; r: LongInt;

function SomaElem(v: Vetor);begin . . .end;begin . . .   r := SomaElem(vet); . . .

Nenhuma alteração precisa ser produzida no

conteúdo de vet......portanto, a passagem deve

ser por valor.

Já neste caso...

Page 108: PROGRAMAÇÃO MODULAR - 2011 · PROGRAMAÇÃO MODULAR Tempo de vida de uma variável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição

PROGRAMAÇÃO MODULAR

Ex: . . .var  vet: Vetor; r: LongInt;

function SomaElem(v: Vetor);begin . . .end;begin . . .   r := SomaElem(vet); . . .

Já neste caso...

Nenhuma alteração precisa ser produzida no

conteúdo de vet......portanto, a passagem deve

ser por valor.

O termo var não é empregado