LuchoWiki

Cosas que debería hacer más a menudo

User Tools

Site Tools


desarrollo:informatica:contenidos:programacion-tareas-comunes

Hoja de ayuda con tareas comunes de varios tipos en distintos lenguajes de programación.

Consultas sobre secuencias de datos

En los siguientes ejemplos:

  • seq es una variable de tipo S representando una secuencia de datos de tipo T
  • v y w son dos datos del tipo T o de un tipo compatible con T
  • P es un predicado de forma F: (T)→{true,false}

exists / contains

¿Existe el dato v en la secuencia?
C++
bool exists= find (begin(seq), end(seq), v) != end(seq);
Javascript
PHP
Python

match / find

¿Qué dato en la secuencia cumple P?
C++
 Iterator m = find_if (begin(seq), end(seq), P); // m == end(seq) si ninguno
Javascript
Python
 // (Python ≥ 2.6)
next((x for x in seq if P(x)), None)

minimum (/maximum)

Dada una clave F, ¿cuál es el mínimo en la secuencia acorde a F?
C++
 Iterator m = min_element (begin(seq), end(seq), F); // m apunta al mínimo
Javascript
Mathemathica
PHP
Python
 value m = min (s, key=F)

fold / reduce

Reducir (“left-fold”) la secuencia a un valor empezando con v0
Ver: fold.
C++
result = accumulate (begin(seq), end(seq), v0, F);
Javascript
result = seq.reduce (v0, F); // seq es un Array
Mathematica
fold_left F v0 seq;  // F toma argumentos como tupla
PHP
value = array_reduce (seq, v0, F); // F es un nombre o callback de PHP
Python
result = reduce(seq, v0, F)

E/S de datos

En los siguientes ejemplos seq es una variable que denota una secuencia de datos y input es una variable que denota contenidos de un tipo de datos ingresado por teclado.

Leer secuencias de datos desde la entrada estándar

C++
// alternativa 1, usando un bucle
while ( cin >> input ) { seq.push_back(input); } // input es de tipo T
// alternativa 2, usando iteradores
copy (istream_iterator<T>(cin), istream_iterator<T>(), back_inserter(seq));
Javascript
Python

Escribir secuencias de datos a la salida estándar

C++
// alternativa 1, usando un bucle
for (Iterator i= begin(seq); i != end(seq); ++i) { cout << *i; } // Iterator es el tipo de begin(seq)
// alternativa 2, usando iteradores
copy (begin(seq), end(seq), ostream_iterator<T>(cout, " ")); 
// nota: agrega un separador extra al final de la secuencia
Javascript
Python

Leer argumentos entregados al programa

C/C++
int main (int argc, char **argv) { 
    // argc = numero de argumentos 
    // argv = puntero a cadenas de texto conteniendo cada argumento
}
Javascript
PHP
Python
import sys
sys.argv

¿Existe el archivo en "ruta_archivo"?

C++ (+POSIX)
 
Javascript
PHP
if (file_exists(ruta_archivo) === true) { ... }
Python
desarrollo/informatica/contenidos/programacion-tareas-comunes.txt · Last modified: 20131202 09:10 by manager