Aula 09 – Variáveis Heterogêneas Prof. Filipe Wall Mutz Variáveis Compostas Homogêneas São agrupamentos de dados relacionados logicamente e do mesmo tipo. Exemplos • • • • As idades dos alunos de programação 1. Os nomes dos professores do IFES. As matrículas dos alunos que vieram ao IFES hoje. As linguagens de programação que vocês irão aprender ao longo do curso. • O post mais popular dos seus amigos do Facebook. Como armazenar estas informações em um programa? Variáveis Compostas Heterogêneas (Registros) São agrupamentos de dados relacionados logicamente, mas de tipos diferentes (número, literal, lógico, etc.). • • • • Exemplos Nome, idade e matrícula de um aluno. Título, classificação indicativa e número de visualizações de um filme. Título, autor e ano de publicação de um livro em uma biblioteca. Texto, nº de curtidas e nº de compartilhamentos de um post do Facebook. Como armazenar estas informações em um programa? Variáveis Heterogêneas em Python Usando Listas: L = [“Luciano”, 20/04/1993, “M”, “BSI”] M = [“Lagoa Azul”, 1980, “Marcos Milano”] N = [“Pacman”, 1950, “Livre”] Acesso por Índices: nome = L[0] ano_lancamento = M[1] classificação = N[2] Variáveis Heterogêneas em Python Usando Listas: L = [“Luciano”, 20/04/1993, “M”, “BSI”] M = [“Lagoa Azul”, 1980, “Marcos Milano”] N = [“Pacman”, 1950, “Livre”] Problema: Não existe uma descrição do que cada campo significa. Ex.: aux = [13, “yep67”, 90, 56.643] Variáveis Heterogêneas em Python Usando Dicionários: aluno = {“nome” : “José”, “idade” : 21} Chave Valor nome “José” idade 17 Acesso usando as chaves: n = aluno[“nome”] print(n) Criação de Dicionários em Python Dicionários como Parâmetros para Funções Dicionários Aninhados Cópia por Referência em Listas e Dicts Cópia por Referência em Listas e Dicts Listas vs. Tuplas • Uma tupla é definida da mesma forma que uma lista, exceto que o conjunto de elementos deve ser limitado por parênteses ao invés de colchetes. • Assim como em uma lista, os elementos de uma tupla possuem uma ordem determinada e seus elementos podem acessados por índices começando do zero. • Índices negativos podem ser usados para acessar os elementos da tupla começando pelo final. Listas vs. Tuplas • Tuplas são imutáveis e por isso não é possível adicionar elementos a uma tupla, não é possível remover os elementos de uma tupla e não é possível descobrir o índice de um elemento em uma tupla usando a função .index() (mas é possível verificar se o elemento existe na tupla usando o operador in). • OBS: tuplas podem ser convertidas em listas e vice-versa. • OBS: Embora não seja possível adicionar elementos em uma tupla, duas tuplas podem ser fundidas em uma nova. Por que usar tuplas? • Tuplas são mais rápidas que listas. Se vocês estão definindo um conjunto constante de valores e tudo que farão é percorrê-lo, use uma tupla ao invés de uma lista. • Tuplas torna o código mais seguro se você adiciona uma restrição de escrita aos dados que não devem ser alterados. • Chaves de dicionários podem ser inteiros, strings e alguns outros tipos, dos quais se destacam as tuplas. A única exceção é que as tuplas devem ser de elementos imutáveis (inteiros, strings e outras tuplas, por exemplo, mas não listas). Exercício Um pesquisador deseja criar uma biblioteca de funções para operar sobre números em notação científica representados da seguinte forma: 1.23 x 105 notacao_cientifica[“valor”] = 1.23 notacao_cientifica[“expoente”] = 5 Crie as seguintes funções para a biblioteca, sempre mantendo os números em notação científica (valor > 1 e < 10): 1. Criação de números neste formato (parâmetros: valor e expoente). 2. Leitura e Impressão (no seguinte formato: valor x 10 ^ expoente). 3. Colocar um número em notação científica (ex.: 10*10^1-> .1*10^2). 4. Multiplicação e Divisão. 5. Soma e Subtração. 6. Conversão de um número em notação científica para ponto flutuante. 7. Conversão de um número de ponto flutuante para notação científica. Exercício Um pesquisador deseja criar uma biblioteca de funções para operar sobre horários representados da seguinte forma: 01:05:10 horario[“horas”] = 1 horario[“minutos”] = 5 horario[“segundos”] = 10 Crie as seguintes funções para a biblioteca, sempre mantendo os horários válidos (minutos e segundos >= 0 e < 60): 1. Criação de números neste formato (parâmetros: horas, minutos, segundos). 2. Leitura e Impressão (no seguinte formato: hh:mm:ss). 3. Corrigir um horário incorreto. 4. Soma e Subtração (na sub., apenas as horas podem ficar negativas). 5. Conversão de horário para segundos. 6. Conversão de segundos para um horário.