1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa...

Post on 17-Apr-2015

108 views 0 download

Transcript of 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa...

1

Aula 7Aula 7ImplementandoImplementandoSubprogramasSubprogramas

Universidade do Vale do Rio dos Sinos

< Página da Disciplina >

www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa

<Endereço do Professor >

barbosa@exatas.unisinos.brbarbosa@exatas.unisinos.br

2

1 – Semântica das Chamadas e Retornos

SumárioSumário

3

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 77

SumárioSumário

4

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL

SumárioSumário

5

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação

SumárioSumário

6

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade

SumárioSumário

7

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais

SumárioSumário

8

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos

SumárioSumário

9

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos8 – Implementando o Escopo Dinâmico

SumárioSumário

10

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos8 – Implementando o Escopo Dinâmico9 – Implementando Suprogramas como Parâmetros

SumárioSumário

11

1 – Semântica das Chamadas e Retornos - Ligação de Subprograma (chamada e retorno)

SumárioSumário

12

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 77 - Subprogramas não podem ser recursivos - Registro de ativação - Instância de registro de ativação - FORTRAN 90: aninhados e recursivos

SumárioSumário

13

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL - Tamanho dos RAs: fixo ou variável ? - Suprogramas aninhados - Recursividade

SumárioSumário

14

Código

DadosEstáticos

Heap

Pilha

15

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação - Estrutura - Exemplo sem recursividade e não locais

SumárioSumário

16

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação - Estrutura - Exemplo sem recursividade e não locais

SumárioSumário

17

Variáveis Locais

Parâmetros

Vínculo Dinâmico

Vínculo Estático

Endereço de retorno

Estrutura de um RAEstrutura de um RA

18

procedure sub(var total : real; part : integer); var lista : array[1..5] of integer; soma : real; begin ... end;

19

procedure sub(var total : real; part : integer); var lista : array[1..5] of integer; soma : real; begin ... end;

soma

lista[5]

lista[4]

lista[3]

lista[2]

lista[1]

part

total

Vínculo Dinâmico

Vínculo Estático

Endereço de retorno

20

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação - Estrutura - Exemplo sem recursividade e não locais

SumárioSumário

21

Local PMain

22

Local T

Local S

Parâmetro R

Vínculo Dinâmico

Vínculo Estático

Retorno

RA de B

Local PMain

23

Local T

Local S

Parâmetro R

Vínculo Dinâmico

Vínculo Estático

Retorno

Local Y

Parâmetro X

Vínculo Dinâmico

Vínculo Estático

Retorno

RA de B

RA de A

Local PMain

24

Local T

Local S

Parâmetro R

Vínculo Dinâmico

Vínculo Estático

Retorno

Retorno

Local Y

Parâmetro X

Vínculo Dinâmico

Vínculo Estático

Retorno

Parâmetro Q

Vínculo Dinâmico

Vínculo Estático

RA de B

RA de A

RA de C

Local PMain

25

Local T

Local S

Parâmetro R

Vínculo Dinâmico

Vínculo Estático

Retorno

Retorno

Local Y

Parâmetro X

Vínculo Dinâmico

Vínculo Estático

Retorno

Parâmetro Q

Vínculo Dinâmico

Vínculo Estático

RA de B

RA de A

RA de C

Local PMain

Local Offset

26

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade - Exemplo do programa fatorial

SumárioSumário

27

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais - Encadeamentos Estáticos - Displays

SumárioSumário

28

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos - Implementando como extensão dos RAs

SumárioSumário

29

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos8 – Implementando o Escopo Dinâmico - Acesso profundo - Acesso raso

SumárioSumário

30

1 – Semântica das Chamadas e Retornos2 – Implementando Subprogramas FORTRAN 773 – Implementando Subprogramas ALGOL4 – Registros de Ativação 5 – Recursividade6 – Referências Não Locais7 – Blocos8 – Implementando o Escopo Dinâmico9 – Implementando Suprogramas como Parâmetros - Encadeamento Estático - Displays

SumárioSumário