¿Qué clase de programas y aplicaciones se pueden crear usando C y C++?
La respuesta es muy sencilla: TODOS.
Tanto C como C++ son lenguajes de programación de propósito general. Todo puede programarse con ellos, desde sistemas operativos y compiladores hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos, aplicaciones a medida, entre otros.
Oirás y leerás mucho sobre este tema. Sobre todo diciendo que estos lenguajes son complicados y que requieren páginas y páginas de código para hacer cosas que con otros lenguajes se hacen con pocas líneas. Esto es una verdad a medias. Es cierto que un listado completo de un programa en C o C++ para gestión de bases de datos (por poner un ejemplo) puede requerir varios miles de líneas de código, y que su equivalente en Visual Basic sólo requiere unos pocos cientos. Pero detrás de cada línea de estos compiladores de alto nivel hay cientos de líneas de código en C, la mayor parte de estos compiladores están respaldados por enormes bibliotecas escritas en C. Nada te impide a ti, como programador, usar bibliotecas, e incluso crear las tuyas propias.
Ficheros objeto, código objeto y compiladores
Los lenguajes compilados, 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.
Los compiladores son programas traductores, 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 suele tener ningún significado para los seres humanos, al menos para la mayoría de los humanos que conozco, y menos 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 o bibliotecas
Las bibliotecas o ficheros 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 bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos, entre otros. Hay un conjunto de bibliotecas (o librerías) muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las librerías (o bibliotecas) ANSI o estándar. Pero también las hay no estándar, y dentro de estas las hay públicas y comerciales. En este curso sólo usaremos bibliotecas (o librerías) ANSI.
Ficheros ejecutables y enlazadores
El fichero objeto, a pesar de ser comprensible para el ordenador, no puede ser ejecutado. Hay varias razones para eso:
- Nuestros programas usaran, en general, funciones que estarán incluidas en bibliotecas externas, ya sean ANSI o no.
- Muy a menudo, nuestros programas estarán compuestos por varios ficheros fuente, y de cada uno de ellos se obtendrá un fichero objeto.
- Hay que dar ciertas instrucciones al ordenador para que cargue en memoria el programa y los datos, y para que organice la memoria de modo que se disponga de una pila de tamaño adecuado, entre otros.
- No siempre obtendremos un fichero ejecutable para el código que escribimos, a veces querremos crear ficheros de biblioteca, y en ese caso el proceso será diferente.
Existe un programa que hace todas estas cosas, se trata del "linker", o enlazador. El enlazador toma todos los ficheros objeto que componen nuestro programa, los combina con los ficheros de biblioteca que sean necesarios y crea un fichero ejecutable. Una vez terminada la fase de enlazado, ya podremos ejecutar nuestro programa.
Errores
Los errores de programación pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.
Errores de sintaxis: son errores en el programa fuente. Pueden deberse a palabras reservadas mal escritas, expresiones erróneas o incompletas, variables que no existen, etc. Los errores de sintaxis se detectan en la fase de compilación.
Avisos: además de errores, el compilador puede dar también avisos (warnings). Los avisos son errores, pero no lo suficientemente graves como para impedir la generación del código objeto.
Errores de enlazado: el programa enlazador también puede encontrar errores. Normalmente se refieren a funciones que no están definidas en ninguno de los ficheros objetos ni en las bibliotecas.
Errores de ejecución: incluso después de obtener un fichero ejecutable, es posible que se produzcan errores. En el caso de los errores de ejecución normalmente no obtendremos mensajes de error, sino que simplemente el programa terminará bruscamente.
Errores de diseño: finalmente los errores más difíciles de corregir y prevenir. Si nos hemos equivocado al diseñar nuestro algoritmo, no habrá ningún programa que nos pueda ayudar a corregir los nuestros. Contra estos errores sólo cabe practicar y pensar.
Declaración y definición
Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no existir. Tal vez parezca un poco precipitado introducir este concepto tan pronto en el curso. Sin embargo, las funciones son una herramienta muy valiosa, y como se usan en todos los programas C++, creo que debemos tener, al menos, una primera noción de su uso. A fin de cuentas, todos los programas C++ contienen, como mínimo, una función.
Bibliotecas estándar
Todos los compiladores C y C++ disponen de ciertas bibliotecas de funciones estándar que facilitan el acceso a la pantalla, al teclado, a los discos, la manipulación de cadenas, y muchas otras cosas, de uso corriente.
Hay que decir que todas estas funciones no son imprescindibles, y de hecho no forman parte del C. Pueden estar escritas en C, de hecho en su mayor parte lo están, y muchos compiladores incluyen el código fuente de estas bibliotecas. Nos hacen la vida más fácil, y no tendría sentido pasarlas por alto. Existen muchas de estas bibliotecas, algunas tienen sus características
definidas según diferentes estándar, como ANSI C o C++, otras son específicas del compilador, otras del sistema operativo, también las hay para plataformas Windows. En el presente curso nos limitaremos a las bibliotecas ANSI C y C++.
Herencia
Una de las principales propiedades de las clases es la herencia. Esta propiedad nos permite crear nuevas clases a partir de clases existentes, conservando las propiedades de la clase original y añadiendo otras nuevas.
<!--[if gte mso 9]>
Recomendaciones bibliográficas:
· Fundamentos de programación, Luis Joyanes Aguilar.
· C/C++ y Java, Deitel
· C++ sin errores, Chish Pappas, William H Murray.
No hay comentarios:
Publicar un comentario