PYTHON LISTAS. Introdução à Programação SI2

Documentos relacionados
PYTHON LISTAS. Introdução à Programação SI1

Programação WEB I Estruturas de controle e repetição

Introdução à Linguagem

Python Condicionais e Loops. Introdução à Programação SI1

Universidade Federal de Minas Gerais Instituto de Ciências Agrárias

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Fábio Rodrigues Jorge.

Introdução à Programação Aula 11 Mais sobre ciclos e iteração

Python: Comandos Básicos. Claudio Esperança

Python Funções. Introdução à Programação SI1

2 echo "PHP e outros.";

Introdução a Algoritmos Parte 04

Lógica de Programação com Python

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Minicurso de Python Aula 1. Raphael Lupchinski Marcelo Millani

Unidade IV: Ponteiros, Referências e Arrays

IFTO LÓGICA DE PROGRAMAÇÃO AULA 02

Tuplas e Dicionários. Vanessa Braganholo vanessa@ic.uff.br

QUITETURA AVANÇADA DE SISTEMAS

Pilhas. Profa Morganna Diniz

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Programação em Linguagens de Scripts Aula 12. Prof. Msc. Anderson da Cruz

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

e à Linguagem de Programação Python

DAS5102 Fundamentos da Estrutura da Informação

Fundamentos de Programação II. Introdução à linguagem de programação C++

Prof. Esp. Adriano Carvalho

Estruturas de Dados Pilhas, Filas e Deques

Universidade Federal Rural do Rio de Janeiro PET-Sistemas de Informação. Lucas Nunes Paim

Avaliação de Expressões

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Internet e Programação Web

Aluísio Eustáquio da Silva

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Javascript 101. Parte 2

Nível da Arquitetura do Conjunto das Instruções

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

INTRODUÇÃO À LINGUAGEM C++

Python. Introdução à Programação SI1 - BSI

Estruturas de controle no nível de sentença

Algoritmos e programação

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Aprendendo Python na Prática. Dante Moreira Zaupa Mestrando em Computação Aplicada Bolsista de Pesquisa

Estruturas de Repetição. Programação em Java Estruturas de Repetição

Resumo da Matéria de Linguagem de Programação. Linguagem C

Programação de Computadores I. Ponteiros

Aula de JavaScript 05/03/10

2ª Lista de Exercícios

Pesquisa Operacional na Tomada de Decisões. Conteúdos do Capítulo. Programação Linear. Lindo. s.t. Resolvendo Programação Linear Em um Microcomputador

2. Execução do algoritmo de Huffman para construção de uma árvore binária (árvore de Huffman).

RESUMO DE CATALOGAÇÃO

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

Linguagem algorítmica: Portugol

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Aula 2 Lógica de Programação. UNIDADE 1 : - INTRODUÇÃO A COMPUTAÇÃO.

ESTRUTURA DE DADOS PILHA

Organização de programas em Python. Vanessa Braganholo

9 Comandos condicionais

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

PROGRAMAÇÃO II 3. FILA DINÂMICA

Capítulo 2: Introdução à Linguagem C

1 Detecção e correcção de erros Erros sintáticos Erros de execução Erros semânticos Erros semânticos...

AMBIENTE DE PROGRAMAÇÃO PYTHON

Programação de Computadores I. Linguagem C Vetores

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

Listas Duplamente Encadeadas

Aula 09 - Atualização de uma tabela dinâmica. Aula 09 - Atualização de uma tabela dinâmica. Sumário. Atualizando a tabela dinâmica

Roteiro 1: Dados, variáveis, operadores e precedência

Construindo portais com Plone. Módulo 3 Templates

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Revisão Aula Anterior Estruturas de Decisão (If e Switch)

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

EAD Árvore árvore binária

Curso de Programação Computadores

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Módulo 4. Instruções for, while e do/while. Algoritmos e Estruturas de Dados I C++ (Rone Ilídio)

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

OPERADORES E ESTRUTURAS DE CONTROLE

INF 1005 Programação I

7. Estrutura de Decisão

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos

Algoritmos de Busca em Tabelas

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

APOSTILA PHP PARTE 1

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Organização de Computadores Software

Sintaxe Básica de Java Parte 1

Transcrição:

PYTHON LISTAS Introdução à Programação SI2

3 Sequências Sequências! Podem ser indexados por algum valor ordinal posicional Algumas operações são aplicadas a todos os tipos de sequências. Listas li = [1,2,3, abc ] Tuplas li = (23, abc, 4.56, (2,3), def ) Strings st = Hello World st = Hello World

5 Listas Listas são coleções heterogêneas de objetos, que podem ser de qualquer tipo, inclusive outras listas. As listas no Python são mutáveis, podendo ser alteradas a qualquer momento é possível fazer atribuições a itens da lista Listas podem ser fatiadas da mesma forma que as strings

