8
13/11/2015 1 Subprogramas Subprogramas Paradigmas da programação Tópicos abordados Tópicos abordados Características Gerais Características Gerais Parâmetros Parâmetros Procedimentos e Funções Procedimentos e Funções Co Co-rotinas rotinas Recursão Recursão Blocos Blocos Subprogramas: Características Gerais Subprogramas: Características Gerais Cada subprograma tem um único ponto de entrada. Cada subprograma tem um único ponto de entrada. Toda unidade de programa chamadora é suspensa Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, ou seja, durante a execução do programa chamado, ou seja, existe somente um subprograma em execução. existe somente um subprograma em execução. O controle sempre retorna ao chamador quando a O controle sempre retorna ao chamador quando a execução do subprograma encerra execução do subprograma encerra-se. se. Definições Básicas Definições Básicas Uma Uma chamada a subprograma chamada a subprograma é a solicitação explícita é a solicitação explícita para executar o programa. para executar o programa. Um subprograma é Um subprograma é ativo ativo se, depois de ter sido se, depois de ter sido chamado, ele iniciou a execução, mas ainda não a chamado, ele iniciou a execução, mas ainda não a concluiu. concluiu. Um Um cabeçalho de subprograma cabeçalho de subprograma é a primerira linha da é a primerira linha da definição. definição. O O perfil de parâmetro perfil de parâmetro é o número, a ordem e os tipos de é o número, a ordem e os tipos de seus parâmetros formais. seus parâmetros formais. O O protocolo de um subprograma protocolo de um subprograma é seu perfil de é seu perfil de parâmetros mas, se for uma função, seu tipo de retorno. parâmetros mas, se for uma função, seu tipo de retorno. Protótipos Protótipos são declarações de subprograma chamadas são declarações de subprograma chamadas declarações externas. declarações externas. Parâmetros Parâmetros Existem duas maneiras pelas quais um subprograma Existem duas maneiras pelas quais um subprograma pode ganhar acesso aos dados que devem processar: pode ganhar acesso aos dados que devem processar: Pelo acesso direto a variáveis não Pelo acesso direto a variáveis não-locais (declaradas locais (declaradas em outro lugar, mas visíveis no subprograma). em outro lugar, mas visíveis no subprograma). Pela passagem de parâmetros. Pela passagem de parâmetros. Parâmetros Parâmetros - Tipos Tipos Formais Formais – são os parâmetros no cabeçalho do são os parâmetros no cabeçalho do subprograma. Vinculam subprograma. Vinculam-se ao armazenamento somente se ao armazenamento somente quando o subprograma é chamado. quando o subprograma é chamado. Reais Reais – são aqueles na instrução de chamada do são aqueles na instrução de chamada do subprograma. Seus valores são vinculados aos seus subprograma. Seus valores são vinculados aos seus formais. formais.

PL11c - Subprogramas

Embed Size (px)

DESCRIPTION

ok

Citation preview

Page 1: PL11c - Subprogramas

13/11/2015

1

SubprogramasSubprogramas

Paradigmas da programação Tópicos abordadosTópicos abordados

Características GeraisCaracterísticas Gerais

ParâmetrosParâmetros

Procedimentos e FunçõesProcedimentos e Funções

CoCo--rotinasrotinas

RecursãoRecursão

BlocosBlocos

Subprogramas: Características GeraisSubprogramas: Características Gerais

Cada subprograma tem um único ponto de entrada.Cada subprograma tem um único ponto de entrada.

Toda unidade de programa chamadora é suspensa Toda unidade de programa chamadora é suspensa

durante a execução do programa chamado, ou seja, durante a execução do programa chamado, ou seja, existe somente um subprograma em execução.existe somente um subprograma em execução.

O controle sempre retorna ao chamador quando a O controle sempre retorna ao chamador quando a execução do subprograma encerraexecução do subprograma encerra--se.se.

