Ejercicios Prueba 2 – Examen [PHP-Difíciles]

CLASE PHP
Ejercicios
© Nicolás Cenzano Silva
RESTAURANTES
En el Boulevard del Centro Comercial de Elbonia, los restaurantes le piden a usted crear una página
web que cumpla con las siguientes características:
Registro e inicio de sesión (login requerido)
Realizar la orden al restaurante de forma online1
Permitir que los clientes puedan ordenar varios alimentos.
Se le debe avisar al restaurante2 que órdenes ha recibido, en el orden que fueron
pedidas.
Cada usuario también desea ver su boleta donde salga el detalle de los productos
que ordenó y el total a pagar.
1Se
le entregará una lista de tamaño N con todos los restaurantes y sus cartas completas en forma de array.
Ejemplo:
$todoLosRest=array(
“El Italiano”=>array(‘Ubicación'=>"Tercer piso - Local 304“, 'Tipo de Comida'=>"Italiana", "Carta"=>
array('Ñoquis'=>7000, 'Rissoto'=>7500, ‘Provoleta’=>5000,’Turamisú’=>4000…)),
"La Tartaleta”=>array('Ubicación'=>"Primer piso - Local 132“, 'Tipo de Comida'=>"Casera","Carta"=>
array('Cazuela'=>5000, 'Ensalada Chilena'=>1500, 'Leche Asada’=>1500,’Piscola’=>2000…)),
"Santa Carne”=>array('Ubicación'=>"Tercer piso - Local 316“, 'Tipo de Comida'=>"Asados Carnes","Carta"=>
array('Entrecot'=>7000, 'Filete'=>11500, 'Malaya'=>8000,'Vino Tinto (Gran Reserva - copa)’=>4000…))
//muchos más
);
2Será la misma página pero los usuarios serán los nombres de los restaurantes y las contraseñas quedan a su libertad.
© Nicolás Cenzano Silva
MIS NOTAS
La UNE (Universidad Nacional de Elbonia) solicita su ayuda para crear un simulador de notas para sus
alumnos, para ello le piden crear una página web donde los alumnos puedan agregar sus notas1 de cada
asignatura:
Preguntarle al alumno su nombre, correo y claramente sus notas con las respectivas
asignaturas y nombre de las evaluaciones a las que pertenece.
Mostrarle al alumno sus notas, ordenadas por asignatura (alfabéticamente) con todas
las evaluaciones ingresadas con sus respectivas notas.
Además se requiere que aparezca el promedio de cada asignatura y el promedio
general2.
También se deberá mostrar una tabla resumen que indique las asignaturas y el
status3.
Finamente les dará la opción de “calcular nota”, donde los alumnos podrán ingresar
qué porcentaje vale el examen de la asignatura y si reemplaza su peor nota o no, una
vez ingresados esos datos, el programa les mostrará que nota requiere como
mínimo en el examen para aprobar el curso4.
1Los
alumnos tienen N asignaturas y M notas en cada asignatura.
2Para simplificar, se considerará que cada evaluación tiene el mismo porcentaje de ponderación. Para el cálculo de estos
promedios se exige el uso de funciones para optimizar el código (disminuir el nivel de complejidad).
3”Aprobado” en color verde si tiene promedio superior o igual a 5.45, “Pendiente de examen” de color amarillo si su promedio
es menor a 5.45 pero superior o igual a 2.95 y “Reprobado” de color rojo si tiene un promedio inferior a 2.95.
4El curso se aprueba con nota superior o igual a 3.95.
© Nicolás Cenzano Silva
ESTACIONAMIENTOS
La UNE (Universidad Nacional de Elbonia) solicita su ayuda para crear un simulador de como se
comportan los estacionamientos de la Universidad durante el día, específicamente en 3 momentos
(mañana, tarde y noche).
Los estacionamientos se pueden representar en un mapa de 8 filas y 20 columnas,
donde cada fila representa un nivel de estacionamiento (-2,-1,1,2,3…).
En la mañana (8:00 A.M), generalmente los estacionamientos se llenan entre un 50%
y un 60% de manera aleatoria1.
En la tarde (1:30 PM), es natural que entre un 15 y un 25% de los autos que estaban
estacionados en la mañana se vayan, y lleguen entre un 70 y 80% utilizando los
estacionamientos que antes estaban disponibles2.
En la noche (19:30 PM), ya se han ido entre un 60 y un 70% de los autos, mientras
que llegan solo entre un 5 y un 10% adicional.
Específicamente le piden que cree 3 tablas que representen el estado de los
estacionamientos en los tres momentos señalados con anterioridad.
*HINT* Se recomienda el uso de funciones para modelar cuando llegan y se van autos, además de la utilización de arreglos
asociativos para saber el estado actual de los estacionamientos (cual está ocupado y cual no).
1Se
recomienda utilizar una función random para generar este porcentaje de forma aleatoria, el orden de llenado es aleatorio en
la UNE, debido a que el estacionamiento tiene múltiples accesos.
2Se refiere a que se utilizan entre un 70 y un 80% de los estacionamientos que quedaban desocupados a las 8:00 AM.
© Nicolás Cenzano Silva
AJEDREZ
La UNJAE (Unión Nacional de Jugadores de Ajedrez de Elbonia) requiere de una página web que les
permita monitorear sus torneos de ajedrez, para ello le piden realizar como primera tarea un espacio
donde se pueda jugar ajedrez1, le ofrecen dos opciones:
Opción fácil: Crear un tablero donde se muestren los 64 casilleros negros y blancos
con las fichas de ajedrez en su lugar y se indique el turno de a cual jugador le toca y
un selector para que seleccione la pieza que desea mover y hacia donde. Además
debe avisar cuando un jugador está sin jugadas, avisando quien pierde y quien gana.
Opción difícil: Crear un tablero donde además de mostrar los casilleros con las fichas,
pueda hacer click en las fichas y estas muestran los casilleros a donde se pueden
mover. Además de mostrar quien gana, el programa debe ser capaz de saber cuando
no quedan jugadas disponibles y declarar el juego como “tabla” (empate). Finalmente,
se les pedirá que el programa una vez terminada la partida que muestre un cuadro
resumen de todas las jugadas realizadas en el orden que fueron ejecutadas2.
1Si
requieres información adicional de como jugar ajedrez puedes encontrarla en: http://es.wikipedia.org/wiki/Ajedrez
2Deberá aparecer la pieza que fue movida, desde donde se movió y hacia donde.
*HINT*
Se recomienda utilizar arreglos para saber que piezas quedan, cuales son destruidas, que casilleros están vacíos y cuales ocupados
(y por quién), además de la utilización de funciones para mover piezas y para determinar las jugadas permitidas.
© Nicolás Cenzano Silva
DOMINÓ
Una empresa de alimentos le pide crear una página web que permita a sus clientes jugar Dominó1
mientras están esperando a ser atendidos, para realizar esto se le pide tomar en cuenta los siguientes
requisitos:
El juego deberá comenzar con un registro de usuarios, identificando el número de
jugadores y sus nombres.
Desplegar el nombre de quién está jugando y una opción para mostrar y ocultar su
mano2.
Un botón siguiente para cambiar de jugador.
Un tablero completo donde se muestren las fichas jugadas.
Cada jugador debe ser capaz de
*Opcional*: permitir el juego de 1 vs CPU, creando un jugador ficticio que sea capaz
de jugar correctamente tomando la mejor decisión sobre cual ficha jugar para ganar.
1Si
requieres información adicional de como jugar dominó puedes encontrarla en: http://es.wikipedia.org/wiki/Dominó
2La mano serían las fichas de dominó de cada jugador.
*HINT*
Se recomienda utilizar arreglos para saber las manos de los jugadores y las fichas jugadas, además de la utilización de funciones
para agregar piezas al tablero, saber si la jugada realizada es correcta y para saber si hay o no una jugada posible.
© Nicolás Cenzano Silva