PARMETROS e Formas (Modos) de Passagem de Parmetros
* Os conceitos expostos neste ponto so oriundos da Programao :
a) Parmetro Formal cada um daqueles (Parmetros) dentre os existentes na Lista de Parmetros, no cabealho de um SubPrograma. a) Parmetro Real cada um daqueles Argumentos dentre os existente na Lista de Argumentos, de um Comando de Invocao de um SubPrograma. Por isto, dito ser um Parmetro Real (ou Parmetro de Execuo). As Formas de Passagem de Parmetros
Os livros-textos das disciplinas de (Teoria de) Linguagens de Programao citam at 4 (quatro) formas de como pode ocorrer a chamada (do Ingls: call) de um determinado Parmetro, na Invocao de um SubPrograma. Cada uma de tais formas ou modos correspondendo a uma forma de como deve ser feita a passagem do argumento (parmetro real) correspondente.
* Tais 4 formas so: Call-by-Value (Chamada por Valor) * Interessam-nos, apenas, Call-by-Reference (Chamada por Referncia) os dois primeiros casos. Call-by-Name Call-by-Value-Result
Observao: Em portugus, ao invs de dizer-se Chamada por acerca dos parmetros costuma-se dizer Passagem por; a terminologia que usaremos. * J o termo chamada usado (em portugus), mais comumente, no sentido de Invocao (de um SubPrograma).
VI.1 Passagem de Parmetro POR VALOR
Forma mais simples e mais comumente utilizada (a usada sempre que possvel). Nesta forma de passagem de parmetros cada Parmetro Formal (existente na Lista de Parmetros do cabealho d um SubPrograma) receber, do respectivo argumento (dos vrios existentes na Lista de Argumentos do Comando de uma invocao do SubPrograma em questo) apenas, o seu valor atual
* NADA RECEBE QUANTO AO ENDEREO DE MEMRIA do Parmetro Real (ou seja, do Argumento ou Parmetro de Execuo, daquele Parmetro Formal) * Isto mesmo que tal Argumento seja uma Varivel, numa determinada Invocao. CONSEQUNCIA (mais ou menos bvia ) : Nesta forma de Passagem de Parmetro NO H como fazer-se retorno de resultado do processamento (*feito pelo SubPrograma em questo), para aquele nvel no qual ocorreu a invocao (a chamada) do SubPrograma em questo. (Ex.: Atribuio sobre Parmetro Real) VI.2 Passagem de Parmetro POR REFERNCIA
* Modo especial de Passagem de Parmetro para SubPrograma Procedimento. Nesta forma de Passagem de Parmetro, cada um Parmetro Formal assim passado, recebe o prprio ENDEREO de Memria (*) do Argumento referente. (*) Endereo fsico, na RAM, quando da execuo do programa.
Conseqncia IMPORTANTE: Qualquer alterao feita no valor do Parmetro em questo (feita dentro daquele Procedimento (*) Ex.: uma atribuio de resultado de algum processamento), se refletir na Posio de Memria (RAM) do Argumento respectivo (e, consequentemente, no valor desse Argumento). (*) NOTA : Acima, trata-se de SubPrograma da espcie PROCEDIMENTO ! (* Esta Forma de Passagem de Parmetro NO de aplicao adequada em SubPrograma da espcie Funo. POR QU ? )
** Decorre, ento, que o Argumento referente a um Parmetro a ser passado por referncia tem que ser uma VARIVEL (*) , do tipo especificado para tal Par- metro. (e sempre do mesmo Tipo especificado para o Parmetro). (*) Ou mesmo um campo num Registro, ou ainda uma posio num Vetor, mas sempre um ente cujo valor possa variar, i.e, sempre uma Varivel. algo que possa variar, i.e., possa ser alterado num processamento !
ATENO : Esta forma especial de Passagem de Parmetro para SubPrograma da espcie Procedimento de uso obrigatrio sempre que for necessrio que haja o retorno (*) de informao do Procedimento para o nvel que o invocou. * Deve ser utilizada apenas em tais casos (pois, embora possa, teoricamente, ser utilizada em outras situaes, tal no aconselhvel; isto, se v, na prtica).
NOTA FINAL: Alm do acima colocado, bvio que h que haver algum modo de indica- o (ou seja, algo o que sirva de indicao), na Lista de Parmetros do cabealho de cada SubPrograma PROCEDIMENTO que use uma tal, de quais sero aqueles Parmetros que devem ser passados por Referncia. Na maioria das Linguagens de Programao tal indicao feita por meio do acrscimo de uma Palavra-Chave (* usa-se o termo VAR (*) de VARIVEL) antes do identificador do Parmetro referente. (*) Por tal motivo, no pseudocdigo apresentado, adota-se esta mesma Palavra como o MODO DE INDICAO da Passagem de Parmetro por Referncia.
Isto, para que o Compilador possa entender que o argumento referente dever ser uma Varivel e, assim, poder gerar os comandos adequados, a serem adequadamente interpretados pelo Sistema Operacional, quando da execuo do programa. Teresina, 12 de Agosto de 2.013. (a) Prof. JOS ALBERTO Lemos Duarte