Introducción

^

Si no he perdido la cuenta, esta es la cuarta revisión del curso desde que se empezó a escribir.

Ya en su versión anterior, el curso estaba bastante completo, al menos en lo que respecta a la teoría, quedando muy pocos detalles por incluir. Esta versión se centra, sobre todo, en añadir más ejemplos resueltos, problemas propuestos y ejercicios.

Espero que este curso anime a los nuevos y futuros programadores autodidactas a incorporarse a esta gran y potente herramienta que es el C++, ese era el objetivo original de la página "Con Clase" y todavía sigue siendolo.

No he pretendido ser original, (al menos no demasiado), para elaborar este curso se han consultado libros, tutoriales, revistas, listas de correo, news, páginas web... En fin, cualquier fuente de datos que ha caído en mis manos, con el fin de conseguir un buen nivel. Espero haber conseguido mi objetivo, y seguiré completando explicaciones sobre todo aquello que lo requiera. También deseo que haya resultado ser un texto ameno, me gustaría que nadie se aburra leyendo el curso.

Pretendo también (y me gustaría muchísimo), que el curso siga siendo interactivo. Con este fin, en esta versión del curso, se ha añadido la posibilidad de que los lectores añadan sus comentarios al final de cada capítulo. Estos aportes se usarán para completar el curso.

He intentado que los ejemplos que ilustran cada capítulo se puedan compilar con cualquier versión de compilador, sin embargo, he de decir que yo he usado el compilador MinGW, (Minimalist GNU for Windows), que es una versión para Windows del compilador GCC para Unix y Linux, y que está adaptado para crear programas en Windows. Es decir, los programas que se ajusten al estándar de C++ deberían funcionar con este compilador tanto en Windows como en Linux.

Por comodidad, recomiendo usar algún IDE (Entorno de Desarrollo Integrado), como Dev-C++ de Bloodshed o Code::Blocks para crear programas en modo consola.

De modo que aprovecho para aclarar que los programas de Windows tienen dos modos de cara al usuario:

  • El modo consola simula el funcionamiento de una ventana MS-DOS, trabaja en modo de texto, es decir, la ventana es una especie de tabla en la que cada casilla sólo puede contener un carácter. El modo consola de Windows no permite usar gráficos de alta resolución. Pero esto no es una gran pérdida, pues como veremos, ni C ni C++ incluyen manejo de gráficos de alta resolución. Esto se hace mediante bibliotecas externas no estándar.
  • El otro modo es el GUI, o Interfaz Gráfico de Usuario. Es el modo tradicional de los programas de Windows, con ventanas, menús, iconos, etc. La creación de este tipo de programas se explica en otro curso de este mismo sitio, y requiere el conocimiento de la biblioteca de funciones Win API32.

Para aquellos de vosotros que programéis en otros entornos como Linux, Unix o Mac, he de decir que no os servirá el entorno Dev-C++, ya que está diseñado especialmente para Windows. Pero esto no es un problema serio, todos los sistemas operativos disponen de compiladores de C++ que soportan la norma ANSI, sólo menciono Dev-C++ y Windows porque es el entorno en el que yo me muevo actualmente.

Además intentaré no salirme del ANSI, es decir del C++ estándar, así que no es probable que surjan problemas con los compiladores.

De nuevo aprovecho para hacer una aclaración. Resumidamente, el ANSI define un conjunto de reglas. Cualquier compilador de C o de C++ debe cumplir esas reglas, si no, no puede considerarse un compilador de C o C++. Estas reglas definen las características de un compilador en cuanto a palabras reservadas del lenguaje, comportamiento de los elementos que lo componen, funciones externas que se incluyen, etc. Un programa escrito en ANSI C o en ANSI C++, podrá compilarse con cualquier compilador que cumpla la norma ANSI. Se puede considerar como una homologación o etiqueta de calidad de un compilador.

Todos los compiladores incluyen, además del ANSI, ciertas características no ANSI, por ejemplo bibliotecas para gráficos. Pero mientras no usemos ninguna de esas características, sabremos que nuestros programas son transportables, es decir, que podrán ejecutarse en cualquier ordenador y con cualquier sistema operativo.

Este curso es sobre C++, con respecto a las diferencias entre C y C++, habría mucho que hablar, pero no es este el lugar adecuado. Si sientes curiosidad, consulta la sección de preguntas frecuentes. Pero para comprender muchas de estas diferencias necesitarás cierto nivel de conocimientos de C++.

Los programas de ejemplo que aparecen en el texto están escritos con la fuente courier y en color azul con el fin de mantener las tabulaciones y distinguirlos del resto del texto. Cuando sean largos se incluirá también un fichero con el programa, que se podrá descargar directamente.

Cuando se exponga la sintaxis de cada sentencia se adoptarán ciertas reglas, que por lo que sé son de uso general en todas las publicaciones y ficheros de ayuda. Los valores entre corchetes "[ ]" son opcionales, con una excepción: cuando aparezcan en negrita "[ ]", en ese caso indicarán que se deben escribir los corchetes. El separador "|" delimita las distintas opciones que pueden elegirse. Los valores entre "<>" se refieren a nombres. Los textos sin delimitadores son de aparición obligatoria.

Proceso para la obtención de un programa ejecutable

^

Probablemente este es un buen momento para explicar cómo se obtiene un fichero ejecutable a partir de un programa C++.

Para empezar necesitamos un poco de vocabulario técnico. Veremos algunos conceptos que se manejan frecuentemente en cualquier curso de programación y sobre todo en manuales de C y C++.

Fichero fuente y programa o código fuente

Los programas C y C++ se escriben con la ayuda de un editor de textos del mismo modo que cualquier texto corriente. Los ficheros que contiene programas en C o C++ en 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.

Interpretes y compiladores

