Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 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 é o caso 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 2003/04 – Ficha 1 Página 1 de 6 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 carregue no <Enter>. Por vezes designa-se esse símbolo por prompt. Por exemplo, se escrevermos cidade=”Coimbra” <Enter>1 em frente ao prompt, o intérprete vai criar internamente um objecto contendo a cadeia de caracteres “Coimbra”, dando-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 poderei 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 2003/04 – Ficha 1 Página 2 de 6 Como 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 que foi 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 teríamos que recomeçar a tarefa desde o início ! O mesmo problema se coloca se pretendermos executar várias vezes a mesma sequência de instruções. O que há a fazer quando temos muitas instruções seguidas que queremos executar sequencialmente (isto é um programa), é criar um ficheiro contendo as 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 dispôr (IDLE), podemos criar um script indo ao menu File do intérprete, escolhendo New Window. Surgirá uma janela de edição em que podemos introduzir as instruções Python constituintes do programa. No caso que estávamos a ver, e após introduzir (dactilografar) as instruções em causa, fica assim: 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). 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 Computadores e Programação – Engª Biomédica 2003/04 – Ficha 1 Página 3 de 6 informação adicional que permita a alguém que esteja a analisar o programa (por vezes o próprio criador do programa), perceber melhor o funcionamento de certas partes menos claras do script. 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 : 18 Setembro 2003 # # Observações : O meu programa esta agora muito maior ! # 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 idade=input("Qual a sua idade (em anos)? ") # Le um inteiro print "O ",nome," tem ",idade," anos,", # Imprime mensagem com 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 em 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 . Outra 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á fica a saber 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. Computadores e Programação – Engª Biomédica 2003/04 – Ficha 1 Página 4 de 6 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 do objecto do 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 Os números complexos são introduzidos usando o formato <parte_real>+<parte_imaginária>j tal como em >>> 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 Computadores e Programação – Engª Biomédica 2003/04 – Ficha 1 Página 5 de 6 e >>> complexo.imag Termina aqui esta breve introdução ao Python. Nas próximas aulas há mais. I´ll be back J 1.5. Exercícios sugeridos 1. 2. 3. 4. 5. 6. 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. Grave o novo programa sob o nome de prob_1_1.py Tomando por base o programa apresentado nos parágrafos anteriores, crie um programa que leia dois valores numéricos e imprima a sua soma, diferença, produto e quociente. Teste-o com (pelo menos) os pares de valores 4 e 2, 5 e 2, 2 e 3 e ainda 2 e 0. Nota: Os operadores necessários são +,-,* e / Efectue os cálculos do ponto anterior interactivamente. Divida 5 por 2 . Repita o cálculo dividindo 5 por 2.0. Explique a diferença. Introduza um número complexo 3+4j e calcule o quadrado do seu módulo. 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 2003/04 – Ficha 1 Página 6 de 6