Aula de hoje. Outras estruturas de dados. Teoria dos conjuntos. Teoria dos conjuntos. Conjuntos em Python. Conjuntos em Python

Documentos relacionados
Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Aula de hoje. Strings. Expressões lógicas. Relações lógicas equivalentes. Operadores para strings. Introdução

Aula de hoje. Funções. Introdução. Função. Definição de funções. Exemplo. SCC Introdução à Programação para Engenharias

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

24/09/2014. Prof. André Backes

Algoritmos e Programação

MCG126 Programação de Computadores II

Nas aulas anteriores. Tipos nativos do Python: Tipos simples: inteiros, floats, booleanos. Tipos compostos: strings, listas, dicionários.

Listas, conjuntos e dicionários

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Introdução à Programação / Programação I

Introdução à Programação

Dicionários. Operações Aliases, cópias. Os tipos de dados compostos que estudamos até ao momento (strings, listas, tuplos) são sequenciais:

Programação I Aula 9 Listas e tuplos

Estruturas de Dados em Python

Aula de hoje. Códigos numéricos. Códigos binários. Armazenamento de dados. Armazenamento de dados. Armazenamento de dados

Sequências - Tuplas. Sequências - Tuplas

Linguagens de Programação Aula 14

Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear

TIPOS ESTRUTURADOS. Prof. Msc. Luis Filipe Alves Pereira 2015

Python: Dicionários. Claudio Esperança

Introdução à Programação Aula 14 Dicionários

Programação I Aula 14 Dicionários

Aula de hoje. Programação. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores

Introdução à Programação Aula 9 Listas e tuplos

Tuplas. Prof. Alberto Costa Neto Programação em Python

Algoritmos e Estrutura de Dados Aula 08 Pilhas

ÁLGEBRA E CÁLCULO RELACIONAL

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Programação I Aula 14 Dicionários Pedro Vasconcelos DCC/FCUP

Aula 03 Introdução à Programação com a Linguagem Python

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

Programação procedimental

Algoritmo e Programação Matemática LAÇOS E LISTAS

Uma linguagem de especificação formal simplificada

Lista de Linguagens de Programação 16

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012

Conceito de Campos e Tabelas

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

Estruturas de dados funcionais

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Padrão para a codificação em Python

Listas e Tuplas. Vanessa Braganholo

Algoritmos e Programação

Aula 9 BD 1 SQL Parte 1. Profa. Elaine Faria UFU

Introdução à Ciência da Computação Disciplina:

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

INTRODUÇÃO À COMPUTAÇÃO - EPET006 -

Introdução a Programação

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

1 Operações com conjuntos

Python: Voltando aos Containers

Python para quem sabe Python

Conceitos Básicos de Algoritmos

Algoritmos e estrutura de dados

Fundamentos 1. Lógica de Predicados

LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL

Estrutura de Dados. Diego Silveira Costa Nascimento

Matemática para Ciência de Computadores

Programação de Computadores I. Professor Ilaim Costa Junior

Python - Dicionários. Introdução à Programação SI1

BCD29008 Banco de dados

3. Linguagem de Programação C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Aula 4: Introdução à Linguagem C++

Conceitos básicos de algoritmos

Programação de Computadores

Algoritmos e Estrutura de Dados Aula 05 Dicionários em Python

Listas lineares. Listas lineares. Estrutura dos nodos. Lista linear. a b c d. Uma Lista Linear (LL) é uma seqüência de nodos

TAD: Tipo Abstrato de Dados (parte 2)

Fábio Rodrigues / Israel Lucania

TAD: Tipo Abstrato de Dados (parte 2)

Sets. Declaração: var y : Set[Int] = Set() O tipo do conjunto não é obrigatório, podendo usar a inferência: var x = Set(1,3,5,7)

Allen B. Downey. Novatec

Algoritmo e Programação Matemática

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

Luciano Ramalho setembro/2012. Objetos Pythonicos. Orientação a objetos e padrões de projeto em Python

Professor Jefferson Chaves Jefferson de Oliveira Chaves - IFC Araquari

Matemática Discreta - 07

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Operador in e Caracteres

Listas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro

Programação Orientada a Objetos

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Orientação a Objetos AULA 09

Aula 4 Estrutura Condicional

Aula 06 Introdução à Programação com a Linguagem Python

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Transcrição:

SCC 124 - Introdução à Programação para Engenharias Outras estruturas de dados Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de hoje Introdução Conjuntos Métodos Operadores Dicionários Métodos Operadores s 2 Teoria dos conjuntos Teoria dos conjuntos Área de lógica matemática que estuda conjuntos (coleção de objetos) Área começou em 1874 após publicação do artigo On a Property of the Collection of All Real Algebraic Numbers, por Georg Cantor Define operações binárias sobre conjuntos Principais operações Pertinência União Interseção Diferença Complemento Leis de De Morgan 3 4 Conjuntos em Python Coleção não ordenada de elementos sem repetição Existência de objetos é mais importante que ordem e quantas vezes eles ocorrem Elementos são listados entre {...} Comando para definir conjunto vazio: set() Conjuntos em Python Tipo mutável Principais usos: Testar pertinência de itens Eliminar itens duplicados Manipular conjuntos de itens 5 6 1

Conjuntos em Python Operações de teoria dos conjunto podem ser aplicados a um conjunto de itens Pertinência (in) União ( ) Interseção (&) Diferença (-) A > b... Operadores Relacionais e bitwise >>> cesta = ['maçã', 'laranja', 'maçã', 'pera', laranja', 'uva'] >>> frutas = set(cesta) # cria conjunto sem repetições >>> frutas >>> 'laranja' in frutas # Teste rápido de pertinência >>> 'pinha' in frutas 7 8 Conjuntos em Python >>> cesta = ['maçã', 'laranja', 'maçã', 'pera', laranja', 'uva'] >>> frutas = set(cesta) # cria conjunto sem repetições >>> frutas { maçã, laranja', 'pera', 'uva } >>> 'laranja' in frutas # Teste rápido de pertinência True >>> 'pinha' in frutas False Elementos podem ser incluídos com: Operador = Método add() # formato: nomedoconjunto.add() Outros métodos Método copy () (copia conjunto) Método remove() (remove item de um conjunto) Método issuperset() (define se um conjunto contem outro) 9 10 1 1 >>> a = (1, 4, um, 4) >>> conjunto = set(a) >>> conjunto = set() = {2, la } Pode receber qualquer sequência Não inclui itens duplicados >>> a = (1, 4, um, 4) >>> conjunto = set(a) >>> conjunto {1, 4, um } = set() set() = {2, la } {2, la } Pode receber qualquer sequência Não inclui itens duplicados 11 12 2

2 >>> a = {1, 4, um } = a.copy() >>> a.add(0) >>> a >>> a.issuperset(b).remove(1) 2 >>> a = {1, 4, um } = a.copy() # equivalente: b = a >>> a.add(0) >>> a {0, 1, 4, um } >>> a.issuperset(b) True.remove(1) {4, um } 13 14 3 >>> a = set('abracadabra') = set('alacazam') >>> a # letras que aparecem em a >>> a - b # letras em a mas nao em b >>> a b # letras em a ou em b >>> a & b # letras em a e em b >>> a ^ b # letters exclusivamente em a ou b 3 >>> a = set('abracadabra') = set('alacazam') >>> a # letras que aparecem em a {'a', 'r', 'b', 'c', 'd } >>> a - b # letras em a mas nao em b {'r', 'd', 'b } >>> a b # letras em a ou em b {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l } >>> a & b # letras em a e em b {'a', 'c'} >>> a ^ b # letters exclusivamente em a ou b {'r', 'd', 'b', 'm', 'z', 'l } 15 16 Exercício >>> a = {1, 3, 5, 6} = {2, 4, 6} >>> a b >>> a & b >>> a b >>> a ^ b Exercício >>> a = {1, 3, 5, 6} = {2, 4, 6} >>> a b {1, 2, 3, 4, 5, 6} >>> a & b {6} >>> a b {1, 3, 5} >>> a ^ b {1, 2, 3, 4, 5} 17 18 3

Comando for Conjuntos podem ser usados em comandos for >>> a = {x for x in abracadabra if x not in abc } >>> a Comando for Conjuntos podem ser usados em comandos for >>> a = {x for x in abracadabra if x not in abc } >>> a {'r', 'd'} 19 20 Exercício 1 Escrever um programa em Python para provar a lei de De Morgan Exercício 1 Escrever um programa em Python para provar a lei de distributividade entre conjuntos 21 22 Dicionário Dicionário Semelhante a um dicionário onde você pode: Consultar palavras e significados Acrescentar palavras e significados Alterar significados de palavras Excluir palavras e parte de seus significados Também pode ser usado como uma caderneta de contatos, onde você pode: Anotar telefone, email e endereço Encontra email procurando pelo nome Cada item (entrada) é formado pelo par: Valor: um conjunto de valores (informações) Chave: uma palavra-chave (ex.: nome completo), que serve de indexador (identificação) de item 23 24 4

