


Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Fonaments d'Informàtica, Profesor: Pau Fernandez Duran, Carrera: Enginyeria de Sistemes Audiovisuals, Universidad: UPC
Tipo: Exámenes selectividad
1 / 4
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



tupla Agrupació de variables de diferent tipus. Les tuples també s’anomenen, de vegades, “estructures” (de l’anglès struc- ture).
camp Qualsevol de les variables individuals que formen una tupla.
Les tuples serveixen per tractar com a una unitat un conjunt de dades que tenen entitat pròpia.
Les tuples requereixen una declaració de tipus (aquestes declaracions se situen al principi del programa, just després dels #includes). Això implica que primer hem de declarar quin és el contingut d’una tupla (els tipus de les variables que conté i el seu nom), i llavors, fent servir aquest tipus, podem declarar-ne variables.
Per declarar un tipus tupla, hem de posar:
struct tData { int dia; int mes; int any; };
La declaració inclou:
Un cop hem declarat el tipus tupla, podem declarar variables d’aquest tipus:
tData aniversari, ahir; tData sant_joan;
Exercici 1 Declara les següents tuples:
Per accedir als camps d’una tupla, farem servir una notació especial que indica la pertanyença a una tupla amb un punt (’.’). Per exemple, utilitzant la declaració de la variable aniversari anterior, per omplir els camps d’aquesta tupla amb certs valors hem de fer:
aniversari.dia = 4; aniversari.mes = 8; aniversari.any = 1976;
El que hem fet és indicar la tupla posant el nom aniversari, després un punt (que indica que “entrem” dins la tupla, que és qui conté els camps) i finalment indiquem quin camp de la tupla volem (dia, mes, o any). Per contraposició a les taules, les tuples no tenen índexs, de manera que per especificar quina de les “variables internes” volem accedir, hem de fer servir el nom del camp i no un índex.
Exercici 2 Fent servir les declaracions que has fet en l’exercici anterior:
Les variables de tipus tupla es poden inicialitzar quan les declarem. Si tinguéssim una tupla com per exemple:
struct tExemple { int a; char b; string c; };
Podríem crear una variable d’aquest tipus i alhora posar-hi els valors inicials així:
tExemple X = { 2, ’z’, "prax" };
La sintaxi és força semblant a la inicialització de variables de tipus bàsics, però el valor utilitzat és un bloc, entre claus, dels valors que han d’anar als camps de la tupla en el mateix ordre que aparaeixen a la declaració. Per tant, aquesta inicialització és equivalent a fer:
tExemple X; X.a = 2; X.b = ’z’; X.c = "prax";
Exercici 3
Repeteix el tercer apartat de l’exercici anterior (la tupla tPersona), però aquest cop inicialitza-la de la nova manera.
Per passar tuples com a paràmetres s’ha de tenir en compte un fet important respecte al pas de paràmetres: quan passem un valor d’entrada a una funció/acció, aquest es copia íntegrament a la variable reservada per al paràmetre de la funció. Aquesta còpia, per als tipus bàsics, és ràpida, ja que ocupen poc espai de memòria.
El problema és que amb les tuples la còpia pot ser molt més costosa pel fet que agrupen molts valors i tenen un volum de dades major. La ineficència pot arribar fins a tal punt que la còpia trigui més que l’execució de la funció/acció. Per evitar aquest còpia en tuples grans, encara que siguin paràmetres d’entrada (que no es modifiquen) es fa servir el pas per referència unit a una clàusula const. Veiem-ho amb un exemple: suposem la declaració de tipus
struct tAssignatura { string titol; int codi;
Tècniques de programació amb tuples
Si un programa manipula dates, i volem, per exemple, fer una funció que compari dues dates, en teoria aquesta funció rebrà 6 paràmetres (el dia, mes i any de les dues dates). Amb tuples, podem declarar un tipus tupla i fer que la funció rebi 2 paràmetres en comptes de 6. Suposant la declaració de tData que hi ha al principi, vegem aquest exemple:
// posterior: calcula si d1 ´es posterior a d bool posterior(tData d1, tData d2) { bool post = false; if (d1.any > d2.any) post = true; else if (d1.any == d2.any) { if (d1.mes > d2.mes) post = true; else if (d1.mes == d2.mes) { if (d1.dia > d2.dia) post = true; } } return post; }
Exercici 5
Fes una funció que calcula la distància entre 2 punts bidimensionals (tPunt2D).
Exercici 6 Fes una acció anomenada llegeix_data que llegeixi una data (de tipus tData).
Exercici 7
Fes un programa sencer (utilitzant el que has fet en els dos exercicis anteriors, i incloent l’exemple de la funció posterior) que llegeixi dues dates i mostri per pantalla si la primera és posterior a la segona. Escriu el programa com si el féssis a l’ordinador, fent especial atenció a on aniria cada part del codi (includes, tipus, funcions i main), per tal que compili correctament.
Generated on: 2008-11-16.