Professional Documents
Culture Documents
Contenido
I Unidad Introduccin a C++ Breve historia de C y C++
Estructura de un programa en C++ o Inclusin de Librera. o La funcin main() o Instrucciones para Entrada y Salida estndar. o Tipos de datos que maneja C++ o Declaracin de variables y constantes. o Operaciones de asignacin aritmtica y lgica.
Paralelamente, en 1980 surge C++ de la mano de Bjarne Stroustrup (tambin de Laboratorios Bell de AT&T). Disea este lenguaje con el objetivo de aadir a C nuevas caractersticas: clases y funciones virtuales (de SIMULA67), tipos genricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un autntico Ing. Valente Cuadra www.ucn-ing-cuadra.blogspot.com Pgina 1
Universidad Central de Nicaragua Ingeniera en sistemas Programacin I motor de objetos con herencia mltiple que permite combinar la programacin imperativa de C con la programacin orientada a objetos. Estas nuevas caractersticas mantienen siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicacin al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes.El siguiente hecho fundamental en la evolucin de C++ es sin duda la incorporacin de la librera STL aos ms tarde, obra de Alexander Stepanov y Adrew Koening. Esta librera de clases con contenedores y algoritmos genricos proporciona a C++ una potencia nica entre los lenguajes de alto nivel. Debido al xito del lenguaje, en 1990 se renen las organizaciones ANSI e ISO para definir un estndar que formalice el lenguaje. El proceso culmina en 1998 con la aprobacin del ANSI C++.
/* "Hola mundo" escrito en C++ */ #include <iostream> void main() { std::cout << "Hola mundo"; }
Propsito de C y C++
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 programacin de propsito 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, etc. Oirs y leers mucho sobre este tema. Sobre todo diciendo que estos lenguajes son complicados y que requieren pginas y pginas de cdigo para hacer cosas que con otros lenguajes se hacen con pocas lneas. Esto es una verdad a medias. Es cierto que un listado completo de un programa en C o C++ para gestin de bases de datos (por poner un ejemplo) puede requerir varios miles de lneas de cdigo, y que su equivalente en Visual Basic slo requiere unos pocos cientos. Pero detrs de cada lnea de estos compiladores de alto nivel hay cientos de lneas de cdigo en C, la mayor parte de estos compiladores estn respaldados por enormes bibliotecas escritas en C. Nada te impide a ti, como programador, usar bibliotecas, e incluso crear las tuyas propias. Una de las propiedades de C y C++ es la reutilizacin del cdigo en forma de bibliotecas de usuario. Despus de un tiempo trabajando, todos los programadores desarrollan sus propias bibliotecas para aquellas cosas que hacen frecuentemente. Y adems, raramente piensan en ello, se limitan a usarlas. Adems, los programas escritos en C o C++ tienen otras ventajas sobre el resto. Con la excepcin del ensamblador, generan los programas ms compactos y rpidos. El cdigo es transportable, es decir, un programa ANSI en C o C++ podr ejecutarse en cualquier mquina y bajo cualquier sistema operativo. Y si es necesario, proporcionan un acceso a bajo nivel de hardware slo igualado por el ensamblador.
Universidad Central de Nicaragua Ingeniera en sistemas Programacin I Otra ventaja importante es que C tiene ms de 30 aos de vida, y C++ casi 20 y no parece que su uso se debilite demasiado. No se trata de un lenguaje de moda, y probablemente a ambos les quede an mucha vida por delante. Slo hay que pensar que sistemas operativos como Linux, Unix o incluso Windows se escriben casi por completo en C. Por ltimo, existen varios compiladores de C y C++ gratuitos, o bajo la norma GNU, as como cientos de bibliotecas de todo propsito y miles de programadores en todo el mundo, muchos de ellos dispuestos a compartir su experiencia y conocimientos.
Intrpretes 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 ejecucin 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 intrprete, que traduce el programa, instruccin a instruccin, al tiempo que lo ejecuta. En los lenguajes interpretados no existen programas ejecutables directamente por el ordenador. El intrprete traduce, en tiempo real, cada lnea del programa fuente, cada vez que se quiere ejecutar el programa. El los lenguajes compilados el proceso de traduccin slo se hace una vez. El programa compilador toma como entrada el cdigo fuente del programa, y da como salida un fichero que puede ser ejecutado por el ordenador directamente. Una vez compilado, el programa ejecutable es autnomo, y ya no es necesario disponer del programa original ni del compilador para ejecutarlo. Cada opcin tiene sus ventajas e inconvenientes, y algunas caractersticas que son consideradas una ventaja, pueden ser un inconveniente en ciertas circunstancias, y viceversa.
Los lenguajes interpretados son fcilmente modificables, ya que necesitamos tener el el cdigo fuente disponible en el ordenador. En los compilados, estos ficheros no son necesarios, una vez compilados. Los lenguajes interpretados necesitan un programa externo, llamado intrprete o a veces mquina virtual, o framework. Este programa acta como intermediario entre el fuente y el sistema operativo. En los compilados ese papel lo desempea el compilador, pero al contrario que con el intrprete, una vez ha hecho su trabajo, no es necesario que est presente para ejecutar el programa. Ing. Valente Cuadra www.ucn-ing-cuadra.blogspot.com Pgina 3
Estas dos caractersticas, lgicamente, hacen que los programas compilados requieran menos espacio de memoria que los interpretados (si contamos el espacio usado por el intrprete), y en general, los compilados son ms rpidos, ya que slo se compilan una vez, y el tiempo dedicado a esa tarea no se suma al de ejecucin.
Entre los lenguajes interpretados estn: BASIC (Cdigo de instrucciones de propsito general para principiantes), Java, PHP. Muchos lenguajes de script, etc. Entre los lenguajes compilados estn: C, C++, Pascal.
Libreras o bibliotecas
Junto con los compiladores de C y C++, se incluyen ciertos ficheros llamados bibliotecas. Las bibliotecas contienen el cdigo objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar nmeros, realizar funciones matemticas, etc. Las bibliotecas estn clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemticas, de manejo de memoria, de manejo de textos, etc. Hay un conjunto de bibliotecas (o libreras) muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las libreras (o bibliotecas) ANSI o estndar. Pero tambin las hay no estndar, y dentro de estas las hay pblicas y comerciales. En este curso slo usaremos bibliotecas (o libreras) ANSI.
La funcin MAIN
La funcin main es impresindible en cualquier programa C/C++ representa el punto de inicio de su ejecucin. Por lo general, su declaracin adopta la forma: int main(); Formas de declarar la funcin MAIN:
void main() // MAL: algunos compiladores se quejarn { } int main() // CORRECTO: la forma adecuada de hacerlo { } main() // CORRECTO: no es la mejor, pero los compiladores que sigan el estndar la darn por buena { }
Tipos de datos
Conceptualmente, desde el punto de vista de un programador, una variable es una entidad cuyo valor puede cambiar a lo largo de la ejecucin de un programa. En el nivel ms bajo, una variable se almacena en la memoria del ordenador. Esa memoria puede ser un conjunto de semiconductores dentro de un circuito integrado, ciertos campos magnticos sobre una superficie de un disco, ciertas polarizaciones en una memoria de ferrita,
Universidad Central de Nicaragua Ingeniera en sistemas Programacin I o cualquier cosa que an no se haya inventado. Afortunadamente, no deberemos preocuparnos por esos detalles. En un nivel ms lgico, una variable ocupa un espacio de memoria reservado en el ordenador para contener sus valores durante la ejecucin de un programa. Cada variable debe pertenecer a un tipo determinado, y ese tipo determina, por una parte, el tamao del espacio de memoria ocupado por la variable, y por otra, el modo en que se manipular esa memoria por el ordenador. No olvides, si es que ya lo sabas, que la informacin en el interior de la memoria del ordenador se almacena siempre de forma binaria, al menos a bajo nivel. El modo en que se interpreta la informacin almacenada en la memoria de un ordenador es, en cierto modo, arbitraria; es decir, el mismo valor puede codificar una letra, un nmero, una instruccin de programa, etc. No hay nada diferente en una posicin de memoria que contenga una instruccin de programa o una letra de un texto; si observamos una posicin de memoria cualquiera, no habr modo de saber qu significa el valor que contiene. Es mediante el tipo como le decimos al compilador el modo en que debe interpretarse y manipularse cierta informacin binaria almacenada en la memoria de un ordenador. De momento slo veremos los tipos fundamentales, que son: void, char, int, float y double, en C++ se incluye tambin el tipo bool. Tambin existen ciertos modificadores, que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadores pueden ser: short, long, signed y unsigned, y pueden combinarse algunos de ellos. Tambin veremos en este captulo los tipos enumerados, enum.
Declaracin de Variables
Para crear un identificador hay que tener en cuenta algunas reglas, ya que no es posible usar cualquier cosa como identificador.
Slo se pueden usar letras (maysculas o minsculas), nmeros y ciertos caracteres no alfanumricos, como el '_', pero nunca un punto, coma, guin, comillas o smbolos matemticos o interrogaciones. El primer carcter no puede ser un nmero. C++ distingue entre maysculas y minsculas, de modo que los identificadores numero y Numero son diferentes.
Finalmente, la declaracin termina con un punto y coma. Las palabras en negrita son palabras reservadas de C++. Eso significa que son palabras que no se pueden usar para otras cosas, concretamente, no se pueden usar como identificadores en un programa C++. Es decir, estn reservadas para usarse del modo en que se describe en la sintaxis, y no se pueden usar de otro modo. Sern vlidos estos ejemplos:
signed char cuenta, cuenta2, total; unsigned char letras; char caracter, inicial, respuesta; signed char _letra;