Você está na página 1de 14

Aula 4 – Introdução ao Python

MAC 110/115 - Marcilio

Aula 4 – Introdução ao Python


Algoritmos e Programas

Considere o nosso MSC. O Processador Central, “entende” o conjunto de instruções, leia, imprima, atribuição
e condicional e com ela resolvemos vários problemas.

Encontramos então uma solução para o problema e depois expressamos essa solução naquele conjunto de
instruções do MSC. A solução do problema é o Algoritmo que resolve esse problema e o conjunto de
instruções numa determinada linguagem é o Programa.

Um Algoritmo é então uma lista passo-a-passo de instruções que, caso sejam seguidas exatamente, resolve o
problema. Para que seja um algoritmo essa lista de instruções passo-a-passo tem que ser bem definida, finita e
sempre produzir o mesmo resultado.

O Programa é a expressão do Algoritmo numa determinada linguagem.

A linguagem simbólica ou linguagem de alto nível

As instruções que definimos no MSC são de fato, instruções simbólicas (escritas em português), mas que
seguem uma forma rígida de construção. Um computador real não “entende” direto uma linguagem simbólica
como a que usamos. Além disso, os programas para serem executados precisam estar dentro da memória do
computador, onde são armazenados apenas valores numéricos. A linguagem “entendida” pelos computadores
reais são as linguagens de máquina.

A linguagem de máquina nada mais é que uma codificação numérica da linguagem simbólica.

Linguagens simbólicas são chamadas de linguagens de alto nível. O computador não “entende” diretamente
a linguagem de alto nível. Para que um programa ou um algoritmo possa ser executado pelo computador, este
precisa ser traduzido para a linguagem de máquina.

A linguagem de alto nível, embora simbólica, possui um formato rígido (sintaxe). Daí poder ser traduzida
automaticamente para a linguagem de máquina. Automaticamente quer dizer, ser traduzida por um programa
que se chama COMPILADOR.

O processo de compilação

Programa em Linguagem de alto Nível (LAN)


(código fonte)

Compilador - traduz LAN para a


Linguagem de Máquina (LM)

Programa em Linguagem de Máquina


(código objeto ou executável)

Execução do programa

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

A função do compilador é, portanto traduzir um programa em LAN (código fonte) para LM (código objeto ou
executável). Cada LAN possui o seu compilador, que nada mais é que um tradutor desta LAN para a LM.
A linguagem Python é uma LAN.

Outra forma para que o computador consiga executar um programa escrito em uma LAN é o uso de um
programa interpretador (Máquina Virtual). Um programa em LAN não precisa ser necessariamente traduzido
para a LM para ser executado. Pode ser traduzido para uma linguagem intermediária (em geral chamada de
ByteCode) que será interpretada por um programa interpretador. É um recurso bastante útil, pois torna o
programa executável independente de máquina.

Este é o caso geral de programas em Python. São interpretados e não compilados. O desempenho de um
programa interpretado é em geral menor que o de um programa compilado. Isso não faz muita diferença no
caso de programas que demandam pouco tempo de execução.

Programa em Linguagem Python


(código fonte em Python)

Compilador da Linguagem Python


(traduz para uma linguagem intermediária ou ByteCode)

Programa em Linguagem Intermediária


(código em ByteCode)

Interpretador da Linguagem Intermediária


ou Máquina Virtual

Execução do programa

Podemos abstrair a existência da Linguagem Intermediária e pensar apenas que o programa em Python é
simplesmente interpretado.

Programa em Linguagem Python


(código fonte em Python)

Interpretador da Linguagem Python


(Máquina Virtual)

Execução do programa

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

Pequena história da linguagem Python

Conforme sabemos, existem centenas de linguagens de alto nível. Citando apenas algumas das principais –
Fortran, Cobol, Algol, PL/1, Pascal, C, C++, PHP, Java. Cada uma delas foi definida com certos objetivos
específicos, aplicabilidades em áreas e problemas para as quais se mostravam mais adequadas.

A linguagem Python tem história recente e pertence a uma classe recente de linguagens ditas orientadas a
objetos. A seguir, uma breve história e cronologia:

Concebida em 1989 por Guido van Rossun no Instituto de Pesquisa Nacional para Matemática e Ciência da
Computação (CWI), nos Países Baixos, a linguagem se mostrou mais produtiva que a linguagem C embora
com desempenho menor.

Possui uma sintaxe derivada da linguagem C, mas incorpora construções bastante avançadas de outras
linguagens como Icon, Haskell, Modula-3 e Perl.

1991 – primeira publicação

1994 – versões 1.0 a 1.2 com adições de programação funcional

1995 – 1999 – novas versões. Guido van Rossun trabalhou no CNRI em Reston, EUA

2000 – versão 2.0 – grupo de desenvolvedores no PythonLabs e depois Digital Creations

2001 – 2007 – novas versões e adições

2008 – versão 2.8 e início da transição para a versão 3.0 (atual). A linguagem já é utilizada
em servidores de aplicação, computação gráfica, linguagem de script, bancos de dados, etc.

Atualmente, Python é um dos componentes padrões de vários sistemas operacionais e


reconhecidamente uma linguagem bastante relevante para o ensino de computação.

Mais detalhes em: https://pt.wikipedia.org/wiki/Python

Uso do Interpretador da Linguagem Python

O interpretador pode ser usado no modo linha de comando (“shell mode”) e no modo de
script (“program mode”). No modo de linha de comando, você digita comandos ou
expressões em Python e o interpretador mostra o resultado se houver a cada linha digitada.

O exemplo a seguir ilustra o funcionamento no modo linha de comando:


$ python3
Python 3.4.3+ (default, Oct 14 2015, 16:03:50)
[GCC 5.2.1 20151010] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 + 3
5
>>>

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

O símbolo >>> é chamado de prompt do Python. O interpretador usa o prompt para indicar
que está pronto para receber um comando. Ao digitar 2 + 3, o interpretador avalia a
expressão e responde 5. A seguir, ele fornece um novo prompt na linha seguinte, indicando
que ele está pronto para um novo comando.

O modo linha de comando é conveniente para testar pequenos pedaços de código, pois você
recebe uma resposta rapidamente. Para qualquer coisa maior que algumas linhas é melhor
usar o modo script.

No modo script podemos escrever um programa inteiro em um arquivo texto e usar o


interpretador para executar o conteúdo do arquivo como um todo. Pode ser usado qualquer
editor de texto, inclusive o do próprio interpretador, para gerar arquivo com extensão .py
(exemplo: “meu-programa.py”).

Primeiros programas em Python:

Vejamos agora alguns programas simples escritos em Python.

Estrutura do programa:
Um programa simples em Python é uma sequência de comandos:

# comandos do programa
...
...

O símbolo # indica que a frase a seguir na mesma linha é um comentário do programa. Usado para deixar
mais claro o que determinado comando ou conjunto de comandos realiza.

Variáveis
Uma variável é um nome que se refere a um valor. Um comando de atribuição cria uma nova variável e lhe
atribui um valor.

Variáveis são usadas para guardarmos valores que serão usados mais tarde no programa.

Atribuição
Um comando é uma unidade de código que o interpretador pode executar. Um comando de atribuição tem a
seguinte forma:

variável = expressão

Significado:

1. o valor da expressão é calculado;


2. a variável é criada, com as características necessárias para referenciar o valor da expressão;
3. a variável passa a fazer referência/guardar o valor

Exemplos:

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

num = 15
soma = 0 # este é um comentário
soma = soma + num
a = 3
b = 4
x = (a + b) / (a – b)
y = y + 1
x_quad = x * x
delta = b * b – 4 * a * c
novo_x = (x + y) * (x – y) / xquad

Cada nome de variáveis é uma letra ou o símbolo '_' (underscore) seguida de letras, números e '_'.
Atenção, maiúscula é diferente de minúscula. Assim, maior, MAIOR e Maior são variáveis diferentes.

Expressão aritmética

As expressões aritméticas são escritas na forma usual em linha, contendo constantes, variáveis, parêntesis e os
operadores mais comuns: + (adição) , - (subtração), * (multiplicação), / (divisão), **
(exponenciação), % (resto da divisão) e // (divisão inteira). Veremos à frente com mais detalhes os
operadores % e // que são usados para tratamento com valores inteiros.

