Prévia do material em texto
1www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS LÓGICA DE PROGRAMAÇÃO – MÓDULO III RELEMBRANDO Quando cria-se o módulo e citam-se quais são os tipos/quantidade de parâmetros, os pa- râmetros são chamados de formais. Quando o módulo é chamado e valores são passados, há parâmetros reais. Tipos de passagens de parâmetros: valor e referência Quando o módulo é chamado e os valores são passados, existem duas formas dos valo- res dos parâmetros reais irem para os parâmetros formais: por valor (cópia) ou por referência (caso modifique o valor do parâmetro real, o valor do parâmetro formal também será afetado). Passagem por valor • Transmite o valor do parâmetro real para o parâmetro formal correspondente. • A cópia física do valor do parâmetro real é feita durante a ativação do módulo. Exemplo.: Algoritmo ordenacaoCrescente; var i, j: inteiro procedimento ordena(m: inteiro, n: inteiro) var aux: inteiro; nício do procedimento se (m >n) então): aux:= m; m:= n; n:= aux; fim do se escreva (“Números ordenados:”, m, n); fim do procedimento 5m www.grancursosonline.com.br 2www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS início leia(i, j); escreva (i, j); ordena(i, j); escreva(i, j); // Sem alteração. fim Obs.: Supondo que, no exemplo acima: i = 19 e j = 15, quando o “escreva” for chamado, ele escreverá o seguinte: 19, 15. � “(m: inteiro, n: inteiro)” são parâmetros formais. � “(i, j)” são parâmetros reais. � m receberá o valor de i = 19 � n receberá o valor de j = 15 � m, n e aux são variáveis locais ao procedimento ordena. � se (m > n) então: � aux:= m; � m:= n; � n:= aux; � Como 19 > 15, então: � aux receberá o valor de m = 19 � m receberá o valor de n = 15 � n receberá o valor de aux = 19 � No procedimento, o “escreva (“Números ordenados:”, m, n);” escreverá os valores passados para m e n: 15 e 19. � Já “ordena (i,j);” no algoritmo principal, imprimirá os valores originais de i, j, ou seja, 19 e 15. Passagem por referência • Transmite o endereço (caminho de acesso) do parâmetro real para o parâmetro formal correspondente. • É eficiente. • Sem cópia e armazenamento duplicado. 10m www.grancursosonline.com.br 3www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS Exemplo: Algoritmo ordenacaoCrescente; var i, j: inteiro; procedimento ordena(ref m: inteiro; ref n: inteiro) var aux: inteiro; início do procedimento se (m > n) então: aux:= m; m:= n; n:= aux; fim do se fim do procedimento início leia(i, j); escreva(i, j); ordena(i, j); escreva(“Números ordenados:”, i, j); escreva(i, j); // Com alteração. fim Obs.: Para verificar que é uma passagem por referência, basta observar a existência da palavra “ref” antes do nome do parâmetro e do seu tipo. � Supondo que no exemplo acima, i = 19 e j =15, quando o “escreva” for chamado, ele escreverá o seguinte: 19, 15. � Supondo que os endereços de i e j são, respectivamente, 2183 e 1554, ao passar os valores por referência, os endereços serão copiados e as variáveis m e n receberão os valores de i e j. � A variável local do procedimento ordena a variável aux, que também possui seu pró- prio endereço. � 15m www.grancursosonline.com.br 4www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS � se (m > n) então: � aux:= m; � m:= n; � n:= aux; � Como 19 > 15, então: � aux receberá o valor de m = 19 � m receberá o valor de n = 15 � n receberá o valor de aux = 19 � No algoritmo principal, “escreva(“Números ordenados:”, i, j);” escreverá os valores alterados de m e n. Ou seja, i = 15 e j = 19. DIRETO DO CONCURSO 1. (UNIRIO/2012/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/DESENVOLVIMEN- TO) Independente da linguagem de programação, ao passar um parâmetro por referên- cia em uma função, toda a alteração feita a. no endereço deste parâmetro formal, dentro do subprograma, refletirá no parâmetro real associado. b. neste parâmetro formal, dentro do subprograma, refletirá no endereço do parâmetro real associado. c. neste parâmetro formal, dentro do subprograma, não se reflete nos parâmetros reais. d. neste parâmetro formal, dentro do subprograma, refletirá no seu parâmetro real associado. e. no endereço deste parâmetro formal, dentro do subprograma, refletirá no endereço do parâmetro real associado. COMENTÁRIO b. Não refletirá no endereço. c. Reflete nos parâmetros reais. a. A modificação é no espaço de armazenamento que está no endereço. e. A modificação é no espaço de armazenamento que está no endereço. www.grancursosonline.com.br 5www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS 2. (VUNESP/2019/CÂMARA DE PIRACICABA/SP/ANALISTA DE SISTEMAS) Deseja-se chamar uma sub-rotina Quadrado, dentro de um programa principal, passando a ela um parâmetro x. Tal parâmetro conterá, como entrada, um certo valor inteiro e, como saída, receberá esse valor elevado ao quadrado. O tipo de passagem de parâmetro que permite que x seja um parâmetro tanto de entra- da como também de saída da sub-rotina é denominado passagem de parâmetro a. ubíqua. b. ambígua. c. independente. d. por referência. e. por valor. COMENTÁRIO Para que x seja um parâmetro tanto de entrada como também de saída da sub-rotina, ou seja, para que sua informação possa ser modificada dentro do módulo, é necessário que seja feita uma passagem por referência. O endereço correspondente será copiado. Se, por exemplo, x =10, após ter o seu valor elevado ao quadrado, x passará a valer 100. 3. (VUNESP/2019/CÂMARA DE PIRACICABA/SP/PROGRAMADOR) Uma função com um único parâmetro foi chamada dentro de um programa. Caso a passagem do conte- údo de uma variável para esta função seja por meio desse parâmetro, por valor, esse tipo de chamada permite a. criar múltiplas instâncias dessa variável, desde que autorizado pelo usuário do programa. b. criar múltiplas instâncias dessa variável, caso não se utilize a pilha como forma de chamada da sub-rotina. c. usar, dentro da função, o valor da variável, bem como permite alterar o valor da vari- ável original. d. usar, dentro da função, uma cópia do valor da variável, porém não permite alterar o valor da variável original. e. usar esse parâmetro de entrada também como um parâmetro de saída. 20m www.grancursosonline.com.br 6www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS COMENTÁRIO Quando se faz a passagem por valor, há uma cópia de conteúdo, não de endereço. c. Não se altera o valor do parâmetro real. d. O valor da variável original não é alterado, pois copia-se o conteúdo, não o endereço. e. Essa é a passagem por referência. 4. (VUNESP/2016/MPE/SP/ANALISTA TÉCNICO CIENTÍFICO/ENGENHEIRO DE COM- PUTAÇÃO) No contexto de passagem de parâmetros para uma sub-rotina, existe a denominada passagem de parâmetro por valor. Nesse caso, a. o parâmetro pode ser passado para a sub-rotina, desde que ela seja uma sub-rotina de tratamento de interrupção. b. o endereço onde se encontra o valor a ser passado como parâmetro é fornecido para a sub-rotina. c. um ponteiro para o endereço onde se encontra o valor a ser passado como parâmetro é fornecido para a sub-rotina. d. um registrador que apontapara o valor a ser passado como parâmetro é fornecido para a sub-rotina. e. uma cópia do valor do parâmetro é fornecida para a sub-rotina. COMENTÁRIO b. Passagem por referência. c. Passagem por referência. e. Na passagem por valor, uma cópia do valor do parâmetro é fornecida para a sub-rotina. 5. (VUNESP/2015/TCE/SP/AGENTE DA FISCALIZAÇÃO FINANCEIRA/SISTEMAS/ GESTÃO DE PROJETOS E GOVERNANÇA DE TI) Um usuário implementou uma roti- na de um programa, denominada Fatorial, e passou para essa rotina um parâmetro com o valor 6, mas deseja receber, após a execução da rotina, nesse mesmo parâmetro, o valor 6! (seis fatorial). Para isso, a passagem de parâmetro deverá ser por a. escopo. b. hashing. 25m www.grancursosonline.com.br 7www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br A N O TA ÇÕ E S Lógica de Programação – Módulo III DESENVOLVIMENTO DE SISTEMAS c. módulo. d. referência. e. valor. COMENTÁRIO O usuário quer que o valor seja de entrada e de saída, ou seja, deverá ser uma passagem por referência. Tanto o parâmetro real quanto o formal compartilharão o mesmo endereço de memória. GABARITO 1. d 2. d 3. d 4. e 5. d ��Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula preparada e ministrada pelo professor Rogério Gildo Araújo. A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu- siva deste material. www.grancursosonline.com.br