Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/EjerciciosSintaxisBasica»

De WikiEducator
Saltar a: navegación, buscar
(Ejercicio 16: Selección con switch)
 
(26 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
__NOTOC__
 
== Tabla de Contenidos ==
 
== Tabla de Contenidos ==
 
* [[#Estructuras_secunciales|Estructuras secuenciales]]
 
* [[#Estructuras_secunciales|Estructuras secuenciales]]
 
** [[#Ejercicio_1:_Usa_la_instrucción_echo|Ejercicio 1: Usa la instrucción echo]]
 
** [[#Ejercicio_1:_Usa_la_instrucción_echo|Ejercicio 1: Usa la instrucción echo]]
 
** [[#Ejercicio_2:_Probando_printf|Ejercicio 2: Probando printf]]
 
** [[#Ejercicio_2:_Probando_printf|Ejercicio 2: Probando printf]]
** [[#Ejercicio_3:_printf,_tabla_ascii|Ejercicio 3: printf, tabla ASCII]]
+
** [[#Ejercicio_3:_printf,_tabla_ASCII|Ejercicio 3: printf, tabla ASCII]]
 
** [[#Ejercicio_4:_Ver_tipos_de_variable|Ejercicio 4: Ver tipos de variable]]
 
** [[#Ejercicio_4:_Ver_tipos_de_variable|Ejercicio 4: Ver tipos de variable]]
 
** [[#Ejercicio_5:_Probando_los_tipos_enteros|Ejercicio 5: Probando los tipos enteros]]
 
** [[#Ejercicio_5:_Probando_los_tipos_enteros|Ejercicio 5: Probando los tipos enteros]]
 
** [[#Ejercicio_6:_Funciones_de_conversión_1|Ejercicio 6: Funciones de conversión 1]]
 
** [[#Ejercicio_6:_Funciones_de_conversión_1|Ejercicio 6: Funciones de conversión 1]]
** [[#Ejercicio_6_1:_Trabajando_con_flotantes|Ejercicio 6.1: Trabajando con flotantes]]
+
** [[#Ejercicio_6.1:_Trabajando_con_flotantes|Ejercicio 6.1: Trabajando con flotantes]]
 
** [[#Ejercicio_7:_Funciones_de_conversión|Ejercicio 7: Funciones de conversión]]
 
** [[#Ejercicio_7:_Funciones_de_conversión|Ejercicio 7: Funciones de conversión]]
 
** [[#Ejercicio_8:_Declaración_de_variables_1|Ejercicio 8: Declaración de variables 1]]
 
** [[#Ejercicio_8:_Declaración_de_variables_1|Ejercicio 8: Declaración de variables 1]]
 
** [[#Ejercicio_9:_Declaración_de_variables_2|Ejercicio 9: Declaración de variables 2]]
 
** [[#Ejercicio_9:_Declaración_de_variables_2|Ejercicio 9: Declaración de variables 2]]
 
** [[#Ejercicio_10:_Cambiar_aleatoriamente_el_estilo_de_un_texto|Ejercicio 10: Cambiar aleatoriamente el estilo de un texto]]
 
** [[#Ejercicio_10:_Cambiar_aleatoriamente_el_estilo_de_un_texto|Ejercicio 10: Cambiar aleatoriamente el estilo de un texto]]
** [[#Ejercicio_10_1:_Asignación_con_heredoc|Ejercicio 10.1: Asignación con heredoc]]
+
** [[#Ejercicio_10.1:_Asignación_con_heredoc|Ejercicio 10.1: Asignación con heredoc]]
 
** [[#Ejercicio_11:_Probando_variables_de_variables|Ejercicio 11: Probando variables de variables]]
 
** [[#Ejercicio_11:_Probando_variables_de_variables|Ejercicio 11: Probando variables de variables]]
  
Línea 22: Línea 23:
 
** [[#Ejercicio_16:_Selección_con_switch|Ejercicio 16: Selección con switch]]
 
** [[#Ejercicio_16:_Selección_con_switch|Ejercicio 16: Selección con switch]]
 
** [[#Ejercicio_17:_Muestra_el_nombre_y_el_número_de_días_de_un_mes|Ejercicio 17: Muestra el nombre y el número de días de un mes]]
 
** [[#Ejercicio_17:_Muestra_el_nombre_y_el_número_de_días_de_un_mes|Ejercicio 17: Muestra el nombre y el número de días de un mes]]
** [[#Ejercicio_18:_Suma_de_los_primeros_100_números|Ejercicio 18: Suma de los primeros 100 números]]
+
** [[#Ejercicio_18:_Suma_los_100_primeros_números|Ejercicio 18: Suma de los primeros 100 números]]
 
** [[#Ejercicio_19:_Tirar_dados|Ejercicio 19: Tirar dados]]
 
** [[#Ejercicio_19:_Tirar_dados|Ejercicio 19: Tirar dados]]
 
** [[#Ejercicio_20:_Mostrar_mes_y_su_número_de_días|Ejercicio 20: Mostrar mes y su número de días]]
 
** [[#Ejercicio_20:_Mostrar_mes_y_su_número_de_días|Ejercicio 20: Mostrar mes y su número de días]]
** [[#Ejercicio_20_Validar_fechas|Ejercicio 20.1: Validar fechas]]
+
** [[#Ejercicio_20.1:_Validar_fechas|Ejercicio 20.1: Validar fechas]]
  
 
* [[#Ejercicios_con_fechas|Ejercicios con fechas]]
 
* [[#Ejercicios_con_fechas|Ejercicios con fechas]]
 
** [[#Ejercicio_24:_Fechas_básicas|Ejercicio 24: Fechas básicas]]
 
** [[#Ejercicio_24:_Fechas_básicas|Ejercicio 24: Fechas básicas]]
 
** [[#Ejercicio_25:_Calcula_la_edad|Ejercicio 25: Calcula la edad]]
 
** [[#Ejercicio_25:_Calcula_la_edad|Ejercicio 25: Calcula la edad]]
** [[#Ejercicio_26:_Reloj|Ejercicio 26: Reloj]]
+
** [[#Ejercicio_26:_Haz_un_Reloj|Ejercicio 26: Haz un reloj]]
 
** [[#Ejercicio_27:_Fecha_aleatoria|Ejercicio 27: Fecha aleatoria]]
 
** [[#Ejercicio_27:_Fecha_aleatoria|Ejercicio 27: Fecha aleatoria]]
 
** [[#Ejercicio_28:_Fecha_en_idiomas|Ejercicio 28: Fecha en idiomas]]
 
** [[#Ejercicio_28:_Fecha_en_idiomas|Ejercicio 28: Fecha en idiomas]]
Línea 41: Línea 42:
  
 
* [[#Ejercicios_de_sintaxis|Ejercicios de sintaxis]]
 
* [[#Ejercicios_de_sintaxis|Ejercicios de sintaxis]]
** [[#Ejercicios_con_operaciones_aritméticas|Ejercicios con operaciones aritméticas]]
 
** [[#Condicionales_y_repeticiones|Condicionales y repeticiones]]
 
** [[#Expresiones_regulares|Expresiones regulares]]
 
** [[#Validación|Validación]]
 
  
== Estructuras secuenciales ==
+
==Estructuras secuenciales==
  
=== Ejercicio 1: Usa la instrucción echo ===
+
 
{{MRM_Actividad|Title=Ejercicio 1 : Usa la instrucción echo|
+
===Ejercicio 1: Usa la instrucción echo===
 +
 
 +
 
 +
<br />
 +
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 1: Usa la instrucción echo]]|
 
* Realiza un programa donde visualices un mensaje usando la instrucción '''echo'''.
 
* Realiza un programa donde visualices un mensaje usando la instrucción '''echo'''.
 
* Prueba a insertar caracteres especiales \n, \t.
 
* Prueba a insertar caracteres especiales \n, \t.
 
* ¿Qué diferencia hay en usar '''\n''' e insertar la etiqueta `<br/>`? Pruébalo y verifica la salida.
 
* ¿Qué diferencia hay en usar '''\n''' e insertar la etiqueta `<br/>`? Pruébalo y verifica la salida.
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
 
  
 
=== Ejercicio 2: Probando printf ===
 
=== Ejercicio 2: Probando printf ===
 +
<br />
 
{{MRM_Actividad|Title=Ejercicio 2 : Probando printf|
 
{{MRM_Actividad|Title=Ejercicio 2 : Probando printf|
 
* Asigna a una variable un valor real.
 
* Asigna a una variable un valor real.
* Visualiza dicho valor con formato %s, %f, %c, %x, %b.
+
* Visualiza dicho valor con formato %s, %f, %F, %c, %x, %X, %b, %o.
* Especifica el número de decimales en %f.
+
* Prueba a especificar en número de decimales en %f.
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
=== Ejercicio 3: printf, tabla ASCII ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 3: printf, tabla ASCII|
 +
* Usando la estructura de control '''for''':
 +
<source lang=php>
 +
for ($n=32; $n<128; $n++){
 +
    // iterará desde 32 hasta 128
 +
}
 +
</source>
 +
* Para mostrar una tabla básica, usa etiquetas HTML como:
 +
<source lang=html5>
 +
<table>
 +
    <caption></caption>
 +
    <tr>
 +
        <th>Título 1</th>
 +
        <th>Título 2</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Valor</td>
 +
    </tr>
 +
</table>
 +
</source>
 +
* Realiza el programa que genere dicha tabla.
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
=== Ejercicio 4: Ver tipos de variable ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 4 : Ver tipos de variable|
 +
* Asigna a una variable cada uno de los cinco tipos básicos.
 +
* Después de cada asignación visualiza el tipo con la función '''gettype()'''.
 +
<source lang=php>
 +
$a = 10;
 +
echo "Valor de la variable \$a es $a y es de tipo ".gettype($a)."<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
=== Ejercicio 5: Probando los tipos enteros ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 5 : Probando los tipos enteros|
 +
* Haz un programa que asigne diferentes valores enteros a las variables.
 +
* Realiza la asignación en distintos formatos (decimal, octal, hexadecimal y binario).
 +
* Prueba posteriormente a visualizarlos.
 +
* Analiza e interpreta el resultado.
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
 
  
=== Ejercicio 18: Suma de los primeros 100 números ===
+
=== Ejercicio 6: Funciones de conversión 1 ===
{{MRM_Actividad|Title=Ejercicio 18: Suma de los primeros 100 números|
+
<br />
* Mostrar la suma de los primeros 100 números naturales.
+
{{MRM_Actividad|Title=Ejercicio 6 : Funciones de conversión 1|
 +
* Usa las funciones especificadas anteriormente (`decbin`, `dechex`, `decoct`) para visualizar un número en diferentes formatos numéricos.
 +
* Muestra el valor original y el convertido.
 +
* En el primer caso muestra el tipo del valor que retorna la función usada.
 +
<source lang=php>
 +
$num = 10;
 +
echo "Decimal: $num<br />";
 +
echo "Binario: " . decbin($num) . "<br />";
 +
echo "Hexadecimal: " . dechex($num) . "<br />";
 +
echo "Octal: " . decoct($num) . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 6.1: Trabajando con flotantes ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 6.1 : Trabajando con flotantes|
 +
* Define cuatro valores flotantes en notación decimal y científica.
 +
* Que tengan 1, 2, 3 y 4 números decimales respectivamente.
 +
* Visualízalos.
 +
* Intenta crearlos con la función `rand()`, no es trivial.
 +
* Utiliza `number_format` para mostrar los valores con diferentes números de decimales y en formato europeo.
 +
* Prueba algún otro formato usando la función `number_format`.
 +
<source lang=php>
 +
$float1 = 1.2;
 +
$float2 = 1.23;
 +
$float3 = 1.234;
 +
$float4 = 1.2345;
 +
 
 +
echo "Formato Europeo: " . number_format($float1, 2, ',', '.') . "<br />";
 +
echo "Formato Científico: " . sprintf("%.2E", $float2) . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 7: Funciones de conversión ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 7 : Funciones de conversión|
 +
* Usa las funciones especificadas para visualizar en los tres sistemas decimales los números del 1 al 100.
 +
* ¿Qué diferencia hay en hacerlo así y usar `printf`?
 +
<source lang=php>
 +
for ($i = 1; $i <= 100; $i++) {
 +
    echo "Número: $i, Binario: " . decbin($i) . ", Hexadecimal: " . dechex($i) . ", Octal: " . decoct($i) . "<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 8: Declaración de variables 1 ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 8 : Declaración de variables 1|
 +
* Haz un programa donde declares variables de diferentes tipos.
 +
* Asigna los valores con diferente formato.
 +
* Visualiza sus valores.
 +
<source lang=php>
 +
$int = 10;
 +
$float = 20.5;
 +
$string = "Esto es una cadena";
 +
$bool = true;
 +
 
 +
echo "Entero: $int<br />";
 +
echo "Flotante: $float<br />";
 +
echo "Cadena: $string<br />";
 +
echo "Booleano: " . ($bool ? 'true' : 'false') . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 9: Declaración de variables 2 ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 9 : Declaración de variables 2|
 +
* Este programa asignará los siguientes valores a variables y luego lo visualizará:
 +
  ** 125
 +
  ** 0874 // Observarás que esta asignación produce un error, ya que el 8 no es un dígito válido en el sistema octal.
 +
  ** 0xAbC12
 +
  ** 0b1100
 +
  ** "Esto es una cadena de caracteres"
 +
  ** 'Esto es otra cadena de caracteres'
 +
  ** Cadena multilínea:
 +
      ```
 +
      Esto es una cadena
 +
      multilínea
 +
      y termina aquí.
 +
      ```
 +
  ** 1.23432230003322014000002234101
 +
  ** 1234E-2
 +
  ** null
 +
  ** true
 +
  ** false
 +
<source lang=php>
 +
$int = 125;
 +
$octal = 0874; // Error
 +
$hex = 0xAbC12;
 +
$binary = 0b1100;
 +
$string1 = "Esto es una cadena de caracteres";
 +
$string2 = 'Esto es otra cadena de caracteres';
 +
$float = 1.23432230003322014000002234101;
 +
$scientific = 1234E-2;
 +
$null = null;
 +
$true = true;
 +
$false = false;
 +
 
 +
echo "Entero: $int<br />";
 +
echo "Hexadecimal: $hex<br />";
 +
echo "Binario: $binary<br />";
 +
echo "Cadena 1: $string1<br />";
 +
echo "Cadena 2: $string2<br />";
 +
echo "Flotante: $float<br />";
 +
echo "Científico: $scientific<br />";
 +
echo "Null: " . var_export($null, true) . "<br />";
 +
echo "Booleano True: " . var_export($true, true) . "<br />";
 +
echo "Booleano False: " . var_export($false, true) . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
 
 +
=== Ejercicio 10: Cambiar aleatoriamente el estilo de un texto ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 10 : Cambiar aleatoriamente el estilo de un texto|
 +
* Carga un texto con un tamaño de encabezado `h` y color aleatorio.
 +
<nowiki>
 +
<hx style="color:#RGB;">Este es el texto que debe de aparecer cambiante</hx>
 +
</nowiki>
 +
 
 +
* `x`, `R`, `G` y `B` tendrán valores generados aleatoriamente:
 +
  ** `x`: un valor de 1 a 6.
 +
  ** `R`: un valor en hexadecimal de entre 0 y 255 (tonalidad de rojo).
 +
  ** `G`: un valor en hexadecimal de entre 0 y 255 (tonalidad de verde).
 +
  ** `B`: un valor en hexadecimal de entre 0 y 255 (tonalidad de azul).
 +
<source lang=php>
 +
$x = rand(1, 6);
 +
$R = dechex(rand(0, 255));
 +
$G = dechex(rand(0, 255));
 +
$B = dechex(rand(0, 255));
 +
 
 +
echo "<h$x style='color:#$R$G$B;'>Texto aleatorio con estilo</h$x>";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 10.1: Asignación con heredoc ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 10.1 : Asignación con heredoc|
 +
* Vamos a construir una factura de dos productos.
 +
* Declaramos las siguientes variables:
 +
<source lang=php>
 +
$cliente = "Juan Pérez";
 +
$fecha = date("d/m/Y");
 +
$factura = 1;
 +
$producto1 = "Cuadros";
 +
$precio1 = rand(1, 100);
 +
$producto2 = "Luminarias intensas";
 +
$precio2 = rand(1, 100);
 +
 
 +
$facturaContent = <<<FACTURA
 +
========================================
 +
    FACTURA Número: $factura
 +
========================================
 +
Cliente: $cliente
 +
Fecha: $fecha
 +
Producto 1: $producto1 - Precio: $precio1 €
 +
Producto 2: $producto2 - Precio: $precio2 €
 +
========================================
 +
FACTURA;
 +
 
 +
echo nl2br($facturaContent);
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 11: Probando variables de variables ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 11 : Probando variables de variables|
 +
* Declara los precios de 5 productos de hortalizas.
 +
* Declara una variable `$producto`.
 +
* Visualiza el producto y su precio cambiando solo el valor de la variable `$producto`:
 +
<source lang=php>
 +
$tomate = 2.5;
 +
$cebolla = 1.2;
 +
$zanahoria = 1.8;
 +
 
 +
$producto = "tomate";
 +
echo "El precio de $producto es ${$producto} €<br />";
 +
 
 +
$producto = "cebolla";
 +
echo "El precio de $producto es ${$producto} €<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 12: Selección simple ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 12 : Selección simple|
 +
* Genera un número aleatorio entre 1 y 100.
 +
* Si el número es par, informa que ha ganado un premio.
 +
* En cualquier caso, muestra el número obtenido:
 +
<source lang=php>
 +
$numero = rand(1, 100);
 +
if ($numero % 2 == 0) {
 +
    echo "¡Has ganado un premio! Número: $numero<br />";
 +
} else {
 +
    echo "Número obtenido: $numero<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 13: Selección simple 2 ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 13 : Selección simple 2|
 +
* Genera una edad entre 1 y 90 años.
 +
* Muestra la edad generada.
 +
* Si la edad es menor de 18 años, informa de ello en un mensaje en rojo:
 +
<source lang=php>
 +
$edad = rand(1, 90);
 +
echo "Edad generada: $edad<br />";
 +
if ($edad < 18) {
 +
    echo "<span style='color:red;'>Menor de edad</span><br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
=== Ejercicio: Selección con html ===
 +
<br />
 +
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicioIfHtml|Ejercicio :Selección con html]]|
 +
* Un formulario que pida edad y nombre
 +
* En función de la edad mostraremos un texto y otro
 +
* Si es menor de edad mostramos un mensaje en color azul de fondo que es menor de dad
 +
* En el caso de ser mayor de edad mostramos otro texto con otro color
 +
* Usamos la estructura
 +
<source lang=php>
 +
<?php if (true): ?>
 +
    <h1>Este contenido se mostrará</h1>
 +
<?php else: ?>
 +
    <h1>Este contenido no se mostrará</h1>
 +
<?php endif; ?>
 +
</source>
 +
 
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 14: Selección completa ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 14 : Selección completa|
 +
* Genera una edad entre 1 y 90 años.
 +
* El programa indicará si la edad generada corresponde a un menor o mayor de edad:
 +
<source lang=php>
 +
$edad = rand(1, 90);
 +
if ($edad < 18) {
 +
    echo "Edad: $edad. Es menor de edad.<br />";
 +
} else {
 +
    echo "Edad: $edad. Es mayor de edad.<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 15: Selección múltiple con if ===
 +
<br />
 +
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio15| Selección múltiple con if |
 +
 
 +
* Genera un número entre 1 y 15.
 +
* Muestra el nombre del mes correspondiente al número (enero, febrero...).
 +
* Si el número es mayor de 12, muestra "Mes incorrecto".
 +
<source lang=php>
 +
$mes = rand(1, 15);
 +
if ($mes == 1) {
 +
    echo "Enero<br />";
 +
} elseif ($mes == 2) {
 +
    echo "Febrero<br />";
 +
} // Continúa con los demás casos
 +
else {
 +
    echo "Mes incorrecto<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 16: Selección con switch ===
 +
<br />
 +
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio16|Ejercicio 16 : Selección con switch]]|
 +
* Genera un número de mes de forma aleatoria.
 +
* Muestra el número y el número de días que tiene
 +
* Realiza usando `switch`:
 +
*{{Nota|
 +
Intenta que se muestre también el nombre del mes junto con el número de días
 +
}}
 +
<source lang=php>
 +
$mes = rand(1, 15);
 +
switch ($mes) {
 +
    case 1:
 +
        $dias=31;
 +
        break;
 +
    case 2:
 +
        $dias=29;
 +
        break;
 +
    // Continúa con los demás casos
 +
    default:
 +
        $dias =  "Mes incorrecto<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 17: Muestra el nombre y el número de días de un mes ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 17 : Muestra el nombre y el número de días de un mes|
 +
* Modifica el ejercicio anterior añadiendo la información del número de días.
 +
* Intenta seguir usando el `switch`.
 +
* ¿Cómo podrás hacer cosas particulares en cada `case` del `switch` (el nombre del mes) y algo común en varios casos (meses de 30 días y de 31 días)?
 +
<source lang=php>
 +
$mes = rand(1, 12);
 +
switch ($mes) {
 +
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
 +
        echo "Mes: Enero, Días: 31<br />";
 +
        break;
 +
    case 4: case 6: case 9: case 11:
 +
        echo "Mes: Abril, Días: 30<br />";
 +
        break;
 +
    case 2:
 +
        echo "Mes: Febrero, Días: 28 o 29<br />";
 +
        break;
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 
 +
=== Ejercicio 18: Suma los 100 primeros números ===
 +
<br />
 +
 
 +
 
 +
{{MRM_Actividad|Title=Ejercicio 18 : Suma los 100 primeros números|
 +
* Muestra la suma de los primeros 100 números naturales.
 
* Visualiza cada paso en una tabla con las iteraciones.
 
* Visualiza cada paso en una tabla con las iteraciones.
 +
<source lang=php>
 +
$suma = 0;
 +
echo "<table border='1'>";
 +
echo "<tr><th>Iteración</th><th>Suma acumulada</th></tr>";
 +
for ($i = 1; $i <= 100; $i++) {
 +
    $suma += $i;
 +
    echo "<tr><td>{$i}</td><td>{$suma}</td></tr>";
 +
}
 +
echo "</table>";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
 
  
 
=== Ejercicio 19: Tirar dados ===
 
=== Ejercicio 19: Tirar dados ===
{{MRM_Actividad|Title=Ejercicio 19: Tirar dados|
+
<br />
 +
{{MRM_Actividad|Title=Ejercicio 19 : Tirar dados|
 
* Simula tirar un dado 100,000 veces.
 
* Simula tirar un dado 100,000 veces.
 
* Cuenta cuántas veces aparece cada número (1-6).
 
* Cuenta cuántas veces aparece cada número (1-6).
 +
<source lang=php>
 +
$resultados = array_fill(1, 6, 0);
 +
for ($i = 0; $i < 100000; $i++) {
 +
    $dado = rand(1, 6);
 +
    $resultados[$dado]++;
 +
}
 +
foreach ($resultados as $cara => $veces) {
 +
    echo "Cara $cara salió $veces veces<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
+
}}
 +
 
  
 
=== Ejercicio 20: Mostrar mes y su número de días ===
 
=== Ejercicio 20: Mostrar mes y su número de días ===
 +
<br />
 +
 
{{MRM_Actividad|Title=Ejercicio 20: Mostrar mes y su número de días|
 
{{MRM_Actividad|Title=Ejercicio 20: Mostrar mes y su número de días|
* Genera un número aleatorio entre 1 y 12.
+
* Genera un número aleatorio entre 1 y 15.
* Muestra el nombre del mes y el número de días.
+
* Muestra con un mensaje el nombre del mes y su número de días.
 +
* Usa la instrucción `switch` vista en clase.
 +
<source lang=php>
 +
$mes = rand(1, 15);
 +
switch ($mes) {
 +
    case 1:
 +
        echo "Enero - 31 días<br />";
 +
        break;
 +
    case 2:
 +
        echo "Febrero - 28 o 29 días<br />";
 +
        break;
 +
    case 3:
 +
        echo "Marzo - 31 días<br />";
 +
        break;
 +
    // Continúa con los demás casos
 +
    default:
 +
        echo "Mes incorrecto<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
 
  
=== Ejercicio 20.1: Validar fechas ===
+
===Ejercicio 20.1: Validar fechas===
{{MRM_Actividad|Title=Ejercicio 20.1: Validar fechas|
+
<br />
* Genera un día, mes y año aleatorios.
+
{{MRM_Actividad|Title=Ejercicio 20.1: Validar Fechas|
 +
* Haz un programa que obtenga de forma aleatoria: día (1-33), mes (1-14) y año (1-3000).
 
* Determina si la fecha es válida y muestra un mensaje.
 
* Determina si la fecha es válida y muestra un mensaje.
 
* Considera si el año es bisiesto.
 
* Considera si el año es bisiesto.
 +
<source lang=php>
 +
$dia = rand(1, 33);
 +
$mes = rand(1, 14);
 +
$anio = rand(1, 3000);
 +
 +
if (checkdate($mes, $dia, $anio)) {
 +
    echo "La fecha $dia/$mes/$anio es válida.<br />";
 +
} else {
 +
    echo "La fecha $dia/$mes/$anio no es válida.<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 
}}
 
}}
[[#Tabla_de_Contenidos|Volver al índice]]
 
  
 +
=== Ejercicio 21: Tabla de multiplicar ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 21 : Tabla de multiplicar|
 +
* Genera un número aleatorio y muestra su tabla de multiplicar.
 +
* Haz que la tabla salga con las etiquetas HTML correspondientes:
 +
<source lang=php>
 +
$numero = rand(1, 10);
 +
echo "<table border='1'>";
 +
echo "<tr><th>Multiplicador</th><th>Resultado</th></tr>";
 +
for ($i = 1; $i <= 10; $i++) {
 +
    echo "<tr><td>$numero x $i</td><td>" . ($numero * $i) . "</td></tr>";
 +
}
 +
echo "</table>";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 22: Genera una nómina ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 22 : Genera una nómina|
 +
* Haz un programa que calcule una nómina.
 +
* Considera:
 +
  ** Más de 40 horas son extras (1.5 el precio base).
 +
  ** IRPF:
 +
    *** < 600€ exento.
 +
    *** Entre 600€ y 800€: 5%.
 +
    *** Más de 800€: 12%.
 +
* Muestra detalle del bruto, descuentos y neto de salario.
 +
<source lang=php>
 +
$horas = rand(30, 50);
 +
$precioHora = 10;
 +
$bruto = $horas <= 40 ? $horas * $precioHora : (40 * $precioHora) + (($horas - 40) * $precioHora * 1.5);
 +
 +
if ($bruto < 600) {
 +
    $irpf = 0;
 +
} elseif ($bruto <= 800) {
 +
    $irpf = $bruto * 0.05;
 +
} else {
 +
    $irpf = $bruto * 0.12;
 +
}
 +
$neto = $bruto - $irpf;
 +
 +
echo "Horas trabajadas: $horas<br />";
 +
echo "Bruto: $bruto €<br />";
 +
echo "IRPF: $irpf €<br />";
 +
echo "Neto: $neto €<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 23: Número primo ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 23 : Número primo|
 +
* Haz un programa que determine si un número es primo.
 +
* Recuerda que un número es primo si solo es divisible entre sí mismo y 1.
 +
<source lang=php>
 +
$numero = rand(1, 100);
 +
$esPrimo = true;
 +
 +
if ($numero < 2) {
 +
    $esPrimo = false;
 +
} else {
 +
    for ($i = 2; $i <= sqrt($numero); $i++) {
 +
        if ($numero % $i == 0) {
 +
            $esPrimo = false;
 +
            break;
 +
        }
 +
    }
 +
}
 +
 +
if ($esPrimo) {
 +
    echo "El número $numero es primo.<br />";
 +
} else {
 +
    echo "El número $numero no es primo.<br />";
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 24: Fechas básicas ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 24 : Fechas básicas|
 +
* Haz un programa que muestre:
 +
  ** Cuántos segundos han pasado desde el 1 de enero de 1970 hasta el instante actual.
 +
  ** La fecha actual en formato `Día/Mes/Año Hora:Minutos:Segundos`.
 +
  ** La fecha dentro de 25 horas con el formato anterior.
 +
  ** Una página que se recargue automáticamente cada 5 segundos usando la etiqueta `META Refresh`.
 +
<source lang=php>
 +
echo "Segundos desde 1/1/1970: " . time() . "<br />";
 +
echo "Fecha actual: " . date("d/m/Y H:i:s") . "<br />";
 +
echo "Fecha dentro de 25 horas: " . date("d/m/Y H:i:s", time() + (25 * 3600)) . "<br />";
 +
</source>
 +
<source lang=html5>
 +
<head>
 +
  <meta http-equiv="refresh" content="5">
 +
</head>
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 25: Calcula tu edad ===
 +
<br />
 +
==Ejercicio 25: Calcula la edad==
 +
 +
{{MRM_Actividad|Title=Ejercicio 25 : Calcula la edad|
 +
* A partir de tu fecha de nacimiento, haz un programa que calcule tu edad:
 +
  ** Una opción aproximada es encontrar los segundos de tu edad y dividirlos entre los segundos que tiene un año.
 +
  ** Busca una solución más precisa.
 +
<source lang=php>
 +
$fechaNacimiento = strtotime("1990-01-01");
 +
$edadEnSegundos = time() - $fechaNacimiento;
 +
$edadAprox = floor($edadEnSegundos / (365.25 * 24 * 3600));
 +
echo "Tu edad aproximada es: $edadAprox años<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
=== Ejercicio 26: Haz un Reloj ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 26 : Haz un reloj|
 +
* Haz un programa que muestre un reloj digital numérico con precisión de milisegundos.
 +
* La página debe recargarse cada 0.01 segundos.
 +
* El formato del reloj debe ser `Hora:Minutos:Segundos:Milésimas`.
 +
<source lang=php>
 +
$microtime = microtime(true);
 +
$milisegundos = sprintf("%03d", ($microtime - floor($microtime)) * 1000);
 +
echo "Hora actual: " . date("H:i:s") . ":$milisegundos<br />";
 +
</source>
 +
<source lang=html5>
 +
<head>
 +
  <meta http-equiv="refresh" content="0.01">
 +
</head>
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 27: Fecha aleatoria ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 27 : Fecha aleatoria|
 +
* Genera una fecha aleatoria (día, mes, año, hora, minuto, segundos) como un string.
 +
* Convierte ese string en un timestamp.
 +
* Obtén la diferencia en segundos con la fecha actual.
 +
* Interpreta y explica los resultados.
 +
<source lang=php>
 +
$fechaRandom = mktime(rand(0, 23), rand(0, 59), rand(0, 59), rand(1, 12), rand(1, 28), rand(1900, 2100));
 +
echo "Fecha generada: " . date("d/m/Y H:i:s", $fechaRandom) . "<br />";
 +
$diferenciaSegundos = time() - $fechaRandom;
 +
echo "Diferencia en segundos con la fecha actual: $diferenciaSegundos<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 28: Fecha en idiomas ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 28 : Fecha en idiomas|
 +
* Instala en el sistema los siguientes locales: `es_ES`, `fr_FR`, `en_US`.
 +
* Muestra la fecha actual en cada idioma.
 +
<source lang=php>
 +
setlocale(LC_ALL, "es_ES");
 +
echo "Fecha en español: " . strftime("%A, %d de %B de %Y") . "<br />";
 +
 +
setlocale(LC_ALL, "fr_FR");
 +
echo "Fecha en francés: " . strftime("%A, %d %B %Y") . "<br />";
 +
 +
setlocale(LC_ALL, "en_US");
 +
echo "Fecha en inglés: " . strftime("%A, %B %d, %Y") . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 29: Indica los días de la semana en idiomas ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 29 : Indica los días de la semana en idiomas|
 +
* Usa los mismos locales del ejercicio anterior (`es_ES`, `fr_FR`, `en_US`).
 +
* Muestra los nombres de los días de la semana en cada idioma.
 +
<source lang=php>
 +
$dias = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
 +
foreach (["es_ES", "fr_FR", "en_US"] as $idioma) {
 +
    setlocale(LC_ALL, $idioma);
 +
    echo "Idioma: $idioma<br />";
 +
    foreach ($dias as $dia) {
 +
        echo strftime("%A", strtotime($dia)) . "<br />";
 +
    }
 +
}
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 30: Declarar una función ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 30 : Declarar una función|
 +
* Declara una función que devuelva el mayor de dos números dados.
 +
* Invócala desde el programa principal.
 +
<source lang=php>
 +
function mayor($a, $b) {
 +
    return $a > $b ? $a : $b;
 +
}
 +
echo "El mayor entre 5 y 10 es: " . mayor(5, 10) . "<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 31: Variables globales ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 31: Variables globales|
 +
* Declara una función que determine si un número es par.
 +
* Usa una variable generada en el script principal y pásala a la función.
 +
<source lang=php>
 +
$numero = rand(1, 100);
 +
function esPar($num) {
 +
    return $num % 2 == 0;
 +
}
 +
echo "El número $numero es " . (esPar($numero) ? "par" : "impar") . ".<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
=== Ejercicio 32: Parámetros por referencia ===
 +
<br />
 +
{{MRM_Actividad|Title=Ejercicio 32 : Parámetros por referencia|
 +
* Haz una función que no retorne nada.
 +
* Si el valor recibido es par, divídelo por dos. Si es impar, multiplícalo por dos.
 +
<source lang=php>
 +
function modificarValor(&$valor) {
 +
    if ($valor % 2 == 0) {
 +
        $valor /= 2;
 +
    } else {
 +
        $valor *= 2;
 +
    }
 +
}
 +
$num = rand(1, 100);
 +
modificarValor($num);
 +
echo "El nuevo valor es: $num<br />";
 +
</source>
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
 +
 +
 +
 +
===Ejercicios de sintaxis===
 +
<br />
 +
{{Actividad|Title=Ejercicios sencillos y mas complejos de php|
 +
; Ejercicios con operaciones aritméticas
 +
: http://www.mclibre.org/consultar/php/ejercicios/operaciones_aritmeticas/operaciones_aritmeticas.html
 +
; Condicionales y repeticiones
 +
: http://www.mclibre.org/consultar/php/ejercicios/if_else/if_else.html
 +
: http://www.mclibre.org/consultar/php/ejercicios/repaso_1/repaso.html
 +
; Expresiones regulares
 +
: Teoría: http://www.mclibre.org/consultar/php/lecciones/php_expresiones_regulares.html
 +
: Ejercicios: http://www.mclibre.org/consultar/php/ejercicios/expresiones_regulares/expresiones_regulares.html
 +
; Validación
 +
: Teoría: http://www.mclibre.org/consultar/php/lecciones/php_comprobacion_datos.html
 +
: http://www.mclibre.org/consultar/php/ejercicios/validacion/validacion.html
 +
; Listado interesante de ejercicos varios y de diferentes niveles
 +
: http://www.tecn.upf.es/~ocelma/cpom/practicas
 +
{{BotonIndice
 +
|enlace=#Tabla_de_Contenidos
 +
|texto=Volver al índice
 +
}}
 +
}}
  
 
<!--
 
<!--
Línea 235: Línea 1036:
 
-->
 
-->
  
 +
<!--
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10|Ejercicio 10: Cambiar aleatoriamente el estilo de un texto]]===
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10|Ejercicio 10: Cambiar aleatoriamente el estilo de un texto]]===
  
Línea 253: Línea 1055:
 
</ul>
 
</ul>
 
}}
 
}}
 +
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10_1|Ejercicio 10.1: Asiganción con heredoc]]===
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10_1|Ejercicio 10.1: Asiganción con heredoc]]===
  
Línea 433: Línea 1236:
 
   El año es divisible entre 4 y no lo es entre 100, o bien lo es entre 400
 
   El año es divisible entre 4 y no lo es entre 100, o bien lo es entre 400
 
}}
 
}}
 
+
-->
 
<!--
 
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio3 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio3 | Solución]]</font>
 
-->
 
-->
 +
<!--
 
<br />
 
<br />
  
Línea 473: Línea 1277:
 
#Mas de 800 12 %
 
#Mas de 800 12 %
 
*Nos debe de dar detalle del bruto, descuentos y neto de salario}}
 
*Nos debe de dar detalle del bruto, descuentos y neto de salario}}
 +
-->
 
<!--
 
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio4 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio4 | Solución]]</font>
 
-->
 
-->
 
+
<!--
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio23|Ejercicio 23: Número primo]]===
 
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio23|Ejercicio 23: Número primo]]===
 
<br />
 
<br />
Línea 487: Línea 1292:
 
}}
 
}}
  
 
+
-->
 
<!--
 
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio5 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio5 | Solución]]</font>
 
-->
 
-->
<br />
+
 
  
 
<!--
 
<!--
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio6 | Solución]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio6 | Solución]]</font>
 
-->
 
-->
 +
<!--
 
<br />
 
<br />
  
Línea 628: Línea 1434:
 
<br />
 
<br />
  
===Ejercicios de sintaxis===
+
 
<br />
+
 
{{Actividad|Title=Ejercicios sencillos y mas complejos de php|
+
; Ejercicios con operaciones aritméticas
+
: http://www.mclibre.org/consultar/php/ejercicios/operaciones_aritmeticas/operaciones_aritmeticas.html
+
; Condicionales y repeticiones
+
: http://www.mclibre.org/consultar/php/ejercicios/if_else/if_else.html
+
: http://www.mclibre.org/consultar/php/ejercicios/repaso_1/repaso.html
+
; Expresiones regulares
+
: Teoría: http://www.mclibre.org/consultar/php/lecciones/php_expresiones_regulares.html
+
: Ejercicios: http://www.mclibre.org/consultar/php/ejercicios/expresiones_regulares/expresiones_regulares.html
+
; Validación
+
: Teoría: http://www.mclibre.org/consultar/php/lecciones/php_comprobacion_datos.html
+
: http://www.mclibre.org/consultar/php/ejercicios/validacion/validacion.html
+
; Listado interesante de ejercicos varios y de diferentes niveles
+
: http://www.tecn.upf.es/~ocelma/cpom/practicas
+
}}
+
 
-->
 
-->

Última revisión de 01:11 20 nov 2024

Tabla de Contenidos

Estructuras secuenciales

Ejercicio 1: Usa la instrucción echo



Icon activity.jpg
  • Realiza un programa donde visualices un mensaje usando la instrucción echo.
  • Prueba a insertar caracteres especiales \n, \t.
  • ¿Qué diferencia hay en usar \n e insertar la etiqueta `
    `? Pruébalo y verifica la salida.




Ejercicio 2: Probando printf



Icon activity.jpg
Ejercicio 2 : Probando printf
  • Asigna a una variable un valor real.
  • Visualiza dicho valor con formato %s, %f, %F, %c, %x, %X, %b, %o.
  • Prueba a especificar en número de decimales en %f.



Ejercicio 3: printf, tabla ASCII



Icon activity.jpg
Ejercicio 3: printf, tabla ASCII
  • Usando la estructura de control for:
for ($n=32; $n<128; $n++){ 
    // iterará desde 32 hasta 128
}
  • Para mostrar una tabla básica, usa etiquetas HTML como:
<table>
    <caption></caption>
    <tr>
        <th>Título 1</th>
        <th>Título 2</th>
    </tr>
    <tr>
        <td>Valor</td>
    </tr>
</table>
  • Realiza el programa que genere dicha tabla.



Ejercicio 4: Ver tipos de variable



Icon activity.jpg
Ejercicio 4 : Ver tipos de variable
  • Asigna a una variable cada uno de los cinco tipos básicos.
  • Después de cada asignación visualiza el tipo con la función gettype().
$a = 10;
echo "Valor de la variable \$a es $a y es de tipo ".gettype($a)."<br />";



Ejercicio 5: Probando los tipos enteros



Icon activity.jpg
Ejercicio 5 : Probando los tipos enteros
  • Haz un programa que asigne diferentes valores enteros a las variables.
  • Realiza la asignación en distintos formatos (decimal, octal, hexadecimal y binario).
  • Prueba posteriormente a visualizarlos.
  • Analiza e interpreta el resultado.




Ejercicio 6: Funciones de conversión 1



Icon activity.jpg
Ejercicio 6 : Funciones de conversión 1
  • Usa las funciones especificadas anteriormente (`decbin`, `dechex`, `decoct`) para visualizar un número en diferentes formatos numéricos.
  • Muestra el valor original y el convertido.
  • En el primer caso muestra el tipo del valor que retorna la función usada.
$num = 10;
echo "Decimal: $num<br />";
echo "Binario: " . decbin($num) . "<br />";
echo "Hexadecimal: " . dechex($num) . "<br />";
echo "Octal: " . decoct($num) . "<br />";




Ejercicio 6.1: Trabajando con flotantes



Icon activity.jpg
Ejercicio 6.1 : Trabajando con flotantes
  • Define cuatro valores flotantes en notación decimal y científica.
  • Que tengan 1, 2, 3 y 4 números decimales respectivamente.
  • Visualízalos.
  • Intenta crearlos con la función `rand()`, no es trivial.
  • Utiliza `number_format` para mostrar los valores con diferentes números de decimales y en formato europeo.
  • Prueba algún otro formato usando la función `number_format`.
$float1 = 1.2;
$float2 = 1.23;
$float3 = 1.234;
$float4 = 1.2345;
 
echo "Formato Europeo: " . number_format($float1, 2, ',', '.') . "<br />";
echo "Formato Científico: " . sprintf("%.2E", $float2) . "<br />";




Ejercicio 7: Funciones de conversión



Icon activity.jpg
Ejercicio 7 : Funciones de conversión
  • Usa las funciones especificadas para visualizar en los tres sistemas decimales los números del 1 al 100.
  • ¿Qué diferencia hay en hacerlo así y usar `printf`?
for ($i = 1; $i <= 100; $i++) {
    echo "Número: $i, Binario: " . decbin($i) . ", Hexadecimal: " . dechex($i) . ", Octal: " . decoct($i) . "<br />";
}




Ejercicio 8: Declaración de variables 1



Icon activity.jpg
Ejercicio 8 : Declaración de variables 1
  • Haz un programa donde declares variables de diferentes tipos.
  • Asigna los valores con diferente formato.
  • Visualiza sus valores.
$int = 10;
$float = 20.5;
$string = "Esto es una cadena";
$bool = true;
 
echo "Entero: $int<br />";
echo "Flotante: $float<br />";
echo "Cadena: $string<br />";
echo "Booleano: " . ($bool ? 'true' : 'false') . "<br />";




Ejercicio 9: Declaración de variables 2



Icon activity.jpg
Ejercicio 9 : Declaración de variables 2
  • Este programa asignará los siguientes valores a variables y luego lo visualizará:
 ** 125
 ** 0874 // Observarás que esta asignación produce un error, ya que el 8 no es un dígito válido en el sistema octal.
 ** 0xAbC12
 ** 0b1100
 ** "Esto es una cadena de caracteres"
 ** 'Esto es otra cadena de caracteres'
 ** Cadena multilínea:
     ```
     Esto es una cadena
     multilínea
     y termina aquí.
     ```
 ** 1.23432230003322014000002234101
 ** 1234E-2
 ** null
 ** true
 ** false
$int = 125;
$octal = 0874; // Error
$hex = 0xAbC12;
$binary = 0b1100;
$string1 = "Esto es una cadena de caracteres";
$string2 = 'Esto es otra cadena de caracteres';
$float = 1.23432230003322014000002234101;
$scientific = 1234E-2;
$null = null;
$true = true;
$false = false;
 
echo "Entero: $int<br />";
echo "Hexadecimal: $hex<br />";
echo "Binario: $binary<br />";
echo "Cadena 1: $string1<br />";
echo "Cadena 2: $string2<br />";
echo "Flotante: $float<br />";
echo "Científico: $scientific<br />";
echo "Null: " . var_export($null, true) . "<br />";
echo "Booleano True: " . var_export($true, true) . "<br />";
echo "Booleano False: " . var_export($false, true) . "<br />";




Ejercicio 10: Cambiar aleatoriamente el estilo de un texto



Icon activity.jpg
Ejercicio 10 : Cambiar aleatoriamente el estilo de un texto
  • Carga un texto con un tamaño de encabezado `h` y color aleatorio.

<hx style="color:#RGB;">Este es el texto que debe de aparecer cambiante</hx>

  • `x`, `R`, `G` y `B` tendrán valores generados aleatoriamente:
 ** `x`: un valor de 1 a 6.
 ** `R`: un valor en hexadecimal de entre 0 y 255 (tonalidad de rojo).
 ** `G`: un valor en hexadecimal de entre 0 y 255 (tonalidad de verde).
 ** `B`: un valor en hexadecimal de entre 0 y 255 (tonalidad de azul).
$x = rand(1, 6);
$R = dechex(rand(0, 255));
$G = dechex(rand(0, 255));
$B = dechex(rand(0, 255));
 
echo "<h$x style='color:#$R$G$B;'>Texto aleatorio con estilo</h$x>";




Ejercicio 10.1: Asignación con heredoc



Icon activity.jpg
Ejercicio 10.1 : Asignación con heredoc
  • Vamos a construir una factura de dos productos.
  • Declaramos las siguientes variables:
$cliente = "Juan Pérez";
$fecha = date("d/m/Y");
$factura = 1;
$producto1 = "Cuadros";
$precio1 = rand(1, 100);
$producto2 = "Luminarias intensas";
$precio2 = rand(1, 100);
 
$facturaContent = <<<FACTURA
========================================
    FACTURA Número: $factura
========================================
Cliente: $cliente
Fecha: $fecha
Producto 1: $producto1 - Precio: $precio1 €
Producto 2: $producto2 - Precio: $precio2 €
========================================
FACTURA;
 
echo nl2br($facturaContent);




Ejercicio 11: Probando variables de variables



Icon activity.jpg
Ejercicio 11 : Probando variables de variables
  • Declara los precios de 5 productos de hortalizas.
  • Declara una variable `$producto`.
  • Visualiza el producto y su precio cambiando solo el valor de la variable `$producto`:
$tomate = 2.5;
$cebolla = 1.2;
$zanahoria = 1.8;
 
$producto = "tomate";
echo "El precio de $producto es ${$producto} €<br />";
 
$producto = "cebolla";
echo "El precio de $producto es ${$producto} €<br />";




Ejercicio 12: Selección simple



Icon activity.jpg
Ejercicio 12 : Selección simple
  • Genera un número aleatorio entre 1 y 100.
  • Si el número es par, informa que ha ganado un premio.
  • En cualquier caso, muestra el número obtenido:
$numero = rand(1, 100);
if ($numero % 2 == 0) {
    echo "¡Has ganado un premio! Número: $numero<br />";
} else {
    echo "Número obtenido: $numero<br />";
}




Ejercicio 13: Selección simple 2



Icon activity.jpg
Ejercicio 13 : Selección simple 2
  • Genera una edad entre 1 y 90 años.
  • Muestra la edad generada.
  • Si la edad es menor de 18 años, informa de ello en un mensaje en rojo:
$edad = rand(1, 90);
echo "Edad generada: $edad<br />";
if ($edad < 18) {
    echo "<span style='color:red;'>Menor de edad</span><br />";
}



Ejercicio: Selección con html



Icon activity.jpg
  • Un formulario que pida edad y nombre
  • En función de la edad mostraremos un texto y otro
  • Si es menor de edad mostramos un mensaje en color azul de fondo que es menor de dad
  • En el caso de ser mayor de edad mostramos otro texto con otro color
  • Usamos la estructura
<?php if (true): ?>
    <h1>Este contenido se mostrará</h1>
<?php else: ?>
    <h1>Este contenido no se mostrará</h1>
<?php endif; ?>





Ejercicio 14: Selección completa



Icon activity.jpg
Ejercicio 14 : Selección completa
  • Genera una edad entre 1 y 90 años.
  • El programa indicará si la edad generada corresponde a un menor o mayor de edad:
$edad = rand(1, 90);
if ($edad < 18) {
    echo "Edad: $edad. Es menor de edad.<br />";
} else {
    echo "Edad: $edad. Es mayor de edad.<br />";
}




Ejercicio 15: Selección múltiple con if


{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio15| Selección múltiple con if |

  • Genera un número entre 1 y 15.
  • Muestra el nombre del mes correspondiente al número (enero, febrero...).
  • Si el número es mayor de 12, muestra "Mes incorrecto".
$mes = rand(1, 15);
if ($mes == 1) {
    echo "Enero<br />";
} elseif ($mes == 2) {
    echo "Febrero<br />";
} // Continúa con los demás casos
else {
    echo "Mes incorrecto<br />";
}
 Volver al índice

}}

Ejercicio 16: Selección con switch



Icon activity.jpg
  • Genera un número de mes de forma aleatoria.
  • Muestra el número y el número de días que tiene
  • Realiza usando `switch`:

(Comment.gif: Intenta que se muestre también el nombre del mes junto con el número de días )


$mes = rand(1, 15);
switch ($mes) {
    case 1:
        $dias=31;
        break;
    case 2:
        $dias=29;
        break;
    // Continúa con los demás casos
    default:
        $dias =  "Mes incorrecto<br />";
}




Ejercicio 17: Muestra el nombre y el número de días de un mes



Icon activity.jpg
Ejercicio 17 : Muestra el nombre y el número de días de un mes
  • Modifica el ejercicio anterior añadiendo la información del número de días.
  • Intenta seguir usando el `switch`.
  • ¿Cómo podrás hacer cosas particulares en cada `case` del `switch` (el nombre del mes) y algo común en varios casos (meses de 30 días y de 31 días)?
$mes = rand(1, 12);
switch ($mes) {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        echo "Mes: Enero, Días: 31<br />";
        break;
    case 4: case 6: case 9: case 11:
        echo "Mes: Abril, Días: 30<br />";
        break;
    case 2:
        echo "Mes: Febrero, Días: 28 o 29<br />";
        break;
}




Ejercicio 18: Suma los 100 primeros números




Icon activity.jpg
Ejercicio 18 : Suma los 100 primeros números
  • Muestra la suma de los primeros 100 números naturales.
  • Visualiza cada paso en una tabla con las iteraciones.
$suma = 0;
echo "<table border='1'>";
echo "<tr><th>Iteración</th><th>Suma acumulada</th></tr>";
for ($i = 1; $i <= 100; $i++) {
    $suma += $i;
    echo "<tr><td>{$i}</td><td>{$suma}</td></tr>";
}
echo "</table>";




Ejercicio 19: Tirar dados



Icon activity.jpg
Ejercicio 19 : Tirar dados
  • Simula tirar un dado 100,000 veces.
  • Cuenta cuántas veces aparece cada número (1-6).
$resultados = array_fill(1, 6, 0);
for ($i = 0; $i < 100000; $i++) {
    $dado = rand(1, 6);
    $resultados[$dado]++;
}
foreach ($resultados as $cara => $veces) {
    echo "Cara $cara salió $veces veces<br />";
}




Ejercicio 20: Mostrar mes y su número de días




Icon activity.jpg
Ejercicio 20: Mostrar mes y su número de días
  • Genera un número aleatorio entre 1 y 15.
  • Muestra con un mensaje el nombre del mes y su número de días.
  • Usa la instrucción `switch` vista en clase.
$mes = rand(1, 15);
switch ($mes) {
    case 1:
        echo "Enero - 31 días<br />";
        break;
    case 2:
        echo "Febrero - 28 o 29 días<br />";
        break;
    case 3:
        echo "Marzo - 31 días<br />";
        break;
    // Continúa con los demás casos
    default:
        echo "Mes incorrecto<br />";
}




Ejercicio 20.1: Validar fechas



Icon activity.jpg
Ejercicio 20.1: Validar Fechas
  • Haz un programa que obtenga de forma aleatoria: día (1-33), mes (1-14) y año (1-3000).
  • Determina si la fecha es válida y muestra un mensaje.
  • Considera si el año es bisiesto.
$dia = rand(1, 33);
$mes = rand(1, 14);
$anio = rand(1, 3000);
 
if (checkdate($mes, $dia, $anio)) {
    echo "La fecha $dia/$mes/$anio es válida.<br />";
} else {
    echo "La fecha $dia/$mes/$anio no es válida.<br />";
}




Ejercicio 21: Tabla de multiplicar



Icon activity.jpg
Ejercicio 21 : Tabla de multiplicar
  • Genera un número aleatorio y muestra su tabla de multiplicar.
  • Haz que la tabla salga con las etiquetas HTML correspondientes:
$numero = rand(1, 10);
echo "<table border='1'>";
echo "<tr><th>Multiplicador</th><th>Resultado</th></tr>";
for ($i = 1; $i <= 10; $i++) {
    echo "<tr><td>$numero x $i</td><td>" . ($numero * $i) . "</td></tr>";
}
echo "</table>";




Ejercicio 22: Genera una nómina



Icon activity.jpg
Ejercicio 22 : Genera una nómina
  • Haz un programa que calcule una nómina.
  • Considera:
 ** Más de 40 horas son extras (1.5 el precio base).
 ** IRPF:
   *** < 600€ exento.
   *** Entre 600€ y 800€: 5%.
   *** Más de 800€: 12%.
  • Muestra detalle del bruto, descuentos y neto de salario.
$horas = rand(30, 50);
$precioHora = 10;
$bruto = $horas <= 40 ? $horas * $precioHora : (40 * $precioHora) + (($horas - 40) * $precioHora * 1.5);
 
if ($bruto < 600) {
    $irpf = 0;
} elseif ($bruto <= 800) {
    $irpf = $bruto * 0.05;
} else {
    $irpf = $bruto * 0.12;
}
$neto = $bruto - $irpf;
 
echo "Horas trabajadas: $horas<br />";
echo "Bruto: $bruto €<br />";
echo "IRPF: $irpf €<br />";
echo "Neto: $neto €<br />";




Ejercicio 23: Número primo



Icon activity.jpg
Ejercicio 23 : Número primo
  • Haz un programa que determine si un número es primo.
  • Recuerda que un número es primo si solo es divisible entre sí mismo y 1.
$numero = rand(1, 100);
$esPrimo = true;
 
if ($numero < 2) {
    $esPrimo = false;
} else {
    for ($i = 2; $i <= sqrt($numero); $i++) {
        if ($numero % $i == 0) {
            $esPrimo = false;
            break;
        }
    }
}
 
if ($esPrimo) {
    echo "El número $numero es primo.<br />";
} else {
    echo "El número $numero no es primo.<br />";
}




Ejercicio 24: Fechas básicas



Icon activity.jpg
Ejercicio 24 : Fechas básicas
  • Haz un programa que muestre:
 ** Cuántos segundos han pasado desde el 1 de enero de 1970 hasta el instante actual.
 ** La fecha actual en formato `Día/Mes/Año Hora:Minutos:Segundos`.
 ** La fecha dentro de 25 horas con el formato anterior.
 ** Una página que se recargue automáticamente cada 5 segundos usando la etiqueta `META Refresh`.
echo "Segundos desde 1/1/1970: " . time() . "<br />";
echo "Fecha actual: " . date("d/m/Y H:i:s") . "<br />";
echo "Fecha dentro de 25 horas: " . date("d/m/Y H:i:s", time() + (25 * 3600)) . "<br />";
<head>
  <meta http-equiv="refresh" content="5">
</head>




Ejercicio 25: Calcula tu edad


Ejercicio 25: Calcula la edad

Icon activity.jpg
Ejercicio 25 : Calcula la edad
  • A partir de tu fecha de nacimiento, haz un programa que calcule tu edad:
 ** Una opción aproximada es encontrar los segundos de tu edad y dividirlos entre los segundos que tiene un año.
 ** Busca una solución más precisa.
$fechaNacimiento = strtotime("1990-01-01");
$edadEnSegundos = time() - $fechaNacimiento;
$edadAprox = floor($edadEnSegundos / (365.25 * 24 * 3600));
echo "Tu edad aproximada es: $edadAprox años<br />";



Ejercicio 26: Haz un Reloj



Icon activity.jpg
Ejercicio 26 : Haz un reloj
  • Haz un programa que muestre un reloj digital numérico con precisión de milisegundos.
  • La página debe recargarse cada 0.01 segundos.
  • El formato del reloj debe ser `Hora:Minutos:Segundos:Milésimas`.
$microtime = microtime(true);
$milisegundos = sprintf("%03d", ($microtime - floor($microtime)) * 1000);
echo "Hora actual: " . date("H:i:s") . ":$milisegundos<br />";
<head>
  <meta http-equiv="refresh" content="0.01">
</head>




Ejercicio 27: Fecha aleatoria



Icon activity.jpg
Ejercicio 27 : Fecha aleatoria
  • Genera una fecha aleatoria (día, mes, año, hora, minuto, segundos) como un string.
  • Convierte ese string en un timestamp.
  • Obtén la diferencia en segundos con la fecha actual.
  • Interpreta y explica los resultados.
$fechaRandom = mktime(rand(0, 23), rand(0, 59), rand(0, 59), rand(1, 12), rand(1, 28), rand(1900, 2100));
echo "Fecha generada: " . date("d/m/Y H:i:s", $fechaRandom) . "<br />";
$diferenciaSegundos = time() - $fechaRandom;
echo "Diferencia en segundos con la fecha actual: $diferenciaSegundos<br />";




Ejercicio 28: Fecha en idiomas



Icon activity.jpg
Ejercicio 28 : Fecha en idiomas
  • Instala en el sistema los siguientes locales: `es_ES`, `fr_FR`, `en_US`.
  • Muestra la fecha actual en cada idioma.
setlocale(LC_ALL, "es_ES");
echo "Fecha en español: " . strftime("%A, %d de %B de %Y") . "<br />";
 
setlocale(LC_ALL, "fr_FR");
echo "Fecha en francés: " . strftime("%A, %d %B %Y") . "<br />";
 
setlocale(LC_ALL, "en_US");
echo "Fecha en inglés: " . strftime("%A, %B %d, %Y") . "<br />";




Ejercicio 29: Indica los días de la semana en idiomas



Icon activity.jpg
Ejercicio 29 : Indica los días de la semana en idiomas
  • Usa los mismos locales del ejercicio anterior (`es_ES`, `fr_FR`, `en_US`).
  • Muestra los nombres de los días de la semana en cada idioma.
$dias = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
foreach (["es_ES", "fr_FR", "en_US"] as $idioma) {
    setlocale(LC_ALL, $idioma);
    echo "Idioma: $idioma<br />";
    foreach ($dias as $dia) {
        echo strftime("%A", strtotime($dia)) . "<br />";
    }
}




Ejercicio 30: Declarar una función



Icon activity.jpg
Ejercicio 30 : Declarar una función
  • Declara una función que devuelva el mayor de dos números dados.
  • Invócala desde el programa principal.
function mayor($a, $b) {
    return $a > $b ? $a : $b;
}
echo "El mayor entre 5 y 10 es: " . mayor(5, 10) . "<br />";




Ejercicio 31: Variables globales



Icon activity.jpg
Ejercicio 31: Variables globales
  • Declara una función que determine si un número es par.
  • Usa una variable generada en el script principal y pásala a la función.
$numero = rand(1, 100);
function esPar($num) {
    return $num % 2 == 0;
}
echo "El número $numero es " . (esPar($numero) ? "par" : "impar") . ".<br />";




Ejercicio 32: Parámetros por referencia



Icon activity.jpg
Ejercicio 32 : Parámetros por referencia
  • Haz una función que no retorne nada.
  • Si el valor recibido es par, divídelo por dos. Si es impar, multiplícalo por dos.
function modificarValor(&$valor) {
    if ($valor % 2 == 0) {
        $valor /= 2;
    } else {
        $valor *= 2;
    }
}
$num = rand(1, 100);
modificarValor($num);
echo "El nuevo valor es: $num<br />";





Ejercicios de sintaxis