


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!



declaració Una declaració en C++ serveix per informar al compilador d’alguna cosa. Les declaracions són diferents de les instruccions en que no fan res, no tenen cap efecte real en el programa més que la informació que aporten. Per exemple, quan declarem una variable amb:
int a;
informem al compilador de que volem fer servir un nou “recipient” per guardar una dada.
Quan fem servir molt sovint un mateix tipus de taula (mateix tipus de les caselles i mateix tamany) en un programa és útil declarar un nou tipus. De fet, quan fem servir taules amb funcions, aquesta declaració és obligatòria.
Per definir un tipus de taula de 10 enters, s’ha d’escriure la següent declaració:
typedef int tDeuEnters[10];
La declaració inclou: la paraula reservada typedef, el tipus de la casella (int), el nom del tipus (seguint les normes per a noms en C++), i entre corxets el tamany de la taula declarada. És important veure que el nom tDeuEnters és el nom d’un nou tipus, no pas d’una variable. A més, la declaració ha d’anar al principi del fitxer de codi, a fora de la funció main. Aniria així:
#include
typedef int tDeuEnters[10];
int main() { // ... }
Les declaracions de tipus es fan globalment a un programa, per tal que siguin visibles a totes les funcions, inclosa la funció main. És per això que es fan al principi.
Exercici 1
Declara els següents nous tipus:
Un cop declarat un tipus, per declarar variables d’aquest tipus es fa com hem fet fins ara amb els tipus “bàsics” (int, char, bool, string, i float o double). Es tracta de posar el nom del tipus davant i després posar un nom per a la variable. Per exemple, si tenim la declaració de tDeuEnters de més amunt, podem declarar una variable de tipus tDeuEnters així:
tDeuEnters e;
Aquesta declaració realment és de una variable de tipus taula, perquè el tipus tDeuEnters és una taula. Per tant, la declaració de e és equivalent a la següent:
int e[10];
Exercici 2
Tenint en compte les declaracions de tipus de l’exercici anterior, declara:
Les taules també es poden passar com a paràmetres a les funcions. Per fer-ho, però, és necessari fer una declaració de tipus, tal com acabem de veure. Per exemple, si volem que una funció rebi una taula de doubles de 20 caselles, hem de fer primer la declaració següent:
typedef double tReals[20];
i després podem definir una funció que rebi una taula de tipus tReals així:
double suma(tReals R) { // Fa la suma de totes les caselles }
Un fet molt important sobre les taules com a paràmetres és el següent:
Les taules sempre passen per referència
La raó d’això és que és ineficient (és lent en temps d’execució) haver de copiar totes les caselles d’una taula només per passar-la com a paràmetre d’una funció (típicament les taules seran grans), i per tant s’adopta la norma de passar sempre les taules originals i no una còpia.
Exercici 3
Implementa la funció suma, que calcula la suma de totes les caselles d’una taula tipus tReals.
Exercici 4
Fes una funció que rebi 2 paràmetres: una taula de 50 caràcters i un caràcter. La funció ha de buscar el caràcter a la taula i retornar si l’ha trobat o no.
Exercici 5
Què mostra el següent programa per pantalla?
typedef bool tBits[20];
void omple_bits(tBits B, int n) { for (int k = 0; k < 20; k++) B[k] = (k % n == 0); }
void mostra_bits(tBits B) { for (int k = 0; k < 20; k++) cout << B[k]; cout << endl; }
int main() { tBits X, Y; omple_bits(X, 2); omple_bits(Y, 3); mostra_bits(X); mostra_bits(Y); }
typedef string tSeqPar[1000]; // Declaraci´o de tipus
bool busca_paraula(string par, tSeqPar S, int desde) { int i = desde; bool trobat = false; // Esq. cerca while (i >= 0 && !trobat) { if (S[i] == par) trobat = true; else i--; } return trobat; }
int main() { tSeqPar seq; // La taula int k = 0; // ´Index a la "casella actual" string p; // La paraula llegida bool repes = false; // Esq. de cerca
// Busquem repetits (cerca) cin >> p; while (p != "." && !repes) { if (busca_paraula(p, seq, k-1)) repes = true; else { seq[k] = p; // guardem la paraula actual k++; cin >> p; } } if (repes) { cout << "Hi "; } else { cout << "No hi "; } cout << "ha paraules repetides" << endl; }
Aquest programa és un esquema de cerca dins d’un altre. La funció busca_paraula realitza una cerca per a cada paraula que llegim, ja que cada nova paraula s’ha de buscar a la seqüència de paraules que hem anat acumulant (que es diu seq). El main busca, doncs, paraules repetides.
La tècnica que es fa servir té com a base la variable k, que té el valor de la primera casella disponible de la taula seq. El diagrama seria:
k = 5
a on X indica una casella plena. Quan arriba una paraula nova, es crida a la funció busca_paraula que fa un bucle (en ordre invers) a partir de k-1 (el paràmetre desde), que és la primera casella plena. Si es troba la paraula, el programa acaba (repes = true), i si no, hem de guardar la nova paraula. Per fer-ho, la posem a seq[k], que és la primera casella buida, incrementem k perquè torni a estar a la primera casella buida, i llegim una nova paraula.
Exercici 7
Fes un programa que llegeix una seqüència de caracters (acabada en ’.’) i un cop llegida tota la mostri per pantalla al revés.
Generated on: 2008-11-11.