CSE 110: Introdução à Programação

S07 - Atividade de Aprendizagem (1 de 2): Funções

Visão Geral

Você percebeu neste curso, ou em outros aspectos da sua vida, que existem algumas tarefas que você deseja realizar repetidas vezes? Ou talvez existam etapas comuns que você precisa seguir, mas o resultado pode ser um pouco diferente dependendo do contexto?

As funções são muito poderosas porque aproveitam a ideia da abstração. Ou seja, você pode realmente se concentrar em uma determinada parte do código, mas, assim que isso for feito, você não vai precisar mais se preocupar com os detalhes. Em vez disso, você poderá apenas referenciá-la pelo nome e saber que as etapas apropriadas serão executadas.

O próximo curso, CSE 111 – Programando com Funções, será inteiramente dedicado ao estudo aprofundado das funções: escrevendo-as, testando-as e utilizando funções já existentes, entre outras atividades. Da mesma forma, o curso seguinte, CSE 210, vai aprofundar ainda mais a ideia de utilizar abstrações nos programas para desenvolver soluções complexas, especialmente em situações em que seria difícil manter todas as partes do código em mente ao mesmo tempo, além de construí-los de forma a facilitar futuras atualizações quando novos recursos forem necessários.

Nesta aula, você aprenderá os conceitos básicos de funções que podem te ajudar a escrever programas maiores e mais complexos.

Material de Preparação

Assista aos seguintes vídeos:

Link Direto: Funções

Link Direto: Passando Dados para Funções

Link Direto: Exemplos de Funções

Definindo Funções

Conforme mostrado, você define uma função usando a palavra-chave def e seguindo sua função com parênteses () e dois-pontos : da seguinte maneira:


def nome_da_sua_funcao():
    # código aqui
    # para o
    # corpo da função

Chamando Funções

Posteriormente, em seu programa, você poderá chamar uma função usando o nome dela e incluindo os parênteses em seguida:


nome_da_sua_funcao()

O código a seguir demonstra uma função que exibe texto na tela. Depois, ela é chamada duas vezes no programa:


# Primeiro defina a função
def exibir_mensagem():
   print("Olá, Mundo!")

# Chame a função agora
exibir_mensagem()

# Chame novamente aqui
exibir_mensagem()

Isso gera a seguinte saída:


Olá, Mundo!
Olá, Mundo!

Passando Parâmetros para Funções

Ao definir uma função, você pode declarar parâmetros, que são valores que ela recebe do código que a chamou. Por exemplo, considere uma função exibir_dobro que recebe um número, duplica-o e exibe o resultado na tela:


def exibir_dobro(valor):
    valor_em_dobro = valor * 2
    print(valor_em_dobro)

Então, você pode chamar esta função e passar qualquer valor:


exibir_dobro(12) # saída 24
exibir_dobro(3) # saída 6
exibir_dobro(42) # saída 84

Retornando Valores

Aprofundando o exemplo anterior, suponha que você queira que o programa calcule o dobro do valor e o retorne, em vez de exibi-lo na tela, para o caso em que queira utilizá-lo em cálculos posteriores. Para isso, você deve usar a instrução return:


def obter_dobro(valor):
    valor_em_dobro = valor * 2
    return valor_em_dobro

Agora o valor é devolvido ao código que o chamou:


novo_numero = obter_dobro(4)

A variável novo_numero teria agora o valor 8.

Escopo de Variável

Lembre-se de que os nomes das variáveis ​​​​são válidos apenas para a função em que estão definidas, e você pode até usar o nome da variável “nome” em funções diferentes para valores diferentes. Isso pode ficar um pouco complicado e você verá isso com muito mais detalhes em aulas futuras. Mas, por enquanto, você precisa estar ciente de que, quer você use o mesmo nome de variável ou não, a função terá sua própria cópia do valor. E você não pode usá-lo fora da função.


def obter_dobro(valor):
    valor_em_dobro = valor * 2
    return valor_em_dobro

novo_numero = obter_dobro(4)
print(valor_em_dobro)

# ERRO: Isso não funciona, porque a variável "valor_em_dobro" só existe dentro
# do corpo da função. Aqui optamos por dar ao valor de retorno o nome "novo_numero"
# EXEMPLO DE CÓDIGO RUIM 

O mesmo conceito se aplica aos parâmetros:


    def exibir_mensagem(nova_mensagem):
        print(nova_mensagem)

    # funciona muito bem usar o mesmo nome de variável que a função usou...
    nova_mensagem = "Mensagem 1"
    exibir_mensagem(nova_mensagem)

    # mas também funciona com uma variável diferente...
    mensagem_do_usuario = "Mensagem 2"
    exibir_mensagem(mensagem_do_usuario)
    

Em qualquer um dos dois casos acima, quando você estiver na função, você precisa usar o nome da variável nova_mensagem independentemente de como ela foi chamada abaixo.

Se isso ainda estiver um pouco confuso, tudo bem. Existe um curso inteiro para explorar essas nuances.

Estilo

Ao começar a pensar em nomes para suas funções e variáveis, você descobrirá que na maioria das vezes as variáveis se referem a coisas, por isso é mais comum usar substantivos para elas (por exemplo, preço, nome, resposta, etc.). As funções, por outro lado, fazem coisas ou ações, por isso é mais comum usar verbos para seus nomes (por exemplo, exibir_mensagem, obter_rubrica, abrir_arquivo, exibir_erro).

Instruções da Atividade

Visão Geral

Este programa foi criado para ajudar você a praticar a criação de funções simples.

Instruções

Crie três funções:

No seu programa, logo abaixo do código das funções, peça ao usuário para digitar uma mensagem. Então passe essa mensagem para cada uma das três funções, para que ela seja exibida em todos os sentidos, conforme mostrado:


    Qual é a sua mensagem? Posso todas as coisas em Cristo que me fortalece
    Posso todas as coisas em Cristo que me fortalece
    POSSO TODAS AS COISAS EM CRISTO QUE ME FORTALECE
    posso todas as coisas em cristo que me fortalece
    

Outro exemplo:


    Qual é a sua mensagem? A única coisa que devemos temer é o próprio MEDO!
    A única coisa que devemos temer é o próprio MEDO!
    A ÚNICA COISA QUE DEVEMOS TEMER É O PRÓPRIO MEDO!
    a única coisa que devemos temer é o próprio medo!
    

Exemplo de Solução

Quando terminar seu programa, por favor, consulte o exemplo de solução para comparar sua abordagem com a apresentada.

Primeiro, trabalhe para concluir o programa sem consultar o exemplo de solução. Caso tenha trabalhado por um longo tempo e ainda enfrente dificuldades, sinta-se à vontade para usar o exemplo para ajudá-lo a finalizar seu programa.

Procedimento de Teste

Verifique se seu programa funciona corretamente seguindo cada etapa deste procedimento de teste:

Teste seu programa com cada uma das condições a seguir e certifique-se de que ele funcione conforme o esperado.

  1. Uma única palavra

  2. Uma frase com várias palavras

  3. Uma palavra EM LETRAS MAIÚSCULAS

  4. Uma frase em que cada palavra começa com letra maiúscula

  5. Uma string vazia

Envio de Tarefa

Quando você tiver concluído todas as atividades de aprendizagem desta semana, volte ao Canvas e responda ao respectivo questionário.

Próxima Atividade

Outros Links: