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


Apunts Tuples 1, Exámenes selectividad de Informática

Asignatura: Fonaments d'Informàtica, Profesor: Pau Fernandez Duran, Carrera: Enginyeria de Sistemes Audiovisuals, Universidad: UPC

Tipo: Exámenes selectividad

Antes del 2010

Subido el 04/12/2008

dushka
dushka 🇪🇸

5

(1)

10 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Apunts Fonaments d’Informàtica (c) 2008, Pau Fernández 1
Tuples 1
Sintaxi de tuples en C++
Concepte de tupla
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.
Declaració de tuples
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:
La paraula reservada struct.
El nom del tipus (en l’exemple, tData). Aquest nom ha de seguir les convencions de C++ per a noms.
Un bloc amb les declaracions (com si fóssin variables, i sense inicialitzar) dels camps de la tupla (en l’exemple, dia,
mes iany.
Un punt i coma al final. Aquest punt i coma és molt important i és font d’errors de compilació difícils de detectar.
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:
Una tupla tHora que inclogui dos enters, un per les hores i un altre pels minuts.
Una tupla tPunt2D que inclogui dos reals, un per a les xs i l’altre per les ys.
Una tupla tPersona que inclogui el següent (pensa el tipus adequat): el nom, els cognoms, si està casat, l’edat i el DNI.
Accés als camps d’una tupla
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:
pf3
pf4

Vista previa parcial del texto

¡Descarga Apunts Tuples 1 y más Exámenes selectividad en PDF de Informática solo en Docsity!

Tuples 1

Sintaxi de tuples en C++

Concepte de tupla

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.

Declaració de tuples

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:

  • La paraula reservada struct.
  • El nom del tipus (en l’exemple, tData). Aquest nom ha de seguir les convencions de C++ per a noms.
  • Un bloc amb les declaracions (com si fóssin variables, i sense inicialitzar) dels camps de la tupla (en l’exemple, dia, mes i any.
  • Un punt i coma al final. Aquest punt i coma és molt important i és font d’errors de compilació difícils de detectar.

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:

  • Una tupla tHora que inclogui dos enters, un per les hores i un altre pels minuts.
  • Una tupla tPunt2D que inclogui dos reals, un per a les xs i l’altre per les ys.
  • Una tupla tPersona que inclogui el següent (pensa el tipus adequat): el nom, els cognoms, si està casat, l’edat i el DNI.

Accés als camps d’una tupla

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:

  • Declara una variable de tipus tHora i posa-hi les 10 i 22.
  • Declara un tPunt2D i situa’l a la posició (5.0, 3.0).
  • Declara una variable tPersona i posa-hi els valors següents: nom “Groucho”, cognoms “Marx Garcia”, no està casat, edat 55 anys i amb DNI 43431212X.

Inicialització de tuples

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.

Tuples grans com a paràmetres d’entrada

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

Agrupar dades relacionades

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.