Fundamentos de Programação. revisão e adendos

Documentos relacionados
Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Material Didático Unificado.

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Computação 1 - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings 1/ 26

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Computação 1 - Python Aula 4 - Teórica Variáveis e Atribuição, Strings. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 30

Computação I - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings

Python Funções. Introdução à Programação SI1

Linguagem C: Introdução

Algoritmos e Programação

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab.

Computação I - Python Aula 1 - Teórica: Manipulação de Strings, Tuplas e Listas

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Ambiente e linguagem de programação Python

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Ambiente e linguagem de programação Python

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Linguagem C. André Tavares da Silva.

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Português Estruturado

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

1 Expressões, valores e tipos 1. 2 Variáveis e atribuições 5. cálculo de expressões segue a estrutura de parênteses e as prioridades dos operadores

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

Algoritmos e Programação

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Programação Estruturada

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Algoritmo e Programação Matemática

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Aula 4: Introdução à Linguagem C++

Computação I - Python

Introdução à Programação Aula 3 Primeiros programas

Introdução ao Fortran 90-1

Introdução ao Scilab. Comandos de entrada e saída de dados.

Introdução à Linguagem C Variáveis e Expressões

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

Python - Variáveis e expressões

Lista de Exercícios 5 Funções e Strings

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

3. Linguagem de Programação C

Computação 1 - Python Aula 2 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 39

Técnicas de Programação

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Computação 1 - Python 1/ 41

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Oficina de Python Prof. Me. José Carlos Perini

Princípios de Desenvolvimento de Algoritmos MAC122

4. Constantes. Constantes pré-definidas

Oficina de Python Prof. Me. José Carlos Perini

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Desenvolvido por: Juarez A. Muylaert Filho - Andréa T. Medeiros - Adriana S. Spallanzani -

Variáveis, Tipos de Dados e Operadores

Noções de algoritmos - Aula 1

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza

Lista de Exercícios - 1 Prof: Yuri Frota

Programação I Aula 3 Primeiros programas

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim

TIPOS DE DADOS E VARIÁVEIS

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

1/ 26. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Manipulação de Strings. Vanessa Braganholo

Linguagem C Princípios Básicos (parte 1)

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

char* prefixo (char* str, int n);

Introdução à Programação C

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Introdução à Computação MAC0110

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

5. Expressões aritméticas

ALGORITMOS AULA 2. Profª Amanda Gondim

Fundamentos de Programação

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Aula 11: Modularização

Transcrição:

Fundamentos de Programação revisão e adendos

Tipos de dados Programas manipulam valores/dados (textos, números,...) de tipos distintos int 2017 O tipo de dado define o conjunto de valores válidos e disponibiliza um conjunto de operações que podem ser efetuadas Em Python os dados são objetos de um determinado tipo. float 3.141592653589793 Todo objeto tem um tipo e um valor que são determinados quando é criado e é armazenado na memória no formato de seu tipo. É necessário conhecer como a linguagem Python lida com os tipos de dados para evitar erros como realizar operações incompatíveis ao tipo str Mia#0 2

Alguns Tipos de Dados Nativos Simples Dados Tipo Valores Válidos Exemplos Numéricos Inteiros int N Z precisão fixa 5 101 6-943 -4 Numéricos com parte fracionária float Q R Precisão variável mantissa (m) e expoente (e) 15.3-0.37 6..37 15e-5 Textuais ou Alfanuméricos string Sequência de letras, dígitos, símbolos de pontuação e especiais igual ao número de caracteres da sequência 'a' '?' '6' '101' '12@34#$' 'Informática Puc-Rio' "banana'' 3

