Algoritmos e Programação - Material Unificado

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 482

ALGORITMOS E PROGRAMAÇÃO

DE COMPUTADORES I

Noção de Algoritmos
CONSTRUÇÃO DE PROGRAMAS
ALGORITMO
Um algoritmo é uma sequência de passos
que visam atingir um objetivo bem definido.
-Pessoas têm inteligência e habilidade
racional: fazem perguntas para se
esclarecer.
-Computador não tem senso próprio: deve
receber instruções explícitas e precisas
(algoritmos).
ALGORITMO
Um algoritmo correto deve possuir 3
qualidades:
Cada passo do algoritmo deve ser uma
instrução que possa ser realizada.
A ordem dos passos deve ser
precisamente determinada.
O algoritmo deve ter fim.
ALGORITMO
Primeiro algoritmo: trocar uma lâmpada
no teto.
-Quais serão as instruções?
-Usaremos o português coloquial.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Remova a lâmpada queimada
Coloque a nova lâmpada
Fim.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Remova a lâmpada queimada
Coloque a nova lâmpada
Fim.
O que é necessário para remover a
lâmpada queimada?
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
- Posicione a escada debaixo da lâmpada
queimada
- Suba na escada até que a lâmpada possa ser
alcançada
- Gire a lâmpada queimada no sentido anti-horário
até que se solte
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Remova a lâmpada queimada
Coloque a nova lâmpada
Fim.
O que é necessário para colocar a
lâmpada nova?
ALGORITMO
Algoritmo para trocar uma lâmpada no teto

- Escolha uma lâmpada da mesma potência da


queimada
- Posicione a nova lâmpada no soquete
- Gire a lâmpada no sentido horário até que ela
se firme
- Desça da escada
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser
alcançada
Gire a lâmpada queimada no sentido anti-horário até
que se solte
Escolha uma lâmpada da mesma potência da
queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser
Sequenciamento:
alcançada
estabelece um padrão
de
Girecomportamento. Assentido
a lâmpada queimada no açõesanti-horário
devem ser até
executadas
que se solte linearmente, em sequência,
uma após
Escolha uma a outra.da mesma potência da
lâmpada
queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser
E se a lâmpada não estiver
alcançada
queimada?
Gire a lâmpada queimada no sentido anti-horário até
que se solte
Escolha uma lâmpada da mesma potência da
queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser
E se a lâmpada não estiver
alcançada
queimada?
Gire a lâmpada queimada no sentido anti-horário até
que se solte
Escolha uma lâmpada da mesma potência da
Precisamos de um teste seletivo!
queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser alcançada
Gire a lâmpada queimada no sentido anti-horário até que se solte
Escolha uma lâmpada da mesma potência da queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Posicione a escada debaixo da lâmpada queimada
Teste
Suba na seletivo:
escada atédetermina qual
que a lâmpada conjunto
possa ser alcançada
de
Gireações deve
a lâmpada ser seguido,
queimada dependendo
no sentido anti-horário até que se solte
do resultado
Escolha da condição
uma lâmpada da mesmaresultar emqueimada
potência da
verdadeiro ou lâmpada
Posicione a nova falso. no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Posicione a escada debaixo da lâmpada queimada
Suba na escada
E seaté
a que a lâmpada
lâmpada possa ser alcançada
nova
Gire a lâmpada queimada no sentido anti-horário até que se solte
estiver queimada?
Escolha uma lâmpada da mesma potência da queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser alcançada
Enquanto a lâmpada não acender, faça:
Gire a lâmpada queimada no sentido anti-horário até que se solte
Escolha uma lâmpada da mesma potência da queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Repetição: mesmo trecho é repetido
Posicione a escada debaixo da lâmpada queimada
várias vezes, até que a condição de
Suba na escada até que a lâmpada possa ser alcançada
parada seja alcançada.
Enquanto a lâmpada não acender, faça:
Qual
Gire a condição
a lâmpada denoparada?
queimada sentido anti-horário até que se solte
Escolha uma lâmpada da mesma potência da queimada
O número de repetições é indefinido,
Posicione a nova lâmpada no soquete
porém, finito.
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
ALGORITMO
Até quando devemos refinar o algoritmo?
- Até que as instruções cheguem o mais próximo
possível das instruções de uma linguagem de
programação.
- O algoritmo deve ser independente de linguagem
de programação.
- As linguagens de programação, assim como os
computadores, têm um conjunto restrito de
instruções.
- Muitas dessas instruções são comuns: testes
seletivos, repetições, entrada e saída, etc.
EXERCÍCIO
Fazer um algoritmo para assistir ao filme
“Coringa” no cinema.
Início
Ir ao cinema;
Comprar uma entrada;
Ver o filme;
Voltar para casa; e se não tiver passando?
e se tiver fila?
Fim. e se não houver lugar?
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Noção de Algoritmos
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Fluxogramas
ALGORITMOS
Na aula passada aprendemos o conceito
de algoritmos.

Sequência de passos ou instruções bem


definidos que visam atingir um objetivo.

Estruturas sequenciais, condicionais e


de repetição.
FLUXOGRAMA
Representação esquemática de um
algoritmo, feito através de gráficos que
ilustram a transição de informações entre
os elementos que o compõem.

Representa a lógica interna dos


