Soluciones primer boletin ejercicios IF y ELSE nivel intermedio

Soluciones de ejercicios de los condicionales IF y ELSE de nivel intermedio explicados minuciosamente.

ejercicios resueltos

Vamos allá con las soluciones a los ejercicios de nivel intermedio del primer boletín de ejercicios de condicionales de la web.

Esta es la segunda parte de las soluciones de ejercicios de condicionales. Si te gustaría ver primero los ejercicios sin resolver o las soluciones de los ejercicios de nivel principiante visita:

Teoría usada para resolver estos ejercicios nivel intermedio

Para resolver estos ejercicios deberías conocer los siguientes conceptos de teoría:

Soluciones de los Ejercicios de condicionales nivel intermedio

Solución Ejercicio 5 php de if y else 

Un cliente de un blog tiene un problema: sus lectores pueden dejar comentarios en la web, pero estos deben de ser de menos de 150 caracteres y, a menudo, cuando escriben, suelen pasarse de longitud. Debes programar un pequeño script ayudándote de la función strlen() que muestre por pantalla un mensaje de error si se pasa de largo:

  1. La variable $comentario contiene el texto del mensaje.
  2. La función strlen() nos devuelve la longitud de un texto: $caracteres = strlen($comentario);
  3. Si el usuario introduce un texto de longitud permitida habrá que indicarlo y en caso contrario mostrar un error como: La longitud máxima de los comentarios es de 150, tu comentario en cambio tiene XX caracteres.

Para resolver este ejercicios y conforme lo indica, hay que utilizar la función de PHP strlen, así que lo primero que voy a hacer será calcular la longitud del comentario introducido:

<?php
$total_letras = strlen($comentario);

Ahora que ya tengo el número de letras en una variable ya puedo condicionar los mensajes que se mostrarán por pantalla dependiendo de su valor:

if ( $total_letras <= 150 ) {
   echo 'Tu mensaje es correcto! Gracias por comentar en la web!';
} else {
  echo 'La longitud máxima de los comentarios es de 150 caracteres, tu comentario en cambio tiene ' . $total_letras . ' caracteres';
}
?>

Y ya está, gracias al mecanimos de eliminación que me ofrece el ELSE he podido evitarme la comparación $caraceteres > 150.

Solución del Ejercicio 6 de if y else en php

En este ejercicio vamos a resolver un problema surgido en una web de contenido especial, limitado a adultos no jubilados. Al usuario se le muestra por pantalla un mensaje y un campo para que introduzca su edad. Nosotros, en php, debemos de programar un algoritmo que resuelva el problema:

  • Si la edad introducida es de un menor de edad, deberemos indicar que tiene el acceso prohibido
  • Si la edad edad está por encima de los 65 le avisaremos diciéndole que el contenido, por desgracia, no es para jubilados.
  • Por último si la edad está comprendida entre 18 y 65 le daremos la bienvenida a la web con un mensaje: bienvenido a la web www.srcodigofuente.es/adultos-no-jubilados.
Ayuda del ejercicio:
  1. La edad del usuario viene dada en la variable $edadUsuario.
  2. Deberás utilizar varias condiciones en un mismo IF para poder resolverlo, deberás de ayudarte de AND u OR.
  3. Los mensajes puede ser personalizados por tí, lo importante es que los imprimas por pantalla.

Como me dicen que la edad me es accesible gracias al valor de la variable $edadUsuario, utilizaré esta variable para realizar todas las comparaciones necesarias. Dependiendo de la condición que se cumpla mostraré el mensaje correcto.

Hay una pista en la ayuda del ejercicio y a la vez un hándicap que nos obliga a utilizar una determinada estrategia, y es que indica que deberemos utilizar las sentencias AND u OR. Así, tengo que introducir varias condiciones en un IF.

Lo primero voy a descartar a los usuarios menores:

<?php
if ( $edadUsuario < 18 ) {
   echo "Lo sentimos, el contenido de esta web no es accesible a menores de edad";
}

Con este IF he solucionado el primero caso que se puede dar. Ahora me faltan dos posibilidades: que sea edad de un jubilado o correcta (entre 18 y 65). Para esto voy a plantear dos posibles soluciones:

if ( $edadUsuario >= 18 && $edadUsuario < 65 ){
   echo 'bienvenido a la web www.srcodigofuente.es/adultos-no-jubilados';
} 
if ( $edadUsuario > 65 ) {
  echo 'Lo sentimos, el contenido de esta web está restringido a jubilados';
}
?>

En esta solución en la que he optado por dos IF he resuelto el intervalo de 18 a 65 gracias a la sentencia AND (&&). En la siguiente solución voy a olvidarme de este operador lógico (el AND) y voy a anidar IF y ELSE para resolver de igual forma el problema:

<?php
if ( $edadUsuario < 18 ) {
   echo "Lo sentimos, el contenido de esta web no es accesible a menores de edad";
} else {
   if ( $edadUsuario < 65 ) {
      echo 'bienvenido a la web www.srcodigofuente.es/adultos-no-jubilados';
   } else {
      echo 'Lo sentimos, el contenido de esta web está restringido a jubilados';
   }
}
?>

En esta propuesta he aprovechado la condición implícita del else (que la edad será mayor que 18) y en su interior tan solo he tenido que comprobar si la edad está por debajo de los 65 (no jubilado y mayor que 18), y por último con un ELSE de descarte resuelvo el problema de que la edad sea igual o esté por encima de los 65 (es jubilado). 

Ejercicio 7 de if y else en php

En una aplicación web para una agencia de vuelos requieren de nuestra ayuda, necesitan un pequeño script que impida que un piloto tenga más horas de vuelo que las recomendadas. Deberemos mostrar un mensaje de error en caso de que se hayan sobrepasado las horas o, en caso contrario, incrementar el número de horas dado en la variable con las horas de vuelo del piloto. Los datos iniciales para el ejercicio son:

  1. Recibimos las horas de vuelo totales del piloto en $horasTotales.
  2. Las horas de vuelo a añadir las podremos saber con $horasVuelo.
  3. Las horas máximas de vuelo permitidas a un mismo piloto vendrán en la variable $maxHoras.

Este ejercicio es algo distinto al resto, aunque no de mayor dificultad, ya que en algún caso deberemos modificar el valor de una variable.

Lo primero es dividir el ejercicio en posibles casos:

  1. Las horas de vuelo del piloto más las nuevas horas no sobrepasan el máximo de horas permitidas.
  2. Las horas de vuelo del piloto más las nuevas sobrepasan las horas de vuelo permitidas.

Ahora sé, que para el caso 1 tendré que sumar definitivamente las nuevas horas, y en el caso 2 tendré que mostrar un mensaje de error:

<?php
if ( ( $horasTotales + $horasVuelo ) < $maxHoras ) {
   $horasTotales = $horasTotales + $horasVuelo;
} else {
   echo 'Error, el piloto no puede volar más de ' . $maxHoras . ' horas de vuelo.';
}
?>

En el primer IF he introducido el concepto de operación aritmética, algo nuevo hasta ahora en los condicionales de la web. El intérprete PHP reconoce las operaciones aritméticas, sea cuales sean, y las realiza antes de proceder a la comparación (en este caso antes de comparar con el valor de $maxHoras.

Por último, ayudándome de la condición implicita que incluye el else, es decir, lo contrario del if, he resuelto la posibilidad de que el total de horas sea mayor que las permitidas.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.