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 Taules 2, 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
Taules 2
Declaracions de tipus
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 <iostream>
using namespace std;
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 tipus tTauletaChars de 3 caracters.
Un tipus tVector3D de 3 reals.
Un tipus tSeqParaules de 1000 strings.
Declaració de variables amb 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 odouble). 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:
pf3
pf4

Vista previa parcial del texto

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

Taules 2

Declaracions de tipus

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 using namespace std;

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 tipus tTauletaChars de 3 caracters.
  • Un tipus tVector3D de 3 reals.
  • Un tipus tSeqParaules de 1000 strings.

Declaració de variables amb 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:

  • Una variable de tipus tTauletaChars.
  • Dos variables v i w de tipus tVector3D.
  • Una variable S de tipus tSeqParaules.

Taules com a paràmetres de funcions

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:

| X | X | X | X | X | |

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.