programas.
SIMBOLOGIA
Início ou fim do fluxograma

Entrada ou saída de dados

Instrução

Ponto de decisão

Fluxo de dados e conexão


ALGORITMO
Algoritmo para trocar uma lâmpada no teto
Início
Acionar o interruptor
Se a lâmpada não acender, então:
Posicione a escada debaixo da lâmpada queimada
Suba na escada até que a lâmpada possa ser alcançada
Enquanto a lâmpada não acender, faça:
Gire a lâmpada queimada no sentido anti-horário até que se solte
Escolha uma lâmpada da mesma potência da queimada
Posicione a nova lâmpada no soquete
Gire a lâmpada no sentido horário até que ela se firme
Desça da escada
Fim.
FLUXOGRAMA
Algoritmo para calcular a média de notas
Início
Leia N1
Leia N2
Leia N3
M ß (N1 + N2 + N3) / 3
Escreva (‘A média é: ‘, M)
Fim.
FLUXOGRAMA
Algoritmo para calcular a média de notas
Início
Leia N1
Leia N2
Leia N3
M ß (N1 + N2 + N3) / 3
Se M > 5.0 então:
Escreva (‘O aluno passou!’)
Senão:
Escreva (‘O aluno não passou!’)
Fim.
EXERCÍCIO
Modifique o exemplo anterior para
calcular a média de notas para 100
alunos.

Desenvolva o algoritmo e o fluxograma.


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Fluxogramas
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Sobre Python
PYTHON
Desenvolvida no final da década de 80 por
Guido van Rossum (CWI – Holanda)
De propósito geral, projetada para
desenvolver programas de alta legibilidade
Possui uma vasta biblioteca para diferentes
aplicações
Grande popularidade nos últimos anos
Versão atual: 3.8.3 (desejável: > 3.5)
PYTHON
Em nossa disciplina, poderemos aprender
Python:
- Usando uma interface online, que não
precisa instalar nenhum software no
computador
ou
- Instalando o interpretador Python no
computador e uma IDE
INTERFACE ONLINE
Jupyter Notebook:
https://jupyter.org/
INSTALAÇÃO
Para configurar o Python no computador, é necessário
fazer o download e instalar o kit de desenvolvimento
em Python - https://www.python.org/downloads/

Instalar a versão de acordo com Sistema


Operacional:

- Windows
- Linux
- Mac OSX
TESTANDO
O kit já vem com o interpretador IDLE
Para executá-lo, basta selecioná-lo no menu

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
TESTANDO
Interpretador IDLE

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
TESTANDO
Abrindo uma nova janela

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
TESTANDO
Executando o arquivo

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
IDE
Integrated Development Environment
Aplicativo que fornece funcionalidades
interessantes para o programador de
software
Geralmente consiste de um editor de texto,
compilador e debugador de Código
Para Python, existem várias IDEs
disponíveis:
https://wiki.python.org/moin/IntegratedDevelop
mentEnvironments
PyCharm
Iremos utilizar o PyCharm:
https://www.jetbrains.com/pycharm/

Instalação do plugin “PyCharm cell mode”

Configuração de teclas de atalho


ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Sobre Python
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Expressões aritméticas
e operadores
EXPRESSÕES ARITMÉTICAS

Operações cujos operadores são aritméticos


e cujos operandos são números, constantes
ou variáveis do tipo numérico.
Operadores aritméticos: + - * / // % **
EXPRESSÕES ARITMÉTICAS
Exemplos:
>>> 3 + 7 >>> 2 * 3 + 1
10 7
>>> 3 * 2 >>> (3 + 1) * 3
6 12
>>> 5 / 2 >>> 4.321 / 3 + 10
2.5 11.4403333333
>>> 4 / 2 >>> 4.321 / (3 + 10)
2.0 0.3323846153
PRECEDÊNCIA DE OPERADORES
Mesma regra da álgebra:
Multiplicação e divisão têm precedência sobre
soma e subtração
>>> 3 + 2 * 2
Parênteses são usados para modificar a
precedência
>>> (3 + 2) * 2
Por último, avaliação da esquerda para a direita
>>> 2 – 3 + 1
TIPOS DE DADOS
int à números inteiros
float à números com casas decimais
Soma/subtração/multiplicação de dois
int’s à resultado é um int
Se ao menos um float aparece na
expressão à resultado é um float
Divisão de dois int’s à resultado é um
float
QUOCIENTE E RESTO
Operadores // e %
>>> 5 // 2
2
>>> 5 % 2
1
Tanto // quanto % geram como resultado
um int
FUNÇÕES MATEMÁTICAS
abs() à retorna o valor absoluto de um
número

min() à retorna o mínimo de um conjunto


de valores

max() à retorna o máximo de um conjunto


de valores
EXEMPLO
Calcule a média harmônica dos seguintes
números: 3.6, 8.9, 10

A média harmônica é definida pela


equação:
𝑁
𝐻=
$ 1
∑!"#
𝑛!
EXERCÍCIO
Modifique o exemplo anterior para
calcular a média harmônica amortizada
dos mesmos números: 3.6, 8.9 e 10.
Utilize X = 4 como fator de amortização