Definições BásicasDefinições Básicas

Uma Uma chamada a subprogramachamada a subprograma é a solicitação explícita é a solicitação explícita para executar o programa.para executar o programa.

Um subprograma éUm subprograma é ativoativo se, depois de ter sido se, depois de ter sido chamado, ele iniciou a execução, mas ainda não a chamado, ele iniciou a execução, mas ainda não a concluiu.concluiu.

Um Um cabeçalho de subprogramacabeçalho de subprograma é a primerira linha da é a primerira linha da definição.definição.

O O perfil de parâmetroperfil de parâmetro é o número, a ordem e os tipos de é o número, a ordem e os tipos de seus parâmetros formais.seus parâmetros formais.

O O protocolo de um subprogramaprotocolo de um subprograma é seu perfil de é seu perfil de parâmetros mas, se for uma função, seu tipo de retorno.parâmetros mas, se for uma função, seu tipo de retorno.

ProtótiposProtótipos são declarações de subprograma chamadas são declarações de subprograma chamadas declarações externas.declarações externas.

ParâmetrosParâmetros

Existem duas maneiras pelas quais um subprograma Existem duas maneiras pelas quais um subprograma

pode ganhar acesso aos dados que devem processar:pode ganhar acesso aos dados que devem processar:

Pelo acesso direto a variáveis nãoPelo acesso direto a variáveis não--locais (declaradas locais (declaradas em outro lugar, mas visíveis no subprograma).em outro lugar, mas visíveis no subprograma).

Pela passagem de parâmetros.Pela passagem de parâmetros.

Parâmetros Parâmetros -- TiposTipos

FormaisFormais –– são os parâmetros no cabeçalho do são os parâmetros no cabeçalho do subprograma. Vinculamsubprograma. Vinculam--se ao armazenamento somente se ao armazenamento somente quando o subprograma é chamado.quando o subprograma é chamado.

ReaisReais –– são aqueles na instrução de chamada do são aqueles na instrução de chamada do subprograma. Seus valores são vinculados aos seus subprograma. Seus valores são vinculados aos seus formais.formais.

Page 2: PL11c - Subprogramas

13/11/2015

2

Parâmetros Parâmetros -- TiposTipos

Parâmetros posicionais Parâmetros posicionais –– A vinculação entre os A vinculação entre os formais e reais é feita de acordo com suas posições.formais e reais é feita de acordo com suas posições.

Parâmetros nomeadosParâmetros nomeados –– Em algumas linguagens é Em algumas linguagens é permitido indicar os parâmetros formais que devem ser permitido indicar os parâmetros formais que devem ser vinculados a lista de reais passada pela instrução de vinculados a lista de reais passada pela instrução de chamada do subprograma.chamada do subprograma.

Parâmetros Parâmetros -- TiposTipos

Exemplo de parâmetros nomeados:Exemplo de parâmetros nomeados:

Em Ada, os parâmetros podem ser chamados utilizandoEm Ada, os parâmetros podem ser chamados utilizando--se a passagem de parâmetros nomeados:se a passagem de parâmetros nomeados:

SOMADOR(COMPRIMENTO =>MEU_COMPRIMENTO,SOMADOR(COMPRIMENTO =>MEU_COMPRIMENTO,

LISTA => MEU_ARRAY,LISTA => MEU_ARRAY,

SOMA => MINHA_SOMA);SOMA => MINHA_SOMA);

Onde a definição de SOMADOR tem os parâmetros Onde a definição de SOMADOR tem os parâmetros formais COMPRIMENTO, LISTA e SOMA.formais COMPRIMENTO, LISTA e SOMA.

Procedimentos e FunçõesProcedimentos e Funções

ProcedimentosProcedimentos –– são coleções de instruções são coleções de instruções que definem computações parametrizadas .que definem computações parametrizadas .

