Soluciones de ejercicios IF y ELSEIF parte 2 princiantes

Soluciones de ejercicios IF, ELSE, ELSE IF para niveles principiante e intermedio. Explicaciones paso a paso

Tag PHP ejercicios resueltos Condicionales php Estructuras de control php

Soluciones al segundo boletín de ejercicios php sobre if y else if. Las soluciones son explicaciones paso a paso del script que aporta la solución a cada ejercicio.

Si no has visto el primer boletín de ejercicios de if y else y sus soluciones te animo a que los intentes:

Problemas de condicionales para principiantes

Solución de ejercicio 1 IF y ELSE

El enunciado del primer ejercicio es:

Una web española de servicios tiene un pequeño problema, quiere que indiquemos en su página de inicio el día de la semana, tarea sencilla de no ser por que el servidor nos proporciona el día en inglés mediante la función date().

Ayuda del ejercicio:

  1. La función date() con el parametro 'D' nos devuelve las tres primeras letras del día de la semana en inglés: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
  2. Con este pequeño código $dia_ingles = date('D'); tendremos el día en la variable $dia_ingles.
  3. Mostrar el día en español por pantalla con el mensaje: "El día de la semana es: XXXX".

Este ejercicio en el que aporto la ayuda necesaria para completar los conocimientos para un principiante, debemos resolver como pasar de un día de la semana en inglés y de tan solo tres letras a inglés. 

Para resolver el problema deberemos saber realizar comparaciones de variables de tipo texto, imprimir texto por pantalla y utilizar correctamente los condicionales if con sus sentencias opcionales else if y else.

¿Cómo resuelvo el ejercicio? Pues comparando una a una los siete posibles valores dela variable $dia_ingles:

<?php
$dia_ingles = date('D');
if ( $dia_ingles == 'Mon' ) {
    echo 'Lunes';
} else if ( $dia_ingles == 'Tue' ) {
   echo 'Martes';
} else if ( $dia_ingles == 'Wed' ) {
   echo 'Miércoles';
} else if ( $dia_ingles == 'Thu' ) {
   echo 'Jueves';
} else if ( $dia_ingles == 'Fri' ) {
   echo 'Viernes';
} else if ( $dia_ingles == 'Sat' ) {
   echo 'Sábado';
} else { //por descarte es domingo
   echo 'Domingo';
}
?>

Ejercicio 2 IF y ELSE IF con php

Realizar el ejercicio anterior pero mostrando el día de la semana de lunes a viernes, y para sábado y domingo mostrar el mensaje: Fin de semana.

Este ejercicio comparte el enunciado con el anterior, pero de forma sencilla nos piden un pequeño cambio, los días Sábado y Domingo compartirán el mismo mensaje: Fin de semana. La solución más sencilla será por lo tanto dejar ambas posiblidades al else:

<?php
$dia_ingles = date('D');
if ( $dia_ingles == 'Mon' ) {
    echo 'Lunes';
} else if ( $dia_ingles == 'Tue' ) {
   echo 'Martes';
} else if ( $dia_ingles == 'Wed' ) {
   echo 'Miércoles';
} else if ( $dia_ingles == 'Thu' ) {
   echo 'Jueves';
} else if ( $dia_ingles == 'Fri' ) {
   echo 'Viernes';
 
} else { //por descarte es Sábado o Domingo
   echo 'Fin de semana';
}
?>

Soluciones alternativas podrían incluir ambos resultados (Sat y Sun) en la condición de un ELSE IF unidos por un OR:

<?php
....
} else if ( $dia_ingles == 'Sat' OR $dia_ingles == 'Sun' ) {
   echo 'Fin de semana';
}
?>

Ejercicio 3 IF y ELSE IF 

Este último ejercicio para principantes es el más complejo de los tres. Repasemos que nos dice el resultado:

La tienda online tienda.srcodigofuente.es quiere realizar una mejora en el código de su web. Necesita que la web, según el importe de la cesta, muestre un mensaje u otro al usuario. En concreto quiere que:

  • Si la compra es inferior a 30 euros se le muestre un mensaje en negrita diciendo: 'Compra más o te cobraremos los abusivos 30 euros de gastos de envío'.
  • Si la compra es superior a 30 euros pero inferior a 90 deberemos mostrar un número indicando cuanto le falta para llegar a 90 euros y tener gastos de envío gratuitos. Ejemplo: '¡¡¡Con solo 33.50€ más podrás tener gastos de envío gratis!!!'
  • Si la compra alcanza los 90€ indicaremos un mensaje en negrita: 'Sí sí sí! Gastos de envío incluidos ¡Vuelve pronto!'.

Para este problema disponemos de los siguientes datos:

  1. El importe total de la cesta de la compra viene en una variable $total_compra con un número decimal positivo. Ejemplo: 33.55.
  2. Los mensajes en negrita deben utilizar la etiqueta <strong><\strong>

Para resolver este ejercicio necesitamos:

  • Saber realizar comparaciones entre variables y valores numéricos.
  • (opcionalmente) Saber encadenar condiciones
  • Conocer las operaciones aritméticas básicas php, en concreto la resta.

Sabiendo que en la variable $total_compra tengo el valor de la compra:

<?php

if ( $total_compra < 30 ) {
   echo 'Compra más o te cobraremos los abusivos 30 euros de gastos de envío';
} else if ( $total_compra >= 30 && $total_compra < 90 ) {
   $importe_faltante = 90 - $total_compra;
   echo '¡¡¡Con solo ' . $importe_faltante . '€ más podrás tener gastos de envío gratis!!!
} else { //ha comprado 90 euros o más
   echo '¡Sí sí sí! Gastos de envío incluídos ¡Vuelve pronto!';
}
?>