A prioridade dos operadores também é a usual na tabela abaixo. Expressões entre parêntesis são calculadas
antes alterando assim a prioridade. Em caso de mesma prioridade o cálculo é feito da esquerda para a direita:

Nível Operadores
3 (alto) **
2 *,/,//,%
1 (baixo) +,-

Há uma exceção à regra da esquerda para a direita quando o operador é ** (exponenciação). Razões
históricas provocaram esta definição:

2**3**2 equivale a 2**(3**2) e não (2**3)**2

print()

A função print() permite ao programa exibir mensagens. Por exemplo:

print("Olá, mundo!")
print("A soma é", soma)

Escreve na tela do computador

Olá, mundo!
A soma é 15

Supondo que a variável soma tem o valor 15.

O que será impresso pelo programa abaixo?

a = 3

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

b = 4
soma = a + b
print("A soma de", a, "+", b, "eh igual a", soma)

Saída:

A soma de 3 + 4 eh igual a 7

E se os valores a serem somados fossem digitados pelo usuário?


Neste caso temos que usar o comando input.

input()

Um programa pode utilizar a função input() para receber os dados ou valores que um usuário fornece
através do teclado. O formato típico de um comando leitura é

variável = input("Mensagem de Prompt")

O programa pára e espera pela digitação de algum texto seguido do ENTER. "mensagem
de Prompt" é opcional e pode indicar o que programa deseja. Por exemplo,

nome = input("Qual é o seu nome? ")


print(nome, ", me fale sobre você.")

O que o programa abaixo imprime se forem digitados 23 e 45?

a = input("Digite o primeiro numero: ")


b = input("Digite o segundo numero: ")
soma = a + b
print("A soma de", a, "+", b, "eh igual a", soma)

Digite o primeiro numero:23


Digite o segundo numero:45
A soma de 23 + 45 eh igual a 2345

O valor que o usuário fornece e que será retornada pelo input() será sempre a cadeia de caracteres que foi
digitada, ou seja um string e não um número. Quando o operador + é realizado sobre strings, elas são
concatenados (“grudados”) em vez de adicionados. Como veremos mais tarde, a operação de concatenar
strings através do operador + é muito útil.

Não resolvemos o nosso problema. Desejamos adicionar dois números inteiros. Precisamos, portanto de uma
maneira para converter uma string em um número inteiro. Usamos para isso a função de conversão int().

int()

A função int() converte uma dada string para um número inteiro.


O que será impresso pelo programa abaixo?

a = int("123")
print("valor inteiro =", a)

valor inteiro = 123

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

A string deve ser algo como "123" ou "-5". Strings com caracteres estranhos à constantes
inteiras ocasionam erros de sintaxe. Exemplos:

>>> a = int("1.5")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.5'
>>> a = int("a156")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a156'

Retornando agora ao nosso problema original.

P4.1) Dados 2 números calcular a sua soma.

A solução ficaria:

# a_str e b_str guardam strings


a_str = input("Digite o primeiro numero: ")
b_str = input("Digite o segundo numero: ")

# a_int e b_int guardam inteiros


a_int = int(a_str) # converte string/texto para inteiro
b_int = int(b_str) # converte string/texto para inteiro

# calcule a soma entre valores que são números inteiros


soma = a_int + b_int

# imprima a soma
print("A soma de", a_int, "+", b_int, "eh igual a", soma)

Como não precisamos guardar os valores na forma de texto, podemos simplificar o programa compondo as
funções int() e input() da seguinte forma:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
soma = a + b
print("A soma de", a, "+", b, "eh igual a", soma)

Ficou uma solução bem mais curta e compacta.

Strings

