Você está na página 1de 15

Introdução à programação com python

Maurício José da Silva

Sumário
Introdução à programação com python 1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Características do Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Instalação do Python e da IDE PyCharm . . . . . . . . . . . . . . . . . . . . . . . 2
Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Nomes de variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Comando de atribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Conversão entre tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . 8
Operadores matemáticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Ordem de operações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Comando de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Comando de saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Exercícios resolvidos e comentados . . . . . . . . . . . . . . . . . . . . . . . . . 14

Introdução
A ideia de um ser humano, enquanto for apenas um pensamento, é algo amorfo, que
existe por si mesma, não necessitando de nada, além de si, para descrevê-la. Entre-
tanto para compartilhá-la com outras pessoas precisamos descrever esta ideia com
palavras e frases, transformando este pensamento em uma linguagem natural hu-
mana.
Computadores e outros dispositivos eletrônicos programáveis possuem sua própria
forma de “pensar”, isto é, o código binário. Máquinas seguem instruções determi-
nadas pela energização (ou não) de determinadas partes em seus componentes.
Então para transmitir uma ideia para uma máquina devo me comunicar em zeros
e uns? A resposta para esta pergunta é um “sim” e um “não”. Um “sim” pois, de fato,

1
a “ideia” que será recebida pela máquina será descrita como uma sequência de zeros
e uns. O “não” se refere a dizer que embora seja possível traduzir sua ideia para uma
linguagem natural da máquina (binário), este não é o processo mais comum. A pro-
gramação diretamente em binário é algo demasiadamente complexo para humanos,
pois a forma básica de expressão do ser humano são as palavras e não sequências
numéricas.
Para contornar este problema foram criadas as linguagens de programação, que
são pontes entre a linguagem natural humana e a linguagem da máquina (binária),
mesclando conceitos das linguagens de máquina e natural humana.
As linguagens de programação são classificadas em vários níveis de acordo com
sua proximidade com a linguagem humana. Linguagens de baixo nível tem a função de
descrever uma situação mais próxima do “ponto de vista” de uma máquina, ao passo
que linguagens de alto nível são concebidas com o propósito de tornar fácil a tradução
de um pensamento (algoritmo), se assemelhando com fidelidade à linguagem humana
que seria necessária para descrever aquela ideia.
Neste tutorial descreveremos a linguagem de programação Python cujo objetivo é
se aproximar bastante da linguagem humana, sendo assim intuitiva, fácil e ao mesmo
tempo sendo bastante flexível, se adequando ao uso em diversas situações.

Características do Python
Python é uma linguagem de programação interpretada, de código-fonte aberto e
disponível para vários sistemas operacionais. Ser uma linguagem interpretada sig-
nifica dizer que ao se escrever um programa, este não será compilado (traduzido para
uma linguagem de máquina), mas sim ‘lido” por um outro programa (chamado de
interpretador) que traduzirá para a máquina o que seu programa quer dizer.
O interpretador (Figura 1) para Python é interativo, ou seja, é possível executá-lo
sem fornecer algoritmo para ele. Ao invés disso, o interpretador disponibilizará uma
interface interativa onde é possível inserir os comandos desejados um por um e ver
o efeito de cada um deles.

Instalação do Python e da IDE PyCharm


Caso o usuário esteja utilizando um sistema Linux ou OS X (Apple), o interpretador
para Python já vem instalado por padrão, sendo apenas necessário escrever o co-
mando “python” no seu programa de terminal favorito. Para usuários do sistema

2
Figure 1: Console interativo do python da IDE PyCharm

