Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2006/2007 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1 Objectivos Objectivos que o aluno é suposto atingir com esta ficha: - Ser capaz de lançar o intérprete Python; - Utilizar sem dificuldade os comandos de edição de linha; - Executar algumas instruções Python interactivamente; - Introduzir, executar e modificar scripts Python. 1.2 O Intérprete da Linguagem Python A linguagem Python é uma linguagem interpretada. Isso significa que uma sequência de instruções sob a forma de um script (ou seja um programa), ou uma instrução isolada, é traduzida para instruções de mais baixo nível (linguagem máquina) no momento de execução, em vez de ser previamente traduzida para um programa em linguagem máquina, como sucede nas linguagens compiladas. O intérprete que vai ser utilizado nas aulas práticas desta disciplina, permite não só a execução de scripts, como a execução de instruções isoladas, interactivamente. Como primeira tarefa, pretende-se que o aluno lance o intérprete Python, procurando para tal, no menu de Iniciar Programas a pasta do Python. Nessa pasta deve encontrar algo como o que se ilustra de seguida Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 1 de 7 Clique em IDLE (Python GUI) e verá surgir uma janela como a que se mostra; Repare no símbolo >>> . Este símbolo indica o local onde devem ser introduzidas as instruções Python que serão interpretadas assim que se pressione a tecla <Enter>. Por vezes, esse símbolo é designado por prompt. Por exemplo, escrevendo cidade=”Coimbra” <Enter>1 a seguir ao prompt, o intérprete vai criar internamente um objecto contendo a cadeia de caracteres “Coimbra”, atribuindo-lhe de seguida o nome cidade. Referências posteriores a esta cadeia de caracteres terão de ser feitas através deste nome, cidade. Se por exemplo pretender visualizar na consola o conteúdo do objecto a que se refere o nome cidade, poderá fazê-lo executando a instrução print cidade <Enter>. Esta sequência de duas instruções está ilustrada na figura seguinte, 1 Quando se apresenta <Enter> pretende-se indicar que se deve premir a tecla Enter Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 2 de 7 Como se pode verificar, o intérprete utiliza várias cores para facilitar a identificação das várias palavras introduzidas e/ou apresentadas. 1.3 Scripts O tipo de utilização do intérprete apresentado na secção anterior não é muito adequado à execução de listas longas de instruções, pois nessa situação teríamos de as introduzir uma a uma, e se cometêssemos um só erro pelo meio, seríamos obrigados a recomeçar a tarefa desde o início! O mesmo problema se coloca, no caso de se pretender executar várias vezes a mesma sequência de instruções. Quando se pretende executar muitas instruções seguidas sequencialmente (isto é um programa), deve-se criar um ficheiro contendo essas mesmas instruções a executar. Este ficheiro em Python designa-se por script e pode ser invocado a partir da linha de comando do intérprete. No caso concreto do ambiente ao nosso dispor (IDLE), pode-se criar um script através do menu File do intérprete, escolhendo de seguida a opção New Window. Surgirá uma janela de edição onde as instruções Python que formam o programa devem ser introduzidas. No caso anterior, e após introduzir (dactilografar) as instruções em causa, temos que: Agora salve o script, indo ao menu File e clicando em Save (guarde o script num local fácil de encontrar, por exemplo no Desktop/Ambiente de Trabalho). Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 3 de 7 De seguida, pode executar este script, indo ao menu Run e escolhendo Run Module. Qual é o resultado? Reparou que a primeira linha do script começa por #? Trata-se de uma linha de comentário, destinada a ser lida por pessoas e que não é executada pelo intérprete. Os comentários são muito úteis para incluir informação adicional que permita a alguém que esteja a analisar o programa (por vezes o próprio criador do programa, muito tempo depois de o ter concebido), perceber melhor o funcionamento de certas partes menos claras do código. Vamos agora alterar o nosso programa, introduzindo algumas instruções mais interessantes, por exemplo, leitura do teclado. Usando o mesmo editor, altere o script para obter o seguinte: # # Autor : Luis Cruz # Data : 24 de Setembro de 2004 # # Observações : O meu programa esta agora muito maior! # cidade="Coimbra" # Cria uma cadeia de caracteres nome=raw_input("Qual o seu nome ? ") # raw_input le uma cadeia de caracteres print "Olá "+nome+" de "+cidade # Imprime uma saudação personalizada idade=input("Qual a sua idade (em anos)? ") # input le um inteiro print "O ",nome," tem ",idade," anos,", #Imprime mensagem concatenada com nome e idade print "ou aproximadamente ",idade*12," meses." # Apresenta idade em meses Examine cuidadosamente o programa, e execute-o. Verifique se as instruções fazem o que esperava. Se não for esse o caso, peça ajuda ao professor. 1.4 Tipos de Dados No programa anterior foram usados dois tipos diferentes de dados, cadeias de caracteres e inteiros. As cadeias de caracteres (ou strings em Inglês), servem para representar palavras, ou pedaços de texto ou ainda qualquer informação que seja uma sequência de caracteres. No exemplo dado, mostrou-se também uma operação muito comum que consiste em criar uma cadeia de caracteres por junção de outras cadeias de caracteres, operação que em geral se designa por concatenação de cadeias de caracteres. Um exemplo é a construção de comando print "Olá "+nome+" de "+cidade, em que a cadeia “Olá” é concatenada com o conteúdo de nome com a cadeia “ de ” e também com a cadeia cujo nome é cidade (todos estes tipos de dados são cadeias de caracteres). Outra Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 4 de 7 operação executada é a leitura de uma cadeia de caracteres, nome=raw_input("Qual o seu nome ? ") Os dados de tipo inteiro servem como é óbvio para representar informação numérica inteira e sobre eles podemos efectuar as operações aritméticas usuais. No programa mostra-se a multiplicação de um literal numérico pelo conteúdo de uma variável inteira (em idade*12). Também se mostra como se pode pedir ao utilizador para introduzir um inteiro colocando o valor introduzido em memória sob um determinado nome: idade=input("Qual a sua idade (em anos)? ") A linguagem Python suporta outros tipos de dados, que iremos estudar em aulas futuras. Para já, o aluno fica consciente de que também pode utilizar números reais e complexos, sendo ainda suportadas as operações mais vulgares associadas a esses tipos de números. Um número é considerado real sempre que nele figura um ponto decimal (por exemplo 3.1415) ou se este for introduzido usando a representação mantissa e expoente (por exemplo 31415e-4). Experimente introduzir a instrução >>> pi=3.1415 que criará um real com valor 3.1415 com nome pi. De seguida, escreva apenas >>> pi <Enter> O resultado é o esperado? Verifique o tipo de objecto, executando >>> type(pi) O intérprete indica que se trata de um float , isto é, um número em vírgula flutuante, que é um dos formatos utilizados para representar números reais. Introduza agora as instruções >>> raio=1.5 >>> perimetro=2*pi*raio >>> perimetro o valor apresentado é obviamente o perímetro de um círculo de raio 1.5 Poderia ter obtido o mesmo valor fazendo simplesmente >>> 2*3.1415*1.5 Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 5 de 7 Os números complexos são introduzidos <parte_real>+<parte_imaginária> j, tal como em usando o formato >>> complexo=1+1j sendo também possível introduzir um número complexo usando a função complex(), tal como se ilustra >>> complexo_2=complex(2,2) Entre as operações suportadas pelos números complexos, contam-se a obtenção da sua parte real e imaginária, como se exemplifica a seguir >>> complexo.real e >>> complexo.imag Termina aqui esta breve introdução ao Python. Nas próximas aulas há mais. I´ll be back ☺ 1.5 Exercícios sugeridos 1. Altere o programa anterior para que este peça ao utilizador além do nome (tal com está feito), também o dia, o mês e o ano de nascimento (tenha em especial atenção as diferenças entre input e raw_input). Grave o novo programa sob o nome de prob_1_1.py 2. Tomando por base o programa apresentado nos parágrafos anteriores, crie um programa que leia dois valores numéricos introduzidos pelo utilizador e imprima a sua soma, diferença, produto e quociente, sendo cada operação indicada por cima do resultado. Teste-o com (pelo menos) os pares de valores 4 e 2, 5 e 2, 2 e 3 e ainda 2 e 0. Grave este programa sob o nome de prob_1_2.py (Nota: Os operadores necessários são +,-,* e /). 3. Efectue os cálculos do ponto anterior interactivamente. 4. Divida 5 por 2. Repita o cálculo dividindo 5 por 2.0. Explique a diferença de resultados. Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 6 de 7 5. Qual o resultado da execução do seguinte comando (tente prevê-lo antes de o executar)? (Nota: O operador usado no cálculo de um expoente é definido por dois asteriscos **). >>> print -3 * 5 + 4 ** 2 6. Introduza um número complexo 3+4j e calcule o quadrado do seu módulo. (Nota: a função abs() calcula o valor absoluto de um número. Escreva no prompt >>> help(abs) para pedir ajuda sobre o significado e o modo de utilizar a função abs()). 7. Escreva um programa que peça os comprimentos dos catetos de um triângulo rectângulo e devolva o valor da hipotenusa. (Nota: Terá de incluir no início do script a instrução from math import * para poder chamar a função sqrt(<valor_cuja_raiz_pretende>)). Computadores e Programação – Engª Biomédica 2006/07 – Ficha 1 Página 7 de 7