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

Programació
PAC1 — Document d’enunciats

Estudiant
SOLUCIÓ

1
Exercici 1: Tipus i expressions [20%]
Tasca: Donades les següents definicions de tipus, constants i variables
const
ICONSTA : enter = 5;
RCONSTA : real = 12.6;
fconst
var
i, j, k: enter;
x, y, z: real;
a, b, c: caràcter;
t, u: cadena;
b1, b2: booleà;
fvar
a) Avalueu les següents expressions amb potencials conflictes de tipus. Si
l’expressió és correcta digueu quin seria el tipus resultant d’avaluar-la. Si
l’expressió és incorrecta indiqueu l’error detectat. (recordeu que l'operador = és de
relació):

i) x * RCONSTA div j
Incorrecta, el resultat de multiplicar els dos primers operands és real i no es pot
aplicar la divisió entera

ii) realToInteger(y) div x
Incorrecta. x és real i no pot ser operand de l’operador div

iii) b ≠ t o integerToReal(j div k) < y / 22.0
Incorrecta. Es compara un caràcter (b) amb una cadena (t)

iv) charToCode(c) div realToInteger(x / 12.2)
Correcta. El resultat serà enter

b) Creeu les següents expressions
v) Expressió que digui si el codi del caràcter a té una valor superior a 100 i al valor
de x
charToCode(a) > 100 i charToCode(a) > (realTointeger (x))

vi) Expressió que digui si b1 conté el resultat de saber si el contingut de la variable
z correspon al producte de les variables x i y.
b1 = (z = x * y)

2
Exercici 2: Avaluació d’expressions [10%]
Tasca: Donades les definicions de constants, tipus i variables de l’exercici 1 i suposant
que les variables tenen els valors següents:
i:=2, j:=4, k:=12, x:=0.75, y:=0.1, z:=1.0 a:=’c’,
c:=’a’, t:=”aloha”, u:=”alelle”, b1:=fals, b2:=cert

b:=’Z’,

Avalueu el resultat de les expressions següents:
a) realToInteger (RCONSTA / x) mod k
realToInteger(12.6 / 0.75) mod 12
realToInteger(16.8) mod 12
16 mod 12
4

b)

k div j > i o t < u
12 div 4 > 2 o “alhoa” < “alelle”
3 > 2 o “alhoa” < “alelle”
cert o “alhoa” < “alelle”
cert o fals
cert

c) realToInteger (z + x / y ) div ICONSTA = k div j - i
realToInteger (1.0 + 0.75 / 0.1) div 5 = 12 div 4 - 2
realToInteger (1.0 + 7.5) div 5 = 12 div 4 - 2
realToInteger (8.5) div 5 = 12 div 4 - 2
8 div 5 = 12 div 4 - 2
1 = 12 div 4 - 2
1=3–2
1=1
cert

d) a ≠ ‘a’ = b2 = ((i + j) * i = k)
‘c’ ≠ ‘a’ = cert = ((2 + 4) * 2 = 12)
‘c’ ≠ ‘a’ = cert = (6 * 2 = 12)
‘c’ ≠ ‘a’ = cert = (12 = 12)
‘c’ ≠ ‘a’ = cert = cert
cert = cert = cert
cert = cert
cert

e) integerToReal(ICONSTA) * RCONSTA / x + integerToReal (k)
integerToReal (5) * 12.6 / 0.75 + realToInteger (12)
5.0 * 12.6 / 0.75 + realToInteger (12)
5.0 * 12.6 / 0.75 + 12.0
63.0 / 0.75 + 12.0
84.0 + 12. 0
96.0

3
Exercici 3: Declaració de variables i especificació [10%]
Tasca: Declareu les variables necessàries i doneu les especificacions d’un algorisme
que resolgui els problemes següents (no s'ha d'escriure l'algorisme):
En concret, es demana que definiu les variables necessàries per representar les dades
del problema (apartat var…fvar d’un algorisme) i que doneu la precondició i la
postcondició.

a) Es desitja calcular a quina distancia ha recorregut un objecte que anava a velocitat
constant (en km/h) coneixent les hores, minuts i segons que ha durat el moviment.
var
h, m, s: enter;
vel, dist : real;
fvar
{PRE: vel = V i h = H i m = M i s = S }
calculaDistancia;
{POST: dist = vel * (H + M / 60 + S / 3600)}

b) Que donada la superfície de la cara d’un cub, digui quin és el seu costat i quin el
seu volum.
var
sup, side, vol : real;
fvar
{PRE: sup = S}
costatVolumCub;
2

3

{POST: side = √S i vol = side }

c) Que donada una cadena de text recompti els espais en blanc i els guions que
conté
var
text : cadena;
space, hyphen : enter;
fvar
{PRE: text = T}
recomptaEspaisGuions;
{POST: space = quantitat d’espais en blanc que conté T
hyphen = quantitat de guions que conté T }

