SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Estudis d’Informàtica, Multimèdia i Telecomunicació

Programació
PAC3 — Document d’exercicis

Nom.....................
Cognoms ......................

1
Exercici 1: Treball bàsic amb taules [50%]
És habitual el treball amb conjunts de dades homogènies que han de mantenir-se en
memòria a l’ordinador per tal de dur a terme diferents tipus de tractaments.
En aquest exercici es tractarà de rebre
una llista de números que representen
cartes i que es recolliran en una taula
per després manipular-los de diferents
maneres per obtenir taules de cartes
amb altres característiques.
Tasca: Donat un conjunt de dades
numèriques que es carreguen en una
taula, crear diverses taules resultat
del tractament de les dades originals.
L'exercici consistirà en la creació
d'una sèrie de mòduls en php que
desenvolupin, cadascun d’ells, una
determinada feina segons el detall
que se'n farà a continuació.
No caldrà fer el programa principal
perquè aquest forma part de la
plantilla i consta de les crides a les
accions i funcions que haureu de
desenvolupar com exercici.

 Mòdul getData
Aquest mòdul no ha de rebre cap paràmetre.
La crida al programa haurà de ser del tipus:
localhost/PAC3_exer1.php?filename=data10
el fitxer de dades consta d’una única instrucció de php en què la variable
$cadena rep com valor una cadena de text integrada per una sèrie de nombres
que estan separats per un espai en blanc, com ara
$cadena="3 5 25 27 6 20";
El mòdul recollirà el nom del fitxer de dades, l’inclourà (include 1), i extraurà les
dades a una array (explode2) que retornarà.
Per exemple, si s’havia rebut la cadena mostrada com exemple, retornarà una
taula:
3 5 25 27 6 20

 Mòdul putCard
Aquest mòdul rep les dades d’una carta i la mostra en la pantalla. Serà la única
manera autoritzada de mostrar cartes. Pot reciclar-se d’una PAC anterior.
1
2

http://es2.php.net/manual/es/function.include.php
http://es2.php.net/manual/es/function.explode.php

2
 Mòdul cardValue
que rebrà el número que representa una carta i retornarà el seu valor. El valor a
retornar serà el valor nominal de la carta (és a dir, les figures valen 10, 11 o 12)
 Mòdul showTable
aquest mòdul rep dos paràmetres. El primer serà l’array que conté les els
números que representen les cartes. El segon serà el títol a mostrar. El que farà
el mòdul serà escriure el missatge i, en la línia següent mostrar les cartes de la
taula:

Aspecte del que mostra showTable quan l’array és | 3 | 5 | 25 | 27 | 6 | 20 | i el missatge
“Original Cards”

 Mòdul valueTable
aquest mòdul rep com paràmetre una taula que representa cartes i retorna el
valor de la suma de totes les cartes. Per exemple, en el cas anterior retornaria
34.
 Mòdul nextCard
aquest mòdul rep com paràmetre una taula que representa cartes i retorna una
altra taula en què en cada posició s’ha posat la carta següent a la original
(considerant la 0 com següent de la 39).
Per exemple
Array rebut
39 38 28 27 17 16 6 5
Array a retornar 0 39 29 28 18 17 7 6
 Mòdul groupCards
aquest mòdul rep com paràmetre una taula que representa cartes i retorna una
altra taula en que es estan les mateixes cartes però agrupades de manera que
primer hi ha les d’oros, després copes seguides de les espases i, per acabar
els bastons.
Per exemple
Array rebut
39 28 38 6 17 16 27
Array a retornar 6
5 17 16 28 27 39

5
38

 Mòdul reversedCards
aquest mòdul rep com paràmetre una taula que representa cartes i retorna una
altra taula en que es estan les mateixes cartes però ordenades al revès.
Per exemple:
Array rebut
39 28 38 6 17 16 27
Array a retornar 5 27 16 17 6 38 28

5
39

No haureu de crear el programa principal perquè ja forma part de la plantilla i no
s’ha de modificar. És important que mireu el programa principal, amb les crides als
mòduls per saber com han de ser les capçaleres de les function.

3
Podeu comprovar el funcionament del programa amb la crida.
http://prog.uoc.edu/pac3/pac3_exer1.php?filename=data10
Indicacions preceptives
1. No es pot fer ús de variables globals.
2. En PHP existeix la function count($arg)3 que rep com argument un array i
retorna la quantitat d'elements que té l'array $arg. És força útil per saber els
límits dels recorreguts per l'array.
Per exemple si la taula és (89, 7, 3, 4, 5, 9) retornaria un 6.
3. A diferencia del llenguatge algorísmic el primer element de les taules en PHP
és l'element 0.
Per exemple en la taula (1, 4, 8, 12, 16, 20) el número 8 està en la posició 2.
4. PHP porta integrades moltes functions per treballar amb arrays, com ara
array_shift que ja hem fet servir amb anterioritat. Una altra és count que es
comenta en la indicació 1. En aquest exercici de la PAC, queda especialment
prohibit fer ús de les function d'arrays de php llevat de les esmentades
array_shift i count.
5. Es faciliten 7 fitxers de dades data10 a data16. Aquest darrer, per la seva
longitud i conjunt de valors, és força apropiat per les proves.
6. L’exercici es construirà sobre la plantilla pac3_exer1_plantilla.php que es
canviarà de nom a pac3_exer1.php per al seu lliurament. Tanmateix, en el
present document es copiarà el codi del programa.

