SóProvas


ID
204718
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Na definição de uma função, a passagem de parâmetros por referência possibilita que o valor de uma variável passado como argumento seja alterado na função, e sua alteração mantenha-se mesmo após a execução da função.

Alternativas
Comentários
  • Passagem de parâmetros

    Por referência: alterações dentro das funções se refletem fora dela

    Por valor: é feita uma cópia do valor passado para função. Ao término, o valor original mantêm seu valor fora da função.

  • É isso mesmo.

    Resposta: Certo

  • Item correto, uma vez que, ao passar por referência, passa-se a própria variável, podendo esta ser modificada.

    Quando a passagem de parâmetro ocorre por valor, aí sim somente o valor é passado, sem influenciar a variável.

    Item correto.

  • Sim, sem nenhum problema, este tipo de procedimento é comum em sistema de informações.

    Resposta: Certo

  • Bela explicação do professor. Muito elucidativo.

  • Explicação do professor:

    "É isso mesmo.

    Resposta: Certo"

    Gênio!

  • Muito esclarecedor o comentário do professor

  • se fosse errado:

    " não é isso.

    gabarito errado. "

    desse jeito até eu dou aula.

  • Pág. 156:

    Resumo das Definições, características e utilização de sub-rotinas na construção de algoritmos.

    O mecanismo de funcionamento de uma sub-rotina é iniciado quando se encontra um comando de invocação desta, durante a execução do algoritmo principal.

    A partir daí a execução do mesmo é interrompida e a seguir, passa-se à execução dos comandos do corpo da sub-rotina.

    Ao seu término, retoma-se a execução do algoritmo que o chamou (no caso, o algoritmo principal) no ponto onde foi interrompida (comando de chamada da sub-rotina) e prossegue-se pela instrução imediatamente seguinte.

    ---------------------------

    Essa invocação pode se dar também através dos parâmetros que são canais por onde os dados são transferidos pelo algoritmo chamador a uma sub-rotina, e vice-versa.

    Para que possa iniciar a execução das instruções em seu corpo, uma sub-rotina às vezes precisa receber dados do algoritmo que o chamou e, ao terminar sua tarefa, a sub-rotina deve fornecer ao algoritmo chamador os resultados da mesma.

    Esta comunicação bidirecional pode ser feita de dois modos que são

    por meio de variáveis globais ou

    por meio da passagem de parâmetros.

    As funções retornam um, e somente um, valor ao algoritmo chamador enquanto os procedimentos retornam zero (nenhum) ou mais valores ao algoritmo chamador. Na realidade, a tarefa desempenhada por uma sub-rotina do tipo função pode perfeitamente ser feita por outra do tipo procedimento (o primeiro é um caso particular deste).

    ------------------------

    Os Parâmetros formais são os nomes simbólicos introduzidos no cabeçalho de sub-rotinas, usados na definição dos parâmetros do mesmo.

    Dentro de uma sub-rotina trabalha-se com estes nomes da mesma forma como se trabalha com variáveis locais ou globais.

    Já os Parâmetros reais são aqueles que substituem os parâmetros formais quando da chamada de uma sub-rotina.

    -------------------------

    Na passagem de parâmetros por valor (ou por cópia) o parâmetro real é calculado e uma cópia de seu valor é fornecida ao parâmetro formal, no ato da invocação do sub-rotina.

    A execução do sub-rotina prossegue normalmente e todas as modificações feitas no parâmetro formal não afetam o parâmetro real.

    Já no mecanismo de passagem de parâmetros por referencia, o espaço de memória ocupado pelos parâmetros reais é compartilhado pelos parâmetros formais correspondentes.

    Assim, as eventuais modificações feitas nos parâmetros formais também afetam os parâmetros reais correspondentes."

    No capítulo vem mais explicado, com exemplos.

    Fonte:

    Batista, Rogério da Silva

    Lógica de programação / Rogério da Silva

    Batista. – Teresina : Instituto Federal de Educação, Ciência e

    Tecnologia do Piauí, 2013.

  • Esse comentário do professor merece aplausos. kkkkkk pqp

  • É essa p#* aí.. fo#$+_se..

    Kkk

  • Comentário do professor desanima muito. Fiquei na impressão de que nem ele sabe o porquê da resposta.

  • parece brincadeira o comentário do professor.

  • Passagem por valor – permite usar dentro de uma função uma cópia do valor de uma variável, porém não permite alterar o valor da variável original (somente a cópia pode ser alterada).

    Passagem por referência – É passada para a função uma referência da variável, sendo possível alterar o conteúdo da variável original usando-se esta referência.

  • Vlw Professor, ajudou MUITO !

  • É uma vergonha esse comentário do professor. Falta de respeito com os usuários do QC.

  • Na passagem de parâmetros por valor, a variável passada como parâmetro passa apenas o seu valor para o outro módulo, não sofrendo modificações no seu módulo de origem.

    Na passagem de parâmetros por referênciao parâmetro passado é, na verdade, um ponteiro (endereço de memória) que aponta para a própria variável. Ou seja, caso o parâmetro passado sofra modificações, a variável também muda o seu valor.

  • Pra quem está achando o comentário do professor, nesse exercício, um absurdo, veja abaixo os exemplos que mostram a diferença entre as variáveis, que está no pdf do Direção Concursos. Os exemplos são idênticos, não há diferença. Esse material que o aluno paga para ter...e esses tipos de erros crassos são encontrados em diversas matérias...lamentável.

    Algoritmo VALOR

    VAR TESTE:inteiro 

    INICIO

    TESTE ← 30;

    MANIPULA_VARIAVEL(TESTE);

    ESCREVA(TESTE);

    FIM

    Algoritmo MANIPULA_VARIAVEL(X:inteiro)

    INICIO

    X ← X + 10;

    ESCREVA(X); 

    FIM 

    _____________________________________________

    Algoritmo REFERENCIA

    VAR TESTE:inteiro 

    INICIO

    TESTE ← 30;

    MANIPULA_VARIAVEL(TESTE);

    ESCREVA(TESTE);

    FIM

    Algoritmo MANIPULA_VARIAVEL(X:inteiro)

    INICIO

    X ← X + 10;

    ESCREVA(X); 

    FIM 

  • Não gostou da resposta do professor? BEM VINDO À EXATAS!

    E aviso de antemão que é melhor não reclamar, pois ele respondeu. Poderia muito bem ter informado "eu deixei esse para vocês procurarem e aprenderem sozinhos"!

  • Nem o prof entendeu

  • Absurdo o comentário desse professor. Vou tentar ajudar.

    A palavra POSSIBILITA é a chave para a resolução. Por exemplo no Python, em regra, a alteração do valor da variável fica apenas dentro da função, não sendo passado para fora da função.

    exemplo da regra.

    def minhaFuncao(y):

    x = y + y #Escopo Local

    print(x)

    return x

    x = 5 #Escopo Global

    minhaFuncao(x) #vai imprimir o valor de x dentro da função que é 5+5 =10

    print(x) #vai imprimir o valor de x fora da função que é 5

    Porem é possível declarar a variável x como global, mesmo dentro da função, POSSIBILITANDO a passagem desse valor para fora da função.

    def minhaFuncao(y):

       global x

       x = y + y #Escopo Local

       print(x)

       return x

    x = 5

    minhaFuncao(x) #quando chamo a função, o valor de x é alterado dentro e fora da função (global)

    print(x) # como x foi alterado globalmente, seu valor agora é 10

    Na definição de uma função, a passagem de parâmetros por referência possibilita que o valor de uma variável passado como argumento seja alterado na função, e sua alteração mantenha-se mesmo após a execução da função.

    Logo, assertiva CERTA, pois é possível manter a alteração de valor feita dentro da função.

    Espero ter ajudado.

  • Parem de reclamar do professor e vão estudar!

  • Tô passando mal de rir com geral falando dos comentários do professor!!!

  • Existem 2 tipos de passagem de parâmetros, por valor e por referência.

    No caso da passagem por valor, caso a variável passe por mudanças em uma "subfunção", seu valor na "função mãe" será aquele mesmo inicial (antes de entrar na "subfunção"). Conforme exemplo abaixo

    funçãoA

    INÍCIO

    VAR x: INTEIRO

    x := 10

    funçãoB (x)

    ESCREVA (x)

    funçãoB (x:INTEIRO)

    x:= x + 15

    ESCREVA (x)

    No exemplo acima os valores escritos seriam 25 (output da funçãoB) e 10 (output da funçãoA).

    Já na passagem por referência (caso da questão em tela), o valores alterados seguem na "função mãe" após serem alterados na "subfunção". Utilizando o mesmo exemplo acima, mas com passagem de parâmetros por referência teríamos:

    funçãoA

    INÍCIO

    VAR x: INTEIRO

    x := 10

    funçãoB (x)

    ESCREVA (x)

    funçãoB (x:INTEIRO)

    x:= x + 15

    ESCREVA (x)

    Nesse caso os valores escritos seriam os mesmos, 25 (output da funçãoB) e 25 (output da funçãoA). Isso pois na passagem de parâmetros por referência a alteração do parâmetro é mantida na "função mãe".

    Espero que eu tenha conseguido esclarecer