Ejercicios PHP

Ejercicio

En una urbanización respetuosa con el medio ambiente, en el sótano de cada casa hay un depósito de recogida de las aguas pluviales para aprovecharlas para regar.

El depósito tiene un volumen que depende del modelo de vivienda y el usuario tiene que tener consciencia del volumen de agua que contiene, no sea que con el agua que recoja en una lluvia desborde y empantane el garaje del chalé.

Se considera que el depósito, después de la lluvia puede estar en uno de los 4 potenciales estados:

  • SEGURO, si contiene menos del 80% de su capacidad nominal
  • ALERTA, si contiene entre el 80 y 90 % de su capacidad nominal
  • PELIGRO, si contiene entre el 90 y el 100% de su capacidad nominal
  • DAÑOS EXTREMOS, si llega a contener más del 100% de la capacidad nominal

Nos encomiendan crear un programa que reciba como datos la previsión de lluvia (en litros/m2) y que tan pleno está el depósito (en porcentaje) y nos informe de:

  • La cantidad de agua que hay al depósito antes de llover
  • La cantidad total de litros que caerán al tejado
  • La cantidad de litros totales que podría haber al depósito después de llover
  • El estado en que quedará el depósito. En el supuesto de que quede en estado seguro se indicará que se está en zona segura. En cualquier de los otros estados se indicará el estado y qué es la cantidad de agua a desaiguar previamente para quedar en estado seguro.

Ejemplo: El depósito tiene una capacidad nominal de 12000 litros, el tejado de la casa una superficie de 125 m2, se prevé una lluvia de 15 litros/m2 y el depósito está al 75% de su capacidad nominal el resultado sería:

DANGER

Porque el depósito contiene inicialmente 9000 litros (el 75% de 12000)
Lloverá sobre el tejado 1875 litros ( 125 m2 15 l/m2)
La cantidad total de agua para el depósito será 10875 litros (9000 + 1875)
Lo cual trae a un estado de Peligro (por encima de 10800 litros, el 90% de 12000)
Y se tendrá que desaiguar 1275 litros para quedar en situación segura (9600 litros, el 80% de 12000).

El llamamiento tendrá la forma lluvia.php?rain=15&filled=75

Ver ejercicio resuelto
  • rain : es un número que indica la lluvia prevista en litros por metro cuadrado
  • filled : indica qué tan pleno está el depósito (en porcentaje) .

Ejercicio

Vamos a simular el desplazamiento de un objeto esférico dentro de un tablero cuadriculado con movimientos rectilíneos y rebotando al llegar a cualquier margen.

El desplazamiento de la bola siguiendo un determinado itinerario

ejercicio php que usa bolasbola

se tiene que mostrar como una secuencia de imágenes con las posiciones consecutivas de la bola

ejercicio php

Tarea:

A partir de las coordenadas iniciales (initx, inity) de la bola y de la velocidad inicial (xspeed, yspeed), mostrar la secuencia de imágenes desde la posición inicial hasta que se vuelve a repetir esta posición inicial.

El llamamiento en el programa tiene que ser del tipo

index.php?initx=2&inity=3&xspeed=1&yspeed=1

Indicaciones:

  • El tablero tiene unas dimensiones de 6x5 casillas. Cada casilla viene determinada por sus coordenadas (x, y) según la imagen. La coordenada x corresponde a las posiciones horizontales y la coordenada y a las verticales. bola
  • Se facilitan las 30 imágenes correspondientes a todas las posibles posiciones de la bola. El nombre de cada fichero corresponde a las coordenadas xy de donde se encuentra la esfera.Descargar.
  • Los ficheros de imagen se tienen que ubicar en la misma carpeta donde esté el fichero php y no se pueden cambiar de nombre.
  • La bola tendrá la velocidad inicial xspeed, yspeed. xspeed corresponde a la velocidad horizontal (el sentido positivo es hacia la derecha). yspeed corresponde a la velocidad vertical (el sentido positivo es hacia abajo). bolas
  • Tanto las velocidades vertical como horizontal pueden tener sólo tres valores, -1, 0 y 1.
    Ejemplos:
    1. Si la bola está en la posición 3,3 y xspeed tiene el valor 1 y yspeed tiene el valor-1, se desplazará a la derecha y pasará a la posicón 4,2.
    2. Si xspeed tiene el valor 0 la bola se desplaza sólo verticalmente
    3. Si yspeed tiene el valor 0 la bola se desplaza sólo horizontalmente
  • Cuando en su desplazamiento la bola llega a uno de los lados (laterales, superior o inferior), rebota, de forma que se modifica su movimiento
    1. Si xspeed tiene el valor 1 y choca al lado derecho, xspeed pasa a valer -1
    2. Si xspeed tiene el valor -1 y choca al lado izquierdo, xspeed pasa a valer 1
    3. Si yspeed tiene el valor 1 y choca al lado inferior, yspeed pasa a valer -1
    4. Si yspeed tiene el valor -1 y choca al lado superior, yspeed pasa a valer 1
    5. Evidentemente, si choca contra un rincón, cambian de sentido las dos velocidades

Ejercicio

Leer todo el enunciado antes de comenzar a programar.

Le pasaremos a la URL dos números enteros positivos y el programa los listará en orden creciente junto con los números intermedios.

Todos los números mostrados deben cumplir las siguientes condiciones:

  • Si un número es divisible por 4, en la siguiente línea escribiremos una línea integrada por tantos números consecutivos como indique la parte de las unidades, comenzando por el número en cuestión. Además se añadirá un último número que será la suma de todos los números componentes de la lista.
    Por ejemplo, si el número es 44, se sumarán 4 números: 44, 45, 46, 47, 182
  • Si el número es divisible por 5, en la siguiente línea escribiremos una lista integrada por tantos números anteriores como indique la parte de las unidades, comenzando por el número en cuestión. Además se añadirá un último número que será el producto de los anteriores.
    Por ejemplo, si el número es 45, se multiplicarán 5 números: 45, 44, 43, 42, 41, 146611080
  • Si el número es divisible por 4 y por 5 tendrá ambos comportamientos.

Para resolver el ejercicio crearemos:

  • una función llamada divisible() que recibirá dos parámetros numéricos y devolverá true si el primer número es divisible por el segundo y false en caso contrario.
  • una función llamada suma() que recibirá un parámetro numérico n, obtendrá su última cifra e imprimirá una cadena de números consecutivos ordenados de menor a mayor y separados por un espacio en blanco. El primer número será n. Una vez terminada la lista se añadirá el texto: "suma = " seguido de la suma de todos los números anteriores.
  • una función llamada producto() que recibirá un parámetro numérico n, obtendrá su última cifra e imprimirá una cadena de números consecutivos mayor a menor y separados por un espacio en blanco. El primer número será n. Una vez terminada la lista se añadirá el texto: "producto = " seguido del producto de todos los números anteriores.

Si lo ves conveniente, puedes crear más funciones para resolver el ejercicio.

Números aleatorios

Obtener un número aleatorio: rand

Devuelve un número aleatorio que va de 7 a 15

$var = rand(7, 15);

Ejercicio

Utilizando las funciones strlen(), substr() y rand(), obtener una letra aleatoria de tu nombre.

Ejercicio mapa

Teniendo en cuenta que con el siguiente código html puedo pintar una moneda sobre en mapa en cierta posición:

<div style="width:725px; height:483px; background: url(Bluemap.jpg); margin:auto; overflow:hidden; position:relative">
	<img src="goldCoin.png" style="width:50px;position:absolute; margin-left:577px; margin-top:75px">
</div>

Pintar 10 monedas en coordenadas aleatorias sobre la superficie de un mapa.

mapa del tesoro moneda de oro

Ejercicio máquina tragaperras

El programa recibe por la url un parámetro que será un número entero llamado capital.

El juego implica una cantidad variable de partidas. El juego terminará cuando el jugador se quede sin dinero o supere el doble de la cantidad inicial de su capital.

Al iniciar el juego se mostrará el capital inicial.

En cada tirada se mostrará el número de jugada, las tres figuras obtenidas, la ganancia de la tirada y el capital total después de haber pagado/cobrado la apuesta.

La apuesta siempre será 0.5 veces el capital actual.

La tabla de premios será la siguiente:

  • Tres sietes -> 100 veces la apuesta
  • Tres figuras iguales (a excepción del siete) -> 6 veces la apuesta
  • Dos sietes -> 4 veces la apuesta
  • Dos figuras iguales (a excepción del siete) -> 2 veces la apuesta

Descargar las fotos
icono de mandar un mail¡Contacta conmigo!
contacta conmigoPablo Monteserín

¡Hola! ¿En qué puedo ayudarte?