Posts

Para cuando te aprendes esto ya estara ipv6 en todas partes. Bueno, de momento solo son 20 bytes


    

BruteSort, un algoritmo chungo?
Para este problema clásico ya existen varias soluciones de sobra conocidas como quicksort, mergesort, bubblesort, el caso es que no recordaba ninguno de esos algoritmos y he pensado: a ver si lo saco, si total esto es fácil. He sacado el siguiente programilla para javascript (sería válido para php,perl,c) y quizá he caido en el absurdo de reinventar la rueda. Ya nos decían en clase que anidar bucles era un feo asunto (n al cuadrado de pasos), pero en fin.
Básicamente el programa permuta elementos contiguos del array para ordenarlos y vuelve a empezar. En el caso de realizar ninguna permuta, se termina. Lo dicho, fijo que acabo de descubrir el Mediterraneo. Pincha para probarlo.
/**
* funcion para ordenar un array numérico
* Algo absurdo ya que en Javascript disponemos de la funcion sort()
*/
function ordenar() {
 var vector = new Array(7,2,0,-5,7,1,34,2,4,0);
 alert("Vamos a ordenar: " + vector.toString());
 var ordenado = false;


    

Bueno, por una vez habra que permitirse un off-topic. Ya se sabe que programar y cocinar es muy similar.
Atencion porque se hacen afirmaciones sobre el origen de la tortilla que pueden dar lugar a flames.

Ya que acabo de hablar de mandar correos utilizando Spring voy a retomar el tema del envío de correos desde php. Recordaba que en su día había posteado algo al respecto, y debo pedir disculpas si en su día alguien confió de ese post y no le funcionó. Lo que puse ahí mejoraba ligeramente lo que se solía explicar habitualmente pero en muchos escenarios y en años posteriores eso es raro que funcione. De todas formas ese post era del 2006, casi na.


Variables/Funciones estaticas Dentro de las clases podemos definir atributos y metodos estaticos. Tienen de particular que son accesibles sin necesidad de definir una clase y que su valor es EL MISMO en todas los objetos que se vayan creando de una clase. Es como una variable global de una clase.
Con este ejemplo se ve su uso, y de paso se revisa el tema de punteros a funciones.
(si, has leido bien).
/**
* Soldado.hpp
* Clase que define el objeto soldado muestra el uso de variables estaticas
* y metodos estaticos. Todo lo estatico escapa del ambito de la clase y puede
* ser invocado desde el exterior
*
* Pello Xabier Altadill Izura
*
*/


    

Un ejemplo simple de pthread. Un hilo debe ir asociado a una funcion. Una funcion c se puede pasar como un parametro mas.

Quieres recoger opciones de linea de comandos en tu programa de c?
En la libreria glibc de linux se puede usar la funcion getopt para gestionar de forma correcta los argumentos.

Libreria standard c++
La sintaxis de inclusion de librerias puede variar segun la version y la plataforma del compilador c++.
Puede ser asi:
...
#include <iostream>
using namespace std;
...
O mas simple:
...
#include <iostream.h>
...
A lo que ibamos: al igual que en c, en c++ tenemos una libreria base para desarrollar aplicaciones. Aqui se hecha un rapido vistazo a todas ellas.

#include <iostream>
Libreria basica de entrada/salida. Imprescindible.
#include <string>
Libreria para el manejo de string con las funciones mas usuales como strcpy, strncpy, strlen, strcat, strncat, incluso las que sirven para buscar dividir un string en tokens.
#include <time>
Libreria para escribir fechas, con distintas opciones. Podemos sacar la fecha del momento y separar los valores de dia, hora, minuto, etc..
#include <stdlib>
Otra libreria basica, que contiene funciones como los conversores de ascci-integer atoi, algoritmos de ordenacion de arreglos como qsort..
Operadores de bits:
Otra opcion mas de c++
&  	AND
| 	OR
^ 	exclusive OR
~ 	complement
Existen mas librerias standar y lo que es mejor, librerias muy potentes disponibles para desarrollar programas mas complejos: creacion de interfaces de ventanas, comunicaciones, etc..
El estilo A la hora de escribir codigo se pueden tomar muchas costumbres y vicios que no facilitan la generacion de un estilo claro. De todas formas, dentro de un mismo proyecto seria mejor mantener un mismo estilo. No debe ser una preocupacion, ya que existen programas para formatear el codigo fuente, meter espacios tabulaciones, saltos de linea, etc.

Iteracion con etiquetas
Es la manera primigenia de implementar iteraciones pero lo cierto es que el uso de etiquetas no se recomienda ya que es dificil de entender un programa con etiquetas. A ser posible hay que evitarlas.

A veces el tema de los punteros en c se puede convertir en una pesadilla, pero lo cierto es que no es tan complicado teniendo las ideas claras.
En ocasiones...
Para empezar, un array de caracteres que se pasa como argumento a una función, no es un paso de parametro por valor, y si se modifica, al retornar de la función los cambios estarán ahí.
Y en el caso de un swap de enteros, se pasan los parametros por referencia con el operador &. En una entrada anterior en el codeblog puse un swap de cadenas muy complicado, creo que este es más elegante.