- Agora, encapsule o código da questão acima, declarando uma rotina em Python chamada sigmoide, que tem um parâmetro
. Chame sigmoide(-4) e sigmoide(4) e sigmoide(99999). A rotina deve imprimir o resultado com print.
Ao declarar uma rotina, o que melhorou com relação ao exercício anterior? Qual a diferença entre a variável
parâmetro
?
Ao declarar uma rotina, o que melhorou com relação ao exercício anterior? Qual a diferença entre a variável
Passo 1
O que o enunciado pede:
- Encapsular o código numa rotina em Python chamada
sigmoideque recebe um parâmetro. - Chamar
sigmoide(-4),sigmoide(4)esigmoide(99999). - A rotina deve imprimir o resultado com
print. - Responder qualitativamente: o que melhorou ao declarar a rotina; e qual a diferença entre a variável
e o parâmetro .
Informações relevantes dadas:
- O nome da função deve ser
sigmoide. - O parâmetro da função é
. - Devemos mostrar/printar os valores para
, e .
Passo 2
Definição matemática da função sigmoide (para entendermos o que vamos implementar):
Explicando a fórmula, devagar:
-
é a entrada da função (número real). -
é a base dos logaritmos naturais, aproximadamente . - A expressão
significa "exponencial de ". - A fração devolve um número entre
e : para a sigmoide vai para ; para vai para .
Passo 3
Observação numérica importante (evitar surpresas no código):
- Para valores muito grandes de
Essa reescrita evita somar (1] a números muito grandes/pequenos de forma numericamente ruim. Vou usar a versão estável no código (é um pouquinho mais verbosa, mas segura).]
Passo 4
Código Python da rotina
sigmoide que imprime o resultado. Comentarei linha a linha para você entender:import math
def sigmoide(x):
# x é o parâmetro local que a função recebe
if x >= 0:
# aqui usamos a fórmula direta quando x>=0: 1 / (1 + exp(-x))
resultado = 1.0 / (1.0 + math.exp(-x))
else:
# para x<0 usamos a forma estável: exp(x) / (1 + exp(x))
resultado = math.exp(x) / (1.0 + math.exp(x))
print(resultado)
# chamadas pedidas
sigmoide(-4)
sigmoide(4)
sigmoide(99999)
Explicando as partes do código:
import mathtraz a funçãoexppara calcular exponenciais.def sigmoide(x):declara a rotina (função) chamadasigmoidecom um parâmetro chamadox.resultadoé uma variável local que guarda o valor numérico da sigmoide calculada.print(resultado)mostra o valor na tela como o enunciado pediu.- As três chamadas finais executam a função com os três valores solicitados.
Passo 5
Cálculo manual aproximado (para você entender os números que o
print mostra):- Para
:
Calculando
. Então
- Para
:
Calculando
. Então
- Para
:
Aqui
é extraordinariamente pequeno (praticamente
dentro da precisão de qualquer computador). Portanto
Na prática, o ; dependendo da implementação pode ser exatamente
ou
— com a forma usada, será
.
print vai mostrar um valor muito próximo de
Passo 6
Resposta à pergunta “Ao declarar uma rotina, o que melhorou com relação ao exercício anterior?”
- Reuso: agora a lógica está escrita uma vez e posso chamar
sigmoidecom vários valores sem reescrever código. - Clareza e organização: o código fica mais legível — a função tem um nome que diz o que faz.
- Manutenção: se eu quiser mudar a definição (por exemplo, trocar para uma versão mais estável), altero só dentro da função.
- Testabilidade: fica fácil testar casos e automatizar verificações.
- Escopo controlado: variáveis usadas dentro da função são locais e não “sujam” o resto do programa.
Em resumo: declarar a rotina transforma um pedaço de código repetitivo num bloco reutilizável, legível e fácil de manter — vantagens enormes numa prova prática ou num projeto real.
Passo 7
Resposta à pergunta “Qual a diferença entre a variável
e o parâmetro
?”
- Quando escrevemos matematicamente
(por exemplo, na fórmula da sigmoide), estamos falando de uma variável matemática: um símbolo que representa um número qualquer da definição da função. - Quando declaramos
def sigmoide(x):, essexé um parâmetro da função: é um nome local que vai receber o valor passado na chamada (o argumento). Ou seja:- Parâmetro = nome usado na definição da função (marca o lugar onde o valor será recebido).
- Argumento = valor efetivamente passado na chamada (por exemplo
-4,4,99999).
- Escopo: o parâmetro
xdentro da função é uma variável local; se houver outra variável com nomexfora da função, elas são independentes. - Binding: ao chamar
sigmoide(4), o parâmetroxé ligado (bind) ao argumento4dentro daquele corpo da função.
Exemplo prático:
x = 10
sigmoide(4) # aqui dentro da função, x vale 4; fora, x continua valendo 10
Isso ilustra que “variável” é um conceito geral; “parâmetro” é um uso específico (nome local que representa o valor recebido).
Resposta
sigmoide(-4) =
sigmoide(4) =
sigmoide(99999) =
sigmoide(4) =
sigmoide(99999) =
Melhorias ao declarar a rotina: reuso, clareza, manutenção, testabilidade e controle de escopo (o código fica mais organizado e fácil de modificar).
Diferença entre variável
e parâmetro
: a variável é um símbolo matemático geral; o parâmetro é o nome local na definição da função que recebe o valor (argumento) quando a função é chamada — têm escopos e papéis diferentes (parâmetro é uma variável local vinculada ao argumento).