S_LP1_subprogramas_slides_estudados - Pré P2 - Schneider
38 pág.

S_LP1_subprogramas_slides_estudados - Pré P2 - Schneider


DisciplinaProgramação I22.117 materiais253.438 seguidores
Pré-visualização3 páginas
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Paradigmas de Linguagens de Programação
Subprogramas
Cristiano Lehrer
http://www.ybadoo.com.br/
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Características Gerais dos Subprogramas
\u25cf Cada subprograma tem um único ponto de entrada.
\u25cf Toda unidade de programa chamadora é suspensa durante a 
execução do programa chamado, o que implica na existência de 
somente um subprograma em qualquer momento dado.
\u25cf O controle sempre retorna ao chamador quando a execução do 
subprograma encerra-se.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Definições Básicas (1/3)
\u25cf Uma definição de subprograma descreve a interface e as ações da 
abstração de subprograma.
\u25cf Uma chamada a subprograma é a solicitação explícita para executar 
o programa:
\u25cf Um subprograma está ativo se, depois de ter sido chamado, ele iniciou 
a execução, mas ainda não a concluiu.
\u25cf Existem dois tipos fundamentais de subprogramas:
\u2013 Funções.
\u2013 Procedimentos.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Definições Básicas (2/3)
\u25cf Um cabeçalho de subprograma é a primeira linha da definição, 
incluindo o nome, o tipo de subprograma e os parâmetros formais.
\u25cf O perfil de parâmetro de um subprograma é o número, a ordem e os 
tipos de seus parâmetros formais.
\u25cf O protocolo de um subprograma é seu perfil de parâmetros mais, se 
for uma função, seu tipo de retorno.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Definições Básicas (3/3)
\u25cf Uma declaração de subprograma providencia o protocolo, mas não o 
corpo do subprograma.
\u25cf Um parâmetro formal é uma variável vazia listada no cabeçalho do 
subprograma e utilizada no subprograma.
\u25cf Um parâmetro real representa um valor ou endereço utilizado no 
subprograma pela declaração que o chamou.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Parâmetros (1/3)
\u25cf Parâmetros posicionais
\u25cf Em quase todas as linguagens de programação, a correspondência 
entre parâmetros reais e formais \u2013 ou a vinculação de ambos \u2013 é feita 
simplesmente pela posição:
\u2013 O primeiro parâmetro real é vinculado ao primeiro parâmetro formal e assim 
por diante.
\u25cf Exemplo em Java:
  public void somar(int a, int b){...}
  \u2026
  s = somar(10, 20);
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Parâmetros (2/3)
\u25cf Parâmetros Nomeados
\u25cf O nome do parâmetro formal a que um parâmetro real deve ser 
vinculado é especificado com esse último.
\u25cf Vantagem:
\u2013 A ordem é irrelevante.
\u25cf Desvantagem:
\u2013 Usuário precisa saber os nomes dos parâmetros formais.
\u25cf Exemplo em ADA:
  SOMADOR( COMPRIMENTO => MEU_COMPRIMENTO,
  LISTA => MEU_ARRAY,
  SOMA => MINHA_SOMA);
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Parâmetros (3/3)
\u25cf Valores padrão:
\u25cf Valores utilizados se nenhum parâmetro real for passado ao parâmetro 
formal no cabeçalho do subprograma.
\u25cf Exemplo em C++:
  float calculo_pagamento( float renda,
  float tarifa_imposto,
  int isencoes = 1);
  \u2026
  pagamento = calculo_pagamento(20000.0, 0.15);
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Procedimentos e Funções
\u25cf Procedimentos:
\u25cf Declarações definidas pelo usuário.
\u25cf Funções:
\u25cf Operadores definidos pelo usuário.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Questões de Projeto Referentes aos Subprogramas
\u25cf Qual método (ou métodos) de passagem de parâmetro é usado.
\u25cf Os tipos dos parâmetros reais são verificados em relação aos tipos de parâmetros 
formais.
\u25cf As variáveis locais são estaticamente ou dinamicamente alocadas.
\u25cf Se subprogramas puderem ser passados como parâmetros, qual é o ambiente de 
referência desse subprograma.
\u25cf Se subprogramas puderem ser passados como parâmetros, os tipos de 
parâmetros são verificados quanto aos parâmetros em chamadas aos 
subprogramas passados.
\u25cf Definições de subprograma podem aparecer em outras definições de 
subprograma.
\u25cf Subprogramas podem ser sobrecarregados.
\u25cf Subprogramas podem ser genéricos.
\u25cf A compilação separada ou independente é possível.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Ambientes de Referência Locais (1/2)
\u25cf Variáveis que são definidas dentro de subprogramas são chamadas 
variáveis locais:
\u25cf Se as variáveis locais são stack-dinâmicas:
\u25cf Vantagem:
\u2013 Suporte a recursão.
\u2013 Armazenamento para variáveis locais de todos os subprogramas podem ser 
compartilhado.
\u25cf Desvantagem: 
\u2013 Tempo de alocação e desalocação.
\u2013 Endereçamento indireto.
\u2013 Subprogramas não podem ser sensíveis à história.
\u25cf Para as variáveis locais estáticas é o oposto.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Ambientes de Referência Locais (2/2)
\u25cf Exemplos:
\u25cf FORTRAN 77 e 90 \u2013 a maioria é estática, mas pode ser stack-dinâmica.
\u25cf C \u2013 ambos (variáveis declaradas com static são estáticas, mas o padrão é stack-
dinâmica).
\u25cf Pascal, Modula-2 e ADA \u2013 somente stack-dinâmica.
\u25cf Código em C:
int somador (int list[], int listlen){
   static int soma = 0;
   int cont;
   for (cont = 0; cont < listlen; cont++)
      soma += list[cont];
   return soma;
}
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Método de Passagem de Parâmetros (1/2)
\u25cf Modelos Semânticos de Passagem de Parâmetros:
\u25cf Modo entrada (in mode).
\u25cf Modo saída (out mode).
\u25cf Modo de entrada/saída (inout mode).
\u25cf Modelos Conceituais de Transferência:
\u25cf Um valor real é transferido fisicamente.
\u25cf Um caminho de acesso é transmitido.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Método de Passagem de Parâmetros (2/2)
\u25cf Modelos de Implementação de Passagem de Parâmetros:
\u25cf Passagem por Valor.
\u25cf Passagem por Resultado.
\u25cf Passagem por Valor-Resultado.
\u25cf Passagem por Referência.
\u25cf Passagem por Nome.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Passagem por Valor
\u25cf Passagem por Valor (in mode):
\u25cf O valor do parâmetro real é usado para inicializar o parâmetro formal 
correspondente, que, então age como uma variável local no 
subprograma.
\u25cf Normalmente implementada pela transferência de dados real, mas pode 
também utilizar o caminha de acesso.
\u25cf Desvantagens do acesso pelo método do caminho:
\u2013 O valor deve estar numa célula protegida contra a escrita.
\u2013 Acesso mais complicado.
\u25cf Desvantagens do método de cópia física:
\u2013 Requer mais armazenamento.
\u2013 Custo para transferir fisicamente o parâmetro.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Passagem por Resultado
\u25cf Passagem por resultado (out mode):
\u25cf Valores locais são passados de volta ao chamador.
\u25cf Transferência física é usualmente utilizada.
\u25cf Desvantagens:
\u2013 Se o valor é passado, tempo e espaço.
\u2013 Em ambos os casos, a dependência da ordem pode ser problema:
\u25cf Exemplo na sintaxe do Pascal:
        procedure sub1 (y : integer, z : integer);
        \u2026
        sub1 (x, x);
\u25cf O valor de x no chamador dependerá da ordem dos assinalamentos no 
retorno.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Passagem por Valor-Resultado
\u25cf Passagem por valor-resultado (inout mode):
\u25cf Transferência física, em ambos os modos.
\u25cf Também chamado de passagem por cópia.
\u25cf Desvantagens:
\u2013 Os referentes ao passagem por resultado.
\u2013 Os referentes ao passagem por valor.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Passagem por Referência (1/2)
\u25cf Passagem por referência (inout mode):
\u25cf Passagem pelo método de caminho de acesso.
\u25cf Também conhecido como passagem por compartilhamento.
\u25cf Vantagens:
\u2013 Processo de passagem de parâmetros é eficiente.
Subprogramas
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/