Como verás he resuelto el problema de la tienda mediante el uso de comparaciones, dividiendo el problema en los tres rangos que me decían: 

  1. Menor de 30
  2. Mayor o igual que 30 y menor que 90
  3. Mayor o igual que 90

En el rango más complejo, el intermedio, he utilizado && (lo mismo que AND) para indicar que deben cumplirse ambas condiciones.

Problemas de condicionales nivel intermedio [h-span]condicionales[/span]

Ejercicio 1 condicionales 

La tienda online tienda.srcodigofuente.es nos ha pedido una mejora para su web. Necesita un tratamiento de la información de la cesta de los clientes que cumpla los siguientes requisitos:

  1. Si la compra del cliente es inferior a 19 euros podrán requerir 2 cosas:
    1. si los productos son de mascotas se mostrará un mensaje: "No se puede realizar el envío".
    2. si los productos son de ropa se le mostrará el siguiente mensaje: "Los gastos de envío son 9 euros".
  2. Si la compra tiene un importe entre 19 y 40 euros se le indicará el mensaje: "Los gastos de envío son 9 euros".
  3. Si la compra supera los 40 euros deberemos indicar un mensaje de que los portes de envío son gratis.
  4. Si la compra supera los 200 euros deberemos mostrar un mensaje con un código de descuento: CODIGODESC33.

Para este problema disponemos de los siguientes datos:

  1. El importe total de la cesta de la compra viene en una variable $total_compra con un número decimal positivo. Ejemplo: 33.55.
  2. En la variable $tipo_compra nos viene un texto que puede ser 'mascotas' o 'ropa'.
  3. Debemos rellenar una variable $precio_envio para cada una de las posibilidades anteriores.

El problema que nos encontramos es el siguiente:

  • Múltiples condiciones, algunas de ellas con rangos de valores
  • Algunas condiciones crean nuevas posibilidades

Sabiendo que la variable $total_compra tiene el valor numérico del importe de la compra y que $tipo_compra un texto con el tipo, veamos la solución:

<?php
if ( $total_compra < 19 ) { //caso 1
   if ( $tipo_compra == 'mascotas' ) {
      echo 'No se puede realizar el envío';
   } else {
      echo 'Los gastos de envío son 9 euros';
   }
} else if ( $total_compra >= 19 && $total_compra < 40 ) { //caso 2
    echo 'Los gastos de envío son 9 euros';
} else if ( $total_compra >= 40 ){ //caso 3
   echo 'Los gastos de envío son gratuítos';
   if ( $total_compra > 200 ) { //caso 4
      echo 'Te has ganado un código de descuento: CODIGODESC33';
   }
}
?>

Veamos la solución por partes:

  1. Cada if cubre un caso de los indicados en el planteamiento a excepción del último que incluye los dos últimos casos.
  2. El IF anidado (que está dentro de otro if) resuelve la subcondición del primer caso.
  3. El úlfimo if anidado ($total_compra > 200) se incluye dentro del último caso, ya que, tan solo cuando el total de la compra sea mayor que 40 podrá darse el caso de que también sea mayor que 200.

Ejercicio 2 condicionales: palabra palíndroma

Debemos realizar un script que diga si una palabra es palíndroma, es decir, que es igual leerla de principio a fin que de fin a principio. Para lograr darle la vuelta haremos uso de la función de php strrev().

En este ejercicio con la ayuda de la función strrev() deberemos comprobar que una palabra es igual de principio a fin y al revés. El funcionamiento de la función strrev() es sencillo, le pasaremos como parámetro de entrada un texto o variable y nos devolverá la palabra invertida. Así la solución será:

<?php
$texto = ' acurruca';
$texto_invertido = strrev($texto);
if ( $texto == $texto_invertido ) {
   echo 'La palabra ' . $texto . ' es palíndroma';
} else {
   echo 'La palabra ' . $texto . ' no es palíndroma';
}
?>

Ejercicio 3 académico sobre condicionales

Debemos realizar un script que indique cual es el mayor de 4 números, es decir, nos pasan cuatro numeros enteros y debemos mostrar un mensaje con el mayor de los cuatro. Las variables con los cuatro numeros serán $a, $b, $c y $d.

Problema típico de descarte de posibilidades, deberemos ir descartando posibilidades hasta llegar a los cuatro posibles casos desde distintos puntos. Para la primera solución voy a utilizar solo IF y ELSE dividiendo siempre en dos los posibles casos:

<?php
if ( $a > $b ) {
   if ( $a > $c ) {
      if ( $a > $d ) {
         echo $a . ' es el mayor';
      } else {
         echo $d . ' es el mayor';
      }
   } else {
      if ( $c > $d ) {
         echo $c . ' es el mayor';
      } else {
         echo $d . ' es el mayor';
      }
   }
} else {
   if ( $b > $c ) {
      if ( $b > $d ) {
         echo $b . ' es el mayor';
      } else {
         echo $d . ' es el mayor';
      }
   } else {
      if ( $c > $d ) {
         echo $c . ' es el mayor';
      } else {
         echo $d . ' es el mayor';
      }
   }
}
?>

Otra posible solución para este ejercicio sería utilizando IF y ELSE IF y enlazando varias condiciones mediante && o AND:

<?php
if ( $a > $b && $a > $c && $a > $d ) {
   echo $a . ' es el mayor';
} else if ( $b > $a && $b > $c && $b > $d ) {
   echo $b . ' es el mayor';
} else if ( $c > $a && $c > $b && $c > $d ) {
   echo $c . ' es el mayor';
} else {
   echo $d . ' es el mayor';
}
?>

Extra: Teoría para resolver estos ejercicios de if y elseif

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.