Olá, estudante, que bom vê-lo por aqui! Na sequência de nossa última lição onde foram apresentados os módulos, pacotes e funções built-in, você terá como objetivo a apresentação de métodos e funções, suas características por definição e principalmente o seu uso e sintaxe através da linguagem de programação Python.
Uma função é um bloco de código que executa uma ação específica quando é chamada, sendo assim, pode receber argumentos como entrada, processá-los e retornar um valor de saída. Já os métodos são também funções, mas que estão associadas a objetos específicos. Eles são definidos dentro de classes e operam em instâncias dessas classes. Quando um método é chamado em um objeto, ele pode acessar e modificar os atributos desse objeto, além de executar ações relacionadas a ele. Os métodos são parte integrante da programação orientada a objetos e permitem que objetos interajam com seu ambiente e com outros objetos de maneira coesa.
Portanto, nesta lição, além de conhecer a conceitualização de métodos e funções, você também vai ver exemplos de aplicação e ao final saberá o quanto são fundamentais para escrever código modular, reutilizável e organizado. Vamos lá?
O uso de funções e métodos em programação é uma abordagem essencial para resolver problemas de maneira organizada e eficiente. Eles oferecem uma maneira de encapsular blocos de código em unidades reutilizáveis, permitindo que você quebre um problema complexo em partes gerenciáveis e trabalhe em cada parte individualmente.
Imagine que você está desenvolvendo um programa para gerenciar uma loja on-line. Você precisa lidar com tarefas como adicionar produtos ao estoque, processar pedidos dos clientes e gerar relatórios de vendas. Este é um ótimo exemplo para compreender como o uso de funções e métodos pode resolver esse problema. Você terá organização e clareza, pois poderá criar funções para cada tarefa específica, como “adicionarProduto()”, “processarPedido()” e “gerarRelatorio()”. Cada função teria um propósito claro e conteria o código relevante para essa tarefa. Isso torna o código mais legível e mais fácil de entender, uma vez que as ações são separadas em blocos de código independentes.
Com isso, você acaba de aprender que o uso de funções e métodos resolve problemas gerais de programação, permitindo a organização, a reutilização de código, a manutenção simplificada e a colaboração eficiente. Eles promovem a escrita de código modular, legível e fácil de manter, tornando a resolução de problemas complexos uma tarefa mais gerenciável.
No case de hoje vamos falar sobre a biblioteca Municipal de uma pequena cidade que possui um sistema de gerenciamento de livros e empréstimos, desenvolvido há muitos anos em linguagem procedural. O sistema original é um único arquivo gigante, difícil de entender e manter. Cada funcionalidade, como adicionar um novo livro, emprestar um livro ou gerar relatórios, está misturada no mesmo código.
Com isso, existem vários problemas como a dificuldade de manutenção, falta de reutilização de código (funcionalidades repetidas), legibilidade comprometida e riscos de erro. Sendo assim, a administração da biblioteca decidiu modernizar o sistema para melhorar sua eficiência e usabilidade. Eles contrataram uma equipe de desenvolvedores para realizar a refatoração - processo de reconstrução da estrutura interna do código sem alterar seu comportamento externo - e a reestruturação do código seguindo os seguintes passos:
Identificação de funcionalidades: a equipe analisa o código existente e identifica as diferentes funcionalidades do sistema, como gerenciamento de livros, empréstimos, usuários e relatórios.
Separação em funções: cada funcionalidade é isolada em uma função separada. Por exemplo, as funções “adicionarLivro()”, “emprestarLivro()” e “gerarRelatorio()” são criadas para cada tarefa específica.
Reutilização de código: as partes de código comuns são transformadas em funções reutilizáveis. Por exemplo, a validação de datas pode ser encapsulada em uma função “validarData()”.
Após a refatoração e a implementação das funções, o sistema de gerenciamento da biblioteca tem os seguintes ganhos: manutenção simplificada, reutilização de código, legibilidade aprimorada, minimização de erro, ou seja, o software agora é mais fácil de manter, de ler e de expandir, contribuindo para uma experiência de gerenciamento de biblioteca mais moderna e confiável. Sendo assim, mesmo essa situação sendo fictícia, conseguimos observar como será a utilização dos conteúdos que você aprenderá na lição de hoje!
Métodos, Procedimentos e Funções são blocos de código reutilizáveis em programação, cada um com um propósito e contexto específico. Eles desempenham um papel fundamental na estruturação de programas, promovendo a modularidade, reutilização de código e organização. Na linguagem de programação Python, esses conceitos são implementados de maneira eficaz, permitindo uma abordagem estruturada e funcional da programação.
Uma função é um bloco de código que executa uma tarefa específica quando é chamada visando atingir um objetivo específico (PEREIRA, 2010). Sendo assim, ela pode receber argumentos como entrada, processá-los e retornar um valor de saída. São características das funções:
Reutilização: funções permitem escrever um código que pode ser usado várias vezes em diferentes partes do programa.
Modularidade: funções dividem o código em unidades independentes, facilitando a compreensão e manutenção.
Abstração: as implementações detalhadas são ocultas, permitindo que você se concentre na lógica de alto nível.
Aplicação em Python: Definir e chamar funções é uma prática comum em Python. Funções podem ser criadas usando a palavra-chave def e chamadas usando o nome da função seguido por parênteses.
Veja um exemplo de função na figura 1:
Agora, entenda o passo a passo dos exemplos da Figura 1:
Linha 1, 2 e 3: definição da função somar_numeros(a, b) função que soma dois numeros e retorna o valor já calculado.
Linha 4 e 5: cria duas variáveis já com valores predefinidos para uso da função a seguir.
Linha 6: chama a função somar_numeros com os valores das variáveis numero1 e numero2 e atribui seu resultado na variável soma.
Linha 7: Exibe na tela a frase A soma de 5 e 7 é: 12.
Um procedimento é um bloco de código semelhante a uma função, mas não retorna um valor. Ele executa ações específicas e pode modificar o estado do programa. São características dos procedimentos:
Foco na Ação: procedimentos são usados quando a ênfase está na execução de tarefas e na modificação de estados, em vez de retornar valores.
Modificação de Estado: procedimentos frequentemente modificam variáveis ou objetos existentes, alterando o estado do programa.
Aplicação em Python: embora Python não tenha um tipo específico chamado "procedimento", você pode criar funções sem retornos para simular comportamentos de procedimentos.
Veja um exemplo de procedimento na Figura 2:
Agora, entenda o passo a passo dos exemplos da Figura 2:
Linha 1 e 2: definição do procedimento saudacao(nome) procedimento que exibe a frase de salvação com o nome informado pelo usuário. Mesmo usando a palavra reservada (que cria uma função) pode-se considerar um procedimento por não haver retorno de valor.
Linha 3: executa o procedimento saudacao(“Alice”) que exibe direto na tela a frase Olá, Alice! Bem-vindo(a)!
Linha 4: executa o procedimento saudacao(“Bob”) que exibe direto na tela a frase Olá, Bob! Bem-vindo(a)!
Um método é uma função associada a um objeto específico em programação orientada a objetos. Ele opera em instâncias da classe à qual está associado. São características dos métodos:
Contextualização: métodos permitem que objetos interajam com seu ambiente e com outros objetos de maneira organizada e coesa.
Compartilhamento de Dados: métodos têm acesso aos atributos do objeto e podem modificá-los conforme necessário.
Encapsulamento: métodos podem ser usados para ocultar a implementação interna do objeto e fornecer uma interface pública.
Aplicação em Python: métodos são definidos dentro de uma classe e podem ser chamados usando a notação de ponto em instâncias dessa classe.
Veja um exemplo de método na Figura 3:
Agora, entenda o passo a passo dos exemplos da Figura 3:
Linha 1: criação da classe Circulo.
Linhas 2 e 3: criação do método construtor da classe que recebe o valor de raio.
Linhas 4, 5 e 6: criação do método calcular_area().
Linha 7: instancia um objeto circulo1 da classe Circulo passando o valor 5 no construtor.
Linha 8: chama o método calcular_area() e atribui seu resultado na variável area_circulo1.
Linha 9: Exibe na tela a frase A área do círculo é: 246.49.
Métodos, procedimentos e funções são construções essenciais em programação que ajudam a criar um código organizado, reutilizável e de fácil manutenção. Em Python, eles desempenham papéis fundamentais em diversos paradigmas de programação, desde a abordagem procedural até a orientação a objetos, oferecendo flexibilidade e clareza na implementação de lógica complexa e funcionalidades específicas.
Um técnico em desenvolvimento de sistemas precisa entender sobre métodos, procedimentos e funções por vários motivos. Primeiramente, essas estruturas organizam o código em blocos lógicos, tornando-o mais legível. Além disso, permitem a reutilização de códigos em diferentes partes do programa, economizando tempo e esforço na programação. Sendo assim, compreender sobre esse assunto é fundamental, pois através desse conhecimento você terá mais eficiência na hora do seu trabalho!
Agora, chegou a sua vez de colocar os seus conhecimentos em prática e criar as funções do case desta lição. Primeiro, você irá acessar o ambiente para codificar, neste caso vamos usar o site OnlineGDB que pode ser acessado clicando aqui. Com o site aberto você irá selecionar no canto superior direito na opção Language a linguagem de programação Python 3. Selecione todo o código que vem automaticamente no arquivo main.py e digite o seguinte código conforme a Figura 4:
Após a implementação, clique no botão “run” na parte superior da janela para executar o código.
Segue algumas explicações sobre o código da Figura 3:
Linha 01: Cria uma lista vazia.
Linhas 03 a 06: Cria um procedimento que recebe um título e um autor como argumento e o adiciona na lista de livros (criada na linha 1) e exibe mensagem de que o livro daquele autor foi adicionado à biblioteca (lista de livros).
Linhas 8 a 14: Cria o procedimento emprestarLivro que recebe um argumento livro e percorre por toda a lista de livros verificando se aquele título existe e se não está emprestado para ao encontrar o livro atualize a propriedade “emprestado” para true (formalizando aqui o empréstimo) e caso não encontre o livro imprime que aquele livro já foi emprestado.
Linhas 16 a 23: Cria o procedimento gerarRelatorio() que verifica a quantidade de livros na lista (livros), soma o número de livros na lista (livros) que foram emprestados e encontra o número de livros disponíveis pela subtração do total de livro menos os livros emprestados.
Linhas 25 a 27: Utiliza o procedimento adicionarLivro() para inclusão de 3 títulos na lista (livros).
Linhas 29 a 31: Utiliza o procedimento empresarLivro() para realizar o empréstimo dos 3 livros adicionados anteriormente.
Linha 33: Utiliza o procedimento gerarRelatorio() para verificar qual o total de livros da biblioteca, quantos foram emprestados e quantos estão disponíveis.
E agora, consegue me dizer qual será o resultado gerado pelo procedimento gerarRelatorio()? Execute o código, implemente atualizações que considere pertinente de acordo com o que conhece de uma biblioteca, compartilhe com seus colegas e professores para uma bela conversa em sala de aula.
PEREIRA, S. L. Algoritmos e lógica de programação em C: uma abordagem didática. 1. São Paulo: ed. Érica, 2010.