o subprograma.Passagem de parametros por valor-resultadoA passagem por valor-resultado e um modelo de implementacao de parametros em modo entrada/saida no qual valores reais sao transferidos. Ela e, com efeito, uma combinacao de passagem por valor e por resultado.Passagem de parametros por referenciaA passagem por referencia e o segundo modelo de implementacao de parametros em modo entrada/saida. Entretanto, em vez de transmitir valores de dados para la e para ca, como na passagem de valor-resultado, o metodo de passagem por referencia transmite um caminho de acesso, usualmente apenas um endereco, para o subprograma chamado. Isso proporciona o caminho de acesso a celula que armazena o parametro real.A vantagem da passagem por referencia e que o proprio processo de passagem e eficiente, tanto em termos de tempo como de espaco. Nao e necessario espaco duplicado, nem qualquer atividade de copia.Passagem de parametros por nomeA passagem por nome e um metodo de transmissao de parametros em modo entrada/saida que nao corresponde a um unico modelo de implementacao. Quando parametros sao passados por nome, o parametro real e, com efeito, textualmente substituido para o parametro formal que corresponde em todas as suas ocorrencias no subprograma.Metodos de passagem de parametros das principais linguagensO FORTRAN sempre usou o modelo semantico de modo entrada/saida para a passagem de parametros.O ALGOL introduziu o metodo de passagem por nome.O C usa passagem por valor. Obtem-se a semantica da passagem por referencia usando ponteiros como parametros.O C++ inclui um tipo de ponteiro especial, chamado tipo de referencia, entre outras linguagens.Parametros de verificacao de tiposAgora e amplamente aceito que a confiabilidade de software exige que os tipos de parametros reais sejam verificados quanto a coerencia com os tipos dos parametros formais correspondentes.Arrays multidimensionais como parametrosas funcoes de associacao de armazenamento sao usadas para associar os valores de indice das referencias a elementos de arrays multidimensionais a enderecos na memoria. Podemos ilustrar:void fun (int matriz[] []) {... }Void main () {Int mat [] [];...Fun (mat);...}Consideracoes de projetoDas importantes consideracoes estao envolvidas na escolha de metodos de passagem de parametros: eficiencia, e se e necessaria uma transferencia unidirecional ou bidirecional de dados.Parametros que sao nomes de subprogramasOcorre um grande numero de situacoes em programacao mais convenientementes manipuladas se nomes de subprograma puderem ser enviados como parametros a outros subprogramas. Uma das mais comuns ocorre quando um subprograma precisa provar alguma funcao matematica. Por exemplo, um subprograma queue faz integracao numerica estima a area sob o grafico de uma funcao provando-a em uma serie de diferentes pontos.Subprogramas sobrecarregadosUm operador sobrecarregado e o que tem multiplos significados. O significado de uma instancia particular de um operador sobrecarregado e determinado pelos typos de sues operands. Por exemplo, se o operador * tiver dois operados de ponto flutuante em um programa C, isso especificara uma multiplicacao de ponto-flutuante. Mas, se o mesmo operador tiver dois operados inteiros, isso especificara uma multiplicacao de numeros inteiros.Um subprograma sobrecarregado tem o mesmo nome que outro no mesmo ambiente de referenciamento.Subprogramas genericosUm subprograma generico ou polimorfico leva parametros de diferentes tipos em varias ativacoes. Os subprogramas sobrecarregados apresentam uma especie particular de polimorfismo