2. El lenguaje C++
• C++ (Se lee "Ce Plus Plus"), es uno de los lenguajes de programación más utilizados,
Creado a mediados de los años 80, Está basado en el lenguaje C, del cual es una
version ampliada. A partir de ahí va incorporanco nuevos datos, de forma que otros
lenguajes de programación posteriores están claramente inspirados en éste.
Actualmente se usa el estándar C++11, een el que se unifican las distintas versiones
que puede haber de este lenguaje.
• Con C++ el programador indica qué es lo que el ordenador tiene que hacer. Después,
mediante un mecanismo llamado "compilación", las órdenes que estaban en lenguaje
C++ se traducen a código máquina para que el ordenador pueda ejecutarlas.
3. Que se puede hacer con C++
• Una vez que se domina la programación con C++, se puede hacer casi cualquier tipo
de aplicación que funcione en cualquier dispositivo. De hecho muchos de los
programas que utilizamos habitualmente están hechos en gran parte en lenguaje C++;
incluso gran parte de los sistemas operativos Windows y Linux están escritos en C++.
• Nosotros empezaremos por hacer programas sencillos, que se ejecutan en la consola
de windows, y que al principio pueden parecer inútiles, ya que no hacen nada
práctico, mas que demostrar lo que decimos. Sin embargo poco a poco iremos
adquiriendo un grado de dificultad que nos permita abordar toda una serie de
situaciones más complejas, más acordes con lo que es un programa informático.
4. • Observando las opiniones que he visto por Internet, si vas a usar
Visual C++ CLR que opta por la plataforma .net, mejor te centras en
Visual C#.
• MFC, Win32 y ATL a parte de ser más complicado, se suele usar
para tener mejor rendimiento, kernel, driver y un largo etc, requiere
más tiempo haciendo códigos.
• Si optas por hacer una interfaz sencilla para controlar dispositivos
externos en el puerto serie como microcontroladores PIC, placas de
Arduino, Raspberry Pi o cualquier otro con el protocolo RS232,
mejor usar Visual C++ CLR, C# o Visual Basic .net por su facilidad y
comodidad
5. Dependiendo de sus necesidades.
• El uso de CLR le proveerá a usted con la más expresiva conjunto de bibliotecas
(el todo .NET Framework), en el costo de la restricción de su archivo ejecutable
para exigir el .NET Framework para ser instalado en tiempo de ejecución, así
como la limitación a la plataforma de Windows (sin embargo, todos los 4 de los
enumerados tecnologías son solo para Windows, por lo que la limitación de la
plataforma es, probablemente, el menos problemático). Hablando de CLR, MFC,
Win32 y ATL.
• Sin embargo, CLR requiere el uso de C++/CLI extensiones para el lenguaje C++,
así que, en esencia, la necesidad de aprender algo más de las características de
lenguaje con el fin de utilizar este. Al hacerlo, obtendrá muchos "extras" tales
como el acceso a la .red de bibliotecas, lleno de recolección de basura, etc.
6. • ATL Y MFC son un poco más complicado de decidir. Le indico a
la página de MSDN para elegir, para decidir entre ellos. Sobre
ATL y MFC es que usted no necesita .NET Framework, sólo el
VC/MFC tiempos de ejecución para ser instalado para su
implementación.
• El uso de Win32 directamente proporciona a los más pequeños
ejecutables, con el menor número de dependencias, pero es
más trabajo para escribir código y tiempo.
7. herramientas comunes
Puedes descargar Visual Studio Community 2015 con un ejecutable a travéz de
Internet o descargarte una ISO para grabarlo en un DVD.
Antes de instalar, seleccionamos las Herramientas comunes para Visual C++ 2015
como indica en la imagen.
8. Presentación
• Desde Visual Studio 2012 han complicado un poco las cosas para
crear un Windows Form con Visual C++ CLR, cada versión
cambian detalles que en el fondo está bien por dentro, lo que es
más difícil acceder a él.
• Se presenta un tutorial pequeño paso a paso para saber como
crear un Windows Form.
9. Interfaz de Dev-C++
• Al ejecutar Dev-C++ por primera vez, uno puede escoger, entre otras
opciones, el idioma de instalación, ciertas opciones de compleción
automática de funciones y métodos disponibles en las librerías
estándar de C y C++, y el aspecto externo del interfaz de Dev-C++.
Una vez configuradas estas opciones, al ejecutar Dev-C++ por primera
vez, se encuentra un entorno de trabajo similar al siguiente:
10. lenguajes orientados a objetos
En los 80 llegan los lenguajes preparados para la programación orientada a objetos
todos procedentes de Simula (1964) considerado el primer lenguaje con facilidades de
uso de objetos. De estos destacó inmediatamente C++
. A partir de C++ aparecieron numerosos lenguajes que convirtieron los lenguajes clásicos en
lenguajes orientados a objetos (y además con mejoras en el entorno de programación, son los
llamados lenguajes inusuales Visual Basic Delphi (versión orientada a objetos de Pascal), Visual
C++,...
En 1995 aparece Java como lenguaje totalmente orientado a objetos y en el año 200 aparece C#
un lenguaje que procede de C++ y del propio Java.
11. Menú del sistema:
• Es el menú que aparece cuando hacemos
clic derecho sobre la barra de título.
12. Cuadro de diálogo Acerca de
• Es un dialogo que muestra información de la aplicación,
conocida también como "About... ", a diferencia de las
aplicaciones SDI/MDI no tenemos un menú, es por eso que
el asistente agrega un segmento de código que permite
visualizar este diálogo.
13. • Desde este entorno está permitido abrir, modificar y guardar tanto proyectos como
archivos desarrollados en C y C++.
14. (OpciónVer -> Explorador de Proyectos y
Clases)
• En el explorador de proyectos y clases (Opción Ver -> Explorador de Proyectos y
Clases) que aparece en la columna izquierda, aparece tanto la estructura del
proyecto como de las clases y sus métodos definidos en nuestros ficheros. En ella
aparecerán tanto el proyecto principal como los ficheros del mismo que se
encuentran abiertos en un momento determinado. Una de las mayores
restricciones de Dev-C++ es que sólo permite tener un proyecto abierto en cada
IDE. Si queremos trabajar con varios proyectos al mismo tiempo, tendremos que
abrir tantas veces el IDE como proyectos queramos gestionar. El espacio central
del entorno de trabajo está reservado para mostrar los ficheros en C o C++ con
los que nos encontramos trabajando. La parte inferior de la interfaz gráfica.
15. (OpciónVer -> Explorador de Proyectos
Suelto )(no anclado)
• (Opción Ver -> Explorador de Proyectos Suelto (no
anclado)) es la que utiliza el programa para devolver los
resultados de la compilación y depuración de los
proyectos. Ahora trataremos de ilustrar la utilización del
interfaz por medio de la creación de un nuevo proyecto
16. LIBRERIAS
• Luego debemos elegir como vamos a utilizar la librería MFC:
• Si usamos MFC como un archivo compartido nuestra
aplicación (.exe) ocupará poco espacio será portable hacia
cualquier sistema operativo Windows que tenga
instaladoVisual C++ Runtime.
17. • En cambio si usamos MFC como una biblioteca estática nuestra aplicación
contiene todo lo necesario para ejecutarse, puede llegar a ocupar muchos
megas y puede portarse a otros sistemas Windows que incluso no tengan
instaladoVisual C++ Runtime.
• No usar Bibliotecas Unicode, a menos que sean completamente
necesarias
18. Herramientas comunes
• Puedes descargar Visual Studio Community 2015 con un
ejecutable a travéz de Internet o descargarte una ISO para
grabarlo en un DVD.
• Antes de instalar, seleccionamos las Herramientas comunes
para Visual C++ 2015 como indica en la imagen.
19. Creación de un nuevo proyecto
• Una vez situados dentro de la aplicación, la forma de crear
un proyecto es:
Archivo -> Nuevo -> Proyecto
Tras realizar dicha operación se obtiene el siguiente cuadro
de diálogo, en el cual deberemos elegir qué tipo de proyecto
queremos crear, y si el mismo es de C o de C++:
20. En la pestaña Basic nos encontramos con 5 opciones (generalmente, el lenguaje de
programación elegido por nosotros durante el curso, salvo que sea explícitamente
indicado, será En C++, aunque también se puede elegir En C):
• Windows Application: para crear aplicaciones para Windows (por defecto se crea
un archivo de nombre main.cpp que contiene algunas órdenes básicas que
deberían ir incluidas en un programa que se vaya a ejecutar en un entorno
Windows)
• Console Application: para crear aplicaciones que abren una consola de MS- DOS
al terminar su ejecución (por defecto se crea un archivo main.cpp que contiene
algunas órdenes básicas que permiten mostrar una consola de MS- DOS)
21. • Static Library: creación de una librería estática (archivo .a)
• DLL: para crear DLL’s (Dynamic Link Library, "Biblioteca de vínculos dinámicos", es un
archivo que contiene funciones que se pueden llamar desde aplicaciones u otras DLL) en
C o C++.
• Empty Project: para proyectos que el usuario va a definir completamente. (Esta será la
opción que utilizaremos nosotros más comúnmente) En el campo Nombre del Proyecto
podemos elegir la denominación que le daremos a nuestro proyecto. En caso contrario,
Dev-C++ le asignará un nombre automáticamente.
22. Nuevo proyecto
• Hay algunas opciones adicionales en las pestañas de la ventana que
no trataremos ahora. Con todas estas decisiones se crea un nuevo
proyecto que inicialmente estará formado por las herramientas que
considera Dev-C++ básicas para crear el tipo de proyecto que nosotros
hemos elegido. Por ejemplo, en el caso de que nosotros creemos un
proyecto llamado
Hola Mundo
del tipo : Console Application
23. En C++ (que se correspondería con el siguiente
cuadro de diálogo: ) el proyecto que generará
automáticamente Dev-C++ tendrá el siguiente
aspecto:
24. Vemos que se ha creado, en
primer lugar, un proyecto
llamado Hola Mundo, y que
por defecto, Dev-C++ le ha
añadido un archivo main.cpp
con la información más
básica para crear una
aplicación que trabaje a
través de la ventana de
comandos de MS-DOS.
25. Modificación de proyectos
• Una vez que hemos definido un proyecto, el entorno de Dev-C++ posee
multitud de herramientas que permiten modificar el mismo. Las más
importantes son las que nos permiten añadir nuevos archivos o archivos ya
existentes a nuestro proyecto, así como quitar archivos al mismo, o modificar
las propiedades del proyecto (por ejemplo, el nombre). Estas opciones
pueden ser modificadas con el puntero del ratón situado encima del icono
del proyecto en la ventana del Explorador de Proyectos/Clases:
26. o también directamente desde la
pestaña Proyecto de la ventana del
Dev- C++, con la opción Nuevo
Código Fuente:
27. Los diversos comandos que aparecen en la
pestaña nos permiten:
• Nuevo Código Fuente: Añadir un archivo nuevo (en blanco) a nuestro proyecto.
Añadir a Proyecto: Añadir un archivo ya existente de C, C++, o de cabeceras (un
.h) a nuestro proyecto.
• Quitar del Proyecto: Permite eliminar un archivo de nuestro proyecto (pero no
borra ese archivo).
• Opciones del Proyecto: aquí se pueden modificar múltiples opciones, como el
nombre del proyecto, su tipo, añadir nuevos directorios al mismo, instrucciones
al compilador, y hasta modificar el icono del mismo.
28. Grabar un proyecto
Para grabar un proyecto en Dev-C++ la opción que hemos de
utilizar es
Archivo -> Guardar Proyecto como ...
que nos permite grabar un proyecto, incluso cambiándole el
nombre. Al mismo tiempo, Dev-C++ nos ofrecerá la opción de
grabar todos aquellos archivos pertenecientes al mismo que
hayan sido modificados.
29. Grabar los archivos de un proyecto
• Del mismo modo, se pueden grabar los distintos archivos
que forman parte de un proyecto por medio de la opción:
Archivo -> Guardar
mientras alguno de los archivos está seleccionado (y ha
sido previamente modificado). Por ejemplo, la siguiente
imagen muestra como podríamos guardar el archivo
main.cpp de nuestro proyecto tras introducir algún cambio
en el mismo:
30. El comando
Archivo -> Guardar Como ...
• permite modificar el nombre del archivo a la vez que lo salva.
Finalmente, el comando Archivo -> Guardar Todo salva todos los
archivos que hayan sido modificados durante nuestra sesión de trabajo.
31. Compilación y ejecución de proyectos
• Una vez que hemos generado un proyecto y hemos sido capaces de salvar el
mismo, el próximo paso será intentar compilarlo y ejecutarlo. El sistema de
compilación que utiliza Dev-C++ (por defecto) es MinGW 1 , que consiste en un
conjunto de herramientas incluyendo los compiladores gcc y g++, así como un
sistema de cabeceras y librerías que permiten crear aplicaciones para Windows
que no requieren de DLL’s externas.
32. Al crear un proyecto, o modificando sus propiedades, se
puede definir si un proyecto va a ser desarrollado en C o
en C++, y de esa forma Dev-C++ decide si debe aplicar el
compilador presente en MinGW para C (gcc) o el de C++
(g++), así como las órdenes de “linkado” del mismo; por
lo tanto, a la hora de ejecutar, nosotros como usuarios
todo lo que debemos hacer es activar la opción
Ejecutar -> Compilar
33. • o directamente dirigirnos al icono de acceso rápido en la barra de
herramientas Compilar y Ejecutar.
• En Dev-C++ el proceso de compilación y “linkado” se tratan como si fueran
sólo uno, y el programador no puede intervenir durante el mismo.
• Si el resultado de la compilación y el “linkado” es satisfactorio, Dev-C++
generará un archivo ejecutable con el nombre del proyecto activo (en este
caso, Hola Mundo.exe).
• En caso contrario, la pestaña Resultado de la compilación se desplegará
mostrando los fallos que se han encontrado en el proceso de compilación y
“linkado”.
34. • Si el proyecto ha sido compilado satisfactoriamente, Dev-
C++ habrá generado varios ficheros auxiliares en la misma
carpeta que se encuentran el proyecto y sus archivos. Por
ejemplo, por cada archivo fuente de código C o C++, la
compilación genera un archivo con el mismo nombre y
extensión “.o”, un fichero objeto, que luego son linkados
(junto con las librería necesarias) para crear el ejecutable.
Por ejemplo, en nuestro caso, del archivo main.cpp se
generará un archivo objeto de nombre main.o.
El ejecutable generado (Hola Mundo.exe) puede ser utilizado
independientemente de los archivos del proyecto. Su
ejecución se puede hacer a través de la pestaña
Ejecutar -> Ejecutar
35. Otras herramientas
• Dev-C++ ofrece otras muchas opciones al usuario en los distintos
menús, del estilo de las que se pueden encontrar en cualquier IDE,
como el menú “Edición”, que cuenta con las opciones habituales de
“Cortar”, “Copiar”, “Seleccionar todo”, ...
36. • El menú “Buscar” permite hacer búsquedas dentro de los ficheros
de nuestros proyectos. En el menú “Ver” se nos permite modificar
las barras de herramientas visibles en el entorno de trabajo. En
“Herramientas” podemos modificar algunas de las opciones
referentes al compilador (aunque generalmente dejaremos las que
tiene por defecto) o a la interfaz con el usuario.
37. ventajas
• Ocupan poco espacio de memoria.
• Se pueden transportar en cualquier dispositivo.
• Son de fácil manejo para el usuario.
• ventajas de C++
• Es un lenguaje que permite programar de forma
estructurada, modular y orientado a objetos. Por lo que
permite laasimilación de todas estas técnicas.
38. • Es un lenguaje que permite el manejo de todo tipo de estructuras de datos (arrays, pilas,
colas, textos, objetos,...) por lo que es capaza de resolver todo
• Es un lenguaje compilado, lo que le hace muy rápido (quizá el más rápido, descontando
el ensamblador)
• Permite crear todo tipo de aplicaciones(aunque no está pensado para crear aplicaciones
para ejecutar desde Internet)
• Gracias a su capacidad de uso de objetos y clases, facilita la reutilización del código
• Permite incorporar las librerías más utilizadas para hacer aplicaciones
• Es el lenguaje que sirve de base para los lenguajes modernos como Java, C#, Perl,...
39. desventajas
• Si el programa fuente tiene errores, el ejecutable tendrá
problema de funcionamiento.
• Es detectado por el antivirus, creyendo que es un virus o
malware.
40. Para iniciar una aplicación de escritorio
deWindows
• Al igual que todas las aplicaciones C y C++ deben tener una función main coo
punto de partida,todas las aplicaciones basadas en win32 debern tener la
función winmain.winmain
• Debido a que el código de aplicación debe utilizar las definiciones existentes,
agregue instrucciones de inclusión al archivo.
41. • Además de la función WinMain, todas las aplicaciones de escritorio de Windows
deben tener una función de procedimiento de ventana. Esta función
normalmente se denomina WndProc.WndProc tiene la siguiente sintaxis.
• Esta función controla los abundantes mensajes que una aplicación recibe del
sistema operativo. Por ejemplo, en una aplicación que tiene un cuadro de
diálogo con un botón Aceptar, cuando el usuario hace clic en el botón, el
sistema operativo envía a la aplicación un mensaje que informa de que se hizo
clic en el botón.WndProc es responsable de responder a ese evento. En el
ejemplo, la respuesta adecuada podría ser cerrar el cuadro de diálogo.
42. Para agregar funcionalidad a la función
WinMain
• En la función WinMain, cree una estructura de clase de ventana de tipo WNDCLASSEX.
Esta estructura contiene información sobre la ventana, por ejemplo, el icono de la
aplicación, el color de fondo de la ventana, el nombre que aparece en la barra de título,
el nombre de la función de procedimiento de ventana, etc. El ejemplo siguiente muestra
una estructura típica de WNDCLASSEX.
• Ahora que ya ha creado una clase de ventana, debe registrarla. Use la
función RegisterClassEx y pase la estructura de clase de ventana como argumento.
43. • Ahora puede crear una ventana. Use la función CreateWindow.
• Ahora, utilice el código siguiente para mostrar la ventana.
• Ahora agregue un bucle de mensajes para escuchar los mensajes que
envía el sistema operativo. Cuando la aplicación recibe un mensaje, este
bucle lo envía a la función WndProc que se va a controlar.
44. Para agregar funcionalidad a la
funciónWndProc
• Para habilitar la función WndProc a fin de controlar los mensajes que recibe la
aplicación, implemente una instrucción switch.
• El primer mensaje que se va a controlar es el mensaje WM_PAINT. La aplicación
recibe este mensaje cuando debe actualizarse la parte de su ventana mostrada.
(Cuando se muestra por primera vez la ventana, toda ella se debe actualizar).
45. • Para controlar un mensaje WM_PAINT, primero llame a BeginPaint, controle
toda la lógica para mostrar el texto, los botones y otros controles de la
ventana y luego llame a EndPaint. Para esta aplicación, la lógica entre la
llamada inicial y la llamada final consiste en mostrar la cadena "Hello, World!"
en la ventana.
• En el siguiente código, observe que la función TextOut se usa para mostrar la
cadena.
• Una aplicación normalmente controla muchos otros mensajes, por
ejemplo, WM_CREATE y WM_DESTROY. El código siguiente muestra una
función WndProc básica pero completa.
46. Crear la colección de formularios
personalizada
• El primer paso para crear una clase de colección
personalizada en Visual C++ .NET o en Visual C++ 2005 es
agregar una clase al proyecto. Para evitar que se agreguen a
la colección objetos que no sean objetos de formulario ,
asegúrese de que esta clase hereda de la
clase CollectionBase y, a continuación, sombrea el
método Add . Para ello, siga estos pasos:
47. • Inicie Microsoft Visual Studio .NET 2003 o Microsoft Visual
Studio 2005.
• En el menú archivo , elija
De nuevoy, a continuación, haga clic en proyecto.
• Haga clic en proyectos de Visual C++ en
Tipos de proyectoy, a continuación, en plantillas, haga clic
en Aplicación de Windows Forms (. NET) .
Nota: En Visual C++ 2005, los Proyectos de Visual C++ se cambia
a Visual C++.
48. • En el cuadro de texto nombre , escriba
Q815706.
• En el cuadro de texto ubicación , escriba
C:Testy, a continuación, haga clic en Aceptar.
• En el menú proyecto , haga clic en Agregar clase.
• En el cuadro de diálogo Agregar clase , haga clic en
Clase genérica de C++ en plantillasy, a continuación, haga
clic en Abrir
Nota: En Visual C++ 2005, Clase genérica de C++ se cambia
a la Clase de C++
49. • En el Asistente para clases genéricas de C++, escriba
FormsCollection en el cuadro nombre de clase ,
escriba CollectionBase en el cuadro clase Basey, a continuación,
haga clic en Finalizar.
• Abra el archivo FormsCollection.cpp y, a continuación, elimine el
código para el constructor y el código para el destructor.
50. Abra el archivo FormsCollection.h y, a continuación, reemplace el
código existente con el código siguiente.
#pragma once
using namespace System::Collections;
using namespace System::Windows::Forms;
public __gcclass FormsCollection : public CollectionBase
{
public:
Form* Add(Form *FormObject)
{
List->Add((FormObject));
return(FormObject) ;
51. Estructura de un programa c++
• Los símbolos
• { y }
• indican el inicio y el final de la función. Esos símbolos permiten
delimitar bloques en el código.
• El nombre de la función puede ser invocado desde otras sentencias
simplemente poniendo como sentencia el nombre de la función. Como
a veces las funciones se almacenan en archivos externos, necesitamos
incluir esos archivos en nuestro código mediante una sentencia
especial include, que en realidad es una directiva de compilación.
52. • Una directiva de compilación es una instrucción para el compilador con el que
trabajamos. El uso es: #include <cabeceraDeArchivoExterno>
• La directiva include permite indicar un archivo de cabecera en el que estará incluida la
función que utilizamos. En el lenguaje C estándar, los archivos de cabecera tenían
extensión h, en C++ estándar (ANSI) no se indica la extensión de éstos; aunque se suele
incluir la extensión por compatibilidad.
• Los archivos de cabecera son los que permiten utilizar funciones externas (o librerías) en
nuestro programa. Hay que tener en cuenta que las cabeceras son distintas en C y C++,
pero que se pueden utilizar los archivos de cabecera clásicos del C en C++.
• Una de las librerías más utilizadas en los programas, es la que permite leer y escribir en la
consola del Sistema Operativo. En el caso de C++ esta librería está disponible en la
cabecera iostream (en C se utiliza la cabecera stdio.h).
53. Elementos de un programa c++
sentencias
Los programas en C++ se basan en sentencias las cuales siempre se
incluyen dentro de
una función. En el caso de crear un programa ejecutable, esas
sentencias están dentro
de la función main A está función le precede la palabra void o la palabra
int(en realidad es más correcta ésta última como se verá más adelante).
Ahora bien al escribir sentencias hay que tener en cuenta las siguientes
normas:
Toda sentencia en C++ termina con el símbolo "punto y coma" (
Los bloques de sentencia empiezan y terminan delimitados con el
símbolo de
llave ({ y }). Así {significa inicio y }significa fin
En C++ hay distinción entre mayúsculas y minúsculas. No es lo mismo
Main que MAIN
Todas las palabras claves de C++ están en minúsculas. Los nombres
que pongamos nosotros también conviene ponerles en minúsculas ya
que el código es mucho más legible así (aunque esto último no es
obligatorio,deberíamos tomárnoslo como tal, debido a su importancia)
54. Comentarios
• Se trata de texto que es ignorado por el compilador al traducir el código. Esas líneas
se utilizan para documentar el programa.
• Esta labor de documentación es fundamental ya que sino en cuanto pasa un tiempo
el código no se comprende bien (ni siquiera por el autor del mismo). Todavía es más
importante cuando el código va a ser tratado por otras personas; de otro modo una
persona que modifique el código de otra lo tendría muy complicado.
55. palabras reservadas
• Se llaman así a palabras que en C++ tienen un significado concreto
para los compiladores. No se pueden por tanto usar esas palabras
para poner nombre a variables, constantes, funciones o clases de
• finidas por el programador. La lista de palabras reservadas proceden
tanto del C, como del C++
56. identificadores
• Son los nombres que damos a las variables y a las funciones de C
Lógicamente no pueden coincidir con las palabras reservadas. Además
puesto que C distingue entre las mayúsculas y las minúsculas, hay que
tener cuidado de usar siempre las minúsculas y mayúsculas de la misma
forma.El límite de tamaño de un identificador es de 32 caracteres (aunque
algunos compiladores permiten más tamaño).