SlideShare a Scribd company logo
1 of 17
Download to read offline
Estudis d’Informàtica, Multimèdia i Telecomunicació
Programació
PAC3 — Document d’exercicis
Estudiant
Cognoms: Baldoví Martínez
Nom: Marcos
Exercici 1: Treball bàsic amb taules en PHP [50%]
Les taules de dades és un del mecanismes més habituals de representar les dades i
és freqüent haver d’operar amb dades provinents de taules diverses. En aquest
exercici es pretén crear taules, omplir-les, recorrer-les i operar amb dades provinents
de taules per obtenir noves taules.
Tasca: Consistirà en crear un conjunt de mòduls que rebin, treballin i retornin taules de
nombres enters.
S'haurà de crear els mòduls:
 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 números
que estan separats per un espai en blanc, com ara
$cadena=" 10 9 8 7 6 5 4 3 2 1 0";
El mòdul recollirà de la URL 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:
10 9 8 7 6 5 4 3 2 1 0
1
http://es2.php.net/manual/es/function.include.php
2
http://es2.php.net/manual/es/function.explode.php
 Mòdul printArray
Rep dos paràmetres, el primer és una cadena de text i el segon un array i escriu:
En una primera línia i de manera destacada, la cadena de text rebuda. I en una
línia nova tots els elements de la taula segons la seva posició i separats per
comes.
P.e. Si la crida hagués estat printArray("Received", $data) i l'array $data
correspongués a la cadena posada com exemple, aquesta function
escriuria a la pantalla:
Received
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
 Mòdul createsBrotherVector
Rep tres paràmetres, un array i dos números enters (min i max). El mòdul crea i
retorna un array igual de llarg que l’array rebut i l’omple de nombres enters
aleatoris compresos entre min i max. Per obtenir la dimensió de l’array rebut farà
servir la function count3
i per crear el nombres aleatoris la ja coneguda rand.
Per exemple si la crida és createsBrotherVector($data, 2, 4) i $data té els
valors
10 9 8 7 6 5 4 3 2 1 0
El vector retornat podria ser
3 3 2 3 4 4 2 3 2 4 3
De la mateixa longitud que l’array rebut i ple de nombres aleatoris entre 2 i 4
 Mòdul minValuesVector
Ha de rebre tres paràmetres, els tres arrays de la mateixa longitud i retorna un
array de la mateixa longitud on en cada posició té el menor dels tres nombres
ubicats a la posició equivalent als tres arrays. Per exemple si els arrays rebuts
són:
10 9 8 7 6 5 4 3 2 1 0
4 5 7 5 9 12 7 5 7 0 4
5 1 6 3 11 6 5 2 1 1 7
l’array retornat seria:
4 1 6 3 6 5 4 2 1 0 0
 Mòdul sumVectorValues
Ha de rebre com paràmetre un vector i retorna la suma de tots els seus
elements. P.e. si rep la taula
10 9 8 7 6 5 4 3 2 1 0
retornaria un 55 (10+9+8+7+6+5+4+3+2+1+0)
 Mòdul inverseVector
Ha de rebre com paràmetre un vector i retorna un altre vector amb els mateixos
elements però posats en ordre invers P.e. si rep la taula
10 9 8 7 6 5 4 3 2 1 0
l’array retornat seria:
0 1 2 3 4 5 6 7 8 9 10
 Mòdul sumVectors