FunçõesFunções –– lembram estruturalmente os lembram estruturalmente os procedimentos, mas são semanticamente procedimentos, mas são semanticamente modeladas em funções matemáticas.modeladas em funções matemáticas.

Procedimentos e FunçõesProcedimentos e Funções

Exemplo: uma função em C cujo Exemplo: uma função em C cujo cabeçalho cabeçalho

float float potencia(potencia(floatfloat base, base, float float exp)exp)

poderia ser chamado como poderia ser chamado como

result = 3.4*potencia(10.0,x)result = 3.4*potencia(10.0,x)

Métodos de Passagem de ParâmetrosMétodos de Passagem de Parâmetros

Os métodos de passagem de parâmetros são Os métodos de passagem de parâmetros são as maneiras pelas quais se transmitem as maneiras pelas quais se transmitem parâmetros para subprogramas chamados e/ou parâmetros para subprogramas chamados e/ou de subprogramas chamados.de subprogramas chamados.

Modelos Semânticos de Passagem de Modelos Semânticos de Passagem de Parâmetros:Parâmetros: Modo entrada(in mode);Modo entrada(in mode);

Modo saída (out mode);Modo saída (out mode);

Modo entrada/saída (inout mode).Modo entrada/saída (inout mode).

Métodos de Passagem de ParâmetrosMétodos de Passagem de Parâmetros

Modelos de Implementação de Passagem Modelos de Implementação de Passagem de Parâmetrosde Parâmetros

Passagem por valor;Passagem por valor;

Passagem por resultado;Passagem por resultado;

Passagem por valor Passagem por valor -- resultado;resultado;

Passagem por referência;Passagem por referência;

Passagem por nome.Passagem por nome.

Page 3: PL11c - Subprogramas

13/11/2015

3

Passagem por ValorPassagem por Valor

Quando um parâmetro é passado por valor, o valor do Quando um parâmetro é passado por valor, o valor do parâmetro real é usado para inicializar o parâmetro parâmetro real é usado para inicializar o parâmetro formal correspondente, que então, age como uma formal correspondente, que então, age como uma variável local no subprograma.variável local no subprograma.

Normalmente é implementada pela transferência de Normalmente é implementada pela transferência de dados real, porque os acessos usualmente são mais dados real, porque os acessos usualmente são mais eficientes quanto ao método.eficientes quanto ao método.

Passagem por Valor Passagem por Valor -- ExemploExemplo

Considere a função em C:Considere a função em C:

void troca1 (int a, int b){void troca1 (int a, int b){

int temp = a;int temp = a;

a = b;a = b;

b = temp;b = temp;

}}

Chamada: Chamada:

troca1(c, d);troca1(c, d);

Passagem por ResultadoPassagem por Resultado

Quando um parâmetro é passado por resultado, nenhum Quando um parâmetro é passado por resultado, nenhum valor é transmitido para o subprograma. O parâmetro valor é transmitido para o subprograma. O parâmetro formal age como uma váriável local.formal age como uma váriável local.

O valor computado é transferido para o parâmetro real.O valor computado é transferido para o parâmetro real.

Passagem por ValorPassagem por Valor--ResultadoResultado

Na passagem por valorNa passagem por valor--resultado valores reais são resultado valores reais são transferidos.transferidos.

O parâmetro formal é inicializado com o valor do O parâmetro formal é inicializado com o valor do parâmetro real.parâmetro real.

O valor final do parâmetro formal é transferido para o O valor final do parâmetro formal é transferido para o parâmetro real.parâmetro real.

Passagem por ReferênciaPassagem por Referência

O método de passagem por referência transmite um caminho de O método de passagem por referência transmite um caminho de acesso, usualmente apenas um endereço, para o subprograma acesso, usualmente apenas um endereço, para o subprograma chamado. Isso proporciona o caminho de acesso à célula que chamado. Isso proporciona o caminho de acesso à célula que armazena o parâmetro real.armazena o parâmetro real.

