Programação
Um computador é uma máquina eletrônica com capacidade para armazenar valores numéricos em formato binário e instruções de manipulação desses valores armazenados. Informações não numéricas, como letras, palavras e imagens, precisam ser convertidas em binários para que possam ser tratados. Nos primeiros tempos da computação a interação com as máquinas era muito difícil e um programador tinha que escrever códigos muito complexos, como diretamente em linguagem de máquina ou assembly. Hoje, após muito aperfeiçoamento, as linguagens modernas abstraem as camadas mais complexas de interação com o computador. O código tem a aparência de uma linguagem natural humana e pode ser lido quase como um texto comum.
Um exemplo pode ilustrar essa descrição. Considere que uma pessoa possui uma caixa cheia de bolas pretas e brancas. Ela quer saber qual é a porcentagem de bolas pretas, no total. Uma possível solução seria o seguinte procedimento, usando um bloco de notas para registrar bolas pretas e brancas:
- tire uma bola da caixa,
- verifique se é preta,
- se for preta faça uma marca para bolas pretas, caso contrário para as brancas,
- sem retornar a bola, verifique se ainda restam bolas na caixa,
- se ainda restam bolas, volte para a etapa (1),
- se acabaram as bolas, conte quantas marcas foram feitas para cada cor,
- calcule porcentagem = pretas/(pretas+brancas)*100 e anote esse resultado.
Esse procedimento é chamado de algoritmo. A lista de tarefas é análoga à um programa de computador. As marcas feitas para contagem das bolas brancas e pretas são análogas às variáveis do programa.
Jupyter
O Python pode ser executado de várias formas diferentes. Existem bons editores e IDEs (Integrated Devolopment Environment) tais como o VSCode, Pycharm, Geany ou Spyder. Para esse tutorial usaremos o Jupyter Notebook. Para maiores informações sobre o Jupyter leia nesse site sobre sua instalação e execução.
Resumindo, sua instalação pode ser feita instalando-se o Anaconda:
- Baixe a versão mais recente do Anaconda aqui. Existem instaladores gráficos para Linux, Windows e MacOS.
- Instale seguindo as instruções na página de download ou contidas no arquivo instalador executável.
- ou … usuários que conhecem
Python
e que preferem gerenciar seus pacotes manualmente, pode apenas usar:
pip3 install jupyter
.
Python
Python é uma linguagem de programação de alto nível, interpretada e de propósito geral, criada por Guido van Rossum em 1985 e em franco desenvolvimento desde então. Ela está disponível sob a licença GPL (GNU General Public License). Ela permite o uso interativo, com o usuário digitando as linhas de código e obtendo o resultado imediatamente, ou através de lotes (batches), com as linhas de código armazenadas em arquivos e executadas em grupo. Apesar de ser chamada de linguagem de script é possível criar aplicativos completos, na web ou para desktop, com interfaces gráficas modernas e eficientes. Além disso existe a possibilidade de gerar arquivos compilados e executáveis usando Cython.
Uma grande quantidade de bibliotecas ou módulos que podem ser importados e executados nas sessões do python o tornam atraente para o gerenciamento de bancos de dados, de imagens, a mineração de dados, análise e plotagem sofisticada, inteligência artificial e aprendizado de máquina, além de várias outras aplicações. Você pode procurar por bibliotecas em The Python Package Index (PyPI).
Python é uma linguagem orientada a objetos (um conceito a ser estudado mais tarde) e todos de seus elementos são objetos. Seus conceitos básicos são de rápido aprendizado, apesar da existência das várias bibliotecas para uso específico que podem ser um pouco mais complexas, como ocorre com o pandas.
Variáveis e operações básicas
Convenção: Usaremos nesse texto a seguinte convenção: linhas iniciadas com » marcam o código inserido para execução. No Jupyter Notebook são as linhas de código dentro das células. ↳ marca os outputs, as linhas de resposta do código. Linhas, ou trechos de linha, iniciadas com # são comentários não executados.
# Essa linha é um comentário » x = 15 # inserindo um inteiro » print(x) ↳ 15
Você pode usar o python para fazer operações matemáticas como um calculadora, embora isso raramente seja algo muito útil. Mais interessante é a possibilidade de criar variáveis que armazenam dados. No python uma variável é criada no momento em que se atribui a ela um valor, sem necessidade de informar de que tipo será (o que chamamos de tipagem dinâmica).
# inicializamos duas variáveis numéricas e uma com uma palavra » x = 15 # um número inteiro » y = 4.2 # um número de ponto flutuante » z = 'Pedro' # uma palavra ou 'string' # para ver o conteúdo das variáveis podemos usar o método print » print(x) ↳ 15 » print(y) ↳ 4.2 » print(z) ↳ Pedro # podemos ver de que tipo são essas variáveis » print(type(x)) ↳ <class 'int'> » print(type(y)) ↳ <class 'float'> » print(type(z)) ↳ <class 'str'> # variáveis podem ser apagadas com » del x » print(x) ↳ NameError: name 'x' is not defined
O comando print()
é uma função interna do python, e serve para exibir o conteúdo de seu parâmetro, no caso as variáveis x, y, z. Quando usamos o Jupyter Notebook uma variável ou expressão avaliada na última linha de uma célula é exibida quando a célula é executada, sem a necessidade de print
.
Usamos type()
para ver o tipo de conteúdo armazendo. Os tipos básicos do Python são:
Tipo | Exemplos | Nome no Python |
---|---|---|
Inteiros | 1, -1, 67, -9900 | int |
Inteiros longos | 123L, -999L | long integer |
Ponto flutuante | 1.0, 3.14, 345.6, -99.9 | double float |
Complexos | complex(1, 3), complex(“1+2j”), 1 + j | complex |
Booleano | True, False | bool |
String | ‘casa’, “teste de string” | string, object |
Com esses tipos básicos se constroi objetos mais complexos, como
Tipo | Exemplos | Nome no Python |
---|---|---|
Lista | [‘a’, ‘b’, ‘c’, ‘d’], [1, 2, 3] | list |
Tupla | (‘a’, ‘b’, ‘c’, ‘d’), (1, 2, 3) | tuple |
Dicionário | {1: ‘um’, 2: ‘dois’} | dictionary |
Qualquer objeto do python pode ser associado a uma variável, que passa a ser uma representante ou “referência de acesso” a esse objeto. Os nomes de variáveis devem obedecer a algumas regras:
- só podem conter números, letras e sublinhados (underscores):
A
atéz
,0
até9
,_
, - deve começar com uma letra ou sublinhado,
- maiúsculas e minúsculas são diferenciadas.
A diferenciação de maiúsculas de minúsculas é válida em toda parte do Python. As variáveis idade, Idade, IDADE são três variáveis diferentes. A instrução if
, para definir um ponto de bifurcação condicional no código, não ser escrita como If
ou IF
. Além disso existem as palavras reservadas (keywords) que são nomes que fazem parte da sintaxe da linguagem e não podem ser utilizadas para nomes de variáveis:
and | del | for | lambda | raise |
as | elif | from | None | return |
assert | else | global | nonlocal | True |
break | except | if | not | try |
Class | exec | import | or | while |
continue | False | in | pass | with |
def | finally | is | yield |
Como assumem o lugar dos objetos as variáveis podem ser usadas em lugar deles. Por ex., a operação abaixo faz um cálculo usando 2 variáveis e atribuindo o valor à uma terceira.
» largura = 2.20 » altura = 1.10 » area_retangulo = largura * altura » print("A área de retângulo é: " , area_retangulo) ↳ A área de retângulo é: 2.42
Para facilitar a leitura posterior de um código os nomes de variáveis devem ser escolhidos de forma concisa e elucidativa de seu uso.
Os seguintes operadores matemáticos formam a base para as operações numéricas usuais.
Operador | significado | exemplo | numérico |
---|---|---|---|
+ | Adição | x + y | 24 + 36 = 60 |
– | Subtração | x – y | 36 – 24 = 12 |
* | Multiplicação | x * y | 15 * 3 = 45 |
** | Exponentiação | x ** y | 8 ** 3 = 512 |
/ | Divisão | x / y | 15 / 8 = 1.875 |
// | Divisão inteira | x // y | 15 // 8 = 1 |
% | Módulo (resto da divisão inteira) | x % y | 15 % 8 = 7 |
Para verificar seu comportamento vamos fazer alguns testes.
# no python se pode declarar 2 variáveis (ou mais) simultaneamente † » x, y = 3, 8 » x + y ↳ 11 » x - y ↳ -5 » x * y ↳ 24 » y ** x ↳ 512 » x / y ↳ 0.375 # 3 dividido por 8 é 0, com resto 3 » x % y ↳ 0 » x // y ↳ 3
(x, y) = (3, 8). Leia Sequências e Coleções.
Terminologia: Um comando ou declaração (statement, em inglês) é uma linha com uma instrução única. Uma atribuição do tipo x = 1
armazena o valor 1 na variável x. No código abaixo temos 4 declarações. As 3 primeiras são atribuições e print()
é uma função interna (predefinida) do Python:
» incremento = 0.2 » valor = 10 » valor = valor + incremento » print(valor) ↳ 10.20
Várias declarações podem ser dispostas em uma única linha, separadas por ;. Por outro lado uma declaração longa pode ser quebrada em várias linhas.
# várias declarações em uma linha » a=10; b=20; c=a*b; print(c) ↳ 200 # Uma string longa em várias linhas » mensagem = "Olá.\nVocê está aqui para aprender a programar em Python.\n" \ » "Leia o material e faça seus testes." \ » "Indicar esse site para os seus amigos." # Uma declaração longa em várias linhas » soma = 1 + 2 + 3 + 4 + \ » 5 + 6 + 7 + 8 + \ » 9 + 10 » print(mensagem) ↳ Olá. Você está aqui para aprender a programar em Python. Leia o material e faça seus testes. Indicar esse site para os seus amigos. » print(soma) ↳ 55 # No texto acima usamos \n que é um código para quebra de linha.
Diferente das operações matemáticas usuais, x = x + 1
significa some 1 ao valor de x e substitua o resultado em x.
Um atalho ou shortcut possível e muito usado é o seguinte:
# ao invés de escrever » i = i + 1 # podemos escrever, como o mesmo efeito » i += 1 # portanto » valor = valor + incremento # pode ser escrito como » valor += incremento
Outros operadores análogos podem ser usados.
Operador | Exemplo | Equivale a | |
---|---|---|---|
+= | Soma | a += 2 | a = a + 2 |
-= | Subtração | a -= 2 | a = a – 2 |
*= | Multiplicação | a *= 2 | a = a * 2 |
/= | Divisão | a /= 2 | a = a / 2 |
%= | Módulo | a %= 2 | a = a % 2 |
**= | Expoente | a **= 2 | a = a ** 2 |
//= | Divisão inteira | a //= 2 | a = a // 2 |
Além dos operadores matemáticos temos os operadores lógicos. Os resultados de operações lógicas são booleanos (True ou False) e eles são a base das decisões feitas em códigos. Alguns desses operadores podem ser usados, como veremos, em outros objetos que não apenas números.
Operador | Significado | Exemplo |
---|---|---|
> | maior que | x > y |
>= | maior ou igual a | x ≥ y |
< | menor que | x < y |
>= | menor ou igual a | x ≤ y |
== | igual a | x == y |
!= | diferente de | x != y |
Exemplos de uso de operações lógicas:
» num1 = 12 » num2 = 25 » print(num1 > num2) ↳ False » print(num2 == num1 *2 +1) ↳ True » string1 = 'isso' » string2 = 'esse' » print(string1 != string2) ↳ True
Execução do código em python
Foi sugerido o uso do Jupyter Notebook para o aprendizado do conteúdo nesse artigo. Isso permite interatividade e facilidade de instalação dos pacotes, bem como uma boa visualização das saídas de código. No entanto muitas vezes é necessário rodar blocos grandes de código sem preocupação com resultados e saídas intermediárias.
Arquivos contendo comandos python e gravados com a extensão *.py podem ser executados em qualquer máquina que tenha o interpretador instalado. Por exemplo, suponha que temos na pasta de trabalho ativa o arquivo teste.csv e queremos alterar o seu nome. Usando um editor ASCII qualquer, como o Notepad do Windows, Geany ou Gedit no Linux e TextEdit no Mac, gravamos um arquivo com o nome de alterarNome.py, com o seguinte conteúdo:
#!/usr/bin/env python import os for arq in os.listdir(): print(arq) nome_antigo = 'teste.csv' nome_novo = 'teste_novo.csv' os.rename(nome_antigo, nome_novo)
Para executar esse arquivo abrimos uma sessão do terminal e digitamos:
» python alterarNome.py
A primeira linha contém o shebang (#!) com a instrução de onde está instalado o python em seu computador. Depois é importada a biblioteca os que contém comandos de interação com o sistema operacional. Seu método os.listdir()
retorna uma lista com os arquivos na pasta atual, que são impressos dento do laço for
. Se existir na pasta um arquivo teste.csv ele será renomeado para teste_novo.csv. Uma mensagem de erro será exibida se o arquivo teste.csv não existir.
Bibliografia
Python.org
- Python Org.: Python Home
- Python Docs: Python 3.9.2 documentation
- pypi.org, Python Package Index, Pypi
Livros
- Barry, Paul: Head First Python, O’Reilly, Sebastopol, 2011.
- Ceder, Vernon: The Quick Python Book, 2 ed., Manning Publications Co., Greenwich, 2010.
- Downey, Allen: How to Think Like a Computer Scientist, Cambridge University Press, Nova Iorque, 2009.
- Hall, Tim; Stacey, J-P: Python 3 for Absolute Beginners, Apress, Nova Iorque, 2009.
- Hetland, Magnus Lie: Beginning Python, From Novice to Professional, Apress, Nova Iorque, 2005.
- Lambert, Kenneth: Fundamentals of Python: From First Programs Through Data Structures, Cengage, Boston, 2010.
- Lee, Kent D.: Python Programming Fundamentals, Springer-Verlag, Londres, 2011.
- Lutz, Mark:Learning Python, 4ª Edição, O’Reilly, Sebastopol, 2005.
- Payne, James: Beginning Python, Using Python 2.6 and Python 3.1, Wiley, Indianoplis, 2010.
- Summerfield, Mark: Programming in Python 3, a complete introduction to the Python language, Pearson, Boston, 2010.
Recursos na internet
- Coursera, Michigan: Programming for Everybody (Getting Started with Python), acessado em fevereiro 2021.
- Datacamp: Introduction to Python for Data Science, acessado em fevereiro 2021.
- Datacamp: What is Python, acessado em fevereiro 2021.
- Tutorials Point: Python Tutorial, acessado em janeiro 2021.
- W3schools: Python Tutorial, acessado em fevereiro 2021.