Ha de rebre dos paràmetres, dos arrays d'enters de la mateixa longitud i retorna
3
http://php.net/manual/es/function.count.php
un array de la mateixa longitud on en cada posició té la suma dels dos nombres
ubicats a la posició equivalent als arrays rebuts. Per exemple si els arrays rebuts
són:
10 9 8 7 6 5 4 3 2 1 0
3 3 3 3 3 3 3 3 3 3 3
l’array retornat seria:
13 12 11 10 9 8 7 6 5 4 3
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.
Podeu comprovar el funcionament del programa amb la crida.
http://prog.uoc.edu/pac3/pac3_exer1.php?filename=data10
També podeu provar-lo canviant el nom del fitxer de dades per qualsevol altre (fins
data15)
Indicacions preceptives
1. No es pot fer ús de variables globals.
2. En PHP existeix la function count($arg)4
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ó 2. En aquest exercici de la PAC, queda especialment
prohibit fer ús de les function d'arrays de php llevat de l’esmentada count.
5. Es faciliten 6 fitxers de dades data10 a data15.
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. Aixi mateix, en el
present document es copiarà el codi del programa.
Consells
1. Podeu reutilitzar mòduls d'exercicis anteriors, directament o adaptats, be sigui
de les vostres respostes o de la solució publicada.
4
http://php.net/manual/es/function.count.php
Valoració
- Function getData: 0.25
- Function printArray: 0.25
- Function createsBrotherVector: 1
- Function minValuesVector:1.25
- Function sumVectorValues:0.25
- Function inverseVector: 0.75
- Function sumVectors:0.75
- Concisió en l'ús de composicions i estalvi de variables: 0.50
Copieu aquí el codi de la vostra solució
<?php
/************* FUNCTION *************/
//AquÌ va el codi de les funcions
function LF()
{ //line feed
print "<br />";
}// de LF
//put here your code
function getData()
{
$filename = $_GET["filename"];
include($filename);
$data = explode(" ",$cadena);
return $data;
}
function printArray($text, $data)
{
// imprimir $text
echo $text;
// posicionar array --> $i=0;
$i=0;
// mentre no fi --> $i<count($data)
while($i<count($data))
{
// llegir valor posició $i
$n=$data[$i];
// imprimir valor
echo $n;
// imprimir ,
if($i<count($data)-1)
{
echo ",";
}else
{
echo "<br>";
}
// avançar i++
$i++;
//fmentre
}
}
function createsBrotherVector($data, $minim, $maxim)
{
// posicionar array --> $i=0;
$i=0;
// mentre no fi --> $i<count($data)
while($i<count($data))
{
// $v[$i]= generar aleatori entre minim i maxim rand array_rand
$v[$i]=rand($minim,$maxim);
// avançar i++
$i++;
//fmentre
}
return $v;
}
function minValuesVector ($data1, $data2, $data3)
{
// posicionar
//mentre no fi
// llegir valor de $data1
// llegir valor de $data2
// llegir valor de $data3
// cercar el minim --> $dataMinim
//fmentre
//return $dataMinim
$i=0;
while($i<count($data1))
{
$n1=$data1[$i];
$n2=$data2[$i];
$n3=$data3[$i];
if($n1<$n2)
{
if($n1<$n3)
{
$dataMinim[$i]=$n1;
}else
{
$dataMinim[$i]=$n3;
}
}else
{
if($n2<$n3)
{
$dataMinim[$i]=$n2;
}else
{
$dataMinim[$i]=$n3;
}
}
$i++;
}
return $dataMinim;
}
function sumVectors($data, $brother)
{
// posicionar array --> $i=0;
$i=0;
// mentre no fi --> $i<count($data)
while($i<count($data))
{
// llegir valor posició $i --> $sum de tots el valors array_sum($data) $sum=$sum+$data[$i]
$sum[$i]=$data[$i]+$brother[$i];
// avançar i++
$i++;
//fmentre
}
// return $sum
return $sum;
}
function inverseVector($data)
{
return array_reverse($data);
}
/************* MAIN *************/
$data=getData();
printArray("Received", $data);
$brother = createsBrotherVector($data, 1, 50);
printArray("Brother", $brother);
$sister = createsBrotherVector($data, 10, 20);
printArray("Sister", $sister);
$sum = sumVectors ($data, $brother);
$sum = sumVectors ($sum, $sister);
$min = minValuesVector ($data, $brother, $sister);
printArray("Min", $min);
printArray("Addition", $sum);
$inverse = inverseVector ($data);
printArray("Received", $data);
printArray("Inverse", $inverse);
$sum = sumVectors ($data, $inverse);
printArray("Addition", $sum);
?>
Exercici 2: Treball bàsic amb taules en PHP [50%]
En les pacs anteriors i en la pràctica vam treballar amb les butxaques plenes de
monedes. En les pacs, a mida que es generava una moneda el programa perdia la
constància de quines havia generat abans (coneixia la suma però no quines monedes i
en quin ordre les havia generat). En la pràctica, com que es tractava de seqüències a
l’entrada, a mida que recollíem les dades una a una de l’entrada les anàvem perdent.
Una solució és emmagatzemar les dades en una taula en què en cada posició
emmagatzemem el codi d’una moneda. Podem accedir a cada posició de la taula per
saber quina moneda es va generar en cada moment, podem veure la butxaca sense
perdre-la i podem també modificar-la.
Al present exercici se us proposa treballar amb arrays que representen una butxaca de
monedes i bitllets.
Tasca: 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 getData
Aquest mòdul no ha de rebre cap paràmetre.
La crida al programa haurà de ser del tipus:
localhost/pac3_exer2.php?n=15
el mòdul recollirà el valor de n passat com paràmetre i el retornarà. Si a la URL
no s’ha posat el paràmetre n, es retornarà el valor 50.
 Mòdul getCoinValue
que rep com paràmetre el codi d’una moneda o bitllet i retorna el seu valor. El
codi consisteix en un número entre 1 i 12 que es correspon amb una moneda o
un bitllet segons la següent codificació.
codi 1 2 3 4 5 6 7 8 9 10 11 12
valor 0.01 0.02 0.05 0.10 0.20 0.50 1 2 5 10 20 50
Dins de la function, la correspondència entre el codi i el valor s’ha de fer
mitjançant un array.
 Mòdul putImage
que rep com paràmetre el codi d’una moneda o bitllet i posa la imatge en
pantalla.
Dins de la function, la correspondència entre el codi i el nom del fitxer d’imatge
s’ha de fer mitjançant un array.
 Mòdul initialize
aquest mòdul rep dos paràmetres i retorna un array amb totes les seves
posicions emplenades al mateix valor. El primer dels paràmetres indica la
longitud de l’array i el segon el valor que es posarà a les posicions. P.e. si la
crida és $a = initialize( 5, 12), el vector retornat serà
$a 12 12 12 12 12
 Mòdul createPocket
aquest mòdul rep un paràmetre (size) i retorna un array de longitud size que en
les seves posicions té els codis de monedes i bitllets generats aleatòriament.
P.e. si la crida és $pocket = createPocket (12), el vector retornat podria ser
$pocket 3 12 5 2 2 3 10 1 8 4 5 5
 Mòdul group
aquest mòdul rep com paràmetre un array que en les seves posicions conté
números entre 1 i 12 i que representa una butxaca amb monedes i bitllets. El
mòdul retorna un array de longitud 12 en que indica en les seves posicions
quantes monedes o bitllets hi ha de cada valor. P.e. si el array rebut fora
$pocket 3 12 5 2 2 3 10 1 8 4 5 11 7 5
l’array a retornar seria
$group 1 2 2 1 3 0 1 1 0 1 1 1
Perquè en l’array rebut hi ha un 1, dos 2, dos 3, un 4, tres 5, cap 6, un 7, un 8,
cap 9, un 10, un 11 i un 12.
 Mòdul showVector
aquest mòdul rep com paràmetre un array que en les seves posicions conté
números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i
mostra el contingut en la pantalla. Per mostrar cada moneda o bitllet realitza una
crida a putImage.
 Mòdul countPocket
aquest mòdul rep com paràmetre un array que en les seves posicions conté
números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i
retorna el valor total de les monedes i bitllets que representa. Per a obtenir el
valorde cada moneda o bitllet farà una crida a getCoinValue.
 Mòdul inChange
aquest mòdul rep com paràmetre un array que en les seves posicions conté
números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i el
modifica de manera que les posicions que abans representaven cèntims passin a
representar euros i el que abans representava euros passi representar cèntims.
P.e. si la butxaca rebuda tenia només:
2 monedes de 1 cèntim, una de 2 euros i un bitllet de 20 euros, es modificarà a
2 monedes de 1 euro, una de 2 cèntims i una altra de 20 cèntims.
Recordeu, però que l’array ha de contenir sempre codis de monedes o bitllets,
s'ha de canviar un codi per un altre.
Podeu comprovar el funcionament del programa amb la crida:
http://prog.uoc.edu/pac3/pac3_exer2.php?n=15
o bé amb qualsevol altre valor o sense argument a la crida
Indicacions preceptives
1. No es pot fer ús de variables globals
2. En PHP existeix la function count($arg)5
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.
Queda especialment prohibit l’ús de les functions d’array de php llevat de
l’esmentada count.
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. 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.
5. Es faciliten les imatges de monedes i bitllets
1c.png 2c.png 5c.png 10c.png 20c.png 50c.png 1e.png 2e.png
5
http://php.net/manual/es/function.count.php
5e.png 10e.png 20e.png 50e.png
6. Els fitxers d’imatge s’hauran d’ubicar a la mateixa carpeta que el fitxer php.
7. El programa principal que forma part de la plantilla no s’ha de modificar.
8. Si ho creieu convenient podeu reutilitzar functions d’exercicis anteriors o de les
solucions dels exercicis sempre que segueixin les especificacions escrites en
aquest enunciat..
Valoració
- Function getData: 0.25
- Function getCoinValue: 0.5
- Function putImage: 0.5
- Function initialize: 0.25
- Function createPocket: 0.5
- Function group: 1
- Function showVector: 0.25
- Function countPocket: 0.25
- Function inchange: 1
- Concisió en l'ús de composicions i estalvi de variables: 0.5
Copieu aquí el codi de la vostra solució
<?php
/************* FUNCTION *************/
//functions code
function LF()
{ //line feed
print "<br />";
}// de LF
//put here your code
function getData()
{
if(!is_null($_GET["n"]))
{
$n=$_GET["n"];
}else
{
$n=50;
}
return $n;
}
function getCoinValue($c)
{
$valueCoins=array(0.01, 0.02, 0.05, 0.10, 0.20,0.50,1,2,5,10,20,50);
return $valueCoins[$c];
}
function putImage($c)
{
$table_coins=array('1c','2c','5c','10c','20c','50c','1e','2e','5e','10e','20e','50e');
print "<img src='".$table_coins[$c].".png'>";
}
function initialize($posicions, $value)
{
$i=0;
14
while($i<$posicions)
{
$v[$i]=$value;
$i++;
}
return $v;
}
function createPocket($posicions)
{
$i=0;
while($i<$posicions)
{
$v[$i]=rand(0,11);
$i++;
}
return $v;
}
function group($coins)
{
$v=initialize(12,0);
$i=0;
while($i<count($coins))
{
$v[$coins[$i]]++;
$i++;
}
return $v;
}
function showVector($pocket)
{
$i=0;
while($i<count($pocket))
{
putImage($pocket[$i]);
$i++;
}
}
15
function countPocket($pocket)
{
$value=0;
$i=0;
while($i<count($pocket))
{
$value=$value+getCoinValue($pocket[$i]);
$i++;
}
return $value;
}
function inChange(&$pocket)
{
$i=0;
while($i<count($pocket))
{
if($pocket[$i]<6)
{
$v[$i]=$pocket[$i]+6;
}else
{
$v[$i]=$pocket[$i]-6;
}
$i++;
}
$pocket=$v;
}
/************* MAIN *************/
//main code
$n = getData();
$pocket = createPocket($n);
print "<h3>Initial pocket</h3>";
showVector($pocket);
LF();
print "Total pocket value: ". countPocket($pocket);
$groupedPocket = group($pocket);
16
$name=array("1cent", "2cent", "5cent", "10cent", "20cent", "50cent", "1&euro;", "2&euro;", "5&euro;", "10&euro;",
"20&euro;", "50&euro;");
$size = count($groupedPocket);
for ($i = 0; $i < $size; $i++)
{
print "<br ><b> ".$name[$i]."</b>";
if ($groupedPocket[$i] > 0)
{
$actual = initialize($groupedPocket[$i], $i);
showVector($actual);
unset ($actual);
}
else print " No Coins";
}
print "<h3>Inchange</h3>";
inChange($pocket);
showVector($pocket);
?>
17

More Related Content

What's hot

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 RibasPaquita 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 RibasPaquita Ribas
 
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 RibasPaquita 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 RibasPaquita Ribas
 
Programació - Pac1 - Solució - Lídia Bria
Programació - Pac1 - Solució - Lídia BriaProgramació - Pac1 - Solució - Lídia Bria
Programació - Pac1 - Solució - Lídia BriaLidia Bria
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaLidia Bria
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaLidia Bria
 
Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaLidia Bria
 
Programació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaProgramació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaLidia Bria
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel OrtizArdillita Trepadora
 
Programació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaProgramació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaLidia Bria
 
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasMatemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasPaquita Ribas
 
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 BriaLidia 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 BriaLidia Bria
 
Exercicis de selectivitat creixement, extrems
Exercicis de selectivitat creixement, extremsExercicis de selectivitat creixement, extrems
Exercicis de selectivitat creixement, extremsjosepmarialluch
 
Funcions, límits i les seves aplicacions - Mònica Orpí i Mañé
Funcions, límits i les seves aplicacions - Mònica Orpí i MañéFuncions, límits i les seves aplicacions - Mònica Orpí i Mañé
Funcions, límits i les seves aplicacions - Mònica Orpí i MañéMònica Orpí Mañé
 
1 Funcions domini i recorregut
1 Funcions domini i recorregut1 Funcions domini i recorregut
1 Funcions domini i recorreguteixarc
 

What's hot (20)

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ó - 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ó - 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
 
| PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio | PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia Bria
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia Bria
 
Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia Bria
 
Programació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaProgramació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia Bria
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz
 
Programació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaProgramació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia Bria
 
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasMatemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
 
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
 
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
 
Exercicis de selectivitat creixement, extrems
Exercicis de selectivitat creixement, extremsExercicis de selectivitat creixement, extrems
Exercicis de selectivitat creixement, extrems
 