; Variável Uma variável é uma associação entre um nome e um valor. ano int 2017 pi float 3.141592653589793 nome str Mia#0 Pode ser utilizada e alterada pelo programa e deve ser criada antes de ser usada. O nome de uma variável pode ter um ou mais caracteres. Regras: 1º caratere: letra ou underscore('_') Demais caracteres: letras, números ou underscore ('_') Letras maiúsculas e minúsculas são consideradas diferentes; Proibido: caracteres especiais, espaços ou palavras reservadas Em Python, o tipo da variável é o tipo do valor associado operações mudam de acordo com o tipo 4

Atribuição (1/5) Associa o nome da variável ao valor resultante da avaliação da expressão. nomevariável = expressão Na 1ª atribuição: a variável é criada e seu conteúdo referencia o valor resultante da expressão. Nas demais atribuições: o valor da variável é substituído pelo resultado da expressão Sempre que o nome da variável for utilizado em uma expressão é automaticamente substituído pelo seu valor 5

Atribuição (2/5) nomevariável = expressão Valor constante Variável ou retorno da chamada de uma função Expressão : <operando> operador <operando> expressão aritmética: <operando> operador aritmético <operando> Operação Operador Aritmético Soma + Subtração - Multiplicação * Divisão / Divisão de inteiros // Resto da divisão % Potenciação ** Negativo - 6