operacional Windows, o interpretador para Python deve ser baixado através do site
(http://www.python.org) e instalado. Neste último sistema o usuário encontra um
utilitário para fazer o papel de terminal (e editor de python) no Windows, denomi-
nado IDLE.
Uma IDE de desenvolvimento é um ambiente de desenvolvimento que integra
diferentes aplicações permitindo que o programador escreva, execute e debug seus
códigos. Diversas IDEs estão disponíveis para a linguagem Python. Durante as aulas
e para as atividades será utilizada a IDE PyCharm (Figure 2) disponibilizada gratuita-
mente pela JetBrains, que está disponível para download no link (https://www.jetbrains.
com/pycharm/download/#section=windows).

Variáveis
Variáveis são um conceito importante em programação. Uma variável é apenas um
nome que você atribui a um objeto. Programadores armazenam dados nelas para
tornar seus códigos mais legíveis e para não ter que lembrar a todo momento o que
são certas coisas. Sendo assim, podemos definir que variáveis são formas de se ar-
mazenar dados para uso posterior.
As variáveis podem ser classificadas em 3 tipos básicos:

• int - Um número inteiro (Ex: 10, 5, 123, 0)

• float - Um ponto flutuante (Ex: 10.2, 5.0, 123.12, 0.9)

• string - Uma sequência de caracteres (“python”, “programação”)

Ao contrário da maioria das outras linguagens, em Python, não é necessário


declarar as variáveis que serão usadas, tampouco definir seu tipo. A própria sintaxe
do dado a ser armazenado identifica o tipo da variável para armazená-lo. Por exem-
plo, caso desejese atribuir o valor 3 à variável A, basta digitar A = 3. Python saberá

3
Figure 2: IDE PyCharm Community

que A é um inteiro (tipo “int”). Por outro lado, se o valor a ser armazenado fosse 3.2
que é um dado do tipo “ponto flutuante”, este deveria ser expresso como A = 3.2. Ob-
serve que, para Python, A = 3 e B = 3.0 são variáveis de tipos diferentes e isto deve ser
levado em conta ao se realizar certos tipos de manipulações de dados.
A Figura 3 mostra um exemplo de atribuição de um valor do tipo inteiro (int)
para a variável A e de um valor do tipo ponto flutuante (float) para a variável B. Se
observarmos no canto direito da Figura, notamos que a IDE PyCharm exibe as variáveis
que estão disponíveis para uso e seus respectivos tipos de dados.

Figure 3: Diferentes tipos de dados em Python

4
String
String é um tipo de objeto formado por uma sequência imutável de caracteres que
nos permite trabalhar com textos. Veja Figura 4

Figure 4: Exemplo de uso de string

Percebemos que elas são delimitadas por aspas, podemos utilizar tanto aspas
duplas como as simples. Se utilizarmos aspas duplas, como o mostrado no exem-
plo acima, podemos usar as simples para aplicações dentro do texto que estamos
escrevendo, o contrário também é verdadeiro (Figura 5).

Figure 5: Exemplo de uso de as na string

No exemplo da Figura 5 utilizamos um outro artifício para trabalharmos com


strings, o \n. Este por sua vez, tem a função de “pular uma linha” e escrever o texto,
que está depois do \n, nessa nova linha. Tanto isso é verdade que no mesmo exem-
plo, quando usamos o comando print é mostrada a parte do texto que diz: “Cinquenta
anos em cinco.”, impresso na linha seguinte.
Outro artifício parecido com \n, é o \t que tem o objetivo de acrescentar ao texto
que vem após, um espaço de tabulação.

Nomes de variáveis
Nomes de variáveis podem ser longos. Eles podem conter letras e dígitos, porém
devem começar com uma letra ou sublinhado (_). Apesar de ser possível usar letras

5
and as assert break class continue
def None del elif else except
exec finally for from global if
import in is lambda nonlocal not
or pass raise return try while
with yield True False

Table 1: Palavras reservadas em Python

maiúsculas, em geral não fazemos isso. Se você fizer, lembre-se que Dia e dia são
variáveis diferentes.

Cuidado: Nomes de variáveis nunca podem conter espaços em


branco.

O caractere sublinhado (_) também pode aparecer em um nome. Ele é usado às


vezes em nomes com várias palavras, como meu_nome ou preco_do_cafe. Há algu-
mas situações onde nomes começando com sublinhado têm um significado especial,
portanto uma dica boa para iniciantes é sempre começar os nomes com uma letra.

Se você der um nome ilegal a uma variável, você terá um erro de


sintaxe. No exemplo abaixo, todos os nomes são ilegais.

76trombones = ”grande parada”


mais$ = 1000000
class = ”Programação I”

76trombones é ilegal porque não começa com uma letra mais$ é ilegal porque
contém um caractere inválido, o sinal de dólar. Mas qual é o problema com class?
Acontece que class é uma das palavras reservadas de Python. As palavras reser-
vadas definem as regras de sintaxe e estrutura da linguagem, e elas não podem ser
usadas como nomes de variáveis. Python tem aproximadamente 30 palavras reser-
vadas (e esse número pode variar, à medida em que a linguagem evolui):

6
Uma sugestão é deixar essa lista à mão. Se o interpretador reclamar de um nome
de uma das suas variáveis e você não souber o motivo, verifique se ele está nessa lista.
Programadores geralmente escolhem nomes que façam sentido para os humanos
que irão ler o programa — esses nomes ajudam o programador a documentar, ou se
lembrar, qual é o papel de cada variável.
Portanto, as boas práticas para definir os nomes de suas variáveis são:

• Dê nomes significativos;

• Utilize sempre letras minusculas;

• Separe nomes com mais de uma palavra com o caractere (_);

• Nunca utilize uma palavra reservada;

• Inicie o nome da sua variável sempre com uma letra.

Comando de atribuição
O comando de atribuição, representado nas linguagens de programação pelo símbolo
de igual (=), é utilizado para atribuir um valor a uma variável. Sua representação de
forma genérica é:

<nome da variável> = <expressão>

Quando uma linguagem de programação encontra um comando de atribuição, ela


calcula a expressão que está a direita do sinal de atribuição, pega o valor resultante
e o atribui a variável que está a esquerda do sinal de atribuição. A expressão a direita
pode ser um valor literal (ex: 10, 5.5, “texto”), uma expressão algébrica, uma expressão
lógica, ou qualquer outro tipo de expressão (ou função) que resulte em um ou mais
valores.

Devemos notar que, o fato da expressão a direita utilizar todos os


valores para chegar a um resultado exige que, caso haja alguma var-
iável presente na expressão, essa tenha sido previamente declarada.
Caso contrário, um erro impedirá a execução do programa infor-
mando que a variável utilizada não existe.

7
Alguns exemplos do uso do comando de atribuição são apresentados na Figura 6

Figure 6: Exemplos de uso do comando de atribuição

Conversão entre tipos de dados


Algumas vezes é necessário converter valores de um tipo para outro. Python oferece
algumas funções simples que nos permitem fazer isso. As funções int, float e str
tentarão converter seus argumentos para os tipos int, float e str, respectivamente.
Nós chamamos elas de funções para conversão de tipos.
A função int pode receber um número em ponto flutuante ou uma string, e transformá-
los em um valor do tipo inteiro. Para números em ponto flutuante, ela descarta a
parte decimal do número - um processo que chamamos truncamento para zero ou
simplesmente truncamento do número.
A Figure 7 apresenta duas conversões, uma do tipo string para inteiro e outra
do tipo ponto flutuante para inteiro. Note que, para o segundo caso, o resultado
compreende em somente o valor inteiro do número, ou seja, todos os valores após o
ponto (.) são descartados.

Figure 7: Exemplo de uso da função int() para converter entre tipos

8
Operadores matemáticos
Operadores são símbolos especiais que representam computações como adição, mul-
tiplicação e divisão. Os valores sobre os quais o operador trabalha são chamados de
operandos. Todas as expressões abaixo são válidas em Python, cujo significado é
mais ou menos óbvio (Figura 8):

Figure 8: Operações básicas

Os símbolos +, -, e *, e o uso de parênteses para agrupamento, significam em


Python o mesmo que na matemática. O asterisco (*) é o símbolo para multiplicação, e
** é o símbolo para exponenciação. Adição, subtração, multiplicação e exponenciação
fazem exatamente o que você espera.
Quando um nome de variável aparece no lugar de um operando, ela é trocada
pelo valor a que a variável se refere antes da operação ser realizada. Por exemplo,
suponha que desejamos converter 645 minutos no equivalente em horas. Em Python
3, a divisão é indicada pelo símbolo /, que sempre resulta em um número float (Veja
Figura 9).

Figure 9: Operações de divisão no python 3

E se agora desejássemos saber quantas horas cheias e minutos restantes havia

9
em 645 minutos? Para ajudar nesse tipo de questão, Python nos fornece um segundo
tipo de operador de divisão. Essa versão, chamada divisão inteira, usa o operador //.
Ela sempre trunca o resultado para o menor inteiro mais próximo (Veja Figura 10).

Figure 10: Operações de divisão de inteiro no python 3

Olhe cuidadosamente os primeiros dois exemplos acima: observe que o resul-


tado da divisão real é 10.75, mas o resultado da divisão inteira é simplesmente 10.
Tome cuidado ao escolher o operador correto, dependendo do caso. Se você está
trabalhando com expressões onde precisa de números reais, use o operador /. Se
você deseja um resultado inteiro, use //.
O operador resto (modulus) trabalha em inteiros (e em expressões inteiras) e
fornece o resto da divisão inteira do primeiro operando pelo segundo. Em Python,
o operador resto é o sinal de porcentagem (%). A sintaxe é a mesma da dos outros
operadores (Veja Figura 11).

Figure 11: Operações de resto de divisão de inteiro no python 3

Assim, 7 dividido por 3 é 2 quando usamos divisão inteira e o resto é 1.


O operador resto é surpreendentemente útil. Por exemplo, você pode verificar se
um número é divisível por outro: se x % y é zero, então x é divisível por y. Além disso,
você pode extrair o dígito ou dígitos mais à direita de um número: x % 10 resulta no
dígito mais à direita de x (unidade). De forma similar, x % 100 retorna os últimos dois
dígitos (dezena e unidade).

10
Ordem de operações
Quando mais de um operador aparece em um expressão, a ordem em que são real-
izadas as operações dependem das regras de precedência. Python segue as regras de
precedência dos seus operadores matemáticos da mesma forma que matemática.

• Parênteses têm a mais alta precedência e podem ser usados para forçar que uma
expressão seja calculada na ordem que você deseja. Como expressões entre
parênteses são calculadas primeiro, 2*(3-1) é 4, e (1+1)**(5-2) é 8. Você pode
usar parênteses para tornar uma expressão mais legível, como em (minutos *
100) / 60, mesmo que isto não mude o resultado.

• Exponenciação tem a segunda precedência mais alta, assim 2**1+1 é 3 e não 4,


e 3*1**3 é 3 e não 27.

• Multiplicação e ambas as divisões têm a mesma precedência, que são mais altas
que adição e subtração, que também têm a mesma precedência. Logo, 2*3-1 é 5
e não 4, e 5-2*2 é 1 e não 6.

• Operadores com a mesma precedência são executados da esquerda para a di-


reita. Em álgebra dizemos que eles são associativos à esquerda. Desta forma,
na expressão 6-3+3 a subtração é realizada primeiro e tem como resultado 3.
Depois adicionamos 2 e obtemos o resultado 5. Se os operadores tivessem sido
executados da direita para a esquerda o resultado seria 6-(3+2) que é 1.

Comando de entrada
Todos os exemplos que vimos até agora os valores das variáveis foram setados dentro
do próprio programa, o que funciona perfeitamente bem. Porém, e se quisermos criar
programa em que o usuário pudesse digitar qualquer valor para uma variável.
Para fazer isso, precisamos uma forma de obter dados do usuário. Por sorte, em
Python há uma função pronta que faz isso, denominada input.

n = input(“Por favor digite o seu nome: ”)

A função input permite que apresentemos um texto (ou prompt). Quando a função
é executada, o prompt é exibido. O usuário do programa pode digitar seu nome e

11
pressionar Enter. Quando isso acontece, o texto digitado é retornado pela função in-
put, e nesse caso, é associado à variável n. Experimente algumas vezes este exemplo
e tente nomes diferentes na caixa de entrada que aparece.
É fundamental lembrar que a função input retorna uma string. Mesmo se você
pedir para o usuário digitar a sua idade, você obterá como resposta uma string como
“17”.

Portanto, é o seu trabalho, como programador, converter essa string


em um int ou float usando as funções de conversão int ou float que
vimos antes.

Como exemplo, a Figura 12 mostra um programa para converter minutos em horas


e minutos. O comando input permite que o usuário digite o número de minutos. Então
converteremos essa string para um inteiro. A partir desse ponto, o programa é igual.

Figure 12: Programa que converte minutos em horas e minutos

A variável entrada corresponde à string que foi digitada pelo usuário. Como dito
antes, mesmo que a esta string seja 150, ainda assim é uma string e não um número.
Para convertê-la a um número, usamos a função int. O resultado é referenciado por
totalMins. Agora, cada vez que você executar o programa, poderá digitar um novo
valor para o total de minutos a converter!

Comando de saída
Em diversos exemplos utilizados ao longo deste texto você deve ter notado a presença
de um elemento que ainda não mencionamos, a função print. A função print tem como
objetivo exibir uma mensagem na tela para informar algo ao usuário. Isso significa

12
que ela irá imprimir na tela o texto que ela receber como parâmetro. Adicionalmente,
o programador pode passar vários parâmetros para função print, ela irá concatenar,
ou agrupar todos os parâmetros em uma única string que será exibida na tela. A
Figura 13 apresenta alguns exemplos de uso da função print.

Figure 13: Programa que converte minutos em horas e minutos

Na Figura 13 a função print é utilizada em dois momentos. Em um primeiro mo-


mento ela utilizada para exibir uma mensagem na tela informando qual o objetivo
do programa, recebendo um único parâmetro com a string desejada. Em um segundo
momento ela é utilizada para exibir o resultado da conversão de minutos para horas.
Para isso, ela recebe o texto juntamente com as variáveis, separados por vírgula, de
modo que eles formem uma mensagem que faz sentido para o usuário. A seguir, a
Figura 14, apresenta um programa aprimorado para resolver o problema acima.

Figure 14: Programa que converte minutos em horas e minutos

13
Exercícios resolvidos e comentados
1. Faça um algoritmo que leia as 3 notas de um aluno e calcule a média final deste
aluno. Considerar que a média é ponderada e que o peso das notas é: 2, 3 e 5,
respectivamente.
n1 ∗ p1 + n2 ∗ p2 + n3 ∗ p3
p1 + p2 + p3

Solução:
1 print (" Programa que calcula a média ponderada de três notas .")
2

3 n1 = input (" Digite a primeira nota: ")


4 n2 = input (" Digite a segunda nota: ")
5 n3 = input (" Digite a terceira nota: ")
6

7 n1 = float (n1)
8 n2 = float (n2)
9 n3 = float (n3)
10

11 media = (n1 *2 + n2 *3 + n3 *5) /(2+3+5)


12

13 print (" Média ponderada :", media )

Comentários sobre a solução: Nas linhas 7,8 e 9 a função float foi uti-
lizada para fazer a conversão das notas de string para float. Dessa forma
as casas decimas das notas digitadas serão preservadas e a média será
mais precisa. Outra questão importante pode ser observada na linha 11,
onde a média ponderada é calculada. Tanto no numerador quando no
denominador os parenteses foram utilizados para garantir a exatidão na
resposta. Note que, se não colocarmos os parênteses o resultado obtido
será diferente e portanto incorreto, pois as operações de adição e sub-
tração aconteceriam na ordem errada.

2. Faça um algoritmo que receba como entrada o valor do raio de uma esfera e
calcule a área total da esfera.

A = 4 ∗ π ∗ r2

14
Onde: A é a área da esfera e r é o raio.

Solução:
1 print (" Programa que calcula a área total de uma esfera .")
2 raio = input (" Digite o raio da esfera : ")
3 raio = float (raio)
4 areatotal = 4*3.141516* raio **2
5 print ("Área total da esfera :", areatotal )

Comentários sobre a solução: Na linha 4 o operador ** foi utilizado para


realizar a exponenciação. Observe que neste caso não há a necessidade
do uso dos parênteses porque o operador de exponenciação tem pre-
cedência sobre o de multiplicação.

3. Faça um Algoritmo que dados dois lados de um triângulo retângulo calcule a


respectiva hipotenusa.

h = a2 + b 2

Solução:
1 print (" Programa que calcula a hipotenusa .")
2 cateto_1 = input (" Digite o primeiro cateto : ")
3 cateto_2 = input (" Digite o segundo cateto : ")
4

5 cateto_1 = float ( cateto_1 )


6 cateto_2 = float ( cateto_2 )
7

8 hipotenusa = ( cateto_1 **2 + cateto_2 **2) **(1/2)


9 print (" Hipotenusa :", hipotenusa )

Comentários sobre a solução: Na linha 8, notamos que a operação de raiz


quadrada foi convertida para exponenciação. Isso, porque para fazermos
operações matemática um pouco mais complexas, como raiz quadrada,
calculo de seno e cosseno e logaritmo precisamos importar a biblioteca
math. Porém, o uso de bibliotecas será abordado em um momento futuro.

15

Você também pode gostar