Você está na página 1de 11

Aula 9 - Estruturas de Dados Heterogéneas

Programação

Informática Web
João Cordeiro
jpcc@ubi.pt

Dezembro 7, 2022

Programação (Informática Web) Aula 9 Dezembro 7, 2022 1 / 11


Estruturas de Dados Heterogéneas

Sumário
Estruturas de Dados Heterogéneos. Dicionários. Funções com dicionários
de parâmetros. Demonstração de exemplos e realização de exercícios.

Programação (Informática Web) Aula 9 Dezembro 7, 2022 2 / 11


Estruturas de Dados Heterogéneas

Definição
É uma estrutura que agrega dados de diferentes tipos.

+ Em Python, uma lista, um conjunto ou tuplo podem satisfazer os


critérios de definição anterior. No entanto estas estruturas são mais
usadas para agregar dados do mesmo tipo. Por exemplo, podemos ter
numa mesma lista números inteiros, floats e strings:
salada = [2, ’a’, -3.12, "UBI"].
+ Quando falamos de uma estrutura heterogénea estamos mais a pensar
em algo mais próximo de uma struct, em linguagem C. Portanto, um
tipo de dados que agrega elementos de diferentes tipos.
+ Motivação: Como é que podemos representar diferentes características
de uma estudante?

Programação (Informática Web) Aula 9 Dezembro 7, 2022 3 / 11


Estruturas de Dados Heterogéneas

Como representar diferentes características de uma estudante?

+ Por exemplo se quisermos representar somente o número, nome e média


actual das classificações, para depois trabalharmos com listas ou con-
juntos de estudantes, como é que podemos proceder, tendo em conta
o que sabemos até agora?
+ Aqui uma possibilidade seria usar tuplos, por exemplo:
design = [(107,’Anne’, 18.1), (108,’John’,17.3)]

+ O que será mostrado com print(1+design[1][2])?


+ No entanto, em situações do mundo real, temos frequentemente enti-
dades com muito mais que três características! Por exemplo, 5, 10, 20,
ou mais. Logo, esta representação não seria a mais adequada.

Programação (Informática Web) Aula 9 Dezembro 7, 2022 4 / 11


Estruturas de Dados Heterogéneas

Podemos definir uma estrutura heterogénea como sendo uma classe de


dados e defini-la com uma notação simples da seguinte forma:
from dataclasses import dataclass

@dataclass
class Estudante :
numero : int
nome : str
media : float

Podemos agora criar variáveis do tipo desta nova classe, assim:


a = Estudante (107 , " Anne " , 18.1)
b = Estudante (108 , " John " , 17.3)

Programação (Informática Web) Aula 9 Dezembro 7, 2022 5 / 11


Estruturas de Dados Heterogéneas
No exemplo anterior, a e b são duas variáveis estruturadas da classe
Estudante, ou do tipo Estudante. Podemos aceder de forma individual
aos elementos de uma variável estruturada:
a = Estudante (107 , " Anne " , 18.1)
print ( " A % s tem % f de m é dia ! " % ( a . nome , a . media ) )
a . media = a . media - 0.11
print ( a )

Se L for a lista dos estudantes da turma de Design e quisermos uma


função que recebe esta lista e calcula a média das médias dos alunos,
podemos fazer assim:
def mediaTurma ( L : list ) :
soma = 0
for x in L :
soma = soma + x . media
return soma / len ( L )

Programação (Informática Web) Aula 9 Dezembro 7, 2022 6 / 11


Dicionários

Definição
É uma estrutura de dados associativa de elevada eficiência na pesquisa.
Nesta uma chave está associada a um único valor.
A estrutura geral de um dicionário é mostrada a seguir:
{ key 1 : value 1 , key 2 : value 2 ,... , key n : value n }

Um exemplo de um dicionário é mostrado a seguir:


produtos = { ’ cerveja ’ :75 , ’ nata ’ :65 , ’ cafe ’ :55}

Algumas operações com dicionários:


print ( produtos . keys () )
print ( produtos . get ( ’ cafe ’) )
print ( produtos [ ’ cafe ’ ])
produtos [ ’ cafe ’] = produtos [ ’ cafe ’] + 1

Programação (Informática Web) Aula 9 Dezembro 7, 2022 7 / 11


Funções com Dicionários de Parâmetros

Na última aula vimos que uma função pode receber uma número variável de
parâmetros. A declaração formal desses parâmetros é feita usando um único
identificador precedido do símbolo “*”. Esse identificador o tuplo dos parâmetros

def somar (* valores ) :


s = 0
for x in valores :
s = s + x Neste caso, os parâmetros re-
return s cebidos são uma estrutura ho-
mogénea de dados. Se quiser-
if __name__ == " __main__ " : mos receber uma estrutura het-
c = somar (3 ,4) erogénea de parâmetros, como
print ( c ) é que fazemos?

print ( somar () )
print ( somar (1 ,2 ,3) )

Programação (Informática Web) Aula 9 Dezembro 7, 2022 8 / 11


Funções com Dicionários de Parâmetros

Neste caso, os parâmetros recebidos são uma estrutura homogénea de


dados. Se quisermos receber uma estrutura heterogénea de
parâmetros, como é que fazemos?
Utilizamos um dicionário de parâmetros da seguinte forma:
def funcname (** kwargs ) :
Instructions Block

Exemplo:
def area (** kwargs ) :
a = 0
if " base " in kwargs and " altura " in kwargs :
a = kwargs [ " base " ]* kwargs [ " altura " ]/2
return a

print ( area ( base =7 , altura =3) )

Programação (Informática Web) Aula 9 Dezembro 7, 2022 9 / 11


Estruturas de Dados Heterogéneas

Vamos fazer uns exercícios?

Programação (Informática Web) Aula 9 Dezembro 7, 2022 10 / 11


Python Cheat Sheet

Figure 1: The Python Cheat Sheet.

Fonte em: [PDF]


Programação (Informática Web) Aula 9 Dezembro 7, 2022 11 / 11

Você também pode gostar