Expressão Aritmética <operando> operador aritmético <operando> A expressão é avaliada de acordo com a prioridade dos operadores 1) Exponenciação (**) 2) Multiplicação e Divisão (*,/,//,%) 3) Soma e Subtração (+, -) expressão aritmética: A ordem de avaliação pode ser modificada por parênteses 7

Atribuição (3/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi # Cria variável angulo que referencia o objeto real pi nome = 'Mia' Operações válidas com total operações do tipo inteiro (+, -, *, /, //, %, **) # Cria variável nome que referencia o objeto string "Mia" pi total int 100 angulo float 3.141592653589793 peso float 10.5 nome str Mia 8

Atribuição (4/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi # Cria variável angulo que referencia o objeto real pi nome = 'Mia' total = 'Não sei...' # Cria variável nome que referencia o objeto string "Mia" pi total int 100 angulo float 3.141592653589793 peso float 10.5 nome str Mia 9

Atribuição (5/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi nome = 'Mia' total = 'Não sei...' Operações válidas com total operações do tipo string (+,*) # Cria variável angulo que referencia o objeto real pi # Cria variável nome que referencia o objeto string "Mia" total str Não sei... pi angulo float 3.141592653589793 peso float 10.5 nome str Mia 10

Operador +: adiciona ou concatena Se ambos operandos são numéricos : soma os números Se ambos operandos são textos : concatena os textos Demais casos: erro de execução (TypeError: não converte tipos implicitamente) Exemplo: dtot = total + 2 # dtot é criado e associado ao objeto int resultante de 100+2 total = total + 4.2 # total é associado ao objeto float resultante de 100+4.2 email = nome+ '@gmail.com' # email é criado e associado ao objeto str da concatenação total nome peso cang float str float float 100 Mia 10.5-1.0 dtot total float 102 float 104.2 email Str Mia@gmail.com 11

Operador *: multiplica ou replica Se ambos operandos são numéricos: multiplica os números Se um operando é texto e outro nº inteiro: replica a string nº vezes Demais casos: erro de execução (TypeError: não converte tipos implicitamente) Exemplos: a = dtot * 2 # dtot é criado e associado ao objeto int resultante de 100+2 b = dtot * 2.0 # total é associado ao objeto float resultante de 100+4.2 nomrep = nome * 3 # norep é criado e associado ao objeto str com 'Mia' replicado 3 vezes total nome dtot int str int 104.2 Mia 102 b a int 204 float 204.0 nomrep str MiaMiaMia cang float -1.0 12

Mais sobre Strings: índices Strings são sequências de caracteres. As posições dos carateres na sequência são numeradas por índices: da esquerda para direita, iniciando em 0. da direita para a esquerda iniciando em -1. É possível acessar um caractere ou um intervalo (fatia/slice) da string, mas não modificá-los. string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 13

Operações em Strings: acesso aos elementos Um caractere é uma string de comprimento 1. Um elemento pode ser selecionado (indexado) pelo seu índice (sua posição na sequência) utilizando o operador de indexação [ ]: string s: 'm' string[expressão inteira] '!' s[-9] s[-1] -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 s[0] s[3] s[9] 'U' ' ' '!' 14

Operações em Strings: fatias string[a:b:n] Seleciona um intervalo (fatia) da string da posição a (inclusive) até a posição b (exclusive) de n em n. Se a não for definido, será considerado como zero Se b não for definido, será considerado o tamanho da string. Se o intervalo n (entre os caracteres), não for definido, será 1. string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 Exemplo: s[0:3] 'Uma' s[5: ] 'rase!' s[ :5] 'Uma f' 15

Exemplos de fatias de strings string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 Qual a string resultante? s[:5] s[4:] s[-1:-3:-1] s[-1:-3] s[-3:-1] s[:] s[::2] s[0:4:2] s[4:0:-2] s[4: :-2] 'Uma f' 'frase!' '!e' '' 'se' 'Uma frase!' 'Uafae' 'Ua fa fau' 16

Fatias (slices): Resumo Sintaxe seq[a:b: n] seq[a : b] - cria uma cópia de a (inclusive) até b (exclusive) seq[a : ] - cria uma cópia a partir de a (inclusive) seq[ : b] - cria uma cópia até b (exclusive) seq[ : ] - cria uma cópia de todos os elementos seq[a : b: n] - cria uma cópia de a (inclusive) até b (exclusive) de n em n elementos 17

Variável String x Atribuição (1/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart 18

Variável String x Atribuição (2/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart Representação emailprof str Mia@gmail.com emailpart str Mia123@hotmail.com 19

Variável String x Atribuição (3/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof Representação emailprof str Mia@gmail.com emailpart str Mia123@hotmail.com 20

Variável String x Atribuição (4/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 21

Variável String x Atribuição (5/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof emailprof[0] = 'a' Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 22

Variável String x Atribuição (6/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof emailprof[0] = 'a' #ERRO!!!!! emailprof[0]='a' TypeError: 'str' object does not support item assignment Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 23

Exercícios (1/4) 1. Crie uma string com o 2º e o 3º caractere da frase "Oie, tudo bem" replicados 4 vezes. Exemplo: ieieie' Dicas: associe a frase inicial a uma variável Uma fatia pode ser "separada" com o uso do operador [a:b:n] o operador + concatena strings o operador * replica strings 2. A operadora de celular em uma cidade guarda os números no formato abaixo. '+55(021)8888-8888'. Como a região trocou de 8 para 9 algarismos: Separe o país Separe a área Separe o número do telefone Crie a string com paísáreanº(velho) Coloque o 9 antes do nº do telefone no formato da operadora Crie a string com paísáreanº(novo) 24

Exercícios (2/4) 3. Crie a string alfabeto >>>alfabeto = "abcdefghijklmnopqrstuvwxyz" e, a partir da string alfabeto: a) crie uma string com o caractere do meio b) Importe o módulo random Veja o help da função choice : help(random.choice) Veja o help da função randint : help(random.randint) c) Mostre o caractere do alfabeto escolhido pelas duas funções (choice e o randint) CUIDADO: A função randint gera um nº em um intervalo. Para saber o caractere, este nº deve ser usado como índice da variável alfabeto. 25

Exercícios (3/4) 4. Guarde seu nome em uma variável. Exemplo: nome= 'Pedro José Silva Só' a) Exiba o sobrenome seguido de vírgula e do resto do nome(só,pedro José Silva) b) Exiba uma string formada por '*' com mesmo comprimento de seu nome (*******************). Dica: a função len(string) retorna o comprimento da string a) Exiba seu primeiro nome invertido ('ordep') b) Replique o caractere do meio de seu nome, para que tenha o mesmo comprimento de seu primeiro nome ('ééééé') 5. Guarde sua data de nascimento em uma variável no formato 'dd/mm/aaaa'. Exemplo dt = '01/01/1984' a) Exiba apenas o ano ('1984') b) Exiba o ano invertido ('4891') c) Exiba toda a data invertido ('4891/10/10') d) Exiba a data no formato 'dd-mm-aaaa' 26

