vinculacao de ambos e feita simplesmente pela posicao: o primeiro parametro real e vinculado ao primeiro formal e assim por diante. Eles sao chamados de parametros posicionais.Quando as listas sao longas, o escritor do programa pode cometer mais erros quanto a ordem de parametros da lista. Uma solucao para o problema e fornecer parametros nomeados, nos quais o nome do parametro formal a que um parametro real deve estar vinculado e especificado com este ultimo.Procedimentos e funcoesHa duas categorias distintas de subprogramas: Procedimentos (procedures) e funcoes: ambos podem ser vistos como abordagens para estender a linguagem. Procedimentos sao colecoes de instrucoes que definem computacoes parametrizadas. Estas, por sua vez, sao ativadas por instrucoes de chamadas simples.As funcoes lembram estruturalmente os procedimentos, mas sao semanticamente modeladas em funcoes matematicas. Se uma delas for um modelo confiavel, nao produzira nenhum efeito colateral; ou seja, a funcao nao modificara seus parametros, nem quaisquer variaveis definidas fora dela.As funcoes definem novos operadores determinados pelo usuario. Por exemplo, se uma linguagem nao tiver um operador de exponenciacao, pode-se escrever uma funcao que retorna o valor de um de seus parametros elevado a potencia de outro.Por exemplo, considere o seguinte cabecalho de funcao e de chamada:void sort (int list[], int listlen);...sort (scores, 100);Os metodos do Java e do C++ sao similares ao do C.Questoes de projeto referentes aos subprogramasSubprogramas sao estruturas complexas nas linguagens de programacao. Isto quer dizer que uma extensa lista de questoes esta envolvida em seu projeto. Uma questao evidente e a escolha do metodo ou dos metodos de passagem de parametros a serem usados.Ambientes de referencias locaisOs subprogramas geralmente tem permissao para definir suas proprias variaveis, definindo assim, os ambientes de referencia locais. Variaveis que sao definidas dentro do subprograma sao chamadas variaveis locais, porque o acesso a elas normalmente e restrito ao subprograma no qual sao definidas.No ALGOL 60 e em suas linguagens descendentes, as variaveis locais em um subprograma sao, como padrao, stack-dinamicas. Em funcoes C e C++, as variaveis locais sao stack-dinamicas, a menos que seja especificamente declaradas como static. Por exemplo, na seguinte funcao C (ou C++), a variavel soma e estatica e cont e stack-dinamica.Int somador (int list[], int listlen) {Static int soma = 0Int cont;For (cont= 0; <>Metodos de passagem de parametrosOs metodos de passagem de parametros sao as maneiras pelas quais se transmitem parametros para subprogramas chamados e/ou de subprograma chamadosModelos semanticos de passagem de parametrosOs parametros formais sao caracterizados por tres modelos semanticos distintos:1-eles podem receber dados do parametro real correspondente;2-podem transmitir dados ao parametro real;3-podem fazer ambosOs tres modelos semanticos sao chamados modo entrada (in mode), modo saida (out mode) e modo entrada/saida (inout mode), respectivamente.Passagem de parametros por valorQuando um parametro e passado por valor, o valor do parametro real e usado para inicializar o parametro formal correspondente que, entao age como uma variavel local no subprograma, implementando assim, a semantica de modo de entrada.Passagem de parametros por resultadoA passagem por resultado e um modelo de implementacao para parametros em modo saida. Quando um parametro e passado por resultado, nenhum valor e transmitido para