Dicionário Tipos mutáveis x imutáveis Chave pode ser de qualquer tipo imutável Strings e números podem sempre ser chaves Tuplas podem ser chaves se contêm apenas strings, números ou tuplas Listas não podem ser chaves (tipo mutável) Valor pode ser de qualquer tipo, mutável ou imutável = [12, 34, 3] [2] = 6 [1] = 2 >>> x = aulas >>> x[1] >>> x[0] = z # ERRO 25 26 Tipos mutáveis x imutáveis Dicionário = [12, 34, 3] [12, 34, 3] [2] = 6 [12, 34, 6] [1] = 2 [12, 2, 6] >>> x = aulas >>> x[1] u >>> x[0] = z # ERRO ERRO, pois valores de um string não podem ser mudados A chave de cada item é única Mais de um item não pode ter a mesma chave Ex.: email, nome completo, CPF,... Chaves devem ser objetos simples Em Python, dicionários são instâncias (objetos) da classe dict 27 28 Dicionários Dicionários Podem ser vistos como um conjuntos não ordenados de pares chave-valor Ex.: { Joao : 3245, Pedro : 2311} Dicionário vazio: {} Chaves devem ser únicas Armazenar novo item com chave existente escreve sobre o item que tem a mesma chave Acessar item com chave que não existe gera erro Chave Valor 29 Itens podem ser Consultados Indexar dicionário com a chave do item a ser consultado Incluídos Atribuir valor, indexando dicionário com uma nova chave Excluídos Elimina itens, utilizar para isso o comando del Alterados Dada uma chave existente, alterar valor do seu item 30 5

Incluir novo item Consultar dicionário Eliminar item = { joao : 4098, leo : 4139} [ luis ] = 4127 [ joao ] >>> del tel[ leo ] [ ivo ] = 4127 Incluir novo item Consultar dicionário Eliminar item = { joao : 4098, leo : 4139} [ luis ] = 4127 { leo : 4139, luis : 4127, joao : 4098} [ joao ] 4098 >>> del tel[ leo ] [ ivo ] = 4127 { luis : 4127, ivo : 4127, joao : 4098} 31 32 Métodos pré-definidos Visões dos métodos pré-definidos Método nomedicionario.items() Retorna os pares chave-valor de um dicionário Visão de itens Método nomedicionario.keys() Retorna as chaves do dicionário (em ordem arbitrária) Podem ser ordenadas pelo Método sorted() Método nomedicionario.values() Retorna os valores do dicionário Permitem transformar dicionário em uma lista de: Itens Método nomedicionario.items() Chaves Método nomedicionario.keys() Valores Método nomedicionario.values() 33 34 1.keys() >>> list(tel.keys() ).values().items() >>> list (tel.items() >>> sorted(tel) Visão de itens Retorna chaves ordenadas 1 { luis': 4127, 'ivo': 4127, 'joao': 4098}.keys() dict_keys(['pedro', 'Ivo', 'Joao']) >>> list(tel.keys() ) [ luis', 'ivo', 'joao'].values() dict_values([4127, 4127, 4098]).items() dict_items([( luis : 4127), ( ivo : 4127), ( joao : 4098)]) >>> list (tel.items() [( luis : 4127), ( ivo : 4127), ( joao : 4098)] >>> sorted(tel) ['ivo', 'joao', 'luis'] 35 36 6

2 2 = {'joao': 4098, 'leo': 4139} >>> oldtel = tel >>> oldtel >>> novotel = tel.items() >>> novotel >>> sorted(novotel) Retorna itens ordenados por chave = {'joao': 4098, 'leo': 4139} >>> oldtel = tel >>> oldtel {'joao': 4098, 'leo': 4139} >>> novotel = tel.items() >>> novotel dict_items ([('leo', 4139), ('joao', 4098)]) >>> sorted(novotel) [('joao', 4098), ('leo', 4139)] 37 38 Construtores e operadores Construtor dict() Constrói dicionários diretamente de uma lista de pares (tuplas) chave-valor Operador in Retorna um valor booleano que indica se uma chave está presente em um dicionário 2 = {'joao': 4098, 'leo': 4139} >>> dict([( joao, 4098), ( leo, 4139)]) >>> joao in tel2 >>> marcos not in tel2 39 40 2 = {'joao': 4098, 'leo': 4139} >>> dict([( joao, 4098), ( leo, 4139)]) { joao : 4098, 'leo : 4139} >>> joao in tel2 True >>> marcos not in tel2 True Exercício 2 Criar um dicionário com o nome e a nota de cinco disciplinas que você cursou nos últimos 12 meses Ordenar as disciplinas por ordem crescente de notas e, para notas iguais, ordem alfabética de nome 41 42 7

Conclusão Perguntas Outras estruturas de dados Conjuntos Métodos Operadores Dicionários Métodos Operadores s 43 44 8