Está en la página 1de 3

Introducción

Para comenzar a estudiar cualquier lenguaje de programación se debe conocer cuáles son los
conceptos que soporta, es decir, el tipo de programación que vamos a poder realizar con él.
Como el C++ incorpora características nuevas respecto a lenguajes como Pascal o C, en primer
lugar daremos una descripción a los conceptos a los que este lenguaje da soporte, repasando
los paradigmas de programación y centrándonos en la evolución desde la programación
Funcional a la programación Orientada a Objetos. Más adelante estudiaremos el lenguaje de la
misma manera, primero veremos sus características funcionales (realmente la parte que el
lenguaje hereda de C) y después estudiaremos las extensiones que dan soporte a la
programación orientada a objetos (el ++ de C++).
Un Programa C++ En general, un programa C++ suele estar escrito en diferentes ficheros.
Durante el proceso de compilación estos ficheros serán combinados adecuadamente y
traducidos a código objeto, obteniendo el programa ejecutable. Nosotros comenzaremos
tratando con programas sencillos, para los que bastará un único fichero cuya extensión será
una de las siguientes: “.cpp”, “.cxx”, “.cc”, etc. En el capítulo 10 comenzaremos a estudiar cómo
estructurar programas complejos en diferentes ficheros. En este capítulo nos centraremos en
presentar los elementos imprescindibles y en mostrar cómo trabajar con el fichero que
contiene el programa para generar su correspondiente fichero ejecutable. En posteriores
capítulos trataremos con detalle cada uno de los elementos que puede contener un programa.
El fichero suele comenzar con unas líneas para incluir las definiciones de los módulos de
biblioteca que utilice nuestro programa, e irá seguido de declaraciones y definiciones de tipos,
de constantes y de subprogramas. El programa debe contener un subprograma especial (la
función main) que indica dónde comienza la ejecución. Las instrucciones contenidas en dicha
función main se ejecutarán una tras otra hasta llegar a su fin. La función main devuelve un
valor que indica si el programa ha sido ejecutado correctamente o, por el contrario, ha ocurrido
un error. En caso de no aparecer explícitamente una sentencia return, por defecto, se
devolverá un valor que indica terminación normal (0). A continuación, mostramos un programa
que convierte una cantidad determinada de euros a su valor en pesetas y describimos cómo
hay que proceder para obtener el programa ejecutable correspondiente. Más adelante iremos
introduciendo cada uno de los elementos que lo forman.

Programación imperativa

Como ya hemos mencionado anteriormente, la programación imperativa trata con tipos de


datos y algoritmos, los primeros representan la información utilizada por los programas,
mientras que los segundos se refieren a la manera en que tratamos esa información. En los
puntos que siguen revisaremos de forma breve los conceptos fundamentales de la
programación imperativa clásica, también llamada programación procedural. La idea básica de
esta aproximación es la de definir los algoritmos o procedimientos más eficaces para tratar los
datos de nuestro problema.

Tipos de datos

Cuando nos planteamos la resolución de problemas mediante computador lo más usual es que
queramos tratar con datos que son variables y cuantificables, es decir, que toman un conjunto
de valores distintos entre un conjunto de valores posibles, además de poder almacenar los
valores de estos datos en alguna forma aceptable para el computador (ya sea en la memoria o
en periféricos de almacenamiento externo). En un lenguaje de programación el concepto de
tipo de datos se refiere al conjunto de valores que puede tomar una variable. Esta idea es
similar a la que se emplea en matemáticas, donde clasificamos las variables en función de
determinadas características, distinguiendo entre números enteros, reales o complejos. Sin
embargo, en matemáticas, nosotros somos capaces de diferenciar el tipo de las variables en
función del contexto, pero para los compiladores esto resulta mucho más difícil. Por este
motivo debemos declarar explícitamente cada variable como perteneciente a un tipo. Este
mecanismo es útil para que el computador almacene la variable de la forma más adecuada,
además de permitir verificar que tipo de operaciones se pueden realizar con ella.

Se suelen diferenciar los tipos de datos en varias categorías:

— Tipos elementales, que son aquellos cuyos valores son atómicos y, por tanto, no pueden ser
descompuestos en valores más simples. Entre las variables de estos tipos siempre encontramos
definidas una serie de operaciones básicas: asignación de un valor, copia de valores entre
variables y operaciones relacionales de igualdad o de orden (por lo tanto, un tipo debe ser un
conjunto ordenado). Los tipos más característicos son: booleanos = {verdadero, falso} enteros =
{… -2, -1, 0, +1, +2, …} reales = {… -1.0, …, 0.0, …, +1.0, …} caracteres = {… 'a', 'b', …, 'Z', …}
Generalmente existen mecanismos para que el usuario defina nuevos tipos elementales por
enumeración, es decir, definiendo el conjunto de valores explícitamente. Por ejemplo
podríamos definir el tipo día como {lunes, martes, miércoles, jueves, viernes, sábado,
domingo}, las variables definidas como día sólo podrían tomar estos valores. Por último
mencionaremos otro tipo de datos elemental de características especiales, el puntero, que es
el tipo que almacena las direcciones de las variables (la dirección de memoria en la que se
almacena su valor). Analizaremos este tipo más adelante.

 Tipos compuestos o estructurados, que son los tipos formados a partir de los
elementales. Existen varias formas de agrupar los datos de tipos elementales: La más
simple es la estructura indexada, muy similar a los vectores o matrices de matemáticas,
en donde lo que hacemos es relacionar unos índices (pertenecientes a un tipo de
datos) con los valores de un tipo determinado. Sobre estas estructuras se pueden
realizar las operaciones de consulta o asignación de un valor (a través de su índice).
Otra estructura compuesta muy importante es el registro, que no es más que una
sucesión de elementos de distintos tipos, denominados campos, que llevan asociados
un identificador. Sobre estos tipos se definen las operaciones de asignación y de acceso
a un campo. Algunos lenguajes también soportan la operación de asignación para toda
la estructura (la copia de todos los campos en un solo paso). El tipo cadena de
caracteres es un caso especial de tipo de datos, ya que algunos lenguajes lo incorporan
como tipo elemental (con un tamaño fijo), mientras que en otros lenguajes se define
como un vector de caracteres (de longitud fija o variable) que es una estructura
indexada. Como se ve, los campos de un registro pueden ser de otros tipos
compuestos, no sólo de tipos elementales.

 Tipos recursivos, que son un caso especial de tipos compuestos, introduciendo la


posibilidad de definir un tipo en función de sí mismo.

También podría gustarte