Baixe o app para aproveitar ainda mais
Prévia do material em texto
Passagem de parâmetros por valor. APRESENTAÇÃO Nesta Unidade de Aprendizagem, trabalharemos com a construção de algoritmos modulares utilizando passagem de parâmetros por valor. Assim, você compreenderá como enviar dados para um procedimento ou função. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Identificar problemas que podem ser implementados através de rotinas.• Construir algoritmos com rotinas que recebam dados, utilizando a passagem de parâmetros por valor. • Diferenciar tipos de parâmetros.• DESAFIO A passagem de parâmetros para uma função ou procedimento permite que estes parâmetros se comportem conforme os dados recebidos para trabalhar. Na passagem de parâmetros por valor, a rotina/subprograma (procedimento ou função) apenas recebe os valores com os quais irá trabalhar, e esses são recebidos nas variáveis que foram definidas como parâmetros. Considere que você precisa construir um procedimento que deve mostrar a quantidade de cada um dos ingredientes necessários para fazer brigadeiro. Para fazer 30 docinhos de bom tamanho, são necessários: - 1 lata de leite condensado - 1 colher de sopa de manteiga - 4 colheres de sopa de achocolatado em pó Você deve construir um procedimento que receba como parâmetro a quantidade de brigadeiros que se deseja fazer. A partir disso, deve calcular e mostrar a quantidade de cada um dos ingredientes para fazer a quantidade de brigadeiros recebida como parâmetro. INFOGRÁFICO A partir de um problema, é criada a solução algorítmica, na qual são definidas as rotinas necessárias (procedimentos e funções), especificando os parâmetros, ou seja, o que a função precisa receber para executar sua tarefa (passagem por valor). Quando a rotina termina, o fluxo retorna para o algoritmo que a chamou. Veja mais detalhes no infográfico: CONTEÚDO DO LIVRO A modularização permite desenvolver programas mais organizados e que possibilitam a reutilização de código. Conheça um pouco mais sobre a passagem de parâmetros por valor lendo as páginas 241 e 242 do seguinte livro: EDELWEISS, N.; LIVI, M.A.C. Algoritmos e programação com exemplos em Pascal e C - Vol. 23. Série Livros Didáticos Informática UFRGS. Porto Alegre: Bookman, 2014. Boa leitura. s é r ie liv ro s d id á tic o s in fo r m á tic a u fr g s 23 s é r i e l i v r o s d i d á t i c o s i n f o r m á t i c a u f r g s volume 3 Linguagens Formais e Autômatos, 6.ed., de Paulo Blauth Menezes volume 4 Projeto de Banco de Dados, 6.ed., de Carlos Alberto Heuser volume 5 Teoria da Computação: Máquinas Universais e Computabilidade, 3.ed, de Tiarajú Asmuz Diverio e Paulo Blauth Menezes volume 6 Arquitetura de Computadores Pessoais, 2.ed., de Raul Fernando Weber volume 7 Concepção de Circuitos Integrados, 2.ed., de Ricardo Augusto da Luz Reis e cols. volume 8 Fundamentos de Arquitetura de Computadores, 4.ed., de Raul Fernando Weber volume 10 Tabelas: Organização e Pesquisa, de Clesio Saraiva dos Santos e Paulo Alberto de Azeredo volume 11 Sistemas Operacionais, 4.ed., de Rômulo Silva de Oliveira, Alexandre da Silva Carissimi e Simão Sirineo Toscani volume 12 Teoria das Categorias para Ciência da Computação, 2.ed., de Paulo Blauth Menezes e Edward Hermann Haeusler volume 13 Complexidade de Algoritmos, 3.ed., de Laira Vieira Toscani e Paulo A. S. Veloso volume 16 Matemática Discreta para Computação e Informática, 4.ed., de Paulo Blauth Menezes volume 18 Estruturas de Dados, de Nina Edelweiss e Renata Galante volume 19 Aprendendo Matemática Discreta com Exercícios, de Paulo Blauth Menezes, Laira Vieira Toscani e Javier García López volume 20 Redes de Computadores, de Alexandre da Silva Carissimi, Juergen Rochol e Lisandro Zambenedetti Granville volume 21 Introdução à Abstração de Dados, de Daltro José Nunes volume 22 Comunicação de Dados, de Juergen Rochol COMPUTAÇÃO www.grupoa.com.br A Bookman é um dos selos editoriais do Grupo A Educação, empresa que oferece soluções em conteúdo, tecnologia e serviços para a educação acadêmica e profissional. algoritmos e programação com exemplos em Pascal e C nina edelweiss maria aparecida castro livi Material didático para professores Visite www.grupoa.com.br nina edelweiss maria aparecida castro livi l i v r o s d i s p o n í v e i s algoritm os e program ação com exem plos em P ascal e C 23 edelw eiss livi 23 algoritmos e programação com exemplos em Pascal e C Aprender programação não é uma tarefa simples. Requer um entendimento perfeito do problema, a análise de como solucioná-lo e a escolha da forma de implementação da solução. algoritmos e programação apresenta o processo de construção de algoritmos e de programas, enfatizando as etapas de abstração, organização, análise e crítica na busca de soluções eficientes. Os elementos de um programa são introduzidos pouco a pouco ao longo do texto, inicialmente apresentados em pseudolinguagem e, em seguida, exemplificados nas linguagens de programação Pascal e C. Este é um livro-texto para disciplinas iniciais de programação de duração de um semestre. Pode ser utilizado sobretudo em cursos de bacharelado e licenciatura em ciência da computação, análise de sistemas e engenharia da computação. E22a Edelweiss, Nina. Algoritmos e programação com exemplos em Pascal e C [recurso eletrônico] / Nina Edelweiss, Maria Aparecida Castro Livi. – Dados eletrônicos. – Porto Alegre : Bookman, 2014. Editado também como livro impresso em 2014. ISBN 978-85-8260-190-7 1. Informática. 2. Algoritmos – Programação. I. Livi, Maria Aparecida Castro. II. Título. CDU 004.421 as autoras Nina Edelweiss é engenheira eletricista e doutora em Ciência da Computação pela Uni- versidade Federal do Rio Grande do Sul. Durante muitos anos, lecionou em cursos de Enge- nharia e de Ciência da Computação na UFRGS, na UFSC e na PUCRS. Foi, ainda, orientadora do Programa de Pós-Graduação em Ciência da Computação da UFRGS. É coautora de três livros, tendo publicado diversos artigos em periódicos e em anais de congressos nacionais e internacionais. Participou de diversos projetos de pesquisa financiados por agências de fomento como CNPq e FAPERGS, desenvolvendo pesquisas nas áreas de bancos de dados e desenvolvimento de software. Maria Aparecida Castro Livi é licenciada e bacharel em Letras, e mestre em Ciência da Computação pela Universidade Federal do Rio Grande do Sul. Desenvolveu sua carreira pro- fissional na UFRGS, onde foi programadora e analista de sistema, antes de ingressar na carreira docente. Ministrou por vários anos a disciplina de Algoritmos e Programação para alunos dos cursos de Engenharia da Computação e Ciência da Computação. Sua área de interesse prioritário é o ensino de Linguagens de Programação, tanto de forma presencial quanto a distância. Catalogação na publicação: Ana Paula M. Magnus – CRB 10/2052 Edelweiss_Iniciais_eletronica.indd iiEdelweiss_Iniciais_eletronica.indd ii 14/05/14 16:5114/05/14 16:51 Capítulo 9 Subprogramas 241 declaradas as variáveis inteiras int1 e int2, os seguintes comandos podem ser utilizados para chamar o subprograma Fatorial: execute Fatorial (5) execute Fatorial (int1) execute Fatorial (int1 + int2) Na primeira chamada, o parâmetro formal número é substituído pelo valor 5; na segunda chamada, número é substituído pela variável int1; e, na última chamada, número é substi- tuído pelo resultado da expressão int1 + int2. 9.3.2 parâmetros de entrada e de saída A utilização de um subprograma só é efetiva se for claramente definida a tarefa que será executada e qual sua interação com o programa que o acionou. Para que isso seja possível, é importante que toda a interação seja feita somente através dos parâmetros, identificando quais os parâmetros de entrada (que recebem variáveis ou valores para executar a tarefa) e quais osparâmetros de saída (que devolvem os valores calculados ao programa que acionou o subprograma). No exemplo anterior, do subprograma que calcula o fatorial, não foi definido como o resulta- do deveria ser devolvido ao programa. Um segundo parâmetro deve ser definido, por meio do qual será informado o valor calculado para o fatorial. No cabeçalho da declaração do subpro- grama devem ser identificados os parâmetros de entrada (que recebem variáveis ou valores para a execução) e os de saída (que devolvem valores): Subprograma Fatorial Parâmetro de entrada: número (inteiro) Parâmetro de saída: fat (inteiro) As chamadas a Fatorial devem fornecer agora dois parâmetros reais, sendo o primeiro parâmetro o número para o qual se quer calcular o fatorial, e o segundo, o nome de uma variável na qual será devolvido o resultado: execute Fatorial (4, int1) execute Fatorial (int1 + 7, int1) Na primeira chamada, o resultado do cálculo do fatorial de 4 é devolvido através da variável int1; na segunda chamada, o conteúdo da variável int1 é alterado após a execução, pas- sando a conter o valor do fatorial do valor que armazenava anteriormente somado com a constante 7. 9.3.3 parâmetros por valor ou por referência A passagem de valores a subprogramas pode acontecer por valor ou por referência. A passagem por valor indica que somente o valor interessa ao subprograma. Se esse valor for passado por meio do nome de uma variável, somente o valor da variável é transferido para o Edelweiss_09.indd 241Edelweiss_09.indd 241 12/03/14 09:0212/03/14 09:02 242 Algoritmos e Programação com Exemplos em Pascal e C parâmetro. Uma cópia do conteúdo da variável é carregada em uma variável auxiliar, que será utilizada durante a execução do subprograma. Dessa forma, qualquer modificação no valor da variável auxiliar não se refletirá na variável utilizada como parâmetro real. A passagem de valores para parâmetros definidos por valor pode ser feita ainda por meio de um valor literal e do resultado de uma expressão. Na execução da chamada a um subprograma, os parâmetros passados por valor também são incluídos na pilha de execução, preservando seus valores para a continuação posterior da execução. Na passagem de um parâmetro por referência, o endereço físico da variável utilizada como parâmetro real é passado ao subprograma, sendo essa variável utilizada durante a execução. Alterações no valor do parâmetro são feitas diretamente nessa variável. Na chamada de um subprograma, os parâmetros definidos por referência recebem nomes de variáveis existentes no programa principal. É importante observar que, na execução de uma chamada ao subpro- grama, os parâmetros por referência não sofrem empilhamento, já que não são locais aos subprogramas. No exemplo anterior do subprograma Fatorial, o primeiro parâmetro – de entrada – é pas- sado por valor. O segundo, que devolve o valor calculado, deve ser definido por referência. Na pseudolinguagem, um parâmetro passado por referência é identificado pela palavra ref antes de seu nome: Subprograma Fatorial Parâmetro de entrada: número (inteiro) Parâmetro de saída: ref fat (inteiro) 9.4 declarações locais e globais Dentro de um subprograma, podem ser feitas declarações de constantes, tipo e variáveis. As declarações feitas internamente aos subprogramas são declarações locais ao subprograma, e só são visíveis dentro do subprograma. As áreas de memória associadas às variáveis locais são alocadas no momento em que o subprograma é acionado e são liberadas ao final de sua execução, quando deixam de existir. Todo esse processo de criação e destruição de variáveis locais ocorre novamente a cada nova chamada ao subprograma. Como exemplo de utilização de uma variável local, será considerado um subprograma que permuta o conteúdo de duas variáveis inteiras. Os parâmetros formais A e B representam as duas variáveis e, neste exemplo, desempenham o papel tanto de parâmetros de entrada quanto de saída. Para fazer a permuta é necessário uma terceira variável para guardar um dos valores durante o processamento. Essa será definida como uma variável local, pois sua existência não é relevante para o programa principal: Subprograma Permuta {TROCA O CONTEÚDO DE DUAS VARIÁVEIS} Parâmetros entrada e saída: ref A, ref B (inteiro) Variável: aux (inteiro) {VARIÁVEL LOCAL} Edelweiss_09.indd 242Edelweiss_09.indd 242 12/03/14 09:0212/03/14 09:02 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. DICA DO PROFESSOR A utilização de subprogramas (procedimento ou funções) é muito importante para o bom desenvolvimento de algoritmos e programas. Assistindo ao vídeo preparado para esta Unidade, compreenderemos melhor como são enviados dados através da passagem de parâmetros por valor. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) A utilização de um subprograma só é efetiva se forem claramente definidas a tarefa a ser executada e a interação com o programa que o acionou. Para que isso seja possível, é importante que toda a interação seja feita somente através dos parâmetros. Analise as alternativas abaixo e selecione a FALSA. A) Os parâmetros de entrada receberão o conteúdo de variáveis ou constantes. B) Os parâmetros de saída definem os tipos de dados das informações que o subprograma retornará. C) Na chamada de subprogramas, pode-se utilizar variáveis, constantes ou resultados de expressões tanto para parâmetros de entrada quanto de saída. D) A passagem de parâmetros por valor está relacionada aos parâmetros de entrada. E) A passagem de parâmetros por referência está relacionada aos parâmetros de saída. A resolução de problemas computacionais se torna a cada dia mais complexa. Dessa forma, a divisão desse problema complexo em problemas menores se torna uma alternativa mais eficaz durante esse processo, geralmente eles são denominados de 2) subprogramas. Assinale a alternativa que traz um conceito que não condiz com as funcionalidades e o modo de utilização de um subprograma. A) Um subprograma pode ser dividido em outros subprogramas caso seja necessário para realizar a solução do problema. B) É importante que ao utilizar um subprograma, o desenvolvedor esteja ciente quanto a atividade que cada uma irá exercer dentro do programa como um todo. C) Um subprograma é responsável pelo controle de todo o programa, pois ele é considerado o núcleo e a trará a solução do problema. D) A interação entre as informações é norteada pelo uso da passagem de valores por meio do uso dos parâmetros, que podem ser de entrada e/ou de saída. E) Existem dois tipos de parâmetros, os de entrada e os de saída, os quais devem constar na declaração do subprograma. 3) Um subprograma traz consigo a resolução de questões particulares dentro de um programa em geral. Dessa forma, sua execução correta demanda de uma certa estrutura, ou seja, da inserção de dados e informações específicas. Assinale a alternativa falsa. A) A passagem de parâmetro é realizada quando há uma alteração dos parâmetros durante o uso do subprograma. B) O subprograma possui o endereço físico da variável quando a mesma é utilizada como parâmetro real. C) As variáveis locais são utilizadas dentro do programa como um todo, e podem ser solicitadas a qualquer momento. D) Quando um subprograma é solicitado durante a execução do programa, os parâmetros por referência sofrem empilhamento. E) A passagem de valor para parâmetros definidos por valor aceita o uso de um valor literal e de resultados de expressões. 4) Considere a passagem de parâmetros por valor, analise as afirmativas a seguir e selecione a alternativa verdadeira. A) A passagem de parâmetros por valor protege os dados originais, de quem chamou o subprograma. B) Na passagem de parâmetros por valor, o subprograma passa a acessar a informação na origem,apenas não pode modificá-la. C) A passagem de parâmetros por valor é sempre eficiente, mesmo que seja necessário receber um grande conjunto de dados. D) Quando um parâmetro for passado por valor (parâmetro de entrada) e o nome do identificador do parâmetro formal for igual ao de uma variável global, o subprograma poderá alterar o dado/conteúdo da variável global. E) As passagens de parâmetros por valor e por referência apresentam apenas diferenças sintáticas, mas, na execução, seu comportamento é idêntico. 5) O parâmetro proporciona que haja comunicação entre um subprograma e o programa principal como um todo. Para isso, devemos seguir uma estrutura que visa trazer todas as informações para que isso ocorra de forma correta, já que haverá uma comunicação entre dois ou mais trechos do código. Assinale a alternativa que traz a informação incorreta sobre este conceito. A) A passagem de parâmetro por referência acontece quando o parâmetro formal é repassado ao parâmetro real. B) O parâmetro formal demonstra a modificação do seu valor em conjunto com o parâmetro real quando uma passagem de parâmetro por referência está sendo aplicada. C) Na manipulação do subprograma, a passagem de parâmetro por valor mantém o valor do parâmetro real. D) A passagem de parâmetro por valor traz a informação referente ao valor que será utilizado no subprograma. E) Caso haja uma modificação no valor de uma variável auxiliar, a variável definida como parâmetro real será modificada. NA PRÁTICA A passagem de parâmetros por valor está relacionada com a maneira como realizamos diversos cálculos, os quais dependem de valores que precisamos receber para realizá-los. Vamos analisar algumas situações: - Para calcular a área de uma sala, precisamos receber as informações da largura e do comprimento da peça. - Para calcular o valor do salário depois do aumento, precisamos receber as informações do valor atual e o percentual de aumento. - Para calcular o consumo mensal de um aparelho elétrico, precisamos receber o consumo por hora e a quantidade de horas que o aparelho ficou ligado. - Para calcular a quantidade necessária de farinha para fazer cupcakes, é preciso saber quantos bolinhos serão feitos e a quantidade de farinha necessária para fazer uma unidade. algoritmo "salario" var salario, aumento : real funcao aumenta(valor, percentual : real):real inicio retorne (valor + valor * (percentual/100)) fimfuncao inicio repita escreva("Digite o salario atual: ") leia(salario) escreva("Digite o percentual de aumento (1-100%): ") leia(aumento) escreval("Novo salario: ", aumenta(salario, aumento)) ate salario = 0 fimalgoritmo SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Algoritmos e programação: Módulos/parâmetros e variáveis locais - VisuAlg.. Conteúdo interativo disponível na plataforma de ensino! Lógica de programação - Estruturas modulares - Exercício passagem de parâmetros por valor. . Conteúdo interativo disponível na plataforma de ensino! Curso de Algoritmos – 12 – Rotinas (Parte 1) - Gustavo Guanabara Conteúdo interativo disponível na plataforma de ensino!
Compartilhar