𝑁
𝐻= −𝑋
1
∑$
!"# 𝑛
!+𝑋
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Expressões aritméticas
e operadores
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Expressões lógicas e
operadores
EXPRESSÕES LÓGICAS
São expressões onde os operadores são
lógicos ou relacionais e cujos operandos
são relações, ou variáveis/constantes do
tipo lógico.

Operadores relacionais: ==, !=, <, >, <= e >=


EXPRESSÕES LÓGICAS
Exemplos:
>>> 5 == 5
True
>>> 2 + 1 >= 3
True
>>> 13 % 10 != 3
False
EXPRESSÕES LÓGICAS
Operadores lógicos: and, not e or
Exemplos:
>>> 1 > 3 or 1 + 3 > 2
True
>>> 1 > 3 and 1 + 3 > 2
False
>>> not 1 > 3 and 1 + 3 > 2
True
EXPRESSÕES LÓGICAS
Outros operadores lógicos:
Pertence/não pertence: in, not in
Exemplos:
>>> 4 in [5, 6, 4, 1]
True
>>> 5 not in [1, 2, 3, 4, 5]
False
EXPRESSÕES LÓGICAS
Outros operadores lógicos:
Identidade: is, not is
Exemplos:
>>> 4 is not 1
True
>>> 5.0 is int(5)
False
PRECEDÊNCIA DE OPERADORES
Precedência entre operadores lógicos:
not
or and

Precedência entre todos os operadores:


Parênteses mais internos
Operadores aritméticos
Operadores relacionais
Operadores lógicos
PRECEDÊNCIA DE OPERADORES
**
+-
* / % //
+-
<= < > >=
== !=
= %= /= //= -= += *= **=
is is not
in not in
not or and
EXEMPLOS
>>> 3 ** 2 * 2
18
>>> 5 <= 6 and 7 != 8
True
>>> 9 > 5 and not 3.0 is int(3)
True
>>> 7 * 2 + 5 > 3 * 10
False
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Expressões lógicas e
operadores
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Variáveis
VARIÁVEIS
Variável é um nome que é atribuído a um
objeto (um número por exemplo)
Exemplo:
>>> x = 3
>>> x
3

Obs.: Operador de atribuição: =


VARIÁVEIS
Formato geral:
<variável> = <expressão>
>>> x = 3 + 3
>>> 2 * x
12
>>> y = x – 2
>>> y
4
>>> x = y
>>> x
4
VARIÁVEIS
Os nomes de variáveis podem conter
caracteres em minúsculo (a-z), maiúsculo
(A-Z), underscore (_), e exceto para o
primeiro caractere, os dígitos de 0 a 9
Exemplos:
myList, _list à OK! 5list à ERRO!
list6, l_6 à OK! list-3 à ERRO!

Obs. myList e mylist são diferentes!


VARIÁVEIS
Apesar de aceitos pelo interpretador, nem sempre
nomes de variáveis são boas escolhas.
Existe uma convenção para definir bons nomes de
variáveis:
- Usar nomes significativos: preco ao invés de p
- Nomes com mais de uma palavra: separar por
underscore ou capitalizer a partir da 2a. palavra
(e.g. tempVar, framesPerSec, etc.)
- Nomes mais curtos (e significativos) são
melhores do que nomes longos
PALAVRAS RESERVADAS
As seguintes palavras reservadas não
podem ser usadas como nomes de
variáveis:
EXEMPLO 1
Defina nomes de variáveis para as
seguintes informações de uma pessoa:
- Altura
- Idade
- Sexo
- Se é solteira ou casada
EXEMPLO 2
Dada uma temperatura de 23o Celsius,
encontre a respectiva temperatura em
Fahrenheit e Kelvin.

Use as seguintes equações:


K = C + 273
F = 1.8 * C + 32
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Variáveis
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Strings
STRINGS
Além de variáveis do tipo numérico (int e
float), e do tipo lógico (bool), Python
permite definir variáveis de tipos mais
complexos.

O tipo str é usado para representar e


manipular texto ou uma sequência de
caracteres, incluindo espaço em branco,
pontuação e símbolos diferentes.
STRINGS
Uma string é criada como uma sequência
de caracteres envolvida por aspas
(simples ou duplas):
>>> a = 'Algoritmos e Programação'
>>> a
'Algoritmos e Programação'
OPERADORES
É possível usar alguns operadores já vistos com strings:
>>> s = 'abc' >>> s * t
>>> s == 'abc' à ERRO
True >>> s * 2
>>> t = 'def' 'abcabc'
>>> ch = 'b'
>>> s < t
>>> ch in s
True True
>>> s + t >>> ch is str('b')
'abcdef' True
OPERADORES
Operadores comuns que não funcionam
com strings: -, /, //, %, **

Outros operadores importantes:


len() à retorna o tamanho da string
[] à operador de indexação
EXEMPLOS
>>> s = 'abcd'
>>> len(s)
4
>>> s[0]
'a'
>>> s[3]
'd'
>>> s[len(s)]
ERRO!
INDEXAÇÃO
Apesar do índice variar de 0 até o tamanho da
string–1, é possível usar índices negativos
Índices negativos acessam os caracteres do lado
direito da string
Exemplos:
>>> s = 'abcd'
>>> s[-1]
'd'
>>> s[-2]
'c'
>>> s[-5]
ERRO!
INDEXAÇÃO
É possível também acessar substrings por
meio da indexação:
>>> s = 'abcd'
>>> s[0:2]
'ab'
>>> s[-4:-2]
'ab'
>>> s[:3]
'abc'
>>> s[-1:]
'd'
MÉTODOS
Python oferece alguns métodos úteis para
manipulação de strings:
s.find(p) à retorna o índice em que a substring p aparece em s
s.count(p) à retorna a frequência em que a substring p aparece
em s
s.replace(p, q) à substitui a substring p pela substring q em s
s.capitalize() à substitui primeiro caractere de s em maiúscula
s.upper() à substitui todos os caracteres de s em maiúscula
s.lower() à substitui todos os caracteres de s em minúscula
s.strip() à remove espaços em branco em excesso
ALGORITMOS E
PROGRAMAÇÃO DE
COMPUTADORES I

Strings
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Listas, tuplas e operadores


LISTAS
Uma lista é uma sequência de objetos.

Objetos podem ser de diferentes tipos:


números, strings, outras listas, etc.

Em Python, uma lista é representada por


objetos separados por vírgula, envoltos
por colchetes
LISTAS
Exemplos:
>>> pets = ['cão', 'gato', 'peixe']
>>> pets
['cão', 'gato', 'peixe']
>>> l = [1, 'ab', [], [1, 2]]
>>> l
[1, 'ab', [], [1, 2]]
OPERADORES
Alguns operadores que vimos com strings
podem ser usados com listas também:
>>> pets[0]
'cão'
>>> l[-1]
[1, 2]

Outros operadores: in, not in, +, *, len(),


