Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programacion I, Apuntes de Matemáticas

Asignatura: programació 1, Profesor: Irene Llerena, Carrera: Matemàtiques + Enginyeria Informàtica, Universidad: UB

Tipo: Apuntes

2013/2014

Subido el 15/12/2014

bernatesquirol
bernatesquirol 🇪🇸

4

(3)

1 documento

1 / 44

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema4. Estructures de dades: taules i tuples
Programaci´
o I - T4 - Estructures de Dades
Universitat de Barcelona
Grau en Enginyeria Inform`
atica
19 de novembre de 2014
0/ 43
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c

Vista previa parcial del texto

¡Descarga Programacion I y más Apuntes en PDF de Matemáticas solo en Docsity!

Tema4. Estructures de dades: taules i tuples

Programaci ´o I - T4 - Estructures de Dades

Universitat de Barcelona Grau en Enginyeria Inform `atica

19 de novembre de 2014

0 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

1 Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o

4.2. Taules (dades homog `enies)

Introducci ´o Declaraci ´o i inicialitzaci ´o Manipulaci ´o del contingut Esquemes de programaci ´o de taules Matrius

4.3. Tuples (dades heterog `enies)

Introducci ´o Declaraci ´o i inicialitzaci ´o Manipulaci ´o del contingut

4.4. Separabilitat de les classes: introducci ´o a l’encapsulament

4.5. Problemes de taules i tuples

1 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Introducci ´o II

Una nova classe d’objectes cont ´e:

Estructura de dades (o atributs) : forma d’organitzar i codificar

les dades.

M `etodes per a manipular les dades : conjunt d’operacions o

utilitats que es poden realitzar sobre les dades emmagatzemades.

En assignatures posteriors, per a seguir el paradigma de la

programaci ´o orientada a objectes :

a les classes noves d’objectes : s’afegiran m `etodes per a poder

manipular les dades que contenen f `acilment per part de la resta

del codi que les utilitzi. De fet, les dades dels objectes nom ´es es

podran manipular a trav ´es d’aquests m `etodes ( encapsulaci ´o ).

s’estudiaran classes d’objectes disponibles : per a disposar

d’estructures de dades habituals, com ara Collections

(ArrayList, TreeSet, LinkedList...) i Hashs (HashSet,

LinkedHashSet...).

3 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Introducci ´o II

Inicialment, es simplifica la utilitzaci ´o de tipus de dades

existents o la creaci ´o de nous tipus de dades de la seg ¨uent

forma:

per a dades homog `enies : s’usaran taules que permeten

agrupar N elements del mateix tipus; s’implementaran com a

variables del tipus b ´asic NO primitiu array.

per a dades heterog `enies : s’usaran tuples ; s’implementaran

creant noves classes d’objectes amb un atribut per a cadascuna

de les dades que han de contenir.

4 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Declaraci ´o i inicialitzaci ´o

Declaraci ´o: [] ;

int [] a; tamb ´e s’accepta estil C int a[];

String [] b;

Inicialitzaci ´o: Un cop inicialitzat el nombre d’elements, el tamany

de l’ array es inalterable.´

new []

{, ... , }

int [] a = new int[10]; 10 elements

int [] a = {1,2,3,s.length()}; 4 elements, ´ındexs [0..3]

String [] m ={’’hola’’,’’ad´eu’’.substring(0,2)};

float [] a;

a = new float [ ] {1.1f, 2.2f}; podem inicialitzar

despr ´es de declarar.

6 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Tipus emmagatzemats

Els arrays poden contenir tipus valor o tipus refer `encia:

tipus valor:

0 1 2 3

5.2f 7.7f 9.0f 5.0f

tipus refer `encia:

ref1 ref2 ref3 ref

Anna Marc Rita Xavi

Exemple/exercici: qu e es crea a memoria amb el codi seg ¨uent?

String [] m = new String[3];

// assigno, a l’element en la pos. 1, la refer`encia al literal ’’hola’’

m[1] = ‘‘hola’’;

// assigno, a l’element en la pos. 0, la refer`encia a String que n’hi ha a la posici´o 1

m[0] = m[1];

// assigno la referencia a un substring del String al que referencia m[1] 7 / 43

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Esquemes de programaci ´o de taules

Podem interpretar les taules com a seq ¨u `encies d’elements , i

per tant podem adaptar els esquemes de programaci ´o de

seq ¨u `encies:

recorregut

cerca