Exemplo: Exemplo: void troca2 (int *a, int *b){void troca2 (int *a, int *b){

int temp = *a;int temp = *a;

*a = *b;*a = *b;

*b = temp;*b = temp;

}}

Instrução de chamada: Instrução de chamada: troca2(&c,&d)troca2(&c,&d)

Passagem por ReferênciaPassagem por Referência

Vantagem: o processo de passagem é eficiente tanto Vantagem: o processo de passagem é eficiente tanto em termos de tempo como de espaço. Não é necessário em termos de tempo como de espaço. Não é necessário espaço duplicado, nem qualquer atividade de cópia.espaço duplicado, nem qualquer atividade de cópia.

Desvantagem: o acesso aos parâmetros formais será Desvantagem: o acesso aos parâmetros formais será mais lento. mais lento. AliasesAliases podem ser criados, porque a podem ser criados, porque a passagem por referência torna disponíveis caminhos de passagem por referência torna disponíveis caminhos de acesso aos subprogramas chamados, mesmo a acesso aos subprogramas chamados, mesmo a variáveis nãovariáveis não--locais.locais.

Page 4: PL11c - Subprogramas

13/11/2015

4

Passagem por NomePassagem por Nome

Na passagem por nome, o parâmetro real é, com efeito, Na passagem por nome, o parâmetro real é, com efeito, textualmente substituído para o parâmetro formal textualmente substituído para o parâmetro formal correspondente em todas as suas ocorrências no correspondente em todas as suas ocorrências no subprograma.subprograma.

Vantagem: flexibilidade que ela proporciona ao Vantagem: flexibilidade que ela proporciona ao programador.programador.

Desvantagem: lentidão do processo em relação aos Desvantagem: lentidão do processo em relação aos outros métodos de passagem de parâmetros.outros métodos de passagem de parâmetros.

Parâmetros que são nomes de Parâmetros que são nomes de subprogramassubprogramas

Um exemplo da necessidade da passagem de Um exemplo da necessidade da passagem de subprogramas como parâmetros é dada por uma função subprogramas como parâmetros é dada por uma função que retorna o valor de uma integral. que retorna o valor de uma integral.

Esse programa deve estimar a área de sob o gráfico de Esse programa deve estimar a área de sob o gráfico de uma função, provandouma função, provando--a em uma série de diferentes a em uma série de diferentes pontos.pontos.

A função de programa que avalia a função matemática A função de programa que avalia a função matemática a ser integrada deve ser enviada ao subprograma a ser integrada deve ser enviada ao subprograma integrador.integrador.

Parâmetros que são nomes de Parâmetros que são nomes de SubprogramasSubprogramas

Procedure integral (function f(x: real): Procedure integral (function f(x: real): real; liminf, limsup:real; var result: real; liminf, limsup:real; var result: real)real)

......

var funval:real;var funval:real;

beginbegin

......

funval:=f(liminf);funval:=f(liminf);

......

end;end;

Parâmetros que são nomes de Parâmetros que são nomes de SubprogramasSubprogramas

Em C e no C++, funções não podem ser passadas como Em C e no C++, funções não podem ser passadas como parâmetros, mas ponteiros para elas podem.parâmetros, mas ponteiros para elas podem.

No ModulaNo Modula--2, tipo2, tipo--procedimento são usados para passar procedimento são usados para passar procedimentos como se eles fossem variáveis.procedimentos como se eles fossem variáveis.

O FORTRAN 90 tem um mecanismo para oferecer tipos O FORTRAN 90 tem um mecanismo para oferecer tipos de parâmetros para subprogramas passados como de parâmetros para subprogramas passados como parâmetros.parâmetros.

Compilação Separada e IndependenteCompilação Separada e Independente

A capacidade de compilar parte de um programa sem a A capacidade de compilar parte de um programa sem a necessidade de compilánecessidade de compilá--lo por inteiro é fundamental lo por inteiro é fundamental para a construção de sistemas de software grandes. para a construção de sistemas de software grandes.

Desse modo, somente os módulos de um sistema em Desse modo, somente os módulos de um sistema em modificação precisam ser recompilados durante o modificação precisam ser recompilados durante o desenvolvimento ou manutenção.desenvolvimento ou manutenção.

Duas abordagens distintas para compilar partes de Duas abordagens distintas para compilar partes de programas serão discutidas a seguir: programas serão discutidas a seguir: compilação compilação separadaseparada e e compilação independentecompilação independente..

Compilação Separada e IndependenteCompilação Separada e Independente

Compilação SeparadaCompilação Separada –– significa que as unidades de significa que as unidades de compilação podem ser compiladas em tempos compilação podem ser compiladas em tempos diferentes, mas elas não são independentes uma da diferentes, mas elas não são independentes uma da outra se qualquer uma delas acessar ou usar quaisquer outra se qualquer uma delas acessar ou usar quaisquer entidades de outra.entidades de outra.

Exemplo em Ada:Exemplo em Ada:

with GLOBALS, TEXT_IO;with GLOBALS, TEXT_IO;

procedure EXEMPLO isprocedure EXEMPLO is

......

end EXEMPLO;end EXEMPLO;

Page 5: PL11c - Subprogramas

13/11/2015

5

Compilação Separada e IndependenteCompilação Separada e Independente

Compilação IndependenteCompilação Independente –– unidades de programa unidades de programa podem ser compiladas sem informações sobre podem ser compiladas sem informações sobre quaisquer outra unidade de programa. quaisquer outra unidade de programa.

A característica mais importante é que as interfaces A característica mais importante é que as interfaces entre as unidades compiladas separadamente não são entre as unidades compiladas separadamente não são verificadas quanto à coerência de tipos.verificadas quanto à coerência de tipos.

É permitida em C e no FORTRAN 77.É permitida em C e no FORTRAN 77.

CoCo--Rotinas Rotinas –– Conceitos BásicosConceitos Básicos

Uma coUma co--rotina é um tipo especial de subprograma. rotina é um tipo especial de subprograma.

No lugar de relação mestreNo lugar de relação mestre--escravo entre subprogramas escravo entre subprogramas chamadores e subprogramas chamados, as cochamadores e subprogramas chamados, as co--rotinas rotinas chamadoras e chamadas estão numa base mais igual.chamadoras e chamadas estão numa base mais igual.

O mecanismo de controle de coO mecanismo de controle de co--rotinas é chamdo rotinas é chamdo modelo de controle unitário.modelo de controle unitário.

Têm múltiplos pontos de entrada e de saída, controladas Têm múltiplos pontos de entrada e de saída, controladas pelas próprias subrotinas.pelas próprias subrotinas.

CoCo--Rotinas Rotinas –– Conceitos BásicosConceitos Básicos

A invocação de uma coA invocação de uma co--rotina muitas vezes é chamada rotina muitas vezes é chamada de retomada, pois em execuções secundárias, de retomada, pois em execuções secundárias, dificilmente elas iniciam em pontos que correspondem dificilmente elas iniciam em pontos que correspondem ao seu início.ao seu início.

Somente uma coSomente uma co--rotina é executada é executada em rotina é executada é executada em determinado tempo.determinado tempo.

CoCo--Rotinas Rotinas -- ExecuçãoExecução

As coAs co--rotinas são criadas em uma aplicação por uma rotinas são criadas em uma aplicação por uma unidade de programa chamada unidadeunidade de programa chamada unidade--mestra.mestra.

Quando criadas, elas executam seu código de Quando criadas, elas executam seu código de inicialização e, depois, retomam o controle a unidadeinicialização e, depois, retomam o controle a unidade--mestra.mestra.

