Funções e pilha de chamadas – parâmetros, valores de retorno e escopo
ComputaçãoAlgoritmos e resolução de problemasIdades 15–16
Carregando…
Entre para usarExecute passo a passo programas que chamam procedimentos e funções e veja cada chamada empilhar um quadro: argumentos ligados aos parâmetros, variáveis locais e o valor de retorno que volta à linha que chamou. Compare variáveis locais e globais, passagem por valor e por referência, e recursão em Python ou pseudocódigo. Um modo biblioteca permite chamar rotinas prontas para explorar assinaturas e abstração.
Aula: Sub-rotinas: procedimentos, funções, parâmetros e escopo
O que mostra
Uma sub-rotina é um bloco de código com nome que pode ser chamado muitas vezes. Quando ela é chamada, o computador empilha um quadro com seus parâmetros e variáveis locais; os argumentos são ligados aos parâmetros, e return devolve um valor e desempilha o quadro. Variáveis locais só existem durante a chamada e podem esconder variáveis globais de mesmo nome. A recursão empilha muitos quadros da mesma função. Rotinas de biblioteca escondem seu código atrás de uma assinatura, e é assim que programas são divididos em módulos e APIs.
Como usar
Escolha um Exemplo e uma Linguagem e clique em Passo para executar uma linha por vez, ou em Executar para rodar o programa na Velocidade escolhida. Observe a pilha de chamadas, as notas em O que aconteceu neste passo e o gráfico de profundidade. Clique em Editar para mudar o código. Passe para Rotinas de biblioteca, escolha uma Rotina, digite os argumentos e clique em Chamar.
Parâmetros que você pode mudar
- Modo Executar um programa, Rotinas de biblioteca
- Exemplo Parâmetros e valores de retorno, Variáveis locais e globais, Funções que chamam funções, Procedimentos e funções, Recursão (fatorial), Passagem por valor e por referência
- Linguagem Python, Pseudocódigo
- Velocidade 0,5–10 passos/s
Perguntas para explorar
- Na chamada area(w, 3), quais valores são os argumentos e quais nomes são os parâmetros?
- Por que print(count) no programa principal ainda mostra 10 depois que double(3) foi executada?
- Quantos quadros há na pilha de chamadas quando factorial(4) chega ao caso base?