Consells
1. En el mòdul groupCards un plantejament simple seria fer quatre recorreguts a
l’array d’entrada i, en cadascun dels recorreguts, posar en l’array de sortida les
cartes d’un del pals (oros, copes, espases i bastons).
Si us ho penseu una mica les quatre passades es poden automatitzar també en
un bucle.
2. En el modul reverseCards el plantejament més simple és controlar els índexs
dels dos arrays (entrada i sortida) mitjançant dues variables de manera que
quan una s’incrementa, l’altre es disminueix.
En aquest sentit, igual que tenim l’operador ++ que incrementa una variable,
l’operador -- disminueix el seu valor en una unitat.

3

http://php.net/manual/es/function.count.php

4
Copieu aquí el codi de la vostra solució
<?php

?>

5
Exercici 2: Treball simultani amb diverses taules en PHP [50%]
Tothom ha jugat algun cop a l’ordinador al solitari amb cartes i haurà comprovat que
les cartes apareixen ordenades a l’atzar però sempre apareix la totalitat de cartes, de
manera que quan s’ha de fer aparèixer una carta nova, s’ha de tenir present si la carta
havia aparegut anteriorment.
En els jocs estàndard de vegades es juga amb un joc complet de cartes o amb més
d’un. I sempre s’ha de dur el control de treballar amb baralles completes.
Tasca: Crear i manipular taules de manera que existeixi dependència entre elles.
L'exercici consistirà en la creació d'una sèrie de mòduls en php que desenvolupin,
cadascun, una determinada feina segons el detall que se'n farà a continuació.
No caldrà fer el programa principal perquè aquest forma part de la plantilla i consta
de les crides a les accions i funcions que haureu de desenvolupar com exercici. El
programa principal no ha de modificar-se
 Mòdul putCard
Aquest mòdul rep les dades d’una carta i la mostra en la pantalla. Serà la única
manera autoritzada de mostrar cartes. Pot reciclar-se d’una PAC anterior.
 Mòdul showTable
aquest mòdul rep dos paràmetres. El primer paràmetre serà l’array que conté les
els números que representen les cartes. El segon serà el títol a mostrar. El que
farà el mòdul serà escriure el missatge i, en la línia següent mostrar les cartes de
la taula:

Aspecte del que mostra showTable quan l’array és | 3 | 5 | 25 | 27 | 6 | 20 | i el missatge
“Original Cards”

 Mòdul createControl
Aquest mòdul ha de crear una taula i omplir totes les seves posicions amb el
mateix valor. El primer paràmetre és la longitud de la taula a crear. El segon és el
valor a posar en totes les posicions.
P.e. createControl(7,3) retornaria l’array.
3 3 3 3 3 3 3
 Mòdul createCardsTable
Aquest mòdul rep com paràmetre un número $n i retorna una array que conté $n
baralles de cartes ordenades a l’atzar. P.e. si la crida és createCardsTable(2)
retornaria una array de 80 posicions (2 baralles de cartes) en que estarien
representats dos cops cadascun dels números 0 al 39 i distribuïts en ordre
aleatori. La idea és que podria representar l’ordre en que podem treure les cartes
de $n baralles un cop remenades totes juntes.

6
 Mòdul extractNTable
Aquest mòdul, partint d’un array en crea un altre que copia una certa quantitat de
posicions consecutives des d’un punt determinat.
Rep tres paràmetres, el primer és l’array d’on copiarà les dades a extraure, el
segon és la quantitat de dades a extraure i el tercer és la posició des d’on
començarà a copiar les dades.
P.e. si l’array $in és
39 38 28 27 17 16 6 5
La crida extractNTable($in, 3, 4) retornaria l’array de tres posicions
17 16 6
Si copiant números s’acaba l’array, es continuarà a partir de la posició 0. P.e. la
crida extractNTable($in, 6, 5) retornaria
16 6 5 39 38 28

No haureu de crear el programa principal perquè ja forma part de la plantilla i no
s’ha de modificar. És important que mireu el programa principal, amb les crides als
mòduls per saber com han de ser les capçaleres de les function.
La crida al programa haurà de ser del tipus:
localhost/pac3_exer2.php
Podeu comprovar el funcionament del programa amb la crida.
http://prog.uoc.edu/pac3/pac3_exer2.php
Indicacions preceptives
1. No es pot fer ús de variables globals
2. Queda especialment prohibit fer ús de les function d'arrays de php llevat de
count.
3. Es pot emprar en aquest exercici functions que ja hàgiu dissenyat amb
anterioritat per a l’altre exercici o en pràctiques anteriors.
7. L’exercici es construirà sobre la plantilla pac3_exer2_plantilla.php que es
canviarà de nom a pac3_exer2.php per al seu lliurament. Tanmateix, en el
present document es copiarà el codi del programa