Caracteritzaci ´o de la seq ¨u `encia dels ´ındex d’una taula:

Primer() = 0

Seg ¨uent(x) = x+

FiSeq(x) = (x < num elem taula)

9 / 43

Recorregut I

Esquema de recorregut en una taula:

for(idx=0; idx<taula.length ;idx++){

<sent`encies tractar taula[idx]>

import java. util. Scanner ; public class TaulaRecorregut { public static final int TAMANY = 10; public static void main ( String [] args ) { int [] taula = new int [ TAMANY ]; Scanner sc ; sc = new Scanner ( System. in ); for ( int idx =0; idx < TAMANY ; idx ++) { System. out. println (" Valor " +( idx +1)+ "? " ); taula [ idx ] = sc. nextInt (); } for ( int idx =0; idx < taula. length ; idx ++) { System. out. println (" Element " +( idx +1)+ " = "+ taula [ idx ]); } } }

Cerca I

import java. util. Scanner ; public class TaulaCerca { public static void main ( String [] args ) { int idx ; boolean trobat ; Scanner sc = new Scanner ( System. in ); String [] taula = {" Oriol " , " Eul`alia " , " David " , " Santi " }; System. out. println (" Qui vols cercar ?" ); String nom = sc. next (); idx =0; trobat = false ; while ( ( idx < taula. length ) &&! trobat ) { if ( taula [ idx ]. equals ( nom )) { trobat = true ; } else { idx ++; } } if ( trobat ) System. out. println (" Trobat a la posici´o " +( idx +1)); else System. out. println (" Nom no trobat " ); } }

Exemple: I

D´ıgits continguts en els m ´ultiples de 7: donats els m ´ultiples de 7

inferiors a 10000, donar quants d´ıgits 0’s, quants d´ıgits 1’s,... , quants

d´ıgits 9 contenen.

Identificaci ´o de la seq ¨u `encia principal: m ´ultiples de 7 inferiors a

Primer element: m= 7

Seg ¨uent element: m = m + 7

Final de seq ¨u `encia: m > 10000

Identificaci ´o de l’esquema: Recorregut

N’hi han dues seq ¨u `encies m ´es (veure codi a continuaci ´o)

Exemple: II

while (m <= 10000) { // tractarMultiple /* Identificacio de la sequencia: 1er element: d = m % 10 Seguent element: m = m / 10; d = m % 10; Final de sequencia: m == 0 Identificacio de l’esquema: Recorregut */ System. out. println (" Multiple " + m ); mult = m; d = mult % 10; while ( mult != 0) { System. out. println (" digit : " + d ); comptador [d] = comptador [d ]+1; mult = mult / 10; d = mult % 10; } // Seguent multiple m = m + 7; }

// Imprimir multiples /* Identificacio de la sequencia: 1er element: i = 0

Exemple: III

Seguent element: i = i + 1 Final de sequencia: i >= 10 Identificacio de l’esquema: Recorregut */ for ( int i =0; i <10; i=i +1) { System. out. println (" comptador "+i+": "+ comptador [i ]); } } }

Tema4. Estructures de dades: taules i tuples

4.1. Introducci ´o 4.2. Taules (dades homog enies) 4.3. Tuples (dades heterogenies) 4.4. Separabilitat de les classes: introducci ´o a l’encapsulament 4.5. Problemes de taules i tuples

Declaraci ´o i inicialitzaci ´o de matrius

Declaraci ´o: []<...>[] ;

int [][] m; declaraci ´o dues dimensions

Inicialitzaci ´o:

new []<...>[]

{ {, ... , }, <...> , {, ... , } }

m = new int [3][3]; inicialitzaci ´o 3x

m = { {11, 21}, {12, 22} }; literals

m = new int [3][]; nom ´es les “primeres” dimensions

m[2] = new int [7]; posteriorment les “seg ¨uents” dimensions

m[2] = new int [ ] {3,6,4,1,8}; tamb ´e com a literals

18 / 43

Esquemes de programaci ´o de matrius I

Si les interpretem com a taules aniuades , podem adaptar els

esquemes de programaci ´o de taules, fent aniuament de bucles.

public class MatriuRecorregut { public static void main ( String [] args ) { int [][] taula = { {1 , 2} , {3 , 4} };

for ( int fil =0; fil < taula. length ; fil ++) {

for ( int col =0; col < taula [ fil ]. length ; col ++) {

System. out. println (" Element (" +( fil +1)+ " , " +( col +1)+ " )= "+ taula [ fil ][ col ]); } } } }