Exercícios (4/4) 6. Um operador de crossover pode ser aplicado a duas strings s1 e s2 e consiste em sortear aleatoriamente um ponto de s1 e s2. Escolhido este ponto, então, é realizada a troca de informações de s1 e s2 tal como mostrado no esquema da Figura abaixo a) crie duas strings s1 e s2 b) considere um ponto de quebra sorteado via randint 27

Funções Uma função é uma sequência de instruções (bloco de código) independente, a qual se atribui um nome e que realiza uma tarefa específica Em geral computa valores a partir de valores recebidos: uma função pode receber e/ou retornar valores. As funções são ativadas pelo nome por outra função, módulo ou diretamente no interpretador Quando a função termina, o controle retorna para o ponto de onde a função foi chamada (invocada/ativada) 28

Motivando Funções Desenvolvimento da solução por partes Permite pensar no problema em diversos níveis Modularização Testes independentes facilita a correção de erros Reuso Mais legível (código menor) Facilita a manutenção 29

Definindo Funções (1/6) Definição da função inicia com "def" o cabeçalho termina com : 30

Definindo Funções (2/6) Definição da função inicia com"def" Nome da função o cabeçalho termina com : 31

Definindo Funções (3/6) Definição da função inicia com"def" Nome da função Parâmetros o cabeçalho termina com : 32