Consells
1. Com aconseguir que en l’array surti un cop i només un cada número?
Per tal d’aconseguir limitar les aparicions de cada carta es farà servir un array
de control de 40 posicions en què cada posició es relaciona amb una carta i el
contingut de la posició amb les repeticions que encara es pot fer de la carta.
Per exemple, si es juga amb 3 baralles, l’esquema de treball seria:
 Crear un array de control de 40 posicions inicialitzades totes a 3.

7


Entrar en un bucle per posar en un nou array totes les cartes de les 3
baralles (el bucle s’haurà de dimensionar en congruència amb la quantitat
de baralles)
o Quan s’obté una carta a l’atzar (posem que el número és el n) es mira
la posició control[n].
 Si el valor de la posició és 0, es que no es pot posar aquesta
carta a l’array de cartes que estem creant perquè ja ha sortit tres
cops
 Si és diferent a 0 si que podem posar la carta a l’array. Haurem
de tenir present disminuir el valor de control[n] perquè ja hem
posat una altra carta d’aquest tipus



En finalitzar el bucle que crea cartes, totes les posicions de control
estaran a 0.

2. Què fer quan el sorteig dóna una carta determinada i resulta que ja les
hem posat totes abans.
És una situació que es donarà amb tota seguretat. Potser al principi és poc
probable, però quan ja s’han posat la meitat de les cartes passarà sovint i, cap
al final és molt més probable que no pas que surti un valor que es pugui
emprar. Hi ha diverses maneres de fer-ho:
a. Tornar a sortejar fins que surti un número vàlid. És la solució més fàcil,
però també la més costosa en temps d’execució. Es pot calcular fàcilment
que quan haguem de posar la darrera carta es necessiti una mitjana de 40
sortejos perquè surti precisament el número que quedava per posar. És
més, ningú pot assegurar que fent sortejos no n’haguem de fer més de
1000 per aconseguir que surti un número determinat.
b. Cercar el següent número vàlid. És a dir si control[n] és 0, cerquem la
següent posició fins trobar-ne una on encara no hagi el 0. S’ha de tenir en
compte que si s’arriba a la posició 39 i conté un 0, hem de continuar per la
posició 0.

8
Copieu aquí el codi de la vostra solució
<?php

?>

9

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (14)

Prog_pac2
Prog_pac2Prog_pac2
Prog_pac2
 
Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita RibasProgramació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas
 
Programació - Pràctica 2 - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 2 - Multimedia (UOC) - Paquita RibasProgramació - Pràctica 2 - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 2 - Multimedia (UOC) - Paquita Ribas
 
Programació - PAC 2 - Multimedia (UOC) - Paquita Ribas
Programació - PAC 2 - Multimedia (UOC) - Paquita RibasProgramació - PAC 2 - Multimedia (UOC) - Paquita Ribas
Programació - PAC 2 - Multimedia (UOC) - Paquita Ribas
 
Programació - Pràctica 1 - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 1 - Multimedia (UOC) - Paquita RibasProgramació - Pràctica 1 - Multimedia (UOC) - Paquita Ribas
Programació - Pràctica 1 - Multimedia (UOC) - Paquita Ribas
 
Programació - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació - PAC 2 correcció - Multimèdia (UOC) - Paquita RibasProgramació - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
 
Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia Bria
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia Bria
 
Programació - PAC 1 correcció - Multimèdia (UOC) - Paquita Ribas
Programació - PAC 1 correcció - Multimèdia (UOC) - Paquita RibasProgramació - PAC 1 correcció - Multimèdia (UOC) - Paquita Ribas
Programació - PAC 1 correcció - Multimèdia (UOC) - Paquita Ribas
 
Programació - PAC 1 - Multimedia (UOC) - Paquita Ribas
Programació - PAC 1 - Multimedia (UOC) - Paquita RibasProgramació - PAC 1 - Multimedia (UOC) - Paquita Ribas
Programació - PAC 1 - Multimedia (UOC) - Paquita Ribas
 
Programació - Pac1 - Solució - Lídia Bria
Programació - Pac1 - Solució - Lídia BriaProgramació - Pac1 - Solució - Lídia Bria
Programació - Pac1 - Solució - Lídia Bria
 
Programació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaProgramació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia Bria
 
Programació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia BriaProgramació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia Bria
 
4 potències i arrels 2n eso
4 potències i arrels 2n eso4 potències i arrels 2n eso
4 potències i arrels 2n eso
 

Andere mochten auch

Vídeo - Pac1 - Lídia Bria
Vídeo - Pac1 - Lídia BriaVídeo - Pac1 - Lídia Bria
Vídeo - Pac1 - Lídia Bria
Lidia Bria
 