4
Exercici 4: Comprensió i seguiment d’algorismes [20%]
Tasca: Donat el següent algorisme,
algorisme estrany
var
n, c, result : enter;
fvar
n := readInteger();
mentre (n > 9) fer
c := 0;
mentre (n > 0) fer
c := c + n mod 10;
n := n div 10;
fmentre
n := c;
fmentre
si n > 5 llavors
n := 9 – n;
sino
n := 2 * n;
fsi
writeInteger(n);
falgorisme
digueu què escriurà en el cas de les següents entrades

Entrada
17
21
706
12580
999999

Escriptura
1
6
8
2
0

5
Exercici 5: Problema, algorisme i programa en PHP [20%]
Tasca: Implementar una peculiar versió del joc de cartes de la carta més alta entre dos
jugadors que trien cadascun una determinada quantitat de cartes (entre 1 i 5). La
puntuació que s'assigna a cada jugador és el valor de la de la carta més alta que
han tret segons la següent puntuació de les cartes:
Cartes
1a7
Sota, Cavall i Rei

Valor
La puntuació nominal de la carta
10 punts

La crida tindrà la forma
http://localhost/pac1_exer5.php?type=A&qtty=n on
•

type : és un caràcter que indicarà quin tipus de carta es vol mostrar:

o n si es vol mostrar cartes napolitanes

o e si es vol mostrar cartes espanyoles
•

qtty : la quantitat de cartes que tirarà cada jugador, un número entre 1 i 5.

El programa haurà de complir els següents requisits:
• En el cas que type tingui un valor diferent als previstos, es mostrarà la
baralla espanyola.
• En el cas que qtty tingui un valor fora de l'interval marcat pels números 1 i 5,
es tiraran 5 cartes per jugador.
.

6
•
•

•

Al final mostrarà el missatge "First player wins!", "Second player wins!" o
"Dead head!", segons hagi guanyador o hagin empatat.
Podeu comprovar el funcionament a:
http://prog.uoc.edu/pac1/pac1_exer5.php?type=n&qtty=5
Amb els fitxers de l’enunciat, es faciliten 80 fitxers d’imatge en format png
corresponents a les cares de les cartes espanyoles i napolitanes.

7
•

Cal que feu servir la plantilla pac1_exer5_plantilla.php per construir el
programa en PHP i li canvieu el nom al fitxer a pac1_exer5.php

Indicacions
• No oblideu posar el nom de l'estudiant en la línia 12 de la plantilla.
• Els fitxers d’imatge s’han d’ubicar a la mateixa carpeta on estigui el fitxer php i
no es poden canviar de nom.
• No es demana especialment en l'enunciat però es considerarà positivament
que els caràcters e o n puguin ser introduïts indistintament en majúscula o
minúscula.
A tenir en compte
• Cal observar els noms que han rebut els fitxers d’imatge:
o El noms dels fitxers de les cartes espanyoles comencen per e i els de les
napolitanes per n.
o Un mateix número correspon a la mateixa carta en els dos jocs. Per
exemple, les imatges e15.png i n15.png corresponen al 6 de copes
o Cada desena de cartes correspon a un pal de la baralla i, en la desena, les
cartes estan ordenades per valor creixent.
o Per a les cartes amb valor entre 1 i 7, la xifra del nom del fitxer que indica les
unitats es correspon al valor de la carta disminuït en 1. Per exemple, les
imatges que acaben en 3 tenen el valor 4.
• La sortida estàndard de PHP és l’escriptura d’un fitxer de text (html). Es pot
construir el nom d’un fitxer d’imatge, a base de concatenar les seves parts. Per
exemple, els codis equivalents donen com sortida e12.png
$a = “e”;
$b = 12;
print “$a$b.png”;

•

•

•

$a = “e”;
$b = 12;
print $a.$b.”.png”;1

Per triar aleatòriament el número corresponent a una carta, es farà servir la
funció rand2(min, max) que rep dos nombres enters (min i max) i retorna un
número enter entre ells, ambdós inclosos: Per al nostre cas, les crides a rand
hauran de dur els paràmetres 0 i 39, atès que els números de les cartes es
troben en aquest interval.
Per obtenir la darrera xifra d’un número, es farà servir l’operador % (mod3). Per
exemple, si la variable $n té el valor 12, la instrucció $x = $n % 10; deixa en la
variable $x el valor 2. Si $n tingués el valor 34, llavors emmagatzemaria en $x
el valor 4, és a dir, el residu de dividir $n per 10.
Per obtenir el caràcter en minúscula corresponen a una lletra es pot fer servir la
function strtolower($cadena)4. Per exemple si la variable $a té el valor “T”, la
instrucció $m = strtolower($a); deixaria en la variable $m el caràcter “t”.
Si en $a el valor emmagatzemat hagués estat “t”, en $m també s’hagués desat
“t”.

1

Cal diferenciar l’operador punt (.) de concatenació, del caràcter punt a l’interior d’una cadena.
Recordeu que les cadenes han d’estar delimitades entre cometes o apòstrofs. En la instrucció
print $a.$b.”.png”; els dos primers punts són operadors de concatenació mentre que el
tercer és el caràcter punt que formarà part del nom del fitxer per separar nom d’extensió
2
http://php.net/manual/es/function.rand.php
3
http://www.php.net/manual/es/language.operators.arithmetic.php
4
http://www.php.net/manual/es/function.strtolower.php

8
Copieu aquí el codi de la vostra solució
<?php
//data input
$prefixImg = $_GET["type"];
$prefixImg = strtolower($prefixImg); //converts type in lowercase
$cardsQtty = $_GET["qtty"];
//data input control
if (($cardsQtty < 1)||($cardsQtty > 5)) $cardsQtty = 5;
if ($prefixImg != "n") $prefixImg = "e";
// init scores
$valMax1 = -1;
$valMax2 = -1;
//first player
print "<h4> First Player </h4>";
for ($i=0; $i<$cardsQtty; $i++)
{
$actualCard = rand(0,39);
print "<img src='".$prefixImg.$actualCard.".png'>";
$actualValue = $actualCard % 10 + 1;
if ($actualValue > 7) $actualValue = 10;
$valMax1 = max($valMax1, $actualValue);
}
print "<br /> Max score: $valMax1; <br />";
//second player
print "<h4> Second Player </h4>";
for ($i=0; $i<$cardsQtty; $i++)
{
$actualCard = rand(0,39);
print "<img src='".$prefixImg.$actualCard.".png'>";
$actualValue = $actualCard % 10 + 1;
if ($actualValue > 7) $actualValue = 10;
$valMax2 = max($valMax2, $actualValue);
}
print "<br /> Max score: $valMax2; <br />";
//Final result
if ($valMax1 > $valMax2) print "<h3> First player wins! </h3>";
else if ($valMax2 > $valMax1) print "<h3> Second player wins! </h3>";
else print "<h3>Dead head</h3>";
?>

9
Exercici 6: Problema, algorisme i programa en PHP [20%]
Tasca: Simular una sessió d’un jugador en una màquina escurabutxaques.
El programa rep a la crida una dada, de nom
capital, un número enter que indica de
quants diners es disposa quan es va a
començar a jugar.
La crida ser
http://localhost/pac1_exer6.php?capital=3
El joc implica una quantitat variable de
partides. S’aturarà bé quan el jugador es
quedi sense capital o bé quan hagi guanyat i
iguali o ultrapassi el doble del capital inicial
(en la imatge d’exemple el capital inicial és 1
i el joc finalitza perquè el capital del jugador
arriba a 2.5)
Cada aposta té el valor determinat per la
constant que es definirà amb el nom BET i
el valor 0.5.
En iniciar el joc es mostrarà el capital inicial
i, a cada tirada el número de jugada, les tres
figures obtingudes, el guany de la tirada i el
capital total després d’haver pagat l’aposta i,
en el seu cas, de cobrar els guanys.
En finalitzar el joc es mostrarà un missatge
que indiqui el motiu, per haver perdut tots
els diners o per haver guanyat massa.
La taula de premis serà la següent:
Combinació

Premi

Tres cops la figura
Tres figures iguals (llevat de
Dos cops la figura
Dos cops una altra figura
Tres figures diferents

100 cops l’aposta
)

6 cops l’aposta
4 cops l’aposta
2 cops l’aposta
0

Es pot comprovar el funcionament a:
http://prog.uoc.edu/pac1/pac1_exer6.php?capital=3
El programa s'escriurà a la plantilla pac1_exer6_plantilla.php que es canviarà de nom
a pac1_exer6.php pel lliurament
Indicacions:
•

No oblideu posar el nom de l'estudiant en la línia 12 de la plantilla.
10
•

Es faciliten les 9 imatges per mostrar les figures

•

Els fitxers d’imatge s’han d’ubicar a la mateixa carpeta on estigui el fitxer php i no es
poden canviar de nom.

•

Les tres imatges que han de sortir en cada tirada es triaran a l’atzar.

A tenir en compte
• Per declarar una variable amb nom, en php es fa servir la funció
define($name,$value)5. Per exemple define(“PI”, 3.14); crea la constant PI
a la qual se li associa el valor 3.14
•

A diferencia de l’exercici anterior, els noms dels fitxers no segueixen cap norma
especial.

•

La funció rand (min, max)6 que ja s’ha fet servir en l’exercici anterior és molt útil per
generar valors aleatoris, però només ho fa amb números, de manera que
s’aconsella fer servir rand per generar números aleatoris entre 1 i 9 i programar el
segment de programa que triï la imatge a mostrar en funció del número (per
exemple 1→banana, 2→bell, etc. Si es dóna a la figura
el valor més alt, es
poden simplificar algunes condicions de les que regeixin les composicions
d’accions.

•

No oblideu que a cada tirada el capital s’ha de disminuir en el valor de l’aposta,
independentment de si després es guanya o no.

•

A les proves de programació s’aconsella emprar un capital petit (2, 3)
d’evitar l’ús enutjós del scroll del navegador per arribar al missatge final.

5
6

per tal

http://www.php.net/manual/es/function.define.php
http://php.net/manual/es/function.rand.php

11
Copieu aquí el codi de la vostra solució
<?php
define ( "BET", 0.5);
$initCap = (int)$_GET["capital"];
$actualCap = $initCap;
$game = 0;
print "<h3>Initial Capital: $initCap </h3>";
//print "<h3>Actual Capital: $actualCap </h3>";
while (($actualCap >= BET) && ($actualCap < $initCap * 2))
{
$one = rand(1,9);
$two = rand(1,9);
$three = rand(1,9);
$game++;
print "<h3> Game $game </h3>";
for ($i=0; $i<3; $i++)
{
// select throw
if ($i == 0) $test = $one;
else if ($i == 1) $test = $two;
else $test = $three;
// select img name
switch ($test)
{
case 1: $image = "banana"; break;
case 2: $image = "bell"; break;
case 3: $image = "grape"; break;
case 4: $image = "lemon"; break;
case 5: $image = "orange"; break;
case 6: $image = "peach"; break;
case 7: $image = "plum"; break;
case 8: $image = "watermelon"; break;
case 9: $image = "seven";
}// del switch

12
print "<img src='$image.png'>";
}// del for
$gain = 0;
if (($one == $two) && ($one == $three))
{
if ($one == 9) $gain = BET * 100;
else $gain = BET * 6;
}
else if (($one == $two) || ($one == $three) || ($two == $three))
{
if (($one + $two == 18) || ($one + $three == 18) || ($two + $three == 18)) $gain = BET * 4;
else $gain = BET * 2;
}
$actualCap += ($gain - 0.5);
print "<br />Gain: <b>$gain</b>. Actual capital:= $actualCap";
}//del while
print "<h3>";
if ($actualCap >= $initCap) print "You Win";
else print "You lost";
print " to much.</h3>";
?>

13

Weitere ähnliche Inhalte

Was ist angesagt?

Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - 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
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel OrtizArdillita Trepadora
 
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Paquita Ribas
 
Mates codificacio criptografia_compressio
Mates codificacio criptografia_compressioMates codificacio criptografia_compressio
Mates codificacio criptografia_compressioPaquita Ribas
 
Algorismes
AlgorismesAlgorismes
Algorismesmferre7
 

Was ist angesagt? (13)

Prog_pac2
Prog_pac2Prog_pac2
Prog_pac2
 
Prog_pac1
Prog_pac1Prog_pac1
Prog_pac1
 
Prog_pac3
Prog_pac3Prog_pac3
Prog_pac3
 
Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia Bria
 
Prog_prac1
Prog_prac1Prog_prac1
Prog_prac1
 
Prog_prac2
Prog_prac2Prog_prac2
Prog_prac2
 
PW_pac1
PW_pac1PW_pac1
PW_pac1
 
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
 
| PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio | PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz
 
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
 
Mates codificacio criptografia_compressio
Mates codificacio criptografia_compressioMates codificacio criptografia_compressio
Mates codificacio criptografia_compressio
 
Algorismes
AlgorismesAlgorismes
Algorismes
 

Andere mochten auch

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 BriaLidia Bria
 
Ejercicios de algoritmos
Ejercicios de algoritmosEjercicios de algoritmos
Ejercicios de algoritmosjhonshebax
 
21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltos21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltosRoldan El Gato
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de AlgoritmosPepe Xdsasda
 

Andere mochten auch (6)

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
 
Ejercicios de algoritmos
Ejercicios de algoritmosEjercicios de algoritmos
Ejercicios de algoritmos
 
Solución de problemas con algoritmos
Solución de problemas con algoritmosSolución de problemas con algoritmos
Solución de problemas con algoritmos
 
Algoritmos ejemplos
Algoritmos ejemplosAlgoritmos ejemplos
Algoritmos ejemplos
 
21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltos21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltos
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
 

Ähnlich wie 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 BriaLidia Bria
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - 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
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia 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
 
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
 
Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Joan Ignasi
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaLidia Bria
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaLidia Bria
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinadesceedukat
 
Tema 2 Representació de la informació
Tema 2   Representació de la informacióTema 2   Representació de la informació
Tema 2 Representació de la informacióJoaquim Salvi
 
Dossier Refredament Substancies
Dossier Refredament SubstanciesDossier Refredament Substancies
Dossier Refredament SubstanciesAgustí Estévez
 
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 BriaLidia Bria
 
T4 5-fracciones i operacions-repàs final-curs15-16
T4 5-fracciones i operacions-repàs final-curs15-16T4 5-fracciones i operacions-repàs final-curs15-16
T4 5-fracciones i operacions-repàs final-curs15-166sise
 
Sol exfinal14v2
Sol exfinal14v2Sol exfinal14v2
Sol exfinal14v2adilupc
 

Ähnlich wie Programació - Pac1 - Solució - Lídia Bria (20)

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àctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - 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
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia 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ó - 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
 
Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia Bria
 
PW_pac2
PW_pac2PW_pac2
PW_pac2
 
YDC_pract1
YDC_pract1YDC_pract1
YDC_pract1
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia Bria
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinades
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
Tema 2 Representació de la informació
Tema 2   Representació de la informacióTema 2   Representació de la informació
Tema 2 Representació de la informació
 
Dossier Refredament Substancies
Dossier Refredament SubstanciesDossier Refredament Substancies
Dossier Refredament Substancies
 
Img1
Img1Img1
Img1
 
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
 
T4 5-fracciones i operacions-repàs final-curs15-16
T4 5-fracciones i operacions-repàs final-curs15-16T4 5-fracciones i operacions-repàs final-curs15-16
T4 5-fracciones i operacions-repàs final-curs15-16
 
Sol exfinal14v2
Sol exfinal14v2Sol exfinal14v2
Sol exfinal14v2
 

Mehr von 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 BriaLidia 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 3DLidia Bria
 
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 BriaLidia 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 3DBLidia Bria
 
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 BriaLidia 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 BriaLidia 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 BriaLidia Bria
 
Gràfics 3D - Pac01 - Lidia Bria
Gràfics 3D - Pac01 - Lidia BriaGràfics 3D - Pac01 - Lidia Bria
Gràfics 3D - Pac01 - Lidia BriaLidia 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 BriaLidia 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 BriaLidia 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 BriaLidia 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 BriaLidia 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 BriaLidia 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 BriaLidia 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 BriaLidia Bria
 
Vídeo - Ps - Lídia Bria
Vídeo - Ps - Lídia BriaVídeo - Ps - Lídia Bria
Vídeo - Ps - Lídia BriaLidia Bria
 
Programació - Exàmen - Lidia Bria
Programació - Exàmen - Lidia BriaProgramació - Exàmen - Lidia Bria
Programació - Exàmen - Lidia BriaLidia 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 BriaLidia 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 BriaLidia Bria
 
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 BriaLidia Bria
 

Mehr von Lidia Bria (20)

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 - 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
 
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
 
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
 
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
 
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
 
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 - 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
 
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
 

Kürzlich hochgeladen

XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxCRIS650557
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfErnest Lluch
 
Creu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatCreu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatLourdes Escobar
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,Lasilviatecno
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfErnest Lluch
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATLasilviatecno
 

Kürzlich hochgeladen (8)

HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdfHISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
 
Creu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatCreu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitat
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
 
itcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldaduraitcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldadura
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdf
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
 

Programació - Pac1 - Solució - Lídia Bria

  • 1. Estudis d’Informàtica, Multimèdia i Telecomunicació Programació PAC1 — Document d’enunciats Estudiant SOLUCIÓ 1
  • 2. Exercici 1: Tipus i expressions [20%] Tasca: Donades les següents definicions de tipus, constants i variables const ICONSTA : enter = 5; RCONSTA : real = 12.6; fconst var i, j, k: enter; x, y, z: real; a, b, c: caràcter; t, u: cadena; b1, b2: booleà; fvar a) Avalueu les següents expressions amb potencials conflictes de tipus. Si l’expressió és correcta digueu quin seria el tipus resultant d’avaluar-la. Si l’expressió és incorrecta indiqueu l’error detectat. (recordeu que l'operador = és de relació): i) x * RCONSTA div j Incorrecta, el resultat de multiplicar els dos primers operands és real i no es pot aplicar la divisió entera ii) realToInteger(y) div x Incorrecta. x és real i no pot ser operand de l’operador div iii) b ≠ t o integerToReal(j div k) < y / 22.0 Incorrecta. Es compara un caràcter (b) amb una cadena (t) iv) charToCode(c) div realToInteger(x / 12.2) Correcta. El resultat serà enter b) Creeu les següents expressions v) Expressió que digui si el codi del caràcter a té una valor superior a 100 i al valor de x charToCode(a) > 100 i charToCode(a) > (realTointeger (x)) vi) Expressió que digui si b1 conté el resultat de saber si el contingut de la variable z correspon al producte de les variables x i y. b1 = (z = x * y) 2
  • 3. Exercici 2: Avaluació d’expressions [10%] Tasca: Donades les definicions de constants, tipus i variables de l’exercici 1 i suposant que les variables tenen els valors següents: i:=2, j:=4, k:=12, x:=0.75, y:=0.1, z:=1.0 a:=’c’, c:=’a’, t:=”aloha”, u:=”alelle”, b1:=fals, b2:=cert b:=’Z’, Avalueu el resultat de les expressions següents: a) realToInteger (RCONSTA / x) mod k realToInteger(12.6 / 0.75) mod 12 realToInteger(16.8) mod 12 16 mod 12 4 b) k div j > i o t < u 12 div 4 > 2 o “alhoa” < “alelle” 3 > 2 o “alhoa” < “alelle” cert o “alhoa” < “alelle” cert o fals cert c) realToInteger (z + x / y ) div ICONSTA = k div j - i realToInteger (1.0 + 0.75 / 0.1) div 5 = 12 div 4 - 2 realToInteger (1.0 + 7.5) div 5 = 12 div 4 - 2 realToInteger (8.5) div 5 = 12 div 4 - 2 8 div 5 = 12 div 4 - 2 1 = 12 div 4 - 2 1=3–2 1=1 cert d) a ≠ ‘a’ = b2 = ((i + j) * i = k) ‘c’ ≠ ‘a’ = cert = ((2 + 4) * 2 = 12) ‘c’ ≠ ‘a’ = cert = (6 * 2 = 12) ‘c’ ≠ ‘a’ = cert = (12 = 12) ‘c’ ≠ ‘a’ = cert = cert cert = cert = cert cert = cert cert e) integerToReal(ICONSTA) * RCONSTA / x + integerToReal (k) integerToReal (5) * 12.6 / 0.75 + realToInteger (12) 5.0 * 12.6 / 0.75 + realToInteger (12) 5.0 * 12.6 / 0.75 + 12.0 63.0 / 0.75 + 12.0 84.0 + 12. 0 96.0 3
  • 4. Exercici 3: Declaració de variables i especificació [10%] Tasca: Declareu les variables necessàries i doneu les especificacions d’un algorisme que resolgui els problemes següents (no s'ha d'escriure l'algorisme): En concret, es demana que definiu les variables necessàries per representar les dades del problema (apartat var…fvar d’un algorisme) i que doneu la precondició i la postcondició. a) Es desitja calcular a quina distancia ha recorregut un objecte que anava a velocitat constant (en km/h) coneixent les hores, minuts i segons que ha durat el moviment. var h, m, s: enter; vel, dist : real; fvar {PRE: vel = V i h = H i m = M i s = S } calculaDistancia; {POST: dist = vel * (H + M / 60 + S / 3600)} b) Que donada la superfície de la cara d’un cub, digui quin és el seu costat i quin el seu volum. var sup, side, vol : real; fvar {PRE: sup = S} costatVolumCub; 2 3 {POST: side = √S i vol = side } c) Que donada una cadena de text recompti els espais en blanc i els guions que conté var text : cadena; space, hyphen : enter; fvar {PRE: text = T} recomptaEspaisGuions; {POST: space = quantitat d’espais en blanc que conté T hyphen = quantitat de guions que conté T } 4
  • 5. Exercici 4: Comprensió i seguiment d’algorismes [20%] Tasca: Donat el següent algorisme, algorisme estrany var n, c, result : enter; fvar n := readInteger(); mentre (n > 9) fer c := 0; mentre (n > 0) fer c := c + n mod 10; n := n div 10; fmentre n := c; fmentre si n > 5 llavors n := 9 – n; sino n := 2 * n; fsi writeInteger(n); falgorisme digueu què escriurà en el cas de les següents entrades Entrada 17 21 706 12580 999999 Escriptura 1 6 8 2 0 5
  • 6. Exercici 5: Problema, algorisme i programa en PHP [20%] Tasca: Implementar una peculiar versió del joc de cartes de la carta més alta entre dos jugadors que trien cadascun una determinada quantitat de cartes (entre 1 i 5). La puntuació que s'assigna a cada jugador és el valor de la de la carta més alta que han tret segons la següent puntuació de les cartes: Cartes 1a7 Sota, Cavall i Rei Valor La puntuació nominal de la carta 10 punts La crida tindrà la forma http://localhost/pac1_exer5.php?type=A&qtty=n on • type : és un caràcter que indicarà quin tipus de carta es vol mostrar: o n si es vol mostrar cartes napolitanes o e si es vol mostrar cartes espanyoles • qtty : la quantitat de cartes que tirarà cada jugador, un número entre 1 i 5. El programa haurà de complir els següents requisits: • En el cas que type tingui un valor diferent als previstos, es mostrarà la baralla espanyola. • En el cas que qtty tingui un valor fora de l'interval marcat pels números 1 i 5, es tiraran 5 cartes per jugador. . 6
  • 7. • • • Al final mostrarà el missatge "First player wins!", "Second player wins!" o "Dead head!", segons hagi guanyador o hagin empatat. Podeu comprovar el funcionament a: http://prog.uoc.edu/pac1/pac1_exer5.php?type=n&qtty=5 Amb els fitxers de l’enunciat, es faciliten 80 fitxers d’imatge en format png corresponents a les cares de les cartes espanyoles i napolitanes. 7
  • 8. • Cal que feu servir la plantilla pac1_exer5_plantilla.php per construir el programa en PHP i li canvieu el nom al fitxer a pac1_exer5.php Indicacions • No oblideu posar el nom de l'estudiant en la línia 12 de la plantilla. • Els fitxers d’imatge s’han d’ubicar a la mateixa carpeta on estigui el fitxer php i no es poden canviar de nom. • No es demana especialment en l'enunciat però es considerarà positivament que els caràcters e o n puguin ser introduïts indistintament en majúscula o minúscula. A tenir en compte • Cal observar els noms que han rebut els fitxers d’imatge: o El noms dels fitxers de les cartes espanyoles comencen per e i els de les napolitanes per n. o Un mateix número correspon a la mateixa carta en els dos jocs. Per exemple, les imatges e15.png i n15.png corresponen al 6 de copes o Cada desena de cartes correspon a un pal de la baralla i, en la desena, les cartes estan ordenades per valor creixent. o Per a les cartes amb valor entre 1 i 7, la xifra del nom del fitxer que indica les unitats es correspon al valor de la carta disminuït en 1. Per exemple, les imatges que acaben en 3 tenen el valor 4. • La sortida estàndard de PHP és l’escriptura d’un fitxer de text (html). Es pot construir el nom d’un fitxer d’imatge, a base de concatenar les seves parts. Per exemple, els codis equivalents donen com sortida e12.png $a = “e”; $b = 12; print “$a$b.png”; • • • $a = “e”; $b = 12; print $a.$b.”.png”;1 Per triar aleatòriament el número corresponent a una carta, es farà servir la funció rand2(min, max) que rep dos nombres enters (min i max) i retorna un número enter entre ells, ambdós inclosos: Per al nostre cas, les crides a rand hauran de dur els paràmetres 0 i 39, atès que els números de les cartes es troben en aquest interval. Per obtenir la darrera xifra d’un número, es farà servir l’operador % (mod3). Per exemple, si la variable $n té el valor 12, la instrucció $x = $n % 10; deixa en la variable $x el valor 2. Si $n tingués el valor 34, llavors emmagatzemaria en $x el valor 4, és a dir, el residu de dividir $n per 10. Per obtenir el caràcter en minúscula corresponen a una lletra es pot fer servir la function strtolower($cadena)4. Per exemple si la variable $a té el valor “T”, la instrucció $m = strtolower($a); deixaria en la variable $m el caràcter “t”. Si en $a el valor emmagatzemat hagués estat “t”, en $m també s’hagués desat “t”. 1 Cal diferenciar l’operador punt (.) de concatenació, del caràcter punt a l’interior d’una cadena. Recordeu que les cadenes han d’estar delimitades entre cometes o apòstrofs. En la instrucció print $a.$b.”.png”; els dos primers punts són operadors de concatenació mentre que el tercer és el caràcter punt que formarà part del nom del fitxer per separar nom d’extensió 2 http://php.net/manual/es/function.rand.php 3 http://www.php.net/manual/es/language.operators.arithmetic.php 4 http://www.php.net/manual/es/function.strtolower.php 8
  • 9. Copieu aquí el codi de la vostra solució <?php //data input $prefixImg = $_GET["type"]; $prefixImg = strtolower($prefixImg); //converts type in lowercase $cardsQtty = $_GET["qtty"]; //data input control if (($cardsQtty < 1)||($cardsQtty > 5)) $cardsQtty = 5; if ($prefixImg != "n") $prefixImg = "e"; // init scores $valMax1 = -1; $valMax2 = -1; //first player print "<h4> First Player </h4>"; for ($i=0; $i<$cardsQtty; $i++) { $actualCard = rand(0,39); print "<img src='".$prefixImg.$actualCard.".png'>"; $actualValue = $actualCard % 10 + 1; if ($actualValue > 7) $actualValue = 10; $valMax1 = max($valMax1, $actualValue); } print "<br /> Max score: $valMax1; <br />"; //second player print "<h4> Second Player </h4>"; for ($i=0; $i<$cardsQtty; $i++) { $actualCard = rand(0,39); print "<img src='".$prefixImg.$actualCard.".png'>"; $actualValue = $actualCard % 10 + 1; if ($actualValue > 7) $actualValue = 10; $valMax2 = max($valMax2, $actualValue); } print "<br /> Max score: $valMax2; <br />"; //Final result if ($valMax1 > $valMax2) print "<h3> First player wins! </h3>"; else if ($valMax2 > $valMax1) print "<h3> Second player wins! </h3>"; else print "<h3>Dead head</h3>"; ?> 9
  • 10. Exercici 6: Problema, algorisme i programa en PHP [20%] Tasca: Simular una sessió d’un jugador en una màquina escurabutxaques. El programa rep a la crida una dada, de nom capital, un número enter que indica de quants diners es disposa quan es va a començar a jugar. La crida ser http://localhost/pac1_exer6.php?capital=3 El joc implica una quantitat variable de partides. S’aturarà bé quan el jugador es quedi sense capital o bé quan hagi guanyat i iguali o ultrapassi el doble del capital inicial (en la imatge d’exemple el capital inicial és 1 i el joc finalitza perquè el capital del jugador arriba a 2.5) Cada aposta té el valor determinat per la constant que es definirà amb el nom BET i el valor 0.5. En iniciar el joc es mostrarà el capital inicial i, a cada tirada el número de jugada, les tres figures obtingudes, el guany de la tirada i el capital total després d’haver pagat l’aposta i, en el seu cas, de cobrar els guanys. En finalitzar el joc es mostrarà un missatge que indiqui el motiu, per haver perdut tots els diners o per haver guanyat massa. La taula de premis serà la següent: Combinació Premi Tres cops la figura Tres figures iguals (llevat de Dos cops la figura Dos cops una altra figura Tres figures diferents 100 cops l’aposta ) 6 cops l’aposta 4 cops l’aposta 2 cops l’aposta 0 Es pot comprovar el funcionament a: http://prog.uoc.edu/pac1/pac1_exer6.php?capital=3 El programa s'escriurà a la plantilla pac1_exer6_plantilla.php que es canviarà de nom a pac1_exer6.php pel lliurament Indicacions: • No oblideu posar el nom de l'estudiant en la línia 12 de la plantilla. 10
  • 11. • Es faciliten les 9 imatges per mostrar les figures • Els fitxers d’imatge s’han d’ubicar a la mateixa carpeta on estigui el fitxer php i no es poden canviar de nom. • Les tres imatges que han de sortir en cada tirada es triaran a l’atzar. A tenir en compte • Per declarar una variable amb nom, en php es fa servir la funció define($name,$value)5. Per exemple define(“PI”, 3.14); crea la constant PI a la qual se li associa el valor 3.14 • A diferencia de l’exercici anterior, els noms dels fitxers no segueixen cap norma especial. • La funció rand (min, max)6 que ja s’ha fet servir en l’exercici anterior és molt útil per generar valors aleatoris, però només ho fa amb números, de manera que s’aconsella fer servir rand per generar números aleatoris entre 1 i 9 i programar el segment de programa que triï la imatge a mostrar en funció del número (per exemple 1→banana, 2→bell, etc. Si es dóna a la figura el valor més alt, es poden simplificar algunes condicions de les que regeixin les composicions d’accions. • No oblideu que a cada tirada el capital s’ha de disminuir en el valor de l’aposta, independentment de si després es guanya o no. • A les proves de programació s’aconsella emprar un capital petit (2, 3) d’evitar l’ús enutjós del scroll del navegador per arribar al missatge final. 5 6 per tal http://www.php.net/manual/es/function.define.php http://php.net/manual/es/function.rand.php 11
  • 12. Copieu aquí el codi de la vostra solució <?php define ( "BET", 0.5); $initCap = (int)$_GET["capital"]; $actualCap = $initCap; $game = 0; print "<h3>Initial Capital: $initCap </h3>"; //print "<h3>Actual Capital: $actualCap </h3>"; while (($actualCap >= BET) && ($actualCap < $initCap * 2)) { $one = rand(1,9); $two = rand(1,9); $three = rand(1,9); $game++; print "<h3> Game $game </h3>"; for ($i=0; $i<3; $i++) { // select throw if ($i == 0) $test = $one; else if ($i == 1) $test = $two; else $test = $three; // select img name switch ($test) { case 1: $image = "banana"; break; case 2: $image = "bell"; break; case 3: $image = "grape"; break; case 4: $image = "lemon"; break; case 5: $image = "orange"; break; case 6: $image = "peach"; break; case 7: $image = "plum"; break; case 8: $image = "watermelon"; break; case 9: $image = "seven"; }// del switch 12
  • 13. print "<img src='$image.png'>"; }// del for $gain = 0; if (($one == $two) && ($one == $three)) { if ($one == 9) $gain = BET * 100; else $gain = BET * 6; } else if (($one == $two) || ($one == $three) || ($two == $three)) { if (($one + $two == 18) || ($one + $three == 18) || ($two + $three == 18)) $gain = BET * 4; else $gain = BET * 2; } $actualCap += ($gain - 0.5); print "<br />Gain: <b>$gain</b>. Actual capital:= $actualCap"; }//del while print "<h3>"; if ($actualCap >= $initCap) print "You Win"; else print "You lost"; print " to much.</h3>"; ?> 13