Antes, mencionar que tanto C como C++ son lenguajes compilados, y no interpretados. Esta diferencia es muy importante, ya que afecta mucho a muchos aspectos relacionados con la ejecución del programa.

En un lenguaje interpretado, el programa está escrito en forma de texto, es el propio programa fuente. Este programa fuente es procesado por un programa externo, el intérprete, que traduce el programa, instrucción a instrucción, al tiempo que lo ejecuta.

En los lenguajes interpretados no existen programas ejecutables directamente por el ordenador. El intérprete traduce, en tiempo real, cada línea del programa fuente, cada vez que se quiere ejecutar el programa.

El los lenguajes compilados el proceso de traducción sólo se hace una vez. El programa compilador toma como entrada el código fuente del programa, y da como salida un fichero que puede ser ejecutado por el ordenador directamente.

Una vez compilado, el programa ejecutable es autónomo, y ya no es necesario disponer del programa original ni del compilador para ejecutarlo.

Cada opción tiene sus ventajas e inconvenientes, y algunas características que son consideradas una ventaja, pueden ser un inconveniente en ciertas circunstancias, y viceversa.

  • Los lenguajes interpretados son fácilmente modificables, ya que necesitamos tener el el código fuente disponible en el ordenador. En los compilados, estos ficheros no son necesarios, una vez compilados.
  • Los lenguajes interpretados necesitan un programa externo, llamado intérprete o a veces máquina virtual, o framework. Este programa actua como intermediario entre el fuente y el sistema operativo. En los compilados ese papel lo desempeña el compilador, pero al contrario que con el intérprete, una vez ha hecho su trabajo, no es necesario que esté presente para ejecutar el programa.
  • Estas dos características, lógicamente, hacen que los programas compilados requieran menos espacio de memoria que los interpretados (si contamos el espacio usado por el intérprete), y en general, los compilados son más rápidos, ya que sólo se compilan una vez, y el tiempo dedicado a esa tarea no se suma al de ejecución.

Entre los lenguajes interpretados están: BASIC (Código de instrucciones de propósito general para principiantes), Java, PHP. Muchos lenguajes de script, etc.

Entre los lenguajes compilados están: C, C++, Pascal.

Comentarios de los usuarios (16)

Alejandro
2010-02-17 16:15:12

Hola,estoy aprendiendo C y descarguè el compilador Geany.18 para experimentar con los programas.Resulta que no puedo ejecutarlos luego de compilar.Les pido informaciòn si pueden.

Gracias.

Jose Ugalde
2010-03-16 00:16:02

Me parece bastante explicativo y facil de entender (muchas gracias por tu esfuerso).

Sephirot
2010-04-01 15:49:11

Este curso esta muy bien muchas gracias!!

Luis
2010-04-09 23:36:26

aun no veo como hacer programas a nivel gráfico, competente con la era actual, me gustaria velo.... continuaré revisando el curso, estube revisando sobre ficheros y otras cositas, gracias por la info. hasta ahora muy explícito, me fué muy útil

Arecio
2010-04-30 13:19:19

Muchas gracias por tu esfuerzo.

Pablo
2010-05-04 05:16:47

Estoy empezando a programar en C, gracias por tu interés, hasta ahora me parece interesante y fácil de entender.

Emarina
2010-05-04 18:48:57

hola a todos

Ronkun
2010-05-05 03:35:23

En mi universidad no me enseñaran C++, sin embargo, es un lenguaje muy útil y gracias a C++ con clase estoy aprendiendo desde cero. Me gustaria un poco de orientación sobre programación con ambiente gráfico, ya que es muy importante hoy en dia, y también sobre programación de videojuegos en C++. Gracias por todos sus esfurzos jeje

visitante
2010-05-22 16:50:33

Hola,necesito que me ayuden en este ejercicio:

\"En un estacionamiento,se cobra de la siguiente manera:los primeros 10 minutos son gratis,los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60.Diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente.Tomando en cuenta que si es martes y sabado se hace un descuento del 10% sobre el monto total\"

narkyn
2010-05-25 02:58:41

La verdad estoy tomando mucha la iniciativa para aprender el uso del c++....

pero mis conocimientos al respecto soy muy pocos por tal motivo me gustaria saber por donde puedo comenzar...

gracias

kelvis daniel pineda
2010-05-27 00:01:22

Hola.... quiero a prender ha programar no se si ustedes pueden ayudar en este problema. A mucha gracia

daniel frontaura vidal
2010-06-11 10:01:02

hola me llamo daniel,y tengo muchas ganas de aprender este lenguaje c++.

si alguien me podria ayudar,o aconsejar se lo agradeceria un monton

bairon sanchez
2010-06-12 01:53:39

me gustaria saver donde puedo aprender desde 0 el uso de de lenguajes de programacion en especial c++ grasiass

Tomás Rodríguez
2010-07-02 03:52:43

Hola. ¿Me preguntaba si hay una versión del contenido de esta web -que creo es muy buena y demasiada, en una versión en DOC (o PDF en su defecto) para su lectura offline?

Además por un tema de organización en su contenido y poder imprimirlo ya que me parece que en un documento así quedaría más ordenado y me resultaría más comodo.

felipe
2010-07-12 21:38:50

hola yo soy un estudiante de prepa pero mis conocimientos de c y c++ son buenos pues los k quieran algunas soluciones o ayudas sobre esto escribanme a mi correo dejemeya@hotmail.com estare encantado de ayudarlos.

pulgoso
2010-07-16 12:53:01

Quiero darle la enhorabuena por la magnífica tarea realizada. Es una tarea de divulgación increíble. Además de estar muy bien explicado todo, es bastante completo. Mi enhorabuena y muchísimas gracias por su labor. Hace falta mucha más personas como usted