Andere mochten auch (20)

Matemàtiques per Multimèdia II - Pac3 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac3 - Solució - Lidia BriaMatemàtiques per Multimèdia II - Pac3 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac3 - Solució - Lidia Bria
 
Matemàtiques per Multimèdia I - Pac3 - Solució - Lidia Bria
Matemàtiques per Multimèdia I - Pac3 - Solució - Lidia BriaMatemàtiques per Multimèdia I - Pac3 - Solució - Lidia Bria
Matemàtiques per Multimèdia I - Pac3 - Solució - Lidia Bria
 
Fonaments i evolució de la Multimèdia - Pac2 - Lídia Bria
Fonaments i evolució de la Multimèdia - Pac2 - Lídia BriaFonaments i evolució de la Multimèdia - Pac2 - Lídia Bria
Fonaments i evolució de la Multimèdia - Pac2 - Lídia Bria
 
Administració i gestió d'organitzacions - Pac2 - Solució - Lidia Bria
Administració i gestió d'organitzacions - Pac2 - Solució - Lidia BriaAdministració i gestió d'organitzacions - Pac2 - Solució - Lidia Bria
Administració i gestió d'organitzacions - Pac2 - Solució - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac4 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac4 - Solució - Lidia BriaMatemàtiques per Multimèdia II - Pac4 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac4 - Solució - Lidia Bria
 
Narrativa interactiva - Pràctica - Lídia Bria
Narrativa interactiva - Pràctica - Lídia BriaNarrativa interactiva - Pràctica - Lídia Bria
Narrativa interactiva - Pràctica - Lídia Bria
 
Matemàtiques per Multimèdia I - Pac3 - Lidia Bria
Matemàtiques per Multimèdia I - Pac3 - Lidia BriaMatemàtiques per Multimèdia I - Pac3 - Lidia Bria
Matemàtiques per Multimèdia I - Pac3 - Lidia Bria
 
Fonaments i evolució de la Multimèdia - Pac1 - Lídia Bria
Fonaments i evolució de la Multimèdia - Pac1 - Lídia BriaFonaments i evolució de la Multimèdia - Pac1 - Lídia Bria
Fonaments i evolució de la Multimèdia - Pac1 - Lídia Bria
 
Administració i gestió d'organitzacions - Pac3 - Solució - Lídia Bria
Administració i gestió d'organitzacions - Pac3 - Solució - Lídia BriaAdministració i gestió d'organitzacions - Pac3 - Solució - Lídia Bria
Administració i gestió d'organitzacions - Pac3 - Solució - Lídia Bria
 
Vídeo - Pac1 - Lídia Bria
Vídeo - Pac1 - Lídia BriaVídeo - Pac1 - Lídia Bria
Vídeo - Pac1 - Lídia Bria
 
Programació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia BriaProgramació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia Bria
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia Bria
 
Narrativa interactiva - Pac1 - Solució - Lidia Bria
Narrativa interactiva - Pac1 - Solució - Lidia BriaNarrativa interactiva - Pac1 - Solució - Lidia Bria
Narrativa interactiva - Pac1 - Solució - Lidia Bria
 
Competència comunicativa per a professionals de les TIC - PS - Lidia Bria
Competència comunicativa per a professionals de les TIC - PS - Lidia BriaCompetència comunicativa per a professionals de les TIC - PS - Lidia Bria
Competència comunicativa per a professionals de les TIC - PS - Lidia Bria
 
Arquitectura de la Información - Pac01 - Lidia Bria
Arquitectura de la Información - Pac01 -  Lidia BriaArquitectura de la Información - Pac01 -  Lidia Bria
Arquitectura de la Información - Pac01 - Lidia Bria
 
Arquitectura de la Información - Pràctica - Lidia Bria
Arquitectura de la Información - Pràctica -  Lidia BriaArquitectura de la Información - Pràctica -  Lidia Bria
Arquitectura de la Información - Pràctica - Lidia Bria
 
Llenguatges i estàndards web - PS - Lidia Bria
Llenguatges i estàndards web - PS - Lidia BriaLlenguatges i estàndards web - PS - Lidia Bria
Llenguatges i estàndards web - PS - Lidia Bria
 
Fonaments i evolució de la Multimèdia - Ps - Lídia Bria
Fonaments i evolució de la Multimèdia - Ps - Lídia BriaFonaments i evolució de la Multimèdia - Ps - Lídia Bria
Fonaments i evolució de la Multimèdia - Ps - Lídia Bria
 
Matemàtiques per Multimèdia II - Pac3 - Lidia Bria
Matemàtiques per Multimèdia II - Pac3 - Lidia BriaMatemàtiques per Multimèdia II - Pac3 - Lidia Bria
Matemàtiques per Multimèdia II - Pac3 - Lidia Bria
 
Imatge i llenguatge visual - PS - Lidia Bria
Imatge i llenguatge visual - PS - Lidia BriaImatge i llenguatge visual - PS - Lidia Bria
Imatge i llenguatge visual - PS - Lidia Bria
 

