연습 - 식 평가
- 11분
의사 결정 논리는 코드를 통해 대체 경로를 설정하는 데 사용되며 따라야 할 경로에 대한 결정은 식의 평가를 기반으로 합니다. 예를 들어 사용자의 입력에 따라 두 경로 중 하나를 실행하는 일부 코드를 작성할 수 있습니다. 사용자가 문자 “a”를 입력하면 코드에서 하나의 코드 블록을 실행합니다. 사용자가 문자 “b”를 입력하면 코드에서 다른 코드 블록을 실행합니다. 이 예제에서는 문자열에 할당된 값에 따라 실행 경로를 제어합니다. 코드는 식, 그 식이 계산되는 방법과 경로를 정의하는 데 사용되는 기본 논리에 따라 실행 경로를 선택합니다.
식을 생성하고 평가하는 방법을 살펴보는 것부터 시작하는 것이 좋습니다.
식이란 무엇인가요?
식은 값(리터럴 또는 변수), 연산자 및 단일 값을 반환하는 메서드의 조합입니다. 문은 C#의 완전 명령어이며 문은 하나 이상의 식으로 구성됩니다. 예를 들어 다음 if 문에는 단일 값을 반환하는 단일 식이 포함되어 있습니다.
if (myName == "Luiz")
식에서 반환되는 값이 숫자 또는 문자열일 수도 있다고 생각했을 수 있습니다. 애플리케이션 개발자는 다양한 용도로 서로 다른 형식의 식을 사용하는 것이 사실입니다. 이 경우 if 선택 문을 개발할 때 true 또는 false를 반환하는 식을 사용합니다. 개발자는 이 형식의 식을 부울 식이라고 합니다. 코드에 부울 식이 포함된 경우 반환 값은 항상 단일 true 또는 false 값입니다.
부울 식은 코드에서 이러한 식을 사용하여 실행할 코드 블록을 결정할 수 있기 때문에 중요합니다.
부울 식 내에서 사용할 수 있는 다양한 형식의 연산자가 있습니다. 예를 들어 위의 문은 if 같음 연산 == 자를 사용하여 문자열 변수가 특정 값에 할당되었는지 여부를 확인합니다. 선택한 연산자는 사용 가능한 코드 경로, 경로와 연결된 조건, 기본 애플리케이션 논리에 따라 달라집니다.
같음 및 같지 않음 평가
가장 일반적인 코드 평가 중 하나는 두 값이 같은지 확인하는 것입니다. 같음을 검사할 때 검사 중인 두 값 사이에 있는 같음 연산자 ==을 찾습니다. 같음 연산자의 양쪽에 있는 값이 같으면 식에서 true가 반환됩니다. 그렇지 않으면 false가 반환됩니다.
반대로 두 값이 같지 않은지 확인해야 할 수도 있습니다. 같지 않음을 검사하려면 두 값 사이에 같지 않음 연산자 !=을 사용합니다.
같음 연산자와 같지 않음 연산자가 모두 필요한 이유가 궁금할 수 있습니다. 그 이유는 분기 문을 만들고 실제 코드를 작성하기 시작하는 방법을 배우면서 명확하게 알 수 있습니다. 반대 작업을 수행하는 두 연산자를 사용하면 보다 효과적으로 표현하고 압축할 수 있습니다.
이제 코딩 환경을 준비하고 부울 식을 평가하는 코드 작성을 시작할 차례입니다.
코딩 환경 준비
이 모듈에는 데모 코드를 빌드하고 실행하는 프로세스를 안내하는 실습 활동이 포함되어 있습니다. Visual Studio Code를 개발 환경으로 사용하여 이러한 활동을 완료하는 것이 좋습니다. 이러한 활동에 Visual Studio Code를 사용하면 전 세계 전문가가 사용하는 개발자 환경에서 코드를 더 편안하게 작성하고 실행하는 데 도움이 됩니다.
Visual Studio Code를 엽니다.
Windows 시작 메뉴(또는 다른 OS의 해당 리소스)를 사용하여 Visual Studio Code를 열 수 있습니다.
Visual Studio Code의 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 Windows 바탕 화면 폴더로 이동합니다.
코드 프로젝트를 유지하는 다른 폴더 위치가 있는 경우 해당 폴더 위치를 대신 사용할 수 있습니다. 이 학습에서는 쉽게 기억하고 찾을 수 있는 위치를 사용하는 것이 중요합니다.
폴더 열기 대화 상자에서 폴더 선택을 선택합니다.
작성자를 신뢰하는지 묻는 보안 대화 상자가 표시되면 예를 선택합니다.
Visual Studio Code 터미널 메뉴에서 새 터미널을 선택합니다.
터미널 패널의 명령 프롬프트에 현재 폴더의 폴더 경로가 표시됩니다. 예를 들면 다음과 같습니다.
C:\Users\someuser\Desktop>참고
샌드박스 또는 호스트된 환경이 아닌 자체 PC에서 작업하고 이 C# 시리즈에서 다른 Microsoft Learn 모듈을 완료한 경우 이미 코드 샘플용 프로젝트 폴더를 만들었을 수 있습니다. 이 경우 TestProject 폴더에 콘솔 앱을 만드는 데 사용되는 다음 단계를 건너뛸 수 있습니다.
터미널 명령 프롬프트에서 지정된 폴더에 새 콘솔 애플리케이션을 만들려면 다음 프롬프트를 입력합니다.
dotnet new console -o ./CsharpProjects/TestProject이 .NET CLI 명령은 .NET 프로그램 템플릿을 사용하여 지정된 폴더 위치에 새 C# 콘솔 애플리케이션 프로젝트를 만듭니다. 이 명령은 CsharpProjects 및 TestProject 폴더를 만들고
.csproj파일의 이름으로 TestProject를 사용합니다.파일이 이미 있다는 메시지가 표시되면 다음 단계를 계속 진행합니다. 기존 프로젝트 파일을 다시 사용합니다.
탐색기 보기에서 CsharpProjects 폴더를 확장합니다 .
TestProject 폴더와 두 개의 파일, 즉 Program.cs C# 프로그램 파일과 TestProject.csproj라는 C# 프로젝트 파일이 표시됩니다.
Visual Studio Code의 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 CsharpProjects 폴더를 선택한 다음 폴더 선택을 선택합니다.
탐색기 보기에서 TestProject 폴더를 확장한 다음 , Program.cs 선택합니다.
기존 코드 줄을 삭제합니다.
이 모듈 중에 이 C# 콘솔 프로젝트를 사용하여 코드 샘플을 만들고, 빌드하고, 실행합니다.
터미널 패널을 닫습니다.
같음 연산자 사용
Visual Studio Code가 열려 있고 편집기 패널에 Program.cs가 표시되는지 확인합니다.
참고
Program.cs는 비어 있어야 합니다. 그렇지 않은 경우 모든 코드 줄을 선택하고 삭제합니다.
Visual Studio Code 편집기에 다음 코드를 입력합니다.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
코드를 빌드하거나 실행하기 전에 Program.cs 파일을 저장해야 합니다.
탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 패널이 열립니다. 터미널에는 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트가 포함되어야 합니다.
터미널 명령 프롬프트에서 코드를 실행하려면 dotnet run을 입력한 다음, Enter 키를 누릅니다.
참고
“실행할 프로젝트를 찾을 수 없습니다.”라는 메시지가 표시되면 터미널 명령 프롬프트에 예상 TestProject 폴더 위치가 표시되는지 확인합니다. 예:
C:\Users\someuser\Desktop\csharpprojects\TestProject>다음 출력이 표시되어야 합니다.
True False False True
문자열의 기본 제공 도우미 메서드를 사용하여 문자열 같음 여부 검사 개선
Console.WriteLine("a" == "A"); 줄이 false를 출력한다는 사실에 놀랄 수도 있습니다. 문자열을 비교할 때는 대/소문자 구분이 중요합니다.
또한 다음 코드 줄도 고려해야 합니다.
Console.WriteLine("a" == "a ");
여기서 문자열 끝에 공백 문자를 추가했습니다. 또한 이 식은 false를 출력합니다.
경우에 따라 텍스트 앞이나 뒤에 공백 문자를 사용하는 것이 완전히 허용될 수 있습니다. 그러나 부정확한 일치 항목을 적용해야 하는 경우 먼저 데이터를 “조작”할 수 있습니다. 데이터 “조작”이란 같음 비교를 수행하기 전에 약간의 정리 작업을 수행한다는 것을 의미합니다.
예를 들어 루프 내에서 사용자 입력을 수집하는 경우를 생각해 보세요. 각 값을 입력한 후 사용자에게 Do you want to continue (Y/N)?와 같이 계속할지 여부를 확인하는 프롬프트를 제공할 수 있습니다. 사용자가 계속하려면 y 또는 Y를 입력할 수 있습니다.
y가 Y와 동일하지 않더라도 코드에서 두 값을 동일하게 해석하도록 할 수 있습니다.
특히 사용자가 하나 또는 두 값을 입력한 경우 두 문자열 값을 같음으로 검사하기 전에 다음을 수행해야 합니다.
- 모든 문자열 값에서
ToUpper()또는ToLower()도우미 메서드를 사용하여 두 문자열이 모두 대문자나 소문자인지 확인합니다. - 모든 문자열 값에서
Trim()도우미 메서드를 사용하여 모든 선행 또는 후행 공백을 제거합니다.
다음 코드 목록에 표시된 대로 이러한 두 도우미 메서드를 두 값에 연결하여 이전 같음 검사를 향상시킬 수 있습니다.
Visual Studio Code 편집기의 코드를 다음 코드로 바꿉니다.
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
이번에 코드를 실행하면 True가 출력됩니다.
같지 않음 연산자 사용
줄 주석 연산자
//를 사용하여 이전 단계의 모든 코드를 주석 처리합니다.Visual Studio Code 편집기에 다음 코드를 입력합니다.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
다음 출력이 표시되어야 합니다.
False True True False
예상대로 같지 않음 연산자를 사용할 때의 결과는 같음 연산자를 사용할 때의 결과와 반대입니다. 즉, 코드가 반대 방식으로 분기된다는 것을 의미하며 이는 정확히 사용자가 원하는 것일 수 있습니다.
비교 평가
숫자 데이터 형식으로 작업할 때 값이 다른 값보다 크거나 작은지 확인할 수 있습니다. 이러한 유형의 비교를 수행하려면 다음 연산자를 사용합니다.
- 보다 큼
> - 보다 작음
< - 보다 크거나 같음
>= - 보다 작거나 같음
<=
당연히 위의 문자열 값을 비교하는 데 사용한 == 및 != 연산자는 숫자 데이터 형식을 비교할 때도 작동합니다.
비교 연산자 사용
줄 주석 연산자
//를 사용하여 이전 작업의 모든 코드를 주석 처리합니다.Visual Studio Code 편집기에 다음 코드를 입력합니다.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 빌드하고 실행합니다.
다음 출력이 표시됩니다.
False True True True
부울 값을 반환하는 메서드
일부 메서드는 부울 값(true 또는 false)을 반환합니다. 다음 연습에서는 String 클래스에서 기본 제공 메서드를 사용하여 더 큰 문자열에 애플리케이션에 중요한 특정 단어나 구가 포함되어 있는지 여부를 확인합니다.
참고
일부 데이터 형식에는 유용한 유틸리티 작업을 수행하는 메서드가 있습니다.
String 데이터 형식에는 이 중 상당수가 있습니다. 몇몇은 Contains(), StartsWith() 및 EndsWith()를 포함한 부울 값을 반환합니다. 자세한 내용은 Microsoft 학습 모듈 "C#의 문자열 클래스 메서드를 사용하여 영숫자 데이터 조작"에서 확인할 수 있습니다.
부울을 반환하는 메서드 사용
줄 주석 연산자
//를 사용하여 이전 단계의 모든 코드를 주석 처리합니다.Visual Studio Code 편집기에 다음 코드를 입력합니다.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 빌드하고 실행합니다.
다음 출력이 표시되어야 합니다.
True False
논리 부정이란 무엇인가요?
"논리 부정"이라는 용어는 단항 부정 연산자 !을 나타냅니다. 일부 사용자는 이 연산자를 “Not 연산자”라고 합니다. 조건식(또는 ! 또는 true로 평가되는 코드) 앞에 false 연산자를 배치하면 코드가 피연산자 평가를 반대로 바꾸게 됩니다. 논리 부정이 적용되면 평가에서는 피연산자가 true로 평가되면 false을 생성하고, 피연산자가 false로 평가하면 true을 생성합니다.
다음은 이러한 아이디어 간의 연관성을 확인하는 데 도움이 될 수 있는 예입니다. 다음 두 줄의 코드는 동일한 결과를 생성합니다. 두 번째 줄은 더 간결합니다.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
논리 부정 연산자 사용
줄 주석 연산자
//를 사용하여 이전 단계의 모든 코드를 주석 처리합니다.Visual Studio Code 편집기에 다음 코드를 입력합니다.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 빌드하고 실행합니다.
다음 출력이 표시되어야 합니다.
False True
같지 않음 연산자 및 논리 부정
같지 않음 연산자 !=에는 ! 문자가 포함되어 있지만 논리적 부정과 혼동해서는 안 됩니다. 같지 않음 연산자는 피연산자가 같지 않으면 true를 반환하고, 피연산자가 같으면 false를 반환합니다. 기본 제공 형식의 피연산자의 경우 x != y 식은 !(x == y) 식(논리적 부정의 예)과 동일한 결과를 생성합니다.
다음 코드 샘플은 != 연산자의 사용을 보여 줍니다.
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
요약
지금까지 부울 식을 평가하는 방법에 대해 배운 주요 내용은 다음과 같습니다.
-
true또는false를 평가하는 식에는 다양한 종류가 있습니다. -
==연산자를 사용하여 같음 여부를 평가합니다. - 문자열의 같음 여부를 평가하려면 문자열의 대/소문자와 선행 또는 후행 공백이 다를 가능성을 고려해야 합니다. 사용자의 상황에 따라
ToLower()또는ToUpper()도우미 메서드를 사용하고Trim()도우미 메서드를 사용하여 두 문자열이 동일한 확률을 향상시킵니다. -
!=연산자를 사용하여 같지 않음 여부를 평가합니다. -
>,<,>=,<=과 같은 비교 연산자를 사용하여 보다 큼, 보다 작음 및 유사한 작업을 평가합니다. - 메서드가 부울을 반환하는 경우 부울 식으로 사용할 수 있습니다.
-
!논리 부정 연산자를 사용하여 지정된 식의 반대경우를 평가합니다.