Funcions, límits i les seves aplicacions - Mònica Orpí i Mañé
Funcions, límits i les seves aplicacions - Mònica Orpí i MañéFuncions, límits i les seves aplicacions - Mònica Orpí i Mañé
Funcions, límits i les seves aplicacions - Mònica Orpí i Mañé
 
1 Funcions domini i recorregut
1 Funcions domini i recorregut1 Funcions domini i recorregut
1 Funcions domini i recorregut
 
Funcions
Funcions Funcions
Funcions
 
Anàlisi 1
Anàlisi 1Anàlisi 1
Anàlisi 1
 

Viewers also liked

Viewers also liked (20)

ADG_pac2
ADG_pac2ADG_pac2
ADG_pac2
 
Aplicacions Interactives multiplataforma_pac3
Aplicacions Interactives multiplataforma_pac3Aplicacions Interactives multiplataforma_pac3
Aplicacions Interactives multiplataforma_pac3
 
DBBDD_pac1
DBBDD_pac1DBBDD_pac1
DBBDD_pac1
 
Aplicacions Interactives multiplataforma_pac2
Aplicacions Interactives multiplataforma_pac2Aplicacions Interactives multiplataforma_pac2
Aplicacions Interactives multiplataforma_pac2
 
Aplicacions Interactives multiplataforma_pac1
Aplicacions Interactives multiplataforma_pac1Aplicacions Interactives multiplataforma_pac1
Aplicacions Interactives multiplataforma_pac1
 
DBBDD_pac2
DBBDD_pac2DBBDD_pac2
DBBDD_pac2
 
Digipak analysis
Digipak analysisDigipak analysis
Digipak analysis
 
Main magazine and digipak pitch
Main   magazine and digipak pitchMain   magazine and digipak pitch
Main magazine and digipak pitch
 
Tractament i publicació d'imatge i vídeo pac2
Tractament i publicació d'imatge i vídeo pac2Tractament i publicació d'imatge i vídeo pac2
Tractament i publicació d'imatge i vídeo pac2
 
AK Roy
AK RoyAK Roy
AK Roy
 
Evaluation question 1 redone
Evaluation question 1 redoneEvaluation question 1 redone
Evaluation question 1 redone
 
Riforma della partecipazione popolare
Riforma della partecipazione popolareRiforma della partecipazione popolare
Riforma della partecipazione popolare
 
Resum video 2part
Resum video 2partResum video 2part
Resum video 2part
 
Riforma della Partecipazione Popolare - Modifica dello Statuto di Pontecorvo ...
Riforma della Partecipazione Popolare - Modifica dello Statuto di Pontecorvo ...Riforma della Partecipazione Popolare - Modifica dello Statuto di Pontecorvo ...
Riforma della Partecipazione Popolare - Modifica dello Statuto di Pontecorvo ...
 
gestpro_pac2
gestpro_pac2gestpro_pac2
gestpro_pac2
 
OPN-ECCH-02-000017
OPN-ECCH-02-000017OPN-ECCH-02-000017
OPN-ECCH-02-000017
 
DBBDD_practica1
DBBDD_practica1DBBDD_practica1
DBBDD_practica1
 
Disseny Gràfic_Pac2
Disseny Gràfic_Pac2Disseny Gràfic_Pac2
Disseny Gràfic_Pac2
 
animació_pac3
animació_pac3animació_pac3
animació_pac3
 
Dhea and estrogen
Dhea and estrogenDhea and estrogen
Dhea and estrogen
 

Similar to Prog_pac3

Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresJordi Catà
 
Programació Web - PAC 4 correcció - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 4 correcció - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 4 correcció - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 4 correcció - Multimèdia (UOC) - Paquita RibasPaquita Ribas
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaLidia Bria
 
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óticaemunoz341
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinadesceedukat
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaLidia Bria
 
Wellcome to the wonderful world of unit testing
Wellcome to the wonderful world of unit testingWellcome to the wonderful world of unit testing
Wellcome to the wonderful world of unit testingMarçal Berga
 
El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephpherotyc
 
Programació Web - PAC 4 - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 4 - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 4 - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 4 - Multimèdia (UOC) - Paquita RibasPaquita Ribas
 
Potencies i arrels 2 n
Potencies i arrels 2 nPotencies i arrels 2 n
Potencies i arrels 2 ncpnapenyal
 

Similar to Prog_pac3 (18)

PW_pac1
PW_pac1PW_pac1
PW_pac1
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries Lliures
 
PW_pac2
PW_pac2PW_pac2
PW_pac2
 
Programació Web - PAC 4 correcció - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 4 correcció - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 4 correcció - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 4 correcció - Multimèdia (UOC) - Paquita Ribas
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia Bria
 
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
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinades
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia Bria
 
Wellcome to the wonderful world of unit testing
Wellcome to the wonderful world of unit testingWellcome to the wonderful world of unit testing
Wellcome to the wonderful world of unit testing
 
Volcanica2007
Volcanica2007Volcanica2007
Volcanica2007
 
El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephp
 
Programació Web - PAC 4 - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 4 - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 4 - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 4 - Multimèdia (UOC) - Paquita Ribas
 
YDC_pract1
YDC_pract1YDC_pract1
YDC_pract1
 
Practica
PracticaPractica
Practica
 
Potencies i arrels 2 n
Potencies i arrels 2 nPotencies i arrels 2 n
Potencies i arrels 2 n
 
UD3 PROGRAMACIÓ
UD3 PROGRAMACIÓUD3 PROGRAMACIÓ
UD3 PROGRAMACIÓ
 

More from Marcos Baldovi

Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018
Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018
Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018Marcos Baldovi
 
Comportament d'Usuaris Marcos baldovi Resum Researching UX
Comportament d'Usuaris Marcos baldovi Resum Researching UXComportament d'Usuaris Marcos baldovi Resum Researching UX
Comportament d'Usuaris Marcos baldovi Resum Researching UXMarcos Baldovi
 
Comportament d'Usuaris Marcos baldovi Practica 1
Comportament d'Usuaris Marcos baldovi Practica 1Comportament d'Usuaris Marcos baldovi Practica 1
Comportament d'Usuaris Marcos baldovi Practica 1Marcos Baldovi
 