Ähnlich wie Programació - Pac3 - Lidia Bria

Eso2 ut3-programacio
Eso2 ut3-programacioEso2 ut3-programacio
Eso2 ut3-programacio
lluís nater
 
Potencies i arrels 2 n
Potencies i arrels 2 nPotencies i arrels 2 n
Potencies i arrels 2 n
cpnapenyal
 
Dossier Refredament Substancies
Dossier Refredament SubstanciesDossier Refredament Substancies
Dossier Refredament Substancies
Agustí Estévez
 

Ähnlich wie Programació - Pac3 - Lidia Bria (17)

PW_pac1
PW_pac1PW_pac1
PW_pac1
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia Bria
 
Eso2 ut3-programacio
Eso2 ut3-programacioEso2 ut3-programacio
Eso2 ut3-programacio
 
YDC_pract1
YDC_pract1YDC_pract1
YDC_pract1
 
Eso2 ut3-programacio
Eso2 ut3-programacioEso2 ut3-programacio
Eso2 ut3-programacio
 
eso2 ut3-programacio
eso2 ut3-programacioeso2 ut3-programacio
eso2 ut3-programacio
 
Matemàtiques 3r i 4t eso
Matemàtiques 3r i 4t esoMatemàtiques 3r i 4t eso
Matemàtiques 3r i 4t eso
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinades
 
Potencies i arrels 2 n
Potencies i arrels 2 nPotencies i arrels 2 n
Potencies i arrels 2 n
 
Programem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robóticaProgramem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robótica
 
PW_pac2
PW_pac2PW_pac2
PW_pac2
 
Productes amb el regles de càlcul (Exemple 3)
Productes amb el regles de càlcul (Exemple 3)Productes amb el regles de càlcul (Exemple 3)
Productes amb el regles de càlcul (Exemple 3)
 
Practica
PracticaPractica
Practica
 
PresentacióEc2g
PresentacióEc2gPresentacióEc2g
PresentacióEc2g
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
Dossier Refredament Substancies
Dossier Refredament SubstanciesDossier Refredament Substancies
Dossier Refredament Substancies
 

Mehr von Lidia Bria

Gràfics 3D - Pac1 Segona entrega - Lidia Bria
Gràfics 3D - Pac1 Segona entrega - Lidia BriaGràfics 3D - Pac1 Segona entrega - Lidia Bria
Gràfics 3D - Pac1 Segona entrega - Lidia Bria
Lidia Bria
 
Gràfics 3D - Pac1 Primera entrega - Lidia Bria
Gràfics 3D - Pac1 Primera entrega - Lidia BriaGràfics 3D - Pac1 Primera entrega - Lidia Bria
Gràfics 3D - Pac1 Primera entrega - Lidia Bria
Lidia Bria
 

Mehr von Lidia Bria (20)

Gràfics 3D - PS altres anys - Lidia Bria
Gràfics 3D - PS altres anys - Lidia BriaGràfics 3D - PS altres anys - Lidia Bria
Gràfics 3D - PS altres anys - Lidia Bria
 
Gràfics 3D - Pràctica - Lidia Bria
Gràfics 3D - Pràctica - Lidia BriaGràfics 3D - Pràctica - Lidia Bria
Gràfics 3D - Pràctica - Lidia Bria
 
Pac03 - Lidia Bria (A) - Gràfics 3D
Pac03 - Lidia Bria (A) - Gràfics 3DPac03 - Lidia Bria (A) - Gràfics 3D
Pac03 - Lidia Bria (A) - Gràfics 3D
 
Gràfics 3D - Pac03 Test - Lidia Bria
Gràfics 3D - Pac03 Test - Lidia BriaGràfics 3D - Pac03 Test - Lidia Bria
Gràfics 3D - Pac03 Test - Lidia Bria
 
Pac02 - Lidia Bria (B) - Gràfics 3DB
Pac02 - Lidia Bria (B) - Gràfics 3DBPac02 - Lidia Bria (B) - Gràfics 3DB
Pac02 - Lidia Bria (B) - Gràfics 3DB
 
Gràfics 3D - Pac02 Test - Lidia Bria
Gràfics 3D - Pac02 Test - Lidia BriaGràfics 3D - Pac02 Test - Lidia Bria
Gràfics 3D - Pac02 Test - Lidia Bria
 
Gràfics 3D - Pac1 Segona entrega - Lidia Bria
Gràfics 3D - Pac1 Segona entrega - Lidia BriaGràfics 3D - Pac1 Segona entrega - Lidia Bria
Gràfics 3D - Pac1 Segona entrega - Lidia Bria
 
Gràfics 3D - Pac1 Primera entrega - Lidia Bria
Gràfics 3D - Pac1 Primera entrega - Lidia BriaGràfics 3D - Pac1 Primera entrega - Lidia Bria
Gràfics 3D - Pac1 Primera entrega - Lidia Bria
 
