Prévia do material em texto
<p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>ALGORITMOS</p><p>COMPUTACIONAIS</p><p>Prof. Simone Gama</p><p>1</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>AULA 6</p><p>FUNÇÕES, SUBROTINAS e</p><p>MÓDULOS</p><p>(PARTE II)</p><p>2</p><p>Prof. Simone</p><p>Gama</p><p>Funções, Procedimentos, Sub-rotinas e Módulos</p><p>• A Função é quando existe a necessidade de executar um</p><p>código uma ou várias vezes, sempre que for necessário para se</p><p>obter um resultado.</p><p>• São blocos de código reutilizáveis que retornam um valor.</p><p>3</p><p>Nomenclaturas - Funções</p><p>Prof. Simone</p><p>Gama</p><p>Funções, Procedimentos, Sub-rotinas e Módulos</p><p>• Os Procedimentos também é quando existe a necessidade de</p><p>executar um código uma ou várias vezes, sempre que for</p><p>necessário para se obter um resultado.</p><p>• São blocos de código reutilizáveis que não retornam um valor.</p><p>4</p><p>Nomenclaturas - Procedimentos</p><p>Prof. Simone</p><p>Gama</p><p>Funções, Procedimentos, Sub-rotinas e Módulos</p><p>• As sub-rotinas (ou simplesmente rotinas) são um termo</p><p>genérico que se refere a qualquer bloco de código reutilizável,</p><p>incluindo funções e procedimentos.</p><p>5</p><p>Nomenclaturas – Sub-rotinas</p><p>Prof. Simone</p><p>Gama</p><p>Funções, Procedimentos, Sub-rotinas e Módulos</p><p>• Em Python, um módulo é um arquivo que contém definições e</p><p>instruções Python que podem ser importadas e utilizadas em</p><p>outros programas.</p><p>• Pense em um módulo como uma biblioteca de código que</p><p>você pode usar para adicionar funcionalidades ao seu</p><p>programa.</p><p>• Ás vezes chamadas de bibliotecas.</p><p>6</p><p>Nomenclaturas – Módulos</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.1</p><p>FUNÇÕES BUILT-IN</p><p>7</p><p>Prof. Simone</p><p>Gama</p><p>Funções Built-in</p><p>8</p><p>Funções Embutidas (built-in)</p><p>As Funções built-in são funções internas e nativas, ou seja,</p><p>que já vem incorporadas na linguagem Python e estão</p><p>sempre disponíveis para utilização.</p><p>Assim não é necessário fazer a importação. Basta utilizá-las</p><p>diretamente no seu código quando desejar.</p><p>Prof. Simone</p><p>Gama</p><p>Funções Built-in</p><p>9</p><p>Funções Embutidas (built-in)</p><p>As Funções built-in são funções internas e nativas, ou seja,</p><p>que já vem incorporadas na linguagem Python e estão</p><p>sempre disponíveis para utilização.</p><p>Assim não é necessário fazer a importação. Basta utilizá-las</p><p>diretamente no seu código quando desejar.</p><p>Prof. Simone</p><p>Gama</p><p>Funções Built-in</p><p>10</p><p>Funções Embutidas (built-in) – round()</p><p>A função round em Python é uma função embutida que permite</p><p>arredondar um número para um determinado número de casas</p><p>decimais.</p><p>Arredondar para o inteiro</p><p>mais próximo:</p><p>Arredondar para uma</p><p>casa decimal específica:</p><p>Prof. Simone</p><p>Gama</p><p>Funções Built-in</p><p>11</p><p>Funções Embutidas (built-in)</p><p>abs() dict() help() min() setattr()</p><p>all() dir() hex() next() slice()</p><p>any() divmod() id() object() sorted()</p><p>ascii() enumerate() input() oct() staticmethod()</p><p>bin() eval() int() open() str()</p><p>bool() exec() isinstance() ord() sum()</p><p>*Cada uma das funções é link para a sua documentação oficial</p><p>https://docs.python.org/3.6/library/functions.html#abs</p><p>https://docs.python.org/3.6/library/functions.html#func-dict</p><p>https://docs.python.org/3.6/library/functions.html#help</p><p>https://docs.python.org/3.6/library/functions.html#min</p><p>https://docs.python.org/3.6/library/functions.html#setattr</p><p>https://docs.python.org/3.6/library/functions.html#all</p><p>https://docs.python.org/3.6/library/functions.html#dir</p><p>https://docs.python.org/3.6/library/functions.html#hex</p><p>https://docs.python.org/3.6/library/functions.html#-1,-1,NEXT</p><p>https://docs.python.org/3.6/library/functions.html#slice</p><p>https://docs.python.org/3.6/library/functions.html#any</p><p>https://docs.python.org/3.6/library/functions.html#divmod</p><p>https://docs.python.org/3.6/library/functions.html#id</p><p>https://docs.python.org/3.6/library/functions.html#object</p><p>https://docs.python.org/3.6/library/functions.html#sorted</p><p>https://docs.python.org/3.6/library/functions.html#ascii</p><p>https://docs.python.org/3.6/library/functions.html#enumerate</p><p>https://docs.python.org/3.6/library/functions.html#input</p><p>https://docs.python.org/3.6/library/functions.html#oct</p><p>https://docs.python.org/3.6/library/functions.html#staticmethod</p><p>https://docs.python.org/3.6/library/functions.html#bin</p><p>https://docs.python.org/3.6/library/functions.html#eval</p><p>https://docs.python.org/3.6/library/functions.html#int</p><p>https://docs.python.org/3.6/library/functions.html#open</p><p>https://docs.python.org/3.6/library/functions.html#func-str</p><p>https://docs.python.org/3.6/library/functions.html#bool</p><p>https://docs.python.org/3.6/library/functions.html#exec</p><p>https://docs.python.org/3.6/library/functions.html#isinstance</p><p>https://docs.python.org/3.6/library/functions.html#ord</p><p>https://docs.python.org/3.6/library/functions.html#sum</p><p>Prof. Simone</p><p>Gama</p><p>Funções Built-in</p><p>12</p><p>Funções Embutidas (built-in)</p><p>*Cada uma das funções é link para a sua documentação oficial</p><p>bytearray() filter() issubclass() pow() super()</p><p>bytes() float() iter() print() tuple()</p><p>callable() format() len() property() type()</p><p>chr() frozenset() list() range() vars()</p><p>classmethod() getattr() locals() repr() zip()</p><p>compile() globals() map() reversed() __import__()</p><p>complex() hasattr() max() round()</p><p>memoryview()</p><p>delattr() hash() set()</p><p>https://docs.python.org/3.6/library/functions.html#func-bytearray</p><p>https://docs.python.org/3.6/library/functions.html#filter</p><p>https://docs.python.org/3.6/library/functions.html#issubclass</p><p>https://docs.python.org/3.6/library/functions.html#pow</p><p>https://docs.python.org/3.6/library/functions.html#super</p><p>https://docs.python.org/3.6/library/functions.html#func-bytes</p><p>https://docs.python.org/3.6/library/functions.html#float</p><p>https://docs.python.org/3.6/library/functions.html#iter</p><p>https://docs.python.org/3.6/library/functions.html#print</p><p>https://docs.python.org/3.6/library/functions.html#func-tuple</p><p>https://docs.python.org/3.6/library/functions.html#callable</p><p>https://docs.python.org/3.6/library/functions.html#format</p><p>https://docs.python.org/3.6/library/functions.html#len</p><p>https://docs.python.org/3.6/library/functions.html#property</p><p>https://docs.python.org/3.6/library/functions.html#type</p><p>https://docs.python.org/3.6/library/functions.html#chr</p><p>https://docs.python.org/3.6/library/functions.html#func-frozenset</p><p>https://docs.python.org/3.6/library/functions.html#func-list</p><p>https://docs.python.org/3.6/library/functions.html#func-range</p><p>https://docs.python.org/3.6/library/functions.html#vars</p><p>https://docs.python.org/3.6/library/functions.html#classmethod</p><p>https://docs.python.org/3.6/library/functions.html#getattr</p><p>https://docs.python.org/3.6/library/functions.html#locals</p><p>https://docs.python.org/3.6/library/functions.html#repr</p><p>https://docs.python.org/3.6/library/functions.html#zip</p><p>https://docs.python.org/3.6/library/functions.html#compile</p><p>https://docs.python.org/3.6/library/functions.html#globals</p><p>https://docs.python.org/3.6/library/functions.html#map</p><p>https://docs.python.org/3.6/library/functions.html#reversed</p><p>https://docs.python.org/3.6/library/functions.html#__import__</p><p>https://docs.python.org/3.6/library/functions.html#complex</p><p>https://docs.python.org/3.6/library/functions.html#hasattr</p><p>https://docs.python.org/3.6/library/functions.html#max</p><p>https://docs.python.org/3.6/library/functions.html#round</p><p>https://docs.python.org/3.6/library/functions.html#func-memoryview</p><p>https://docs.python.org/3.6/library/functions.html#delattr</p><p>https://docs.python.org/3.6/library/functions.html#hash</p><p>https://docs.python.org/3.6/library/functions.html#func-set</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.2</p><p>MÓDULOS em PYTHON</p><p>13</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python</p><p>14</p><p>Bibliotecas de Funções</p><p>Um módulo pode conter quaisquer recursos e estruturas do</p><p>Python:</p><p>• Funções</p><p>• Variáveis</p><p>• Classes</p><p>Um módulo é executado quando é importado.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python</p><p>15</p><p>Vantagens de usar Módulos</p><p>1.Reutilização de código: Com os módulos, é possível escrever código uma</p><p>vez e reutilizá-lo em vários projetos. Isso economiza tempo e esforço, além</p><p>de manter a consistência e a padronização do código.</p><p>2. Modularidade: A utilização de módulos permite dividir um programa</p><p>em partes menores e mais gerenciáveis. Cada módulo pode</p><p>ser</p><p>desenvolvido e testado separadamente, facilitando a manutenção e a</p><p>colaboração entre os membros da equipe.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python</p><p>16</p><p>Importanto módulos</p><p>• Os módulos são carregados pelo interpretador através da</p><p>instrução import.</p><p>• Para utilizar um recurso de um módulo deve-se identificar o</p><p>módulo, importando-o:</p><p>import nome_do_modulo</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python</p><p>17</p><p>Importanto módulos – Exemplo:</p><p>Para utilizar o módulo “math” da biblioteca padrão, podemos</p><p>fazer o seguinte:</p><p>import math</p><p>print(math.sqrt(25))</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python</p><p>18</p><p>Importanto módulos – Exemplo:</p><p>Também é possível importar funções específicas de um módulo</p><p>usando a declaração “from … import”:</p><p>from math import sqrt</p><p>print(math.sqrt(25))</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.2.1</p><p>MÓDULOS em PYTHON:</p><p>math</p><p>19</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: math</p><p>20</p><p>Funções de math</p><p>• math.cos(numero): Retorna o cosseno do número em radiano.</p><p>• math.sin(numero): Retorna o seno do número em radiano.</p><p>• math.tan(numero): Retorna a tangente do número em radiano.</p><p>• math.radians(numero): Converte o angulo 'numero' de graus para</p><p>radiano.</p><p>• math.pi: Retorna o valor do número pi (3.1415926535897931).</p><p>• math.hypot(x, y): Retorna a hipotenusa dos números (catetos)</p><p>fornecidos.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: math</p><p>21</p><p>Funções de math</p><p>math.comb(n,k): Retorna o número de maneiras possíveis de escolher 𝑘</p><p>itens de 𝑛 itens sem repetição e sem relevância na ordem dos</p><p>elementos.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: math</p><p>22</p><p>Funções de math</p><p>math.comb(n,k): Retorna o número de maneiras possíveis de escolher 𝑘</p><p>itens de 𝑛 itens sem repetição e sem relevância na ordem dos</p><p>elementos.</p><p>{𝒂, 𝒃, 𝒄}</p><p>𝑛 = 3</p><p>𝑘 = 2</p><p>{𝑎, 𝑏}</p><p>{𝑎, 𝑐}</p><p>{𝑏, 𝑐}</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: math</p><p>23</p><p>Funções de math</p><p>math.perm(n,k=None): Retorna o número de maneiras possíveis de</p><p>escolher 𝑘 itens de 𝑛 itens sem repetição e com relevância na ordem dos</p><p>elementos.</p><p>{𝒂, 𝒃, 𝒄}</p><p>𝑛 = 3</p><p>𝑘 = 2</p><p>{𝑎, 𝑏}, {𝑏, 𝑎}</p><p>{𝑎, 𝑐}, {𝑐, 𝑎}</p><p>𝑏, 𝑐 , {𝑐, 𝑏}</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: math</p><p>24</p><p>Funções de math</p><p>math.factorial(x): Retorna o fatorial de um número x.</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.2.2</p><p>MÓDULOS em PYTHON:</p><p>os</p><p>25</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: os</p><p>26</p><p>Característica do módulo os</p><p>O módulo os fornece funções para interagir com o sistema</p><p>operacional, como ler arquivos e criar diretórios.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: os</p><p>27</p><p>Funções de os</p><p>getcwd(): obtém</p><p>endereço do diretório.</p><p>listdir(): Insere os nomes dos</p><p>arquivos do diretório atual em</p><p>uma lista.</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.2.3</p><p>MÓDULOS em PYTHON:</p><p>random</p><p>28</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>29</p><p>Característica do módulo random</p><p>O módulo random em Python fornece funções para gerar</p><p>números pseudo-aleatórios.</p><p>Estes números não são verdadeiramente aleatórios, mas são</p><p>suficientemente bons para a maioria das aplicações que exigem</p><p>aleatoriedade</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>30</p><p>Pseudoaleatório</p><p>É importante notar que geradores de números aleatórios são baseados</p><p>em um algoritmo determinístico — reproduzível e previsível. Por isso eles</p><p>são chamados de geradores pseudo-aleatórios — pois eles não são</p><p>verdadeiramente aleatórios.</p><p>Eles começam com um valor de semente. Cada vez que você pedir um</p><p>outro número aleatório, você vai receber um com base no valor atual da</p><p>semente, e o estado da semente (que é um dos atributos do gerador) é</p><p>atualizado.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>31</p><p>Funções de random - random</p><p>random.random(): Gera um número pseudo-aleatório de ponto</p><p>flutuante entre 0.0 (inclusive) e 1.0 (exclusivo).</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>32</p><p>Funções de random - randrange</p><p>A função randrange gera um inteiro no intervalo definido pelo menor e</p><p>maior argumento, usando a mesma semântica do range — ou seja, o</p><p>valor inicial é incluído mas o final é excluído. Todos os valores tem a</p><p>mesma probabilidade de ocorrência (ou seja, os resultados são</p><p>uniformemente distribuídos).</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>33</p><p>Funções de random - randrange</p><p>A função randrange gera um inteiro no intervalo definido pelo menor e</p><p>maior argumento, usando a mesma semântica do range — ou seja, o</p><p>valor inicial é incluído mas o final é excluído. Todos os valores tem a</p><p>mesma probabilidade de ocorrência (ou seja, os resultados são</p><p>uniformemente distribuídos). Opcionalmente, você pode especificar um</p><p>valor step para controlar o incremento</p><p>entre os elementos. Se omitido, step</p><p>assume o valor padrão 1.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>34</p><p>Funções de random - randint</p><p>Gera um número inteiro aleatório escolhido aleatoriamente do intervalo</p><p>[a, b], inclusive.</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>35</p><p>Funções de random – randon.choice</p><p>Seleciona um elemento aleatório da sequência dada (lista, tupla, string,</p><p>etc.).</p><p>Prof. Simone</p><p>Gama</p><p>Módulos em Python: random</p><p>36</p><p>Funções de random – randon.shuffle</p><p>Reordena aleatoriamente os elementos no local dentro da sequência</p><p>dada.</p><p>DEPARTAMENTO DE</p><p>ENGENHARIA DE SISTEMAS E</p><p>COMPUTAÇÃO</p><p>6.3</p><p>CRIANDO MÓDULOS em</p><p>PYTHON</p><p>37</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>38</p><p>Passos de criação de módulos</p><p>1. Crie um arquivo Python: Crie um novo arquivo com a extensão .py. O</p><p>nome do arquivo deve ser o mesmo que o nome do módulo que você</p><p>deseja criar.</p><p>2. Escreva o código do módulo: No arquivo Python, escreva o código que</p><p>você deseja incluir no módulo. Este código pode incluir funções, classes,</p><p>variáveis e outras instruções Python.</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>39</p><p>Passos de criação de módulos</p><p>3. Importe o módulo: Para usar o módulo em outro programa Python,</p><p>você precisa importá-lo usando a palavra-chave import. Por exemplo, se</p><p>o nome do seu módulo for meu_modulo.py, você pode importá-lo da</p><p>seguinte maneira:</p><p>import meu_modulo</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>40</p><p>Exemplo: 1º Criar o módulo e nomear modulo.py:</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>41</p><p>Exemplo: No programa principal, importar o módulo criado:</p><p>1</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>42</p><p>Exemplo: ou você pode importar a função do módulo criado:</p><p>2</p><p>Prof. Simone</p><p>Gama</p><p>Criando Módulos em Python</p><p>43</p><p>Exemplo: ou você pode importar o módulo com um alias:</p><p>3</p><p>Prof. Simone</p><p>Gama</p><p>Exercícios de Funções e Módulos</p><p>44</p><p>1. Em Python, leia um número real do teclado e calcule:</p><p>a) A parte inteira desse número</p><p>b) A parte decimal (floor)</p><p>c) A raiz quadrada desse número</p><p>2. Faça um programa que leia os catetos do teclado e calcule a hipotenusa.</p><p>3. Faça um algoritmo que leia o raio do teclado e calcule a área de um círculo.</p><p>4. Crie um programa que gere um número aleatório entre 1 e 100 e peça ao</p><p>usuário para adivinhar o número. O programa deve fornecer dicas ao usuário,</p><p>como se o número adivinhado é maior ou menor que o número secreto.</p><p>5. Crie um programa que gere senhas aleatórias para os usuários. O programa deve</p><p>permitir que o usuário especifique o comprimento da senha e os caracteres que</p><p>devem ser usados na senha.</p><p>Prof. Simone</p><p>Gama</p><p>Algoritmos Computacionais</p><p>45</p><p>DÚVIDAS?</p><p>Prof. Simone</p><p>Gama</p><p>46</p><p>Bibliografia</p><p>BANIN, Sérgio Luiz. Python 3 - Conceitos e Aplicações -</p><p>Uma Abordagem Didática. São Paulo: Érica, 2018.</p><p>Araujo, J.R. Introdução à programação e aos</p><p>algoritmos. Editora LTC. 1a Ed 2019.</p><p>Slide 1: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 2: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 3: Funções, Procedimentos, Sub-rotinas e Módulos</p><p>Slide 4: Funções, Procedimentos, Sub-rotinas e Módulos</p><p>Slide 5: Funções, Procedimentos, Sub-rotinas e Módulos</p><p>Slide 6: Funções, Procedimentos, Sub-rotinas e Módulos</p><p>Slide 7: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 8: Funções Built-in</p><p>Slide</p><p>9: Funções Built-in</p><p>Slide 10: Funções Built-in</p><p>Slide 11: Funções Built-in</p><p>Slide 12: Funções Built-in</p><p>Slide 13: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 14: Módulos em Python</p><p>Slide 15: Módulos em Python</p><p>Slide 16: Módulos em Python</p><p>Slide 17: Módulos em Python</p><p>Slide 18: Módulos em Python</p><p>Slide 19: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 20: Módulos em Python: math</p><p>Slide 21: Módulos em Python: math</p><p>Slide 22: Módulos em Python: math</p><p>Slide 23: Módulos em Python: math</p><p>Slide 24: Módulos em Python: math</p><p>Slide 25: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 26: Módulos em Python: os</p><p>Slide 27: Módulos em Python: os</p><p>Slide 28: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 29: Módulos em Python: random</p><p>Slide 30: Módulos em Python: random</p><p>Slide 31: Módulos em Python: random</p><p>Slide 32: Módulos em Python: random</p><p>Slide 33: Módulos em Python: random</p><p>Slide 34: Módulos em Python: random</p><p>Slide 35: Módulos em Python: random</p><p>Slide 36: Módulos em Python: random</p><p>Slide 37: DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO</p><p>Slide 38: Criando Módulos em Python</p><p>Slide 39: Criando Módulos em Python</p><p>Slide 40: Criando Módulos em Python</p><p>Slide 41: Criando Módulos em Python</p><p>Slide 42: Criando Módulos em Python</p><p>Slide 43: Criando Módulos em Python</p><p>Slide 44: Exercícios de Funções e Módulos</p><p>Slide 45: Algoritmos Computacionais</p><p>Slide 46: Bibliografia</p>