• Nenhum resultado encontrado

Me todos Computacionais em Fı sica I

N/A
N/A
Protected

Academic year: 2021

Share "Me todos Computacionais em Fı sica I"

Copied!
62
0
0

Texto

(1)

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

(2)

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]

(3)

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

(4)

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.

(5)

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.

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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,

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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, ...

(20)

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, ...

(21)

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, ...

(22)

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, ...

(23)

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,

(24)

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.

(25)

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.

(26)

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

(27)

Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas

Algoritmos - Fluxograma

(28)

Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas

Exemplo de Algoritmos - Fluxograma

(29)

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

(30)

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

(31)

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/

(32)

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.

(33)

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!

(34)

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

(35)

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

(36)

Apresentac¸ ˜ao Programac¸ ˜ao Algoritmos Python Operac¸ ˜oes Vari ´aveis Programas

Python

(37)

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.

(38)

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.

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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.

(45)

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

(46)

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>

(47)

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

(48)

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

(49)

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)

(50)

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

(51)

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.

(52)

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

(53)

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>

(54)

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

(55)

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) 0

(56)

Apresentac¸ ˜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

(57)

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

(58)

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 \

(59)

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

(60)

-*-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

(61)

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

2

ceil(x)

retorna o menor inteiro ≥ x

(62)

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.

Referências

Documentos relacionados

Ü Ao lermos um par ˆametro atrav ´es da func¸ ˜ao input ou sys.arg ele vem sempre na forma de string e em geral convertemos para outro tipo, p. int

Para implementarmos este procedimento, o ideal ´e calcular cada ordem em func¸ ˜ao da anterior, aproveitando o que j ´a foi calculado... at ´e

Σ N ´umero de novos humanos levados para a ´area infectada por unidade de tempo.. β probabilidade de um encontro de um humano com um zumbi, por unidade de tempo, resultando em

Ü Uma outra forma de fazer loop no Python ´e a instruc¸ ˜ao for Ü ela ´e mais conveniente para trabalhar com listas (e arrays como.

Ü Atenc¸ ˜ao: A escolha da largura dos intervalos pode distorcer o comportamento dos dados que estamos analisando. 20 bins

1- Dividir um problema complexo em v ´arios problemas simples , dividindo o programa em partes que realizem tarefas espec´ıficas e razoavelmente independentes.. 2- Identificar e

Ü Uma vari ´avel definida no corpo mais externo do programa pode ser usada em qualquer parte ap ´os sua definic¸ ˜ao, mesmo dentro das func¸ ˜oes que ser ˜ao chamadas: ´ E uma