O programaO programa--mestre retoma uma das comestre retoma uma das co--rotinas, e os rotinas, e os membros da família retomam, entre si, até que o final de membros da família retomam, entre si, até que o final de seu trabalho seja concluído.seu trabalho seja concluído.

CoCo--Rotinas Rotinas -- ExecuçãoExecução

Supondo que as unidades A e B sejam co-rotinas:

.

.

.Retome B

.

.

.Retome B

.

.

.Retome A

.

.Retome A

.

Retoma a partir do mestre

A B

Seqüência de controle possível para duas co-rotinas sem laços.

CoCo--Rotinas Rotinas -- ExecuçãoExecução

Supondo que as unidades A e B sejam co-rotinas:

.

.

.Retoma B

.

.

.

.

.

.

.

.

.Retoma A

.

.

Retoma a partir do mestre

A B

Seqüência de controle possível para duas co-rotinas com laços.

Primeira retomada

Segunda retomada

Page 6: PL11c - Subprogramas

13/11/2015

6

Semântica Geral das chamadas e dos Semântica Geral das chamadas e dos RetornosRetornos

As operações de chamada e de retorno são chamadas As operações de chamada e de retorno são chamadas conjuntamente de ligação (linkage) de subprograma.conjuntamente de ligação (linkage) de subprograma.

As operações de chamada devem passar informações As operações de chamada devem passar informações sobre os tipos de parâmetros que são passados, além sobre os tipos de parâmetros que são passados, além de passar o controle para o subprograma e assegurar de passar o controle para o subprograma e assegurar que este retorne para o lugar apropriado.que este retorne para o lugar apropriado.

As operações de retorno podem passar valores de As operações de retorno podem passar valores de parâmetros formais para reais e retornar o controle para parâmetros formais para reais e retornar o controle para os subprogramas chamadores.os subprogramas chamadores.

Registro de AtivaçãoRegistro de Ativação

O formato da parte não código de um subprograma é O formato da parte não código de um subprograma é chamado registro de ativação, porque os dados que ele chamado registro de ativação, porque os dados que ele descreve somente são relevantes durante a ativação do descreve somente são relevantes durante a ativação do

subprograma.subprograma.

Os dados necessários para a ativação de um Os dados necessários para a ativação de um procedimento é coletado em um registro chamado procedimento é coletado em um registro chamado registro de ativação.registro de ativação.

Uma instância de registro de ativação (IRA) é um Uma instância de registro de ativação (IRA) é um exemplo concreto de um registro de ativação, uma exemplo concreto de um registro de ativação, uma coleção de dados na forma deste.coleção de dados na forma deste.

Registro de Ativação Registro de Ativação -- ExemploExemplo

O registro contém O registro contém armazenamento para armazenamento para variáveis locais, variáveis locais, parâmetros formais e parâmetros formais e qualquer informação qualquer informação necessária para a necessária para a ativaçãoativação

Vínculo DinâmicoVínculo Dinâmico

Vínculo EstáticoVínculo Estático

Endereço de retornoEndereço de retorno

ParâmetrosParâmetros

Valor FuncionalValor Funcional

Variáveis LocaisVariáveis Locais

Uma iteração recursiva envolve um subprograma Uma iteração recursiva envolve um subprograma chamando a si mesmo, direta ou indiretamente, até chamando a si mesmo, direta ou indiretamente, até que seja satisfeita uma condição de parada.que seja satisfeita uma condição de parada.

Uma função recursiva pode ter múltiplas ativações Uma função recursiva pode ter múltiplas ativações ou execuções ao mesmo tempo.ou execuções ao mesmo tempo.

Recursão Recursão –– ConceitoConceito

Exemplo:Exemplo:

int fatorial(int n){int fatorial(int n){

if(n<=1)if(n<=1)

return 1;return 1;

else return(n * fatorial(nelse return(n * fatorial(n--1))1))

}}

void main(){void main(){

int valor;int valor;

valor = fatorial(3);valor = fatorial(3);

}}