Gràfics 3D - Pac01 - Lidia Bria
Gràfics 3D - Pac01 - Lidia BriaGràfics 3D - Pac01 - Lidia Bria
Gràfics 3D - Pac01 - Lidia Bria
 
Arquitectura de la Información - PS Altres anys - Lidia Bria
Arquitectura de la Información - PS Altres anys -  Lidia BriaArquitectura de la Información - PS Altres anys -  Lidia Bria
Arquitectura de la Información - PS Altres anys - Lidia Bria
 
Arquitectura de la Información - Pac03 - Lidia Bria
Arquitectura de la Información - Pac03 -  Lidia BriaArquitectura de la Información - Pac03 -  Lidia Bria
Arquitectura de la Información - Pac03 - Lidia Bria
 
Arquitectura de la Información - Pac02 - Lidia Bria
Arquitectura de la Información - Pac02 -  Lidia BriaArquitectura de la Información - Pac02 -  Lidia Bria
Arquitectura de la Información - Pac02 - Lidia Bria
 
Programació - Exàmens - Solució - Lídia Bria
Programació - Exàmens - Solució - Lídia BriaProgramació - Exàmens - Solució - Lídia Bria
Programació - Exàmens - Solució - Lídia Bria
 
Vídeo - Ps - Lídia Bria
Vídeo - Ps - Lídia BriaVídeo - Ps - Lídia Bria
Vídeo - Ps - Lídia Bria
 
Programació - Exàmen - Lidia Bria
Programació - Exàmen - Lidia BriaProgramació - Exàmen - Lidia Bria
Programació - Exàmen - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac4 - Lidia Bria
Matemàtiques per Multimèdia II - Pac4 - Lidia BriaMatemàtiques per Multimèdia II - Pac4 - Lidia Bria
Matemàtiques per Multimèdia II - Pac4 - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac2 - Lidia Bria
Matemàtiques per Multimèdia II - Pac2 - Lidia BriaMatemàtiques per Multimèdia II - Pac2 - Lidia Bria
Matemàtiques per Multimèdia II - Pac2 - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac2 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac2 - Solució - Lidia BriaMatemàtiques per Multimèdia II - Pac2 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac2 - Solució - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac1 - Lidia Bria
Matemàtiques per Multimèdia II - Pac1 - Lidia BriaMatemàtiques per Multimèdia II - Pac1 - Lidia Bria
Matemàtiques per Multimèdia II - Pac1 - Lidia Bria
 
Matemàtiques per Multimèdia II - Pac1 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac1 - Solució - Lidia BriaMatemàtiques per Multimèdia II - Pac1 - Solució - Lidia Bria
Matemàtiques per Multimèdia II - Pac1 - Solució - Lidia Bria
 

