Subscribe to Feeds

Capítulo II


Este capítulo, lo usaré para explicar como alterar el flujo del programa con las sentencias de control y con la sentencia goto.

Así que, aquí empieza...

Una sentencia de control es una instrucción que permite ejecutar el bloque de código que contiene, si la sentencia devuelve cierto (true). Hay unas cuantas sentencias, dedicaré un tiempo a cada una, son muy sencillas.

La sentencia if permite ejecutar un bloque si la condición que contiene se cumple. A la sentencia, se le puede incluir un else, que ejecuta su bloque si el if anterior no se ha cumplido.

if(x == 0 ) //si el valor de x es 0
{
std::cout << "X es 0!";
}
else if(x == 1) // si x no es 0, pero es 1
{
std::cout << "X es 1!";
} else // si x no es ni 0 ni 1
{
std::cout << "X no es ni 1 ni 0.";
}


La sentencia while permite ejecutar indefinidas veces un bloque mientras la condición sea cierta. Al while no se le pueden incluir else.

while(x <= 10) // Mientras x sea mas pequeño o igual a 0
{
x++; // Incremento de X en 1
std::cout << "X es " << x;
}


La sentencia for permite ejecutar un número de veces un bloque. Tampoco puede incluir else.

for(int i = 0; i <= 10; i++) // El valor de i al comienzo es 0, hasta que no sea mayor que 10, ejecuta:
{
std::cout << "I es " << i;
}


Ahora, junto a while y for, pueden estar las instrucciones continue y break. Continue, lo que hace es parar el flujo de while, for o switch y repetirlo. Break, lo que hace es salir del bloque. Unos ejemplos:

Un programa que escribe los numeros menores de 100 impares.

#include

int main()
{
for(int i = 0; i <= 100; ++i)
{
if((i % 2) == 0) // Si el resto de i / 2 es 0
{
continue;
}

std::cout << i << ", ";
}

return 0;

}


La salida del programa, debe ser la siguiente:

1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99

Ahora, la sentencia goto nos permite saltar entre instrucciones del programa siempre que estén en la misma función.

goto salta entre etiquetas, que tienen la sintaxis siguiente:

[nombre]:

Un ejemplo sería:

x:

Lo que sería llamada como goto x;

Ahora, simularemos una sentencia for con goto.

int numero = 0;

back:

numero++;

if(numero <= 10)
{
std::cout << "numero es " << numero;
goto back;
}


Es lo mismo que.

for(int numero = 0; numero <= 10; numero++)
{
std::cout << "numero es " << numero;
}


Bueno, aqui acaba el capítulo, espero que haya sido fácil de entender y se haya aprendido algo mas.

Ubuntu 8.10

Pues, Ubuntu es una de las muchas distribuciones de GNU/Linux que existen hoy día. Sinceramente, el mejor Sistema Operativo que he usado, es muy simple de manejar y controlar, eficiente, muy seguro (tiene el núcleo Linux) y con una gran variedad de programas para descargar útiles.

He probado bastantes Sistemas Operativos, Debian, Fedora, Windows 2000, Windows XP, Windows 7 (sí, la beta), y me quedo, sin duda, con Ubuntu.

Yo recomiendo descargarlo y probarlo, desde la página oficial de Ubuntu (clicando en el menú del blog "Distribuciones de GNU/Linux").

Una imagen de mi Ubuntu 8.10 (Intrepid Ibex) aquí.

¡Espero que os parezca interesante y os subáis al tren del Software Libre!

[Lux] Sintaxis

La sintaxis de Lux no busca ser compleja, es muy parecida (por no decir igual) a la sintaxis de C. Lo que lo diferencia de otros lenguajes de guiones es:

  • Tipos diferenciados
  • Memoria dinámica
  • Punteros
Aunque también tiene algunas simplificaciones.
  • POO
  • Librería estándar (listas, vectores, mapas, matemática...)
Será un lenguaje extensible a través de una API escrita en C.

Un guión de ¡Hola mundo! en Lux


#print '¡Hola mundo!';


Y algo mas complejo (manejo de archivos), este ejemplo lo que hará es escribir "Test" en un archivo llamado "test".


file_t file = file_t.Open("test", APPEND);
file.Write("Test");


El programa escrito en Lux (llamado por el intérprete), puede recibir parámetros, para eso, el comienzo del guión está en la función _start, que recibe un parámetro, que es una lista de 'string'. Un ejemplo, donde el intérprete recibiría el nombre del archivo a renombrar, y el nuevo nombre.


int8_t _start(Lux.List<string> argv)
{
if(argv.Size() != 2)
{
#print "Error, número invalido de parámetros (deben ser 2)";
return -1;
/* Indica al intérprete que ha habido un error, para que se cierre el script,
active el recolector de basuras y remueva todo lo que hemos creado */
}

file_t file = file_t.Open(argv.Index(0), WRITE);
file.Rename(argv.Index(1));
file.Close();
return 0; // El programa sale correctamente
}


En la entrada del intérprete deberíamos poner:


lux script.lux --params="file.old;file.renamed"


Esta es la estructura pensada para el lenguaje, no cambiará hasta la primera revisión (que espero tenerla lo antes posible).

Capítulo I

  1. Introducción


Se supone que ya tenéis el IDE mas que conocido, así que sólo explicaré algunos conceptos básicos de la sintaxis de C++ y algunas palabras que leeréis durante los siguientes tutoriales.

Código fuente: Es todo el código que forma nuestro programa.
Compilar: Es la acción de traducir el código fuente a código maquina o bytecode
para que sea interpretado por la máquina o por un intérprete.
Compilador: Es el programa que hace la acción de compilar.
Bug: Es un error del código fuente (aunque puede no ser explícito) o de la configuración del compilador.
Depurar: Es la acción de arreglar bugs o mejorar la eficiencia de un programa.
Algoritmo: Es una lista bien definida, con posibles soluciones para hacer una acción.
Librería: Es un software que se incluye en el código fuente de otro programa para añadir funcionalidades y simplificar acciones.
Excepción: Es un error, que a diferencia de los bugs, no son al compilar, sino que son producidos en tiempo de ejecución.
Input: Es, en inglés, los datos que son recibidos por algún dispositivo, o el mismo dispositivo (puede ser el teclado, el ratón...).
Output: Es, en inglés, los datos que son introducidos en un dispositivo, o el mismo dispositivo (como la pantalla).
Estándar: Es un conjunto de software o normas, que deben de ser aceptadas por el código fuente o el software en sí.
Buffer: Es un bloque de memoria dinámica que luego será destruido.

Ahora que tenéis un pequeño diccionario de las palabras que mas usaré, puedo comenzar a explicar el lenguaje.

Pues, la sintaxis de C++, consta por dos elementos, que están muy unidos.

La sentencia: Es una acción que ejecuta el programa, estas acaban con ';'.
El bloque: Es un conjunto de sentencias. No confundir con un buffer!. Los bloques suelen estar delimitados por '{' y '}', y pueden contener otros bloques.

Ahora, para tener un ejemplo, haremos el típico programa Hola mundo! que me servirá para enseñaros como es un programa de C++ por dentro.


#include <iostream>
int main()
{
std
::cout << "Hola mundo!";
return 0;
}


#include
La directiva #include sirve para añadir ficheros al archivo actual, para poder usar los datos de esos archivos, cabe destacar, que si el nombre del archivo está entre '<' y '>', el archivo será de alguna librería, y si está entre comillas (' " ') será del mismo proyecto. En este caso incluimos el archivo iostream, que contiene el I/O (Input/Output) estándar de C++.

int main()
Esto es una función, las funciones crean un bloque que recibe una serie de parámetros (entre los '()', en este caso no los recibe, aunque podría) desde fuera del bloque, para usarse dentro. Las funciones tienen un valor de retorno (en este caso de tipo int, que es numérico entero de 32 bits (4 bytes)), que se le asigna con la sentencia return 'valor'. La mayoría de programas comienzan por esta función.

std::cout << "Hola mundo!";
Es una clase de la librería estándar, una clase es un objeto que puede ejecutar acciones (en forma de funciones o operadores), todas las funciones y objetos de la librería estándar empieza por std, que es un nombre de espacios (que se explicarán en otro capítulo). En este caso, cout (que significa Console OUT), escribe Hola mundo! en la terminal mediante el operador de inserción (porque está sobrecargado, mas adelante se verán las sobrecarga de operadores).

return 0;
La sentencia return devuelve un valor a la función en la que está (en este caso, la función main), el valor de retorno depende del tipo de función (si main tubiese valor de retorno void, entonces no se podría devolver nada, y si fuese float, se podría devolver 3.1416). Cuando el flujo del programa encuentra una sentencia return, sale de la función y le asigna un valor a la función. Así que hay que usarlas sabiendo que se hace.



Y bueno, es que este capítulo no tiene mas, espero que haya sido fácil de entender.

God of War III - Trailer

Es hora de que comiences a babear y a temblar de miedo. ¡Porque el Dios de la Guerra esta mas cabreado que nunca! Y ahora, cuenta con todo el poder de tu Play 3. Que no es poco.



Aqui os dejo un pequeño vídeo de gameplay para que disfrutéis, hasta que salga al público.

Introducción

Bueno, aquí comienzan mis guias sobre C++, no es un lenguaje del todo complicado, al principio puede parecer imposible, pero por propia experiencia puedo asegurar que tiene mas automatizaciones de las que parecen al comienzo. Un poco de paciencia y allí vamos.



Bueno, pues C++ es un lenguaje multi-paradigma, básicamente que soporta la programación estructurada, la programación orientada a objetos y la programación genérica.

C++, se llama así porque se podría decir, que es un incremento de C, el operador ++ en C (al igual en C++) es el de incremento.

Ahora mismo, sólo explicaré un poco que es lo necesario para programar en C++, ya que es mejor dejar el primer programa para el capítulo uno, cuando os hayáis acostumbrado al IDE que elijais.

Aquí os dejo algunos IDEs recomendados personalmente, son los siguientes:

Microsoft Visual Studio Express

Como bien dice el nombre, sólo te funcionará para sistemas operativos de Microsoft, ese es el problema, porque en sí, el IDE es un buen trabajo.



Descarga

Code::Blocks

Code::Blocks es un fantástico IDE que funciona sobre Windows, GNU/Linux y MacOSX, es muy bueno, con soporte para muchos compiladores y con la posibilidad de desarrollar plugins para añadir nuevas utilidades. Es de código abierto y puedes contribuir a su desarrollo.


Descarga



Si usáis GNU/Linux, es necesario primero instalar los compiladores de C y C++. Para eso, abre la terminal, y ejecuta el siguiente comando:

sudo apt-get install gcc g++

Te pedirá la contraseña de administración, simplemente proporciónala y continua con la instalación.

Aquí acaba el primer capítulo, familiarizaos un poco con el entorno y probad cosas para el siguiente capítulo.