Skip to content

Instantly share code, notes, and snippets.

@rodrei
Last active August 29, 2015 13:57
Show Gist options
  • Save rodrei/9478478 to your computer and use it in GitHub Desktop.
Save rodrei/9478478 to your computer and use it in GitHub Desktop.

FOR loops

  • Factorial: hacer una función que calcule el factorial de un número.
function factorial ($number) {
 //code
}
  • Create a script to construct the following pattern, using a nested for loop. Go to the editor
*  
* *  
* * *  
* * * *  
* * * * *   
  • Create a script to construct the following pattern, using a nested for loop. Go to the editor
* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * 
* * * * 
* * * 
* * 
*
  • Escribir una función que reciba un numero entre 1 y 7 y devuelva un String con el día de la semana correspondiente. 1 es el Lunes y 7 el Domingo.
function dayToString($dayNumber){

}
  • Escribir una función que cuente la cantidad de letras "a" que tiene una cadena de caracteres (String). Catch: La función debería contar tanto mayúsculas como minúsculas.
function countALetters($string) {
  //code
} 
function sumArray($array) {
 //code
}
  • Escribir una función que cuente la cantidad de veces que se repite una letra en una cadena cadena de caracteres (String).
function countLetters($letter, $string) {
  //code
}
  • Escribir una función que reciba un Array de strings como parámetro, y que devuelva un string compuesto por cada elemento del array separado por un espacio.
function joinArray($array) {

}

Si recibe como entrada este array ["Cambodia", "no", "quiere", "mas", "botones"], debería devolver "Cambodia no quiere mas botones".

Usando STDIN

  • Escribir un programa imprima por pantalla "Que hora es?". El usuario deberá ingresar el horario redondeado a horas, por ejemplo si son las 22:15, debería ingresar 22.

El programa debería devolver "Buenos Días" entre las 6 y las 12, "Buenas tardes" entre 13 y 20 y "Buenas noches" entre 21 y 5.

Para leer una línea de entrada usar función "fgets". fgets devuelve un varíable de tipo "String". Para trabajar con horarios va a ser conveniente convertir ese String a un tipo numérico. Eso se hace de la siguiente manera:

  $number = (int) "4";

Esto se llama "casting" de tipos. En donde estamos convirtiendo un valor de un tipo a su equivalente en otro tipo. Depende de lo que estés conviertiendo y a que formato a veces la conversión puede no tener mucho sentido. (por ej: "hola rodri" convertido a un número entero). Al final del programa anterior, $number va a apuntar a un entero con el valor 4.

  • Reutilizando la función "factorial" escrita anteriormente, hacer un programa que un lea un número de STDIN e imprima su factorial.

  • Reutilizando la función "countALetters", leer línea de stdin e imprimir por pantalla el siguiente mensaje: 'El texto ingresado tiene X letras "a"'

Usando rand

http://www.php.net/manual/es/function.rand.php

  • Simulador de moneda: Escribir una función CoinToss que devuelva "Cara" o "Seca" aleatoriamente.

  • Simulador de dado: Escribir una funcion DiceToss que devuelva un entero entre 1 y 6 de manera aleatoria.

Misc

  • Write a PHP function that checks whether a passed string is palindrome or not? Go to the editor A palindrome is word, phrase, or sequence that reads the same backward as forward, e.g., madam or nurses run.

La función se debe llamar isPalindrome, debe recibir un parámetro con el string a chequear. La función deber devolver un booleano (true o false).

FILES IO

Para leer archivos vas a usar una combinación de dos funciones fopen y la vieja y conocida fgets.

fopen recibe dos parámetros: el nombre del archivo y el modo. El modo puede ser escritura ("w") o lectura ("r"), y algunas otras variantes. fopen devuelve un handle que vendría representando un descriptor de archivo. Así como STDIN representa al stream de datos de entrada al programa, el handle devuelto por fopen representa el stream de datos para leer y escribir el archivo.

Tener en cuenta que:

fopen: Returns a file pointer resource on success, or FALSE on error.

fgets: If there is no more data to read in the file pointer, FALSE is returned.

Ej:

$handle = fopen("inputfile.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        // process the line read.
    }
} else {
    // error opening the file.
}

http://www.php.net/manual/en/function.fopen.php http://ar2.php.net/manual/en/function.fgets.php

  • Escribir un programa que lea un archivo llamado guests.txt. El archivo contiene un listado de nombres. El programa debe imprimir por pantalla el número de nombres en el archivo. El archivo debe tener el siguiente formato
# guests.txt
Rodri
Pipo
Juan
Lucas
  • Escribir un programa que lea un archivo guests_info.txt con el siguiente formato:
# guests_info.txt
Rodri, 27, M
Juan, 17, M
Carla, 18, F

El programa deberá imprimir la siguiente información:

Rodri es el mas viejo, tiene 27 años. 
Juan el más joven, tiene 17.
El 66% de las personas son hombres.

SORTING

  • Escribir una función que se llame bubbleSort y que reciba un array de números como parámetro. La función deberá devolver un una versión ordenada de menor a mayor del array que recibió como parámetro.

Usar el algoritmo de ordenamiento burguja o Bubble Sort (http://en.wikipedia.org/wiki/Bubble_sort). Bubble Sort es un algoritmo ineficiente pero fácil de implementar.

  • Como curiosidad, proba pasarle a la función bubbleSort un array de Strings. Vas a ver que funciona como esperás, ordenando los strings en orden alfabético. Esto funciona porque los strings pueden ser comparados de la misma manera que los números usando los operadores <, >, ==. En java por ejemplo, no podrías reutilizar la función bubbleSort con tanta facilidad, ya que en java las funciones esperan parámetros de un tipo específico. Java es un lenguaje "statically typed" y php es "dynamically typed". http://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_type-checking_and_runtime_type_information
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment