Cada vez que retomo la programación en C después de haberme dado más de un mes para oxidarme, hay algo que, por más que lo utilice, siempre tengo que volver a consultar: las structs. Una struct nos permite tener un registro con varios campos en una sola variable, pero no voy a explicar mucho más aquí. Voy a hablar de las distintas formas en las que se pueden declarar, que es lo que siempre olvido.
La declaración de una struct tiene la forma struct nombre_opcional { campos };. La forma más usual, al menos en mi caso, de declarar una struct y luego definir una variable con ese tipo es esta:
C:
-
struct complejo {
-
float real, imaginario;
-
};
-
-
struct complejo n;
En ella creo una struct simple con dos campos, que son la parte real e imaginaria de un número complejo, y declaro la variable n como complejo. Aquí puede verse como el uso de una struct es similar al de un tipo, pero hay que recordar que es necesario que la declaración de la variable esté precedida de la palabra struct, como se ve en el ejemplo, pues los nombres de las structs no se incluyen de forma independiente en la tabla de símbolos del compilador, sólo asociados al modificador struct.
Leer el resto de este post »
Cuando escribimos un script en Python y éste contiene cadenas de caracteres que no están escritas en inglés, es posible que éstas contengan caracteres que no se encuentran entre los definidos por el ASCII. En este caso, si no se le dice a Python cómo debe tratarlas, éste se queja.
Tomemos, por ejemplo, este script que tan sólo muestra en pantalla una cadena de texto:
PYTHON:
-
#!/usr/bin/env python
-
-
# Las tildes no están a salvo en los comentarios
-
print "Las tildes no están a salvo en las cadenas de texto"
Si ejecutamos este script tal como está ahora, tendremos una desagradable sorpresa:
jake@aurora /tmp $ chmod u+x encoding.py
jake@aurora /tmp $ ./encoding.py
sys:1: DeprecationWarning: Non-ASCII character '\xc3' in file ./encoding.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Las tildes no están a salvo en las cadenas de texto
La URL que devuelve el intérprete corresponde a una propuesta de extensión de Python (PEP), aceptada hace tiempo, que indica cómo especificar la codificación de caracteres no ASCII.
Básicamente, lo que dice es que Python interpreta todo como ASCII a menos que se le indique lo contrario con un comentario especial que tiene que estar en la primera o la segunda línea y debe casar con la expresión regular: coding[:=]\s*([-\w.]+). Esto significa que si usas Vim o emacs para editar el código python puedes utilizar la sintaxis propia de cada uno para indicarle al editor la codificación del archivo y así matar dos pájaros de un tiro. Además, como bien dice el artículo, se puede usar incluso el lenguaje natural; podría escribir:
PYTHON:
-
#!/usr/bin/env python
-
# Este archivo usa el encoding: utf-8
-
-
# Las tildes no están a salvo en los comentarios
-
print "Las tildes no están a salvo en las cadenas de texto"
Aunque yo prefiero usar la sintaxis de Vim, que es, dicho sea de paso, mi editor favorito
PYTHON:
-
#!/usr/bin/env python
-
# vim: set fileencoding=utf-8 :
-
-
# Las tildes no están a salvo en los comentarios
-
print "Las tildes no están a salvo en las cadenas de texto"
Y si ejecutamos esta nueva versión vemos que ahora no hay quejas:
jake@aurora /tmp $ ./encoding.py
Las tildes no están a salvo en las cadenas de texto