lunes, 8 de septiembre de 2008

Programación en C++

Alex17 [marisolriech@infomed.sld.cu]

A través de muchas ediciones de blackhat muchos suscriptores ha dicho que quisieran aprender a programar y en este artículo que por supuesto continuará el objetivo que tiene es enseñar a programar en el compilador c++.


Este fue mi trabajo de curso junto a 7 estudiantes más, con el objetivo que todos los alumnos de mi escuela repasaran y aprendieran programación. Este artículo solo tiene conceptos básicos, así que no le servirá a nadie que quiera masterizarse en la programación.

Bueno primero comenzaremos con algunos conceptos básicos:

Fichero fuente y programa o código fuente:

Los programas se escriben con la ayuda de un editor de textos del mismo modo que cualquier texto corriente. Los ficheros que contiene programas forma de texto se conocen como ficheros fuente, y el texto del programa que contiene se conoce como programa fuente. Nosotros siempre escribiremos programas fuente y los guardaremos en ficheros fuente.

Ficheros objeto, código objeto y compiladores:

Los programas fuente no pueden ejecutarse. Son ficheros de texto, pensados para que los comprendan los seres humanos, pero incomprensibles para los ordenadores.

Para conseguir un programa ejecutable hay que seguir algunos pasos. El primero es compilar o traducir el programa fuente a su código objeto equivalente. Este es el trabajo que hacen los compiladores.

Consiste en obtener un fichero equivalente a nuestro programa fuente comprensible para el ordenador, este fichero se conoce como fichero objeto, y su contenido como código objeto.

Los compiladores son programas que leen un fichero de texto que contiene el programa fuente y generan un fichero que contiene el código objeto.

El código objeto no tiene ningún significado para los seres humanos, al menos no directamente. Además es diferente para cada ordenador y para cada sistema operativo. Por lo tanto existen diferentes compiladores para diferentes sistemas operativos y para cada tipo de ordenador.

Librerías:

Junto con los compiladores de C y C++, se incluyen ciertos ficheros llamados librerías. Las librerías contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc. Las librerías están clasificadas por el tipo de trabajos que hacen, hay librerías de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos, etc.

Hay un conjunto de librerías muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las librerías ANSI o estándar. Pero también hay librerías no estándar, y dentro de estas las hay públicas y comerciales.

Ejemplo de librerías:
iostream.h: esta es muy utilizada en el modo consola pues es la que permite que se puedan mostrar datos, textos y guardar datos en variables.
macht.h: esta también es muy utilizada ya que dentro trae todas las funciones matemáticas, raíz, raíz cubica, seno, coseno, etc.
conio.h: esta librería al igual que la iostream, trae muchas funciones, como por ejemplo para detener la pantalla cuando estamos mostrando datos, limpiar la pantalla entre otras.
windows.h: esta librería es muy utilizada ya que trae a dentro multiples funciones para trabajar con las APIS de Windows.
regitry.h: esta librería se utiliza mucho para el trabajo con el registrode Windows, para crear, eliminar o modificar claves en el mismo.

Entre otras muchas mas para buscarlas ir a C:\Archivos de programa\Borland\bin\include\ en esta dirección se encuentran todas las librerías que utiliza el borlad.

Para llamar cualquier librería del sistema se hace de la siguiente forma:
#include <libreria>

Tipos de variables:

Una variable es un espacio reservado en la memoria de la PC para contener valores que pueden cambiar durante la ejecución de un programa. Los tipos determinan cómo se manipulará la información contenida en esas variables. No olvides, si es que ya lo sabías, que la información en el interior de la memoria del ordenador es siempre binaria, al menos a un cierto nivel. El modo en que se interpreta la información almacenada en la memoria de un ordenador es siempre arbitraria, es decir, el mismo valor puede usarse para codificar una letra, un número, una instrucción de programa, etc. El tipo nos dice a nosotros y al compilador cómo debe interpretarse y manipularse la información binaria almacenada en la memoria de un ordenador. De momento sólo veremos los tipos fundamentales, que son: void, char, int, float y double, en C++ se incluye también el tipo bool. También existen ciertos modificadores, que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadores pueden ser: short, long, signed y unsigned o combinaciones de ellos.

Tipo "char" o carácter:

[signed|unsigned] char Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. Desde el punto de vista de la PC, todos esos valores son caracteres. En C y C++ este tipo siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto. Este tipo de variables es apto para almacenar números pequeños o letras.

