Sei sulla pagina 1di 7

DISCIPLINA: LGICA DE PROGRAMAO E ALGORITMOS AULA 17 MECANISMOS DE PASSAGEM DE PARMETROS Autores: Nlio Alessandro Azevedo Cacho

neliocacho@ect.ufrn.br

Keivilany Janielle de Lima Coelho


keivycoelho@hotmail.com

APRESENTAO Nas aulas anteriores (Aulas 15 e 16 de nossa disciplina), conhecemos os subalgoritmos e aprendemos a descrever e utilizar funes e

procedimentos. Conhecemos a sintaxe desses mdulos, as formas de retorno e aprendemos como cham-los no algoritmo principal. Aprendemos que, atravs dos parmetros, as informaes de entrada (variveis globais) e sada (variveis locais) so trocadas entre algoritmo e subalgoritmos. Voc viu que essa troca de informaes realizada de forma diferente nas funes e procedimentos. Nesta aula, conheceremos os tipos de parmetros e os mtodos de passagem de parmetros que podemos utilizar em funes e procedimentos.

OBJETIVOS Identificar os tipos de parmetros Definir os mecanismos de passagem de parmetros que podem ser utilizados em funes e procedimentos Criar funes e procedimentos com os mecanismos de passagem de parmetros estudados

PASSAGEM DE PARMETROS Sabemos que, em funes e procedimentos, deve haver uma comunicao entre o subalgoritmo e o algoritmo que o chama, atravs das variveis globais do algoritmo e as variveis locais do subalgoritmo. A essa comunicao damos o nome de passagem de parmetros.

Os tipos de parmetros que utilizamos nesse processo so dois: a) Parmetros formais so aquelas variveis locais que

declaramos entre parntesis, nos cabealhos dos subalgoritmos. So utilizados para realizar os clculos dentro do subalgoritmo; e b) Parmetros reais so os valores que substituem os parmetros formais no momento da chamada de um subalgoritmo. Por exemplo, veja o cabealho da funo fsoma, abaixo:

Funcao fsoma (a1, b1 : inteiro) : inteiro

As variveis a1 e b1 so os parmetros formais da funo. Veja, agora, o seguinte trecho do algoritmo que chama essa funo:

leia (a) leia (b) soma <- fsoma (a,b)

Os valores armazenados nas variveis globais a e b so os parmetros reais. Note que poderamos, simplesmente chamar a funo, passando os valores diretamente: soma <- fsoma (3,5). Nesse caso, os nmeros 3 e 5 seriam os parmetros reais. No processo de passagem de parmetros, so passados dados de entrada do algoritmo para o subalgoritmo e dados de sada no sentido oposto. Veja esse processo ilustrado na Figura 1.

Figura 1: Troca de informaes entre algoritmo e funo

Na Figura 1, podemos ver uma funo, no mdulo da esquerda, que calcula uma soma entre dois nmeros. No mdulo da direita, temos o corpo do algoritmo que chama essa funo. O algoritmo passa os dados de entrada (nmeros armazenados nas variveis a e b, que so os parmetros reais) para a funo, que os armazena em suas variveis locais a1 e b1(parmetros formais). O clculo efetuado e o valor encontrado armazenado na varivel local resultado. Atravs do comando retorne, esse valor passado como dado de sada para o algoritmo (no momento da chamada da funo), que o armazena na varivel global soma para, ento, ser exibido. Em um procedimento, essa passagem de parmetros feita de uma forma um pouco diferente. Veja a Figura 2.

Figura 2: Troca de informaes entre algoritmo e procedimento

No procedimento, a comunicao de sada no feita de forma explcita como na funo. Veja que, ao contrrio do que feito na funo, a palavra reservada var utilizada nos parmetros do procedimento. Veja, tambm, que, na chamada ao procedimento, todos os dados so passados como parmetros, ao passo que na funo, so passados apenas os dados de entrada (os nmeros armazenados em a e b). Por que ser que isso ocorre? Porque os parmetros, na funo da Figura 1, esto sendo passados por valor e, no procedimento da Figura 2, os parmetros esto sendo passados por referncia. Vamos compreender o que isso significa?

PASSAGEM DE PARMETROS POR VALOR Quando um parmetro passado por valor, no momento da chamada do subalgoritmo, o valor do parmetro real copiado para o parmetro formal. Dessa forma, no h alterao no valor do parmetro real, sejam quais forem os clculos realizados no subalgoritmo. Faa o teste. Experimente declarar uma varivel global do tipo inteiro, que ser o parmetro real. Atribua a ela um valor qualquer. E faa o algoritmo exibir esse valor. Em seguida, crie um procedimento com uma varivel local (parmetro formal) e passe o valor da varivel global para essa varivel local. Realize alguma operao sobre esse valor, de modo que ele seja alterado.

Faa, ento, a chamada ao procedimento e exiba o valor da varivel criada. O valor foi alterado? Na passagem de parmetros por valor, so criadas as variveis ( reservado um espao na memria) locais como parmetros formais, para armazenar uma cpia do valor dos parmetros reais.

PASSAGEM DE PARMETROS POR REFERNCIA No mecanismo de passagem de parmetros por referncia, no h reserva de espao extra na memria para os parmetros formais. Nesse caso, no momento da chamada ao subalgoritmo, os parmetros reais e formais correspondentes compartilham o mesmo espao em memria. Desse modo, as modificaes feitas nos parmetros formais dos subalgoritmos afetam os parmetros reais. Para diferenciar a passagem de parmetros por valor da passagem por referncia, utilizamos, neste segundo mtodo, a palavra reservada var antes dos parmetros, no cabealho do subalgoritmo. o que voc viu na Figura 2. Faa o mesmo teste que voc fez na passagem de parmetros por valor, s que, dessa vez, passando os parmetros por referncia (utilizando var antes dos parmetros no cabealho do subalgoritmo). E agora? O valor foi alterado?

ATIVIDADE 01 1. Defina mecanismo de passagem de parmetros e explique, com suas palavras, os dois mtodos que estudamos nesta aula, lembrando de falar nos tipos de parmetros que so utilizados.

RESUMO Nesta aula, conceituamos mecanismos de passagem de parmetros e vimos que existem dois tipos de parmetros. Compreendemos que a troca entre esses tipos caracteriza a passagem de parmetros e conhecemos os dois mtodos de passagem de parmetros utilizados na chamada dos

subalgoritmos, contemplando as diferenas estruturais e semnticas entre eles.

AUTO-AVALIAO 1. Quais os tipos de parmetros que podemos utilizar nas funes e procedimentos? 2. Que nome se d troca de informaes entre esses parmetros? 3. Quais os tipos de mecanismos de passagem de parmetros que utilizamos em subalgoritmos? Diferencie-os e crie subalgoritmos com exemplos de cada um deles. 4. Faa um algoritmo que leia trs nmeros e crie uma funo que calcule o quadrado desses nmeros e retorne o valor. Utilize passagem de parmetros por valor. 5. Faa o mesmo algoritmo do item anterior, agora passando os parmetros por referncia. 6. Faa um algoritmo que, atravs de um procedimento, mostre a potncia de um nmero qualquer, dados o nmero e o seu expoente. Utilize passagem de parmetros por referncia. 7. Faa uma funo que execute os mesmo comandos do item anterior. S que, dessa vez, utilize passagem de parmetros por valor. 8. Analise atentamente o algoritmo abaixo e, em seguida, responda s questes: algoritmo "exerccio" var num,num1,res : real funcao f1(a, b : real) : real var x : real inicio x <- b - 4*a retorne x fimfuncao

inicio escreval ("Digite um nmero: ") leia (num) escreval ("Digite outro nmero: ")

leia (num1) res <- f1 (num, num1) escreval (res) fimalgoritmo

a) O parmetro x um parmetro do tipo______________________ b) As variveis a e b so variveis do tipo _________________ e parmetros do tipo_______________________ c) Os parmetros reais neste algoritmo so as variveis________ e ________, que so variveis do tipo__________________ d) A passagem de parmetro nesse algoritmo

por______________________ e, nessa passagem, so copiados os valores de ____________ e _____________ para

______________ e _____________, respectivamente. e) Aps o clculo no subalgoritmo, o resultado passado de ______________ para _______________, atravs do comando ________________. REFERNCIAS TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos. Universidade de Caxias do Sul. NAPRO Ncleo de Apoio Aprendizagem de Programao. 2004. Disponvel em: <http://www.guanabara.info/logica/Apostilas/VisuAlg_Ref.pdf> . Acesso em: 21 Dez. 2009. SUBALGORITMOS. Disponvel em: <http://www.dimap.ufrn.br/~dario/arquivos/dim320-apostila-3.pdf>. Acesso em: 04 Jan. 2010. MANZANO, Jos A N G; OLIVEIRA, Jair F de. Algoritmos: Lgica para desenvolvimento e programao de computadores.17ed. So Paulo: Erica, 2005. PREUSS, Evandro. Algoritmos e Estruturas de Dados I. Universidade Regional Integrada do Alto Uruguai e das Misses. 2002. Disponvel em: < http://www.dca.ufrn.br/~nogueira/dca0800/material/algoritmos.doc >. Acesso em 08 Jan. 2010.

Potrebbero piacerti anche