Curso básico de algoritmos com
Python
Tecnologia em Análise e Desenvolvimento de
Sistemas – IFRN
EPOCA 2011
WebLovers - Quem somos
GIANCARLO SILVA - @giancarlozero
Graduando em Análise e Desenvolvimento de Sistemas – IFRN Líder do Grupo WebLovers – grupoweblovers.org E-mail: [email protected] MSN: [email protected]
WebLovers - Quem somos
ALLYSON BARROS - @allysonbarros
Graduando em Análise e Desenvolvimento de Sistemas – IFRN Empreendedor e desenvolvedor Rails Líder do Grupo WebLovers – grupoweblovers.org E-mail: [email protected] MSN: [email protected]
WebLovers - Quem somos
DANIELE MONTENEGRO – @lelybarros
Bacharel em Ciências Sociais – UFRN Graduanda em Análise e Desenvolvimento de Sistemas – IFRN Líder do Grupo WebLovers – grupoweblovers.org E-mail: [email protected] MSN: [email protected]
WebLovers - Quem somos
ELIONAI MOURA - @eli_embits
Graduando em Análise e Desenvolvimento de Sistemas – IFRN Empreendedor e Desenvolvedor PHP da EmBits Líder do Grupo WebLovers – grupoweblovers.org E-mail: [email protected] MSN: [email protected]
WebLovers - Quem somos
SEDIR MORAIS - @sedir_
Graduando em Análise e Desenvolvimento de Sistemas – IFRN Líder do Grupo WebLovers – grupoweblovers.org E-mail: [email protected] MSN: [email protected]
Agenda do minicurso
• Como instalar o Python; • Preparando seu ambiente de trabalho; • Introdução a Algoritmos; • Introdução à linguagem Python; • Tipos básicos de dados; • Operações aritméticas, relacionais e lógicas; • Estruturas de controle de fluxo; • Strings; • Listas, vetores e matrizes; • Funções; • Introdução à Orientação a Objetos; • Para saber mais.
Instalação do Python: Linux
• Verifique a disponibilidade do Python no
repositório de sua distribuição e faça o
download/instalação, caso necessário;
• No Ubuntu o Python 2.7 já vem instalado
por padrão. Caso contrário, verifique na
Central de Programas, no gerenciador
Synaptic ou via terminal (sudo apt-cache
search python).
Instalação do Python: Mac OS X
• O Python já vem pré-instalado no sistema
operacional da Apple. Entretanto, devido
ao ciclo de atualizações do Mac OS X o
Python pré-instalado pode estar
obsoleto;
• Recomenda-se baixar a versão mais nova
em www.python.org e fazer a instalação.
Instalação do Python: Windows
• Faça o download do instalador do Python
em www.python.org e instale-o em seu
Windows;
• Ajuste o classpath através do prompt de
comandos (XX = número da versão):
Preparando seu ambiente de trabalho
• Editor de texto Gedit;
• Terminal do Ubuntu;
• IDE’s (IDLE, Eclipse + PyDev, Emacs,
Geany, Wing IDE, etc).
Preparando seu ambiente de trabalho (ambiente Linux)
• Configurando o Gedit para trabalhar da
melhor forma com o Python (menu Editar
> Preferências):
O que é um algoritmo?
• Algoritmos são sequências de instruções finitas e não-ambíguas com a finalidade de executar uma ação ou alcançar um resultado;
• Há várias formas de estudar algoritmos, como o desenho de fluxogramas lógicos, a escrita de comandos em pseudocódigo (ex.: Portugol) e também usando as linguagens de programação propriamente ditas.
O que é um algoritmo?
O que é um algoritmo?
numero = 0
if numero == 0:
print "Neutro"
elif numero % 2 == 0:
print "Par"
else:
print "Ímpar"
Repitam comigo: PÁI-TON!
• Python é uma linguagem de programação interpretada, orientada a objetos e fortemente tipada, criada pelo holandês Guido van Rossum em 1989 e lançada em 1991;
• O Python suporta vários paradigmas e modelos de programação, como a Programação Procedural/Estruturada, a Orientação a Objetos, etc.
Repitam comigo: PÁI-TON!
• Além de ser interpretado, o Python também funciona de forma virtualizada, podendo gerar Bytecodes na extensão .pyc ou .pyo;
• Em Python, quase tudo é considerado um objeto: classes, funções, números, módulos, etc.
Tipos básicos
• Tipos numéricos:
– Inteiro (int);
– Inteiro preciso (long);
– Ponto flutuante (float);
– Número complexo (complex);
• Tipo String (str);
• Tipo booleano (bool).
Tipos básicos
• Tipo inteiro (int)
Tipos básicos
• Tipo inteiro preciso (long)
Tipos básicos
• Tipo ponto flutuante (float)
Tipos básicos
• Tipo complexo (complex)
Tipos básicos
• Tipo booleano (bool)
Tipos básicos
• Tipo string/texto (str)
Operações básicas
• Tipos de operações:
– Aritméticas;
– Lógicas;
– Relacionais;
Operações básicas
• Operações aritméticas:
– Adição (+);
– Subtração (-);
– Multiplicação (*);
– Divisão(/);
– Divisão inteira (//);
– Potenciação (**);
– Resto (%).
Operações básicas
• Operações aritméticas – Ordem de precedência: 1. Operações entre parênteses;
1. Potenciação;
2. Resto;
3. Divisão inteira;
4. Divisão;
5. Multiplicação;
6. Subtração;
7. Adição.
Operações básicas
• Operações aritméticas – Exemplo:
– Calculando o resto da divisão de 3 vezes 5 mais 1, por 2:
Operações básicas
• Operações lógicas:
– E (and);
– Ou (or);
– Não (not).
Operações básicas
• Operações lógicas – Tabelas da Verdade
(Álgebra de Boole):
Operações básicas
• Operações lógicas – Exemplo: Tabela da
Verdade AND:
Operações básicas
• Operações relacionais (ou comparativas):
– Igual (==);
– Diferente (!= ou <>);
– Maior que (>);
– Menor que (<);
– Maior ou igual (>=);
– Menor ou igual (<=).
Operações básicas
• Operações lógicas e relacionais – Ordem de precedência: 1. Operações entre parênteses; 2. Or; 3. And; 4. Not; 5. Operações entre Parênteses;
1. Menor que;
2. Maior que; 3. Menor ou igual;
4. Maior ou igual; 5. Operações entre parênteses;
1. Diferente; 2. Igual.
Estruturas de controle de fluxo
• Tipos de estrutura:
– Se/senão (if/else);
– Para (for);
– Enquanto (while);
– Comandos continue e break.
Estruturas de controle de fluxo
• If/Else (Pseudocódigo):
Estruturas de controle de fluxo
• If/Else – Exemplo 01 (Python):
Estruturas de controle de fluxo
• If/Else – Exemplo 02 (Python):
Estruturas de controle de fluxo
• For (Pseudocódigo):
Estruturas de controle de fluxo
• For – Exemplo 01 (Python):
Estruturas de controle de fluxo
• For – Exemplo 02 (Python):
Estruturas de controle de fluxo
• While (Pseudocódigo):
Estruturas de controle de fluxo
• While – Exemplo (Python):
Estruturas de controle de fluxo
• Comando Break:
Estruturas de controle de fluxo
• Comando Continue:
Estruturas de controle de fluxo
• Exercícios propostos: 1. Crie um programa que peça dois números e
diga se o primeiro número é ou não é divisível pelo segundo;
2. Crie um programa que peça a idade de um indivíduo e verifique se ele tem ou não idade suficiente para tirar carteira de motorista. Se a idade digitada for zero, o programa deverá mostrar uma mensagem de erro.
Strings
• Strings são sequências de caracteres reconhecidos como texto simples em um programa;
• É possível exibir texto, bem como armazená-lo em uma ou mais variáveis;
• Para exibir texto usa-se o comando print, seguido do texto entre aspas simples ou duplas;
• Strings formadas por múltiplas linhas de texto podem ser criadas e atribuídas a variáveis escrevendo os textos entre trios de aspas simples ou duplas.
Strings
Strings – Concatenação e repetição
• Usa-se (inclusive opcionalmente) o sinal + para concatenar duas ou mais strings;
• Usa-se o sinal * para repetir uma string um determinado número de vezes:
Strings – Indexação e manipulação
• Para o Python, strings se comportam
como listas de caracteres (veremos as
listas logo adiante) e são indexados como
tal. Entretanto, diferente das listas,
strings são imutáveis:
Índices 0 1 2 3 4 5 6 7
Índices (inverso) -8 -7 -6 -5 -4 -3 -2 -1
Caracteres f i a t 1 4 7
Strings – Indexação e manipulação
• Baseado na indexação de uma string, usa-
se a técnica de slice (fatia) para manipulá-
la das mais diversas formas;
• É possível usar essa técnica para ‚fatiar‛
partes de uma string, unir, separar, obter
substrings, atribuir strings e/ou
substrings à variáveis, entre outros usos.
Strings – Indexação e manipulação
• Para usar slices, primeiro atribui-se uma string a uma variável qualquer;
• Depois escreve-se esta variável seguido por números entre colchetes, separados por dois pontos. Os números representam o intervalo entre dois índices da string e a razão de iteração;
variável[início : fim : razão] • Dependendo da necessidade, é possível
omitir um dos valores entre os colchetes. A razão é totalmente opcional.
Strings – Indexação e manipulação
>>> palavra = ‚cachorro‛
>>> palavra[2:6] #Mostrar substring
‘chor’
>>> palavra[:1] #Apenas a primeira letra
‘c’
>>> palavra[1:] #Exceto a primeira letra
‘achorro’
Strings – Indexação e manipulação
>>> palavra = ‚cachorro‛
>>> palavra[-3:] #Apenas as 3 últimas letras
‘rro’
>>> palavra[::2] #Mostrar letras na razão de 2
‘ccor’
>>> palavra 2 = palavra[::2] #variável recebe substring
>>> print palavra2
‘ccor’
Strings – Indexação e manipulação
• O programador pode usar a função raw_input() para solicitar que o usuário entre com um dado qualquer no programa;
• Ao rodar no terminal, o programa aguarda a entrada de algum dado e, ao pressionar ENTER, o programa processará o dado conforme definido em seu código.
Strings – Indexação e manipulação
Que saída será gerada por este código?
Strings
• Exercícios propostos: 1. Crie um programa que exiba apenas as vogais
de uma palavra;
2. Crie um programa que receba um texto e substitua a vogal ‘a’ desse texto por outra à escolha do usuário;
3. Crie um programa que receba um texto e o exiba de trás para frente.
• Dicas: 1. Use a técnica de slice;
2. Use, se necessário, a função raw_input().
Listas, vetores e matrizes
• Listas são sequências de dados que podem ser formados por elementos de qualquer tipo;
• Ao contrário das strings, as listas são mutáveis, ou seja, podem ter seus elementos modificados;
• Para criar uma lista, escreve-se alguns elementos separados por vírgulas, dentro de colchetes e os atribui a uma variável.
Listas, vetores e matrizes
• Exemplos de listas:
– lista1 = [1, 2, 3, 4, 5]
– lista2 = [‚Flamengo‛, ‚Vasco‛, ‚ABC‛, ‚América‛]
– lista3 = [‚João‛, 25, 1.85, ‚Professor‛, True]
Listas, vetores e matrizes
• Vetores nada mais são do que listas
formadas apenas por números;
• Existem vetores unidimensionais (como o
exemplo mostrado no slide anterior) e
vetores multidimensionais, também
chamados de matrizes.
Listas, vetores e matrizes
• Vetor (uma lista simples):
vetor = [0, 1, 2, 3, 4, (...)]
• Matriz (lista aninhada, ou seja: uma lista dentro de outra):
matriz2x2 = [[0, 1],[2, 3]]
matriz3x2 = [[0, 1], [2, 3], [4, 5]]
matriz2x3 = [[0, 1, 2], [3, 4, 5]]
Acessando valores de uma matriz
• Para acessar um valor de um vetor, basta imprimir uma variável
seguida da posição ‘i’ do valor, entre colchetes – vetor = [i];
• No caso de uma matriz, deve-se indicar as posições ‘i’ e ‘j’ do valor
desejado – matriz = [i][j].
Funções
• Funções são blocos de código identificados por um nome e dotados de parâmetros predefinidos;
• Python vem com diversas funções em sua biblioteca padrão, além de permitir a definição de suas próprias funções;
• Funções criadas pelo programador podem ou não ter valor de retorno (comando return), dependendo da necessidade.
Funções
• Exemplos de funções built-in:
– type() – Identifica o tipo de uma variável;
– raw_input() – Recebe uma entrada de dados;
– id() – Retorna a identidade de um objeto;
– pow(x, y) – Potenciação: retorna um número x elevado a uma potência y;
– Entre vários outros!
Definindo funções
• Define-se uma função em Python usando-se o comando def seguido do nome da função, escrevendo zero ou mais argumentos entre parênteses e terminando com um sinal de dois pontos (:);
• Na linha seguinte, escreve-se o bloco de código desejado.
Chamando funções
• Basta escrever o nome da função e, se necessário, passar um ou mais valores para os argumentos.
Exemplo de funções com recursividade
• Função para calcular o fatorial de um número qualquer:
Funções
• Exercício proposto:
– Escreva uma função que imprima na tela a sequência de Fibonacci até um número previamente definido.
Introdução a Orientação a Objetos
• A linguagem Python tem como uma de
suas várias características o suporte ao
paradigma da Programação Orientada a
Objetos, que permite o reaproveitamento
de código e uma maior abstração do
problema a ser resolvido;
• Demonstraremos agora como se codifica
e funciona uma classe em Python.
Python OO - Classes
• Exemplo: Retângulo
Python OO – Objeto (ou Instância)
• Exemplo: Retângulo
Para saber mais
• Material de estudo
– Livros: • Introdução à Programação
com Python
Editora Novatec
• Python e Django: Desenvolvimento ágil de aplicações web
Editora Novatec
Para saber mais
• Material de estudo
– Na Internet:
• Documentação oficial – migre.me/64xa4
• Tutorial Python (E-Book. Autor: Guido van Rossum) – migre.me/64xcN
• Aprenda a Programar (E-Book. Autor: Luciano Ramalho) – migre.me/64xn9
• Python para Desenvolvedores (E-Book. Autor: Luiz Eduardo Borges) – migre.me/64xIA
DÚVIDAS?