Curso de PHP – Clase 4 – Resolución de ejercicios propuestos

En la última clase teórica de PHP avanzamos hasta conocer las estructuras selectivas. Propuse 5 ejercicios para practicar los temas vistos. Ahora voy a mostrar una posible resolución para cada uno de ellos. El código fuente de lo pueden encontrar acá y el resultado de ese código fuente, aquí.

Ejercicio 1

Definir un array de 5 elementos y asignar a cada uno de ellos un número. Mediante una estructura condicional, determinar si el promedio de los números son mayores o menores que 6. Mostrar un mensaje por pantalla informando el resultado.

Se define un array con cinco números. Luego, se calcula el promedio. Noten los paréntesis para agrupar los términos que van a ser divididos. En vez de harcodear el 5, se podría haber usado el tamaño del array ($numeros.length);

Se muestra el promedio y luego, con un if… else, se elige mostrar un mensaje u otro. La comparación es si es mayor y no se contempla el caso de que sean iguales.

Salida

Ejercicio 2

Dadas tres variables numéricas de tipo entero $a, $b y $c realizar un programa en PHP que determine cuál tiene el mayor valor y cuál el menor.

Se me ocurren varias maneras de realizar este ejercicio, pero voy a mostrarles dos. La primera consiste plantear primero la búsqueda del mayor y luego la del menor. Previo a esto, se cargan los valores de las variables. Se utiliza un if para ver si la variable $a es la más grande de las tres. Noten el uso de && para realizar un AND. Si no se cumple la primera condición, se cae en un elseif donde se verifica si la variable más grande es $b. Si esto tampoco ocurre, se cae en otro elseif donde se pregunta si $c es la variable más grande. No haría falta esto último ya que de no darse las condiciones 1 y 2, $c debería ser la más grande. Pueden probar sacar la condición y cambiar el elseif por un simple else y el resultado debería ser igual.

La forma de obtener cuál es la variable más chica es exactamente igual, solo se cambian el operador de comparación mayor (>)por el de menor (<).

Debajo incluí otra forma de resolver el ejercicio. Consiste en utilizar dos nuevas variables. Una que se llame $mayor y otra $menor. Allí se pondrá en forma de string, cuál es la variable más grande y cuál la más chica. Se realizan comparaciones donde no se contempla la igualdad.

Salida

Ejercicio 3

Realizar un programa que en base al valor numérico de una variable $num, pueda mostrarse por pantalla, el nombre del número que tenga dentro escrito con palabras, para los números entre el 20 y el 60. Por ejemplo, si $num = 43 debe mostrarse por pantalla “cuarenta y tres”.

Tal vez el más desafiante de esta serie de ejercicios. En realidad es bastante simple. Hay que tener en cuenta las operaciones de división entera y resto de la división entera. Veamos el código:

En $num definimos el número que queremos pasar a palabras. La segunda línea es una manera de obtener la cantidad de decenas que tiene ese número. Primero se lo divide por 10 y con int delante se lo trunca. Luego, en la siguiente línea, se utiliza el resto de la división, es decir, lo que sobra de dividir por 10; esto dará como resultado las unidades.

Con estos dos pasos hemos logrado desglosar el número en decenas y unidades. Vamos preparando una variable $resultado que inicializamos como un string vacío.

A continuación, hacemos un switch con la variable $decena y en el case que corresponda le agregamos a $resultado el string que corresponde. Noten el .= que sirve para concatenar strings a la variable que pongamos del lado izquierdo.

Luego se hace igual con $unidades. Se le agrega un espacio al string adelante para que la frase final no quede toda junta.

Si prestamos atención, tal vez esta solución funciona bien, pero con los números 21 a 29 no queda perfecto ya que, por ejemplo, el 21 se escribe veintiuno y no veinte y uno. Eso es algo que se puede mejorar.

Salida

Ejercicio 4

Escribir un programa que use una variable $operador que puede almacenar los símbolos matemáticos: ‘+’, ‘-‘,’/’ y ‘x’; y definir dos variables enteras $op1 y $op2. De acuerdo al símbolo que tenga la variable $operador, deberá realizarse la operación indicada y mostrarse el resultado por pantalla.

En $simbolo se guarda el símbolo que se quiere usar. Los opeadores $op1 y $op2 guardan los valores con los que se operará. Luego una estructura de if… elseif sirve para elegir cuál es el operador seleccionado. En la expresión de comparación se utiliza == como comparador de igualdad.

Finalmente, se muestra la expresión que representa la operación y el resultado.

Salida

Ejercicio 5

Realizar un programa que en base al valor numérico de una variable que puede estar entre 1 y 7, se imprima por pantalla el día de la semana asociado. Por ejemplo 1 -> Domingo, 2 -> Lunes… etc.

Este se resuelve fácil con un switch. $dia es una variable numérica y según su valor se muestra por pantalla un día de la semana distinto. Usamos default para el caso en que $dia tenga un valor que no esté entre 1 y 7. Y en ese caso, mostramos un mensaje de error.

Hasta aquí la resolución de los ejercicios. Nos reencontramos la próxima clase teórica.

Soy programador web y me desempeño como Líder Técnico y de Proyectos en Polar Bear Development. Trabajo con tecnologías como PHP, Javascript, MySQL y HTML5 para el desarrollo de sitios y sistemas web. Me especializo en Zend Framework 2 y otros frameworks MVC, como también en WordPress y otros CMS. Lidero equipos de desarrolladores trabajando con Scrum. Vivo en Buenos Aires, Argentina.
 

8 thoughts on “Curso de PHP – Clase 4 – Resolución de ejercicios propuestos

  1. muchas gracias , tu aporte es una gran ayuda para estudiantes que como yo se inician en este maravilloso mundo de la programación , espero sigas aportando ejemplos como estos en el futuro (y)

  2. Hola César

    Muchas gracias por tu comentario. La idea es continuar el curso de PHP aunque me atrasé un poco con las publicaciones. Lleva bastante tiempo diagramar la clase, elegir los temas y diseñar los ejercicios. Pronto estaré publicando nuevas clases.

    ¡Saludos!

  3. Saludos, excelentes ejercicios. Me ayudaron mucho a entender planteamiento de ejercicios para mis alumnos.

  4. Hola.

    Tengo un problema con el switch… como hago para que reconozca segun el ultimo numero del dni (dato ingresado) informe que debe cobrar tal fecha.. solo no se como hacer para q reconozca el ultimo numero de.la cadena de num del dni. Saludos y gracias.

  5. Hola Mariano

    Depende mucho del tipo de dato con el que estés manejando el DNI. Si es un número entero, podrías utilizar el operador de resto de división entera. Usás ese operador así: $ultimoNumero = $dni % 10. Si el DNI está como string, entonces vas a tener que acceder hasta la última posición. Eso se puede hacer de muchas formas, pero la más fácil es así: substr(“10584696”, -1); Lo cual te devolverá el 6.
    ¡Saludos!

  6. Muy bien, pero, que pasaria si obtengo los datos de mi BD mysql $num1; $num2;$simbolo y quiero comparar cual es el mayor ej.
    $num1=10;
    $num2=20;
    $simbolo=”>”;
    if($num1.$simbolo.$num2){ ……

    no reconoce al simbolo como tal.

    alguien me puede ayudar?

  7. Hola Walter.
    No, no podés hacer eso. Necesitarías evaluar la expresión que estás poniendo en el if.
    Eso quizás lo puedas hacer en lenguajes como Javascript utilizando una función que interpreta expresiones.

    Lo más rápido que se me ocurre para resolver el problema es:


    if ($simbolo == '>') {
    if ($num1 > $num2) {
    // $num1 es mayor que $num2
    } else {
    // $num2 es mayor o igual a $num1
    }
    }

    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*