Pràctica 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar-se els arxius PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la pràctica 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar-se els arxius PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la pràctica 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a baixar-se els arxius PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Pràctica 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar-se els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a baixar-se els arxius de PHP, visitar la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la PAC 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius de PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la pràctica 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar-se els arxius PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 2 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la pràctica 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a baixar-se els arxius PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Pràctica 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar-se els arxius en PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
PAC 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a baixar-se els arxius de PHP, visitar la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
Correcció de la PAC 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius de PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Paquita Ribas
Pràctica 1 de Codificació, de l'assignatura de Matemàtiques per a la Multimèdia, del Grau Multimèdia de la UOC. Per a descarregar-te l'enunciat, visita la meva wiki: http://raco-vermell.wikispaces.com/MATEM%C3%80TIQUES+II
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
L'assignatura de programació tracta de l'aprenentatge al disseny bàsic d'algoritmes.
La resolució d'algoritmes per cada problema es basa a aplicar una sèrie d'instruccions i càlculs que depenent del problema aquest tindrà més instruccions o menys. Aquesta tasca és bàsica, per poder després entendre qualsevol llenguatge de programació és una assignatura que si no es té coneixements previs és molt abstracta.
A part de la confecció d'algoritmes amb pseudocodi també es practica la resolució d'algoritmes utilitzant el llenguatge de programació PHP.
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Paquita Ribas
Pràctica 1 de Codificació, de l'assignatura de Matemàtiques per a la Multimèdia, del Grau Multimèdia de la UOC. Per a descarregar-te l'enunciat, visita la meva wiki: http://raco-vermell.wikispaces.com/MATEM%C3%80TIQUES+II
En aquesta assignatura el llenguatge de programació utilitzat és JavaScript. Aquest llenguatge de programació que s'utilitza principalment per crear pàgines web dinàmiques. A través d'aquest llenguatge s'estudia com incorporar efectes i animacions a una pàgina web. També l'aplicació d'accions que ens permetin realitzar manipular el navegador web en prémer botons i finestres amb missatges d'avís a l'usuari.
El documento describe las partes de una letra y los diferentes tipos de letras, incluyendo su historia y desarrollo. Explica conceptos como trazo, ápice, vértice, brazo, ascendente, descendente, asta, remate, hombro, doble arco, espolón, uña, pico, oreja, lágrima, bucle, apófige, contrapunzón, perfil, cruz, cola, floritura, gancho, terminal, ligadura, ojal inferior, cuello, horcadura, cuadratín, med
Taller de Color · Pac 1 · Paquita RibasPaquita Ribas
PAC de l'assignatura Taller de Color del Grau de Disseny y Creació Digital de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
El documento describe los diferentes tipos de licencias de derechos de autor, incluyendo licencias abiertas como GFDL y Creative Commons. Define derechos de autor, derechos morales, copyright, dominio público y proporciona detalles sobre varias licencias Creative Commons como reconocimiento, no comercial, compartir igual y sin obra derivada.
El histograma muestra la distribución de los niveles de gris en una imagen, y puede indicar si hay suficientes tonos medios o si están agrupados en las altas luces o sombras. Para ajustar el rango tonal, herramientas como Niveles y Curvas permiten ajustar selectivamente las sombras, luces y tonos medios para mejorar el contraste sin empastar detalles. Al editar archivos RAW, se pueden hacer ajustes reversibles de la exposición, sombras, tonos medios y brillo observando el histograma para evitar
Materials resumits de l'assignatura de Fotografia Digital del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
El documento describe las diferencias entre cámaras compactas y réflex en términos de óptica y control de la luz. Explica conceptos como el enfoque, el ángulo visual, el diafragma, el obturador, la sensibilidad, el balance de blancos y más. También cubre temas como los modos de exposición, los tipos de objetivos, y cómo estas cámaras controlan la cantidad de luz que llega al sensor.
La fotografía digital se basa en píxeles en lugar de granos de plata y representa la imagen como una matriz numérica. El sensor electrónico sustituye al negativo tradicional y contiene píxeles que convierten la luz en impulsos eléctricos. Los formatos más comunes de sensor son CCD y CMOS, que usan filtros de color para generar imágenes a color a partir de sensores monocromáticos.
Materials resumits de l'assignatura de Fotografia Digital del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicació d'Àudio - Super-resumPaquita Ribas
Materials molt resumits de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicació d'Àudio - Resum mòdul 6Paquita Ribas
Resum del mòdul 6 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicació d'Àudio - Resum mòdul 5Paquita Ribas
Resum del mòdul 5 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicció d'Àudio - Resum mòdul 4Paquita Ribas
Resum del mòdul 4 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicació d'Àudio - Resum mòdul 3Paquita Ribas
Resum del mòdul 3 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i Publicació d'Àudio - Resum mòdul 2Paquita Ribas
Resum del mòdul 2 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Tractament i publicació d'Àudio - Resum modul 1Paquita Ribas
Resum del mòdul 1 de l'assignatura de tractament i publicació d'Àudio del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Resum del mòdul 8 de l'assignatura de Gestió de projectes del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Resum del mòdul 7 de l'assignatura de Gestió de projectes del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Resum del mòdul 6 de l'assignatura de Gestió de projectes del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
Resum del mòdul 3 de l'assignatura de Gestió de projectes del Grau Multimèdia de la UOC. Pots veure el projecte complet a www.racovermell.com. Gràcies pel "like" ;-)
1. Estudis d’ Informàtica, Multimèdia i Telecomunicació
Programació
Práctica 2
Cognoms: Ribas Tur
Nom: Paquita
Indicacions generals:
Llegiu amb detall les tasques encomanades a cada exercici i també les indicacions i
suggeriments de resolució.
Per a dubtes i aclariments sobre l’enunciat, adreceu-vos al consultor responsable de la
vostra aula.
Lliurament:
1. Els exercicis en llenguatge algorísmic han de resoldre’s en aquest mateix document
2. Cal lliurar la solució d’aquesta pràctica en un fitxer comprimit en format zip o rar nomenat
CognomsNom_P_PRACT2 adreçat a la bústia “Lliurament d’activitats”
3. El fitxer comprimit contindrà aquest mateix arxiu amb les respostes a les preguntes 1 i 4 i
els arxius php corresponents als exercicis 2, 3 i 5. No s’han d’adjuntar els fitxers d’imatge
ni de dades.
4. Data límit per lliurar la solució: dimecres, 21 de desembre de 2011 (a les 23:59 hores).
És imprescindible respectar el format, el nom dels fitxers php i data de lliurament. La
no adequació a aquestes especificacions pot suposar la no avaluació de la Pràctica.
1
2. Exercici 1: Treball amb taules [15%]
Objectius: Donat un conjunt de dades organitzat en una taula, aplicar l’esquema
adequat per construir un algorisme que solucioni un determinat problema el resultat
del qual té forma de taula
Materials: Mòdul 4: Tipus estructurats de dades
Tasca: Dissenyar el mòdul (acció o funció, el més adequat) sonQuadrats que rebi una taula
candidats de 100 nombres enters i retorni una taula de 100 booleans; en les posicions
figurarà true o false segons si el número que ocupa la posició en candidats sigui un quadrat
perfecte o no ho sigui.
.
(Per exemple si els valors de les primeres posicions de candidats fossin
index 0 1 2 3 4 5 6 7 8 9 10 …
valor 7 9 13 6 29 55 256 80 81 4 22 …
els valors retornats serien
index 0 1 2 3 4 5 6 7 8 9 10 …
valor false true false false false false true false true false false …
Perquè el 9, 256, 81 i 4 són quadrats perfectes i 7, 13, 6, 29, 55, 80 i 22 no ho són).
Indicacions:
Un nombre és quadrat perfecte si la seva arrel quadrada és un nombre enter.
El llenguatge algorísmic no disposa de cap funció que faci l’arrel quadrada d’un
nombre.
funcio esQuadrat(n: enter): boolea
{Pre: n ≥ 0}
var
i : enter;
trobat, perfecte: boolea;
fvar
trobat := trobat;
perfecte := fals;
i := 1;
mentre no trobat fer
trobat := (i * i) > n;
si no trobat llavors
i := i + 1
fsi
mentre
i := i – 1;
2
3. { i * i és menor o igual a n, i (i + 1) per (i + 1) és major que n }
perfecte = (i * i) = n;
{post: si n és arrel perfecte i “i” al quadrat és igual a n, en cas contrari “i” al quadrat és
diferent de n }
retorna perfecte;
ffuncio
funcio sonQuadrats(candidats: taula[100] de enters): taula[100] de boolea
{rebem un array candidats amb 100 enters i retornem una talua amb 100 boleans
amb valor verdader si cada un dels enters correlatius son arrels quadrades perfectes i
fals en cas contrari }
var
resultats:taula[100] de boolea;
i: enter;
fvar
per i := 1 fins 100 fer
resultats[i] := esQuadrat(resultats[i]);
fper
retorna resultats;
ffuncio
3
4. Exercici 2: Treball amb taules en PHP [20%]
Objectius: Construir un algorisme que solucioni un determinat problema amb l’ús de
taules.
Materials: Mòdul 4: Tipus estructurats de dades
Guia bàsica de PHP: Mòdul 5 Tipus estructurats de dades en PHP
Tasca: Crear el programa Repartidor de cartes que reparteix aleatòriament, una darrera
l'altra les 40 cartes de pòquer (no hi són 8, 9 ni 10). En la pantalla hauran de mostrar-se les
40 cartes sense que en falti cap ni que hi hagi repeticions.
Pe: si la crida és http://localhost/pract2_exer02.php la pantalla pot mostrar
Recursos: Per a la realització de l’exercici es faciliten 40 imatges en format jpg
0.jpg, 1.jpg, …,9.jpg amb els anversos de les cartes 1-7 i les figures de diamants
10.jpg, …, 19.jpg amb els anversos de les cartes 1-7 i les figures de piques
20.jpg, …, 29.jpg amb els anversos de les cartes 1-7 i les figures de cors
30.jpg, …, 39.jpg amb els anversos de les cartes 1-7 i les figures de trèvols
4
5. Consells
Posar aleatòriament 40 cartes no és cap problema complicat. Es tracta de fer 40 sortejos de
números entre 0 i 39. Però fer-ho així no ens assegura que no hi hagi repeticions i que surtin
les 40 cartes diferents.
Quan es fa amb una baralla de veritat no hi ha problema perquè quan s’ha tret una carta ja
no pot tornar a sortir. En el programa s’ha de simular aquesta situació, i això es pot fer
mitjançant un array que indiqui si una carta pot sortir o ja no. Aquest array ha de tenir una
posició per carta de tipus booleà. Si el contingut és true es pot agafar la carta. Si és false,
no es pot agafar perquè ja ha sortit. Caldrà mantenir aquest array: quan s'agafi una carta
(perquè la seva posició està en true) caldrà posar la posició en false.
Indicacions i requisits d’implementació
El fitxer php rebrà el nom pract2_exer02.php i la crida serà del tipus
pract2_exer2.php, sense paràmetres.
Declareu la constant NUMCARDS i doneu-li el valor 40. Tots els bucles i referències
a les cartes poden fer-se respecte NUMCARDS en lloc de fer-ho directament
respecte 40.
Una estructura de dades bàsica serà la taula $not_used de NUMCARDS posicions
de tipus boolean. Cada posició de l’array (de la 0 a la 39) correspondrà a una carta
de la baralla (0.jpg a 39.jpg). Si el contingut d’una posició de l’array és true significa
que la carta encara no s'ha mostrat i el valor false voldrà dir que la carta ja ha sortit.
Una altra serà la taula $cards de 40 posicions enteres i que representarà l'ordre en
que es mostraran les cartes.
S’ha de construir la function init_array(&$vector, $valor) que rep com paràmetres
un array i un valor i omple amb aquest valor totes les posicions de l’array. Aquesta
funció es farà servir per inicialitzar tots els arrays que convingui.
S’ha de construir la function card_draw, que rebrà el vector $not_used, i retornarà
el número de la carta extreta. Per decidir quina carta s'agafa pot usar-se rand (a, b)1
que retorna un nombre enter entre a i b (ambdós inclosos). La casella de la taula
$not_used corresponent a la carta sortejada, s’ha de posar a false2.
Heu de treballar amb compte perquè és possible que el nombre aleatori que
s’obtingui en un sorteig ja s’hagi obtingut amb anterioritat. En aquest cas s’haurà de
seguir alguna estratègia per evitar l’efecte d’aquestes repeticions. Entre les
estratègies alternatives possibles tenim:
o Tornar a sortejar tantes vegades com sigui necessari fins que s’obtingui una
carta que no hagi sortit amb anterioritat (la quantitat de sortejos que es
realitzen poden ser uns quants centenars i fins i tot milers atès que al final
només quedarà una carta per treure i la probabilitat que rand retorni aquell
valor és molt petita).
o Si surt una carta ja obtinguda amb anterioritat, recórrer la taula en un sentit
fins a trobar una posició a true i donar aquesta posició com a obtinguda pel
sorteig. Aquest mètode assegura fer només un sorteig per cada carta encara
que al recórrer en un sentit determinat tendeix a fer aparèixer cartes
contigües.
1
http://php.net/manual/es/function.rand.php
2
PHP permet que una function rebi paràmetres i els modifiqui i, a més, retorni un valor amb la
instrucció return. En aquest sentit la function es comporta com acció i funció alhora.
5
6. S'ha de construir la function put_cards, que mostrarà per pantalla les 40 cartes per
l'ordre en que estan disposades en $cards.
L'esquema de treball serà sortejar un rera l'altre els quaranta números entre 0 i 39 i
emmagatzemar-los per ordre de sortida en $cards. Un cop finalitzat el sorteig es
mostraran amb put_cards
Opcionalment pot construir-se la function put_row que farà que les cartes es
mostrin en fileres de 8 cartes d’amplada (com la imatge d’exemple).
6
7. Exercici 3: Treball amb taules bidimensionals en PHP [20%]
Objectius: Donades sèries de dades, organitzar-les en taules bidimensionals i
aplicar l’esquema adequat per resoldre el problema donat.
Materials: Mòdul 4: Tipus estructurats de dades
Guia bàsica de PHP: Mòdul 5 Tipus estructurats de dades en PHP
Tasca: Simular una taula on entre 2 i 5 jugadors fan una partida de Back Jack sense
apostes. En fer la crida al programa es mostraran les cartes de cada jugador, la suma de
punts de cadascú i un missatge que indicarà qui és guanyador.
P.e. a la crida: http://localhost/pract2_exer03.php?n=3, amb 3 jugadors, un resultat seria
El programa que es demana aprofita mòduls de l'exercici 2 i també els fitxers d'imatge.
El Black Jack és una variant del joc del 7 i mig en què cada jugador s'ha d'aproximar, però
sense passar-se, a sumar 21 punts. Una altra diferència amb el 7 i mig és que les cartes,
però, es donen de dues en dues.
La crida al programa anirà acompanyada del paràmetre n que serà el nombre de jugadors.
S'acceptaran entre 2 i 5 jugadors, altrament no s'entrarà en el joc i es mostrarà un missatge
del tipus :
Poden jugar entre 2 i 5 jugadors.
La crida hauria de ser pract2_exer03.php?n=x, on x pertany a {2,3,4,5}
7
8. Per a la nostra versió reduïda del Black Jack farem servir només les cartes 1 a 7 i les
figures. El valor de cada carta és:
10 punts per a l'as i les figures
el valor nominal propi de la carta per a les cartes de 2 a 7
Recursos: Disposeu dels mateixos fitxers d'imatge que per l'exercici anterior.
Indicacions i requisits d’implementació
La crida al programa serà del tipus pract2_exer03.php?n=X on X és una xifra del
conjunt {2, 3, 4, 5} i significa el nombre de jugadors de la partida simulada.
La partida de Black Jack es jugarà amb dues baralles de cartes, cosa que es
representarà mitjançant l'array $not_used de longitud 80 i amb el mateix significat
que l'exercici anterior. Les posicions 0 a 39 signifiquen una baralla i les posicions 40
a 79 representaran l'altre.
Els jugadors quedaran representats per la matriu bidimensional $gamer, de manera
que cada filera representa un jugador i les cel·les d'una filera representen
o La primera casella els punts del jugador
o La resta de caselles seran les cartes que ha extret el jugador
La matriu $gamer corresponent a la captura de pantalla de l'exemple tindria aquest
aspecte
$gamer $gamer[ ][0] $gamer[ ][1] $gamer[ ][2] $gamer[ ][3] $gamer[ ][4] $gamer[ ][5] $gamer [ ][6]
$gamer [0] 23 30 15 21 13
$gamer [1] 28 3 6 11 12 8 31
$gamer [2] 27 24 17 14 26
(En php les fileres d'una matriu bidimensional no han de ser obligatòriament de la
mateixa longitud)
Recordeu que no cal declarar les matrius especialment, es poden crear mitjançant un
bucle i en qualsevol moment se'ls pot afegir caselles3.
Heu d'emprar les funcions NL() i function init_array amb el mateix significat que en
l'exercici anterior.
Heu de crear la funció value($number) que rebrà el número que representa la
imatge de la carta i retornarà la seva puntuació. Per exemple, al número 0 ( ) li
correspondria un retorn 10 i al 33 ( ) li correspondria un retorn 4.
3
El codi
for ($i=0; $i<4; $i++){
$matriu[$i] = array (0,$i*2);}
genera un array bidimensional $matriu[4][2] amb el següent contingut
$matriu $matriu[ ][0] $matriu[ ][1]
$matriu[0] 0 0
$matriu[1] 0 2
$matriu[2] 0 4
$matriu[3] 0 8
de manera que a $matriu[2][1] hi ha emmagatzemat un 4 i a $matriu[1][0] hi ha un 0
8
9. Heu de crear l'acció play que rebrà dos paràmetres:
o l'array que representa un jugador (on es posaran els punts en la posició [0] i
les cartes en les següents).
o l'array $not_used
Aquesta funció anirà extraient les cartes de dues en dues i posant-les a les seves
posicions de l'array a l'hora que actualitza els punts del jugador. Per extreure cada
carta podeu fer servir la function card_draw de l'exercici anterior.
En aquesta funció s'ha de simular la intel·ligència del jugador: cada vegada ha de
decidir demanar dues cartes o plantar-se. Els croupiers dels casinos treuen cartes
fins arribar o ultrapassar els 17 punts. Si la banca dels casinos ho fa així, sembla
adequat implementar aquesta intel·ligència a l'algorisme. Podeu, no obstant, decidir
que el valor per plantar-se sigui un altre (15, 16 o 18).
Recordeu que els dos paràmetres que rebi la acció play han de ser d'entrada sortida
perquè en ambdós arrays s'escriuen valors que empren el programa principal o altres
functions..
Heu de crear l'acció put_gamer que rebrà la matriu bidimensional $gamer i un enter
(el jugador) i escriurà en pantalla els resultats del jugador. Per exemple, si la crida és
put_gamer($gamer, 2) s'escriuria en pantalla els resultats del jugador 2.
Consells
Si definim la constant NUMCARDS i li assignem el valor 80, les funcions que
s'heretin de l'exercici anterior, si estan referides a NUMCARDS, funcionaran
directament sense necessitat de canvis.
card_draw treballa amb $not_used que té 79 posicions i retornarà un valor entre 0 i
79 si es manté el codi de l'exercici anterior. No obstant les cartes tenen noms que
van del 0 al 39. Es podria duplicar el nombre de fitxers d'imatge i numerar les còpies
del 40 al 79. Però hi ha una solució més simple: en rebre la carta retornada per
card_draw es pot corregir el valor rebut per deixar només valors de l'interval [0, 39].
No intenteu posar directament una posició d'un array dins d'una cadena de text de la
instrucció print. P.e. en un programa es vol imprimir el contingut d'una taula amb la
instrucció
print "el preu és $vector[$i] euros";
Aquesta forma no treurà en la pantalla el que es desitja. S'ha de fer servir l'operador
de concatenació:
print "el preu és ".$vector[$i]." euros";
9
10. Exercici 4: Treball amb Tuples [25%]
Objectius: Donada una família de dades relacionades, dissenyar les estructures de
dades adients per al seu emmagatzematge i crear expressions i mòduls de programa
per al seu tractament
Materials: Mòdul 4: Tipus estructurats de dades
Tasca: Una bibliomediateca municipal vol informatitzar el seu fons per a un millor control.
Per a cada element de la bibliomediateca volen emmagatzemar: el tipus (un caràcter que pot
tenir els valors {L, C, D, V o J} amb els significats Llibre, CD, DVD, Videollibre, videoJoc),
l'autor (que denotarem de tipus text), l'editorial (text), el nombre de pàgines (enter), la
durada en minuts (enter), si es pot prestar o està exclòs de préstec, número de soci a qui
s'ha prestat (un enter entre 0 i 10000; el 0 indica que no està prestat) i la data de
devolució(tData).
Definir el tipus tElement adequat per emmagatzemar aquest tipus de dades.
tElement = tupla
tipus: caracter;
autor: text;
editorial: text;
pagines: enter;
durada: enter;
disponible: boolea;
soci: enter;
devolucio: tData;
ftupla
Definir el tipus tData que permeti emmagatzemat en format numèric una data
tData = tupla
dia: enter;
mes: enter;
any: enter;
ftupla
10
11. Per a cada soci volen emmagatzemar el nom (text), cognoms (text), data de naixement,
adreça (tAdress)
Definir el tipus tPersona adequat per emmagatzemar aquest tipus de dades.
tPersona = tupla
nom: text;
cognoms: text;
naixement: tData;
adress: tAdress;
ftupla
Definir el tipus tAdress adequat per emmagatzemar una adreça.
tAdress = tupla
via: text;
num: enter;
planta: text;
porta: text;
localitat: text;
cp: enter;
país: text;
ftupla;
Es preveu que la bibliomediateca pugui tenir fins 100.000 elements, tot i que en aquest
moment només en té 12368, per aquest motiu l'informàtic ha creat el tipus de data tBiblio.
En el primer camp s'emmagatzemarà la quantitat d'elements actual (ara 12368) i al segon les
dades de cadascun dels elements a partir de la posició 1 i consecutivament.
Es preveu que la bibliomediateca pugui arribar a tenir fins 5000 socis (ara n'hi ha 1300) i per
aquest motiu també ha creat el tipus tSoci. Els camps de tSoci tenen els significats
equivalents als de tBiblio
i, per acabar, ha creat dues variables que contindran els valors
11
12. Escriure l’expressió que ens permet saber si el darrer element entrat a la base de dades
és un DVD que es pot deixar
(BMedia.item[BMedia.en_fons ].tipus == “D”) i (BMedia.item[BMedia.en_fons
].disponible)
Escriu la funció quantsDeixats que rep nom i cognoms d'un soci i les variables BMedia i
Poblacio i retorna la quantitat d'elements que té deixats. (Suposeu que disposeu de la
funció textEqual(cad1: text, cad2:text) que retorna cert si les dues cadenes són iguals i
fals en cas contrari)
funcio quantsDeixats(nom: text, cognoms: text, biblio: tBiblio, socis: tSoci) : enter
var
i, num, id: enter;
fvar
num := 0;
id := 0;
per i := 1 fins i ≤ socis.actuals fer
si (socis.soci[i].nom = nom i socis.soci[i].cognoms = cognoms) llavors
id = i;
fsi
fper
per i := 1 fins biblio.en_fons fer
si (biblio.item[i].soci = id) llavors
num = num + 1;
fsi
fper
retorna num;
ffuncio
12
13. Exercici 5: Treball amb tuples en PHP [20%]
Objectius: Localitzar i treballar amb informació emmagatzemada en un esquema
combinat de taules i tuples en PHP.
Materials: Mòdul 4: Tipus estructurats de dades
Guia bàsica de PHP: Mòdul 5 Tipus estructurats de dades en PHP
Tasca: Donat un conjunt de dades emmagatzemat en un esquema combinat de
taules i tuples, localitzar, seleccionar i calcular amb aquestes dades .
En una escola tenen les dades d’alumne emmagatzemades en una taula de tuples de nom
$student. Cada tupla consta dels següents camps:
name que emmagatzema el nom de pila de l’estudiant
sex que pren el valor true per les dones i false pels homes
age que emmagatzema la seva edat
matter, una taula on s’emmagatzemen els noms de les assignatures que cursa
l’estudiant
grade, una taula, de la mateixa longitud que l’anterior, que emmagatzema les
qualificacions obtingudes en les assignatures
Es demana que es construeixin 3 accions:
countSex que rep com a paràmetre la taula d’estudiants i escriu:
o El títol "Sexes dels estudiants"
o La frase "Hi ha X dones" on X és el nombre de dones
o La frase "Hi ha Y homes" on Y és el nombre d'homes
o Els noms de totes les dones separats per comes
o Els noms de tots els de tots els homes separats per comes
matterOf que rep com a paràmetre la taula d’estudiants i una cadena de text que
significarà un nom i escriu en pantalla:
o Un títol que indiqui "Assignatures i qualificació mitjana de SS" on SS és el nom
rebut.
o Si hi ha estudiants de nom SS, en una línia per estudiant
l’edat de l’estudiant
la llista de les assignatures
la qualificació mitjana, amb dos decimals, de l’estudiant SS
o Si no hi ha estudiants amb el nom, el missatge "No hi ha estudiants de nom SS".
13
14. gradeAverage que rep com a paràmetre la taula d’estudiants i escriu en pantalla:
o Un títol que indiqui "Mitjanes de notes dels estudiants"
o La mitjana, amb tres decimals, obtinguda d'amitjanar les qualificacions mitjanes dels
estudiants.
Indicacions i requisits d’implementació
Es facilita la plantilla pract2_exer05_pla.php que ha de renomenar-se per lliurar com
pract2_exer05.php, i que conté parts programades que no s’han de modificar i altres que
heu d’escriure vosaltres:
Capçaleres de les 3 function que heu de programar vosaltres. Les capçaleres no
s’han de modificar..
Programa principal, format per
o unes instruccions d’escriptura. Heu de canviar les paraules
NOM_ESTUDIANT pel vostre nom de manera que es mostri en pantalla en
les execucions.
o una sentència que carrega les dades de l’arxiu extern data.php (l’arxiu es
facilita amb l’enunciat i ha de copiar a la mateixa carpeta que el programa).
No s’ha de modificar.
o una sèrie de crides a les function que comproven el seu funcionament en
diversos casos i que no s’han de modificar.
El fitxer data.php es crida en el programa mitjançant la instrucció include ("data.php"); i
incorpora al programa la variable $student que conté totes les dades de 35 estudiants..
Aquest fitxer servirà per a les proves. Per a la correcció de la pràctica es farà servir un altre
fitxer amb el mateix nom i estructura, però amb altres continguts.
Característiques de les accions
function countSex($list)
El parámetre $list serà la llista d’estudiants rebuda
(La funció count4 us serà útil per esbrinar la quantitat d’elements que té una matriu)
function matterOf($list, $name)
El parámetre $list serà la llista d’estudiants rebuda
El parámetre $name el nom dels estudiants a buscar.
(Es recorda que les cadenes de text de més d’un caràcter no han de comparar-se
amb l’operador ==. Pot usar-se la funció interna del PHP strcmp5 que retorna un 0 si
les dues cadenes que rep són iguals).
(Es recorda que per escriure un número amb una quantitat exacta de decimals és
aconsellable l’ús de l’ordre printf6.)
function gradeAverage($list)
El parámetre $list serà la llista d’estudiants rebuda
4
http://es2.php.net/manual/es/function.count.php
5
http://es2.php.net/manual/es/function.strcmp.php
6
http://es.php.net/manual/es/function.printf.php
14