Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/EjerciciosSintaxisBasica»
De WikiEducator
(→Ejercicio 16: Selección con switch) |
|||
(19 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 4: | Línea 4: | ||
** [[#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, | + | ** [[#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_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_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 23: | 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: | + | ** [[#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.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: | + | ** [[#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 41: | ||
** [[#Ejercicio_32:_Parámetros_por_referencia|Ejercicio 32: Parámetros por referencia]] | ** [[#Ejercicio_32:_Parámetros_por_referencia|Ejercicio 32: Parámetros por referencia]] | ||
− | == Estructuras secuenciales == | + | * [[#Ejercicios_de_sintaxis|Ejercicios de sintaxis]] |
+ | |||
+ | ==Estructuras secuenciales== | ||
+ | |||
+ | |||
+ | ===Ejercicio 1: Usa la instrucción echo=== | ||
+ | |||
− | |||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 1 : Usa la instrucción echo| | + | {{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. | ||
Línea 59: | Línea 64: | ||
{{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. |
− | * | + | * Prueba a especificar en número de decimales en %f. |
{{BotonIndice | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 66: | Línea 71: | ||
}} | }} | ||
}} | }} | ||
− | |||
=== Ejercicio 3: printf, tabla ASCII === | === Ejercicio 3: printf, tabla ASCII === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 3 : printf, tabla ASCII| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 77: | Línea 99: | ||
}} | }} | ||
}} | }} | ||
− | |||
=== Ejercicio 4: Ver tipos de variable === | === Ejercicio 4: Ver tipos de variable === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 4: Ver tipos de variable| | + | {{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> | <source lang=php> | ||
$a = 10; | $a = 10; | ||
Línea 92: | Línea 113: | ||
}} | }} | ||
}} | }} | ||
− | |||
=== Ejercicio 5: Probando los tipos enteros === | === Ejercicio 5: Probando los tipos enteros === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 5: Probando los tipos enteros| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 106: | Línea 128: | ||
=== Ejercicio 6: Funciones de conversión 1 === | === Ejercicio 6: Funciones de conversión 1 === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 6: Funciones de conversión 1| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 117: | Línea 147: | ||
=== Ejercicio 6.1: Trabajando con flotantes === | === Ejercicio 6.1: Trabajando con flotantes === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 6.1: Trabajando con flotantes| | + | {{MRM_Actividad|Title=Ejercicio 6.1 : Trabajando con flotantes| |
− | * Define valores flotantes en notación decimal y científica con | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 128: | Línea 171: | ||
=== Ejercicio 7: Funciones de conversión === | === Ejercicio 7: Funciones de conversión === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 7: Funciones de conversión| | + | {{MRM_Actividad|Title=Ejercicio 7 : Funciones de conversión| |
− | * Usa las funciones especificadas para visualizar números del 1 al 100 | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 139: | Línea 187: | ||
=== Ejercicio 8: Declaración de variables 1 === | === Ejercicio 8: Declaración de variables 1 === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 8: Declaración de variables 1| | + | {{MRM_Actividad|Title=Ejercicio 8 : Declaración de variables 1| |
− | * | + | * Haz un programa donde declares variables de diferentes tipos. |
− | * Asigna valores | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 150: | Línea 210: | ||
=== Ejercicio 9: Declaración de variables 2 === | === Ejercicio 9: Declaración de variables 2 === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 9: Declaración de variables 2| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 158: | Línea 258: | ||
}} | }} | ||
}} | }} | ||
+ | |||
=== Ejercicio 10: Cambiar aleatoriamente el estilo de un texto === | === Ejercicio 10: Cambiar aleatoriamente el estilo de un texto === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 10: Cambiar aleatoriamente el estilo de un texto| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 172: | Línea 289: | ||
=== Ejercicio 10.1: Asignación con heredoc === | === Ejercicio 10.1: Asignación con heredoc === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 10.1: Asignación con heredoc| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 184: | Línea 322: | ||
=== Ejercicio 11: Probando variables de variables === | === Ejercicio 11: Probando variables de variables === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 11: Probando variables de variables| | + | {{MRM_Actividad|Title=Ejercicio 11 : Probando variables de variables| |
− | * Declara | + | * 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> | <source lang=php> | ||
− | $ | + | $tomate = 2.5; |
− | $producto = " | + | $cebolla = 1.2; |
− | echo "El precio de $producto es ${$producto}"; | + | $zanahoria = 1.8; |
+ | |||
+ | $producto = "tomate"; | ||
+ | echo "El precio de $producto es ${$producto} €<br />"; | ||
+ | |||
+ | $producto = "cebolla"; | ||
+ | echo "El precio de $producto es ${$producto} €<br />"; | ||
</source> | </source> | ||
{{BotonIndice | {{BotonIndice | ||
Línea 200: | Línea 345: | ||
=== Ejercicio 12: Selección simple === | === Ejercicio 12: Selección simple === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 12: Selección simple| | + | {{MRM_Actividad|Title=Ejercicio 12 : Selección simple| |
* Genera un número aleatorio entre 1 y 100. | * Genera un número aleatorio entre 1 y 100. | ||
− | * Si el número es par, | + | * Si el número es par, informa que ha ganado un premio. |
− | * En cualquier caso, muestra el número obtenido | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 212: | Línea 365: | ||
=== Ejercicio 13: Selección simple 2 === | === Ejercicio 13: Selección simple 2 === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 13: Selección simple 2| | + | {{MRM_Actividad|Title=Ejercicio 13 : Selección simple 2| |
− | * Genera una edad | + | * Genera una edad entre 1 y 90 años. |
* Muestra la edad generada. | * Muestra la edad generada. | ||
− | * Si la edad es menor de 18 años, informa de ello en un mensaje | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 224: | Línea 405: | ||
=== Ejercicio 14: Selección completa === | === Ejercicio 14: Selección completa === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 14: Selección completa| | + | {{MRM_Actividad|Title=Ejercicio 14 : Selección completa| |
− | * Genera una edad | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 235: | Línea 424: | ||
=== Ejercicio 15: Selección múltiple con if === | === Ejercicio 15: Selección múltiple con if === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title= | + | {{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio15| Selección múltiple con if | |
− | * Genera un número | + | |
− | * Muestra el nombre del mes correspondiente al número. | + | * Genera un número entre 1 y 15. |
− | * Si el número es mayor de 12, | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 248: | Línea 448: | ||
=== Ejercicio 16: Selección con switch === | === Ejercicio 16: Selección con switch === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 16: Selección con switch| | + | {{MRM_Actividad|Title=[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/ejercicios/ejercicio16|Ejercicio 16 : Selección con switch]]| |
* Genera un número de mes de forma aleatoria. | * Genera un número de mes de forma aleatoria. | ||
− | * Muestra el | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 260: | Línea 477: | ||
=== 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 === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 17: Muestra el nombre y número de días de un mes| | + | {{MRM_Actividad|Title=Ejercicio 17 : Muestra el nombre y el número de días de un mes| |
− | * Modifica el ejercicio anterior | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 269: | Línea 501: | ||
}} | }} | ||
− | === Ejercicio 18: Suma | + | === Ejercicio 18: Suma los 100 primeros números === |
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 18: Suma | + | |
− | * | + | |
− | * | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 282: | Línea 526: | ||
=== Ejercicio 19: Tirar dados === | === Ejercicio 19: Tirar dados === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 19: Tirar dados| | + | {{MRM_Actividad|Title=Ejercicio 19 : Tirar dados| |
− | * Simula | + | * Simula tirar un dado 100,000 veces. |
− | * Cuenta cuántas veces aparece cada número (1 | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 290: | Línea 544: | ||
}} | }} | ||
}} | }} | ||
+ | |||
=== Ejercicio 20: Mostrar mes y su número de días === | === Ejercicio 20: Mostrar mes y su número de días === | ||
<br /> | <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 | + | * Genera un número aleatorio entre 1 y 15. |
− | * Muestra el nombre del mes | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 302: | Línea 576: | ||
}} | }} | ||
− | === Ejercicio 20.1: Validar fechas === | + | ===Ejercicio 20.1: Validar fechas=== |
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 20.1: Validar | + | {{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 | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 316: | Línea 601: | ||
=== Ejercicio 21: Tabla de multiplicar === | === Ejercicio 21: Tabla de multiplicar === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 21: Tabla de multiplicar| | + | {{MRM_Actividad|Title=Ejercicio 21 : Tabla de multiplicar| |
− | * Genera un número aleatorio y muestra su tabla de multiplicar | + | * Genera un número aleatorio y muestra su tabla de multiplicar. |
− | * Haz que | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 327: | Línea 621: | ||
=== Ejercicio 22: Genera una nómina === | === Ejercicio 22: Genera una nómina === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 22: Genera una nómina| | + | {{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: |
− | * Entre 600€ y 800€: 5%. | + | *** < 600€ exento. |
− | * Más de 800€: 12%. | + | *** 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 343: | Línea 657: | ||
=== Ejercicio 23: Número primo === | === Ejercicio 23: Número primo === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 23: Número primo| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 355: | Línea 689: | ||
=== Ejercicio 24: Fechas básicas === | === Ejercicio 24: Fechas básicas === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 24: Fechas básicas| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 366: | Línea 711: | ||
}} | }} | ||
− | === Ejercicio 25: Calcula | + | === Ejercicio 25: Calcula tu edad === |
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 25: Calcula la edad| | + | ==Ejercicio 25: Calcula la edad== |
− | * | + | |
− | * | + | {{MRM_Actividad|Title=Ejercicio 25 : Calcula la edad| |
− | * Busca una solución más precisa | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 377: | Línea 730: | ||
}} | }} | ||
}} | }} | ||
− | + | === Ejercicio 26: Haz un Reloj === | |
− | === Ejercicio 26: Haz un | + | |
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 26: Haz un reloj| | + | {{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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 393: | Línea 754: | ||
=== Ejercicio 27: Fecha aleatoria === | === Ejercicio 27: Fecha aleatoria === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 27: Fecha aleatoria| | + | {{MRM_Actividad|Title=Ejercicio 27 : Fecha aleatoria| |
− | * Genera una fecha aleatoria (día, mes, año, hora, minuto, | + | * Genera una fecha aleatoria (día, mes, año, hora, minuto, segundos) como un string. |
− | * Convierte | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 405: | Línea 773: | ||
=== Ejercicio 28: Fecha en idiomas === | === Ejercicio 28: Fecha en idiomas === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 28: Fecha en idiomas| | + | {{MRM_Actividad|Title=Ejercicio 28 : Fecha en idiomas| |
− | * Instala los locales `es_ES`, `fr_FR` | + | * Instala en el sistema los siguientes locales: `es_ES`, `fr_FR`, `en_US`. |
− | * Muestra la fecha en cada | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 416: | Línea 794: | ||
=== Ejercicio 29: Indica los días de la semana en idiomas === | === Ejercicio 29: Indica los días de la semana en idiomas === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 29: Indica los días de la semana en idiomas| | + | {{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 | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 427: | Línea 815: | ||
=== Ejercicio 30: Declarar una función === | === Ejercicio 30: Declarar una función === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 30: Declarar una función| | + | {{MRM_Actividad|Title=Ejercicio 30 : Declarar una función| |
* Declara una función que devuelva el mayor de dos números dados. | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 439: | Línea 833: | ||
<br /> | <br /> | ||
{{MRM_Actividad|Title=Ejercicio 31: Variables globales| | {{MRM_Actividad|Title=Ejercicio 31: Variables globales| | ||
− | * Declara una función que | + | * 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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 449: | Línea 850: | ||
=== Ejercicio 32: Parámetros por referencia === | === Ejercicio 32: Parámetros por referencia === | ||
<br /> | <br /> | ||
− | {{MRM_Actividad|Title=Ejercicio 32: Parámetros por referencia| | + | {{MRM_Actividad|Title=Ejercicio 32 : Parámetros por referencia| |
− | * | + | * Haz una función que no retorne nada. |
− | * Si el valor es par, divídelo por dos | + | * Si el valor recibido es par, divídelo por dos. Si es impar, multiplícalo por dos. |
− | * El valor | + | <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 | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 459: | Línea 871: | ||
}} | }} | ||
− | === Ejercicios de sintaxis === | + | |
+ | |||
+ | ===Ejercicios de sintaxis=== | ||
<br /> | <br /> | ||
− | {{Actividad|Title=Ejercicios de | + | {{Actividad|Title=Ejercicios sencillos y mas complejos de php| |
; Ejercicios con operaciones aritméticas | ; Ejercicios con operaciones aritméticas | ||
− | : | + | : http://www.mclibre.org/consultar/php/ejercicios/operaciones_aritmeticas/operaciones_aritmeticas.html |
; Condicionales y repeticiones | ; 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 | ; 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 | ; 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 | + | ; Listado interesante de ejercicos varios y de diferentes niveles |
− | : | + | : http://www.tecn.upf.es/~ocelma/cpom/practicas |
{{BotonIndice | {{BotonIndice | ||
|enlace=#Tabla_de_Contenidos | |enlace=#Tabla_de_Contenidos | ||
Línea 480: | Línea 894: | ||
}} | }} | ||
}} | }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!-- | <!-- | ||
Línea 630: | 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 648: | 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 828: | 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 868: | 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 882: | 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> | ||
--> | --> | ||
− | + | ||
<!-- | <!-- | ||
<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 1023: | Línea 1434: | ||
<br /> | <br /> | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
--> | --> |
Revisión de 01:11 20 nov 2024
Tabla de Contenidos
- Estructuras secuenciales
- Ejercicio 1: Usa la instrucción echo
- Ejercicio 2: Probando printf
- Ejercicio 3: printf, tabla ASCII
- Ejercicio 4: Ver tipos de variable
- Ejercicio 5: Probando los tipos enteros
- Ejercicio 6: Funciones de conversión 1
- Ejercicio 6.1: Trabajando con flotantes
- Ejercicio 7: Funciones de conversión
- Ejercicio 8: Declaración de variables 1
- Ejercicio 9: Declaración de variables 2
- Ejercicio 10: Cambiar aleatoriamente el estilo de un texto
- Ejercicio 10.1: Asignación con heredoc
- Ejercicio 11: Probando variables de variables
- Estructuras de control
- Ejercicio 12: Selección simple
- Ejercicio 13: Selección simple 2
- Ejercicio 14: Selección completa
- Ejercicio 15: Selección múltiple con if
- Ejercicio 16: Selección con switch
- 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 19: Tirar dados
- Ejercicio 20: Mostrar mes y su número de días
- Ejercicio 20.1: Validar fechas
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: 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
$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
$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
$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
$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
<?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
$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 />"; }
}}
Ejercicio 16: Selección con switch
Ejercicio 17: Muestra el nombre y el número de días de un mes
$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
$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
$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
$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
$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
$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
** 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%.
$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
$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
** 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
** 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
$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
$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
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
$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
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
$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
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
|