6 Listas Uma lista é na verdade um objeto da classe chamada list! Na verdade, pode ser vista como uma implementação de arrays Acesso seqüencial e direto através de índices

3 Listas Uma lista vazia L = [] Uma lista com três elementos Z = [ 15, 8, 9 ] Acesso a um elemento da lista Z[1] 8

8 Acesso e modificação a uma lista >>> Z = [15,8,9] >>> Z[0] 15 >>> Z[1] 8 >>> Z[2] 9 >>> Z[0] = 7 >>> Z[0] >>> Z [7,8,9]

9 Atribuições [33, 28, 9, 'league of legends', 78, 12] [33, 28, 9, "league of legends", 78, "teste"] [33, 28, 9, 99, 78, "teste"]

8 Calcular a média notas = [6,7,5,8,9] soma = 0 x = 0 while x<5: soma += notas[x] x+=1 print( Média: %5.2f % (soma/x))

8 Calcular a média informando valores notas = [0,0,0,0,0] soma = 0 x = 0 while x<5: notas[x] = float(input( Nota %d % x)) soma += notas[x] x+=1 x=0 while x<5: print( Nota %d: %6.2f % (x, notas[x])) x+=1 print( Média: %5.2f % (soma/x))

8 Operações # Uma nova lista: lista de frutas!! # Varrendo a lista inteira Caju Laranja Banana Uva

10 Listas >>> a = [1, 2, 3, 4, 5] #criação da lista >>> a[0] 1 >>> a [2] 3 >>> a[-1] 5 >>> a[-3] 3 >>> a[1:] [2, 3, 4, 5] >>> a[:3] [1, 2, 3] >>> a[1: 4: 2] #acrescido o passo, coleta-se pulando de 2 em 2 [2, 4] >>> a[: : -1] [5, 4, 3, 2, 1] #passo negativo inverte a sequência

11 Operações Trocando elementos Caju Laranja Uva Laranja

12 Operações Incluindo elementos Caju Laranja Uva Laranja Melancia

13 Operações Removendo elementos (por valor) Caju Laranja Uva Laranja

14 Operações Removendo elementos (por posição) [ Caju, Laranja, Laranja ]

8 Adição de Listas >>> L = [] >>> L = L+[1] >>> L [1] >>> L+= [2] [1,2] >>> L+= [3,4,5] >>> L [1,2,3,4,5]

18 Fatiando [ Laranja, Banana, Uva ] [ Caju, Laranja ] [ Laranja ] [ Caju, Banana ]

16 Operações Imprimindo com a posição 1 => Caju 2 => Laranja 3 => Banana 4 => Uva A função enumerate() retorna dois elementos a cada iteração: a posição sequencial e um item da seqüência correspondente

19 Operações em Listas Qual será o valor de b? >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> print b

20 Operações em Listas Qual será o valor de b? >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> print b [1,2,3,4] Surpresa!! Dados do tipo listas, dicionarios e pré-definidos pelo usuário são mutáveis!

Operações em Listas 21

22 Operações em Listas Para fazer cópias de listas a = b[:] (2 cópias independentes) a = b (os 2 referenciam o mesmo objeto) Qual é mesmo a diferença entre listas e tuplas? Listas são mutáveis e Tuplas imutáveis! l = [1, abc,4] t = (1, abc,4,5) Atribuição em listas e tuplas list[0] = 3 ok! t[0] = 3 NOK! (Deve-se criar uma nova tupla!) t = (3, abc,4,5)

23 Tuplas x Listas Listas são mais lentas porém mais poderosas que tuplas Listas podem ser modificadas e tem diversos operadores que podem ser utilizados Tuplas são imutáveis e tem menos funcionalidades! Para converter entre listas e tuplas? li = list(t)

39 A função list Pode ser usada para converter uma string ou tupla numa lista É útil pois uma lista pode ser modificada, mas uma string não. Para fazer a transformação inversa, pode-se usar o método join Ex:

31 String: método split() Separa uma string em uma lista de strings menores Recebe como parâmetro um caractere separador e um número máximo de pedaços (opcional) Retorna uma lista de strings, são os pedaços da string original divididos pelo separador. Não altera a string original.

String: método split() 32

28 Métodos insert(índice, elemento) Insere elemento na lista na posição indicada por índice Altera a lista original

Métodos Atribuições a fatias podem ser usadas para a mesma finalidade do método insert, entretanto, são menos legíveis 29

25 Métodos extend(lista2) Acrescenta os elementos de lista2 ao final da lista Altera a lista original

8 Append vs. extend >>> L = [ a ] >>> L.append( b ) >>> L [ a, b ] >>> L.extend([ c ]) >>> L [ a, b, c ] >>> L.append([ d, e ]) >>> L [ a, b, c, [ d, e ]] >>> L.extend([ f, g ]) >>> L [ a, b, c, [ d, e ], f, g ]

49 Exercícios 1. Faça um programa que leia duas listas e que gere uma terceira com os elementos das duas primeiras! 2. Faça um programa que leia duas listas e que gere uma terceira com os elementos das duas primeiras, mas sem repetição

30 Métodos pop(índice) Remove da lista o elemento na posição índice e o retorna Se índice não for mencionado, é assumido o último 2 [1, 3, 4] 4 [1, 3]

49 Listas como Filas 1. Faça um programa que utilize uma lista para simular uma fila de banco. Inicialmente há 10 clientes na fila, identificados por seu número de atendimento (1-10). O programa deve esperar por uma entrada para decidir o que será feito. Ao digitar F, um novo cliente é adicionado à fila, com seu respectivo número de atendimento, que deve ser único. Ao digitar A, o próximo cliente da fila é atendido. Ao digitar S, o programa termina.

8 Simulação de Fila de Banco ultimo = 10 fila = list(range(1,ultimo+1)) while True: print("\nexistem %d clientes na fila" % len(fila)) print("fila atual:", fila) print("digite F para adicionar um cliente ao fim da fila,") print("ou A para realizar o atendimento. S para sair.") operacao = raw_input("operacao (F, A ou S):") if operacao == "A": if(len(fila))>0: atendido = fila.pop(0) print("cliente %d atendido" % atendido) else: print("fila vazia! Ninguém para atender.") elif operacao == "F": ultimo += 1 # Incrementa o ticket do novo cliente fila.append(ultimo) elif operacao == "S": break else: print("operacao inválida! Digite apenas F, A ou S!")

49 Listas como Filas 1. Altere o programa do slide anterior para que ele aceite vários comandos digitados de uma só vez. Atualmente, apenas um comando pode ser inserido por vez. Altere o programa de forma a considerar a entrada de vários comandos como uma string. Exemplo: FFFAAAS significaria a chegada de três novos clientes, três atendimentos e, finalmente, a saída do programa.

ultimo = 10 fila = list(range(1,ultimo+1)) while True: print("\nexistem %d clientes na fila" % len(fila)) print("fila atual:", fila) print("digite F para adicionar um cliente ao fim da fila,") print("ou A para realizar o atendimento. S para sair.") operacao = raw_input("operacao (F, A ou S):") x=0 sair = False while x < len(operacao): if operacao[x] == "A": if(len(fila))>0: atendido = fila.pop(0) print("cliente %d atendido" % atendido) else: print("fila vazia! Ninguém para atender.") elif operacao[x] == "F": ultimo += 1 # Incrementa o ticket do novo cliente fila.append(ultimo) elif operacao[x] == "S": sair = True break else: print("operacao inválida! Digite apenas F, A ou S!") x = x + 1 if(sair): break

49 Listas como Pilhas 1. Faça um programa que utilize uma lista para simular uma pilha de pratos a lavar. Inicialmente há 10 pratos na pilha. O programa deve esperar por uma entrada para decidir o que será feito. Ao digitar E, um novo prato é adicionado à pilha. Ao digitar D, um prato deve ser desempilhado. Ao digitar S, o programa termina.

8 Simulação de Pilha de Pratos prato = 5 pilha = list(range(1,prato+1)) while True: print("\nexistem %d pratos na pilha" % len(pilha)) print("pilha atual:", pilha) print("digite E para empilhar um novo prato,") print("ou D para desempilhar. S para sair.") operacao = raw_input("operacao (E, D ou S):") if operacao == "D": if(len(pilha)) > 0: lavado = pilha.pop(-1) print("prato %d lavado" % lavado) else: print("pilha vazia! Nada para lavar.") elif operacao == "E": prato += 1 # Novo prato pilha.append(prato) elif operacao == "S": break else: print("operacao inválida! Digite apenas E, D ou S!")

49 Listas como Pilhas 1. Faça um programa que leia uma expressão com parênteses. Usando pilhas, verifique se os parênteses estão balanceados, isto é, para cada parêntese aberto há um correspondente fechando. Exemplo: (()) OK ()()(()()) OK ()) ERRO Como resolver este problema com pilhas?

expressao = raw_input( Digite a sequência de parênteses a validar:") x=0 pilha = [] while x<len(expressao): if(expressao[x] == "("): pilha.append("(") if(expressao[x] == ")"): if(len(pilha)>0): topo = pilha.pop(-1) else: pilha.append(")") # Força a mensagem de erro break x=x+1 if(len(pilha)==0): print("ok") else: print("erro")

54 Bibliografia Livro Como pensar como um Cientista de Computação usando Python Capítulo 8 http://pensarpython.incubadora.fapesp.br/portal Python Tutorial http://www.python.org/doc/current/tut/tut.html Dive into Python http://www.diveintopython.org/ Python Brasil http://www.pythonbrasil.com.br/moin.cgi/ DocumentacaoPython#head5a7ba2746c5191e 7703830e02d0f5328346bcaac