Plantilla:ManuelRomero/PHP/EjerciciosSintaxisBasica
De WikiEducator
Revisión a fecha de 12:44 9 dic 2025; ManuelRomero (Discusión | contribuciones)
Contenido
- 1 Estructuras secuenciales
- 1.1 Ejercicio 1: Usa la instrucción echo
- 1.2 Ejercicio 2: Probando printf
- 1.3 Ejercicio 3: printf, tabla ASCII
- 1.4 Ejercicio 4: Ver tipos de variable
- 1.5 Ejercicio 5: Probando los tipos enteros
- 1.6 Ejercicio 6: Funciones de conversión 1
- 1.7 Ejercicio 6.1: Trabajando con flotantes
- 1.8 Ejercicio 7: Funciones de conversión
- 1.9 Ejercicio 8.1: Declaración de variables 1
- 1.10 Ejercicio 9: Declaración de variables 2
- 1.11 Ejercicio 10: Cambiar aleatoriamente el estilo de un texto
- 1.12 Ejercicio 10.1: Asignación con heredoc
- 1.13 Ejercicio 11: Probando variables de variables
- 2 Estructuras de control
- 2.1 Ejercicio 12:Selección simple
- 2.2 Ejercicio 13:Selección simple 2
- 2.3 Ejercicio 13.1: Selección con función strpos Operador Comparacion
- 2.4 Ejercicio 14: Selección completa
- 2.5 Ejercicio 15: Selección múltiple con if
- 2.6 Ejercicio 100: Ecuación segundo grado
- 2.7 Ejercicio 16: Selección con switch
- 2.8 Ejercicio 17: Muestra el nombre y el número de días de un mes
- 2.9 Ejercicio 18: Suma los 100 primero números
- 2.10 Ejercicio 19: Bucles: tirar datos
- 2.11 Ejercicio 19_b: Bucles y operador desplazamiento
- 3 Actividad
Estructuras secuenciales
Ejercicio 1: Usa la instrucción echo
|
Ejercicio 2: Probando printf
|
Ejercicio 3: printf, tabla ASCII
for ($n=32; $n<128; $n++){ // iterará desde 32 hasta 128 }
<table> <caption></caption> <tr> <th>Título 1</th> <th>Título 2</th> </tr> <tr> <td>Valor</td> </tr> </table>
|
Ejercicio 4: Ver tipos de variable
$a = 10; echo "Valor de la variable \$a es $a y es de tipo ".gettype($a)."<br />";
|
Ejercicio 5: Probando los tipos enteros
|
Ejercicio 6: Funciones de conversión 1
$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
$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
for ($i = 1; $i <= 100; $i++) { echo "Número: $i, Binario: " . decbin($i) . ", Hexadecimal: " . dechex($i) . ", Octal: " . decoct($i) . "<br />"; }
|
Ejercicio 8.1: Declaración de variables 1
$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
** 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
<hx style="color:#RGB;">Este es el texto que debe de aparecer cambiante</hx>
** `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
|
El objetivo es generar una factura usando una **asignación con HEREDOC**. Para ello debemos preparar el texto formateado, alineando correctamente los productos y sus precios. También deberemos calcular:
''' para conservar los espacios.
<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);
///Resto del programa
</source>
<source lang=bash>
$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>
Para realizar este ejercicio podemos usar estas funciones
;Funciones necesarias
<source lang=php> number_format() </source>
*Sirve para dar formato a números, especialmente **precios**, añadiendo decimales:
<source lang=php>
$precioFormateado = number_format($precio1, 2); // 5 → "5.00"
</source>
La usaremos para mostrar precios como:
12.00 €
78.50 €
<source lang=php> 2. str_pad() </source>
Sirve para '''alinear texto en columnas''', rellenando con espacios por la izquierda o derecha.
Formato:
<source lang=php>
str_pad(cadena, longitudTotal, " ", STR_PAD_RIGHT);
str_pad(cadena, longitudTotal, " ", STR_PAD_LEFT);
</source>
Ejemplo práctico para este ejercicio:
<source lang=php>
// Alinear a la izquierda el nombre del producto
$prod1Alineado = str_pad($producto1, 25, " ", STR_PAD_RIGHT);
// Alinear a la derecha el precio formateado
$precio1F = number_format($precio1, 2);
$precio1Alineado = str_pad($precio1F, 8, " ", STR_PAD_LEFT);
</source>
}}
=== 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
}}
}}
==Ejercicios de selección==
=== 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 17(Con imágenes): Tirar un dado ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/17_TirarDado|Ejercicio 17(Con imágenes): Tirar un dado]]|
* Tenemos un index.php que nos muestra 6 dados según imagenes
<gallery>
image:dado_1.png
image:dado_2.png
image:dado_3.png
image:dado_4.png
image:dado_5.png
image:dado_6.png
</gallery>
Se trata de hacer un programa que apuestes por un dado
El programa generará un valor aleatorio y me dirás si he ganado o perdido.
Se puede usar un formulario como sigue:
<source lang=php>
<form action="jugar.php" method="post">
<div style="margin: 0px auto;width:100%; text-align: center">
<button type="submit" name="dado" value="1">
<img src="./imagenes/dado_1.png" alt="">
</button>
<button type="submit" name="dado" value="2">
<img src="./imagenes/dado_2.png" alt="">
</button>
<button type="submit" name="dado" value="3">
<img src="./imagenes/dado_3.png" alt="">
</button>
<button type="submit" name="dado" value="4">
<img src="./imagenes/dado_4.png" alt="">
</button>
<button type="submit" name="dado" value="5">
<img src="./imagenes/dado_5.png" alt="">
</button>
<button type="submit" name="dado" value="6">
<img src="./imagenes/dado_6.png" alt="">
</button>
</form>
</source>
Al ser lo button de tipo submit, al presionar uno de ellos iremos al fichero '''jugar.php''' y podremos obtener el valor del botón presionado
<source lang=php>
$dado = $_POST['dado'];
</source>
{{MRM_Puntos clave|title=opcional|
;Si quieres un ejecto visual puedes recagar la página cada segundo y que vaya apareciendo los dados
*Para ello has de añadir una etiqueta meta de tipo refresh en la cabecera de la página
<source lang=html5>
<meta http-equiv="refresh" content="1">
</source>
;Esto hará que la página se cargue cada seguno
[[Archivo:dado_animado.gif|center]]
}}
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio repaso de match: calculadora ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/Calculadora|Ejercicio repaso de match: calculadora]]|
*Usando el match y un formulario simple, realiza una calculadora con las operaciones básica
[[Archivo:form_calculadora_basica.png]]
*Al seleccionar '''calcular''' nos mostrará el resultado
[[Archivo:resultado.png]]
*En caso de que el valor no sea numérico, asignaremos un número aleatorio del 1 al 100
}}
==Ejercicios con bucles==
=== 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.
<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
}}
}}
=== Ejercicio 19: Tirar dados ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/Dados|Ejercicio 19: Tirar dados]]|
* Simula tirar un dado 100,000 veces.
* Cuenta cuántas veces aparece cada número (1-6).
* Prueba a hacerlo tanto con '''rand''' como con '''mt_rand'''.
* Puedes mostrar el resultado usando las imágenes de dados para darle un aspecto más visual:
<gallery>
image:dado_1.png
image:dado_2.png
image:dado_3.png
image:dado_4.png
image:dado_5.png
image:dado_6.png
</gallery>
<br />
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio 19: Buscar parejas tirando dados ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/TirarDadosParejas|Ejercicio 19 : Buscar parejas tirando dados]]|
* Tiramos los dados hasta que nos salgan 2 veces el mismo número
* Mostramos el número que nos ha salido en pareja
* Mostramos el número de tiradas
* Se puede usar las imágenes
<gallery>
image:dado_1.png
image:dado_2.png
image:dado_3.png
image:dado_4.png
image:dado_5.png
image:dado_6.png
</gallery>
{{Nota|Puedes añadirle al juego que apuestes por la pareja que va a salir, parecido al ejercicio de tirar dados}}
</source>
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio 19: Genera Números de Bonoloto ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/Bonoloto|Ejercicio 19 : Genera Números de Bonoloto]]|
* Generamos 5 números para la bonoloto
* Importante es asegurar que los números no se puedan repetir
* Puedes usar este css para los estilos
{{Plegable|hide|Estilos para los números|
<source lang=css>
body {
font-family: Arial, sans-serif;
text-align: center;
background-color: #f9f9f9;
padding: 20px;
}
fieldset {
border: 2px solid #0a3622;
border-radius: 10px;
display: inline-block;
padding: 20px;
background-color: #ffffff;
}
legend {
font-weight: bold;
color: #0a3622;
}
.bonoloto {
display: inline-block;
width: 60px;
height: 60px;
line-height: 60px;
margin: 10px;
background-color: #ffffff;
color: #000000;
font-size: 1.5em;
font-weight: bold;
text-align: center;
border: 2px solid #000000;
border-radius: 50%; /* Hace que el elemento sea un círculo */
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); /* Sombra para darle profundidad */
}
h1 {
color: #0a3622;
font-size: 1.8em;
}
</source>
Entonces los números los mostrarás con la clase '''bonoloto'''
<source lang=php>
<span class="bonoloto"><?= $numero_1 ?></span>
//....
</source>
}}
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio 19 :Genera una tabla ASCII completa ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/TablaAsciiCompleta|Ejercicio 19 :Genera una tabla ASCII completa]]|
*Creamos una tabla ascii, desde el 33 hasta el 126 código
*Puedes (debes) usar estas funciones (una de ellas, o prueba a hacerlo con las dos)
<source lang=php>
chr($numero) //retorna el carácter en ascii del código que se pasa como argumento
printf ("%d - %c", $numero, $numero); //Esta función
// visualiza con formato decimal (%d) y carácter (%c),
//los valores pasados como últimos argumentos
</source>
*Genera la salida en una tabla html
*Intenta dar un número de columas (por ejemplo 6 columnas)
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio 19 :Sistemas numéricos ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/SistemaNumerico|Ejercicio 19 Sistemas numéricos ]]|
*Creamos una tabla con los la representación de sistemas numéricos
*Mostraremos en binario, octal, hexadecimal y decimal
*Los números desde el 0 hasta el 50
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== Ejercicio 19 :Tabla de multiplicar completa ===
<br />
{{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/TablaMultiplicarCompleta|Ejercicio 19 tabla de multiplicar completa ]]|
*Creamos una tabla con las multiplicaciones
* La imagen muestra el objetivo que pretendemos:
[[Archivo:tabla_multiplicar.png]]
{{BotonIndice
|enlace=#Tabla_de_Contenidos
|texto=Volver al índice
}}
}}
=== 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|
* 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.
<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
}}
}}
===Ejercicio 20.1: Validar fechas===
<br />
{{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.
* 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
}}
}}
=== 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);
$bruto = match(true){
$bruto<600=>0,
$brto <=800 => $bruto * 0,05,
default => $bruot * 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
}}
}}
<!--
==Estructuras secuenciales==
*En esta secición son programas sencillos para probar instrucciones y acciones básicas de php sin usar estructuras de control selectivas o repetitivas.
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 1: Usa la instrucción echo]]===
<br />
{{MRM_Actividad|Title=Ejercicio 1 : Usa la instrucción echo|
*Realiza un programa donde visualices un mensaje usando la instrucción '''''echo'''''
*Prueba a insetar caracteres especiales \n, \t
*Qué diferenica hay en usar '''''\n''''' e insertar la etiquega <source lang=html5><br/></source>, pruébalo y verifica la salida (mira el código fuelte del recurso generado.
*Declara variable como se muestra y visualízarla.
<source lang=php>
$nombre = "Maria"
</source>
}}
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 2: Probando printf]]===
<br />
{{MRM_Actividad|Title=Ejercicio 2 : [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio2|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
<source lang=php>
$n = 5.25251;
printf ("Valor del número con 2 decimales %.2f ",, $n); //Mostrará 5.25, solo dos decimales
</source>
}}
<br />
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio3|Ejercicio 3: printf, tabla ascii ]]===
<br />
{{MRM_Actividad|Title=Ejercicio 3 : [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio3|printf, tabla ascii ]]|
*Usando la estructura de control '''''for'''''
<source lang=php>
for ($n=32; $n<128: $n++){ //iterará $n desde 32 hasta el valor 128
}
</source>
*Para mostrar una tabla básica, las etiquetas '''''html''''' serán
<source lang=html5>
<table>
<caption></caption>
<tr>
<th>titulo 1</th>
<th>titulo 2</th>
<tr>
<td></td>
......
</table>
</source>
*Realiza el programa que genere dicha información
}}
<br />
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio4|Ejercicio 4: Ver tipos de variable]]===
<br />
{{MRM_Actividad|Title=Ejercicio 4 : [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio4|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>
}}
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 5: Probando los tipos enteros]]===
<br />
{{MRM_Actividad|Title=Ejercicio 5:[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio5| Probando los tipos enteros]]|
*Haz un programa que asignes diferentes valores enteros a las variables.
*Realiza la asignación en distinto formato (decimal, octal, hexadecimal y binario).
*Prueba posteriormente a visualziarlo.
*Analiza e interpreta el resultado.
}}
<br />
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 6: Funciones de conversión 1]]===
<br />
{{MRM_Actividad|Title = Ejercicio 6 : [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio6|Funciones de conversión 1]]|
*Usa las fuciones especificadas anteriormente (decbin, dechex, decoct), para visualizar un número en los diferentes formatos numéricos
*Muestra el valor original, el convertido
*En el primer caso muestra el tipo del valor que retorna la función usada
}}
<br />
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio6_1|Ejercicio 6.1 Trabajando con flotantes]]===
<br />
{{MRM_Actividad|Title=Ejercicio 6.1: [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio6_1|Ejercicio 6.1 Trabajando con flotantes]]|
*Define cuatro valores flotantes en notación decimal y científica.
*Que tengas 1,2,3 y 4 número decimales respectivamente
*Visualízalos
*Intenta crearlos con la función rand(), no es trivial.
*Utiliza ''number_format'' para mostrar los valores con diferentes 2 números de decimales y en formato europeo.
*Prueba algún otro formato usando la función number_format
https://www.php.net/manual/es/function.number-format.php
}}
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio1|Ejercicio 7: Funciones de conversión]]===
<br />
{{MRM_Actividad|Title = Ejercicio 7 : [[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio7|Funciones de conversión]]|
*Usa las fuciones especificadas para visualizar en los tres sistemas decimales los números del 1 al 100
*Qué diferencia hay de hacerlo así a usar '''''printf'''''
}}
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio8|Ejercicio 8: Declaración de variables 1]]===
<br />
{{MRM_Actividad|Title=Ejercicio 8.- Declaración de variables|
*Haz un programa donde declares variables de diferentes tipos
*Asigna los valores con diferente formato
*Visualiza sus valores
}}
<br />
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio9|Ejercicio 9: Declaración de variables 2]]===
<br />
{{MRM_Actividad|Title=Ejercicio 9: Declaración de variables|
*Este programa asignará los siguientes valores a variables y luego lo visualizará
**125;
**0874; //Observaras que esta asignación produce un error, ya que el 8,no es un dígito o guarismo correcto como valor en una
sistema octal
//Tras esta observación asigna un valor válido
**0xAbC12;
**0b1100;
**"Esto es una cadena de caracteres";
**'Esto es otra cadena de caracteres';
Esto es una cadena
multilínea
y termina aquí
Esto es una cadena
multilínea
y termina aquí
**1.23432230003322014000002234101;
**1234E-2;
**null;
**true;
**false;
}}
<!--
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio1 | Solución]]</font>
-->
<!--
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10|Ejercicio 10: Cambiar aleatoriamente el estilo de un texto]]===
<br />
{{MRM_Actividad|Title=Ejercicio 10: Cambiar aleatoriamente el estilo de un texto|
*Cargar un texto con un 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 siendo
<ul>
<li><strong>x</strong> un valor de 1 a 6.</li>
<li><strong>R</strong> un valor en hexadecimal de entre 0 y 255 (tonalidad de rojo)</li>
<li><strong>G</strong> un valor en hexadecimal de entre 0 y 255 (tonalidad de Verde)</li>
<li><strong>B</strong> un valor en hexadecimal de entre 0 y 255 (tonalidad de Azul)</li>
</ul>
}}
===[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio10_1|Ejercicio 10.1: Asiganció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>
// Definir algunas 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);
</source>
*Queremos llegar a obtener el siguiente resultado
[[archivo:ejercicio_factura_php.png|300px|center]]
* Para ello se pide que hagas una asignación '''heredoc''' a una variable llamada '''$factura''' y luego la visualices
*Usa la etiqueta '''<pre>''' para mantener el formato
<source lang=php>
$factura=<<<FIN
<pre>
========================================
FACTURA Número: $factura_numero
========================================
. . .
FIN; echo $factura </source>
|
Ejercicio 11: Probando variables de variables
echo "<h1>El precio de $producto es ${$producto}</h1>";
|
Estructuras de control
Ejercicio 12:Selección simple
Ejercicio 13:Selección simple 2
Ejercicio 13.1: Selección con función strpos Operador Comparacion
Puesde, como mejora, mostrar en qué posición está
|
Ejercicio 14: Selección completa
Ejercicio 15: Selección múltiple con if
Ejercicio 100: Ecuación segundo grado
Ejercicio 16: Selección con switch
Ejercicio 17: Muestra el nombre y el número de días de un mes
|
Ejercicio 18: Suma los 100 primero números
Ejercicio 19: Bucles: tirar datos
Ejercicio 19_b: Bucles y operador desplazamiento
Ejercicio 20:Mostrar mes y número de días
Ejercicio 20: Validar Fechas
|
Haz un programa que obtenga de forma aleatoria: día (1-33), mes(1-14) y año(1-3000) y nos diga si la fecha es correcta o no y porqué.
El año es divisible entre 4 y no lo es entre 100, o bien lo es entre 400
|
-->

