Diferència entre revisions de la pàgina «M3 - Programació estructurada / Pràctiques UF2: Pt3»

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «1. Torres de Hanoi (amb N introduïda per l’usuari com a paràmetre). S’ha d’anar visualitzant la solució per pantalla. 2. Escriure una funció recursiva que d...».)
 
Línia 1: Línia 1:
1. Torres de Hanoi (amb N introduïda per l’usuari com a paràmetre). S’ha d’anar visualitzant la solució per pantalla.
+
==Buscamines==
  
2. Escriure una funció recursiva que donat un número N (N ≥ 0) passat com a paràmetre calculi la suma de tots els números enters fins a N inclòs.
+
Cal dissenyar i implementar el joc del “Buscamines”, tenint en compte les següents consideracions:
  
3. Escriure una funció recursiva que calculi el resultat de X elevat a N amb N >0, sabent que X0 = 1.
+
'''Introducció'''
  
4. Escriu una funció recursiva per calcular la suma digital d’un número natural. Per exemple, la suma digital de 18624 és: 4 + 2 + 6 + 8 + 1 = 21
+
L'objectiu del Buscamines és trobar totes les mines el més aviat possible, sense descobrir cap. Si es descobreix una mina, es perdrà la partida. Depenent del tauler que triï el jugador, es repartiran pel tauler un nombre de mines:
  
5. Dissenyeu un algoritme recursiu que calculi el màxim comú divisor de dos enters positius, sabent que :
+
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
<pre>
+
! align="left" width="100 px" style="background:Lavender; color:Black"|Column_Name
    MCD( X, Y) = MCD (X-Y, Y) SI X > Y
+
! width="80 px" |MEMBER_ID
    MCD (X, Y-X) SI Y > X
+
! width="80 px" |LAST_NAME
    X SI X = Y
+
! width="80 px" |FIRST_NAME
</pre>
+
! width="80 px" |ADDRESS
6. Fes la funció recursiva '''float SumaHarmonica''' ( int n ) que retorna la suma :
+
! width="80 px" |CITY
<pre>
+
! width="80 px" |PHONE
    1 + 1/2 +1/3 + ... + 1/n
+
! width="80 px" |JOIN_DATE
</pre>
+
|-
7. Fes una funció recursiva que vaig imprimint la descomposició factorial d’un número enter.
+
! align="left" style="background:Lavender; color:Black"|Key Type
 +
| PK|| || || || || ||
 +
|-
 +
! align="left" style="background:Lavender; color:Black"|Null / Unique
 +
|NN,U||NN|| || || || ||NN
 +
|-
 +
! align="left" style="background:Lavender; color:Black"|Default Value
 +
| || || || || || ||System Date
 +
|-
 +
! align="left" style="background:Lavender; color:Black"|Data Type
 +
| Number||Char||Char||Char||Char||Char||Date
 +
|-
 +
! align="left" style="background:Lavender; color:Black"|Length
 +
| 10||25||25||100||30||15||
 +
|}
  
8. Fes una funció recursiva booleana que donats un número i un dígit retorni si aquest dígit pertany al número. Per exemple existeix (1234,3) → true, existeix (1234,7) → false
 
  
9. Fes una funció que calculi el producte segons el mètode rus que diu que:
 
<pre>
 
    x*y = ((2*x) *(y/2)) SI y es parell
 
    x*y =((2*x) *(y/2))+ x SI y és senar.
 
  
    Quan y val 1, el resultat és x.
+
10x10
</pre>
+
15x15
 
+
20x20
10. Fes una funció recursiva que ompli un tauler n-goro. Un tauler n-goro és una matriu de n files i n+1 columnes que s'omple consecutivament en diagonal i quan ens sortim per una banda entrem per l'altra. L'últim element que s'omple serà l'extrem inferior dret.
+
10 mines
<pre>
+
15 mines
    Per exemple amb n=3
+
20 mines
 
+
El joc comença demanant a l’usuari quin tipus de tauler vol.
      1 10 7 4
+
A partir d’aquí és
      5 2 11 8
+
col·loquen les mines i es mostra el tauler :
      9 6 3 12
+
El símbol # indica que la casella no s’ha descobert
 
+
El símbol X indicarà que s’ha marcat una mina
    Amb n = 4
+
A partir d’aquí comença a jugar indicant si vol marcar (‘M’) o descobrir (‘D’) i a quina
 
+
posició (fila, columna)
      1 17 13 9 5
+
En el cas que es descobreixi una casella que no tingui una mina s’haurà de:
      6 2 18 14 10
+
* Si la casella no està contigua a cap mina, descobrir-se totes les caselles que estan
      11 7 3 19 15
+
buides i contigües a la casella descoberta (aquesta haurà de ser una funció recursiva,
      16 12 8 4 20
+
donat que al descobrir una casella s’haurà de tornar a executar per a totes les adjacents)
 +
*
 +
Si la casella està contigua a alguna mina, indicar el nombre de mines que té
 +
aquesta casella a la seva al voltant.Si es descobreix una casella que conté una mina, el joc ha de finalitzar.
 +
Al final de la partida se li mostrarà el temps que ha fet.
 +
Per a fer-ho cal utilitzar el següent codi:
 +
Quan comenci a jugar, guardar l'hora actual:
 +
long inici = System.currentTimeMillis();
 +
Quan acabi de jugar, guardar l'hora actual:
 +
long fi = System.currentTimeMillis();
 +
I fer la resta. Cal tenir present que el temps està donat en mil·lisegons i per tant per
 +
mostrar els segons de joc cal dividir per 1000.
 +
Ha de donar també la possibilitat de tornar a començar la partida.
 +
Possibles millores
 +
 Oferir la possibilitat de desmarcar una mina
 +
 Poder interrompre el joc durant la partida i no haver d’esperar al final per sortir
 +
del programa
 +
 +
Mostrar una pantalla inicial d’Ajut /Introducció al joc, en la qual s’expliqui
 +
l’objectiu i el funcionament del joc

Revisió del 10:38, 7 maig 2018

Buscamines

Cal dissenyar i implementar el joc del “Buscamines”, tenint en compte les següents consideracions:

Introducció

L'objectiu del Buscamines és trobar totes les mines el més aviat possible, sense descobrir cap. Si es descobreix una mina, es perdrà la partida. Depenent del tauler que triï el jugador, es repartiran pel tauler un nombre de mines:

Column_Name MEMBER_ID LAST_NAME FIRST_NAME ADDRESS CITY PHONE JOIN_DATE
Key Type PK
Null / Unique NN,U NN NN
Default Value System Date
Data Type Number Char Char Char Char Char Date
Length 10 25 25 100 30 15


10x10 15x15 20x20 10 mines 15 mines 20 mines El joc comença demanant a l’usuari quin tipus de tauler vol. A partir d’aquí és col·loquen les mines i es mostra el tauler : El símbol # indica que la casella no s’ha descobert El símbol X indicarà que s’ha marcat una mina A partir d’aquí comença a jugar indicant si vol marcar (‘M’) o descobrir (‘D’) i a quina posició (fila, columna) En el cas que es descobreixi una casella que no tingui una mina s’haurà de:

  • Si la casella no està contigua a cap mina, descobrir-se totes les caselles que estan

buides i contigües a la casella descoberta (aquesta haurà de ser una funció recursiva, donat que al descobrir una casella s’haurà de tornar a executar per a totes les adjacents)

Si la casella està contigua a alguna mina, indicar el nombre de mines que té aquesta casella a la seva al voltant.Si es descobreix una casella que conté una mina, el joc ha de finalitzar. Al final de la partida se li mostrarà el temps que ha fet. Per a fer-ho cal utilitzar el següent codi: Quan comenci a jugar, guardar l'hora actual: long inici = System.currentTimeMillis(); Quan acabi de jugar, guardar l'hora actual: long fi = System.currentTimeMillis(); I fer la resta. Cal tenir present que el temps està donat en mil·lisegons i per tant per mostrar els segons de joc cal dividir per 1000. Ha de donar també la possibilitat de tornar a començar la partida. Possibles millores  Oferir la possibilitat de desmarcar una mina  Poder interrompre el joc durant la partida i no haver d’esperar al final per sortir del programa  Mostrar una pantalla inicial d’Ajut /Introducció al joc, en la qual s’expliqui l’objectiu i el funcionament del joc