1 aula 7 implementandosubprogramas universidade do vale do rio dos sinos barbosa...

30
1 Aula 7 Aula 7 Implementando Implementando Subprogramas Subprogramas Universidade do Vale do Rio dos S < Página da Disciplina > www.inf.unisinos.br/~barbosa www.inf.unisinos.br/~barbosa <Endereço do Professor > [email protected] [email protected]

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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 >

[email protected]@exatas.unisinos.br

Page 2: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

2

1 – Semântica das Chamadas e Retornos

SumárioSumário

Page 3: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

3

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

SumárioSumário

Page 4: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

4

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

SumárioSumário

Page 5: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

5

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

SumárioSumário

Page 6: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

6

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

SumárioSumário

Page 7: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 8: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 9: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 10: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 11: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

11

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

SumárioSumário

Page 12: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 13: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 14: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

14

Código

DadosEstáticos

Heap

Pilha

Page 15: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 16: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 17: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 18: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

18

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

Page 19: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 20: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 21: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

21

Local PMain

Page 22: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

22

Local T

Local S

Parâmetro R

Vínculo Dinâmico

Vínculo Estático

Retorno

RA de B

Local PMain

Page 23: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 24: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 25: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 26: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 27: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 28: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 29: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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

Page 30: 1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

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