Los programas de ordenador
Es posible que usted nunca haya oído hablar de conceptos como compilación, ejecutables, etc. No se trata de detallar aquí los mecanismos por los cuales un código escrito en un lenguaje de programación se convierte en un programa que hace ciertas cosas en un ordenador. El tema es en sí mismo motivo de libros. Sin embargo, sí que es interesante explicar cómo se obtiene un programa a partir de un código.
Para obtener un programa que se pueda ejecutar en un ordenador se necesita un código fuente, es decir, un archivo de texto con las instrucciones. Este archivo suele tener la extensión cpp y es el que usted tiene que escribir como programador. También son necesarios unos archivos de cabecera con la extensión h; de éstos, algunos serán escritos por el programador, pero otros ya vienen con el compilador. Con todos los archivos se realiza el proceso de compilación que da como resultado un archivo de extensión obj.
El código que el programador escribe lo entienden las personas, pero no la máquina. El ordenador tiene su propio lenguaje formado por unos y ceros, que es complicado para las personas. Entonces, qué se entiende por compilación. Pues simplemente la traducción de todas las instrucciones al idioma de la máquina. El programador se libera del complicado lenguaje de la máquina… y se concentra en el lenguaje de programación mucho más cercano a la forma de pensar de los humanos.
Finalmente, antes de obtener el ejecutable es necesario un linkaje que enlaza el archivo obj con las librerías que suministra el lenguaje. La mezcla del archivo obj con las librerías .lib conducen a un ejecutable exe. Este último archivo es el que se podrá ejecutar en la máquina.
Hoy en día, hay entornos de programación que realizan está labor en un conjunto integrado, posiblemente usted trabaje con uno de ellos. En tal caso le remitimos al manual de instrucciones para compilar y ejecutar un archivo. En general, de todas las funcionalidades que tienen esos entornos usted sólo va a necesitar unas pocas; por lo tanto le aconsejamos que no pierda mucho el tiempo en aprender su manejo hasta que realmente no necesite hacer cosas muy potentes.
Trabaje con un único archivo cpp y a lo sumo un archivo h, el resto lo pone todo el entorno, Construya y ejecute las aplicaciones, no necesita nada más.
Esquema del proceso de compilación y linkado para obtener un ejecutable.
Consideraciones Generales
- C es lenguaje de “funciones” à por ejemplo la función “main()”. Como función debe tener uno o más argumentos. Puede ocurrir que ese argumento sea vacío.
- En C todas las funciones se escriben en minúsculas, salvo algunas excepciones.
- C hace distinción entre minúsculas y mayúsculas, de tal manera que el identificador Hola es distinto de hola, distinto de hOla, distinto de hoLa, etc.
- Toda instrucción termina con un punto y coma (;)
- C es un lenguaje de bloques. Dos o más instrucciones son un bloque que comienza con la apertura de una llave ({) y termina con el cierre de una llave (}).
- Se abre una llave… se cierra una llave, análogamente se abre un paréntesis… se cierra un paréntesis, etc.
- El Entorno Integrado de Desarrollo (EID) nos permite trabajar con “indentación”… se debe trabajar en forma indentada
- Es responsabilidad del programador NO excederse en el rango máximo permitido para el tipo de identificador declarado!!!!!! Por ejemplo, si declaro un int el valor máximo permitido es 32767.
- Deben inicializarse todos y cada uno de los acumuladores, porque el compilador NO los inicializa.
Un programa sencillo
La mejor manera de empezar el estudio de C++ es examinar un programa. Comenzaremos con el programa más simple que puede escribirse en C++: 1PRIMERO.CPP
#include <iostream.h> main() { cout <<"Esta es una línea de texto."; }
La palabra «main» es muy importante, y debe aparecer una vez y sólo una en cualquier programa en C++. Este es el punto de partida desde el cual el programa se ejecuta.
Siguiendo a la palabra «main», hay un par de paréntesis en la forma (), que le indican al compilador que está ante una función.
Los signos de llave, conocidos como símbolos de agrupamiento, agrupan las declaraciones relacionadas, se usan para definir los límites del programa principal.
El punto y coma de final de línea es usado como mandato finalizador, por tanto el compilador asigna a este caracter la función de indicar que la línea ya está completa.
La declaración #include
Esta declaración indica al compilador que incluya el contenido del archivo especificado al principio del programa. En este caso, el compilador incluirá el contenido del archivo iostream.h. Los archivos que tienen extensión h y se incluyen al principio (o cabecera) de los programas se llaman archivos de cabecera.
Cada uno de los archivos de cabecera comprende definiciones que el compilador proporciona para diferentes operaciones. Por ejemplo, hay archivos de cabecera para las operaciones matemáticas, para operaciones con archivos, y otros. Por ahora no nos preocuparemos mucho por los archivos de cabecera, simplemente tengamos en cuenta que la declaración #include nos deja utilizarlos.
La consola
El instrumento más rudimentario de interacción es la consola, es decir, el teclado para permitir la interacción hombre-máquina y la pantalla para la relación inversa. En la librería <iostream.h> hay definidos cuatro elementos de interacción.
cout Salida por pantalla.
cin Entrada por el teclado.
cerr Salida de error por pantalla.
Los operadores « y », son los llamados operadores de inserción y de extracción respectivamente, sirven para dirigir el flujo de datos.
La salida se realiza a través del operador « y consiste en insertar los datos en el stream, en particular se convierte en salida por la pantalla. Lo mismo ocurre con la entrada, el operador » saca del stream el tipo de dato necesario.
El operador cout
El operador cout muestra por pantalla lo que se encuentra entre comillas. Se utiliza con el doble signo de menor que “<<“, llamado operador de inserción.
A continuación veremos un programa pequeño, pero que ilustra un concepto muy importante: 2SEGUNDO.CPP
#include <iostream.h> main() { cout <<"Esta es una línea de texto.\n"; cout <<"Y esta es otra "; cout <<"línea de texto.\n\n"; cout <<"Esta es la tercera línea."; }
El programa consta de cuatro declaraciones. Se ejecutan las líneas por orden de encuentro, por lo tanto se ejecutará la línea superior en primer lugar, después la segunda, tras ésta la tercera y así sucesivamente. El programa se ejecuta de arriba a abajo.
Cerca del fin de la primera línea aparece el llamado «caracter de corte: \ «. Se usa para indicar que le sigue un caracter de control especial. En este caso, ese caracter es «n«, que indica que se ejecutará una nueva línea. Esta indicación hace que el cursor baje una línea y se coloque en la primera posición izquierda de la pantalla. Se refiere normalmente a un retorno de carro. En cualquier parte del texto, donde se desee, puede acabar la línea y empezar otra nueva. Se puede cortar una palabra y mostrarla entre dos líneas. El compilador considera la expresión «\n» como un solo caracter (caracter de corte+letra n). Entonces, el primer cout muestra una línea de texto, y realiza un retorno de carro. La segunda línea muestra una línea de texto, sin retorno de carro, porque la tercera efectúa 2 retornos de carro, resultando una línea en blanco. Finalmente la cuarta línea muestra otra línea de texto y acaba el programa.
IDENTIFICADORES
Un identificador es una combinación de caracteres numéricos, alfanuméricos o letras, o algún número, o un caracter subrayado “_”, lo usa una variable, o una función, o una definición de datos, etc. En el lenguaje C++ debe tenerse en cuenta que mayúsculas y minúsculas definen identificadores distintos. Así, el identificador “INDICE”, es distinto de “indice”, y también de “Indice”.
Declaración de variables
Los programas usan variables para almacenar información. Dependiendo de la clase de valor que se quiera guardar, tal como un número entero, una letra del alfabeto o un valor de punto flotante, diferirá el tipo de la variable. La mayoría de los programas en C++ utilizarán los tipos de variables citados en las siguientes tablas:
Tipos Básicos:
Tipo |
Ancho en Bit |
Ancho en Bytes |
Rango |
char |
8 |
1 |
0 a 255 |
int |
16 |
2 |
-32768 a 32767 |
float |
32 |
4 |
-3.4E-38 a 3.4E+38 |
double |
64 |
8 |
(por las dudas este no tiene que ser-)1.7E-308 a 1.7E+308 |
void |
0 |
0 |
sin valor |
Otros:
Tipo |
Ancho en Bit |
Ancho en Bytes |
Rango |
signed char |
8 |
1 |
-128 a 127 (como -?) |
unsigned int |
16 |
2 |
0 a 65535 |
long int |
32 |
4 |
-2147483648 a 214.782.647 |
unsigned long int |
32 |
4 |
0 a 4.294.967.295 |
unsigned short int |
16 |
2 |
-32768 a 32767 |
Antes de que se pueda utilizar una variable hay que declararla, introducirla en el programa.
En la declaración se especifica el tipo de variable y su nombre.
Cuando se declara más de una variable del mismo tipo, C++ permite separar los nombres de las variables utilizando una coma.
Cada variable tiene un nombre único. Para que los programas sean más fáciles de leer y comprender deben utilizarse nombres significativos para las variables.
Una vez declarada la variable se utiliza el operador de asignación (el signo igual) del C++ para asignar un valor a una variable.
Cuando se declara una variable suele ser conveniente asignar el valor inicial de la misma. Para facilitar las cosas, C++ permite asignar valores al mismo tiempo que se declaran las variables.
Después de asignar un valor a una variable, los programas pueden utilizar el valor de la misma haciendo referencia simplemente a su nombre.
El siguiente programa, 3VARIABLE.CPP, asigna valores a dos variables y luego las exhibe en la pantalla utilizando el operador cout.
El operador de inserción (<<) comunica al sistema que lo sigue una variable o una constante.
#include <iostream.h> main() { /* Principio del programa */ int edad; //Declaración de la variable float salario = 451.75; //Declaración y asignación edad=32; //Asignación del valor cout <<"Edad del empleado: " << edad << " años "; cout <<"\nSalario: $"<< salario << ".-"; // Fin del programa }
COMO HACER COMENTARIOS
En el programa anterior vemos dos maneras de hacer comentarios en un programa, para hacerlo más legible a otros. El compilador ignora estos comentarios.
Una de las formas es utilizar la barra de división y el signo de estrella, en la forma /* para iniciar un bloque de comentarios y la forma */ para finalizar el comentario.
También se utiliza la doble barra “//”, que inicia un comentario en cualquier parte de una línea y termina automáticamente al final de ella. Este último método es el preferido para la definición de comentarios porque es imposible comentar inadvertidamente fuera de varias líneas del programa. Esto podría ocurrir al usar el otro método de anotación de comentarios en C++, al olvidar incluir el fin de anotación de un comentario.
Se debe destacar que no deberían usarse los comentarios cuando el mismo sentido de la definición del programa puede ser obtenido usando nombres significativos para variables, constantes y funciones, por ello el programador debe seleccionar cuidadosamente los nombres de funciones y variables, esforzándose por perfeccionar su propio código.