Tipo "int" o entero:

[signed|unsigned] [short|long] int [signed|unsigned] long [int] [signed|unsigned] short [int] Las variables enteras almacenan números enteros dentro de los límites de su tamaño, a su vez, ese tamaño depende de la plataforma del compilador, y del número de bits que use por palabra de memoria: 8, 16, 32... No hay reglas fijas para saber el mayor número que podemos almacenar en cada tipo: int, long int o short int; depende en gran medida del compilador y de la PC. Sólo podemos estar seguros de que ese número en short int es menor o igual que en int, y éste a su vez es menor o igual que en long int. Veremos cómo averiguar estos valores cuando veamos los operadores. Este tipo de variables es útil para almacenar números relativamente grandes, pero sin decimales, por ejemplo el dinero, salvo que seas Bill Gates.

Tipo "float" o coma flotante:

float Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, para entendernos, son números con decimales. Son aptos para variables de tipo real, como por ejemplo el cambio entre Dólar y CUC. O para números muy grandes, como la producción mundial de trigo, contada en granos. El fuerte de estos números no es la precisión, sino el orden de magnitud, es decir lo grande o pequeño que es el número que contiene. Por ejemplo, la siguiente cadena de operaciones no dará el resultado correcto: float a = 12335545621232154; a = a + 1; a = a - 12335545621232154; Finalmente, "a" valdrá 0 y no 1, como sería de esperar. Los formatos en coma flotante sacrifican precisión en favor de tamaño. Sin embargo el ejemplo si funcionaría con números más pequeños. Esto hace que las variables de tipo float no sean muy adecuadas para los bucles, como veremos más adelante. Puede que te preguntes (alguien me lo ha preguntado), qué utilidad tiene algo tan impreciso. La respuesta es: aquella que tú, como programador, le encuentres. Te aseguro que float se usa muy a menudo. Por ejemplo, para trabajar con temperaturas, la precisión es suficiente para el margen de temperaturas que normalmente manejamos y para almacenar al menos tres decimales. Pero hay cientos de otras situaciones en que resultan muy útiles.

Tipo "bool" o Booleana:

bool Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven para evaluar expresiones lógicas. Este tipo de variables se puede usar para almacenar respuestas. O para almacenar informaciones que sólo pueden tomar dos valores, por ejemplo: qué mano usas para escribir. En estos casos debemos acuñar una regla, en este ejemplo, podría ser diestro->"true", zurdo->"false". bool respuesta; bool continuar; Tipo "double" o coma flotante de doble precisión: [long] double Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, al igual que float, pero usan mayor precisión. Son aptos para variables de tipo real. Usaremos estas variables cuando trabajemos con números grandes, pero también necesitemos gran precisión. Lo siento, pero no se me ocurre ahora ningún ejemplo. Bueno, también me han preguntado por qué no usar siempre double o long double y olvidarnos de float. La respuesta es que C siempre ha estado orientado a la economía de recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tu problema no requiere la precisión de un double o long double, ¿por qué derrochar recursos?. Por ejemplo, en el compilador Dev-C++ float requiere 4 bytes, double 8 y long double 12, por lo tanto, para manejar un número en formato de long double se requiere el triple de memoria y el triple o más tiempo de procesador que para manejar un float. Como programadores estamos en la obligación de no desperdiciar nuestros recursos, y mucho más los recursos de nuestros clientes, para los que haremos nuestros programas. C y C++ nos dan un gran control sobre estas características, es nuestra responsabilidad aprender a usarlos como es debido.

Tipo "void" o sin tipo:

void Es un tipo especial que indica la ausencia de tipo. Se usa en funciones que no devuelven ningún valor, también en funciones que no requieren parámetros, aunque este uso sólo es obligatorio en C, y opcional en C++, también se usará en la declaración de punteros genéricos, lo veremos más adelante. Las funciones que no devuelven valores parecen una contradicción. En lenguajes como Pascal, estas funciones se llaman procedimientos. Simplemente hacen su trabajo, y no revuelven valores. Por ejemplo, funciones como borrar la pantalla, no tienen nada que devolver, hacen su trabajo y regresan. Lo mismo se aplica a funciones sin parámetros de entrada, el mismo ejemplo de la función para borrar la pantalla, no requiere ninguna entrada para poder hacer su cometido.



Artículos relacionados


No hay comentarios: