Prévia do material em texto
17/05/2022 1 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Tema 5 - Aula 10 : Subprogramas. Prof. Ronaldo Candido ronaldo.candido@estacio.br 2022.1 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Conteúdo Programático 1. Fundamentos dos subprogramas. 2. Funções com passagem de parâmetros. 3. Questões de projeto para subprogramas. 4. Interfaces gráficas de usuário com Tkinter. 5. Atividade verificadora de aprendizagem. Objetivos da aula • Empregar modularização de programas para decompor problemas complexos em partes menores favorecendo a solução completa. 17/05/2022 2 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Situação-problema • Suponha que um programador é contrato para desenvolver um sistema ERP (Enterprise Resource Planning) que é um software integrado para gestão empresarial formado por diversos módulos como: Contabilidade, Recursos Humanos, Suprimentos, Patrimônio, Vendas, entre outros. Desenvolver um sistema desse porte em um único arquivo que contém todo o programa seria extremamente complexo tanto para sua manutenção como para o próprio entendimento haja vista a grande quantidade de código sequencial que o mesmo teria. • Como poderíamos resolver esse problema dando mais organização para esse programa? AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Fundamentos de Subprogramas • Os subprogramas, procedimentos, rotinas ou funções são pequenos trechos de códigos que realizam tarefas específicas, evitando um GRANDE conjunto de comandos e expressões em um código monolítico. • Também são conhecidas como blocos de códigos que realizam tarefas repetitivas dentro de um código. • Já utilizamos várias funções desde o início da disciplina : print(), len(), count(), etc. • As funções podem ou não receber entradas de dados e retornar uma saída de dados. • Elas são muito úteis para executar procedimentos similares por repetidas vezes, reutilizando um código já desenvolvido. 17/05/2022 3 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Sintaxe de uma Função • Em Python, a forma geral de definir uma função é: def nome_da_função (parâmetros_de_entrada): bloco da função Onde: nome_de_função: sempre com letras minúsculas, e se for nome composto, separado por underline. parâmetros_de_entrada: opcionais, onde tendo mais de um, cada um vem separado por vírgulas. No bloco_da_função pode ter ou não um retorno. Exemplo : def diz_oi(): print(‘oi’) Função diz_oi, sem parâmetros de entrada, executa um único comando e sem valor de retorno. É considerado um subprograma, procedimento ou rotina. AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Executando uma Função • Definir uma função não a executa imediatamente. No momento que desejarmos executá-la, basta “chamar” o nome da função com seus parênteses : diz_oi() #aparecerá a execução dos comandos descritos na função • Exemplo de função com valor de retorno : def quadrado_de_7(): return (7**2) #chamando a função ret = quadrado_de_7() print('Retorno: ', ret) Nunca se esqueça dos parênteses quando chamar uma função !!! Função quadrado_de_7, sem parâmetros de entrada, executa um único comando e tem valor de retorno. Uma variável ou um comando precisará guardar seu retorno. 17/05/2022 4 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Funções na prática • Faça uma função para jogar uma moeda e dar Cara ou Coroa : from random import * #definindo a função def joga_moeda(): valor = random() if valor > 0.5: return 'Cara‘ else: return 'Coroa' #executando a função (execute várias vezes o programa ou coloque um laço for) moeda = joga_moeda() print(moeda) AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Bibliotecas de Funções • Bibliotecas em Python são coleções de módulos de scripts acessíveis (funções) a um programa para simplificar o processo de programação e remover a necessidade de reescrever os comandos mais usados. • O comando import é usado para importar as bibliotecas. O Python possui um conjunto de bibliotecas padrões : math: usada para operações matemáticas. from math import * print (sqrt(144)) #raiz quadrada de 144 (parâmetro) print(sin(1)) #seno numero = -120 print (abs(numero)) #sem sinal 17/05/2022 5 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Bibliotecas de Funções (continuação) time: usada para implementar contadores temporais. import time for i in range(1,6): time.sleep(1) print('Passaram-se %i segundo(s)' %i) random: usada para gerar números aleatórios. from random import randint as r num = r(1,6) print('Gerado número aleatório entre 1 e 6: %i' %num) tkinter: usada para desenvolver interfaces gráficas (GUI padrão). smtplib: usada para trabalhar aplicativos de e-mail. urllib: modulo de manuseamento de URL. AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Funções com parâmetros nomeados • Funções em Python tem suporte a parâmetros nomeados. • O exemplo a seguir mostra um caso onde podemos usar nomes nos parâmetros da função: #definindo a função def calculo_imc(peso, altura): #dois parâmetros de entrada na função return (peso/altura**2) #entrada de dados peso = float(input('Digite o peso: ')) altura = float(input('Digite a altura: ')) #executando a função imc = calculo_imc(peso,altura) #parâmetros formais #ou imc = calculo_imc(altura=1.85,peso=75) #parâmetros nomeados print('Índice de massa Corpórea : %.2f' %imc) Esta é a passagem de parâmetros para a função !!! 17/05/2022 6 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Importando funções #criar uma função que calcule a área de um cubo (arquivo exercicio02.py) def calcular_area_cubo(lado): area = 6 * (lado ** 2) return area Use o import e chame o nome da função #exercicio02_programa.py #usar a função da área do cubo import exercicio02 print('Programa principal') #entrada de dados lado = float(input('digite o valor do lado:')) a = exercicio02.calcular_area_cubo(lado) #saída de dados print('Área do cubo:’, a) AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Interfaces gráficas de usuário com Tkinter • Toolkit originalmente criado para utilização com a linguagem script Tcl. • Bastante leve, portátil e robusto. • Um tanto obsoleto frente a outros toolkits mais modernos como Qt ou Gtk. • Camada Tkinter normalmente distribuída com o Python : Inicia um processo Tcl que toma conta dos elementos de interface. Classes e funções do Tkinter se comunicam com o interpretador Tcl para especificar aspecto e comportamento da interface. Exemplo: import tkinter tkinter._test() Usar o IDLE Python ou PyCharm para testar. 17/05/2022 7 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Usando Tkinter • Importar o módulo Tkinter : from tkinter import * • Elementos de interface (widgets) correspondem a objetos de diversas classes. Por exemplo: Frame (Área retangular) Button (botão) Label (rótulo) Text (caixa de texto) Canvas (caixa de desenho) • Posição e tamanho dos elementos controlados por gerentes de geometria : Pack (mais comum), Place, Grid. AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Usando Tkinter (continuação) from tkinter import * class Application(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.msg = Label(self, text="Hello World") self.msg.pack() self.bye = Button (self, text="Bye", command=quit) self.bye.pack() self.pack() app = Application() mainloop() 17/05/2022 8 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Usando Tkinter (continuação) • Para criar um widget, tem que informar o widget pai (parâmetro master) ondegeometricamente deverá ser encaixado e as opções de configuração para o widget. Exemplo: w = Button(pai,text=”Cancelar”,command=cancelar) • Tk já define por default uma janela principal: master=None (default) indica que o widget será filho da janela principal. Outras janelas pode ser criadas criando objetos da classe Toplevel. • A função mainloop() tem que ser invocada para que a aplicação entre no modo de tratamento de eventos. AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Usando Tkinter (continuação) 17/05/2022 9 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido 1. Faça um programa com uma função chamada somaImposto. A função possui dois parâmetros formais: taxaImposto, que é a quantia de imposto sobre vendas expressa em porcentagem e custo, que é o custo de um item antes do imposto. A função "altera" o valor de custo para incluir o imposto sobre vendas. 2. Faça um programa que converta da notação de 24 horas para a notação de 12 horas. Por exemplo, o programa deve converter 14:25 em 2:25 P.M. A entrada é dada em dois inteiros. Deve haver pelo menos duas funções: uma para fazer a conversão e uma para a saída. Registre a informação A.M./P.M. como um valor "A" para A.M. e "P" para P.M. Assim, a função para efetuar as conversões terá um parâmetro formal para registrar se é A.M. ou P.M. Inclua um loop que permita que o usuário repita esse cálculo para novos valores de entrada todas as vezes que desejar. • Esta atividade computará 1,0 ponto para a AV2 como consta no Trabalho indicado na Sala de aula virtual. Atividade verificadora de aprendizagem AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Aprenda + • Vídeo: Ignorância Zero. "Aulas Python - 039 - Funções VI: Recursividade". Disponível em . Acesso em: 13 mai. 2022. • Vídeo: CS Dojo. "Como usar funções no Python (Tutorial do Python # 3)". Disponível em . (Ative a legenda e a tradução automática para o português). Acesso em: 13 mai. 2022. • Python Brasil. Resolver os Exercícios 3, 4 e 7. Disponível em: . Acesso em: 13 mai. 2022. • Atividade Autônoma Aura: Questão 1: (IF Sul Riograndense, 2019) (adaptada). Observe a função print do código escrito em Python a seguir: def foo(n): if n>1: return n * foo(n-1) return 1 print(foo(4)) Qual o resultado impresso ? a) 4 b) 16 c) 24 d) 20 e) 48 17/05/2022 10 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Aprenda + (continuação) Questão 2: (AOCP MJSP, 2020) Assinale a alternativa que apresenta o código Python que implementa corretamente uma função para o cálculo da área de um retângulo, bem como o código que imprime o seu resultado. a) def area_retangulo(comp, larg) { return comp * larg } print(' A área é ‘ + area_retangulo (2,4)) b) func area_retangulo(comp, larg): return comp * larg print(' A área é ‘ || area_retangulo (2,4)) c) def area_retangulo(comp, larg)( return comp * larg); print(' A área é {}' .format (area_retangulo (2,4))) d) func area_retangulo(comp, larg): return comp * larg; println(' A área é ‘ + area_retangulo (2,4)) e) def area_retangulo(comp, larg): return comp * larg print(' A área é {}' .format(area_retangulo (2,4))) AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido Para a próxima aula... • Leitura e resolução das atividades propostas no livro SEBESTA, R. “Conceitos de Linguagens de Programação”. Capítulo 12 (Suporte para a Programação Orientada a Objetos), páginas 487 a 540. • Estudar a Aula 11 de PARADIGMAS no SAVA previamente e realizar as atividades propostas.. 17/05/2022 11 AULA 10 PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON Prof. Ronaldo Candido BANIN, S. L. Python 3 Conceitos e Aplicações. Uma Abordagem Didática. 1a. ed. São Paulo: Érica, 2018. Disponível em: . Acesso em: 16 fev. 2022. BORGES, L. E. Python para Desenvolvedores. Parte IV: Interface gráfica. 2a. ed. Rio de Janeiro: Novatec, 2014. PERKOVIC, L. Introdução à Computação Usando Python - Um Foco no Desenvolvimento de Aplicações. 1a. ed. Rio de Janeiro: LTC, 2016. Disponível em: . Acesso em: 14 fev. 2022. SEBESTA, R. W. Conceitos de Linguagens de Programação. 11a. ed. Porto Alegre: Bookman, 2018. Disponível em: . Acesso em: 14 fev. 2022. Referências Prof. Ronaldo Candido ronaldo.candido@estacio.br Dúvidas, sugestões ou análises ??? PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON