no way to compare when less than two revisions

Diferencias

Muestra las diferencias entre dos versiones de la página.


desarrollo:informatica:contenidos:programacion-tareas-comunes [2013/12/02 09:10] (actual) – creado - editor externo 127.0.0.1
Línea 1: Línea 1:
 +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 [[wpes>predicado]] de forma ''F: (T)→{true,false}''
 +
 +==== exists / contains =====
 +
 +>"**¿Existe el dato //v// en la secuencia?**"
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++>bool exists= find (begin(seq), end(seq), v) != end(seq);
 +</code>
 +|-
 +! Javascript ||
 +|-
 +! PHP ||
 +|-
 +! Python || 
 +|-
 +|}
 +
 +==== match / find ====
 +
 +>"**¿Qué dato en la secuencia cumple //P//?**"
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++> Iterator m = find_if (begin(seq), end(seq), P); // m == end(seq) si ninguno
 +</code>
 +|-
 +! Javascript || 
 +|-
 +|-
 +! Python || 
 +<code python> // (Python ≥ 2.6)
 +next((x for x in seq if P(x)), None)
 +</code>
 +|-
 +|}
 +
 +==== minimum (/maximum) ====
 +
 +>"**Dada una clave //F//, ¿cuál es el mínimo en la secuencia acorde a //F//?**"
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++> Iterator m = min_element (begin(seq), end(seq), F); // m apunta al mínimo
 +</code>
 +|-
 +! Javascript || 
 +|-
 +! Mathemathica ||
 +|-
 +! PHP ||
 +|-
 +! Python || 
 +<code python> value m = min (s, key=F)</code>
 +|-
 +|}
 +
 +==== fold / reduce ====
 +
 +>"**Reducir ("left-fold") la secuencia a un valor empezando con //v0//**"
 +>Ver: [[wp>fold]].
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++>result = accumulate (begin(seq), end(seq), v0, F);</code>
 +|-
 +! Javascript ||
 +<code js>result = seq.reduce (v0, F); // seq es un Array
 +</code>
 +|-
 +! Mathematica || 
 +<code>fold_left F v0 seq;  // F toma argumentos como tupla
 +</code>
 +|-
 +! PHP || 
 +<code php>value = array_reduce (seq, v0, F); // F es un nombre o callback de PHP
 +</code>
 +|-
 +! Python || 
 +<code python>result = reduce(seq, v0, F)
 +</code>
 +|-
 +|}
 +
 +===== 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 ====
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++>// alternativa 1, usando un bucle
 +while ( cin >> input ) { seq.push_back(input); } // input es de tipo T
 +</code>
 +<code c++>// alternativa 2, usando iteradores
 +copy (istream_iterator<T>(cin), istream_iterator<T>(), back_inserter(seq));
 +</code>
 +|-
 +! Javascript ||
 +|-
 +! Python || 
 +|-
 +|}
 +
 +
 +==== Escribir secuencias de datos a la salida estándar ====
 +
 +{| class="inline compactcode"
 +|-
 +! C++ || 
 +<code c++>// alternativa 1, usando un bucle
 +for (Iterator i= begin(seq); i != end(seq); ++i) { cout << *i; } // Iterator es el tipo de begin(seq)
 +</code>
 +<code c++>// alternativa 2, usando iteradores
 +copy (begin(seq), end(seq), ostream_iterator<T>(cout, " ")); 
 +// nota: agrega un separador extra al final de la secuencia
 +</code>
 +|-
 +! Javascript ||
 +|-
 +! Python || 
 +|-
 +|}
 +
 +==== Leer argumentos entregados al programa ====
 +
 +{| class="inline compactcode"
 +|-
 +! C/C++|| <code c++>
 +int main (int argc, char **argv) { 
 +    // argc = numero de argumentos 
 +    // argv = puntero a cadenas de texto conteniendo cada argumento
 +}
 +</code>
 +|-
 +! Javascript ||
 +|-
 +! PHP || 
 +|-
 +! Python || <code python>
 +import sys
 +sys.argv
 +</code>
 +|-
 +|}
 +
 +==== ¿Existe el archivo en "ruta_archivo"? ====
 +
 +{| class="inline compactcode"
 +|-
 +! C++ (+POSIX)|| 
 +<code c++>
 +</code>
 +|-
 +! Javascript ||
 +|-
 +! PHP || <code>if (file_exists(ruta_archivo) === true) { ... }
 +</code>
 +|-
 +! Python || 
 +|-
 +|}
 +
 +
 +
 +{{tag>tips informatica}}