Comportament d'Usuaris Marcos baldovi PAC2
Comportament d'Usuaris Marcos baldovi PAC2Comportament d'Usuaris Marcos baldovi PAC2
Comportament d'Usuaris Marcos baldovi PAC2Marcos Baldovi
 
Comportament d'Usuaris Marcos baldovi PAC1
Comportament d'Usuaris Marcos baldovi PAC1Comportament d'Usuaris Marcos baldovi PAC1
Comportament d'Usuaris Marcos baldovi PAC1Marcos Baldovi
 
Fotografia Digital Marcos baldovi Prova Sintesis
Fotografia Digital Marcos baldovi Prova SintesisFotografia Digital Marcos baldovi Prova Sintesis
Fotografia Digital Marcos baldovi Prova SintesisMarcos Baldovi
 
Fotografia Digital Marcos baldovi practica 2
Fotografia Digital Marcos baldovi practica 2Fotografia Digital Marcos baldovi practica 2
Fotografia Digital Marcos baldovi practica 2Marcos Baldovi
 
Fotografia Digital Marcos baldovi practica 1
Fotografia Digital Marcos baldovi practica 1Fotografia Digital Marcos baldovi practica 1
Fotografia Digital Marcos baldovi practica 1Marcos Baldovi
 
Fotografia Digital Marcos baldovi pac3
Fotografia Digital Marcos baldovi pac3Fotografia Digital Marcos baldovi pac3
Fotografia Digital Marcos baldovi pac3Marcos Baldovi
 
Fotografia Digital Marcos baldovi pac2
Fotografia Digital Marcos baldovi pac2Fotografia Digital Marcos baldovi pac2
Fotografia Digital Marcos baldovi pac2Marcos Baldovi
 
Fotografia Digital Marcos baldovi pac1
Fotografia Digital Marcos baldovi pac1Fotografia Digital Marcos baldovi pac1
Fotografia Digital Marcos baldovi pac1Marcos Baldovi
 
Mercat i Legislació Marcos baldovi PAC4
Mercat i Legislació Marcos baldovi PAC4Mercat i Legislació Marcos baldovi PAC4
Mercat i Legislació Marcos baldovi PAC4Marcos Baldovi
 
Mercat i Legislació Marcos baldovi PAC3
Mercat i Legislació Marcos baldovi PAC3Mercat i Legislació Marcos baldovi PAC3
Mercat i Legislació Marcos baldovi PAC3Marcos Baldovi
 
Mercat i Legislació Marcos baldovi PAC2
Mercat i Legislació Marcos baldovi PAC2Mercat i Legislació Marcos baldovi PAC2
Mercat i Legislació Marcos baldovi PAC2Marcos Baldovi
 
Marcos Baldoví Disseny D'interacció Practica FInal
Marcos Baldoví Disseny D'interacció Practica FInalMarcos Baldoví Disseny D'interacció Practica FInal
Marcos Baldoví Disseny D'interacció Practica FInalMarcos Baldovi
 
Marcos Baldoví Disseny D'interacció PAC2
Marcos Baldoví Disseny D'interacció PAC2Marcos Baldoví Disseny D'interacció PAC2
Marcos Baldoví Disseny D'interacció PAC2Marcos Baldovi
 
Marcos Baldoví Disseny D'interacció PAC1
Marcos Baldoví Disseny D'interacció PAC1Marcos Baldoví Disseny D'interacció PAC1
Marcos Baldoví Disseny D'interacció PAC1Marcos Baldovi
 
Metodología i Desenvolupament de Projectes en Xarxa PRACTICA
Metodología i Desenvolupament de Projectes en Xarxa PRACTICAMetodología i Desenvolupament de Projectes en Xarxa PRACTICA
Metodología i Desenvolupament de Projectes en Xarxa PRACTICAMarcos Baldovi
 
Metodología i Desenvolupament de Projectes en Xarxa PAC3
Metodología i Desenvolupament de Projectes en Xarxa PAC3Metodología i Desenvolupament de Projectes en Xarxa PAC3
Metodología i Desenvolupament de Projectes en Xarxa PAC3Marcos Baldovi
 
Metodología i Desenvolupament de Projectes en Xarxa PAC 2
Metodología i Desenvolupament de Projectes en Xarxa PAC 2Metodología i Desenvolupament de Projectes en Xarxa PAC 2
Metodología i Desenvolupament de Projectes en Xarxa PAC 2Marcos Baldovi
 

More from Marcos Baldovi (20)

Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018
Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018
Comportament d'Usuaris Marcos baldovi Prova Sintesis 2018
 
Comportament d'Usuaris Marcos baldovi Resum Researching UX
Comportament d'Usuaris Marcos baldovi Resum Researching UXComportament d'Usuaris Marcos baldovi Resum Researching UX
Comportament d'Usuaris Marcos baldovi Resum Researching UX
 
Comportament d'Usuaris Marcos baldovi Practica 1
Comportament d'Usuaris Marcos baldovi Practica 1Comportament d'Usuaris Marcos baldovi Practica 1
Comportament d'Usuaris Marcos baldovi Practica 1
 
Comportament d'Usuaris Marcos baldovi PAC2
Comportament d'Usuaris Marcos baldovi PAC2Comportament d'Usuaris Marcos baldovi PAC2
Comportament d'Usuaris Marcos baldovi PAC2
 
Comportament d'Usuaris Marcos baldovi PAC1
Comportament d'Usuaris Marcos baldovi PAC1Comportament d'Usuaris Marcos baldovi PAC1
Comportament d'Usuaris Marcos baldovi PAC1
 
Fotografia Digital Marcos baldovi Prova Sintesis
Fotografia Digital Marcos baldovi Prova SintesisFotografia Digital Marcos baldovi Prova Sintesis
Fotografia Digital Marcos baldovi Prova Sintesis
 
Fotografia Digital Marcos baldovi practica 2
Fotografia Digital Marcos baldovi practica 2Fotografia Digital Marcos baldovi practica 2
Fotografia Digital Marcos baldovi practica 2
 
Fotografia Digital Marcos baldovi practica 1
Fotografia Digital Marcos baldovi practica 1Fotografia Digital Marcos baldovi practica 1
Fotografia Digital Marcos baldovi practica 1
 
Fotografia Digital Marcos baldovi pac3
Fotografia Digital Marcos baldovi pac3Fotografia Digital Marcos baldovi pac3
Fotografia Digital Marcos baldovi pac3
 
Fotografia Digital Marcos baldovi pac2
Fotografia Digital Marcos baldovi pac2Fotografia Digital Marcos baldovi pac2
Fotografia Digital Marcos baldovi pac2
 
Fotografia Digital Marcos baldovi pac1
Fotografia Digital Marcos baldovi pac1Fotografia Digital Marcos baldovi pac1
Fotografia Digital Marcos baldovi pac1
 
Mercat i Legislació Marcos baldovi PAC4
Mercat i Legislació Marcos baldovi PAC4Mercat i Legislació Marcos baldovi PAC4
Mercat i Legislació Marcos baldovi PAC4
 
Mercat i Legislació Marcos baldovi PAC3
Mercat i Legislació Marcos baldovi PAC3Mercat i Legislació Marcos baldovi PAC3
Mercat i Legislació Marcos baldovi PAC3
 
Mercat i Legislació Marcos baldovi PAC2
Mercat i Legislació Marcos baldovi PAC2Mercat i Legislació Marcos baldovi PAC2
Mercat i Legislació Marcos baldovi PAC2
 
Marcos Baldoví Disseny D'interacció Practica FInal
Marcos Baldoví Disseny D'interacció Practica FInalMarcos Baldoví Disseny D'interacció Practica FInal
Marcos Baldoví Disseny D'interacció Practica FInal
 
Marcos Baldoví Disseny D'interacció PAC2
Marcos Baldoví Disseny D'interacció PAC2Marcos Baldoví Disseny D'interacció PAC2
Marcos Baldoví Disseny D'interacció PAC2
 
Marcos Baldoví Disseny D'interacció PAC1
Marcos Baldoví Disseny D'interacció PAC1Marcos Baldoví Disseny D'interacció PAC1
Marcos Baldoví Disseny D'interacció PAC1
 
Metodología i Desenvolupament de Projectes en Xarxa PRACTICA
Metodología i Desenvolupament de Projectes en Xarxa PRACTICAMetodología i Desenvolupament de Projectes en Xarxa PRACTICA
Metodología i Desenvolupament de Projectes en Xarxa PRACTICA
 
Metodología i Desenvolupament de Projectes en Xarxa PAC3
Metodología i Desenvolupament de Projectes en Xarxa PAC3Metodología i Desenvolupament de Projectes en Xarxa PAC3
Metodología i Desenvolupament de Projectes en Xarxa PAC3
 
Metodología i Desenvolupament de Projectes en Xarxa PAC 2
Metodología i Desenvolupament de Projectes en Xarxa PAC 2Metodología i Desenvolupament de Projectes en Xarxa PAC 2
Metodología i Desenvolupament de Projectes en Xarxa PAC 2
 

Prog_pac3

  • 1. Estudis d’Informàtica, Multimèdia i Telecomunicació Programació PAC3 — Document d’exercicis Estudiant Cognoms: Baldoví Martínez Nom: Marcos
  • 2. Exercici 1: Treball bàsic amb taules en PHP [50%] Les taules de dades és un del mecanismes més habituals de representar les dades i és freqüent haver d’operar amb dades provinents de taules diverses. En aquest exercici es pretén crear taules, omplir-les, recorrer-les i operar amb dades provinents de taules per obtenir noves taules. Tasca: Consistirà en crear un conjunt de mòduls que rebin, treballin i retornin taules de nombres enters. S'haurà de crear els mòduls:  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 números que estan separats per un espai en blanc, com ara $cadena=" 10 9 8 7 6 5 4 3 2 1 0"; El mòdul recollirà de la URL 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: 10 9 8 7 6 5 4 3 2 1 0 1 http://es2.php.net/manual/es/function.include.php 2 http://es2.php.net/manual/es/function.explode.php
  • 3.  Mòdul printArray Rep dos paràmetres, el primer és una cadena de text i el segon un array i escriu: En una primera línia i de manera destacada, la cadena de text rebuda. I en una línia nova tots els elements de la taula segons la seva posició i separats per comes. P.e. Si la crida hagués estat printArray("Received", $data) i l'array $data correspongués a la cadena posada com exemple, aquesta function escriuria a la pantalla: Received 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0  Mòdul createsBrotherVector Rep tres paràmetres, un array i dos números enters (min i max). El mòdul crea i retorna un array igual de llarg que l’array rebut i l’omple de nombres enters aleatoris compresos entre min i max. Per obtenir la dimensió de l’array rebut farà servir la function count3 i per crear el nombres aleatoris la ja coneguda rand. Per exemple si la crida és createsBrotherVector($data, 2, 4) i $data té els valors 10 9 8 7 6 5 4 3 2 1 0 El vector retornat podria ser 3 3 2 3 4 4 2 3 2 4 3 De la mateixa longitud que l’array rebut i ple de nombres aleatoris entre 2 i 4  Mòdul minValuesVector Ha de rebre tres paràmetres, els tres arrays de la mateixa longitud i retorna un array de la mateixa longitud on en cada posició té el menor dels tres nombres ubicats a la posició equivalent als tres arrays. Per exemple si els arrays rebuts són: 10 9 8 7 6 5 4 3 2 1 0 4 5 7 5 9 12 7 5 7 0 4 5 1 6 3 11 6 5 2 1 1 7 l’array retornat seria: 4 1 6 3 6 5 4 2 1 0 0  Mòdul sumVectorValues Ha de rebre com paràmetre un vector i retorna la suma de tots els seus elements. P.e. si rep la taula 10 9 8 7 6 5 4 3 2 1 0 retornaria un 55 (10+9+8+7+6+5+4+3+2+1+0)  Mòdul inverseVector Ha de rebre com paràmetre un vector i retorna un altre vector amb els mateixos elements però posats en ordre invers P.e. si rep la taula 10 9 8 7 6 5 4 3 2 1 0 l’array retornat seria: 0 1 2 3 4 5 6 7 8 9 10  Mòdul sumVectors Ha de rebre dos paràmetres, dos arrays d'enters de la mateixa longitud i retorna 3 http://php.net/manual/es/function.count.php
  • 4. un array de la mateixa longitud on en cada posició té la suma dels dos nombres ubicats a la posició equivalent als arrays rebuts. Per exemple si els arrays rebuts són: 10 9 8 7 6 5 4 3 2 1 0 3 3 3 3 3 3 3 3 3 3 3 l’array retornat seria: 13 12 11 10 9 8 7 6 5 4 3 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. Podeu comprovar el funcionament del programa amb la crida. http://prog.uoc.edu/pac3/pac3_exer1.php?filename=data10 També podeu provar-lo canviant el nom del fitxer de dades per qualsevol altre (fins data15) Indicacions preceptives 1. No es pot fer ús de variables globals. 2. En PHP existeix la function count($arg)4 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ó 2. En aquest exercici de la PAC, queda especialment prohibit fer ús de les function d'arrays de php llevat de l’esmentada count. 5. Es faciliten 6 fitxers de dades data10 a data15. 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. Aixi mateix, en el present document es copiarà el codi del programa. Consells 1. Podeu reutilitzar mòduls d'exercicis anteriors, directament o adaptats, be sigui de les vostres respostes o de la solució publicada. 4 http://php.net/manual/es/function.count.php
  • 5. Valoració - Function getData: 0.25 - Function printArray: 0.25 - Function createsBrotherVector: 1 - Function minValuesVector:1.25 - Function sumVectorValues:0.25 - Function inverseVector: 0.75 - Function sumVectors:0.75 - Concisió en l'ús de composicions i estalvi de variables: 0.50
  • 6. Copieu aquí el codi de la vostra solució <?php /************* FUNCTION *************/ //AquÌ va el codi de les funcions function LF() { //line feed print "<br />"; }// de LF //put here your code function getData() { $filename = $_GET["filename"]; include($filename); $data = explode(" ",$cadena); return $data; } function printArray($text, $data) { // imprimir $text echo $text; // posicionar array --> $i=0; $i=0; // mentre no fi --> $i<count($data) while($i<count($data)) { // llegir valor posició $i $n=$data[$i]; // imprimir valor echo $n; // imprimir , if($i<count($data)-1) {
  • 7. echo ","; }else { echo "<br>"; } // avançar i++ $i++; //fmentre } } function createsBrotherVector($data, $minim, $maxim) { // posicionar array --> $i=0; $i=0; // mentre no fi --> $i<count($data) while($i<count($data)) { // $v[$i]= generar aleatori entre minim i maxim rand array_rand $v[$i]=rand($minim,$maxim); // avançar i++ $i++; //fmentre } return $v; } function minValuesVector ($data1, $data2, $data3) { // posicionar //mentre no fi // llegir valor de $data1 // llegir valor de $data2 // llegir valor de $data3 // cercar el minim --> $dataMinim //fmentre
  • 9. while($i<count($data)) { // llegir valor posició $i --> $sum de tots el valors array_sum($data) $sum=$sum+$data[$i] $sum[$i]=$data[$i]+$brother[$i]; // avançar i++ $i++; //fmentre } // return $sum return $sum; } function inverseVector($data) { return array_reverse($data); } /************* MAIN *************/ $data=getData(); printArray("Received", $data); $brother = createsBrotherVector($data, 1, 50); printArray("Brother", $brother); $sister = createsBrotherVector($data, 10, 20); printArray("Sister", $sister); $sum = sumVectors ($data, $brother); $sum = sumVectors ($sum, $sister); $min = minValuesVector ($data, $brother, $sister); printArray("Min", $min); printArray("Addition", $sum); $inverse = inverseVector ($data); printArray("Received", $data); printArray("Inverse", $inverse); $sum = sumVectors ($data, $inverse); printArray("Addition", $sum); ?>
  • 10. Exercici 2: Treball bàsic amb taules en PHP [50%] En les pacs anteriors i en la pràctica vam treballar amb les butxaques plenes de monedes. En les pacs, a mida que es generava una moneda el programa perdia la constància de quines havia generat abans (coneixia la suma però no quines monedes i en quin ordre les havia generat). En la pràctica, com que es tractava de seqüències a l’entrada, a mida que recollíem les dades una a una de l’entrada les anàvem perdent. Una solució és emmagatzemar les dades en una taula en què en cada posició emmagatzemem el codi d’una moneda. Podem accedir a cada posició de la taula per saber quina moneda es va generar en cada moment, podem veure la butxaca sense perdre-la i podem també modificar-la. Al present exercici se us proposa treballar amb arrays que representen una butxaca de monedes i bitllets. Tasca: 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
  • 11. de les crides a les accions i funcions que haureu de desenvolupar com exercici. El programa principal no ha de modificar-se  Mòdul getData Aquest mòdul no ha de rebre cap paràmetre. La crida al programa haurà de ser del tipus: localhost/pac3_exer2.php?n=15 el mòdul recollirà el valor de n passat com paràmetre i el retornarà. Si a la URL no s’ha posat el paràmetre n, es retornarà el valor 50.  Mòdul getCoinValue que rep com paràmetre el codi d’una moneda o bitllet i retorna el seu valor. El codi consisteix en un número entre 1 i 12 que es correspon amb una moneda o un bitllet segons la següent codificació. codi 1 2 3 4 5 6 7 8 9 10 11 12 valor 0.01 0.02 0.05 0.10 0.20 0.50 1 2 5 10 20 50 Dins de la function, la correspondència entre el codi i el valor s’ha de fer mitjançant un array.  Mòdul putImage que rep com paràmetre el codi d’una moneda o bitllet i posa la imatge en pantalla. Dins de la function, la correspondència entre el codi i el nom del fitxer d’imatge s’ha de fer mitjançant un array.  Mòdul initialize aquest mòdul rep dos paràmetres i retorna un array amb totes les seves posicions emplenades al mateix valor. El primer dels paràmetres indica la longitud de l’array i el segon el valor que es posarà a les posicions. P.e. si la crida és $a = initialize( 5, 12), el vector retornat serà $a 12 12 12 12 12  Mòdul createPocket aquest mòdul rep un paràmetre (size) i retorna un array de longitud size que en les seves posicions té els codis de monedes i bitllets generats aleatòriament. P.e. si la crida és $pocket = createPocket (12), el vector retornat podria ser $pocket 3 12 5 2 2 3 10 1 8 4 5 5  Mòdul group aquest mòdul rep com paràmetre un array que en les seves posicions conté números entre 1 i 12 i que representa una butxaca amb monedes i bitllets. El mòdul retorna un array de longitud 12 en que indica en les seves posicions quantes monedes o bitllets hi ha de cada valor. P.e. si el array rebut fora $pocket 3 12 5 2 2 3 10 1 8 4 5 11 7 5 l’array a retornar seria $group 1 2 2 1 3 0 1 1 0 1 1 1 Perquè en l’array rebut hi ha un 1, dos 2, dos 3, un 4, tres 5, cap 6, un 7, un 8, cap 9, un 10, un 11 i un 12.  Mòdul showVector aquest mòdul rep com paràmetre un array que en les seves posicions conté números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i mostra el contingut en la pantalla. Per mostrar cada moneda o bitllet realitza una
  • 12. crida a putImage.  Mòdul countPocket aquest mòdul rep com paràmetre un array que en les seves posicions conté números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i retorna el valor total de les monedes i bitllets que representa. Per a obtenir el valorde cada moneda o bitllet farà una crida a getCoinValue.  Mòdul inChange aquest mòdul rep com paràmetre un array que en les seves posicions conté números entre 1 i 12 i que representa una butxaca amb monedes i bitllets i el modifica de manera que les posicions que abans representaven cèntims passin a representar euros i el que abans representava euros passi representar cèntims. P.e. si la butxaca rebuda tenia només: 2 monedes de 1 cèntim, una de 2 euros i un bitllet de 20 euros, es modificarà a 2 monedes de 1 euro, una de 2 cèntims i una altra de 20 cèntims. Recordeu, però que l’array ha de contenir sempre codis de monedes o bitllets, s'ha de canviar un codi per un altre. Podeu comprovar el funcionament del programa amb la crida: http://prog.uoc.edu/pac3/pac3_exer2.php?n=15 o bé amb qualsevol altre valor o sense argument a la crida Indicacions preceptives 1. No es pot fer ús de variables globals 2. En PHP existeix la function count($arg)5 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. Queda especialment prohibit l’ús de les functions d’array de php llevat de l’esmentada count. 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. 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. 5. Es faciliten les imatges de monedes i bitllets 1c.png 2c.png 5c.png 10c.png 20c.png 50c.png 1e.png 2e.png 5 http://php.net/manual/es/function.count.php
  • 13. 5e.png 10e.png 20e.png 50e.png 6. Els fitxers d’imatge s’hauran d’ubicar a la mateixa carpeta que el fitxer php. 7. El programa principal que forma part de la plantilla no s’ha de modificar. 8. Si ho creieu convenient podeu reutilitzar functions d’exercicis anteriors o de les solucions dels exercicis sempre que segueixin les especificacions escrites en aquest enunciat.. Valoració - Function getData: 0.25 - Function getCoinValue: 0.5 - Function putImage: 0.5 - Function initialize: 0.25 - Function createPocket: 0.5 - Function group: 1 - Function showVector: 0.25 - Function countPocket: 0.25 - Function inchange: 1 - Concisió en l'ús de composicions i estalvi de variables: 0.5
  • 14. Copieu aquí el codi de la vostra solució <?php /************* FUNCTION *************/ //functions code function LF() { //line feed print "<br />"; }// de LF //put here your code function getData() { if(!is_null($_GET["n"])) { $n=$_GET["n"]; }else { $n=50; } return $n; } function getCoinValue($c) { $valueCoins=array(0.01, 0.02, 0.05, 0.10, 0.20,0.50,1,2,5,10,20,50); return $valueCoins[$c]; } function putImage($c) { $table_coins=array('1c','2c','5c','10c','20c','50c','1e','2e','5e','10e','20e','50e'); print "<img src='".$table_coins[$c].".png'>"; } function initialize($posicions, $value) { $i=0; 14
  • 15. while($i<$posicions) { $v[$i]=$value; $i++; } return $v; } function createPocket($posicions) { $i=0; while($i<$posicions) { $v[$i]=rand(0,11); $i++; } return $v; } function group($coins) { $v=initialize(12,0); $i=0; while($i<count($coins)) { $v[$coins[$i]]++; $i++; } return $v; } function showVector($pocket) { $i=0; while($i<count($pocket)) { putImage($pocket[$i]); $i++; } } 15
  • 16. function countPocket($pocket) { $value=0; $i=0; while($i<count($pocket)) { $value=$value+getCoinValue($pocket[$i]); $i++; } return $value; } function inChange(&$pocket) { $i=0; while($i<count($pocket)) { if($pocket[$i]<6) { $v[$i]=$pocket[$i]+6; }else { $v[$i]=$pocket[$i]-6; } $i++; } $pocket=$v; } /************* MAIN *************/ //main code $n = getData(); $pocket = createPocket($n); print "<h3>Initial pocket</h3>"; showVector($pocket); LF(); print "Total pocket value: ". countPocket($pocket); $groupedPocket = group($pocket); 16
  • 17. $name=array("1cent", "2cent", "5cent", "10cent", "20cent", "50cent", "1&euro;", "2&euro;", "5&euro;", "10&euro;", "20&euro;", "50&euro;"); $size = count($groupedPocket); for ($i = 0; $i < $size; $i++) { print "<br ><b> ".$name[$i]."</b>"; if ($groupedPocket[$i] > 0) { $actual = initialize($groupedPocket[$i], $i); showVector($actual); unset ($actual); } else print " No Coins"; } print "<h3>Inchange</h3>"; inChange($pocket); showVector($pocket); ?> 17