Definindo Funções (4/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : 33

Definindo Funções (5/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : "return" encerra a função, podendo retornar um valor 34

Definindo Funções (6/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : docstring Texto sucinto que descreve o objetivo da função "return" encerra função, podendo retornar um valor 35

Funções: Sintaxe Formato geral: onde: nome : nome associado à sequência de instruções v1..vn: parâmetros - nomes associados aos valores transmitidos à função na sua chamada e necessários para realizar sua tarefa Uma função pode ter 0, 1 ou mais parâmetros comandos: sequência de instruções que será executada quando a função é invocada O comando return <exp> def funcao_qualquer (v1, v2,... v2): """ texto de documentação""" comando... comando return algo a) força o encerramento da função, retornando para quem a chamou. b) opcionalmente, devolve, um valor para a função de origem (exp) 36

Observações sobre Funções A definição da função deve ser feita antes da sua chamada para que o Python reconheça o seu nome. Não pode haver funções e variáveis com o mesmo nome! Os valores recebidos são associados aos parâmetros na ordem que estão na chamada. A chamada da função deve incluir um valor para cada parâmetro (exceção: parâmetros com valores default) Uma função pode ter 0, 1 ou mais return. Uma função pode chamar outra função. def f(x,y): return x-y def g(x,y): return f(x+y,6) a=3 b=4 c=g(a,b) #c:1 37

Observações O que acontece??? def f(x,y): return x-y A declaração da função deve ser feita antes da sua chamada para que o Python reconheça o seu nome. a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 38

Funções: definição e uso (1/14) O que acontece??? def f(x,y): return x-y A função só é executada se for ativada em algum comando a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 39

Funções: definição e uso (2/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 b int 4 40

Funções: definição e uso (3/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) A chamada da função deve incluir um valor para cada parâmetro #c:1 a int d=f(a,b) #d:-1 3 A função só é executada se for ativada em algum comando b As funções são ativadas pelo nome int 4 41

Funções: definição e uso (4/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 Os valores são recebidos e associados aos parâmetros na ordem que estão na chamada. 42

Funções: definição e uso (5/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 43

Funções: definição e uso (6/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) 1 #c:1 #d:-1 44

Funções: definição e uso (7/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 45

Funções: definição e uso (8/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 46

Funções: definição e uso (9/14) O que acontece??? def f(x,y): return x-y x y int int 3 4 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 Os valores são recebidos e associados aos parâmetros na ordem que estão na chamada. 47

Funções: definição e uso (10/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 48

Funções: definição e uso (11/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) -1 #c:1 #d:-1 49

Funções: definição e uso (12/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 d int -1 50

Funções: definição e uso (13/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) e=x-3 #c:1 #d:-1 51

Funções: definição e uso (14/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) e=x-3 #c:1 #d:-1 e=x-4 NameError: name 'x' is not defined Os parâmetros e demais variáveis definidas dentro da função são locais a ela, isto é, só existem onde foram definidas As variáveis locais são descartadas quando a função é finalizada 52

Mãos na massa: string URL Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço (URL) do site da disciplina. Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 53

URL: desenvolvendo a solução (1/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string 54

URL: desenvolvendo a solução (2/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? 55

URL: desenvolvendo a solução (3/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) 56

URL: desenvolvendo a solução (4/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) III. Como ela realiza sua tarefa? 57

URL: desenvolvendo a solução (5/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) III. Como ela realiza sua tarefa? 1. Separa o código do departamento 2. monta o endereço do site usando o código 58

URL: uma possível solução def nomesite(codigodadisciplina): """ Nome do site dada disciplina""" dep = codigodadisciplina [:3] site = 'www. \ + dep\ + '.puc-rio.br/~ \ + codigodadisciplina return site 59

Escopo dos nomes (1/3) import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo O escopo define a visibilidade de nomes em blocos de códigos (módulo,função,comando): Espaço de nomes (name space) - nomes acessíveis em um ponto do programa. Um programa começa no escopo do módulo, global (escopo1) e cada função / bloco acrescenta um escopo próprio local (escopo 2) 60

Escopo dos nomes (2/3) import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo Variável criada fora de um bloco é visível em qualquer lugar Variável criada dentro de um bloco, só existe se esse bloco for executado Quando um nome é acessado, todos os escopos são consultados, do mais interno para o mais externo variáveis globais podem ser ofuscadas por variáveis locais 61

Escopo dos nomes (3/3) Variáveis Locais a foi 'ofuscada', pois foi (re)definida na função Variáveis Globais import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo Evitar o uso de variáveis globais!!!! Escopo 2 Função f Nomes: Variáveis locais: a,x,y Variáveis Globais: b,c,d Instruções executadas só quando ativadas em um bloco de código Escopo 1 Módulo Nomes: função f Variáveis: a,b,c,d Instruções imediatamente executadas pelo interpretador 62

Blocos e variáveis: cuidado!! Variável criada dentro de um bloco só existe se esse bloco for executado: nome ='' for letra in nome k=letra*2 nome=nome+k 63

Bloco não roda, não cria variável! Variável criada dentro de um bloco só existe se esse bloco for executado: nome ='' for letra in nome k=letra*2 nome=nome+k Nome está vazio bloco do for não é executado a variável k não foi criada!! nome=nome+k NameError: name 'k' is not defined 64

Recursividade em funções Uma função pode chamar a si própria, isso é chamado de função recursiva. Cada vez que a função é chamada, uma nova instância de suas variáveis e parâmetros é criada. 65

Módulos Um módulo basicamente é um arquivo contendo funções, variáveis e constantes, com extensão.py Python fornece uma biblioteca padrão com inúmeros módulos O programador pode criar seus próprios módulos, salvando seus arquivos com extensão.py. Cuidado: para importar um módulo do programador, este deve estar salvo na mesma pasta do módulo atual ou em um caminho conhecido do Python... Um módulo pode ser importado por outro módulo para que este possa fazer uso da suas funcionalidades pelo comando import 66

Importando módulos import módulox: insere uma referência ao módulox no namespace do módulo atual. Todos os nomes definidos no módulox podem ser acessados. módulox.função(...) ativa uma função do módulox from módulox import * : Todos as definições do módulox são inseridas diretamente no namespace atual. Basta o nome da função definida no módulox para ativá-la from módulox import f1, f2, f3 : apenas as funções f1, f2 e f3 do módulox são inseridas no namespace do módulo atual. Útil em módulos com muitas funções: o Evita conflito de nomes com o namespace atual o Reduz tempo de carga do módulo 67

1. a) construa uma função que recebe as coordenadas de dois pontos e retorna a distância euclidiana entre eles. A fórmula da distância euclidiana é: d² = (Xa-Xb)² + (Ya-Yb)². b) construa uma função que recebe as coordenadas de três pontos quaisquer do plano que formam um triângulo (ou seja, as coordenadas x e y do ponto A, do ponto B e do ponto C) e retorne o perímetro deste triângulo calculado por: d(a,b) + d(a,c) + d(b,c) Exercícios (1/5) Exemplo: perimetro(-100,100,140,0,-290,290) 535.6643996204651 c) crie a função desenhatri, que recebe um tartaruga e os 3 pontos, desenha o triângulo formado pelos pontos com o uso do módulo turtle e escreve na coordenada 0,0 o valor do perímetro. Veja as funções goto() e write() do módulo turtle Observações: As funções distância, perimetro e desenhatri, devem estar no módulo functriangulo.py. Outro módulo chamado de progtri.py deve importar o módulo functriangulo, o módulo turtle, criar 3 pontos, a tartaruga e chamar a função desenhatri(...) 68

Exercícios (2/5) 2. a) construa uma função que recebe o raio de um círculo e retorna sua área b) construa uma função que recebe um raio, calcule a área de cada alvo conforme esquema abaixo e retorne um string com: ' Área verde:... Área amarela:... Área preta:... Raio do círculo externo O círculo externo, de cor verde, tem raio igual ao recebido, O raio do intermediário, de cor amarela, é 2/3 do raio do círculo externo o raio do central, de cor preta, é 1/3 do raio do círculo externo 69

Exercícios (3/5) 3. Dizem que para saber o seu número da sorte basta você seguir os seguintes passos: Multiplique sua idade por 4. Some 8. Multiplique o resultado por 60. Divida por 240. Some 22. Subtraia a sua idade. PARABENS! Esse é seu número da sorte. Escreva um função que receba o nome e a idade de uma pessoa e retorne a frase: "Parabéns fulano! seu número da sorte é x!", onde fulano é o nome da pessoa, e x é o número da sorte encontrado. Faça uma função separada para calcular o número da sorte. 70

Exercícios (4/5) 4. a) Faça uma função sopaletras, que recebe uma string e retorna esta string rotacionada para a esquerda (a 1ª letra vira última). Exemplo: >>> sopaletras ('abcdef') bcdefa b) DESAFIO: crie uma função que recebe uma string e constrói todas suas rotações. Exemplo: >>> sopaletras ('abcdef') ' bcdefa cdefab defabc efabcd fabcde' 5. Faça um função que receba um verbo regular terminado em er e retorne uma string com sua conjugação no presente do indicativo. Exemplo: >>> conjugar('absorver ) 'eu absorvo tu absorves ele absorve nós absorvemos vós absorveis eles absorvem' 71

Exercícios (5/5) 6. a) Faça uma função que receba uma string e retorna uma string apenas com os caracteres de índices pares b) Faça um função que receba uma string e retorne uma string com os caracteres da string recebida ao contrário c) Faça uma função que recebe o nome de uma pessoa e a data de nascimento ('dd/mm/aaaa' ) e crie e retorne sua senha de acordo com a seguintes regra: caracteres dos índices pares + dia do nascimento + caracteres dos índices pares invertidos Exemplo: senha('patinhas', '22/12/1900') 'Ptna22antP' 72