Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
M ´etodos Computacionais em F´ısica I
Jos ´e Helder Lopes
Instituto de F´ısica
Universidade Federal do Rio de Janeiro
Aula Remota Semestre Especial 2020-2
baseado nas aulas remotas da Profa. Sandra Amato para o primeiro per´ıodo especial (PLE1) de 2020
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
M ´etodos Computacionais em F´ısica I
Curso Remoto
Ü
Professor: Jos ´e Helder ([email protected])
Ü
Sala: A-319-24
Ü
Hor ´ario de discuss ˜
oes: Terc¸as (IFA) `as 14h
Ü
Aplicativo:
Zoom
Ü
Site:http://www.if.ufrj.br/∼helder/MetComp
Cont ´em as informac¸ ˜oes sobre o curso, bibliografia, slides de aula,
exerc´ıcios e
cronograma
Ü
Monitores:
m
Gabriel Teixeira – [email protected]
m
Gabriella Tukia – [email protected]
m
Viviane de Souza – [email protected]
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Estrutura do Curso Remoto
Ü Neste curso remoto, o aluno utilizar ´a seu computador particular
Ü Ser ˜ao oferecidos aos alunos os seguintes materiais:
m Instruc¸ ˜oes de como instalar o Python no Windows e no Ubuntu
m Notas de aula
m V´ıdeo-aulas acompanhando cada aula
m Listas de exerc´ıcios com programas mais complexos e tarefas valendo nota
O material estar ´a dispon´ıvel nosite da disciplina
Ü Haver ´a reuni ˜oes remotas para tirar d ´uvidas, uma vez por semana As reuni ˜oes ser ˜ao via aplicativo Zoom, `as terc¸as feiras, a partir das 14h
As notas de aula e os v´ıdeos foram, na sua grande parte, preparados pela Profa. Sandra Amato para o per´ıodo 2020-PLE1
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Avaliac¸ ˜ao
A nota final, de 0 a 10, ´e composta de:
Ü Tarefassemanais a serem colocadas no Dropbox. Basicamente programas e relat ´orios.
m M ´edia com peso 0.5
Ü Uma provafeita no computador com consulta ao material de estudo. A data ser ´a divulgada no site.
m Nota com peso 0.5
m Local: remotamente, mas incluindo perguntas orais
Cada aluno ter ´a uma pasta no Dropbox, compartilhada somente com o professor, onde colocar ´a o material a ser corrigido
Cada tarefa deve ser “entregue”, i. ´e, colocada na pasta do Dropbox para ser corrigida at ´e as 24 horas do dia da aula seguinte.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Instalac¸ ˜ao dos programas
ÜNeste curso utilizaremos Python 3.X com os m ´odulos numpy scipy matplotlib sympy
ÜExistem algumas formas de acessar o Python:
1 Usando os computadores de LIG-IF que usam o sistema operacional Ubuntu, onde todos os programas j ´a est ˜ao instalados
2 Usando o servic¸o provido por um site atrav ´es de um Browser 3 Instalando o software no seu pr ´oprio computador
ÜUsar um servic¸o provido por um site ´e muito simples, e usaremos na primeira aula, mas tem algumas desvantagens (precisa de rede, nem todos os pacotes podem estar dispon´ıveis, n ˜ao ter espac¸o e mem ´oria para rodar programas mais sofisticados)
ÜPara instalar o Python em Windows ou em Ubuntu, siga as instruc¸ ˜oes
neste documento. A´ı voc ˆe encontra tamb ´em as instruc¸ ˜oes para a instalac¸ ˜ao do Jupyter-notebook. Ele ser ´a usado nas v´ıdeo-aulas, mas voc ˆe pode usar outras opc¸ ˜oes, que n ˜ao necessitam de instalac¸ ˜ao `a parte.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Instalac¸ ˜ao dos programas
Ü
Caso n ˜ao tenha, crie uma conta no
Dropbox
Envie um e-mail para
[email protected]
assunto: MetComp conta do Dropbox
e informe nome, DRE e o enderec¸o do e-mail utilizado para o
Dropbox.
O professor compartilhar ´a uma pasta do Dropbox que ser ´a usada para
colocar seus trabalhos.
Opcional:
Ü
Caso voc ˆe queira instalar o Linux no seu computador que tem o
sistema operacional Windows 10, para ter um ambiente similar ao do
LIG, siga as instruc¸ ˜oes
deste documento
Ü
Nestes slides
voc ˆe encontra os comandos b ´asicos de Linux caso
voc ˆe queira trabalhar no LIG ou no Ubuntu do seu computador
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Objetivos da Disciplina
Utilizac¸ ˜ao de computadores para resolver problemas de F´ısica.
Integra tr ˆes disciplinas:
F´ısica
An ´alise Num ´erica
Programac¸ ˜ao
Ü
F´ısica - Problemas de Mec ˆanica
Ü
An ´alise Num ´erica
m
Encontrar as ra´ızes de uma func¸ ˜ao
m
Resolver equac¸ ˜oes diferenciais
m
C ´alculo de integrais
m
N ´umeros pseudo-aleat ´orios
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Objetivos da Disciplina
Utilizac¸ ˜ao de computadores para resolver problemas de F´ısica.
Integra tr ˆes disciplinas:
F´ısica
An ´alise Num ´erica
Programac¸ ˜ao
Ü
F´ısica - Problemas de Mec ˆanica
Ü
An ´alise Num ´erica
m
Encontrar as ra´ızes de uma func¸ ˜ao
m
Resolver equac¸ ˜oes diferenciais
m
C ´alculo de integrais
m
N ´umeros pseudo-aleat ´orios
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Objetivos da Disciplina
Utilizac¸ ˜ao de computadores para resolver problemas de F´ısica.
Integra tr ˆes disciplinas:
F´ısica
An ´alise Num ´erica
Programac¸ ˜ao
Ü
F´ısica - Problemas de Mec ˆanica
Ü
An ´alise Num ´erica
m
Encontrar as ra´ızes de uma func¸ ˜ao
m
Resolver equac¸ ˜oes diferenciais
m
C ´alculo de integrais
m
N ´umeros pseudo-aleat ´orios
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Objetivos da Disciplina
Utilizac¸ ˜ao de computadores para resolver problemas de F´ısica.
Integra tr ˆes disciplinas:
F´ısica
An ´alise Num ´erica
Programac¸ ˜ao
Ü
F´ısica - Problemas de Mec ˆanica
Ü
An ´alise Num ´erica
m
Encontrar as ra´ızes de uma func¸ ˜ao
m
Resolver equac¸ ˜oes diferenciais
m
C ´alculo de integrais
m
N ´umeros pseudo-aleat ´orios
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Motivac¸ ˜ao
Ü Os problemas de F´ısica apresentados nos cursos s ˜ao resolvidos com l ´apis, papel e suor
Ü Na vida real, a maioria deles n ˜ao tem soluc¸ ˜ao anal´ıtica
Ü Para resolv ˆe-los: * An ´alise Num ´erica
Ü Per´ıodo de um p ˆendulo abandonado de um ˆangulo θ0com a vertical
T = 2 s L 2g Z θ0 −θ0 dθ0 (cos θ0− cos θ 0)1/2
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Ementa
Ü
Linguagem de Programac¸ ˜ao:
Python
Ü
Produc¸ ˜ao de Gr ´aficos: MatPlotlib (biblioteca do Python)
Ü
An ´alise num ´erica:
m
Encontrar ra´ızes de uma func¸ ˜ao
m
Resolver equac¸ ˜oes diferenciais
m
C ´alculo de integrais
m
N ´umeros pseudo-aleat ´orios
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Bibliografia
Python:
Ü
Site oficial:
https://www.python.org/
,
Ü
Tutorial do site oficial
Ü
Curso da Ci ˆencia da Computac¸ ˜ao - UFRJ
Ü
Learn X in Y minutes, where X=python
Ü
Como Pensar Como um Cientista da Computac¸ ˜ao: Aprendendo
com Python: Edic¸ ˜ao interativa
,
Ü
Curso da IBM
Latex:
Ü
Latex User’s Guide & Reference Manual - L. Lamport
Ü
Breve Introduc¸ ˜ao ao Latex - Lenimar de Andrade
Ü
LaTeX WikiBook
,
Linux:
Ü
Slides preparados pela Profa. Sandra
Ü
Apostila Comandos B ´asicos - Jos ´e Helder Lopes
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Bibliografia
M ´etodos Computacionais
Ü
A Primer on Scientific Programming with Python - Langtangen
Veja tamb ´emResources for A Primer on Scientific Programming with Python
,
Ü
Computational Physics - Mark Newman
Ü
Computac¸ ˜ao Cient´ıfica com Python - Flavio Codec¸o
Ü
Introductory Computacional Physics - Andi Klein e Alexander
Godunov
Ü
A first Course in Computacional Physics - Paul DeVries
Ü
An Introduction to Computer Simulation Methods - H. Gould e J.
Tobochnik
Tamb ´em, ´e claro,
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos
Ü O computador ´e uma m ´aquina!
m Bastante flex´ıvel e poderosa, mas uma m ´aquina
m N ˜ao erra nunca, s ´o faz o que se manda
Ü CPU: “Central Processing Unit’
m onde as operac¸ ˜oes s ˜ao realizadas
Ü Mem ´oria: onde as informac¸ ˜oes s ˜ao armazenadas m de v ´arios tipos
m diferentes capacidades de armazenamento, velocidade de troca de informac¸ ˜oes, estabilidade e custo
Ü Perif ´ericos: dispositivos que se comunicam com o computador m Teclado, mouse, monitor, impressora,...
Vejahttp://computer.howstuffworks.com/computer-memory.htm Mais sobre computadores na Wikipedia
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos
Ü O computador ´e uma m ´aquina!
m Bastante flex´ıvel e poderosa, mas uma m ´aquina
m N ˜ao erra nunca, s ´o faz o que se manda
Ü CPU: “Central Processing Unit’
m onde as operac¸ ˜oes s ˜ao realizadas
Ü Mem ´oria: onde as informac¸ ˜oes s ˜ao armazenadas m de v ´arios tipos
m diferentes capacidades de armazenamento, velocidade de troca de informac¸ ˜oes, estabilidade e custo
Ü Perif ´ericos: dispositivos que se comunicam com o computador m Teclado, mouse, monitor, impressora,...
Vejahttp://computer.howstuffworks.com/computer-memory.htm Mais sobre computadores na Wikipedia
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos
Ü O computador ´e uma m ´aquina!
m Bastante flex´ıvel e poderosa, mas uma m ´aquina
m N ˜ao erra nunca, s ´o faz o que se manda
Ü CPU: “Central Processing Unit’
m onde as operac¸ ˜oes s ˜ao realizadas
Ü Mem ´oria: onde as informac¸ ˜oes s ˜ao armazenadas m de v ´arios tipos
m diferentes capacidades de armazenamento, velocidade de troca de informac¸ ˜oes, estabilidade e custo
Ü Perif ´ericos: dispositivos que se comunicam com o computador m Teclado, mouse, monitor, impressora,...
Vejahttp://computer.howstuffworks.com/computer-memory.htm Mais sobre computadores na Wikipedia
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos
Ü O computador ´e uma m ´aquina!
m Bastante flex´ıvel e poderosa, mas uma m ´aquina
m N ˜ao erra nunca, s ´o faz o que se manda
Ü CPU: “Central Processing Unit’
m onde as operac¸ ˜oes s ˜ao realizadas
Ü Mem ´oria: onde as informac¸ ˜oes s ˜ao armazenadas m de v ´arios tipos
m diferentes capacidades de armazenamento, velocidade de troca de informac¸ ˜oes, estabilidade e custo
Ü Perif ´ericos: dispositivos que se comunicam com o computador m Teclado, mouse, monitor, impressora,...
Vejahttp://computer.howstuffworks.com/computer-memory.htm Mais sobre computadores na Wikipedia
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos II
Ü Software: um programa, uma sequ ˆencia de instruc¸ ˜oes, que ´e
interpretada e executada pelo computador.
Ü BIOS: Basic Input/Output System. Um programa pr ´e-gravado em
mem ´oria permanente, executado por um computador quando ligado.
m respons ´avel pelo suporte b ´asico de acesso ao hardware, bem como por iniciar o sistema operacional
Ü Sistema operacional: Programa principal que determina o
funcionamento do computador. Todos os outros programas “falam” com o computador atrav ´es dele.
m Linux (Unix), Windows, MAC OS X, Android, ... Ü Aplicativos: browsers, editores de texto, planilhas, ...
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos II
Ü Software: um programa, uma sequ ˆencia de instruc¸ ˜oes, que ´e
interpretada e executada pelo computador.
Ü BIOS: Basic Input/Output System. Um programa pr ´e-gravado em
mem ´oria permanente, executado por um computador quando ligado.
m respons ´avel pelo suporte b ´asico de acesso ao hardware, bem como por iniciar o sistema operacional
Ü Sistema operacional: Programa principal que determina o
funcionamento do computador. Todos os outros programas “falam” com o computador atrav ´es dele.
m Linux (Unix), Windows, MAC OS X, Android, ... Ü Aplicativos: browsers, editores de texto, planilhas, ...
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos II
Ü Software: um programa, uma sequ ˆencia de instruc¸ ˜oes, que ´e
interpretada e executada pelo computador.
Ü BIOS: Basic Input/Output System. Um programa pr ´e-gravado em
mem ´oria permanente, executado por um computador quando ligado.
m respons ´avel pelo suporte b ´asico de acesso ao hardware, bem como por iniciar o sistema operacional
Ü Sistema operacional: Programa principal que determina o
funcionamento do computador. Todos os outros programas “falam” com o computador atrav ´es dele.
m Linux (Unix), Windows, MAC OS X, Android, ...
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
O Computador: Conhecimentos B ´asicos II
Ü Software: um programa, uma sequ ˆencia de instruc¸ ˜oes, que ´e
interpretada e executada pelo computador.
Ü BIOS: Basic Input/Output System. Um programa pr ´e-gravado em
mem ´oria permanente, executado por um computador quando ligado.
m respons ´avel pelo suporte b ´asico de acesso ao hardware, bem como por iniciar o sistema operacional
Ü Sistema operacional: Programa principal que determina o
funcionamento do computador. Todos os outros programas “falam” com o computador atrav ´es dele.
m Linux (Unix), Windows, MAC OS X, Android, ... Ü Aplicativos: browsers, editores de texto, planilhas, ...
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Etapas de Programac¸ ˜ao
O objetivo final de uma programac¸ ˜ao ´e produzir um programa.
Para que o programa execute corretamente o que se deseja, ´e
necess ´ario passar por algumas etapas:
Ü
Entender bem o problema, quais s ˜ao os dados de entrada (input)
e o que se quer obter como resultado (output)
Ü
Elaborar a forma de resolver o problema –
Algoritmo
.
Esta forma deve ser l ´ogica, clara, encadeada
Ü
Testar ainda no “papel” o algoritmo, pensar nas v ´arias
possibilidades dos dados de entrada, do fluxo do programa
Ü
Transcrever o algoritmo em uma linguagem de programac¸ ˜ao,
obedecendo `as regras de sintaxe
Ü
Testar o programa `a exaust ˜ao, com diversos valores de entrada,
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Algoritmos
Ü
Definic¸ ˜ao: Estrat ´egia ou sequ ˆencia de procedimentos para
resolver um problema
m
Como sair daqui e chegar em casa?
m
Como resolver um problema de Lei de Newton?
m
Como calcular o per´ıodo de um p ˆendulo ?
Ü
A resoluc¸ ˜ao de problemas complicados fez com que o estudo de
algoritmos se tornasse um campo importante da matem ´atica.
Ü
No fundo sempre criamos e seguimos um algoritmo para resolver
problemas
m
apresent ´a-lo de forma expl´ıcita torna muito mais f ´acil verificar
se a soluc¸ ˜ao est ´a correta.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Algoritmos e Computac¸ ˜ao I
Ü
O conceito de algoritmo ´e central para a computac¸ ˜ao
m
o computador segue ordens e processa operac¸ ˜oes l ´ogicas
m
necessita de instruc¸ ˜oes claras e precisas
Ü
n ˜ao exige nenhum tipo de linguagem de programac¸ ˜ao
Ü
h ´a, em geral, diversos algoritmos para resolver o mesmo
problema.
Ü
E muito comum f´ısicos n ˜ao darem atenc¸ ˜ao a essa fase da
´
programac¸ ˜ao.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Exemplo de Algoritmos - Descric¸ ˜ao Narrativa
Ü Troca de um pneu furado:
m Afrouxar ligeiramente as porcas;
m Colocar o macaco debaixo do carro;
m Suspender o carro com o macaco;
m Retirar as porcas;
m Retirar o pneu;
m Colocar o pneu reserva;
m Apertar um pouco as porcas;
m Abaixar o carro;
m Dar o aperto final nas porcas.
Ü Situac¸ ˜ao do aluno ao final do curso
m Obter as notas do AVA
m Obter a m ´edia do AVA (MA)
m Obter as notas das tarefas
m Obter a m ´edia das tarefas (MT)
m Obter a nota da prova (NP)
m Calcular a nota final: NF=0.1*MA+0.4*MT+0.5*NP
m Se NF≥5,0åAP
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Algoritmos - Fluxograma
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Exemplo de Algoritmos - Fluxograma
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Exemplo de Algoritmos - Pseudoc ´
odigo
Voltemos ao c ´alculo da m ´edia
Ü
m ´edia simples de duas notas
Ü
sem se preocupar com faltas
Ü
determinar a situac¸ ˜ao do
aluno
Ü
como estruturar um algoritmo
para o computador ?
Programa CalculoMedia
N1, N2, Media: Real
Inicio
Leia N1, N2
Media = (N1 + N2)/2
Se Media >= 5 entao
Escreva "Aprovado"
Senao
Escreva "Reprovado"
Fim do Se
Fim
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Programa
Ü
E a transcric¸ ˜ao de um
´
algoritmo
para uma s ´erie de instruc¸ ˜oes que
ser ˜ao
executadas
por um computador
Ü
O
programa fonte (source)
´e composto de comandos em um
arquivo texto
Ü
Uma
linguagem de programac¸ ˜ao
´e um conjunto de regras e
comandos para se elaborar o programa fonte. As mais utilizadas
em computac¸ ˜ao cient´ıfica s ˜ao C, C++, Fortran, Java, Python...
Ü
O
programa execut ´avel
cont ´em instruc¸ ˜oes em linguagem de
m ´aquina
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Programa
Ü
Para as linguagens C, C++ ou Fortran: precisamos de um
compilador
para transformar o programa fonte no programa
execut ´avel;
Ü
O Python ´e uma linguagem
interpretada
;
Ü
Os compiladores dependem da linguagem de programac¸ ˜ao e da
arquitetura (CPU, ...) espec´ıfica onde o programa ser ´a executado;
Ü
Para escrever um programa ´e necess ´ario aprender as regras, a
sintaxe
de cada linguagem, para que as instruc¸ ˜oes passadas
para o computador sejam precisas.
Ü
“Qualquer tentativa de n ˜ao seguir as regras s ´o causar ´a
frustrac¸ ˜ao, suor e l ´agrimas”
A linguagem utilizada nesse curso ser ´a o Python
https://www.python.org/
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Sintaxe - A ser obedecida `a risca
“Programming demands significantly higher standard of accuracy.
Things don’t simply have to make sense to another human being, they
must make sense to a computer”. Donal Knuth (1938).
De aorcdo com uma peqsiusa de uma uinrvesriddae ignlsea, nao
ipomtra em qaul odrem as Lteras de uma plravaa etaso, a uncia csioa
iprotmatne e que a piremria e utmlia Lteras etejasm no lgaur crteo. O
rseto pdoe ser uma bc¸guana ttaol, que vco ˆe anida pdoe ler sem
pobrlmea. Itso ´e poqrue n ´os n ˜ao lmeos cdaa Ltera isladoa, mas a
plravaa cmoo um tdoo.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Sintaxe - A ser obedecida `a risca
35T3 P3QU3N0 T3XTO 53RV3 4P3N45 P4R4 M05TR4R
COMO NO554 C4B3C4 CONS3GU3 F4Z3R
CO1545 1MPR3551ON4ANT35!
R3P4R3 N155O! NO COM3CO
35T4V4 M310 COMPL1C4DO,
M45 N3ST4 L1NH4 SU4 M3NT3
V41 D3C1FR4NDO O CAD1GO
QU453 4UTOM4T1C4M3NT3, S3M
PR3C1S4R P3N54R MU1TO, C3RTO?
POD3 F1C4R B3M ORGULHO5O D155O!
SU4 C4P4C1D4D3 M3R3C3! P4R4BEN5!
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Introduc¸ ˜ao ao Python - Apresentac¸ ˜ao
Ü
Criado por Guido Van Rossum no in´ıcio dos anos 90 na Holanda
Ü
Software livre
Ü
Linguagem orientada a objeto, como c++, java, ...
Ü
E uma linguagem interpretada e n ˜ao compilada
´
Comando
⇒
Interpretador
⇒
Resultado
Ü
Podemos tamb ´em usar o modo script - execuc¸ ˜ao de um arquivo
de comandos
Ü
Muito utilizada por ter uma sintaxe mais simples - produc¸ ˜ao mais
r ´apida de programas de alta qualidade e f ´acil manutenc¸ ˜ao
Ü
Existe para todas as plataformas, podendo ser executada
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Apresentac¸ ˜ao
Ü
Pode ser extendido atrav ´es de m ´odulos, tanto em Python
(vast´ıssima biblioteca), como em C, C++ ou Fortran
Ü
Possui v ´arias bibliotecas para produc¸ ˜ao de gr ´aficos
Ü
v ´arios m ´odulos para lidar com objetos f´ısicos: vetores, tensores,
n ´umeros complexos, matrizes,...
Mas ...
Ü
Esconde os detalhes de um ambiente de programac¸ ˜ao mais
avanc¸ado
Ü
Ainda n ˜ao ´e adequada para computac¸ ˜ao de alto desempenho
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Python
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Python 2 ou Python 3 ?
Ü Existem atualmente duas classes de vers ˜oes de Python, a 2.x e a >3.x , mais atual, que s ˜ao incompat´ıveis entre si. As principais diferenc¸as est ˜ao em
m Operac¸ ˜oes com n ´umeros inteiros
m func¸ ˜ao print
m func¸ ˜ao input
m iterators
m Mais detalhes nosite oficial do Python Ü Neste curso usaremos o Python 3
Ü Por ´em, comec¸aremos hoje (e apenas hoje) com a vers ˜ao 2. Esta escolha foi feita por achar importante apresentar o comportamento das operac¸ ˜oes matem ´aticas com n ´umeros inteiros, que ´e o mesmo da maioria das outras linguagens.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Inicializando python
Ü
Seus comandos de Python podem ser digitados
m no terminal diretamente, seja no Windows ou no Ubuntu
m em uma janela gr ´afica integrada com um editor de texto, usaremos aqui o IDLE m no Jupyter-notebook
m diretamente em um site
m em algum editor de texto que ser ´a executado pelo Python posteriormente
Ü
Os comandos do Python s ˜ao exatamente os mesmos, a diferenc¸a
est ´a apenas no layout e em como se roda o programa.
Ü
Como vamos comec¸ar com a vers ˜ao 2 do Python, e os comandos
ser ˜ao muito simples, n ˜ao h ´a a necessidade de instalar essa vers ˜ao na
sua m ´aquina. Vamos usar a opc¸ ˜ao de rodar o Phyton em um servic¸o
de Web site.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Python na Web
m
Recomendamos acessar
este site
m
Repare a vers ˜ao que est ´a sendo utilizada (Python 2.7.16)
m
na janela do meio poderemos colocar v ´arios comandos de uma
vez e apertar o bot ˜ao
m
Na janela preta, aparece o prompt do Python:
>
onde podemos digitar comando a comando
m
Vamos comec¸ar por ela.
m
Nos pr ´oximos slides, usaremos >>> para indicar que estamos
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Operac¸ ˜
oes elementares
Python como calculadora ...
Tipos: inteiro (integer), real (float), string, complex, boolean Operadores aritm ´eticos bin ´arios:+, – , *, /, **, %
>>> 1+1 2 >>> 2*10 20 >>> 5.0/2 # divis˜ao de reais 2.5 >>> 5/2 # divis˜ao de inteiros 2 >>> 5%2 # operador resto 1
>>> 7**2 # potenciac¸˜ao (nao temos em c) 49
O que vier depois de # at ´e o final da linha ´e considerado um coment ´ario e n ˜ao ´e interpretado
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Preced ˆencia das operac¸ ˜
oes matem ´aticas
Obedecem `as mesmas regras que em matem ´atica: Calcule termo a termo (soma, subtrac¸ ˜ao)
em cada termo, da esquerda para a direita, comece pelas pot ˆencias, e depois multiplicac¸ ˜ao, divis ˜ao.
1 2+2 × 3 2/3 esperamos obter 6.5 >>> 1/2 + 2 * 3**2 / 3 6 Ü 1/2 (0) Ü 3 ∗ ∗2 (9) Ü 2 ∗ 9 (18) Ü 18/3 (6) Ü 0 + 6
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Preced ˆencia das operac¸ ˜
oes matem ´aticas
Obedecem `as mesmas regras que em matem ´atica: Calcule termo a termo (soma, subtrac¸ ˜ao)
em cada termo, da esquerda para a direita, comece pelas pot ˆencias, e depois multiplicac¸ ˜ao, divis ˜ao.
1 2+2 × 3 2/3 esperamos obter 6.5 >>> 1/2 + 2 * 3**2 / 3 6 Ü 1/2 (0) Ü 3 ∗ ∗2 (9) Ü 2 ∗ 9 (18) Ü 18/3 (6) Ü 0 + 6
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Preced ˆencia das operac¸ ˜
oes matem ´aticas
Obedecem `as mesmas regras que em matem ´atica: Calcule termo a termo (soma, subtrac¸ ˜ao)
em cada termo, da esquerda para a direita, comece pelas pot ˆencias, e depois multiplicac¸ ˜ao, divis ˜ao.
1 2+2 × 3 2/3 esperamos obter 6.5 >>> 1/2 + 2 * 3**2 / 3 6 Ü 1/2 (0) Ü 3 ∗ ∗2 (9) Ü 2 ∗ 9 (18) Ü 18/3 (6) Ü 0 + 6
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Preced ˆencia das operac¸ ˜
oes matem ´aticas
Se quiser mudar a preced ˆencia, use par ˆentesis (sem abusar)
>>> 3*(3+1)/(2+6.)
1.5
>>> 3*(3+1)/(2+6)
1
>>> 3 * (3+1) / (2+6)
1
>>> 3*3+1/2+6
15
>>> (3*(3+1))/(2+6.)
# uso desnecess´
ario polui
1.5
visualmente
Espac¸os em brancodentrodas express ˜oes matem ´aticas n ˜ao fazem diferenc¸a, devem ser usados para melhor visualizac¸ ˜ao.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Vari ´aveis
Ü
Nas nossas aplicac¸ ˜oes, fazemos muito uso de n ´umeros, vetores,
matrizes, que podemos associar `a
vari ´aveis
, como fazemos em
´algebra.
Ü
Nos programas, uma
vari ´avel
´e basicamente um local de mem ´oria
que receber ´a um nome, e um ´unico valor a cada instante.
Ü
Podemos recuperar seu valor quando necess ´ario, ou alter ´a-lo.
Ü
Em python, uma vari ´avel ´e criada ao
atribuirmos
a ela um valor,
o que atribui tamb ´em, automaticamente, um tipo:
>>> i=5
# i ser´
a do tipo inteiro
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Vari ´aveis
>>> i=5 # inteiro >>> massa = 62. # real
Ü O tamanho reservado para a vari ´avel depender ´a do seu tipo.
Ü O comando i = 5 deve ser entendido como:
reserve um lugar de mem ´oria do tamanho necess ´ario para armazenar uma vari ´avel do tipo inteiro,
chame esse lugar de i e coloque nesse local o valor 5.
Ü Na criac¸ ˜ao da vari ´avel, ela deve estar
necessariamente do lado esquerdo do sinal =
Ü Para ser usada do lado direito de outra atribuic¸ ˜ao, ela j ´a deve ter sido criada:
>>> forca = massa * aceleracao Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Operac¸ ˜
oes com vari ´aveis
Ü
Um exemplo muito comum de mudanc¸a de valor de uma vari ´avel ´e: >>> contador = 0>>> contador = contador + 1 >>> print contador
Ü A instruc¸ ˜ao contador = contador + 1 n ˜ao tem sentido em matem ´atica.
Em programac¸ ˜ao, ela ´e executada da seguinte forma:
m a express ˜ao do lado direito ´e calculada (nesse caso 0 + 1)
m o resultado desse c ´alculo ´e atribu´ıdo `a vari ´avel do lado esquerdo
Ü a vari ´avel contador, que valia zero, passa a valer 1.
Ü N ˜ao existe mais o registro do seu valor anterior
Ü Veremos mais tarde que costuma-se abreviar
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Operac¸ ˜
oes com vari ´aveis
Podemos fazer as mesmas operac¸ ˜oes matem ´aticas que fizemos com n ´umeros >>> a=5 # inteiro >>> j=3 >>> a/j 1 >>> f=5. # real >>> f/j 1.6666666666666667
#Podemos mudar o valor e o tipo de a >>> a=10. >>> c = 1./2*a >>> print (c) 5.0 >>> c = 1./(2*a) >>> c 0.05
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Exerc´ıcio
O que ser ´a impresso nos seguintes casos:
>>> 2**0.5
>>> 2**(1/2)
>>> 2**(1./2)
>>> 9**1/2
>>> 9.**1/2
>>> a=2
>>> b=3
>>> c=a/b
>>> c = c+2
>>> d = c/3.
>>> a+b*2
>>> 34/5/2
>>> 34/(5/2)
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Convers ˜ao entre tipos
ÜVimos que devemos tomar cuidados com operac¸ ˜oes entre inteiros e floats. Quando queremos forc¸ar que um n ´umero seja float, basta colocar um “ponto” no n ´umero.
Para mudar o tipo de vari ´avel, precisamos usar as func¸ ˜oes de convers ˜ao: >>> a = 3 # a ´e int, verifique:
>>> type(a) <type ’int’>
>>> b = 5 # b ´e int
>>> c = float(b) # c ´e float 5.0
>>> a/b # divis˜ao de inteiro por inteiro 0
>>> a/c # divis˜ao de inteiro por float 0.6
>>> d = 3.9 # d ´e float
>>> e = int(d) # e ´e a parte inteira de d: 3 >>> e = round(d) # round arredonda, float: 4.0
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Nomes de vari ´aveis
Ü
Escolha nomes de vari ´aveis que deixem claro o que ela significa.
Ü
Nomes de vari ´aveis podem conter letras, n ´umeros e “ ”,
mas n ˜ao podem comec¸ar com n ´umeros
Ü
O Python diferencia mai ´usculas de min ´usculas:
(massa ´e diferente de Massa, que ´e diferente de MASSA )
Ü
E padr ˜ao usar: velocidadeInicial ou velocidade inicial
´
Ü
palavras da linguagem do Python n ˜ao podem ser usadas como
nome de vari ´aveis:
and, as, assert, break, class, continue, def,
del, elif, else, except, False, finally, for,
from, global, if, import, in, is, lambda, None,
nonlocal, not, or, pass, raise, return, True,
try, with, while, yield.
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outros tipos de vari ´aveis - complexas
Vari ´aveis do tipo complexas s ˜ao formadas por duas vari ´aveis do tipo
float. No python, usa-se o j no lugar do complexo i
>>> c=3+2j # complexo >>> c.conjugate() (3-2j) >>> c.real 3.0 >>> c.imag 2.0 >>> b=(c*c.conjugate()).real >>> b 13.0 >>> print b 13.0
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outros tipos de vari ´aveis - string
Strings s ˜ao vari ´aveis que armazenam texto (letras, pontuac¸ ˜oes,
s´ımbolos, n ´umeros, etc).
Elas devem ser definidas entre plicks ou aspas
>>> primeiroNome = ’Isaac’ >>> segundoNome = ’ Newton’
>>> print primeiroNome + segundoNome Isaac Newton
>>> print 3*primeiroNome IsaacIsaacIsaac
>>> print primeiroNome * segundoNome Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
String - convers ˜
oes
>>> a = "2" # ´e string, verifique: >>> type(a) <type ’str’> >>> 2*a ’22’ >>> b = 3 >>> a+b
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: cannot concatenate ’str’ and ’int’ objects >>> d=int(a) >>> print (d+b) 5 >>> print (int(a)+b) 5 >>> print (a+str(b)) 23
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outros tipos de vari ´aveis - bool
Uma vari ´avel to tipo bool pode assumir apenas dois valores:
True
ou False
>>> a = True >>> type(a) <type ’bool’> >>> b = False
Podemos converter bool ⇐⇒ inteiro:
Ü
0 ⇐⇒ False
Ü
6= 0 ⇐⇒ True
>>> c=23 >>> bool(c) True >>> int(b) 0Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Execuc¸ ˜ao de programa em um arquivo: Scripts
ÜPodemos dar os comandos, linha a linha, na janela de comandos:
>>> a=5.
>>> print 1./2*a 2.5
>>> print 1./(2*a) 0.1
ÜOu podemos colocar esses comandos dentro de um arquivo (script) e execut ´a-lo.
ÜPara o Python na Web, em especial, podemos colocar todos os comandos de uma vez na janela do meio, e apertar o bot ˜ao
ÜEstes comandos s ˜ao salvos no arquivo main.py (ou outro nome que voc ˆe escolher), o qual pode ser baixado clicando nos tr ˆes pontos na vertical na janela da direita, e em Download as zip
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Execuc¸ ˜ao de programa em um arquivo
ÜAlternativamente, para o Python na Web, podemos colocar todos os comandos em um arquivo local no seu computador, utilizando um editor de texto, e fazer o upload para o Website.
ÜExistem v ´arios editores de texto, se voc ˆe n ˜ao tem ainda um de sua prefer ˆencia, sugiro o gedit do Ubuntu, ou o Atom do Windows.
ÜAbra seu editor de texto, coloque os comandos do slide anterior e salve seu programa, com um nome, p. ex., test.py
ÜPara enviar este arquivo para o Website, clique nos tr ˆes pontos na vertical na janela da direita, e em Upload file. Ele aparecer ´a na janela esquerda
ÜCom o main.py selecionado, esvazie-o e escreva import test, onde test ´e o nome do seu arquivo sem a extens ˜ao .py. Aperte o bot˜ao
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Organizac¸ ˜ao de um programa
Um bom programa (al ´em de funcionar obviamente!) deve serclaro.
Ü Escolha um nome para o programa que facilite reconhecer o que ele faz
Ü Escolha bem os nomes das vari ´aveis, use os mesmos das f ´ormulas
Ü Coloque coment ´arios no programa. Serve para deixar mais claro para as pessoas (inclusive voc ˆe!) que est ˜ao lendo o programa, o que est ´a sendo feito.
Ajuda tamb ´em a debbugar.
Ü Escolha corretamente o tipo das vari ´aveis
Ü D ˆe nome para as constantes do programa e declare-as no in´ıcio
Ü Use espac¸os e mudanc¸a de linha para melhor visualizac¸ ˜ao: energy = massa*(vx**2 + vy**2)/2 + massa*g*y \
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Coment ´arios
Ü Tudo o que vier ap ´os o # ser ´a ignorado pelo Python.
y = v0 * t - 0.5 * g * t**2 # C´alculo da posic¸˜ao y
Ü Coment ´arios tamb ´em podem ocupar diversas linhas, sem a
necessidade de colocar # em todas elas. Para isto coloque entre tr ˆes aspas:
"""
Eu prometo que colocarei muitos coment´arios
nos meus programas, assim, al´em de tirar boa nota no curso, irei impressionar meu(minha) orientador(a) e poderei trabalhar em equipe
"""
Ü mesmo sendo coment ´ario, se quiser usar acentos ou c¸, voc ˆe deve colocar no topo do arquivo
-*-Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outras func¸ ˜
oes matem ´aticas
>>> sqrt(9)
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name ’sqrt’ is not defined Precisamos importar a biblioteca matem ´atica (3 formas): >>> import math
>>> math.sqrt(9) 3.0
>>> help(math)
>>> # espac¸o para avanc¸ar >>> # digite q para sair >>> from math import * >>> sin(0) 0.0 >>> sin(3.14/2) 0.9999996829318346 >>> sin(pi/2) 1.0 # ou (recomendado)
>>> from math import sqrt, pi >>> sqrt(9)
3.0
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outras func¸ ˜
oes matem ´aticas I
exp(x)
retorna e**x
log(x)
retorna logaritmo de x na base e
log(x[,y])
retorna logaritmo de x na base y
log10(x)
retorna logaritmo de x na base 10
pow(x,y)
retorna x**y
sqrt(x)
retorna
√
x
fabs(x)
retorna o m ´odulo de x
factorial(x)
retorna o fatorial de x
isnan(x)
retorna True se x ´e NaN
isfinite(x)
retorna True se n ˜ao for infinito nem NaN
degrees(x)
converte x de radianos para graus
radian(x)
converte x de graus para radianos
hypot(x,y)
retorna
p
x
2+
y
2ceil(x)
retorna o menor inteiro ≥ x
Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas
Outras func¸ ˜
oes matem ´aticas II
cos(x)
retorna o cosseno de x, x deve estar em radianos
sin(x)
retorna o seno de x, x deve estar em radianos
tan(x)
retorna a tangente de x, x deve estar em radianos
cosh(x)
retorna o cosseno hiperb ´olico de x, x deve estar em radianos
sinh(x)
retorna o seno hiperb ´olico de x, x deve estar em radianos
tanh(x)
retorna a tangente hiperb ´olica de x, x deve estar em radianos
acos(x)
retorna o arco cosseno de x
asin(x)
retorna o arco seno de x
atan(x)
retorna o arco tangente de x
acosh(x)
retorna o arco cosseno hiperb ´olico de x
asinh(x)
retorna o arco seno hiperb ´olico de x
atanh(x)
retorna o arco tangente hiperb ´olico de x
atan2(x,y)
retorna atan(x/y)
Obs.: Voc ˆe pode ver todas as func¸ ˜oes definidas fazendo help(math) ap ´os o import.