P ARADIGMAS DE L INGUAGENS S UBPROGRAMAS Prof. Thiago Pereira Rique
A GENDA Fundamentos dos subprogramas Métodos de passagem de parâmetros Subprogramas sobrecarregados
F UNDAMENTOS DOS SUBPROGRAMAS Características gerais dos subprogramas: Cada subprograma tem um único ponto de entrada; Toda unidade chamadora é suspensa durante a execução do programa chamado. O controle sempre retorna ao chamador quando a execução do subprograma se encerra.
F UNDAMENTOS DOS SUBPROGRAMAS Definições básicas: Uma definição de subprograma descreve a interface e as ações da abstração de subprograma. Uma chamada a subprograma é a solicitação explícita para executar o subprograma. Diz-se que um subprograma é ativo se, depois de ter sido chamado, ele iniciou a execução, mas ainda não a concluiu.
F UNDAMENTOS DOS SUBPROGRAMAS Definições básicas: Cabeçalho de subprograma Especifica que a unidade sintática seguinte é uma definição de subprograma; Oferece um nome para o subprograma; Especifica uma lista de parâmetros (opcional).
F UNDAMENTOS DOS SUBPROGRAMAS Definições básicas: Cabeçalho de subprograma Exemplos: FORTRAN SUBROUTINE SOMADORA(parâmetros) Ada procedure SOMADORA(parâmetros)
F UNDAMENTOS DOS SUBPROGRAMAS Definições básicas: Cabeçalho de subprograma Exemplos: C void somadora(parâmetros)
F UNDAMENTOS DOS SUBPROGRAMAS Parâmetros: Acesso aos dados Acesso direto a variáveis não-locais Passagem de parâmetros Em algumas situações é conveniente ser capaz de transmitir computações como parâmetros a subprogramas.
F UNDAMENTOS DOS SUBPROGRAMAS Parâmetros: Parâmetros formais – parâmetros no cabeçalho de um programa. Parâmetros reais – parâmetros na chamada ao subprograma.
MÉTODOS DE PASSAGEM DE PARÂMETROS Passagem por valor: Valor do parâmetro real é usado para inicializar o parâmetro formal correspondente. Chamador Chamado (sub(a, b, c)) (procedure sub(x, y, z)) a b c x x = a y y = b z z = c
MÉTODOS DE PASSAGEM DE PARÂMETROS Passagem por referência: Transmite um caminho de acesso (endereço). Proporciona o caminho de acesso à célula que armazena o parâmetro real. ChamadorChamado int x;void fun(int *v)... fun(&x); x v
S UBPROGRAMAS SOBRECARREGADOS Um subprograma sobrecarregado tem o mesmo nome que outro no mesmo ambiente de referenciamento. Cada versão deve ser diferente quanto ao número, à ordem ou aos tipos de seus parâmetros (ou em seu tipo de retorno, se for uma função). C++, Java e Ada incluem subprogramas sobrecarregados predefinidos. Ex. (Java): JOptionPane.showMessageDialog(null, msg); JOptionPane.showMessageDialog(null, msg, title, JOptionPane.PLAIN_MESSAGE);
S UBPROGRAMAS SOBRECARREGADOS Na Ada, duas funções sobrecarregadas podem ter o mesmo perfil de parâmetro e diferir somente em seus tipos de retorno. No C++ e no Java, o tipo de retorno é irrelevante para tirar ambiguidade de funções (ou de métodos) sobrecarregadas. Ex. (Java): public int metodo(int a, int b) {... } public double metodo(int d, int e) {... } //ilegal public int metodo(int a, double b) {...}
REFERÊNCIA SEBESTA, R. W. Conceitos de Linguagens de Programação. 5a. Edição. São Paulo: Bookman, 2003.