Uma string é texto entre aspas (") ou apóstrofo (').

Valores

Programas manipulam valores. Valores podem ser de diferentes tipos ou classes. Até agora
vimos que um valor pode ser um número inteiro (classe int) ou um texto (classe str). Por

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

exemplo, "Oi" é um string (valor da classe str), 23 é um inteiro (valor da classe int), e
"23" é um string (valor da classe str).

Abaixo alguns exemplos que esclarecem o conceito de tipos ou classes. A função type() mostra o tipo do
valor.

>>> type("Oi")
<class 'str'>
>>> type(23)
<class 'int'>
>>> type("23")
<class 'str'>
>>> type(1.5)
<class 'float'>

Enunciado dos problemas

Nestas notas sempre que um problema se referir a DADOS, significa que estes devem ser digitados pelo
usuário. O programa deve sempre imprimir o resultado calculado.

A indentação (ou endentação) dos programas em Python

O termo indentar ou endentar (neologismo para indentation do inglês) quando se refere ao


código fonte de um programa, é o recuo de um texto em relação à sua margem. A
indentação é usada para ressaltar ou definir a estrutura de um programa.

Enquanto na maioria das demais linguagens a indentação é opcional, apesar de ser uma boa
prática, pois melhora muito a compreensão do código fonte, em Python ela é obrigatória.

A exigência por indentação não é exclusividade do Python. Também está presente em


linguagens como Occan e Haskell.

Outras linguagens de programação com C, Pascal e Java possuem delimitadores (begin e


end, { e } ) que delimitam os blocos, ou seja, os comandos de mesma hierarquia. Por isso, a
indentação não ser obrigatória.

O editor de texto do Python já fornece um tipo de indentação bastante usual, porém o estilo
é livre e depende do gosto do programador. O importante é que os comandos de mesma
hierarquia iniciem na mesma coluna de cada linha.

No decorrer do curso ficará mais claro o que significa essa hierarquia de comandos.
P4.2) Dados 2 números, calcular a soma, subtração, multiplicação e divisão

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
soma = a + b
subi = a - b
mult = a * b
divi = a / b

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

print("A soma de", a, "+", b, "eh igual a", soma)


print("A subtração de", a, "-", b, "eh igual a", subi)
print("A multiplicação de", a, "*", b, "eh igual a", mult)
print("A divisão de", a, "/", b, "eh igual a", divi)

Como já devem ter notado não é necessário que tenhamos 4 variáveis neste programa.

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))

c = a + b
print("A soma de", a, "+", b, "eh igual a", c)

c = a - b
print("A subtração de", a, "-", b, "eh igual a", c)

c = a * b
print("A multiplicação de", a, "*", b, "eh igual a", c)

c = a / b
print("A divisão de", a, "/", b, "eh igual a", c)

Observe que o valor resultado da divisão pode ser um valor fracionário. A mesma variável c que recebeu
valores inteiros nas operações de +, - e *, recebe um valor fracionário (classe float) na operação /.

Exercícios:

P4.3) Dados 2 números calcular a média

Problemas envolvendo condicionais

P4.4) Dados 2 números (supor distintos) calcular o maior.

leia a, b
se a > b
então imprima a
senão imprima b

Em Python:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a > b: print("O maior eh", a)
else: print("O maior eh", b)

Outra forma:

leia a, b
se a > b
então maior ← a
senão maior ← b
imprima maior

Em Python:

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a > b: maior = a
else: maior = b

print("O maior eh", maior)

P4.5) Idem, supondo que podem ser iguais. Neste caso imprimir “iguais”

leia a, b
se a > b
então imprima a
senão se b > a
então imprima b
senão imprima “iguais”

Em Python:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a > b: print("O maior eh", a)
elif b > a: print("O maior eh", b)
else: print("Iguais")

Essa última introduz a construção elif, usada quando há um if após um else (else if).

Agora com uma indentação diferente:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a > b:
print("O maior eh", a)
elif b > a:
print("O maior eh", b)
else:
print("Iguais")

Usando else: if em vez de elif:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a > b: print("O maior eh", a)
else:
if b > a: print("O maior eh", b)
else: print("Iguais")

Outra forma:

leia a, b
se a = b
então imprima “iguais”
senão se a > b
então imprima a
senão imprima b

Em Python:

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a == b: print("Iguais")
elif a > b: print("O maior eh", a)
else: print("O maior eh", b)

Outra forma:

leia a, b
se a = b então imprima “iguais”
se a > b então imprima a
se a < b então imprima b

Apesar de correta, essa maneira de resolver faz com que sempre sejam efetuadas as 3 comparações. A solução
anterior faz apenas 1 ou 2 comparações. Nesse sentido, dizemos que essa última forma é menos eficiente que
a anterior.