min(), max(), sum()
LISTAS: MUTÁVEIS
Uma diferença importante entre listas e
strings é que listas são mutáveis, isto é,
seu conteúdo pode variar.
Exemplo:
>>> pets = ['cão', 'gato', 'peixe']
>>> pets[1] = 'galinha'
>>> pets
['cão', galinha', 'peixe']
STRINGS: IMUTÁVEIS
Já strings são imutáveis, ou seja, não
podemos alterar caracteres isolados de
uma string já criada.
Exemplo:
>>> nome = 'Maria'
>>> nome[0] = 'm'
➔ ERRO!
>>> nome = 'maria'
➔ OK!
TUPLAS: IMUTÁVEIS
Tuplas são iguais listas, mas imutáveis.
Usamos parênteses (()) ao invés de
colchetes ([]) para criá-las.
Exemplo:
>>> dias = ('seg', 'ter', 'qua')
>>> dias
('seg', 'ter', 'qua')
>>> dias[2] = 'qui'
➔ ERRO!
MÉTODOS
Listas em Python possuem métodos que
podem ser chamados a partir de uma
lista já criada:
>>> pets.append('cão')
>>> pets
['cão', 'gato', 'peixe', 'cão']

Outros métodos: count(), index(), insert(),


pop(), remove(), reverse(), sort()
MÉTODOS
Exemplos:
>>> pets.count('cão')
2 >>> pets.remove('peixe')
>>> pets.index('gato') >>> pets
1 ['cão', 'galinha', 'gato']
>>> pets.insert(1, 'galinha') >>> pets.reverse()
>>> pets
>>> pets
['cão', 'galinha', 'gato', 'peixe', 'cão']
['gato', 'galinha', cão']
>>> pets.pop()
>>> pets.sort()
'cão'
>>> pets
>>> pets
['cão', 'gato', 'galinha']
['cão', 'galinha', 'gato', 'peixe']
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Listas, tuplas e operadores


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Tipos de dados
TIPOS DE DADOS
Até o momento, vimos os seguintes tipos de
dados suportados pela linguagem Python:
int, float, bool, str, list e tuple.
Cada dado é armazenado na memória na
forma de objetos.
Todo objeto possui um tipo e um valor.

Fonte: Perkovic, 2015


TIPOS DE DADOS
O tipo de um objeto indica quais valores ele
pode armazenar e quais operações podem ser
executadas.
A função type() pode ser usada para verificar o
tipo de um objeto:
>>> type(3) Importante lembrar que variáveis
<class 'int'> em Python não possuem um tipo!
Elas simplesmente apontam tem-
>>> type('Olá') -porariamente para um objeto na
<class 'str'> memória.
>>> type([1, 2, 3])
<class 'list'>
VALORES PARA TIPOS
Dado o tipo do objeto, há um conjunto de
valores que esse objeto pode armazenar.
Inteiros podem conter valores arbitrariamente
altos (depende da disponibilidade de memória
do computador):
>>> 2**1024
11781361728633673532 ... 53056587776
Já o tipo float tem um limite atual de 64 bits:
>>> 2.0**1024
🡪 ERRO
VALORES PARA TIPOS
No caso de float's, os valores também
são aproximados:
>>> 2**100
1267650600228229401496703205376
>>> 2.0**100
1.2676506002282294e+30
>>> 2.0**-1075
0.0
CRIANDO OBJETOS
Para criar um objeto int com valor 3,
fazemos:
>>> x = 3
Ou então:
>>> x = int(3)
A função int() é chamada de construtor, e
é usada para instanciar um objeto int
explicitamente.
O número entre parênteses é o valor que
será associado ao objeto.
CRIANDO OBJETOS
Outros construtores: float(), str() e list().
Valores padrão para int, float, str e list: 0, 0.0, ''
e [].
Exemplos:
>>> x = int()
>>> x
0
>>> y = str()
>>> y
''
CONVERSÃO IMPLÍCITA
Se em uma expressão há operandos de
diferentes tipos, Python irá converter
cada operando para o tipo que contém os
outros
>>> True + 5 >>> 3 + 0.35
6 3.35

Fonte: (Perkovic, 2015)


CONVERSÃO EXPLÍCITA
Podemos usar os construtores para fazer
a conversão explícita entre tipos:
>>> int(3.4) >>> str(2.74)
3 '2.74'
>>> float(4) >>> int('1.5')
4.0 ➔ ERRO
>>> float('5.6') >>> bool(0)
5.6 False
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Tipos de dados
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Biblioteca padrão Python


BIBLIOTECA PADRÃO
Vimos até o momento algumas funções e
classes que a linguagem Python oferece:
sum(), max(), int, float, etc.
A biblioteca padrão Python contém muitas
outras funções e classes, as quais estão
organizadas em módulos.
Cada módulo contém funções e classes
específicas para um domínio de aplicação.
Mais de 200 módulos formam a bilioteca
padrão Python.
BIBLIOTECA PADRÃO
Alguns exemplos de aplicações que contêm
módulos predefinidos:
- Programação para redes de computadores
- Programação para Web
- Desenvolvimento de interfaces gráficas
- Banco de dados
- Funções matemáticas
- Geradores de números pseudoaleatórios
MÓDULO math
Para usar o módulo, devemos importá-lo:
>>> import math
Para usar uma função do módulo, a
chamamos juntamente com o módulo
que a contém:
>>> math.sqrt(4)
2.0
>>> math.log(8, 2)
3.0
MÓDULO math
Algumas outras funções e constantes
do módulo math:

Fonte: (Perkovic, 2015)


MÓDULO fractions

>>> a + b
Fractions
MÓDULO fractions
Uma particularidade do tipo Fraction é que ele
permite representar números muito maiores,
quando comparado com o tipo float:
>>> 0.5 ** 1075
0.0
>>> fractions.Fraction(1, 2) ** 1075
Fraction(1, 40480450661462 ...
40480450661462)
Obs. Por outro lado, usar o tipo float em
expressões é muito mais rápido do que o tipo
Fraction.
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Biblioteca padrão Python


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Programas em Python
Programa Python
Um programa em Python é um conjunto
de instruções que são executadas em
ordem, seguindo os conceitos sobre
algoritmos que vimos antes:
-sequenciamento
-estruturas de condição
-estruturas de repetição
Programa Python
Em vez de usarmos o shell interativo
para executar cada instrução em Python,
iremos implementar as instruções de um
programa em um ou mais arquivos com
extensão .py
Para isso, devemos usar o editor
disponível na IDE que estamos usando.
IDE IDLE
Abrindo o editor

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
IDE IDLE
Executando o programa

Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo
IDE PyCharm
Implementação do programa no editor

Execução do programa usando o


comando Run

Execução de célula a célula usando o


plugin PyCharm Cell Mode
Linha de comando
Execução do programa por linha de
comando:
-Abrir o terminal do sistema operacional
-Ir até a pasta onde está armazenado o
programa
-Executar o arquivo usando o
interpretador Python
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Programas em Python
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

print(), input() e eval()


print()
A função print() é usada para imprimir
aquilo que é enviado no argumento (entre
parênteses)
Exemplos:
>>> print(0) >>> print([1, 2, 3])
0 [1, 2, 3]
>>> x = 2 >>> print('Olá')
>>> print(x) 'Olá'
2
print()
É possível também passar mais de um
argumento para a função.
Exemplo:
>>> h = 13
>>> print('Agora são', h, 'horas.')
'Agora são 13 horas'
print()
Outros argumentos da função print():
>>> dia = 1
>>> mes = 12
>>> ano = 1990
>>> print(dia, mes, ano, sep='/')
1/12/1990
>>> print(dia, mes, ano, sep='/', end='.\n')
1/12/1990.
input()
O comando input() é usado para solicitar
dados do usuário no shell:
>>> nome = input('Digite seu nome:')
Digite seu nome: João
>>> nome
'João'
Obs.: A função input() sempre retorna
uma string, independente do valor
digitado pelo usuário
eval()
É possível explicitamente instruir a linguagem
para avaliar uma string como uma expressão
Python.
Exemplos:
>>> eval('3') >>> eval('3 > 4')
3 False
>>> eval('3 + 4') >>> x = input('Valor:')
7 Valor: 3
>>> eval('len([1, 2, 3])') >>> eval(x)
3 3
Exemplo
Fazer um programa em Python em que o
usuário informa uma temperatura em
Celsius, e o programa emite a
temperatura em Fahrenheit.

Usar a fórmula: F = 1.8 * C + 32


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

print(), input() e eval()


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Definição de funções
Definição de funções
Python permite que o programador crie
suas próprias funções.
É útil quando precisamos executar uma
sequência de instruções várias vezes, em
diferentes partes do programa.
Permite modularizar o programa,
facilitando o reúso e manutenção.
Primeira função

def f(x):
res = x**2 + 1
return res

17
Formato
O formato geral para definição de
funções em Python é:

def <nome da função> (<parâmetros>):


<instruções com identação>
...
return <valor> (opcional)
Função com vários parâmetros
Função que calcula o preço de um
produto atualizado pela taxa de juros:

def juros(preco, juros):


res = preco * (1 + (juros / 100))
return res

>>> juros(10, 50)


15.0
print() e return
Qual a diferença entre as duas funções
abaixo?

def f(x): def g(x):


res = x**2 + 1 res = x**2 + 1
return res print(res)

>>> f(2) >>> g(2)


5 5
Ordem de definição
Ao definir uma função em Python, é
importante sempre defini-la antes de
executar, na ordem sequencial de cima
para baixo no arquivo.
Por exemplo, o código abaixo irá gerar
erro:
print(f(3))
def f(x):
return x**2 + 1
Ordem de definição
Já o seguinte código não gera erro, pois
as duas funções estão apenas sendo
definidas (sem executá-las):

def g(x):
return f(x)

def f(x):
return x**2 + 1
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Definição de funções
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Documentação de programas
Documentação
A documentação de programas permite:
- que usuários entendam o que o programa
faz
- que desenvolvedores entendam como o
programa funciona
É importante documentar programas até
para o próprio autor daquele código, já que à
medida em que o programa se torna
complexo, o desenvolvedor pode se
esquecer daquele trecho que implementou
anteriormente.
Documentação
Documentar um código em Python
normalmente é realizado por meio de
comentários.
Um comentário é um texto que precede o
caractere '#'.
Exemplo:
def f(x):
res = x**2 + 1 # calcula x**2 + 1 e armazena o
# resultado em res
return res # retorna o valor de res
Documentação
Caso o comentário ocupe várias linhas,
pode-se delimitá-lo por três aspas simples ou
três aspas duplas:
Exemplo:
'''
Calcula x**2 + 1
Retorna o resultado
'''
def f(x):
res = x**2 + 1
return res
Documentação
É importante saber balancear entre
comentários e legibilidade de código.

Comentários podem ser usados para


explicar partes complexas do programa.

Variáveis com nomes significativos


podem ser usadas para tornar o código
autoexplicativo.
Docstrings
A documentação de funções também é
importante para auxiliar no seu
entendimento.
Funções previamente definidas possuem
documentação que pode ser acessada
por meio da função help():
>>> help(max)
Docstrings
No caso de funções definidas pelo
usuário, se usarmos help() para obter a
documentação, teremos alguma
descrição da função:

>>> help(f)
Help on function f in module __main__:
f(x)
Docstrings
Para documentar uma função, usamos
comentários especiais, os quais chamamos
de docstrings:
def f(x):
'Calcula x**2 + 1'
res = x**2 + 1
return res

>>> help(f)
Help on function f in module __main__:
f(x)
Calcula x**2 + 1
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Documentação de programas
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de condição de
uma ou duas vias
ESTRUTURAS DE SELEÇÃO

Permitem escolher um conjunto de ações –


bloco
- Blocos são delimitados por identação
A escolha depende de uma condição ser ou
não satisfeita
A condição é representada por expressões
lógicas ou relacionais
ESTRUTURAS DE SELEÇÃO

As estruturas de seleção podem ser:

- seleção de uma via


- seleção de duas vias
- seleção de três ou mais vias
SELEÇÃO DE UMA VIA

Objetivo: testar uma condição antes de


executar uma instrução

if <condição>:
<bloco de instruções identado>
<bloco de instruções não identado>
SELEÇÃO DE DUAS VIAS
Dois blocos alternativos dependendo da
condição:

if <condição>:
<bloco 1 de instruções identado>
else:
<bloco 2 de instruções identado>
<bloco de instruções não identado>
EXEMPLO

Tendo como dados de entrada a altura e o


sexo de uma pessoa, construa um
programa em Python que calcule seu peso
ideal, utilizando para isso as seguintes
fórmulas:
- Para homens: (72.7 * altura) – 58
- Para mulheres: (62.1 * altura) – 44.7
EXERCÍCIO
Faça um programa em Python que leia duas
notas N1 e N2 de um aluno, e informe se ele
foi aprovado ou não numa disciplina.
Considere que a média final é dada pela
equação:
média = 0.4 * N1 + 0.6 * N2
E que o aluno está aprovado se a média for
maior ou igual a 5.0, e reprovado caso
contrário.
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de condição de
uma ou duas vias
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de condição de
três ou mais vias
SELEÇÃO DE TRÊS OU
MAIS VIAS
Decisões de três ou mais vias têm o seguinte
formato:
if <condição 1>:
<bloco de instruções identado 1>
elif <condição 2>:
<bloco de instruções identado 2>
elif <condição 3>:
<bloco de instruções identado 3>
else:
<último bloco de instruções identado>
<bloco de instruções não identado>
SELEÇÃO DE TRÊS OU
MAIS VIAS
Se <condição 1> é verdadeira, então <bloco de
instruções identado 1> é executado
Se <condição 1> é falsa e <condição 2> é verdadeira,
então <bloco de instruções identado 2> é executado
Se <condição 1> e <condição 2> são falsas mas
<condição 3> é verdadeira, então <bloco de instruções
identado 3> é executado
Se nenhuma condição for verdadeira, então <último
bloco de instruções> é executado
Em todos os casos, o programa irá prosseguir com
<bloco de instruções não identado>
EXEMPLO
Dados três valores positivos, A, B e C,
construir um programa em Python que
verifica se os mesmos podem ser os
comprimentos dos lados de um triângulo.

Se forem, verificar e imprimir se o triângulo é


equilátero, isósceles ou escaleno.

Informar se não formarem nenhum triângulo.


ORDEM DAS CONDIÇÕES
No caso de condições com três ou mais vias, é
necessário verificar a ordem em que as
condições são definidas:

def temperatura(t):
if t > 32:
print('Frio!')
elif t > 86: Como corrigir?

print('Quente!')
else:
print('Congelando!')
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de condição de
três ou mais vias
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de repetição - for


ESTRUTURAS DE REPETIÇÃO

Estruturas de controle de fluxo que


permitem repetir uma sequência de
comandos.

Número de repetições pode ser


indeterminado, porém deve ser finito.
COMANDO FOR
for <variável> in <sequência>:
<bloco de código identado>
<bloco de código não identado>

A variável <sequência> deve ser um objeto do


tipo string, list, range ou qualquer outro tipo que
possa ser iterado.
Valores sucessivos de <sequência> são
atribuídos a <variável>, executando <bloco de
código identado> para cada valor de <variável>.
COMANDO FOR
Exemplos:
l = ['cão', 'gato', 'coelho']
for i in l:
print(i)

s = 'algoritmos'
for c in s:
if c in 'aeiou':
print(c)
COMANDO FOR
Função range(). Formato:
range(start, stop, step)

for x in range(10): l = ['a', 'b', 'c']


print(x) for i in range(len(l)):
print(l[i])
for y in range(1, 20, 2):
print(y)
ACUMULADORES

Exemplo:

Como calcular a soma de todos os


números pares de 1 a 100?
LOOPs ANINHADOS
Exemplo:

Dada uma lista de strings como segue:

str_list = ['João', 'Roberto', 'Rafael']

Retornar todas as vogais que ocorrem nos


elementos acima.
Resp.: o, o, o, e, o, a, a, e
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de repetição - for


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de repetição - while


O COMANDO WHILE
O comando while tem uma estrutura parecida
com o teste condicional de uma via:
if <condição>:
<bloco de instruções identado>
<bloco de instruções não-identado>

while <condição>:
<bloco de instruções identado>
<bloco de instruções não-identado>
O COMANDO WHILE

Fonte: Perkovic, 2015.


O COMANDO WHILE
O comando while é útil quando não sabemos
quantas vezes um bloco deverá ser repetido.
Exemplo:
def nfat(L):
Encontre o maior valor
n=0
de n tal que n! < L. fat = 1
Se L = 20, então o while fat <= L:
n += 1
maior valor de n é 3, fat *= n
já que 3! = 6 e 4! = 24. return n-1
O COMANDO WHILE

Exemplo:
Pedir para o usuário digitar um número
inteiro positivo. Caso contrário, emitir uma
mensagem e pedir novamente.
O COMANDO WHILE

Exemplo:
Armazenar nomes de pessoas em uma lista
enquanto o usuário digitar strings
diferentes de vazio.
LOOP INFINITO
Um loop infinito é aquele que é executado "para
sempre":

while True:
<bloco de instruções identado>

São úteis quando o programa deve fornecer um


serviço indefinidamente.
Para sair do loop, deve-se digitar Ctrl+C no
teclado.
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Estruturas de repetição - while


ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Outros comandos: break,


continue e pass
BREAK

O comando break, quando


inserido dentro de um
loop (for ou while), faz
com que aquele laço seja
finalizado, passando o
controle para o próximo
bloco de instruções não
identado.

Fonte: https://www.programiz.com/python-programming/break-continue
BREAK

Exemplo: def primo(num):


i=2
Implemente uma função while i < num:
que verifica se um if num % i == 0:
número é primo ou não. break
i += 1
return i == num
CONTINUE
O comando continue,
quando inserido dentro
de um loop (for ou while),
faz com que a nova
iteração do laço seja
forçada, a partir daquele
ponto onde o comando foi
inserido.

Fonte: https://www.programiz.com/python-programming/break-continue
CONTINUE
Exemplo:
Dada a função primo() for n in range(2, 100):
implementada no slide if not primo(n):
anterior, faça um continue
programa que imprima print(n)
todos os números
primos de 2 a 100.
PASS
Todos os comandos def, if, else, for ou while
precisam ter necessariamente um bloco
indentado não vazio.

Apesar de poder ser evitado na maioria das


situações, a linguagem Python oferece o
comando pass, que é uma instrução válida
que não faz nada.
PASS
Exemplo:

if n % 2 == 0:
pass
else:
print(n)
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Outros comandos: break,


continue e pass
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Depuração de programas
DEPURAÇÃO DE PROGRAMAS
É o processo de encontrar e reduzir erros em
programas.
Os erros podem:
- impossibilitar que o programa continue sua
execução, ou
- fazer com que o programa gere como saída
um resultado incorreto.
DEPURADORES
Ferramentas que auxiliam o programador,
permitindo:
- monitorar a execução de um programa
- parar a execução em algum ponto do tempo
- reiniciar o programa
- ativar pontos de parada
- alterar áreas de memória durante a execução
- etc.
DEPURADORES

No caso da linguagem Python, o depurador


pdb já vem incluso na biblioteca padrão.

Dependendo da IDE escolhida para


desenvolvimento, há ferramentas de
depuração de código que também podem ser
utilizadas.
EXEMPLO
def h(n):
Iremos depurar o print('Start h')
programa ao lado print(1/n)
utilizando o depurador print(n)
def g(n):
da IDE PyCharm print('Start g')
h(n-1)
print(n)
O programa gera um def f(n):
print('Start f')
erro durante sua g(n-1)
execução. print(n)
f(2)
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Depuração de programas
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Webconferência
Revisão
Objetivos
Compreender os conceitos básicos de
programação.

Descrever algoritmos para resolver


problemas utilizando a linguagem de
programação Python.
Conteúdo
- Semana 1: Introdução a algoritmos e à Python
- Algoritmos, fluxogramas e Python
- Semana 2: Tipos de dados – parte 1
- Expressões aritméticas, relacionais, lógicas e
operadores
- Variáveis e strings
- Semana 3: Tipos de dados – parte 2
- Listas, tuplas e operadores
- Tipos de dados primitivos
- Biblioteca padrão
- Semana 4: Criação de programas
- Programas, entrada/saída, funções e documentação
Conteúdo
- Semana 5: Estruturas de condição
- Seleção em uma, duas ou mais vias
- Semana 6: Estruturas de repetição
- For e while
- Break, continue e pass
- Semana 7: Vetores e matrizes
- Listas multi-dimensionais
- Semana 8: Depuração de programas
- Depuração de código
Tópicos mais votados
- Expressões aritméticas, lógicas e
relacionais
- Biblioteca padrão
- Listas e tuplas
- Funções
Expressões aritméticas
Operações cujos operadores são aritméticos
e cujos operandos são números, constantes
ou variáveis do tipo numérico.
Operadores aritméticos: + - * / // % **
Precedência de operadores: mesma regra da
álgebra.
Funções matemáticas: abs(), min() e max()
Expressões lógicas e relacionais
São expressões onde os operadores são
lógicos ou relacionais e cujos operandos são
relações, ou variáveis/constantes do tipo
lógico.
Operadores relacionais: ==, !=, <, >, <= e >=.

Operadores lógicos: and, not, or, in, not in,


is, not is.
Expressões lógicas e relacionais
Precedência:
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
not 2 * 4 != 8 and True
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
not 2 * 4 != 8 and True
not 8 != 8 and True
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
not 2 * 4 != 8 and True
not 8 != 8 and True
not False and True
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
not 2 * 4 != 8 and True
not 8 != 8 and True
not False and True
True and True
Expressões lógicas e relacionais
Exemplo:
not 2 * (3 + 1) != 8 and True
not 2 * 4 != 8 and True
not 8 != 8 and True
not False and True
True and True
True
Biblioteca padrão
A biblioteca padrão Python contém muitas
funções e classes, as quais estão organizadas
em módulos.
Cada módulo contém funções e classes
específicas para um domínio de aplicação.
- Redes de computadores, programação Web,
interfaces gráficas, bancos de dados, etc.
Mais de 200 módulos formam a bilioteca padrão
Python.
Importante: necessário importar o módulo antes
de usar a função desejada.
Biblioteca padrão
Exemplo:
>>> import random
>>> sample = random.sample(range(10), 10)
>>> print(sample)
[7, 5, 9, 8, 3, 4, 1, 6, 2, 0]
>>> print(random.choice(sample))
2
Listas e tuplas
Uma lista é uma sequência de objetos.
Usamos índices para acessar uma
determinada posição nesta sequência.
- Números negativos acessam da direita para a esquerda.
- Sublistas podem ser extraídas usando o formato:
lista[inicio:fim]

Tuplas têm a mesma funcionalidade que listas,


mas são imutáveis (assim como strings).
Listas e tuplas
Exemplos:
>>> l = [1, 2, 3] >>> l = [1, 2, 3, 4]
>>> l[l[1]] = 5 >>> l[2:-1]
>>> l ??
?? >>> l[-3:]
>>> l[-l[1]] ??
??
>>> t = (5, 6, 7)
>>> t[0] = 4
??
Funções
Python permite que o programador crie suas
próprias funções.
É útil quando precisamos executar uma
sequência de instruções várias vezes, em
diferentes partes do programa.
Passagem de parâmetros é sempre por valor,
mas pode-se alterar o conteúdo de uma lista
por meio do parâmetro.
Funções
Exemplos:
def f(x, y): def g(lista):
y, x = x, y lista[0] = 9

x=2 l = [1, 2, 3]
y=3 g(l)
f(x, y) print(l)
print(x, y) ??
??
Outros tópicos importantes
- Estruturas de condição: como criar uma
estrutura de 2, 3 ou mais vias?
- Estruturas de repetição: for, while e outros
comandos agregados (range, break,
continue, pass, etc.)
- Listas multi-dimensionais: como funciona a
indexação?
- Entrada e saída: funções print(), input() e
eval()
ALGORITMOS E PROGRAMAÇÃO
DE COMPUTADORES I

Webconferência
Revisão

Você também pode gostar