Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El punto de partida habitual para un programador de C++ es una aplicación "Hello, world!" que se ejecuta en la línea de comandos. Empieza con eso en este artículo y, a continuación, pasa a algo más difícil: una aplicación de calculadora.
Prerrequisitos
- Visual Studio con la carga de trabajo Desarrollo de escritorio con C++ instalada y ejecutándose en el equipo. Para instalarlo, consulte Instalación de la compatibilidad con C++ en Visual Studio.
- En este tutorial se muestra una característica denominada editar y continuar, lo que le permite realizar cambios en el código mientras se ejecuta la aplicación. Para habilitar la edición y continuar, en el menú principal, seleccione Herramientas>Opciones>depuración>General y asegúrese de que Requerir que los archivos de origen coincidan exactamente con la versión original está activada.
Creación del proyecto de aplicación
Visual Studio usa proyectos para organizar el código de una aplicación y soluciones para organizar uno o varios proyectos. Un proyecto contiene todas las opciones, configuraciones y reglas que se usan para compilar una aplicación. También administra la relación entre todos los archivos del proyecto y los archivos externos. Para crear la aplicación, en primer lugar, cree un nuevo proyecto y una solución.
Aparecerá el cuadro de diálogo Inicio de Visual Studio. Seleccione Crear un nuevo proyecto para empezar.
El cuadro de diálogo tiene opciones para clonar un repositorio, abrir un proyecto o una solución, abrir una carpeta local y crear un nuevo proyecto".
En el cuadro de diálogo Crear un nuevo proyecto , establezca la lista desplegable lenguaje en C++, establezca la lista desplegable plataforma en Windows, seleccione Aplicación de consola en la lista de tipos de proyecto y, a continuación, seleccione Siguiente.
La lista desplegable del lenguaje se establece en C++, la lista desplegable de la plataforma se establece en Windows y los tipos de proyecto como Proyecto vacío, Aplicación de consola, Proyecto de CMake, Asistente para escritorio de Windows, etc., aparecen en la lista de tipos de proyecto".
Importante
Asegúrese de seleccionar la versión de C++ de la plantilla Aplicación de consola . Tiene las etiquetas de C++, Windows y Consola , y el icono tiene "++" en la esquina.
En el cuadro de diálogo Configurar el nuevo proyecto , seleccione el cuadro de texto Nombre del proyecto, asigne al nuevo proyecto el nombre CalculatorTutorial y, a continuación, seleccione Crear.
Se crea una aplicación de consola de Windows "Hello World" vacía. Las aplicaciones de consola usan una ventana de consola de Windows para mostrar la salida y aceptar la entrada del usuario. En Visual Studio, se abre una ventana del editor y se muestra el código generado:
// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> int main() { std::cout << "Hello World!\n"; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Comprobación de que la nueva aplicación se compila y ejecuta
La plantilla de una nueva aplicación de consola de Windows crea una sencilla aplicación "Hola mundo" de C++. En este punto, puede ver cómo Visual Studio compila y ejecuta las aplicaciones que crea directamente desde el IDE.
Para compilar el proyecto, seleccione Compilar solución en el menú Compilar . La ventana Salida muestra los resultados del proceso de compilación.
Para ejecutar el código, en la barra de menús, seleccione Depurar>Inicio sin depurar (Ctrl+F5).
Se abre una ventana de consola y la aplicación se ejecuta dentro de ella.
Al iniciar una aplicación de consola en Visual Studio, ejecuta el código y, a continuación, imprime "Presione cualquier tecla para cerrar esta ventana . . ." para darle la oportunidad de ver la salida.
¡Felicidades! Ha creado su primera aplicación de consola "Hola mundo!" en Visual Studio.
Presione una tecla para descartar la ventana de la consola y volver a Visual Studio.
Ahora tiene las herramientas para compilar y ejecutar la aplicación después de cada cambio, para comprobar que el código sigue funcionando según lo previsto. Más adelante, le mostramos cómo depurarlo si no lo hace.
Edición del código
Ahora vamos a modificar el código de esta plantilla para que sea una aplicación de calculadora.
Reemplace el contenido del
CalculatorTutorial.cpp
archivo por el código siguiente para que coincida con este ejemplo:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> using namespace std; int main() { cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; return 0; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Descripción del código:
- La
#include
instrucción incluye código en otros archivos. A veces, puede ver un nombre de archivo rodeado de corchetes angulares como<iostream>
. Los corchetes angulares indican al compilador que busque primero eliostream
archivo de encabezado en los directorios del sistema estándar y, si no se encuentra, para buscar en directorios específicos del proyecto. Otras veces, es posible que vea un nombre de archivo entre comillas como"someHeader.h"
. Las comillas indican al compilador que omita la búsqueda en los directorios del sistema estándar y, en su lugar, solo busque en directorios específicos del proyecto. -
using namespace std;
indica al compilador que espere que el código de la biblioteca estándar de C++ se use en este archivo. Sin esta línea, cada palabra clave de la biblioteca tendría que ir precedidastd::
de para indicar su ámbito. Por ejemplo, sin esa línea, cada referencia acout
se escribiría comostd::cout
. Lausing
instrucción se agrega para facilitar el acceso al código en otro espacio de nombres. - La
cout
palabra clave se usa para imprimir en la salida estándar en C++. El<<
operador indica al compilador que envíe lo que sea a la derecha de ella a la salida estándar. - La
endl
palabra clave es como la tecla Entrar; finaliza la línea y mueve el cursor a la línea siguiente. Se recomienda colocar un\n
elemento dentro de la cadena (contenido por""
) para hacer lo mismo porqueendl
siempre vacía el búfer que puede afectar al rendimiento del programa. Pero como se trata de una aplicación muy pequeña,endl
se usa en su lugar. - Todas las instrucciones de C++ deben terminar con punto y coma y todas las aplicaciones de C++ deben contener una
main()
función. Esta función es lo que el programa se ejecuta al principio. Todo el código debe ser accesible desdemain()
para poder usarse.
- La
Para guardar el archivo, presione Ctrl+S o seleccione el icono de disco de disquete en la barra de herramientas de la barra de menús.
Para ejecutar la aplicación, presione Ctrl+F5 o vaya al menú Depurar y seleccione Iniciar sin depurar. Debería ver una ventana de consola que tiene este aspecto.
Cierre la ventana de la consola cuando haya terminado.
Agregar código para realizar algunas matemáticas
Una clase es como un plano técnico de un objeto que hace algo. En este caso, definimos una clase de calculadora para que contenga la lógica matemática.
Agregar una clase Calculator
Vaya al menú Proyecto y seleccione Agregar clase. En el cuadro de edición Nombre de clase, escriba Calculadora. Selecciona Aceptar.
El campo nombre de clase contiene la calculadora de texto. El campo de archivo .h contiene Calculator.h. El campo archivo .cpp contiene Calculator.cpp. El campo de clase base está vacío. Las opciones de inline y Managed están desactivadas.
Se agregan dos nuevos archivos al proyecto. Para guardar todos los archivos modificados a la vez, presione Ctrl+Mayús+S. Es un método abreviado de teclado para Guardar>todo. También hay un botón de barra de herramientas para Guardar todo, un icono de dos discos de disquete, que se encuentra junto al botón Guardar . En general, se recomienda hacer Guardar todo con frecuencia, por lo que no se pierde el guardado de ningún cambio.
El Asistente para agregar clase crea
.h
archivos y.cpp
que tienen el mismo nombre que la clase . Puede ver una lista completa de los archivos del proyecto en la ventana Explorador de soluciones, visible en el lado del IDE. Si la ventana no está visible, ábrala desde la barra de menús a través de Ver>Explorador de soluciones.El proyecto del tutorial de calculadora tiene un nodo de archivos de encabezado que contiene Calculator.h. Un nodo Archivos de origen contiene Calculator.cpp y CalculatorTutorial.cpp. Los nodos de referencias, dependencias externas y archivos de recursos son visibles pero cerrados.
Para abrir un archivo, haga doble clic en él en la ventana Explorador de soluciones. Haga doble clic
Calculator.h
para abrirlo.Reemplace el contenido de
Calculator.h
por el código siguiente para que el archivo tenga el siguiente aspecto:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
Descripción del código
- Este código declara una nueva función denominada
Calculate
, que controla las operaciones matemáticas para suma, resta, multiplicación y división. - El código de C++ se organiza en archivos de encabezado (
.h
) y archivos de origen (.cpp
). Algunos otros compiladores admiten otras extensiones de archivo, pero estas son las principales que se deben conocer. Las funciones y las variables normalmente se declaran, es decir, se les da un nombre y un tipo, en archivos de encabezado, e implementan, o se les da una definición, en los archivos de origen. Para acceder al código definido en otro archivo, puede usar#include "filename.h"
, dondefilename.h
es el nombre del archivo que declara las variables o funciones que desea usar. - Es recomendable organizar el código en archivos diferentes en función de lo que hace, por lo que es fácil encontrar el código que necesita más adelante. En nuestro caso, definimos la
Calculator
clase por separado del archivo que contiene lamain()
función, pero tenemos previsto hacer referencia a laCalculator
clase enmain()
.
- Este código declara una nueva función denominada
Aparece un subrayado ondulado verde debajo de
Calculate
porque, aunque la funciónCalculate
está declarada, no está definida. Mantenga el puntero sobreCalculate
, haga clic en la flecha hacia abajo en el icono de destornillador y seleccione Crear definición de "Calculate" enCalculator.cpp
.Este código se agrega a
Calculator.cpp
:La definición de la función es: double Calculator::Calculate( double x, char oper, double y) { return 0.0; }
Actualmente, solo devuelve 0,0. Vamos a modificarlas.
Cambie al archivo
Calculator.cpp
en la ventana del editor. Reemplace el contenido deCalculator::Calculate(double x, char oper, double y)
por:double Calculator::Calculate(double x, char oper, double y) { switch(oper) { case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; } }
Descripción del código
- La función
Calculate
toma un número, un operador y un segundo número. A continuación, realiza la operación solicitada en los dos números. - La instrucción
switch
verifica cuál operador se ha proporcionado y ejecuta el caso correspondiente a dicha operación. El casodefault:
es una contingencia en caso de que el usuario escriba un operador que no sea gestionado por ninguna de las instrucciones anteriorescase
. Es mejor controlar la entrada de usuario no válida de una manera más elegante, pero esto está fuera del ámbito de este tutorial. - La
double
palabra clave denota un tipo de número que admite decimales. Este tipo de número se denomina número de punto flotante ydouble
significa un número de punto flotante que tiene precisión adicional. De este modo, la calculadora puede controlar las matemáticas decimales y las matemáticas de enteros. LaCalculate
función es necesaria para devolver siempre un número de punto flotante de precisión doble debido aldouble
inicio del código (esto denota el tipo de valor devuelto de la función), que es el motivo por el que se devuelve 0.0 en el caso predeterminado. - El
.h
archivo declara el prototipo de función, que indica al compilador por adelantado qué parámetros requiere y qué tipo de valor devuelto esperar de él. El.cpp
archivo tiene todos los detalles de implementación de la función.
- La función
Si compila y vuelve a ejecutar el código en este punto, se cierra inmediatamente después de preguntar qué operación realizar. Por lo tanto, modifique la main
función para realizar varios cálculos.
Llamada a las funciones miembro de clase Calculator
Actualice la función
main
enCalculatorTutorial.cpp
de la siguiente manera:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; result = c.Calculate(x, oper, y); cout << "Result " << "of " << x << oper << y << " is: " << result << endl; } return 0; }
Descripción del código
- Puesto que los programas de C++ siempre comienzan en la
main()
función, es necesario llamar a nuestro otro código desde allí, por lo que se necesita una#include
instrucción para que ese código sea visible para nuestramain()
función. - Las variables
x
,y
,oper
yresult
se declaran para almacenar el primer número, el segundo número, el operador y el resultado final, respectivamente. Siempre es recomendable darles algunos valores iniciales para evitar un comportamiento indefinido, que es lo que se hace aquí. - La
Calculator c;
línea declara un objeto denominadoc
como una instancia de laCalculator
clase . La propia clase es simplemente un plano técnico para el funcionamiento de las calculadoras; el objeto es la calculadora específica que realiza las matemáticas. - La
while (true)
instrucción es un bucle. El código dentro del bucle se ejecuta una y otra vez, siempre y cuando la condición dentro de la()
propiedad contenga true. Puesto que la condición simplemente aparece comotrue
, siempre es true, por lo que el bucle se ejecuta para siempre. Para cerrar el programa, el usuario debe cerrar manualmente la ventana de la consola. De lo contrario, el programa siempre espera una nueva entrada. - La
cin
palabra clave acepta la entrada del usuario. El flujo de entrada es lo suficientemente inteligente como para procesar una línea de texto escrito en la ventana de la consola y colocarlo dentro de cada una de las variables enumeradas, en orden. - La
c.Calculate(x, oper, y);
expresión llama a laCalculate
función definida anteriormente y proporciona los valores de entrada especificados y la operación solicitada. A continuación, la función devuelve un número que se almacena enresult
. - Por último,
result
se imprime en la consola y el usuario ve el resultado del cálculo.
- Puesto que los programas de C++ siempre comienzan en la
Compilar y probar el código de nuevo
Ahora vuelva a probar el programa para asegurarse de que todo funciona correctamente.
Presione Ctrl+F5 para volver a generar e iniciar la aplicación.
Escriba
5+5
y presione Entrar. Compruebe que el resultado es 10.La aplicación genera el mensaje: Escriba la operación que se va a realizar. Formato: a+b | a-b | a*b | a/b. El usuario escribió 5+5. La salida de la aplicación: El resultado de 5+5 es: 10
Detenga el programa cerrando la ventana de la consola.
Depurar la app
Dado que el usuario puede escribir cualquier cosa en la ventana de la consola, vamos a asegurarnos de que la calculadora controla la entrada inesperada. En lugar de ejecutar el programa, vamos a depurarlo para que podamos inspeccionar lo que está haciendo paso a paso.
Ejecución de la aplicación en el depurador
En
CalcuatorTutorial.cpp
, establezca un punto de interrupción en la línea:result = c.Calculate(x, oper, y);
. Para establecer el punto de interrupción, haga clic junto a la línea de la barra vertical gris a lo largo del borde izquierdo de la ventana del editor para que aparezca un punto rojo.Ahora, cuando depuramos el programa, la ejecución se detiene en esa línea. Ya tenemos una idea aproximada de que el programa funciona para casos simples. Puesto que no queremos pausar la ejecución cada vez que llamamos a
Calculate()
, vamos a hacer condicional el punto de interrupción.Haga clic con el botón derecho en el punto rojo que representa el punto de interrupción y seleccione Condiciones. En el cuadro de edición de la condición, escriba
(y == 0) && (oper == '/')
. Seleccione el botón Cerrar para guardar la condición del punto de interrupción.El punto de interrupción está en la línea: result = c dot Calculate ( x, oper, y). 'Condiciones...' La opción Condición está activada. El menú desplegable Condiciones está configurado en "Expresión condicional". La lista desplegable de condiciones se establece en "Es verdadero". La condición se establece en y == 0 && oper == '/'.
Ahora, la ejecución se detiene en el punto de interrupción cuando la aplicación intenta dividir en 0.
Para depurar el programa, presione F5 o seleccione el botón de la barra de herramientas Depurador local de Windows que tiene un icono de flecha verde. En la aplicación de consola, si escribe algo parecido a "5 - 0", el programa se comporta normalmente y sigue ejecutándose. Sin embargo, si escribe "10 /0", se pausa en el punto de interrupción. Puede colocar cualquier número de espacios entre el operador y los números:
cin
es lo suficientemente inteligente como para analizar la entrada correctamente.
Ventanas útiles en el depurador
Al depurar el código, es posible que observe que aparecen algunas ventanas nuevas. Estas ventanas pueden mejorar su experiencia de depuración. Eche un vistazo a la ventana Autos. La ventana Autos muestra los valores actuales de las variables usadas al menos tres líneas antes y hasta la línea actual. Si no ve la ventana Autos, en el menú principal, seleccione Depurar>Windows>Autos.
El valor de oper es 47 '/', el resultado es 5, x es 10 y y y es 0.
Para ver todas las variables de esa función, cambie a la ventana Variables locales . Dado que se trata de una función pequeña, las ventanas Auto y Variables local muestran las mismas variables. Pero puede modificar los valores de estas variables en la ventana Variables locales durante la depuración para ver qué efecto tendría en el programa. En este caso, los dejamos solos. Abra la ventana Variables locales seleccionando Variables locales en la parte inferior de la ventana Ventana de variables automáticas o seleccionando en el menú principal Depurar>Windows>Variables locales.
El valor del oper es 47 '/', el resultado es 0, x es 10 y y y es 0.
También puede mantener el puntero sobre las variables en el código para ver sus valores actuales en el punto en el que la ejecución está en pausa actualmente. Asegúrese de que la ventana del editor está en el foco haciendo clic en ella primero.
Continuar depuración
La flecha amarilla de la izquierda muestra el punto actual de ejecución. La línea actual llama a
Calculate
, por lo que pulse F11 para Entrar en la función. Ahora está ejecutando código en el cuerpo de la funciónCalculate
. Tenga cuidado con Step Into porque se adentra en cualquier función de la línea que está utilizando, incluidas las funciones de biblioteca estándar. Es adecuado profundizar en la biblioteca estándar, pero es posible que le interese centrarse en el código en lugar de en el código de biblioteca.Ahora que el punto de ejecución está al principio de la
Calculate
función, presione F10 para pasar a la línea siguiente de la ejecución del programa. F10 también se conoce como Saltar. Puede usar Step Over para pasar de línea a línea, sin profundizar en los detalles de lo que ocurre en cada parte de la línea. En general, debe usar Step Over en lugar de Step Into a menos que desee analizar más en profundidad el código al que se llama desde otro lugar (como lo hizo para llegar al cuerpo deCalculate
).Siga usando F10 para recorrer paso a paso por cada línea hasta que vuelva a la
main()
función del otro archivo y se detenga en lacout
línea.El programa está haciendo lo que se espera: toma el primer número y lo divide por segundo. En la
cout
línea, pon el ratón sobre laresult
variable o consultaresult
en la ventana Autos. Su valor esinf
, que no parece correcto.La instrucción actual del depurador es cout << "Result is: " << resultado << endl; en la ventana de variables automáticas, el resultado es inf.
Vamos a arreglarlo. La
cout
línea genera cualquier valor almacenado enresult
, por lo que cuando se avanza una línea más mediante F10, se muestra la ventana de la consola:La aplicación muestra: introduzca la operación a realizar. Formato: a+b | a-b | a*b | a/b. El usuario introdujo 5-0. La salida de la aplicación: El resultado es: 5. El usuario escribió 10/0. La salida de la aplicación: El resultado es: inf
Este resultado se debe a que la división por cero no está definida, por lo que el programa no tiene una respuesta numérica para la operación solicitada.
Corregir el error "división entre cero"
Vamos a controlar la división por cero con más gracia para que sea más fácil que el usuario comprenda el problema.
Realice los cambios siguientes en
CalculatorTutorial.cpp
. Puede dejar el programa en ejecución mientras edita, gracias a una característica del depurador denominada Editar y continuar. Agregue una instrucción después deif
para comprobar la división por cero y mostrar un mensaje al usuario si ocurre. De lo contrario, se imprime el resultado.// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; if (oper == '/' && y == 0) { cout << "Math error: Attempted to divide by zero!" << endl; continue; } else { result = c.Calculate(x, oper, y); } cout << "Result " << "of " << x << oper << y << " is: " << result << endl; } return 0; }
Presione F5 una vez. La ejecución del programa continúa hasta que tiene que pausarse para solicitar la entrada del usuario. Vuelva a escribir
10 / 0
. Ahora, se imprime un mensaje más útil. Se solicita al usuario más entrada y el programa continúa ejecutándose con normalidad.La ventana de consola muestra dos líneas: 10 / 0 El resultado es: inf, seguido por, 10 / 0 Error matemático: Intento de dividir por cero.
Nota:
Al editar código mientras está en modo de depuración, hay un riesgo de que el código quede obsoleto. Esto sucede cuando el depurador sigue ejecutando el código antiguo y aún no lo ha actualizado con los cambios. El depurador muestra un cuadro de diálogo para informarle de cuándo ocurre esto. A veces, es posible que tenga que presionar F5 para actualizar el código que se está ejecutando. En concreto, si realiza un cambio dentro de una función mientras el punto de ejecución está dentro de esa función, debe salir de la función y volver a entrar en ella para obtener el código actualizado. Si eso no funciona y ve un mensaje de error, puede detener la depuración haciendo clic en el cuadrado rojo de la barra de herramientas debajo de los menús de la parte superior del IDE y, a continuación, inicia la depuración de nuevo escribiendo F5 o seleccionando la flecha verde "reproducir" junto al botón detener de la barra de herramientas.
Otra razón por la que editar y continuar puede producir un error es si ve un mensaje que indica "Requerir que los archivos de origen coincidan exactamente con la configuración de versión original en Debug-Options-General>> debe estar habilitado..." Para corregirlo, en el menú principal, seleccioneOpciones de>herramientas>Depuración>General y asegúrese de que Requerir que los archivos de origen coincidan exactamente con la versión original está activada.
Descripción de los métodos abreviados de ejecución y depuración
- F5, o Depurar>, inicia una sesión de depuración, si aún no está activa y ejecuta el programa hasta que se alcanza un punto de interrupción o el programa necesita la entrada del usuario. Si no se necesita ninguna entrada de usuario y no hay ningún punto de interrupción disponible para alcanzar, el programa finaliza y la ventana de la consola se cierra cuando el programa termina de ejecutarse. Si su programa envía la salida a la consola, utilice Ctrl+F5 o coloque un punto de interrupción antes de presionar F5 para mantener abierta la ventana.
- Ctrl+F5 o Depurar>Iniciar sin depurar, ejecuta la aplicación sin entrar en modo de depuración. Esto es un poco más rápido que la depuración, y la ventana de la consola permanece abierta después de que el programa termine de ejecutarse.
- F10, conocido como Paso sobre, le permite iterar a través del código, línea por línea, y visualizar cómo se ejecuta el código y cuáles son los valores de las variables en cada paso de ejecución.
- F11, conocido como Entrar, funciona de forma similar a Saltar, excepto que entra en cualquier función llamada en la línea de ejecución. Por ejemplo, si la línea que se ejecuta llama a una función, al presionar F11 se mueve el puntero al cuerpo de la función, por lo que puede seguir el código de la función que se ejecuta antes de volver a la línea en la que se inició. Presionar F10 ejecuta por encima de la llamada de función y procede a la línea siguiente; la llamada de función sigue sucediendo, pero el programa no se detiene para mostrar lo que está haciendo.
Cerrar la aplicación
- Si sigue ejecutándose, cierre la ventana de la consola para detener la aplicación de calculadora.
Adición del control de código fuente de Git
Ahora que ha creado una aplicación, es posible que quiera agregarla a un repositorio de Git. Tenemos lo que necesita. Visual Studio facilita ese proceso con las herramientas de Git que puede usar directamente desde el IDE.
Sugerencia
Git es el sistema de control de versiones moderno más usado, por lo que tanto si es desarrollador profesional como si está aprendiendo a codificar, Git puede ser muy útil. Si no está familiarizado con Git, el sitio web de https://git-scm.com/ es un buen lugar para empezar. Allí puede encontrar hojas de referencia rápida, un libro en línea popular y vídeos de Git Basics.
Para asociar el código a Git, empiece por crear un nuevo repositorio de Git donde se encuentra el código. A continuación se muestra cómo hacerlo:
En la barra de estado de la esquina inferior derecha de Visual Studio, seleccione Agregar al control de código fuente y, a continuación, seleccione Git.
En el cuadro de diálogo Crear un repositorio de Git , inicie sesión en GitHub.
El nombre del repositorio se rellena automáticamente en función de la ubicación de la carpeta. De forma predeterminada, el nuevo repositorio es privado, lo que significa que es el único que puede acceder a él.
Sugerencia
Tanto si el repositorio es público como privado, es mejor tener una copia de seguridad remota del código almacenado de forma segura en GitHub. Incluso si no está trabajando con un equipo, un repositorio remoto pone el código a su disposición desde cualquier equipo.
Seleccione Crear y enviar los cambios.
Después de crear el repositorio, los detalles de estado aparecen en la barra de estado.
El primer icono con las flechas muestra cuántas confirmaciones salientes o entrantes se encuentran en la rama actual. Puede usar este icono para extraer las confirmaciones entrantes o empujar las confirmaciones salientes. También puede elegir ver primero estas confirmaciones. Para ello, seleccione el icono y, a continuación, seleccione Ver saliente/entrante.
El segundo icono con el lápiz muestra el número de cambios no confirmados en el código. Puede seleccionar este icono para ver esos cambios en la ventana cambios de Git .
Para más información sobre cómo usar Git con la aplicación, consulte la documentación del control de versiones de Visual Studio.
La aplicación finalizada
¡Felicidades! Ha completado el código de la aplicación de calculadora, lo ha compilado y depurado y lo ha agregado a un repositorio, todo en Visual Studio.
Pasos siguientes
El punto de partida habitual para un programador de C++ es una aplicación "Hello, world!" que se ejecuta en la línea de comandos. Empieza con eso en este artículo y, a continuación, pasa a algo más difícil: una aplicación de calculadora.
Prerrequisitos
- Visual Studio con la carga de trabajo Desarrollo de escritorio con C++ instalada y ejecutándose en el equipo. Para instalarlo, consulte Instalación de la compatibilidad con C++ en Visual Studio.
Creación del proyecto de aplicación
Visual Studio usa proyectos para organizar el código de una aplicación y soluciones para organizar uno o varios proyectos. Un proyecto contiene todas las opciones, configuraciones y reglas que se usan para compilar una aplicación. También administra la relación entre todos los archivos del proyecto y los archivos externos. Para crear la aplicación, en primer lugar, cree un nuevo proyecto y una solución.
En la barra de menús de Visual Studio, seleccione Archivo>nuevo>proyecto. Se abre la ventana Nuevo proyecto .
En la barra lateral izquierda, asegúrese de que Visual C++ está seleccionado. En el centro, seleccione Aplicación de consola.
En el cuadro de texto Nombre de la parte inferior, asigne al nuevo proyecto el nombre CalculatorTutorial y seleccione Aceptar.
A la izquierda, se selecciona Otros lenguajes > Visual C++. En el centro, se selecciona el tipo de proyecto Aplicación de consola. El cuadro de texto Nombre contiene CalculatorTutorial.
Se crea una aplicación de consola de Windows "Hello World" vacía. Las aplicaciones de consola usan una ventana de consola de Windows para mostrar la salida y aceptar la entrada del usuario. En Visual Studio, se abre una ventana del editor y se muestra el código generado:
// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> int main() { std::cout << "Hello World!\n"; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Comprobación de que la nueva aplicación se compila y ejecuta
La plantilla de una nueva aplicación de consola de Windows crea una aplicación sencilla de C++ "Hola mundo". En este punto, puede ver cómo Visual Studio compila y ejecuta las aplicaciones que crea directamente desde el IDE.
Para compilar el proyecto, seleccione Compilar solución en el menú Compilar . La ventana Salida muestra los resultados del proceso de compilación.
Para ejecutar el código, en la barra de menús, seleccione Depurar, Iniciar sin depurar (Ctrl+F5).
Se abre una ventana de consola y la aplicación se ejecuta dentro de ella.
Al iniciar una aplicación de consola en Visual Studio, ejecuta el código y, a continuación, imprime
Press any key to close this window . . .
para ofrecerle la oportunidad de ver la salida.¡Felicidades! Ha creado su primera aplicación de consola "Hola mundo!" en Visual Studio.
Presione una tecla para descartar la ventana de la consola y volver a Visual Studio.
Ahora tiene las herramientas para compilar y ejecutar la aplicación después de cada cambio, para comprobar que el código sigue funcionando según lo previsto. Más adelante, le mostramos cómo depurarlo si no lo hace.
Edición del código
Ahora vamos a convertir el código en esta plantilla para que sea una aplicación de calculadora.
Reemplace el contenido del
CalculatorTutorial.cpp
archivo por el código siguiente para que coincida con este ejemplo:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> using namespace std; int main() { cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; return 0; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Descripción del código:
- La
#include
instrucción incluye código en otros archivos. A veces, puede ver un nombre de archivo rodeado de corchetes angulares como<iostream>
. Los corchetes angulares indican al compilador que busque primero eliostream
archivo de encabezado en los directorios del sistema estándar y, si no se encuentra, para buscar en directorios específicos del proyecto. Otras veces, es posible que vea un nombre de archivo entre comillas como"someHeader.h"
. Las comillas indican al compilador que omita la búsqueda en los directorios del sistema estándar y, en su lugar, solo busque en directorios específicos del proyecto. -
using namespace std;
indica al compilador que espere que el código de la biblioteca estándar de C++ se use en este archivo. Sin esta línea, cada palabra clave de la biblioteca tendría que ir precedidastd::
de para indicar su ámbito. Por ejemplo, sin esa línea, cada referencia acout
se escribiría comostd::cout
. Lausing
instrucción se agrega para facilitar el acceso al código en otro espacio de nombres. - La
cout
palabra clave imprime en la salida estándar de C++. El<<
operador indica al compilador que envíe lo que sea a la derecha de ella a la salida estándar. - La
endl
palabra clave es como la tecla Entrar; finaliza la línea y mueve el cursor a la línea siguiente. Se recomienda colocar un\n
elemento dentro de la cadena (contenido por""
) para hacer lo mismo porqueendl
siempre vacía el búfer y puede dañar el rendimiento del programa. Pero como se trata de una aplicación muy pequeña,endl
se usa en su lugar. - Todas las instrucciones de C++ deben terminar con punto y coma y todas las aplicaciones de C++ deben contener una
main()
función. Esta función es lo que el programa se ejecuta al principio. Todo el código debe ser accesible desdemain()
para poder usarse.
- La
Para guardar el archivo, presione Ctrl+S o seleccione el icono de disco de disquete en la barra de herramientas de la barra de menús.
Para ejecutar la aplicación, presione Ctrl+F5 o vaya al menú Depurar y seleccione Iniciar sin depurar. Si aparece un elemento emergente que indica Que este proyecto no está actualizado, puede seleccionar No mostrar este cuadro de diálogo de nuevo y, a continuación, seleccione Sí para compilar la aplicación. Debería ver una ventana de consola que tiene este aspecto:
La aplicación de consola muestra que el resultado es: Aplicación de Consola de Calculadora. Escriba la operación que se va a realizar. Formato: a+b | a-b | a*b | a/b. El proceso terminó con el código 0, y hay un mensaje que indica que para cerrar automáticamente la consola cuando se detenga la depuración, debe habilitar Herramientas > Opciones > Depuración > Cerrar automáticamente la consola cuando se detenga la depuración. Por último, hay un mensaje para presionar cualquier tecla para cerrar esta ventana.
Cierre la ventana de la consola cuando haya terminado.
Agregar código para realizar algunas matemáticas
Una clase es como un plano técnico de un objeto que hace algo. En este caso, definimos una clase de calculadora para que contenga la lógica matemática.
Agregar una clase Calculator
Vaya al menú Proyecto y seleccione Agregar clase. En el cuadro de edición Nombre de clase, escriba Calculadora. Selecciona Aceptar.
El campo nombre de clase contiene la calculadora de texto. El campo de archivo .h contiene Calculator.h. El campo archivo .cpp contiene Calculator.cpp. El campo de clase base está vacío. Las opciones de inline y Managed están desactivadas.
Una clase es como un plano técnico de un objeto que hace algo. En este caso, definimos una calculadora y cómo debería funcionar.
Se agregan dos nuevos archivos al proyecto. Para guardar todos los archivos modificados a la vez, presione Ctrl+Mayús+S. Es un método abreviado de teclado para Guardar>todo. También hay un botón de barra de herramientas para Guardar todo, un icono de dos discos de disquete, que se encuentra junto al botón Guardar . En general, es recomendable hacer Guardar todo con frecuencia, por lo que no se pierde ningún archivo al guardar.
El Asistente para agregar clase crea
.h
archivos y.cpp
que tienen el mismo nombre que la clase . Puede ver una lista completa de los archivos del proyecto en la ventana Explorador de soluciones, visible en el lado del IDE. Si el Explorador de soluciones no está visible, ábralo en la barra de menús: seleccione Ver> exploradorde soluciones.El proyecto del tutorial de calculadora tiene un nodo de archivos de encabezado que contiene Calculator.h, stdafx.h y targetver.h. Un nodo Archivos de origen contiene Calculator.cpp, CalculatorTutorial.cpp y stdafx.cpp. Los nodos de referencias, dependencias externas y archivos de recursos son visibles pero cerrados.
Para abrir un archivo, haga doble clic en él en la ventana Explorador de soluciones. Haga doble clic
Calculator.h
para abrirlo.Reemplace el contenido de
Calculator.h
por el código siguiente para que el archivo tenga el siguiente aspecto:#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
Descripción del código
- Este código declara una nueva función denominada
Calculate
, que controla las operaciones matemáticas para suma, resta, multiplicación y división. - El código de C++ se organiza en archivos de encabezado (
.h
) y archivos de origen (.cpp
). Algunos otros compiladores admiten otras extensiones de archivo, pero estas son las principales que se deben conocer. Las funciones y las variables normalmente se declaran, es decir, se les da un nombre y un tipo, en archivos de encabezado, e implementan, o se les da una definición, en los archivos de origen. Para acceder al código definido en otro archivo, puede usar#include "filename.h"
, dondefilename.h
es el nombre del archivo que declara las variables o funciones que desea usar. - Es recomendable organizar el código en archivos diferentes en función de lo que hace, por lo que es fácil encontrar el código que necesita más adelante. En nuestro caso, definimos la
Calculator
clase por separado del archivo que contiene lamain()
función, pero tenemos previsto hacer referencia a laCalculator
clase enmain()
.
- Este código declara una nueva función denominada
Aparece un subrayado ondulado verde debajo de
Calculate
porque, aunque la funciónCalculate
está declarada, no está definida. Mantenga el puntero sobreCalculate
, haga clic en la flecha abajo de la bombilla y seleccione Crear definición de "Calculate" enCalculator.cpp
. Aparece un elemento emergente que proporciona un vistazo al cambio de código realizado en el otro archivo. El código se agregó aCalculator.cpp
.Actualmente, solo devuelve 0,0. Vamos a modificarlas. Presione Esc para cerrar el elemento emergente y elija Sí para guardar los cambios.
Cambie al archivo
Calculator.cpp
en la ventana del editor. Reemplace el contenido del archivo por el código siguiente:#include "Calculator.h" double Calculator::Calculate(double x, char oper, double y) { switch(oper) { case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; default: return 0.0; } }
Descripción del código
- La función
Calculate
toma un número, un operador y un segundo número. A continuación, realiza la operación solicitada en los dos números. - La instrucción
switch
verifica cuál operador se ha proporcionado y ejecuta el caso correspondiente a dicha operación. El casodefault:
es una contingencia en caso de que el usuario escriba un operador que no sea gestionado por ninguna de las instrucciones anteriorescase
. Es mejor controlar la entrada de usuario no válida de una manera más elegante, pero esto está fuera del ámbito de este tutorial. - La
double
palabra clave denota un tipo de número que admite decimales. Este tipo de número se denomina número de punto flotante ydouble
significa un número de punto flotante que tiene precisión adicional. De este modo, la calculadora puede controlar las matemáticas decimales y las matemáticas de enteros. LaCalculate
función es necesaria para devolver siempre un número de punto flotante de precisión doble debido aldouble
inicio del código (esto denota el tipo de valor devuelto de la función), que es el motivo por el que se devuelve 0.0 en el caso predeterminado. - El
.h
archivo declara el prototipo de función, que indica al compilador por adelantado qué parámetros requiere y qué tipo de valor devuelto esperar de él. El.cpp
archivo tiene todos los detalles de implementación de la función.
- La función
Si compila y vuelve a ejecutar el código en este momento, todavía finaliza después de preguntar cuál operación se debe realizar. A continuación, modifique la main
función para realizar algunos cálculos.
Llamada a las funciones miembro de la clase Calculator
Actualice la función
main
enCalculatorTutorial.cpp
de la siguiente manera:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; result = c.Calculate(x, oper, y); cout << "Result is: " << result << endl; } return 0; }
Descripción del código
- Puesto que los programas de C++ siempre comienzan en la
main()
función, es necesario llamar a nuestro otro código desde allí, por lo que se necesita una#include
instrucción para que ese código sea visible para nuestramain()
función. - Las variables
x
,y
,oper
yresult
se declaran para almacenar el primer número, el segundo número, el operador y el resultado final, respectivamente. Siempre es recomendable darles algunos valores iniciales para evitar un comportamiento indefinido, que es lo que se hace aquí. - La
Calculator c;
línea declara un objeto denominadoc
como una instancia de laCalculator
clase . La propia clase es simplemente un plano técnico para el funcionamiento de las calculadoras; el objeto es la calculadora específica que realiza las matemáticas. - La
while (true)
instrucción es un bucle. El código dentro del bucle se ejecuta una y otra vez mientras la condición dentro de()
sea verdadera. Puesto que la condición simplemente aparece comotrue
, siempre es true, por lo que el bucle se ejecuta para siempre. Para cerrar el programa, el usuario debe cerrar manualmente la ventana de la consola. De lo contrario, el programa siempre espera una nueva entrada. - La
cin
palabra clave acepta la entrada del usuario. El flujo de entrada es lo suficientemente inteligente como para procesar una línea de texto escrito en la ventana de la consola y colocarlo dentro de cada una de las variables enumeradas, en orden. - La
c.Calculate(x, oper, y);
expresión llama a laCalculate
función definida anteriormente y proporciona los valores de entrada especificados y la operación solicitada. A continuación, la función devuelve un número que se almacena enresult
. - Por último,
result
se imprime en la consola y el usuario ve el resultado del cálculo.
- Puesto que los programas de C++ siempre comienzan en la
Compilar y probar el código de nuevo
Vuelva a probar el programa para asegurarse de que todo funciona correctamente.
Presione Ctrl+F5 para volver a generar e iniciar la aplicación.
Escriba
5+5
y presione Entrar. Compruebe que el resultado es 10.Detenga el programa cerrando la ventana de la consola.
Depurar la app
Dado que el usuario puede escribir cualquier cosa en la ventana de la consola, vamos a asegurarnos de que la calculadora controla la entrada inesperada. En lugar de ejecutar el programa, vamos a depurarlo en su lugar, por lo que podemos inspeccionar lo que está haciendo paso a paso.
Ejecución de la aplicación en el depurador
En
CalcuatorTutorial.cpp
, establezca un punto de interrupción en laresult = c.Calculate(x, oper, y);
línea. Para establecer el punto de interrupción, haga clic junto a la línea de la barra vertical gris a lo largo del borde izquierdo de la ventana del editor para que aparezca un punto rojo.Ahora, cuando se depura el programa, siempre se pausa la ejecución en esa línea. Ya tenemos una idea aproximada de que el programa funciona para casos simples. Puesto que no queremos pausar la ejecución cada vez, vamos a hacer condicional el punto de interrupción.
Haga clic con el botón derecho en el punto rojo que representa el punto de interrupción y seleccione Condiciones. En el cuadro de edición de la condición, escriba
(y == 0) && (oper == '/')
. Seleccione el botón Cerrar cuando haya terminado para guardar la condición del punto de interrupción.El punto de interrupción está en la línea: result = c dot Calculate ( x, oper, y). 'Condiciones...' La opción Condición está activada. El menú desplegable Condiciones está configurado en "Expresión condicional". La lista desplegable de condiciones se establece en "Es verdadero". La condición se establece en y == 0 && oper == '/'.
La ejecución se pausará en el punto de interrupción si se intenta una división por 0.
Para depurar el programa, presione F5 o seleccione el botón de la barra de herramientas Depurador de Windows local que tiene el icono de flecha verde. En la aplicación de consola, si escribe algo parecido a "5 - 0", el programa se comporta normalmente y sigue ejecutándose. Sin embargo, si escribe "10 /0", se pausa en el punto de interrupción. Incluso puede colocar cualquier número de espacios entre el operador y los números;
cin
es lo suficientemente inteligente como para analizar la entrada de forma adecuada.El usuario introduce 5 - 0. La aplicación muestra: Resultado: 5. A continuación, el usuario escribe 10/0 y, dado que se cumple la condición del punto de interrupción condicional, la ejecución se detiene en la línea: result = c.Calculate(x, oper, y);
Ventanas útiles en el depurador
Al depurar el código, es posible que observe que aparecen algunas ventanas nuevas. Estas ventanas pueden mejorar su experiencia de depuración. Eche un vistazo a la ventana Autos. La ventana Autos muestra los valores actuales de las variables usadas al menos tres líneas antes y hasta la línea actual. Si no ve la ventana Autos, en el menú principal, seleccione Depurar>Windows>Autos.
El valor de oper es 47 '/', el resultado es 5, x es 10 y y y es 0.
Para ver todas las variables de esa función, cambie a la ventana Variables locales . Dado que se trata de una función pequeña, las ventanas Auto y Variables local muestran las mismas variables. Pero puede modificar los valores de estas variables durante la depuración para ver qué efecto tendría en el programa. En este caso, los dejamos solos. Abra la ventana Variables locales seleccionando Variables locales en la parte inferior de la ventana Ventana de variables automáticas o seleccionando en el menú principal Depurar>Windows>Variables locales.
El valor del oper es 47 '/', el resultado es 0, x es 10 y y y es 0.
También puede mantener el puntero sobre las variables en el propio código para ver sus valores actuales en los que la ejecución está en pausa actualmente. Asegúrese de que la ventana del editor está en el foco haciendo clic en ella primero.
Continuar depuración
La flecha amarilla de la izquierda muestra el punto actual de ejecución. La línea actual llama a
Calculate
, por lo que presione F11 para Entrar en la función, que le lleva al cuerpo de la funciónCalculate
. Tenga cuidado con Step Into porque se adentra en cualquier función de la línea que está utilizando, incluidas las funciones de biblioteca estándar. Es adecuado profundizar en la biblioteca estándar, pero es posible que le interese centrarse en el código en lugar de en el código de biblioteca.Ahora que el punto de ejecución está al principio de la
Calculate
función, presione F10 para pasar a la línea siguiente de la ejecución del programa. F10 también se conoce como Saltar. Puede usar Step Over para pasar de línea a línea, sin profundizar en los detalles de lo que ocurre en cada parte de la línea. En general, debería usar Step Over en lugar de Step Into, a menos que desee analizar más profundamente el código que se llama desde otro lugar (como lo hizo para llegar al cuerpo deCalculate
).Siga usando F10 para recorrer paso a paso por cada línea hasta que vuelva a la
main()
función del otro archivo y se detenga en lacout
línea.El programa está haciendo lo que se espera: toma el primer número y lo divide por segundo. En la
cout
línea, pon el ratón sobre laresult
variable o consultaresult
en la ventana Autos. Su valor esinf
, que no parece correcto.La instrucción actual del depurador es cout << "Result is: " << resultado << endl; en la ventana de variables automáticas, el resultado es inf.
Vamos a arreglarlo. La
cout
línea genera cualquier valor almacenado enresult
, por lo que cuando se avanza una línea más mediante F10, se muestra la ventana de la consola:La aplicación muestra: introduzca la operación a realizar. Formato: a+b | a-b | a*b | a/b. El usuario introdujo 5-0. La salida de la aplicación: El resultado es: 5. El usuario escribió 10/0. La salida de la aplicación: El resultado es: inf
Este resultado se debe a que la división por cero no está definida, por lo que el programa no tiene una respuesta numérica para la operación solicitada.
Corregir el error "división entre cero"
Vamos a controlar la división por cero con más gracia para que sea más fácil que el usuario comprenda el problema.
Realice los cambios siguientes en
CalculatorTutorial.cpp
. (Puede dejar el programa en ejecución mientras edita, gracias a una característica del depurador denominada Editar y continuar). El cambio consiste en agregar unaif
instrucción a continuación decin >> x >> oper >> y;
para comprobar la división por cero y mostrar un mensaje al usuario si se produce. De lo contrario, se imprime el resultado:// CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include "Calculator.h" using namespace std; int main() { double x = 0.0; double y = 0.0; double result = 0.0; char oper = '+'; cout << "Calculator Console Application" << endl << endl; cout << "Please enter the operation to perform. Format: a+b | a-b | a*b | a/b" << endl; Calculator c; while (true) { cin >> x >> oper >> y; if (oper == '/' && y == 0) { cout << "Division by 0 exception" << endl; continue; } else { result = c.Calculate(x, oper, y); } cout << "Result is: " << result << endl; } return 0; }
Presione F5 una vez. La ejecución del programa continúa hasta que tiene que pausarse para solicitar la entrada del usuario. Vuelva a escribir
10 / 0
. Ahora, se imprime un mensaje más útil. Se solicita al usuario más entrada y el programa continúa ejecutándose con normalidad.Nota:
Al editar código mientras está en modo de depuración, hay un riesgo de que el código quede obsoleto. Esto sucede cuando el depurador sigue ejecutando el código antiguo y aún no lo ha actualizado con los cambios. El depurador abre un cuadro de diálogo para informarle de cuándo ocurre esto. A veces, es posible que tenga que presionar F5 para actualizar el código que se está ejecutando. En concreto, si realiza un cambio dentro de una función mientras el punto de ejecución está dentro de esa función, salga de la función y vuelva a entrar en ella para obtener el código actualizado. Si esto no funciona por algún motivo y ve un mensaje de error, puede detener la depuración haciendo clic en el cuadrado rojo de la barra de herramientas debajo de los menús de la parte superior del IDE y, a continuación, inicia la depuración de nuevo escribiendo F5 o seleccionando la flecha verde "reproducir" junto al botón de detención de la barra de herramientas.
Otro motivo por el que puede fallar la función de edición y continuación es que necesita ir al menú principal y seleccionar Herramientas>Opciones>Depuración>General y asegurarse de que Requerir que los archivos de origen coincidan exactamente con la versión original está activada.
Descripción de los métodos abreviados de ejecución y depuración
- F5, o Depurar>, inicia una sesión de depuración, si aún no está activa y ejecuta el programa hasta que se alcanza un punto de interrupción o el programa necesita la entrada del usuario. Si no se necesita ninguna entrada de usuario y no hay ningún punto de interrupción disponible para alcanzar, el programa finaliza y la ventana de la consola se cierra cuando el programa termina de ejecutarse. Si su programa envía la salida a la consola, utilice Ctrl+F5 o coloque un punto de interrupción antes de presionar F5 para mantener abierta la ventana.
- Ctrl+F5 o Depurar>Iniciar sin depurar, ejecuta la aplicación sin entrar en modo de depuración. Esto es un poco más rápido que la depuración, y la ventana de la consola permanece abierta después de que el programa termine de ejecutarse.
- F10, conocido como Paso sobre, le permite iterar a través del código, línea por línea, y visualizar cómo se ejecuta el código y cuáles son los valores de las variables en cada paso de ejecución.
- F11, conocido como Entrar, funciona de forma similar a Saltar, excepto que entra en cualquier función llamada en la línea de ejecución. Por ejemplo, si la línea que se ejecuta llama a una función, al presionar F11 se mueve el puntero al cuerpo de la función, por lo que puede seguir el código de la función que se ejecuta antes de volver a la línea en la que se inició. Presionar F10 ejecuta por encima de la llamada de función y procede a la línea siguiente; la llamada de función sigue sucediendo, pero el programa no se detiene para mostrar lo que está haciendo.
Cerrar la aplicación
- Si sigue ejecutándose, cierre la ventana de la consola para detener la aplicación de calculadora.
La aplicación finalizada
¡Felicidades! Ha completado el código de la aplicación de calculadora y lo ha compilado y depurado en Visual Studio.