Essa solução também tem uma particularidade. Não há a parte do senão. Na linguagem Python, a parte do
senão (else) é opcional.

Em Python:

a = int(input("Digite o primeiro numero: "))


b = int(input("Digite o segundo numero: "))
if a == b: print("Iguais")
if a > b: print("O maior eh", a)
if b > a: print("O maior eh", b)

Mais sobre o comando if

Nos exemplos acima vimos as várias formas do comando if. O comando envolve sempre a avaliação de uma
condição para decidir o que será executado. A condição pode ser uma expressão lógica ou expressão booleana
como veremos a frente. Vamos supor por enquanto que a condição é simplesmente uma comparação de dois
valores usando os operadores relacionais:

== (igual), > (maior), < (menor), >= (maior ou igual), <= (menor ou igual), != (diferente)

Exemplos:

a > b
c <= 0
x == y
x != -32
a + b < (c + d) * 5
b * b – 4 * a * c >= 0

As formas possíveis do comando if são:

a) seleção binária

if <comparação>:
comandos-1 # executados se a comparação for verdadeira
else:
comandos-1 # executados se a comparação for falsa

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

Exemplo:

if a > b:
print(a)
print(b)
else:
print (b)
print (a)

b) seleção unária – omissão do else

O else pode ser omitido se necessário.

if <comparação>:
comandos-1 # executados se a comparação for verdadeira

Exemplo:

if a > b:
print(a)
print(b)

c) Condicional dentro de condicional

É um caso particular dos tipos acima. Note que comandos, comandos-1 e comandos-2 podem ser
quaisquer comandos. Em particular podem ser o próprio comando if.

No exemplo abaixo, é impresso aquele que é maior ou igual dentre os três valores:

if a >= b:
if a >= c:
print (a)
else:
print (c)
else:
if b >= c:
print (b)
else:
print (c)

d) Condicional encadeada - elif

Quando o comando seguinte ao else é um if, pode ser usado o elif.

Exemplo (mesmo anterior):

if a >= b:
if a > c:
print (a)
else:
print (c)
elif b >= c:
print (b)
else:
print (c)

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

O uso do elif é especialmente interessante quanto há um encadeamento maior de if após else.


Suponha o seguinte problema:

P4.6) Dado um número entre 0 e 9, imprimir o nome desse algarismo.

# ler um algarismo
n = int(input("Digite um dígito entre 0 e 9: "))

# imprime o nome do algarismo


if n == 0: print("zero")
elif n == 1: print("um")
elif n == 2: print("dois")
elif n == 3: print("tres")
elif n == 4: print("quatro")
elif n == 5: print("cinco")
elif n == 6: print("seis")
elif n == 7: print("sete")
elif n == 8: print("oito")
elif n == 9: print("nove")
else: print("não é um algarismo")

Ainda sobre o comando if

Nas definições acima comandos, comandos-1 e comandos-2 tem que ter pelo menos um comando.

Cuidado com a indentação. Os exemplos abaixo não são equivalentes:

if a > b:
print (a)
else:
print (b)
print (“fim”)

if a > b:
print (a)
else:
print (b)
print (“fim”)

Exercícios:

P4.7) Dados 2 números imprimi-los em ordem crescente. Considere ordem crescente quando o primeiro é
menor ou igual ao segundo.

P4.8) Idem em ordem decrescente

P4.9) Dados 3 números determinar o menor. Considere menor, o que for menor ou igual aos outros.

P4.10) Dados 3 números imprimi-los em ordem crescente. Considere ordem crescente quando for menor ou
igual ao seguinte.

P4.11) Idem imprimindo em ordem decrescente. Considere ordem decrescente quando for maior ou igual ao
seguinte.

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio
Aula 4 – Introdução ao Python
MAC 110/115 - Marcilio

P4.12) Dados 3 números inteiros positivos verificar se são lados de um triângulo retângulo.

P4.13) Idem, verificando se são lados de algum triângulo, isto é, se o maior é menor que a soma dos outros
dois.

Aula 4 – Introdução ao Python


MAC 110/115 - Marcilio

Você também pode gostar