Python aplicado ao ensino de física - Prof. João Cláudio Nunes Carvalho

Prof. João Cláudio Nunes Carvalho

Python

Python é uma linguagem de programação que tem ganho muita popularidade no ensino e na investigação, por ser fácil de aprender e devido à sua facilidade de extensão que faz com que existam muitos módulos disponíveis.
Python, é software livre, que pode ser instalado e utilizado em todos os principais sistemas operativos. Nas distribuições do sistema GNU/Linux Python costuma vir já instalado, porque muitos outros programas dependem dele.

Idle

Idle é uma interface gráfica para Python. Idle faz parte integral de Python e pode já estar instalada junto com o Python, mas em alguns sistemas vem num pacote separado. Por exemplo, em Ubuntu é necessário instalar o pacote adicionalidle.
Idle pode ser iniciado desde um menu ou escrevendo o comando "idle" numa consola. O programa Idle cria uma janela chamada Python Shell(figura 1.), onde podem ser escritos comandos do Python de forma interativa. Os três caracteres >>> indicam o ponto na janela onde deve ser escrito o próximo comando Python.
Idle
Figura 1.: Interface do programa Idle.
O menu "File" permite abrir um programa já escrito, em outra janela, e executá-lo. A janela Python Shell continuará aberta e nela serão apresentadas as mensagens de erro e tudo o que seja enviado pelo programa para a saída padrão.



Python como calculadora

Uma primeira aplicação do Python é como calculadora para fazer algumas contas. Por exemplo, para calcular o tempo que demora a luz do Sol a chegar à Terra, uma pesquisa na Internet mostra que a distância entre da Terra ao Sol, é 1.496×1011 m e a velocidade da luz que é 3.0×108m/s. Como tal, o tempo em segundos que a luz demora em chegar do Sol até à Terra é o quociente:
E dividido por 60, dará o tempo em minutos. A conta pode ser feita na Shell do Python assim:
>>> 1.146e11/3e8/60
6.366666666666666
Podem usar-se variáveis para guardar resultados intermédios; por exemplo:
>>> tsegundos = 1.146e11/3e8
>>> tminutos = tsegundos/60
o valor que é guardado na variável não é mostrado no ecrã, mas pode ser mostrado dando o nome da variável:
>>> tminutos
6.366666666666666
As funções matemáticas habituais (logaritmo, seno, etc) não estão definidas previamente, mas podem ser incorporadas importando o módulo de funções matemáticas. Uma forma de importar todas as funções e símbolos existentes num módulo, neste caso o módulo com nome math, é a seguinte:
>>> from math import *
Uma vez importado o módulo matemático math, ficam disponíveis dois símbolos predefinidos, o valor de  e a constante de Euler, e as 12 funções apresentadas na tabela 1.1
Tabela 1.1: Símbolos e funções do módulo math.
Símbolo ou função   Descrição
piNúmero 
eNúmero de Euler
fabs(x)Valor absoluto de x
sqrt(x)Raiz quadrada de x
log(x)Logaritmo natural de x
exp(x)Função exponencial de x
log10(x)Logaritmo em base 10 de x
sin(x)Seno de x (x em radianos)
cos(x)Cosseno de x (x em radianos)
tan(x)Tangente de x (x em radianos)
asin(x)Seno inverso de x (em radianos)
acos(x)Cosseno inverso de x (em radianos)
atan(x)Tangente inversa de x (em radianos)
floor(x)Elimina casas decimais de x, ficando inteiro

Blocos iterativos e condicionais

Como em qualquer linguagem de programação, Python inclui vários tipos de blocos iterativos e condicionais. Uma característica peculiar do Python, diferente de outras linguagens de programação, é que não são usados símbolos especiais para indicar o fim de uma linha ou de um bloco. Para indicar quais os comandos que fazem parte de um bloco basta com que esse bloco esteja alinhado de forma consistente: Todos os comandos num mesmo bloco devem ter o mesmo número de espaços em branco no início e um bloco interno deverá ter mais espaços do que o bloco externo. Em vez de espaços podem usar-se caracteres TAB, mas convém usar apenas um ou o outro, sem os misturar.
Idle ajuda na tarefa de alinhar os blocos. Por exemplo, para apresentar no ecrã uma lista com os cubos dos 5 primeiros números naturais, as seguintes duas linhas de código são suficientes:
>>> for i in [1, 2, 3, 4, 5]:
 i**3

1
8
27
64
125
o símbolo chave são os dois pontos; após escrever os dois pontos e clicar em &quo;enter", Idle já não escreve os caracteres >>> no início da linha, porque está a espera de um bloco. A segunda linha é alinhada automaticamente pelo Idle. Após termos escrito a segunda linha, foi necessário clicar duas vezes seguidas em &quo;enter" para que o bloco seja finalizado e executado e o ciclo iterativo seja executado.
Para obter uma lista unicamente dos cubos dos primeiros 40 naturais, que comecem pelo algarismo 2, acrescenta-se um bloco condicional ifdeterminar quais dos números ao cubo começam por 2:
>>> for n in range(1, 41):
 cubo = n**3
 ordem = floor(log10(cubo))
 if floor(cubo/10**ordem) == 2:
  print(n, "ao cubo é", cubo)
  
3 ao cubo é 27
6 ao cubo é 216
13 ao cubo é 2197
14 ao cubo é 2744
28 ao cubo é 21952
29 ao cubo é 24389
30 ao cubo é 27000
31 ao cubo é 29791
Neste caso, em vez de usar uma lista (entre parêntesis retos) com os números de 1 até 40, usou-se a função range(1,41), que produz essa mesma lista. Observe-se que Idle identifica as funções próprias de Python a roxo, mas outras funções definidas por módulos adicionais, por exemplo floor, não é identificada como função própria de Python.
Usou-se também a função print para imprimir variáveis e texto no ecrã (o conjunto de caracteres alfanuméricos, entre aspas, é sublinhado a verde pelo Idle).
Outros operadores para comparar números são <><=>= e != (diferente). Um bloco if pode ter um sub-bloco else, que pode incluir outro bloco if, abreviado como elif. Por exemplo:
>>> n = 2
>>> if 0 < n < 3:
 print("entre 0 e 3")
elif n >= 3:
 print("maior ou igual a 3")
else:
 print("menor ou igual a zero")

entre 0 e 3

Funções

Para definir funções, por exemplo a função floor definida pelo módulo math, escreve-se o procedimento dentro de um bloco que começa com a palavra chave def, seguida pelo nome da função e a lista de variáveis de entrada, entre parêntesis.
Por exemplo, uma função rad que converta um ângulo em graus para radianos, pode ser definida assim:
>>> def rad(x):
 return pi*x/180
a seguir, a função rad poder usar-se para calcular funções trigonométricas de ângulos em graus. Por exemplo, o seno de 30°:
>>> sin(rad(30))
0.49999999999999994
Uma função em Python pode chamar-se a si própria de forma recursiva.

Comentários

Postagens mais visitadas deste blog

Unsupervised Machine Learning: What is, Algorithms, Example

Encontro de Pesquisa em Ensino de Física (EPEF)