C++에서 콘솔 계산기 만들기
C++ 프로그래머를 위한 일반적인 시작점은 명령줄에서 실행되는 “Hello, world!” 애플리케이션입니다. 이 문서에서는 먼저 계산기 앱이라는 좀 더 어려운 작업으로 넘어가겠습니다.
필수 조건
- 컴퓨터에서 C++ 워크로드가 설치되고 실행되는 데스크톱 개발이 포함된 Visual Studio. 설치하려면 Visual Studio에서 C++ 지원 설치를 참조 하세요.
- 이 자습서에서는 앱이 실행되는 동안 코드를 변경할 수 있는 편집 및 계속이라는 기능을 보여 줍니다. 편집하고 계속하려면 기본 메뉴에서 도구>옵션>디버깅 일반을>선택하고 원본 파일이 원래 버전과 정확히 일치하도록 요구해야 검사.
앱 프로젝트 만들기
Visual Studio는 프로젝트를 사용하여 앱의 코드를 구성하고 솔루션을 사용하여 하나 이상의 프로젝트를 구성합니다. 프로젝트에는 앱을 빌드하는 데 사용되는 모든 옵션, 구성 및 규칙이 포함됩니다. 또한 프로젝트의 모든 파일과 외부 파일 간의 관계를 관리합니다. 앱을 만들려면 먼저 새 프로젝트 및 솔루션을 만듭니다.
Visual Studio 시작 - Visual Studio 시작 대화 상자가 나타납니다. 새 프로젝트 만들기를 선택하여 시작합니다.
대화 상자에는 리포지토리를 복제하고, 프로젝트 또는 솔루션을 열고, 로컬 폴더를 열고, 새 프로젝트를 만드는 옵션이 있습니다."
프로젝트 템플릿 목록에서 콘솔 앱을 선택한 다음, 다음을 선택합니다.
Important
콘솔 앱 템플릿의 C++ 버전을 선택해야 합니다. C++ , Windows 및 콘솔 태그가 있으며, 아이콘은 모서리에 "++"가 있습니다.
새 프로젝트 구성 대화 상자에서 프로젝트 이름 텍스트 상자를 선택하고 새 프로젝트 이름을 CalculatorTutorial로 지정한 다음 만들기를 선택합니다.
빈 C++ Windows 콘솔 애플리케이션 '헬로 월드' 앱이 만들어집니다. 콘솔 애플리케이션은 Windows 콘솔 창을 사용하여 출력을 표시하고 사용자 입력을 허용합니다. Visual Studio에서 편집기 창이 열리고 생성된 코드를 보여 줍니다.
// 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
새 앱이 빌드되고 실행되는지 확인
새 Windows 콘솔 애플리케이션의 템플릿은 간단한 C++ "Hello World" 앱을 생성합니다. 이 시점에서는 Visual Studio가 IDE에서 직접 만든 앱을 빌드하고 실행하는 방법을 확인할 수 있습니다.
프로젝트를 빌드하려면 빌드 메뉴에서 솔루션 빌드를 선택합니다. 출력 창은 빌드 프로세스의 결과를 보여줍니다.
코드를 실행하려면 메뉴 모음에서 디버그, 디버깅 없이 시작(Ctrl+F5)을 선택합니다.
콘솔 창이 열린 다음, 앱을 실행합니다.
Visual Studio에서 콘솔 앱을 시작하면 코드를 실행한 다음, "이 창을 닫으려면 아무 키나 누르세요. . .” 출력을 볼 수 있도록 합니다.
축하합니다! Visual Studio에서 첫 번째 "Hello, world!" 콘솔 앱을 만들었습니다.
키를 눌러서 콘솔 창을 닫고 Visual Studio로 돌아갑니다.
이제 예상한 대로 코드가 계속 작동하는지 확인하기 위해 앱을 변경할 때마다 빌드하고 실행할 도구가 설치되었습니다. 나중에 디버그하지 않는 경우 디버그하는 방법을 보여 드립니다.
코드 편집
이제 이 템플릿의 코드를 계산기 앱으로 수정해 보겠습니다.
이 예제와 일치하게 파일의
CalculatorTutorial.cpp
내용을 다음 코드로 바꿉니다.// 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
코드 이해:
#include
문을 통해 다른 파일에 있는 코드를 참조할 수 있습니다. 경우에 따라 파일 이름이 꺾쇠 괄호(<>)로 묶여서 표시될 수 있습니다. 아니면 따옴표(“ ”)로 묶일 수 있습니다. 일반적으로, C++ 표준 라이브러리를 참조할 때 꺾쇠 괄호를 사용하는 반면 다른 파일의 경우 따옴표를 사용합니다.using namespace std;
줄은 이 파일에 사용할 C++ 표준 라이브러리의 항목을 가져오도록 컴파일러에 지시합니다. 이 줄이 없으면 라이브러리의 각 키워드(keyword) 해당 범위를 나타내기 위해 앞에std::
와야 합니다. 예를 들어 해당 줄이 없으면cout
에 대한 참조는 각각std::cout
와 같이 작성되어야 합니다. 코드를 정리하기 위해using
문을 추가합니다.- C++인 표준 출력으로 인쇄하기 위해
cout
키워드를 사용합니다. << 연산자는 어떤 항목이든지 표준 출력에 보내도록 컴파일러에 지시합니다. endl
키워드(keyword) Enter 키와 같으며 줄을 끝내고 커서를 다음 줄로 이동합니다. 항상 프로그램의 성능을 저하시킬 수 있는 버퍼를 플러시하기 때문에endl
문자열 내부(포함""
됨)를 배치\n
하여 동일한 작업을 수행하는 것이 좋습니다. 그러나 이 앱은 매우 작은 앱endl
이므로 가독성을 높이기 위해 대신 사용됩니다.- C++ 문은 항상 세미콜론으로 끝나야 하며, C++ 애플리케이션에는 항상
main()
함수가 포함되어야 합니다. 이 함수는 시작 시 프로그램이 실행하는 내용입니다. 코드를 사용하기 위해main()
에서 액세스할 수 있어야 합니다.
파일을 저장하려면 Ctrl+S를 누르거나 메뉴 모음 아래 도구 모음의 플로피 디스크 아이콘인 IDE 위쪽에 있는 저장 아이콘을 선택합니다.
애플리케이션을 실행하려면 Ctrl+F5를 누르거나 디버그 메뉴로 이동하여 디버깅하지 않고 시작을 선택합니다. 코드에서 지정된 텍스트가 표시되는 콘솔 창이 나타납니다.
작업이 완료되면 콘솔 창을 닫습니다.
일부 계산을 수행하는 코드 추가
클래스는 특정 작업을 수행하는 개체의 청사진과 비슷합니다. 이 경우 수학 논리를 포함하도록 계산기 클래스를 정의합니다.
계산기 클래스 추가
프로젝트 메뉴로 이동하여 클래스 추가를 선택합니다. 클래스 이름 편집 상자에 계산기를 입력합니다. 확인을 선택합니다.
클래스 이름 필드는 계산기로 설정됩니다. .h 파일 필드에는 Calculator.h가 포함됩니다. .cpp 파일 필드에는 Calculator.cpp 포함됩니다. 기본 클래스 필드가 비어 있습니다. 가상 소멸자, 인라인 및 관리되지 않는 다른 옵션은 검사 않습니다.
2개의 새 파일이 프로젝트에 추가됩니다. 변경된 파일을 모두 한 번에 저장하려면 Ctrl+Shift+S 키를 누르세요. 파일>모두 저장의 바로 가기 키입니다. 저장 단추 옆에 있는 두 개의 플로피 디스크 아이콘인 모두 저장에 대한 도구 모음 단추이기도 합니다. 일반적으로, 모두 저장을 자주 수행하는 것이 좋습니다. 그러면 파일을 저장할 때 누락하지 않게 됩니다.
클래스 추가 마법사는 클래스와
.cpp
이름이 같은 파일을 만듭니다.h
. IDE의 측면에 표시되는 솔루션 탐색기 창에서 프로젝트 파일의 전체 목록을 볼 수 있습니다. 창이 표시되지 않으면 메뉴 모음에서 열 수 있습니다. 보기>솔루션 탐색기를 선택합니다.계산기 자습서 프로젝트에는 Calculator.h를 포함하는 헤더 파일 노드가 있습니다. 원본 파일 노드에는 Calculator.cpp 및 CalculatorTutorial.cpp 포함됩니다. 참조, 외부 종속성 및 리소스 파일에 대한 노드는 표시되지만 닫힙니다.
솔루션 탐색기 창에서 파일을 두 번 클릭하여 열 수 있습니다. 두 번 클릭하여
Calculator.h
엽니다.이제 파일이 다음과 같이 표시되도록 내용을 다음 코드로 바꿉니다
Calculator.h
.#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
코드 이해
- 이 코드는 더하기, 빼기, 곱하기 및 나누기를 위해 수학 연산을 실행하는 데 사용하는 새 함수를
Calculate
선언합니다. - C++ 코드는 헤더(
.h
) 파일 및 원본(.cpp
) 파일로 구성됩니다. 다른 여러 파일 확장명은 다양한 컴파일러에서 지원되지만 이러한 확장명이 알아야 할 주요 항목입니다. 함수 및 변수는 일반적으로 선언됩니다. 즉, 헤더 파일에서 이름 및 형식이 지정되고 구현되거나 원본 파일에서 정의가 지정됩니다. 다른 파일에 정의된 코드에 액세스하려면 사용할 변수 또는 함수를 선언하는 파일의 이름인 위치를filename.h
사용할#include "filename.h"
수 있습니다. - 나중에 필요한 코드를 찾기 쉽도록 코드 내용에 따라 해당 코드를 다른 파일로 구성하는 것이 좋습니다. 이 경우에는
main()
함수를 포함하는 파일에서 개별적으로Calculator
클래스를 정의하지만main()
에서Calculator
클래스를 참조하려고 합니다.
- 이 코드는 더하기, 빼기, 곱하기 및 나누기를 위해 수학 연산을 실행하는 데 사용하는 새 함수를
함수가 선언되었지만 정의되지 않았기 때문에
Calculate
녹색 물결선이 아래에Calculate
나타납니다. 마우스로 가리키Calculate
고 표시되는 스크루드라이버에서 아래쪽 화살표를 클릭하고 ,에서 'Calculate'의 정의 만들기를Calculator.cpp
선택합니다.이 코드는 다음과 같이
Calculator.cpp
추가됩니다.생성자의 정의: double Calculator::Calculate( double x, char oper, double y) { return 0.0; }
현재, 0.0만 반환합니다. 이를 변경해봅시다.
편집기 창에서
Calculator.cpp
파일로 전환합니다. 내용을 다음으로 바꿉니다.Calculator::Calculate(double x, char oper, double y)
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; } }
코드 이해
Calculate
함수는 숫자, 연산자 및 두 번째 숫자를 사용한 다음, 숫자에 대해 요청된 작업을 수행합니다.- 스위치 문은 제공된 연산자를 검사하고, 해당 작업에 해당하는 사례만을 실행합니다. 프로그램이 중단되지 않도록 사용자가 허용되지 않는 연산자를 입력하는 경우에는 기본 사례로 대체됩니다. 일반적으로 더 세련된 방식으로 잘못된 사용자 입력을 처리하는 것이 좋지만 이 자습서에서는 다루지 않습니다.
double
키워드는 10진수를 지원하는 수 형식을 나타냅니다. 이렇게 하면 계산기는 10진수 수학 및 정수 계산을 모두 처리할 수 있습니다. 코드 시작 시double
로 인해 이러한 숫자를 반환하는 데 항상Calculate
함수가 필요합니다(이 함수의 반환 형식을 나타냄). 이로 인해 기본 사례에서도 0.0을 반환합니다.- 이 파일은
.h
필요한 매개 변수와 필요한 반환 형식을 컴파일러에 미리 알려주는 함수 프로토타입을 선언합니다. 파일에는.cpp
함수의 모든 구현 세부 정보가 있습니다.
이 시점에서 코드를 빌드하고 다시 실행하면 수행할 작업을 요청한 후 즉시 종료됩니다. 따라서 함수를 main
수정하여 여러 계산을 수행합니다.
Calculator
클래스 멤버 함수 호출
함수를
main
CalculatorTutorial.cpp
다음과 같이 업데이트합니다.// 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; }
코드 이해
- C++ 프로그램이 항상
main()
함수에서 시작하므로 거기에서 다른 코드를 호출해야 합니다. 따라서#include
문이 필요합니다. - 일부 초기 변수(
x
,y
,oper
및result
)를 선언하여 첫 번째 숫자, 두 번째 숫자, 연산자 및 최종 결과를 각각 저장합니다. 여기서 수행되는 정의되지 않은 동작을 방지하기 위해 초기 값을 제공하는 것이 좋습니다. Calculator c;
줄은 'c'라는 개체를Calculator
클래스의 인스턴스로 선언합니다. 클래스 자체는 계산기 작동 방식의 청사진입니다. 개체는 계산을 수행하는 특정 계산기입니다.while (true)
문은 루프입니다.()
내의 조건이 true인 경우 루프 내부의 코드는 계속 반복해서 실행됩니다. 조건이 단순히true
로 나열되므로 항상 true입니다. 따라서 루프가 계속 실행됩니다. 프로그램을 닫으려면 사용자가 수동으로 콘솔 창을 닫아야 합니다. 그렇지 않으면 프로그램은 항상 새 입력을 기다리며 대기합니다.cin
키워드는 사용자로부터 입력을 허용하는 데 사용됩니다. 이 입력 스트림은 사용자 입력이 필수 사양과 일치한다고 가정하기 위해 콘솔 창에 입력된 텍스트 줄을 처리하고, 나열된 변수 각각에 배치할 수 있을 만큼 지능적입니다. 두 개 이상의 숫자와 같은 다양한 유형의 입력을 허용하도록 이 줄을 수정할 수 있습니다. 그러나Calculate()
이를 처리하려면 함수도 업데이트해야 합니다.c.Calculate(x, oper, y);
식은 이전에 정의된Calculate
함수를 호출하고, 입력된 입력 값을 제공합니다. 그러면 함수는result
에 저장된 수를 반환합니다.- 마지막으로,
result
가 콘솔에 출력되므로 계산 결과가 사용자에게 표시됩니다.
- C++ 프로그램이 항상
코드 다시 빌드 및 테스트
이제 프로그램을 다시 테스트하여 모든 것이 제대로 작동하는지 확인합니다.
Ctrl+F5 키를 눌러 앱을 다시 빌드하고 시작합니다.
5+5
를 입력하고 Enter 키를 누릅니다. 결과가 10인지 확인합니다.앱이 메시지를 출력합니다. 수행할 작업을 입력하세요. 형식: a+b | a-b | a*b | a/b. 사용자가 5+5를 입력했습니다. 앱 출력: 5+5의 결과는 10입니다.
앱 디버그
사용자가 콘솔 창에 무엇이든 자유롭게 입력할 수 있으므로 계산기가 예기치 않은 입력을 처리하는지 확인해 보겠습니다. 프로그램을 실행하는 대신 디버그하여 단계별로 수행하는 작업을 검사해 보겠습니다.
디버거에서 앱 실행
에서
CalcuatorTutorial.cpp
줄result = c.Calculate(x, oper, y);
에 중단점을 설정합니다. 중단점을 설정하려면 편집기 창의 왼쪽 가장자리를 따라 있는 회색 세로 막대의 줄 옆을 클릭합니다. 빨간색 점이 나타납니다.이제 프로그램을 디버그하면 해당 줄에서 실행이 일시 중지됩니다. 프로그램이 간단한 케이스에 대해 작동하는 대략적인 아이디어가 이미 있습니다. 호출
Calculate()
할 때마다 실행을 일시 중지하지 않기 때문에 중단점을 조건부로 만들어 보겠습니다.중단점을 나타내는 빨간색 점을 마우스 오른쪽 단추로 클릭하고 조건을 선택합니다. 조건의 편집 상자에
(y == 0) && (oper == '/')
를 입력합니다. 중단 점 조건을 저장하려면 닫 기 단추를 선택합니다.중단점의 조건은 다음과 같습니다. y==0 &> oper == '/' true입니다.
이제 앱이 0으로 나누려고 하면 중단점에서 실행이 일시 중지됩니다.
프로그램을 디버그하려면 F5 키를 누르거나 녹색 화살표 아이콘이 있는 로컬 Windows 디버거 도구 모음 단추를 선택합니다. 콘솔 앱에서 "5 - 0" 같은 코드를 입력하는 경우 프로그램은 정상적으로 작동하고 계속 실행됩니다. 그러나 "10 / 0"을 입력하면 중단점에서 일시 중지됩니다. 연산자와 숫자 사이에 원하는 수의 공백을
cin
배치할 수 있습니다. 입력을 적절하게 구문 분석할 수 있을 만큼 스마트합니다.
디버거에서 유용한 창
코드를 디버그할 때 일부 새 창이 나타날 수 있습니다. 이러한 창은 디버깅 환경을 지원할 수 있습니다. 자동 창을 살펴보세요. 자동 창에서는 적어도 3개 줄 이전부터 현재 줄까지 사용된 변수의 현재 값을 보여 줍니다.
oper 값은 47 '/'이고, 결과는 5이고, x는 10이고, y는 0입니다.
해당 함수의 모든 변수를 보려면 로컬 창으로 전환합니다. 디버깅하는 동안 이러한 변수의 값을 수정하여 프로그램에 미치는 영향을 확인할 수 있습니다. 이 경우, 우리는 그들을 혼자 둡니다.
oper 값은 47 '/'이고, 결과는 0이고, x는 10이고, y는 0입니다.
코드의 변수를 마우스로 가리키면 실행이 현재 일시 중지된 지점에서 현재 값을 볼 수도 있습니다. 먼저 클릭하여 편집기 창에 포커스가 맞춰졌는지 확인합니다.
디버깅 계속
왼쪽의 노란색 화살표는 현재 실행 지점을 표시합니다. 현재 줄이
Calculate
을 호출하므로 F11 키를 눌러 해당 함수에서 한 단계씩 코드를 실행합니다. 이제 함수 본문에서 코드를 실행하고 있습니다Calculate
. Step Into는 표준 라이브러리 함수를 포함하여 현재 실행 중인 줄의 모든 함수로 단계별로 실행되므로 주의해야 합니다. 표준 라이브러리를 한 단계씩 실행해도 괜찮지만 라이브러리 코드 대신 코드에 집중하는 데 더 관심이 있을 수 있습니다.이제 실행 지점이
Calculate
함수의 시작 부분에 있으므로 F10 키를 눌러 프로그램을 실행하는 중에 다음 줄로 이동합니다. F10 키는 프로시저 단위 실행이라고도 합니다. 프로시저 단위 실행을 사용하여 줄의 각 파트에서 발생한 내용의 세부 정보를 살펴보지 않고 줄을 이동할 수 있습니다. 일반적으로 다른 위치에서 호출되는 코드(본문Calculate
에 도달하기 위해 수행한 것처럼)에 대해 자세히 알아보지 않으려면 한 단계씩 실행 대신 Step Over를 사용해야 합니다.다른 파일에서
main()
함수로 다시 이동할 때까지 계속 F10 키를 사용하여 각 줄을 프로시저 단위 실행하고,cout
줄에서 중지합니다.프로그램은 예상되는 작업을 수행합니다. 첫 번째 숫자를 사용하고 두 번째 숫자로 나눕니다.
cout
줄에서result
변수를 마우스로 가리키거나 자동 창에서result
를 살펴봅니다. 해당 값inf
은 제대로 표시되지 않으므로 수정해 보겠습니다.cout
줄은result
에 저장된 모든 값을 출력하므로 F10 키를 사용하여 추가로 한 줄을 실행하면 콘솔 창에서는 다음을 표시합니다.앱 출력: 수행할 작업을 입력하세요. 형식: a+b | a-b | a*b | a/b. 사용자가 5-0을 입력했습니다. 앱 출력: 결과는 5입니다. 사용자가 10/0을 입력했습니다. 앱 출력: 결과는 다음과 같습니다.
이 결과는 0으로 나누기는 정의되지 않았기 때문에 프로그램에 요청된 작업에 대한 숫자 답변이 없기 때문입니다.
"0으로 나누기" 오류 해결
사용자가 문제를 더 쉽게 이해할 수 있도록 나누기를 0으로 더 우아하게 처리해 보겠습니다.
CalculatorTutorial.cpp
에서 다음과 같이 변경합니다. (라는 디버거 기능 덕분에 편집할 때 프로그램을 실행 상태로 둘 수 있습니다.편집하고 계속합니다).if
다음cin >> x >> oper >> y;
문을 추가하여 0으로 나누기 검사 사용자에게 메시지를 출력합니다. 그렇지 않으면 결과가 인쇄됩니다.// 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 << "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; }
F5 키를 한 번 누릅니다. 사용자 입력에 대한 요청을 일시 중지해야 할 때까지 계속 프로그램을 실행합니다.
10 / 0
을 다시 입력하세요. 이제 더 유용한 메시지가 출력됩니다. 사용자에게는 추가 입력 메시지가 표시되고, 프로그램은 계속 정상적으로 실행됩니다.콘솔 창에는 두 줄이 표시됩니다. 10/0 결과는 inf이고, 그 다음에 10/0 수학 오류가 발생합니다. 0으로 나누려고 했습니다.
참고 항목
디버깅 모드에서 코드를 편집하면 코드가 부실해질 위험이 있습니다. 이 문제는 디버거가 계속 이전 코드를 실행하고 변경 내용을 사용하여 업데이트하지 않는 경우에 발생합니다. 디버거는 이 경우 알려주는 대화 상자를 표시합니다. 경우에 따라 F5 키를 눌러 실행 중인 코드를 새로 고쳐야 합니다. 특히 실행 지점이 해당 함수 내에 있는 동안 함수 내에서 변경을 수행하는 경우 함수에서 한 단계 더 나가서 다시 함수로 돌아가 업데이트된 코드를 가져와야 합니다. 작동하지 않고 오류 메시지가 표시되면 IDE 위쪽 메뉴 아래의 도구 모음에서 빨간색 사각형을 클릭한 다음 F5 키를 입력하거나 도구 모음의 중지 단추 옆에 있는 녹색 "재생" 화살표를 선택하여 디버깅을 다시 시작할 수 있습니다.
편집 및 계속이 실패할 수 있는 또 다른 이유는 "Debug-Options-General>>에서 원본 버전 설정과 정확히 일치하도록 원본 파일 필요를 사용하도록 설정해야 합니다..."라는 메시지가 표시되는 경우입니다. 이 문제를 해결하려면 기본 메뉴에서 도구>옵션>디버깅>일반을 선택하고 원본 파일이 원래 버전과 정확히 일치하도록 요구해야 검사.
실행 및 디버그 바로 가기 이해
- F5 키(또는 디버그>디버깅 시작)는 디버깅 세션이 활성 상태가 아닌 경우 디버깅 세션을 시작하고, 중단점에 도달하거나 프로그램에 사용자 입력이 필요할 때까지 프로그램을 실행합니다. 사용자 입력이 필요하지 않고 중단점에 도달할 수 없는 경우 프로그램 실행이 완료되면 프로그램이 종료되고 콘솔 창이 닫힙니다. 실행할 "헬로 월드" 프로그램이 있는 경우 Ctrl+F5를 사용하거나 F5 키를 눌러 창을 열어 두기 전에 중단점을 설정합니다.
- Ctrl+F5 키(또는 디버그>디버깅하지 않고 시작)는 디버그 모드로 전환하지 않고 애플리케이션을 실행합니다. 이 방법이 디버깅보다 약간 빠릅니다. 또한 프로그램 실행이 완료되면 콘솔 창을 열어 둡니다.
- F10 키(프로시저 단위 실행이라고도 함)를 통해 코드를 한 줄씩 반복하고, 코드를 실행하는 방법 및 실행의 각 단계에서 변수 값을 시각화할 수 있습니다.
- F11 키(한 단계씩 코드 실행이라고도 함)는 실행 줄에서 호출되는 함수를 한 단계씩 코드 실행한다는 점을 제외하고 프로시저 단위 실행과 유사하게 작동합니다. 예를 들어 실행되는 줄이 함수를 호출하는 경우 F11 키를 누르면 함수의 본문에 포인터를 이동시킵니다. 따라서 시작한 줄로 이동하기 전에 실행되는 함수의 코드를 수행할 수 있습니다. F10 키를 누르면 함수 호출을 프로시저 단위로 실행하고 다음 줄로 이동합니다. 여전히 함수 호출이 실행되지만 프로그램은 표시되는 내용을 일시 중지하지 않습니다.
앱 닫기
- 계속 실행 중이면 계산기 앱의 콘솔 창을 닫습니다.
Git 소스 제어 추가
앱을 만들었으므로 이제 Git 리포지토리에 추가하는 것이 좋습니다. Microsoft가 도와 드립니다. Visual Studio에서는 IDE에서 바로 사용 가능한 Git 도구를 이용해 프로세스를 쉽게 진행할 수 있습니다.
팁
Git은 가장 널리 사용되는 최신 버전 제어 시스템으로, 전문 개발자와 코딩 학습자를 비롯한 모두에게 큰 도움이 됩니다. Git을 처음 사용하는 경우 https://git-scm.com/ 웹 사이트를 먼저 참조하는 것이 좋습니다. 여기에서 참고 자료, 인기 있는 온라인 설명서, Git 기본 사항 비디오를 찾을 수 있습니다.
코드를 Git에 연결하려면 먼저 코드가 있는 새 Git 리포지토리를 만들어야 합니다. 방법은 다음과 같습니다.
Visual Studio의 오른쪽 아래에 있는 상태 표시줄에서 소스 제어에 추가를 선택한 다음, Git를 선택합니다.
Git 리포지토리 만들기 대화 상자에서 GitHub에 로그인합니다.
리포지토리 이름은 폴더 위치를 기준으로 자동으로 입력됩니다. 기본적으로 새 리포지토리는 프라이빗입니다. 즉, 사용자 자신만 해당 리포지토리에 액세스할 수 있습니다.
팁
리포지토리가 퍼블릭인지 프라이빗인지와 관계없이, 코드의 원격 백업을 GitHub에 안전하게 저장하는 것이 가장 좋습니다. 팀으로 작업하지 않더라도 원격 리포지토리를 사용하면 어떤 컴퓨터에서든 코드를 사용할 수 있습니다.
만들기 및 밀어넣기를 선택합니다.
리포지토리를 만들면 상태 표시줄에 상태 세부 정보가 표시됩니다.
화살표가 있는 첫 번째 아이콘은 현재 분기에 있는 나가는 커밋과 들어오는 커밋의 수를 표시합니다. 이 아이콘을 이용해 들어오는 커밋을 풀하거나 나가는 커밋을 푸시할 수 있습니다. 이러한 커밋을 먼저 보도록 선택할 수도 있습니다. 이렇게 하려면 아이콘을 선택한 다음, 송신/수신 보기를 선택합니다.
연필이 있는 두 번째 아이콘은 코드에 대한 커밋되지 않은 변경의 수를 표시합니다. 이 아이콘을 선택하면 Git 변경 내용 창에서 해당 변경 내용을 확인할 수 있습니다.
앱에서 Git을 사용하는 방법을 자세히 알아보려면 Visual Studio 버전 제어 설명서를 참조하세요.
완성된 앱
지금까지 계산기 앱에 대한 코드를 완료하고 빌드 및 디버그한 다음 Visual Studio의 리포지토리에 추가했습니다.
다음 단계
C++ 프로그래머를 위한 일반적인 시작점은 명령줄에서 실행되는 “Hello, world!” 애플리케이션입니다. 이 문서에서 시작한 다음, 계산기 앱이라는 좀 더 어려운 작업으로 넘어가겠습니다.
필수 조건
- 컴퓨터에서 C++ 워크로드가 설치되고 실행되는 데스크톱 개발이 포함된 Visual Studio. 설치하려면 Visual Studio에서 C++ 지원 설치를 참조 하세요.
앱 프로젝트 만들기
Visual Studio는 프로젝트를 사용하여 앱의 코드를 구성하고 솔루션을 사용하여 하나 이상의 프로젝트를 구성합니다. 프로젝트에는 앱을 빌드하는 데 사용되는 모든 옵션, 구성 및 규칙이 포함됩니다. 또한 프로젝트의 모든 파일과 외부 파일 간의 관계를 관리합니다. 앱을 만들려면 먼저 새 프로젝트 및 솔루션을 만듭니다.
Visual Studio의 메뉴 모음에서 새>프로젝트 파일을>선택합니다. 새 프로젝트 창이 열립니다.
왼쪽 세로 막대에서 Visual C++ 를 선택했는지 확인합니다. 가운데에서 Windows 콘솔 애플리케이션을 선택합니다.
아래쪽의 이름 텍스트 상자에서 새 프로젝트 CalculatorTutorial의 이름을 지정한 다음 확인을 선택합니다.
빈 C++ Windows 콘솔 애플리케이션 '헬로 월드' 앱이 만들어집니다. 콘솔 애플리케이션은 Windows 콘솔 창을 사용하여 출력을 표시하고 사용자 입력을 허용합니다. Visual Studio에서 편집기 창이 열리고 생성된 코드를 보여 줍니다.
// 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
새 앱이 빌드되고 실행되는지 확인
새 Windows 콘솔 애플리케이션의 템플릿은 간단한 C++ "Hello World" 앱을 생성합니다. 이 시점에서는 Visual Studio가 IDE에서 직접 만든 앱을 빌드하고 실행하는 방법을 확인할 수 있습니다.
프로젝트를 빌드하려면 빌드 메뉴에서 솔루션 빌드를 선택합니다. 출력 창은 빌드 프로세스의 결과를 보여줍니다.
코드를 실행하려면 메뉴 모음에서 디버그, 디버깅 없이 시작(Ctrl+F5)을 선택합니다.
콘솔 창이 열린 다음, 앱을 실행합니다.
Visual Studio에서 콘솔 앱을 시작하면 코드를 실행한 다음, "이 창을 닫으려면 아무 키나 누르세요. . .” 출력을 볼 수 있도록 합니다.
축하합니다! Visual Studio에서 첫 번째 "Hello, world!" 콘솔 앱을 만들었습니다.
키를 눌러서 콘솔 창을 닫고 Visual Studio로 돌아갑니다.
이제 예상한 대로 코드가 계속 작동하는지 확인하기 위해 앱을 변경할 때마다 빌드하고 실행할 도구가 설치되었습니다. 나중에 디버그하지 않는 경우 디버그하는 방법을 보여 드립니다.
코드 편집
이제 이 템플릿의 코드를 계산기 앱으로 전환해 보겠습니다.
이 예제와 일치하게 파일의
CalculatorTutorial.cpp
내용을 다음 코드로 바꿉니다.// 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
코드 이해:
#include
문을 통해 다른 파일에 있는 코드를 참조할 수 있습니다. 경우에 따라 파일 이름이 꺾쇠 괄호(<>)로 묶여서 표시될 수 있습니다. 아니면 따옴표(“ ”)로 묶일 수 있습니다. 일반적으로, C++ 표준 라이브러리를 참조할 때 꺾쇠 괄호를 사용하는 반면 다른 파일의 경우 따옴표를 사용합니다.using namespace std;
줄은 이 파일에 사용할 C++ 표준 라이브러리의 항목을 가져오도록 컴파일러에 지시합니다. 이 줄이 없으면 라이브러리의 각 키워드(keyword) 해당 범위를 나타내기 위해 앞에std::
와야 합니다. 예를 들어 해당 줄이 없으면cout
에 대한 참조는 각각std::cout
와 같이 작성되어야 합니다. 코드를 정리하기 위해using
문을 추가합니다.- C++인 표준 출력으로 인쇄하기 위해
cout
키워드를 사용합니다. *<<
연산자는 컴파일러에게 오른쪽에 있는 모든 것을 표준 출력으로 보내도록 지시합니다. endl
키워드(keyword) Enter 키와 같으며 줄을 끝내고 커서를 다음 줄로 이동합니다. 항상 버퍼를 플러시하고 프로그램의 성능을 저하시킬 수 있기 때문에endl
문자열(포함""
됨)에 포함된 문자열을 배치\n
하여 동일한 작업을 수행하는 것이 좋습니다. 그러나 이 앱은 매우 작은 앱endl
이므로 가독성을 높이기 위해 대신 사용됩니다.- C++ 문은 항상 세미콜론으로 끝나야 하며, C++ 애플리케이션에는 항상
main()
함수가 포함되어야 합니다. 이 함수는 시작 시 프로그램이 실행하는 내용입니다. 코드를 사용하기 위해main()
에서 액세스할 수 있어야 합니다.
파일을 저장하려면 Ctrl+S를 누르거나 메뉴 모음 아래 도구 모음의 플로피 디스크 아이콘인 IDE 위쪽에 있는 저장 아이콘을 선택합니다.
애플리케이션을 실행하려면 Ctrl+F5를 누르거나 디버그 메뉴로 이동하여 디버깅하지 않고 시작을 선택합니다. 이 프로젝트가 만료되었다는 팝업이 표시되면 이 대화 상자를 다시 표시하지 않음을 선택한 다음 예를 선택하여 애플리케이션을 빌드할 수 있습니다. 코드에서 지정된 텍스트가 표시되는 콘솔 창이 나타납니다.
먼저 프로젝트가 최신 상태가 아니므로 빌드 여부를 묻는 대화 상자가 나타납니다. ‘이 대화 상자를 다시 표시 안 함’의 확인란이 선택되어 있습니다. ‘예’를 선택하여 프로젝트를 빌드하고 계산기 프로젝트를 빌드한 다음, Windows 콘솔 창에서 시작합니다.
작업이 완료되면 콘솔 창을 닫습니다.
일부 계산을 수행하는 코드 추가
클래스는 특정 작업을 수행하는 개체의 청사진과 비슷합니다. 이 경우 수학 논리를 포함하도록 계산기 클래스를 정의합니다.
계산기 클래스 추가
프로젝트 메뉴로 이동하여 클래스 추가를 선택합니다. 클래스 이름 편집 상자에 계산기를 입력합니다. 확인을 선택합니다.
클래스는 특정 작업을 수행하는 개체의 청사진과 비슷합니다. 이 경우에는 계산기 및 계산기의 작동 방식을 정의합니다.
2개의 새 파일이 프로젝트에 추가됩니다. 변경된 파일을 모두 한 번에 저장하려면 Ctrl+Shift+S 키를 누르세요. 파일>모두 저장의 바로 가기 키입니다. 저장 단추 옆에 있는 두 개의 플로피 디스크 아이콘인 모두 저장에 대한 도구 모음 단추이기도 합니다. 일반적으로, 모두 저장을 자주 수행하는 것이 좋습니다. 그러면 파일을 저장할 때 누락하지 않게 됩니다.
클래스 추가 마법사는 클래스와
.cpp
이름이 같은 파일을 만듭니다.h
. IDE의 측면에 표시되는 솔루션 탐색기 창에서 프로젝트 파일의 전체 목록을 볼 수 있습니다. 창이 표시되지 않으면 메뉴 모음에서 열 수 있습니다. 보기>솔루션 탐색기를 선택합니다.계산기 자습서 프로젝트에는 Calculator.h, stdafx.h 및 targetver.h를 포함하는 헤더 파일 노드가 있습니다. 원본 파일 노드에는 Calculator.cpp, CalculatorTutorial.cpp 및 stdafx.cpp 포함됩니다. 참조, 외부 종속성 및 리소스 파일에 대한 노드는 표시되지만 닫힙니다.
솔루션 탐색기 창에서 파일을 두 번 클릭하여 열 수 있습니다. 두 번 클릭하여
Calculator.h
엽니다.이제 파일이 다음과 같이 표시되도록 내용을 다음 코드로 바꿉니다
Calculator.h
.#pragma once class Calculator { public: double Calculate(double x, char oper, double y); };
코드 이해
- 이 코드는 더하기, 빼기, 곱하기 및 나누기를 위해 수학 연산을 실행하는 데 사용하는 새 함수를
Calculate
선언합니다. - C++ 코드는 헤더(
.h
) 파일 및 원본(.cpp
) 파일로 구성됩니다. 다른 여러 파일 확장명은 다양한 컴파일러에서 지원되지만 이러한 확장명이 알아야 할 주요 항목입니다. 함수 및 변수는 일반적으로 선언됩니다. 즉, 헤더 파일에서 이름 및 형식이 지정되고 구현되거나 원본 파일에서 정의가 지정됩니다. 다른 파일에 정의된 코드에 액세스하려면 사용할 변수 또는 함수를 선언하는 파일의 이름인 위치를filename.h
사용할#include "filename.h"
수 있습니다. - 나중에 필요한 코드를 찾기 쉽도록 코드 내용에 따라 해당 코드를 다른 파일로 구성하는 것이 좋습니다. 이 경우에는
main()
함수를 포함하는 파일에서 개별적으로Calculator
클래스를 정의하지만main()
에서Calculator
클래스를 참조하려고 합니다.
- 이 코드는 더하기, 빼기, 곱하기 및 나누기를 위해 수학 연산을 실행하는 데 사용하는 새 함수를
함수가 선언되었지만 정의되지 않았기 때문에
Calculate
녹색 물결선이 아래에Calculate
나타납니다. 마우스로 가리키Calculate
고 표시되는 스크루드라이버에서 아래쪽 화살표를 클릭하고 ,에서 'Calculate'의 정의 만들기를Calculator.cpp
선택합니다. 다른 파일에서 이루어진 코드 변경 내용의 피킹을 제공하는 팝업이 나타납니다. 코드를Calculator.cpp
에 추가했습니다.현재, 0.0만 반환합니다. 이를 변경해봅시다. Esc 키를 눌러 팝업을 닫습니다.
편집기 창에서
Calculator.cpp
파일로 전환합니다. 파일의 내용을 다음 코드로 바꿉니다.#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; } }
코드 이해
Calculate
함수는 숫자, 연산자 및 두 번째 숫자를 사용한 다음, 숫자에 대해 요청된 작업을 수행합니다.- 스위치 문은 제공된 연산자를 검사하고, 해당 작업에 해당하는 사례만을 실행합니다. 프로그램이 중단되지 않도록 사용자가 허용되지 않는 연산자를 입력하는 경우에는 기본 사례로 대체됩니다. 일반적으로 더 세련된 방식으로 잘못된 사용자 입력을 처리하는 것이 좋지만 이 자습서에서는 다루지 않습니다.
double
키워드는 10진수를 지원하는 수 형식을 나타냅니다. 이렇게 하면 계산기는 10진수 수학 및 정수 계산을 모두 처리할 수 있습니다. 코드 시작 시double
로 인해 이러한 숫자를 반환하는 데 항상Calculate
함수가 필요합니다(이 함수의 반환 형식을 나타냄). 이로 인해 기본 사례에서도 0.0을 반환합니다.- 이 파일은
.h
필요한 매개 변수와 필요한 반환 형식을 컴파일러에 미리 알려주는 함수 프로토타입을 선언합니다. 파일에는.cpp
함수의 모든 구현 세부 정보가 있습니다.
이 시점에서 코드를 빌드하고 실행하는 경우 수행할 작업을 물은 후에 종료됩니다. 다음으로 몇 가지 계산을 main
수행하도록 함수를 수정합니다.
계산기 클래스 멤버 함수 호출
이제
CalculatorTutorial.cpp
에서main
함수를 업데이트하겠습니다.// 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; }
코드 이해
- C++ 프로그램이 항상
main()
함수에서 시작하므로 거기에서 다른 코드를 호출해야 합니다. 따라서#include
문이 필요합니다. - 일부 초기 변수(
x
,y
,oper
및result
)를 선언하여 첫 번째 숫자, 두 번째 숫자, 연산자 및 최종 결과를 각각 저장합니다. 여기서 수행되는 정의되지 않은 동작을 방지하기 위해 초기 값을 제공하는 것이 좋습니다. Calculator c;
줄은 'c'라는 개체를Calculator
클래스의 인스턴스로 선언합니다. 클래스 자체는 계산기 작동 방식의 청사진입니다. 개체는 계산을 수행하는 특정 계산기입니다.while (true)
문은 루프입니다.()
내의 조건이 true인 경우 루프 내부의 코드는 계속 반복해서 실행됩니다. 조건이 단순히true
로 나열되므로 항상 true입니다. 따라서 루프가 계속 실행됩니다. 프로그램을 닫으려면 사용자가 수동으로 콘솔 창을 닫아야 합니다. 그렇지 않으면 프로그램은 항상 새 입력을 기다리며 대기합니다.cin
키워드는 사용자로부터 입력을 허용하는 데 사용됩니다. 이 입력 스트림은 사용자 입력이 필수 사양과 일치한다고 가정하기 위해 콘솔 창에 입력된 텍스트 줄을 처리하고, 나열된 변수 각각에 배치할 수 있을 만큼 지능적입니다. 두 개 이상의 숫자와 같은 다양한 유형의 입력을 허용하도록 이 줄을 수정할 수 있습니다. 그러나Calculate()
이를 처리하려면 함수도 업데이트해야 합니다.c.Calculate(x, oper, y);
식은 이전에 정의된Calculate
함수를 호출하고, 입력된 입력 값을 제공합니다. 그러면 함수는result
에 저장된 수를 반환합니다.- 마지막으로,
result
가 콘솔에 출력되므로 계산 결과가 사용자에게 표시됩니다.
- C++ 프로그램이 항상
코드 다시 빌드 및 테스트
프로그램을 다시 테스트하여 모든 것이 제대로 작동하는지 확인합니다.
Ctrl+F5 키를 눌러 앱을 다시 빌드하고 시작합니다.
5+5
를 입력하고 Enter 키를 누릅니다. 결과가 10인지 확인합니다.
앱 디버그
사용자가 콘솔 창에 무엇이든 자유롭게 입력할 수 있으므로 계산기가 예기치 않은 입력을 처리하는지 확인해 보겠습니다. 프로그램을 실행하는 대신 디버깅하여 단계별로 수행하는 작업을 검사할 수 있습니다.
디버거에서 앱 실행
에서
CalcuatorTutorial.cpp
줄에result = c.Calculate(x, oper, y);
중단점을 설정합니다. 중단점을 설정하려면 편집기 창의 왼쪽 가장자리를 따라 있는 회색 세로 막대의 줄 옆을 클릭합니다. 빨간색 점이 나타납니다.이제 프로그램을 디버깅할 때 항상 해당 줄에서 실행이 일시 중지됩니다. 프로그램이 간단한 케이스에 대해 작동하는 대략적인 아이디어가 이미 있습니다. 매번 실행을 일시 정지하지 않으므로 조건부로 중단점을 만듭니다.
중단점을 나타내는 빨간색 점을 마우스 오른쪽 단추로 클릭하고 조건을 선택합니다. 조건의 편집 상자에
(y == 0) && (oper == '/')
를 입력합니다. 중단점 조건을 저장하려면 닫기 단추를 선택합니다.중단점이 줄에 있습니다. result = c dot Calculate (x, oper, y). '조건...' 가 중단점 드롭다운에서 선택되어 중단점 설정 창이 열립니다. 조건 옵션은 드롭다운이 '조건식' 및 'True'로 설정되는 검사. 사용자가 조건 텍스트 상자에 y == 0 &> == '/'을 입력한 다음 닫기를 선택하여 조건부 중단점을 설정합니다.
이제 0으로 나누기를 시도하는 경우에 특히 중단점에서 실행을 일시 중지합니다.
프로그램을 디버그하려면 F5 키를 누르거나 녹색 화살표 아이콘이 있는 로컬 Windows 디버거 도구 모음 단추를 선택합니다. 콘솔 앱에서 "5 - 0" 같은 코드를 입력하는 경우 프로그램은 정상적으로 작동하고 계속 실행됩니다. 그러나 "10 / 0"을 입력하면 중단점에서 일시 중지됩니다. 연산자와 숫자 사이에 공백을 배치할 수도 있습니다.
cin
은 입력을 적절하게 구문 분석할 수 있을 만큼 지능적입니다.사용자가 5-0을 입력합니다. 앱 출력: 결과는 5입니다. 그러면 사용자는 10/0을 입력하고 조건부 중단점에 대한 조건이 충족되므로 결과 = c.Calculate(x, oper, y); 줄에서 실행이 중지됩니다.
디버거에서 유용한 창
코드를 디버그할 때 일부 새 창이 나타날 수 있습니다. 이러한 창은 디버깅 환경을 지원할 수 있습니다. 자동 창을 살펴보세요. 자동 창에서는 적어도 3개 줄 이전부터 현재 줄까지 사용된 변수의 현재 값을 보여 줍니다.
oper 값은 47 '/'이고, 결과는 5이고, x는 10이고, y는 0입니다.
해당 함수의 모든 변수를 보려면 로컬 창으로 전환합니다. 디버깅하는 동안 이러한 변수의 값을 수정하여 프로그램에 미치는 영향을 확인할 수 있습니다. 이 경우, 우리는 그들을 혼자 둡니다.
oper 값은 47 '/'이고, 결과는 0이고, x는 10이고, y는 0입니다.
코드 자체의 변수를 마우스로 가리키면 실행이 현재 일시 중지된 현재 값을 확인할 수도 있습니다. 먼저 클릭하여 편집기 창에 포커스가 맞춰졌는지 확인합니다.
디버깅 계속
왼쪽의 노란색 화살표는 현재 실행 지점을 표시합니다. 현재 줄이 호출
Calculate
되므로 F11 키를 눌러 함수의 본문Calculate
으로 이동합니다. Step Into는 표준 라이브러리 함수를 포함하여 현재 실행 중인 줄의 모든 함수로 단계별로 실행되므로 주의해야 합니다. 표준 라이브러리를 한 단계씩 실행해도 괜찮지만 라이브러리 코드 대신 코드에 집중하는 데 더 관심이 있을 수 있습니다.이제 실행 지점이
Calculate
함수의 시작 부분에 있으므로 F10 키를 눌러 프로그램을 실행하는 중에 다음 줄로 이동합니다. F10 키는 프로시저 단위 실행이라고도 합니다. 프로시저 단위 실행을 사용하여 줄의 각 파트에서 발생한 내용의 세부 정보를 살펴보지 않고 줄을 이동할 수 있습니다. (Calculate
의 본문에 도달하기 위해 수행한 대로) 다른 곳에서 호출되는 코드에 대해 더 심층적으로 알아보지 않으려면 일반적으로 한 단계씩 코드 실행 대신 프로시저 단위 실행을 사용해야 합니다.다른 파일에서
main()
함수로 다시 이동할 때까지 계속 F10 키를 사용하여 각 줄을 프로시저 단위 실행하고,cout
줄에서 중지합니다.Calculate 함수의 각 코드 줄은 컨트롤이 기본 함수로 반환될 때까지 단계별로 진행됩니다. 그런 다음, 사용자는 명명된 결과 변수를 마우스로 가리켜 값을 확인합니다. 즉, inf입니다."
프로그램은 예상되는 작업을 수행합니다. 첫 번째 숫자를 사용하고 두 번째 숫자로 나눕니다.
cout
줄에서result
변수를 마우스로 가리키거나 자동 창에서result
를 살펴봅니다. 값은inf
제대로 표시되지 않으므로 수정해 보겠습니다.cout
줄은result
에 저장된 모든 값을 출력하므로 F10 키를 사용하여 추가로 한 줄을 실행하면 콘솔 창에서는 다음을 표시합니다.앱 출력: 수행할 작업을 입력하세요. 형식: a+b | a-b | a*b | a/b. 사용자가 5-0을 입력했습니다. 앱 출력: 결과는 5입니다. 사용자가 10/0을 입력했습니다. 앱 출력: 결과는 다음과 같습니다.
이 결과는 0으로 나누기는 정의되지 않았기 때문에 프로그램에 요청된 작업에 대한 숫자 답변이 없기 때문입니다.
"0으로 나누기" 오류 해결
사용자가 문제를 더 쉽게 이해할 수 있도록 나누기를 0으로 더 우아하게 처리해 보겠습니다.
CalculatorTutorial.cpp
에서 다음과 같이 변경합니다. (라는 디버거 기능 덕분에 편집할 때 프로그램을 실행 상태로 둘 수 있습니다.편집하고 계속합니다). 변경 내용은 다음cin >> x >> oper >> y;
문을 추가하여if
0으로 나누기 검사 메시지가 발생하면 사용자에게 출력합니다. 그렇지 않으면 결과가 인쇄됩니다.// 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; }
F5 키를 한 번 누릅니다. 사용자 입력에 대한 요청을 일시 중지해야 할 때까지 계속 프로그램을 실행합니다.
10 / 0
을 다시 입력하세요. 이제 더 유용한 메시지가 출력됩니다. 사용자에게는 추가 입력 메시지가 표시되고, 프로그램은 계속 정상적으로 실행됩니다.참고 항목
디버깅 모드에서 코드를 편집하면 코드가 부실해질 위험이 있습니다. 이 문제는 디버거가 계속 이전 코드를 실행하고 변경 내용을 사용하여 업데이트하지 않는 경우에 발생합니다. 디버거는 문제가 발생했음을 알려주는 대화 상자를 표시합니다. 경우에 따라 F5 키를 눌러 실행 중인 코드를 새로 고쳐야 합니다. 특히 실행 지점이 해당 함수 내에 있는 동안 함수 내에서 변경한 경우 함수에서 나가서 다시 함수로 돌아가서 업데이트된 코드를 가져옵니다. 이 방법이 어떤 이유로 작동하지 않고 오류 메시지가 표시되는 경우 IDE의 맨 위에 있는 메뉴 아래의 도구 모음에서 빨간색 사각형을 클릭하여 디버깅을 중지한 다음, F5 키를 다시 입력하거나 도구 모음에서 중지 단추 옆에 있는 녹색 "재생" 화살표를 선택하여 디버깅을 시작할 수 있습니다.
편집 및 계속이 실패할 수 있는 또 다른 이유는 기본 메뉴로 이동하여 도구>옵션>디버깅 일반을>선택하고 원본 파일이 원본 버전과 정확히 일치하도록 요구가 검사 있는지 확인해야 하기 때문입니다.
실행 및 디버그 바로 가기 이해
- F5 키(또는 디버그>디버깅 시작)는 디버깅 세션이 활성 상태가 아닌 경우 디버깅 세션을 시작하고, 중단점에 도달하거나 프로그램에 사용자 입력이 필요할 때까지 프로그램을 실행합니다. 사용자 입력이 필요하지 않고 중단점에 도달할 수 없는 경우 프로그램 실행이 완료되면 프로그램이 종료되고 콘솔 창이 닫힙니다. 실행할 "헬로 월드" 프로그램이 있는 경우 Ctrl+F5를 사용하거나 F5 키를 눌러 창을 열어 두기 전에 중단점을 설정합니다.
- Ctrl+F5 키(또는 디버그>디버깅하지 않고 시작)는 디버그 모드로 전환하지 않고 애플리케이션을 실행합니다. 이 방법이 디버깅보다 약간 빠릅니다. 또한 프로그램 실행이 완료되면 콘솔 창을 열어 둡니다.
- F10 키(프로시저 단위 실행이라고도 함)를 통해 코드를 한 줄씩 반복하고, 코드를 실행하는 방법 및 실행의 각 단계에서 변수 값을 시각화할 수 있습니다.
- F11 키(한 단계씩 코드 실행이라고도 함)는 실행 줄에서 호출되는 함수를 한 단계씩 코드 실행한다는 점을 제외하고 프로시저 단위 실행과 유사하게 작동합니다. 예를 들어 실행되는 줄이 함수를 호출하는 경우 F11 키를 누르면 함수의 본문에 포인터를 이동시킵니다. 따라서 시작한 줄로 이동하기 전에 실행되는 함수의 코드를 수행할 수 있습니다. F10 키를 누르면 함수 호출을 프로시저 단위로 실행하고 다음 줄로 이동합니다. 여전히 함수 호출이 실행되지만 프로그램은 표시되는 내용을 일시 중지하지 않습니다.
앱 닫기
- 계속 실행 중이면 계산기 앱의 콘솔 창을 닫습니다.
지금까지 계산기 앱에 대한 코드를 완료하고 Visual Studio에서 빌드 및 디버그했습니다.