Dos ejercicios con todo lo visto hasta ahora: variables, operadores, texto, if, match y ??. Son del estilo de la prueba: un archivo .php que se ejecuta en la terminal con php archivo.php y tiene que imprimir exactamente la salida indicada.

Cómo trabajarlos

Resuelve cada uno antes de abrir la solución. Cuando funcione con los valores del enunciado, cambia las variables y prueba los otros casos: un programa que solo funciona con un ejemplo no está terminado.

Ejercicio 1. Valor de la entrada

Un cine calcula el valor de una entrada con tres variables:

<?php
$edad = 20;
$esEstudiante = true;
$dia = 3; // 1 = lunes … 7 = domingo

Las reglas:

CasoPrecio
Menor de 12 años o de 65 años o más$3.000
Estudiante (y no está en el caso anterior)$3.500
Cualquier otra persona$5.500
  • Los miércoles se descuenta un 20% del precio.
  • Si la edad es menor que 0 o mayor que 120, el programa imprime solo Edad no válida.
  • Los montos se muestran con punto de miles: $5.500.

Salida con los valores de arriba:

Precio base: $3.500
Descuento de miércoles: $700
Total: $2.800

Con $edad = 70, $esEstudiante = true y $dia = 5 (la línea del descuento no aparece):

Precio base: $3.000
Total: $3.000

Pista

Una persona de 70 años que además es estudiante paga $3.000, no $3.500. Piensa en qué orden van las condiciones, como en el orden de las condiciones.

Ejercicio 2. Ficha de notas

Con estas variables:

<?php
$nombre = null;
$nota1 = 5.5;
$nota2 = 4.8;
$nota3 = 5.4;
$asistencia = 70; // porcentaje

El programa imprime la ficha del estudiante:

  • Si $nombre no tiene valor, se muestra Sin nombre.
  • El promedio de las tres notas, redondeado a un decimal y con coma.
  • El concepto según el promedio: Excelente (6,0 o más), Bueno (5,0 o más), Suficiente (4,0 o más) o Insuficiente.
  • La situación:
    • Aprobado si el promedio es 4,0 o más y la asistencia es 75 o más.
    • Reprobado por asistencia si el promedio alcanza pero la asistencia no.
    • Reprobado por nota en cualquier otro caso.
  • Si alguna nota es menor que 1,0 o mayor que 7,0, imprime solo Hay una nota fuera de rango.

Salida con los valores de arriba:

Estudiante: Sin nombre
Promedio: 5,2 (Bueno)
Situación: Reprobado por asistencia

Con $nombre = "Camila", notas 6.5, 6.0 y 6.2, y asistencia 90:

Estudiante: Camila
Promedio: 6,2 (Excelente)
Situación: Aprobado

Errores comunes

SíntomaCausaSolución
Una persona de 70 años que es estudiante paga $3.500La condición de estudiante va antes que la de edadOrdena del caso más específico al más general
El promedio de 5,5, 4,8 y 5,4 da 12,1Faltan los paréntesis: solo se dividió la última nota($nota1 + $nota2 + $nota3) / 3
Promedio: 5.2 en vez de 5,2Se imprimió el número sin formatonumber_format($promedio, 1, ",", ".")
Warning: Undefined variable $precioEl $precio se creó dentro de un if que no se ejecutóRevisa que todos los caminos le den valor, o dale uno antes