Programació - Pac3 - Lidia Bria

  • 1. Estudis d’Informàtica, Multimèdia i Telecomunicació Programació PAC3 — Document d’exercicis Nom..................... Cognoms ...................... 1
  • 2. Exercici 1: Treball bàsic amb taules [50%] És habitual el treball amb conjunts de dades homogènies que han de mantenir-se en memòria a l’ordinador per tal de dur a terme diferents tipus de tractaments. En aquest exercici es tractarà de rebre una llista de números que representen cartes i que es recolliran en una taula per després manipular-los de diferents maneres per obtenir taules de cartes amb altres característiques. Tasca: Donat un conjunt de dades numèriques que es carreguen en una taula, crear diverses taules resultat del tractament de les dades originals. L'exercici consistirà en la creació d'una sèrie de mòduls en php que desenvolupin, cadascun d’ells, una determinada feina segons el detall que se'n farà a continuació. No caldrà fer el programa principal perquè aquest forma part de la plantilla i consta de les crides a les accions i funcions que haureu de desenvolupar com exercici.  Mòdul getData Aquest mòdul no ha de rebre cap paràmetre. La crida al programa haurà de ser del tipus: localhost/PAC3_exer1.php?filename=data10 el fitxer de dades consta d’una única instrucció de php en què la variable $cadena rep com valor una cadena de text integrada per una sèrie de nombres que estan separats per un espai en blanc, com ara $cadena="3 5 25 27 6 20"; El mòdul recollirà el nom del fitxer de dades, l’inclourà (include 1), i extraurà les dades a una array (explode2) que retornarà. Per exemple, si s’havia rebut la cadena mostrada com exemple, retornarà una taula: 3 5 25 27 6 20  Mòdul putCard Aquest mòdul rep les dades d’una carta i la mostra en la pantalla. Serà la única manera autoritzada de mostrar cartes. Pot reciclar-se d’una PAC anterior. 1 2 http://es2.php.net/manual/es/function.include.php http://es2.php.net/manual/es/function.explode.php 2
  • 3.  Mòdul cardValue que rebrà el número que representa una carta i retornarà el seu valor. El valor a retornar serà el valor nominal de la carta (és a dir, les figures valen 10, 11 o 12)  Mòdul showTable aquest mòdul rep dos paràmetres. El primer serà l’array que conté les els números que representen les cartes. El segon serà el títol a mostrar. El que farà el mòdul serà escriure el missatge i, en la línia següent mostrar les cartes de la taula: Aspecte del que mostra showTable quan l’array és | 3 | 5 | 25 | 27 | 6 | 20 | i el missatge “Original Cards”  Mòdul valueTable aquest mòdul rep com paràmetre una taula que representa cartes i retorna el valor de la suma de totes les cartes. Per exemple, en el cas anterior retornaria 34.  Mòdul nextCard aquest mòdul rep com paràmetre una taula que representa cartes i retorna una altra taula en què en cada posició s’ha posat la carta següent a la original (considerant la 0 com següent de la 39). Per exemple Array rebut 39 38 28 27 17 16 6 5 Array a retornar 0 39 29 28 18 17 7 6  Mòdul groupCards aquest mòdul rep com paràmetre una taula que representa cartes i retorna una altra taula en que es estan les mateixes cartes però agrupades de manera que primer hi ha les d’oros, després copes seguides de les espases i, per acabar els bastons. Per exemple Array rebut 39 28 38 6 17 16 27 Array a retornar 6 5 17 16 28 27 39 5 38  Mòdul reversedCards aquest mòdul rep com paràmetre una taula que representa cartes i retorna una altra taula en que es estan les mateixes cartes però ordenades al revès. Per exemple: Array rebut 39 28 38 6 17 16 27 Array a retornar 5 27 16 17 6 38 28 5 39 No haureu de crear el programa principal perquè ja forma part de la plantilla i no s’ha de modificar. És important que mireu el programa principal, amb les crides als mòduls per saber com han de ser les capçaleres de les function. 3
  • 4. Podeu comprovar el funcionament del programa amb la crida. http://prog.uoc.edu/pac3/pac3_exer1.php?filename=data10 Indicacions preceptives 1. No es pot fer ús de variables globals. 2. En PHP existeix la function count($arg)3 que rep com argument un array i retorna la quantitat d'elements que té l'array $arg. És força útil per saber els límits dels recorreguts per l'array. Per exemple si la taula és (89, 7, 3, 4, 5, 9) retornaria un 6. 3. A diferencia del llenguatge algorísmic el primer element de les taules en PHP és l'element 0. Per exemple en la taula (1, 4, 8, 12, 16, 20) el número 8 està en la posició 2. 4. PHP porta integrades moltes functions per treballar amb arrays, com ara array_shift que ja hem fet servir amb anterioritat. Una altra és count que es comenta en la indicació 1. En aquest exercici de la PAC, queda especialment prohibit fer ús de les function d'arrays de php llevat de les esmentades array_shift i count. 5. Es faciliten 7 fitxers de dades data10 a data16. Aquest darrer, per la seva longitud i conjunt de valors, és força apropiat per les proves. 6. L’exercici es construirà sobre la plantilla pac3_exer1_plantilla.php que es canviarà de nom a pac3_exer1.php per al seu lliurament. Tanmateix, en el present document es copiarà el codi del programa. Consells 1. En el mòdul groupCards un plantejament simple seria fer quatre recorreguts a l’array d’entrada i, en cadascun dels recorreguts, posar en l’array de sortida les cartes d’un del pals (oros, copes, espases i bastons). Si us ho penseu una mica les quatre passades es poden automatitzar també en un bucle. 2. En el modul reverseCards el plantejament més simple és controlar els índexs dels dos arrays (entrada i sortida) mitjançant dues variables de manera que quan una s’incrementa, l’altre es disminueix. En aquest sentit, igual que tenim l’operador ++ que incrementa una variable, l’operador -- disminueix el seu valor en una unitat. 3 http://php.net/manual/es/function.count.php 4
  • 5. Copieu aquí el codi de la vostra solució <?php ?> 5
  • 6. Exercici 2: Treball simultani amb diverses taules en PHP [50%] Tothom ha jugat algun cop a l’ordinador al solitari amb cartes i haurà comprovat que les cartes apareixen ordenades a l’atzar però sempre apareix la totalitat de cartes, de manera que quan s’ha de fer aparèixer una carta nova, s’ha de tenir present si la carta havia aparegut anteriorment. En els jocs estàndard de vegades es juga amb un joc complet de cartes o amb més d’un. I sempre s’ha de dur el control de treballar amb baralles completes. Tasca: Crear i manipular taules de manera que existeixi dependència entre elles. L'exercici consistirà en la creació d'una sèrie de mòduls en php que desenvolupin, cadascun, una determinada feina segons el detall que se'n farà a continuació. No caldrà fer el programa principal perquè aquest forma part de la plantilla i consta de les crides a les accions i funcions que haureu de desenvolupar com exercici. El programa principal no ha de modificar-se  Mòdul putCard Aquest mòdul rep les dades d’una carta i la mostra en la pantalla. Serà la única manera autoritzada de mostrar cartes. Pot reciclar-se d’una PAC anterior.  Mòdul showTable aquest mòdul rep dos paràmetres. El primer paràmetre serà l’array que conté les els números que representen les cartes. El segon serà el títol a mostrar. El que farà el mòdul serà escriure el missatge i, en la línia següent mostrar les cartes de la taula: Aspecte del que mostra showTable quan l’array és | 3 | 5 | 25 | 27 | 6 | 20 | i el missatge “Original Cards”  Mòdul createControl Aquest mòdul ha de crear una taula i omplir totes les seves posicions amb el mateix valor. El primer paràmetre és la longitud de la taula a crear. El segon és el valor a posar en totes les posicions. P.e. createControl(7,3) retornaria l’array. 3 3 3 3 3 3 3  Mòdul createCardsTable Aquest mòdul rep com paràmetre un número $n i retorna una array que conté $n baralles de cartes ordenades a l’atzar. P.e. si la crida és createCardsTable(2) retornaria una array de 80 posicions (2 baralles de cartes) en que estarien representats dos cops cadascun dels números 0 al 39 i distribuïts en ordre aleatori. La idea és que podria representar l’ordre en que podem treure les cartes de $n baralles un cop remenades totes juntes. 6
  • 7.  Mòdul extractNTable Aquest mòdul, partint d’un array en crea un altre que copia una certa quantitat de posicions consecutives des d’un punt determinat. Rep tres paràmetres, el primer és l’array d’on copiarà les dades a extraure, el segon és la quantitat de dades a extraure i el tercer és la posició des d’on començarà a copiar les dades. P.e. si l’array $in és 39 38 28 27 17 16 6 5 La crida extractNTable($in, 3, 4) retornaria l’array de tres posicions 17 16 6 Si copiant números s’acaba l’array, es continuarà a partir de la posició 0. P.e. la crida extractNTable($in, 6, 5) retornaria 16 6 5 39 38 28 No haureu de crear el programa principal perquè ja forma part de la plantilla i no s’ha de modificar. És important que mireu el programa principal, amb les crides als mòduls per saber com han de ser les capçaleres de les function. La crida al programa haurà de ser del tipus: localhost/pac3_exer2.php Podeu comprovar el funcionament del programa amb la crida. http://prog.uoc.edu/pac3/pac3_exer2.php Indicacions preceptives 1. No es pot fer ús de variables globals 2. Queda especialment prohibit fer ús de les function d'arrays de php llevat de count. 3. Es pot emprar en aquest exercici functions que ja hàgiu dissenyat amb anterioritat per a l’altre exercici o en pràctiques anteriors. 7. L’exercici es construirà sobre la plantilla pac3_exer2_plantilla.php que es canviarà de nom a pac3_exer2.php per al seu lliurament. Tanmateix, en el present document es copiarà el codi del programa Consells 1. Com aconseguir que en l’array surti un cop i només un cada número? Per tal d’aconseguir limitar les aparicions de cada carta es farà servir un array de control de 40 posicions en què cada posició es relaciona amb una carta i el contingut de la posició amb les repeticions que encara es pot fer de la carta. Per exemple, si es juga amb 3 baralles, l’esquema de treball seria:  Crear un array de control de 40 posicions inicialitzades totes a 3. 7
  • 8.  Entrar en un bucle per posar en un nou array totes les cartes de les 3 baralles (el bucle s’haurà de dimensionar en congruència amb la quantitat de baralles) o Quan s’obté una carta a l’atzar (posem que el número és el n) es mira la posició control[n].  Si el valor de la posició és 0, es que no es pot posar aquesta carta a l’array de cartes que estem creant perquè ja ha sortit tres cops  Si és diferent a 0 si que podem posar la carta a l’array. Haurem de tenir present disminuir el valor de control[n] perquè ja hem posat una altra carta d’aquest tipus  En finalitzar el bucle que crea cartes, totes les posicions de control estaran a 0. 2. Què fer quan el sorteig dóna una carta determinada i resulta que ja les hem posat totes abans. És una situació que es donarà amb tota seguretat. Potser al principi és poc probable, però quan ja s’han posat la meitat de les cartes passarà sovint i, cap al final és molt més probable que no pas que surti un valor que es pugui emprar. Hi ha diverses maneres de fer-ho: a. Tornar a sortejar fins que surti un número vàlid. És la solució més fàcil, però també la més costosa en temps d’execució. Es pot calcular fàcilment que quan haguem de posar la darrera carta es necessiti una mitjana de 40 sortejos perquè surti precisament el número que quedava per posar. És més, ningú pot assegurar que fent sortejos no n’haguem de fer més de 1000 per aconseguir que surti un número determinat. b. Cercar el següent número vàlid. És a dir si control[n] és 0, cerquem la següent posició fins trobar-ne una on encara no hagi el 0. S’ha de tenir en compte que si s’arriba a la posició 39 i conté un 0, hem de continuar per la posició 0. 8
  • 9. Copieu aquí el codi de la vostra solució <?php ?> 9