Recursão Recursão ––ExemploExemplo Recursão Recursão -- ExemploExemplo

Valor funcionalValor funcional ??

ParâmetroParâmetro 33

Vínculo dinâmico Vínculo dinâmico ..

Vínculo estáticoVínculo estático

Retorno para Retorno para mainmain

LocalLocal ??

Primeira IRA para fatorial

IRA para main

Primeira chamada de fatorial:

n

Page 7: PL11c - Subprogramas

13/11/2015

7

Recursão Recursão –– ExemploExemplo

Valor funcionalValor funcional ??

ParâmetroParâmetro 22

Vínculo dinâmico Vínculo dinâmico ..

Vínculo estáticoVínculo estático

Ret. (para fatorial)Ret. (para fatorial)

......

Segunda IRA para fatorial

Segunda chamada de fatorial:

Primeira IRA para fatorial

n

Recursão Recursão -- ExemploExemplo

Valor funcionalValor funcional ??

ParâmetroParâmetro 11

Vínculo dinâmico Vínculo dinâmico ..

Vínculo estáticoVínculo estático

Ret. (para fatorial)Ret. (para fatorial)

......

Terceira IRA para fatorial

Terceira chamada de fatorial:

Segunda IRA para fatorial

n

BlocosBlocos

Um bloco é especificado em C como um segmento de Um bloco é especificado em C como um segmento de código que se inicia com uma ou mais definições de código que se inicia com uma ou mais definições de dados e é colocado entre chaves.dados e é colocado entre chaves.

Exemplo:Exemplo:

{ { intint temp;temp;

temp=lista[superior];temp=lista[superior];

lista[superior]=lista[inferior];lista[superior]=lista[inferior];

lista[inferior]=temp; }lista[inferior]=temp; }

Blocos Blocos –– Implementação IImplementação I

Blocos podem ser tratados como subprogramas Blocos podem ser tratados como subprogramas sem parâmetros e sendo chamados no mesmo lugar no sem parâmetros e sendo chamados no mesmo lugar no programa. programa.

A desvantagem dessa implementação, que utiliza o A desvantagem dessa implementação, que utiliza o método de método de displaydisplay, é que o tamanho exigido crescerá , é que o tamanho exigido crescerá quando o aninhamento máximo crescer. quando o aninhamento máximo crescer.

Blocos Blocos –– Implementação IIImplementação II

main_5(){main_5(){

int x, y, z;int x, y, z;

while(...){while(...){

int a, b, c;int a, b, c;

......

while(...){while(...){

int d, e;int d, e;

...}...}

}}

while(...){while(...){

int f, g;int f, g;

...}...}

......

}}

ee

dd

cc

b e gb e g

a e fa e f

zz

yy

xx

Instância de ativação Instância de ativação do registro para do registro para

MAIN_5MAIN_5

Variáveis de blocos

Variáveis locais

ExercíciosExercícios

1)1) Quais são as três características de subprogramas?Quais são as três características de subprogramas?

2)2) O que são parâmetros reais? E parâmetros formais?O que são parâmetros reais? E parâmetros formais?

3)3) Quais são os três modos semânticos de passagem de Quais são os três modos semânticos de passagem de parâmetros?parâmetros?

4)4) Defina compilação separada e compilação Defina compilação separada e compilação independente.independente.

5)5) Explique os dois métodos para implementar blocos.Explique os dois métodos para implementar blocos.

6)6) O que é registro de ativação e o que ele contém?O que é registro de ativação e o que ele contém?

Page 8: PL11c - Subprogramas

13/11/2015

8

BibliografiaBibliografia

“Conceitos de Linguagens de programação”, 4a. Edição, “Conceitos de Linguagens de programação”, 4a. Edição, Robert W. Sebesta.Robert W. Sebesta.

“Programming Languages”, Ravi Sethi. “Programming Languages”, Ravi Sethi.