Computadores e Programação Engenharia Biomédica Luís Cruz - 2006 1 Docentes Teórica: Luís Cruz Prática: João Sá Marta Luís Cruz - 2006 2 1
Regras de Avaliação Componente Teórica + Componente Prática Componente Teórica 14 valores Avaliada por exame e exame de recurso Mínimo : 4 valores Componente Prática 6 valores resultantes da avaliação contínua efectuada durante as aulas laboratoriais Luís Cruz - 2006 3 Regras de Avaliação Informação adicional A admissão a exame por parte de alunos em regime normal (i.e. não são trabalhadores estudantes) depende da frequência de um mínimo de 80% das aulas práticas, Caso o desejem, os alunos trabalhadores-estudantes podem combinar com o docente da prática uma forma alternativa de serem avaliados na vertente prática, A nota da prática (0-6 valores) é válida para o exame, exame de recurso e eventuais exames de época especial, As provas teóricas são realizadas com consulta limitada (bibliografia), fichas (limpas) e formulário com até 4 páginas (sem programas resolvidos). Luís Cruz - 2006 4 2
Programa Programa Abreviado Linguagem de programação Python Algoritmos Aplicações Luís Cruz - 2006 5 Apresentação e Programa Programa Detalhado Linguagem de Programação Python Tipos básicos de dados Estruturas de controlo de fluxo Estruturas de dados avançadas Funções e Módulos Algoritmos Aplicações Luís Cruz - 2006 6 3
Bibliografia Python - Curso Completo", Pedro Morais, José Nuno Pires, Editora FCA, ISBN 9727222706 "Practical Python", Magnus Lie Hetland, APress, ISBN 1590590066 An Introduction to Python, Guido van Rossum disponível em www.python.org Luís Cruz - 2006 7 Ambiente de Programação em Python Ambiente de desenvolvimento integrado IDLE (para Windows) pode ser descarregado em www.python.org/idle Ao ser lançado (após instalação), surge uma janela análoga à seguinte: Luís Cruz - 2006 8 4
Programação em Python Duas formas de executar instruções Python... Interactivamente: A instrução a executar é introduzida em frente ao prompt e após <Enter> ela é interpretada Exemplo : >>> dia= Quarta-feira >>> print dia Quarta-feira Por execução de Scripts: Cria-se ficheiro com as instruções a executar (script) e invoca-se intérprete para executar o script. Luís Cruz - 2006 9 Programação em Python No caso anterior, se pretendêssemos um script funcionalmente igual à sequência de instruções, o conteúdo do ficheiro programa (script) seria: dia= Quarta-feira print dia que ao ser executado produziria Quarta-feira Luís Cruz - 2006 10 5
Programação em Python Um script mais complexo... # # Autor : Luis Cruz Comentário # Data : 18 Setembro 2003 Criação de objecto Coimbra E atribuição de nome cidade # # cidade="coimbra" # Cria uma cadeia de caracteres nome=raw_input("qual o seu nome? ") # Le uma cadeia de caracteres print "Olá "+nome+" de "+cidade # Imprime uma saudação personalizada Instrução de saída. Escreve no écran. Instrução de entrada de dados. Espera entrada via teclado de uma cadeira de caracteres, cria objecto com conteúdo lido e atribui-lhe nome nome Luís Cruz - 2006 11 Objectos e Nomes Que acontece quando o intérprete encontra a instrução cidade= Coimbra? 1.É criado um objecto num determinado local da memória, que consiste na sequência de valores ASCII relativos aos caracteres C,o,i,m,b,r,a 2.É criado um identificador (um nome) cidade que passa a referir o objecto criado em 1. Daqui para a frente sempre que se faça referência a cidade estaremos a referir-nos ao objecto criado em 1. Luís Cruz - 2006 12 6
Nomes - Regras 1. O primeiro caracter tem de ser uma letra ou underscore (_), podendo os seguintes ser quaisquer caracteres alfanuméricos. Ou seja: dois_pontos, _pontos são nomes válidos mas, 2_pontos não é um nome válido 2. Notar que Dois_pontos e dois_pontos são nomes diferentes (case sensitive) 3. Há palavras reservadas que não podem ser utilizadas como nomes: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while Luís Cruz - 2006 13 Dados Tipos Suportados Básicos Números inteiros Números em vírgula flutuante Números complexos Cadeias de caracteres Luís Cruz - 2006 14 7
Inteiros Permitem representar números inteiros com os seguintes limites : Normal (32 bits) Valores de -2 31 =-2147483648 a 2 31-1= 2147483647 Longos Gama de valores sem limite Luís Cruz - 2006 15 Inteiros Representação de literais inteiros : são permitidos dígitos decimais, hexadecimais ou octais. Exemplos : >>> 123 # Literal decimal 123 >>> 0xBABA # Literal hexadecimal começa por 0x ou 0X (zero X) 47802 >>> 077 # Literal Octal; começa por 0 (zero) 63 Python converteu valor para decimal antes de imprimir >>> 078 File "<stdin>", line 1 078 } Erro! ^ SyntaxError: invalid token Python converteu valor para decimal antes de imprimir Luís Cruz - 2006 16 8
Inteiros Função type() devolve tipo de dado. No caso de inteiros... >>> type(1) <type int > >>> a=2 >>> type(a) <type int > >>> type(0xff) <type int > >>> type( 0xff ) #? <type string > Porquê? Luís Cruz - 2006 17 Operações sobre Inteiros Os inteiros suportam as operações aritméticas usuais... Adição (+) e Subtracção (-) >>> 3+2 5 Multiplicação (*) >>> 3*2 6 Divisão (/) >>> 6/2 3 >>> 5/2 2 >>> -1/2-1 Divisão de inteiros Resultado é quociente Atenção! Luís Cruz - 2006 18 9
Operações sobre Inteiros e outras... Potenciação (**) >>> 3**2 # Três ao quadrado 9 Resto de Divisão (%) >>> 3%2 1 Divisão com Quociente e Resto >>> divmod(5,2) (2,1) >>> divmod(-1,2) (-1,1) Luís Cruz - 2006 19 Vírgula Flutuante Permitem representar reais de acordo com a norma IEEE 754, em precisão dupla (64 bits) que suporta valores com magnitude de 2.2e-308 a 1.8e308. Os literais em vírgula flutuante seguem o formato +/- {mmm}e{exp}, +/-{mmm}e{exp} ou simplesmente ddd.ddd Exemplos: >>> 1.2345e4 12345.0 >>> 1e-2 0.01 >>> 1.5 1.5 Luís Cruz - 2006 20 10
Vírgula Flutuante A função type() devolve neste caso <type float >. Exemplo: >>> pi_apr=3.1415926 >>> type(pi_apr) <type 'float'> >>> type(1.0) <type 'float'> As operações suportadas pelos número em vírgula flutuante são as usuais; adição, subtracção, multiplicação e divisão. No entanto... >>> 5.0/2.0 2.5 Divisão Real Luís Cruz - 2006 21 Números Complexos Números complexos a+jb introduzidos usando a forma a+bj, a+bj ou complex(a,b). Exemplos: >>> 1+2j (1+2j) >>> complexo=3+4j >>> print complexo (3+4j) >>> complexo_2=complex(-1,1) >>> print complexo_2 (-1+1j) >>> complexo_3=complex(-1,0) >>> print complexo_3 (-1+0j) Parte real e parte imaginária representadas com 64 bits de precisão. Luís Cruz - 2006 22 11
Números Complexos Para extrair a parte real ou imaginária de um complexo usamse os métodos <nome_do_complexo>.real e <nome_do_complexo>.imag Exemplos: >>> compl=3+4j >>> compl.real 3.0 >>> compl.imag 4.0 >>>compl.real**2+compl.imag**2 # Quadrado do módulo 25.0 Luís Cruz - 2006 23 Números Complexos O módulo (valor absoluto) obtém-se fazendo abs(<complexo>), e claro que pode somar (+), subtrair (-), multiplicar (*) e dividir (/) complexos. Exemplos: >>> complexo=3+4j >>> abs(complexo) # Modulo 5.0 >>> complexo*(1+1j) (-1+7j) >>> complexo+(2+3j) (5+7j) >>> complexo/(0+2j) (2-1.5j) Luís Cruz - 2006 24 12
Cadeias de Caracteres (Strings) São (em geral) pequenas sequências de caracteres alfanuméricos, que representam pedaços de texto. Exemplos : >>> cadeia_longa= Uma cadeia de 27 caracteres >>> cadeia_curta="outra so com 15 >>> cadeia_vazia="" >>> print cadeia_vazia >>> cadeia_multi_linha="""esta cadeia comeca na linha 1 continua na linha 2 e depois da linha 3 termina na linha 4""" >>> print cadeia_multi_linha Esta cadeia comeca na linha 1 continua na linha 2 e depois da linha 3 termina na linha 4 >>> Luís Cruz - 2006 25 Cadeias de Caracteres (Strings) Os marcadores de início e fim da cadeia podem ser aspas ( ) ou pelicas ( ). Quando pretendemos utilizar aspas (ou pelicas) como um dos caracteres da cadeia temos de o fazer usando uma sequência de escape que consiste na barra (\) seguida da aspa (ou pelica). Exemplos : >>> cadeia= Ele disse \ Terminei\ antes do fim >>> print cadeia Ele disse Terminei" antes do fim >>> cadeia_pel= Cadeia com pelica (\ ) dentro >>> print cadeia_pel Cadeia com pelica (') dentro Luís Cruz - 2006 26 13
Cadeias de Caracteres (Strings) Concatenação Podem juntar-se várias cadeias de caracteres para formar uma cadeia maior: operação de concatenação. Exemplos: >>> titulo= Dr. >>> nome= Egas >>> sobrenome= Moniz >>> completo=titulo+nome+sobrenome >>> print completo Dr.EgasMoniz Oops... Faltam os espaços! >>> completo=titulo+ +nome+ +sobrenome >>> print completo Dr. Egas Moniz Luís Cruz - 2006 27 Cadeias de Caracteres (Strings) Fatiagem É possível retirar (ou aceder) a uma parte da cadeia de caracteres: operação de fatiagem (slicing em Inglês). A expressão <nome_da_cadeia>[primeiro:ultimo+1] designa a secção desde o caracter na posição primeiro até ao caracter na posição ultimo. O primeiro caracter tem índice 0. Exemplos: >>> cadeia= abcdef >>> print cadeia[0:3] abc >>> print cadeia[3:6]+cadeia[0:3] defabc >>> curta=cadeia[1:4] >>> print curta Luís Cruz - 2006 bcd 28 14
Cadeias de Caracteres (Strings) Fatiagem Para determinar o número de caracteres da cadeia usa-se a função len(). Exemplo: >>> cadeia= abcdef >>> len(cadeia) 6 Há ainda formas particulares da especificação das fatias: <nome_cadeia>[posicao] com posicao designa o caracter que se encontra na posicao posicao a contar do início (a partir de 0). Se posicao for negativo, designa o caracter que se encontra na posicao posicao a contar do fim, <nome_cadeia>[:ultimo+1] designa todos os elementos desde o início até ao de índice ultimo, <nome_cadeia>[primeiro:] designa todos os elementos desde o de índice primeiro até ao fim da cadeia, Luís Cruz - 2006 29 Cadeias de Caracteres (Strings) Fatiagem Exemplos: >>> cadeia= 0123456789 >>> len(cadeia) 10 >>> print cadeia[0] 0 >>> print cadeia[:5] 01234 >>> print cadeia[5:len(cadeia)] 56789 >>> print cadeia[-1] 9 >>> print cadeia[-5:-1] 5678 >>> print cadeia[-5:] 56789 Luís Cruz - 2006 30 15