Y más ejercicios!!

1.- Con la función tirarMonedas que ya tenemos hecha, realizar una función llamada sucesionMonedas($cantidad) a la que le pasemos una cantidad y nos devuelva un array con tantas tiradas de monedas como la cantidad que le pasemos. Ejemplo:

sucesionMonedas(4)->[‘cara’,’cara’,’cruz’,’cara’]

2.- Realizar una función verMonedas($array) a la que le pasemos un array de tiradas (como el que devuelve el ejercicio anterior) y nos devuelva ‘caras’ si hay más caras que cruces y ‘cruces’ en el caso contrario. Si hay la misma cantidad devuelve ‘iguales’. Ejemplo:

$t=[‘cara’,’cara’,’cruz’,’cara’];

verMonedas($t) – >’caras’

$t=[‘cara’,’cruz’,’cruz’,’cara’];

verMonedas($t) – >’iguales’

$t=[‘cruz’,’cruz’,’cruz’,’cara’];

verMonedas($t) – >’cruces’

3.- Realizar una función triplesMonedas($array,$tipo) que pasándole un array del mismo tipo que el anterior y un string con ‘cara’ o ‘cruz’ nos devuelva true si hay tres caras o tres cruces seguidas. Ejemplo:

$t=[‘cara’,’cara’,’cruz’,’cara’];

triplesMonedas($t,’cara’)->false

$t=[‘cruz’,’cara’,’cara’,’cara’];

triplesMonedas($t,’cara’)->true

4.- Vamos a meternos en web y vamos a realizar un juego. Hay dos jugadores, A y B. Cada uno de ellos elije una combinación de tres tiradas. Por ejemplo, ‘cara’,’cara’,’cruz’ o ‘cruz’,’cruz’,’cruz’. Una vez elegidos le dan a enviar. El programa comenzará a tirar monedas hasta que salga la jugada de uno de los jugadores. En ese momento se detiene y dice que jugador ha ganado. Si eligen el ejemplo tendríamos:

‘cruz’,’cara’,’cruz’,’cara’,’cara’,’cara’,’cruz’ (Y en este momento nos detenemos porque ha salido la jugada del jugador A)

Ejercicios

1.- Crear una función que tire un dado el número de veces que le pasemos y nos devuelva el número de veces que ha salido el número que le indiquemos. Ej veces(100,3)->tirará un dado 100 veces y nos devolverá las veces que ha salido el 3
2.- Crear una función como la de tirarDado pero que en vez de tirar un dado nos tire dos y nos devuelva la suma: tirar2Dados()-> devuelve la suma.
3.- Crear una función tirarMoneda que nos devuelva cara o cruz aleatoriamente.
4.- Crear una función que tire una moneda el número de veces que le pasemos y que diga el número de caras que han aparecido. contarCaras(veces)
5.- La misma función que la anterior pero que devuelva un array con el número de caras en la primera posición (0) y el número de cruces en la segunda (1)
6.- Crear una función a la que le pasemos un array de números y nos devuelva cuantos son pares. pares(array).
7.- La misma función que la 1 pero que nos devuelva un array con el número de veces que ha aparecido cada número.

Funciones matemáticas

Funciones matemáticas

  • abs — Valor absoluto
  • base_convert — Convertir un número entre bases arbitrarias
  • ceil — Redondear fracciones hacia arriba
  • floor — Redondear fracciones hacia abajo
  • round — Redondea un float
  • intdiv — División entera
  • max — Encontrar el valor más alto
  • min — Encontrar el valor más bajo
  • rand — Genera un número entero aleatorio
  • mt_rand — Genera un mejor número entero aleatorio
  • pi — Obtener valor de pi

 

$a=10;
$b=5;
//Los dos imprimen lo mismo
echo abs($a-$b);
echo "<hr>";
echo abs($b-$a);
echo "<hr>";
//Nos devuelve 100, que es 256 en hexadecimal
echo base_convert(256, 10, 16);
echo "<hr>";
echo ceil(4.3)."<br>";    // 5
echo ceil(9.999)."<br>";  // 10
echo ceil(-3.14)."<br>";  // -3

echo "<hr>";

echo floor(4.3)."<br>";   // 4
echo floor(9.999)."<br>"; // 9
echo floor(-3.14)."<br>"; // -4

echo "<hr>";

echo round(3.4)."<br>";         // 3
echo round(3.5)."<br>";         // 4
echo round(3.6)."<br>";         // 4
echo round(3.6, 0)."<br>";      // 4
echo round(1.95583, 2)."<br>";  // 1.96
echo round(1241757, -3)."<br>"; // 1242000
echo round(5.045, 2)."<br>";    // 5.05
echo round(5.055, 2)."<br>";    // 5.06
echo "<hr>";
echo intdiv(3, 2);
echo "<hr>";
echo max(2, 3, 1, 6, 7);  // 7
echo "<hr>";
echo min(2, 3, 1, 6, 7);  // 1
echo "<hr>";
echo rand(5, 15);
echo "<hr>"
echo mt_rand(5, 15);

Ejercicios fechas

1.- Crear una función esViernes que nos devuelva true si hoy es viernes y false en caso contrario.
2.- Crear una función vencimiento que pasándole un número de días nos devuelva la fecha de vencimiento, que es el día de hoy más ese número de días
3.- Crear una función festivos que pasándole un mes y un año nos devuelva el número de sábados y domingos que tiene.
4.- Crear una función laborables que pasandole un día, un mes y un año nos devuelva una cadena con los 15 días laborables siguientes (días entre lunes y viernes)
5.- Crear una función nextLeap que nos diga cual es el próximo año bisiesto. Si es el actual, el actual.

Funciones de fecha y hora

Obtener la fecha actual:

print date('d-M-Y');

//Otros formatos:
$hoy = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$hoy = date("m.d.y");                         // 03.10.01
$hoy = date("j, n, Y");                       // 10, 3, 2001
$hoy = date("Ymd");                           // 20010310
$hoy = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$hoy = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$hoy = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$hoy = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$hoy = date("H:i:s");                         // 17:16:18
$hoy = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (el formato DATETIME de MySQL)

Crear una fecha:

mktime (hora,minuto,segundo,mes,dia,año)
$mañana        = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$mes_anterior  = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$año_siguiente = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

Convertir cadenas en fecha:

echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";

Ejemplos funciones cadena

$a=2500.5;

echo $a;
echo "<hr>";
echo number_format($a,2,",",".");
echo "<hr>";
setlocale(LC_MONETARY, 'es_ES');
//echo money_format('%.2n', $a) . "\n";
//echo money_format('%.2n', $a);

$a="El \\título es
         \"El Quijote\"";
echo nl2br($a);
$ciudad="L'hospitalet";
echo "<hr>";
$a="El <b>PHP</b>      mola <i>mogollón</i>";
echo $a;
echo "<hr>";
echo htmlentities($a);
echo "<hr>";
echo strip_tags($a);
echo "<hr>";
$formato = "Hay %b monos en el %s, %x";
echo sprintf($formato, 14, 'árbol',100);

$password="Juan Pablo Fuentes";
echo "<hr>";
echo md5($password);
$password="cacahuete";
echo "<hr>";
echo md5($password);

$cadena="hola";
for($i=0;$i<10;$i++){
    echo $cadena.$i."<br>";
    echo md5($cadena.$i)."<br>";
    
}

echo "<hr>";

echo levenshtein("hola que tal", "ola que tal");
echo "<hr>";

echo levenshtein("cacahuete", "ola que tal");

Ejercicios cadenas

1.- Una función que devuelva true si la cadena que le pasamos empieza y acaba con la misma letra, independientemente de mayúsculas y minúsculas. Ejemplo iniciofin(“hola”)->false iniciofin(“alubia”)->true iniciofin(“Alava”)->true;
2.- Una función que nos ponga una cadena en minúsculas y la primera y última letra en mayúsculas. Ejemplo: flupper(“HOLA”)->”HolA” flupper(“cacahauete”)->”CacahuetE”
3.- Una función que nos quite los dos primeros caracteres de una cadena. recortar(“En un lugar de la mancha”)->” un lugar de la mancha”
4.- Una función que nos devuelva el centro de una cadena. El centro es, si la longitud de la cadena es impar, la letra que está en el medio. Si la longitud de la cadena es par, las dos letras del medio. centro(“mar”)->”a” centro(“casa”)->”as”;
5.- Rehacer la función contarVocales usando substr_count
6.- Crear una función repetirPad que le pasemos una cadena, una longitud y nos devuelva una cadena repetida tantas veces como haga falta para alcanzar longitud (pero sin pasarse) y después, si todavía falta para llegar a longitud, lo rellene con ‘#’. Veamos ejemplos:
repetirPad(“hola”,10)->”holahola##”
repetirPad(“adios”,18)->”adiosadiosadios###”

Funciones de string en PHP categorizadas

Mayúsculas/Minúsculas (5)

  • ucfirst — Convierte el primer caracter de una cadena a mayúsculas
  • ucwords — Convierte a mayúsculas el primer caracter de cada palabra de una cadena
  • lcfirst — Pasa a minúscula el primer caracter de un string
  • strtolower — Convierte una cadena a minúsculas
  • strtoupper — Convierte un string a mayúsculas

Limpiar cadena (4)

  • trim — Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena
  • ltrim — Retira espacios en blanco (u otros caracteres) del inicio de un string
  • rtrim — Retira los espacios en blanco (u otros caracteres) del final de un string
  • chop — Alias de rtrim

Convertir en array (7)

  • explode — Divide un string en varios string
  • str_split — Convierte un string en un array
  • implode — Une elementos de un array en un string
  • join — Alias de implode
  • strtok — Tokeniza string
  • chunk_split — Divide una cadena en trozos más pequeños
  • str_getcsv — Convierte un string con formato CSV a un array

Buscar cadenas (10)

  • strpos — Encuentra la posición de la primera ocurrencia de un substring en un string
  • strripos — Encuentra la posición de la última aparición de un substring insensible a mayúsculas y minúsculas en un string
  • strrpos — Encuentra la posición de la última aparición de un substring en un string
  • stripos — Encuentra la posición de la primera aparición de un substring en un string sin considerar mayúsculas ni minúsculas
  • strstr — Encuentra la primera aparición de un string
  • stristr — strstr insensible a mayúsculas y minúsculas
  • strchr — Alias de strstr
  • strrchr — Encuentra la última aparición de un caracter en un string
  • strpbrk — Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres
  • strspn — Averigua la longitud del segmento inicial de un string que consista únicamente en caracteres contenidos dentro de una máscara dada.

Funciones de información y manipulación de cadenas (14)

  • strlen — Obtiene la longitud de un string
  • str_ireplace — Versión insensible a mayúsculas y minúsculas de str_replace
  • str_pad — Rellena un string hasta una longitud determinada con otro string
  • str_repeat — Repite un string
  • str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo
  • str_shuffle — Reordena aleatoriamente una cadena
  • strrev — Invierte una string
  • substr_count — Cuenta el número de apariciones del substring
  • substr_replace — Reemplaza el texto dentro de una porción de un string
  • substr — Devuelve parte de una cadena
  • chr — Devuelve un caracter específico
  • ord — devuelve el valor ASCII de un caracter
  • strtr — Convierte caracteres o reemplaza substrings
  • wordwrap — Ajusta un string hasta un número dado de caracteres

Contar y formatos (7)

  • count_chars — Devuelve información sobre los caracteres usados en una cadena
  • localeconv — Obtener información sobre el formato numérico
  • money_format — Da formato a un número como un string de moneda
  • nl_langinfo — Consulta información sobre el idioma y la configuración regional
  • number_format — Formatear un número con los millares agrupados
  • str_word_count — Devuelve información sobre las palabras utilizadas en un string
  • setlocale — Establecer la información del localismo

Escapar/convertir cadenas (13)

  • addcslashes — Escapa una cadena al estilo de C
  • addslashes — Escapa un string con barras invertidas
  • html_entity_decode — Convierte todas las entidades HTML a sus caracteres correspondientes
  • htmlentities — Convierte todos los caracteres aplicables a entidades HTML
  • htmlspecialchars_decode — Convierte entidades HTML especiales de nuevo en caracteres
  • htmlspecialchars — Convierte caracteres especiales en entidades HTML
  • get_html_translation_table — Devuelve la tabla de traducción utilizada por htmlspecialchars y htmlentities
  • stripslashes — Quita las barras de un string con comillas escapadas
  • strip_tags — Retira las etiquetas HTML y PHP de un string
  • stripcslashes — Desmarca la cadena marcada con addcslashes
  • nl2br — Inserta saltos de línea HTML antes de todas las nuevas líneas de un string
  • quotemeta — Escapa meta caracteres
  • parse_str — Convierte el string en variables

Mostrar por pantalla u otros dispositivos (9)

  • echo — Muestra una o más cadenas
  • fprintf — Escribir una cadena con formato a una secuencia
  • print — Mostrar una cadena
  • printf — Imprimir una cadena con formato
  • sprintf — Devuelve un string formateado
  • vfprintf — Escribe un string con formato en un flujo
  • vprintf — Muestra una cadena con formato
  • vsprintf — Devuelve una cadena con formato
  • sscanf — Interpreta un string de entrada de acuerdo con un formato

Funciones de encriptación (9)

  • crc32 — Calcula el polinomio crc32 de una cadena
  • crypt — Hash de cadenas de un sólo sentido
  • md5_file — Calcula el resumen criptográfico md5 de un archivo dado
  • md5 — Calcula el ‘hash’ md5 de un string
  • sha1_file — Calcula el hash sha1 de un archivo
  • sha1 — Calcula el ‘hash’ sha1 de un string
  • str_rot13 — Realizar la transformación rot13 sobre una cadena
  • convert_uudecode — Descodifica una cadena codificada mediante uuencode
  • convert_uuencode — Codificar mediante uuencode una cadena

Similaridad de cadenas (4)

  • levenshtein — Cálculo de la distancia Levenshtein entre dos strings
  • similar_text — Calcula la similitud entre dos strings
  • soundex — Calcula la clave soundex de un string
  • metaphone — Calcula la clave metaphone de un string

Comparación de cadenas (9)

  • strcasecmp — Comparación de string segura a nivel binario e insensible a mayúsculas y minúsculas
  • strcmp — Comparación de string segura a nivel binario
  • strcoll — Comparación de cadenas basada en la localidad
  • strcspn — Averiguar la longitud del segmento inicial que no coincida con una máscara
  • strnatcasecmp — Comparación de strings, insensible a mayúsculas y minúsculas, utilizando un algoritmo de “orden natural”
  • strnatcmp — Comparación de strings utilizando un algoritmo de “orden natural”
  • strncasecmp — Comparación de los primeros n caracteres de cadenas, segura con material binario e insensible a mayúsculas y minúsculas
  • strncmp — Comparación segura a nivel binario de los primeros n caracteres entre strings
  • substr_compare — Comparación segura a nivel binario de dos o más strings desde un índice hasta una longitud de caracteres dada

Otros alfabetos y hexadecimal (7)

  • hex2bin — Decodifica una cadena binaria codificada hexadecimalmente
  • bin2hex — Convierte datos binarios en su representación hexadecimal
  • hebrev — Convierte texto hebreo lógico a texto visual
  • hebrevc — Convertir texto de hebreo lógico a texto visual con conversión de línea nueva
  • convert_cyr_string — Convierte de un juego de caracteres cirílico a otro juego de caracteres cirílico
  • quoted_printable_decode — Convierte un string quoted-printable en un string de 8 bits
  • quoted_printable_encode — Convierte un string de 8 bits en un string quoted-printable

Ejercicios while

1.- Hacer con while un programa que nos mueste los 10 primeros números y sus cuadrados ($num**2)

2.- Hacer un programa que nos muestre los números y sus cuadrados mientras el cuadrado sea menor que 100

3.- Hacer una página que nos pida una potencia y una cantidad y nos muestre los números, su potencia, mientras la potencia sea menor que la cantidad. Veamos un ejemplo:

Potencia: 3

Cantidad: 100

Nos debería mostrar:

1-1

2-8

3-27

4-64

4.- Hacer una página que nos pida una cadena y una longitud y nos muestre la cadena repetida mientras la longitud sea menor o igualque la que nos han dado. Ejemplo: cadena: ‘hola’ longitud: 20 Debería mostrar: ‘holaholaholaholahola’

5.- Crear una página que nos pida una cadena y una longitud y si la longitud de la cadena es menor que la longitud la rellene con ‘*’. Ejemplos: cadena:’cacahuete’ longitud: 5 nos imprime cacahuete. cadena:’hola’ longitud 7 nos imprime ‘hola***’

6.- Este sólo para los más atrevidos:

Hay una conjetura matemática que dice que lo siguiente:

Sea la siguiente operación, aplicable a cualquier número entero positivo:

  • Si el número es par, se divide entre 2.
  • Si el número es impar, se multiplica por 3 y se suma 1.

Al final siempre obtenemos uno.

Ejemplo:  13, 40, 20, 10, 5, 16, 8, 4, 2, 1.

Crear un bucle que, partiendo de una variable a con un valor cualquiera, vaya haciendo los pasos (y mostrándolos por consola) y que acabe cuando valga uno.

Traits en PHP


<?php

trait HTML {
public function close($tag){
return str_replace("<", "</", $tag);
}
public function wrap($global, $local,$tabla) {
$res = $global;
foreach ($tabla as $valor) {
$res .= $local.$valor.$this->close($local);
}
return $res . $this->close($global);
}

public function lista($tabla) {

return $this->wrap("<ul>","<li>",$tabla);
}

//Crear una función select que nos cree un select con los elementos de la tabla que le pasemos
public function select($tabla) {
return $this->wrap("<select>","<option>",$tabla);
}

}

//Crear un trait Tablas que incorpore una función duplicados que nos devuelva un array con los elementos duplicados

trait Tablas{
public function duplicados($tabla){
$res= array_count_values($tabla);
$aux=[];
foreach($res as $c=>$v){
if($v>1){
$aux[]=$c;
}
}
return $aux;
}

public function duplicadosPro($tabla){
return array_unique(array_diff_key($tabla, array_unique($tabla)));
}
}

class EjemploTrait {

use HTML,Tablas;

public $datos = [1, 2, 3,2, 4, 2,3, "hola"];

function __toString() {

return $this->lista($this->duplicadosPro($this->datos));
}

}

$a = new EjemploTrait();

echo $a;